@strapi/admin 5.12.4 → 5.12.6
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/admin/admin/src/StrapiApp.js +2 -0
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +2 -0
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/Providers.js +1 -0
- package/dist/admin/admin/src/components/Providers.js.map +1 -1
- package/dist/admin/admin/src/components/Providers.mjs +1 -0
- package/dist/admin/admin/src/components/Providers.mjs.map +1 -1
- package/dist/admin/admin/src/{pages/Home/components/Widget.js → components/WidgetHelpers.js} +26 -69
- package/dist/admin/admin/src/components/WidgetHelpers.js.map +1 -0
- package/dist/admin/admin/src/{pages/Home/components/Widget.mjs → components/WidgetHelpers.mjs} +30 -54
- package/dist/admin/admin/src/components/WidgetHelpers.mjs.map +1 -0
- package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
- package/dist/admin/admin/src/core/apis/CustomFields.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/Widgets.js +34 -0
- package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -0
- package/dist/admin/admin/src/core/apis/Widgets.mjs +32 -0
- package/dist/admin/admin/src/core/apis/Widgets.mjs.map +1 -0
- package/dist/admin/admin/src/features/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/features/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.js +163 -3
- package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/HomePage.mjs +145 -5
- package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.js +10 -30
- package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.js.map +1 -1
- package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.mjs +5 -25
- package/dist/admin/admin/src/pages/Home/components/ContentManagerWidgets.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs +3 -1
- package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.mjs.map +1 -1
- package/dist/admin/admin/src/services/homepage.js +3 -2
- package/dist/admin/admin/src/services/homepage.js.map +1 -1
- package/dist/admin/admin/src/services/homepage.mjs +3 -2
- package/dist/admin/admin/src/services/homepage.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +1 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +1 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/tests/utils.js +5 -0
- package/dist/admin/admin/tests/utils.js.map +1 -1
- package/dist/admin/admin/tests/utils.mjs +5 -0
- package/dist/admin/admin/tests/utils.mjs.map +1 -1
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/StrapiApp.d.ts +2 -0
- package/dist/admin/src/{pages/Home/components/Widget.d.ts → components/WidgetHelpers.d.ts} +4 -8
- package/dist/admin/src/core/apis/Widgets.d.ts +29 -0
- package/dist/admin/src/features/StrapiApp.d.ts +1 -1
- package/dist/admin/src/index.d.ts +1 -0
- package/dist/admin/src/pages/Home/HomePage.d.ts +8 -0
- package/dist/server/server/src/services/homepage.js +3 -1
- package/dist/server/server/src/services/homepage.js.map +1 -1
- package/dist/server/server/src/services/homepage.mjs +3 -1
- package/dist/server/server/src/services/homepage.mjs.map +1 -1
- package/dist/server/src/services/homepage.d.ts +3 -0
- package/dist/server/src/services/homepage.d.ts.map +1 -1
- package/package.json +9 -9
- package/dist/admin/admin/src/pages/Home/components/Widget.js.map +0 -1
- package/dist/admin/admin/src/pages/Home/components/Widget.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadersInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"string\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n handleChange(value);\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n"],"names":["AddHeaderButton","styled","TextButton","HeadersInput","formatMessage","useIntl","addFieldRow","useForm","state","removeFieldRow","setFieldValue","onChange","value","useField","removeRow","index","length","key","_jsxs","Flex","direction","alignItems","gap","_jsx","DSField","Label","id","defaultMessage","Box","padding","background","hasRadius","map","val","Grid","Root","Item","col","HeaderCombobox","name","aria-label","label","style","flex","StringInput","type","IconButton","width","height","onClick","color","number","Minus","JSON","stringify","paddingTop","startIcon","Plus","restProps","options","setOptions","React","useState","HTTP_HEADERS","headers","field","useEffect","headerOptions","filter","some","header","handleChange","handleCreateOption","prev","error","Combobox","onClear","onCreateOption","placeholder","creatable","ComboboxOption","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeadersInput.js","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"string\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value?: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n if (value) {\n handleChange(value);\n }\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n"],"names":["AddHeaderButton","styled","TextButton","HeadersInput","formatMessage","useIntl","addFieldRow","useForm","state","removeFieldRow","setFieldValue","onChange","value","useField","removeRow","index","length","key","_jsxs","Flex","direction","alignItems","gap","_jsx","DSField","Label","id","defaultMessage","Box","padding","background","hasRadius","map","val","Grid","Root","Item","col","HeaderCombobox","name","aria-label","label","style","flex","StringInput","type","IconButton","width","height","onClick","color","number","Minus","JSON","stringify","paddingTop","startIcon","Plus","restProps","options","setOptions","React","useState","HTTP_HEADERS","headers","field","useEffect","headerOptions","filter","some","header","handleChange","handleCreateOption","prev","error","Combobox","onClear","onCreateOption","placeholder","creatable","ComboboxOption","Error"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,MAAMA,eAAAA,GAAkBC,uBAAOC,CAAAA,uBAAAA,CAAW;;AAE1C,CAAC;AAWD,MAAMC,YAAe,GAAA,IAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMC,cAAcC,YAAQ,CAAA,cAAA,EAAgB,CAACC,KAAAA,GAAUA,MAAMF,WAAW,CAAA;AACxE,IAAA,MAAMG,iBAAiBF,YAAQ,CAAA,cAAA,EAAgB,CAACC,KAAAA,GAAUA,MAAMC,cAAc,CAAA;AAC9E,IAAA,MAAMC,gBAAgBH,YAAQ,CAAA,cAAA,EAAgB,CAACC,KAAAA,GAAUA,MAAMG,QAAQ,CAAA;AACvE,IAAA,MAAM,EAAEC,KAAAA,GAAQ,EAAE,EAAE,GAAGC,aAAmB,CAAA,SAAA,CAAA;AAE1C,IAAA,MAAMC,YAAY,CAACC,KAAAA,GAAAA;;QAEjB,IAAIH,KAAAA,CAAMI,MAAM,KAAK,CAAG,EAAA;AACtBN,YAAAA,aAAAA,CAAc,SAAW,EAAA;AAAC,gBAAA;oBAAEO,GAAK,EAAA,EAAA;oBAAIL,KAAO,EAAA;AAAG;AAAE,aAAA,CAAA;SAC5C,MAAA;AACLH,YAAAA,cAAAA,CAAe,SAAWM,EAAAA,KAAAA,CAAAA;AAC5B;AACF,KAAA;AAEA,IAAA,qBACEG,eAACC,CAAAA,iBAAAA,EAAAA;QAAKC,SAAU,EAAA,QAAA;QAASC,UAAW,EAAA,SAAA;QAAUC,GAAK,EAAA,CAAA;;AACjD,0BAAAC,cAAA,CAACC,mBAAQC,KAAK,EAAA;0BACXrB,aAAc,CAAA;oBACbsB,EAAI,EAAA,gCAAA;oBACJC,cAAgB,EAAA;AAClB,iBAAA;;0BAEFT,eAACU,CAAAA,gBAAAA,EAAAA;gBAAIC,OAAS,EAAA,CAAA;gBAAGC,UAAW,EAAA,YAAA;gBAAaC,SAAS,EAAA,IAAA;;oBAC/CnB,KAAMoB,CAAAA,GAAG,CAAC,CAACC,GAAKlB,EAAAA,KAAAA,GAAAA;wBACf,qBACEG,eAAA,CAACgB,kBAAKC,IAAI,EAAA;4BAA6Cb,GAAK,EAAA,CAAA;4BAAGO,OAAS,EAAA,CAAA;;AACtE,8CAAAN,cAAA,CAACW,kBAAKE,IAAI,EAAA;oCAACC,GAAK,EAAA,CAAA;oCAAGjB,SAAU,EAAA,QAAA;oCAASC,UAAW,EAAA,SAAA;AAC/C,oCAAA,QAAA,gBAAAE,cAACe,CAAAA,cAAAA,EAAAA;AACCC,wCAAAA,IAAAA,EAAM,CAAC,QAAQ,EAAExB,KAAAA,CAAM,IAAI,CAAC;AAC5ByB,wCAAAA,YAAAA,EAAY,CAAC,IAAI,EAAEzB,KAAQ,GAAA,CAAA,CAAE,IAAI,CAAC;AAClC0B,wCAAAA,KAAAA,EAAOrC,aAAc,CAAA;4CACnBsB,EAAI,EAAA,uBAAA;4CACJC,cAAgB,EAAA;AAClB,yCAAA;;;AAGJ,8CAAAJ,cAAA,CAACW,kBAAKE,IAAI,EAAA;oCAACC,GAAK,EAAA,CAAA;oCAAGjB,SAAU,EAAA,QAAA;oCAASC,UAAW,EAAA,SAAA;AAC/C,oCAAA,QAAA,gBAAAH,eAACC,CAAAA,iBAAAA,EAAAA;wCAAKE,UAAW,EAAA,UAAA;wCAAWC,GAAK,EAAA,CAAA;;0DAC/BC,cAACK,CAAAA,gBAAAA,EAAAA;gDAAIc,KAAO,EAAA;oDAAEC,IAAM,EAAA;AAAE,iDAAA;AACpB,gDAAA,QAAA,gBAAApB,cAACqB,CAAAA,kBAAAA,EAAAA;AACCL,oDAAAA,IAAAA,EAAM,CAAC,QAAQ,EAAExB,KAAAA,CAAM,MAAM,CAAC;AAC9ByB,oDAAAA,YAAAA,EAAY,CAAC,IAAI,EAAEzB,KAAQ,GAAA,CAAA,CAAE,MAAM,CAAC;AACpC0B,oDAAAA,KAAAA,EAAOrC,aAAc,CAAA;wDACnBsB,EAAI,EAAA,yBAAA;wDACJC,cAAgB,EAAA;AAClB,qDAAA,CAAA;oDACAkB,IAAK,EAAA;;;0DAGTtB,cAACuB,CAAAA,uBAAAA,EAAAA;gDACCC,KAAM,EAAA,MAAA;gDACNC,MAAO,EAAA,MAAA;AACPC,gDAAAA,OAAAA,EAAS,IAAMnC,SAAUC,CAAAA,KAAAA,CAAAA;gDACzBmC,KAAM,EAAA,YAAA;AACNT,gDAAAA,KAAAA,EAAOrC,aACL,CAAA;oDACEsB,EAAI,EAAA,kCAAA;oDACJC,cAAgB,EAAA;iDAElB,EAAA;AAAEwB,oDAAAA,MAAAA,EAAQpC,KAAQ,GAAA;AAAE,iDAAA,CAAA;gDAEtB8B,IAAK,EAAA,QAAA;AAEL,gDAAA,QAAA,gBAAAtB,cAAC6B,CAAAA,WAAAA,EAAAA;oDAAML,KAAM,EAAA;;;;;;;2BAtCL,CAAC,EAAEhC,KAAM,CAAA,CAAC,EAAEsC,IAAAA,CAAKC,SAAS,CAACrB,GAAAA,CAAIhB,GAAG,CAAA,CAAE,CAAC,CAAA;AA4CzD,qBAAA,CAAA;kCACAM,cAACK,CAAAA,gBAAAA,EAAAA;wBAAI2B,UAAY,EAAA,CAAA;AACf,wBAAA,QAAA,gBAAAhC,cAACvB,CAAAA,eAAAA,EAAAA;4BACC6C,IAAK,EAAA,QAAA;4BACLI,OAAS,EAAA,IAAA;AACP3C,gCAAAA,WAAAA,CAAY,SAAW,EAAA;oCAAEW,GAAK,EAAA,EAAA;oCAAIL,KAAO,EAAA;AAAG,iCAAA,CAAA;AAC9C,6BAAA;AACA4C,4BAAAA,SAAAA,gBAAWjC,cAACkC,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;sCAEXrD,aAAc,CAAA;gCACbsB,EAAI,EAAA,iCAAA;gCACJC,cAAgB,EAAA;AAClB,6BAAA;;;;;;;AAMZ;AAWA,MAAMW,cAAAA,GAAiB,CAAC,EAAEC,IAAI,EAAEE,KAAK,EAAE,GAAGiB,SAAgC,EAAA,GAAA;AACxE,IAAA,MAAM,CAACC,OAASC,EAAAA,UAAAA,CAAW,GAAGC,gBAAAA,CAAMC,QAAQ,CAAgB;AAAIC,QAAAA,GAAAA;AAAa,KAAA,CAAA;AAC7E,IAAA,MAAM,EAAEnD,KAAAA,EAAOoD,OAAO,EAAE,GAAGnD,aAAmB,CAAA,SAAA,CAAA;AAC9C,IAAA,MAAMoD,QAAQpD,aAAS0B,CAAAA,IAAAA,CAAAA;AAEvBsB,IAAAA,gBAAAA,CAAMK,SAAS,CAAC,IAAA;AACd,QAAA,MAAMC,gBAAgBJ,YAAaK,CAAAA,MAAM,CACvC,CAACnD,GAAAA,GAAQ,CAAC+C,OAASK,EAAAA,IAAAA,CAAK,CAACC,MAAWA,GAAAA,MAAAA,CAAOrD,GAAG,KAAKgD,KAAAA,CAAMrD,KAAK,IAAI0D,MAAAA,CAAOrD,GAAG,KAAKA,GAAAA,CAAAA,CAAAA;QAGnF2C,UAAWO,CAAAA,aAAAA,CAAAA;KACV,EAAA;AAACH,QAAAA,OAAAA;AAASC,QAAAA,KAAAA,CAAMrD;AAAM,KAAA,CAAA;AAEzB,IAAA,MAAM2D,eAA0C,CAAC3D,KAAAA,GAAAA;QAC/CqD,KAAMtD,CAAAA,QAAQ,CAAC4B,IAAM3B,EAAAA,KAAAA,CAAAA;AACvB,KAAA;AAEA,IAAA,MAAM4D,qBAAqB,CAAC5D,KAAAA,GAAAA;AAC1BgD,QAAAA,UAAAA,CAAW,CAACa,IAAS,GAAA;AAAIA,gBAAAA,GAAAA,IAAAA;AAAM7D,gBAAAA;AAAqB,aAAA,CAAA;AAEpD,QAAA,IAAIA,KAAO,EAAA;YACT2D,YAAa3D,CAAAA,KAAAA,CAAAA;AACf;AACF,KAAA;IAEA,qBACEM,eAAA,CAACM,mBAAQW,IAAI,EAAA;QAACI,IAAMA,EAAAA,IAAAA;AAAMmC,QAAAA,KAAAA,EAAOT,MAAMS,KAAK;;AAC1C,0BAAAnD,cAAA,CAACC,mBAAQC,KAAK,EAAA;AAAEgB,gBAAAA,QAAAA,EAAAA;;0BAChBlB,cAACoD,CAAAA,qBAAAA,EAAAA;AACE,gBAAA,GAAGjB,SAAS;AACbkB,gBAAAA,OAAAA,EAAS,IAAML,YAAa,CAAA,EAAA,CAAA;gBAC5B5D,QAAU4D,EAAAA,YAAAA;gBACVM,cAAgBL,EAAAA,kBAAAA;gBAChBM,WAAY,EAAA,EAAA;gBACZC,SAAS,EAAA,IAAA;AACTnE,gBAAAA,KAAAA,EAAOqD,MAAMrD,KAAK;AAEjB+C,gBAAAA,QAAAA,EAAAA,OAAAA,CAAQ3B,GAAG,CAAC,CAACf,GAAAA,iBACZM,cAACyD,CAAAA,2BAAAA,EAAAA;wBAAepE,KAAOK,EAAAA,GAAAA;AACpBA,wBAAAA,QAAAA,EAAAA;AAD8BA,qBAAAA,EAAAA,GAAAA,CAAAA;;AAKrC,0BAAAM,cAAA,CAACC,mBAAQyD,KAAK,EAAA,EAAA;;;AAGpB,CAAA;AAEA,MAAMlB,YAAe,GAAA;AACnB,IAAA,MAAA;AACA,IAAA,QAAA;AACA,IAAA,gBAAA;AACA,IAAA,iBAAA;AACA,IAAA,iBAAA;AACA,IAAA,iBAAA;AACA,IAAA,+BAAA;AACA,IAAA,gCAAA;AACA,IAAA,eAAA;AACA,IAAA,eAAA;AACA,IAAA,YAAA;AACA,IAAA,gBAAA;AACA,IAAA,cAAA;AACA,IAAA,QAAA;AACA,IAAA,MAAA;AACA,IAAA,QAAA;AACA,IAAA,WAAA;AACA,IAAA,MAAA;AACA,IAAA,MAAA;AACA,IAAA,UAAA;AACA,IAAA,mBAAA;AACA,IAAA,eAAA;AACA,IAAA,UAAA;AACA,IAAA,qBAAA;AACA,IAAA,cAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA,qBAAA;AACA,IAAA,OAAA;AACA,IAAA,SAAA;AACA,IAAA,IAAA;AACA,IAAA,YAAA;AACA,IAAA,SAAA;AACA,IAAA,KAAA;AACA,IAAA;AACD,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadersInput.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"string\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n handleChange(value);\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n"],"names":["AddHeaderButton","styled","TextButton","HeadersInput","formatMessage","useIntl","addFieldRow","useForm","state","removeFieldRow","setFieldValue","onChange","value","useField","removeRow","index","length","key","_jsxs","Flex","direction","alignItems","gap","_jsx","DSField","Label","id","defaultMessage","Box","padding","background","hasRadius","map","val","Grid","Root","Item","col","HeaderCombobox","name","aria-label","label","style","flex","StringInput","type","IconButton","width","height","onClick","color","number","Minus","JSON","stringify","paddingTop","startIcon","Plus","restProps","options","setOptions","React","useState","HTTP_HEADERS","headers","field","useEffect","headerOptions","filter","some","header","handleChange","handleCreateOption","prev","error","Combobox","onClear","onCreateOption","placeholder","creatable","ComboboxOption","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeadersInput.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Flex,\n Grid,\n TextButton,\n ComboboxOption,\n Combobox,\n ComboboxProps,\n IconButton,\n Field as DSField,\n} from '@strapi/design-system';\nimport { Minus, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useField, useForm } from '../../../../../components/Form';\nimport { StringInput } from '../../../../../components/FormInputs/String';\n\nconst AddHeaderButton = styled(TextButton)`\n cursor: pointer;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * HeadersInput\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Header {\n key: HTTPHeaders;\n value: string;\n}\n\nconst HeadersInput = () => {\n const { formatMessage } = useIntl();\n\n const addFieldRow = useForm('HeadersInput', (state) => state.addFieldRow);\n const removeFieldRow = useForm('HeadersInput', (state) => state.removeFieldRow);\n const setFieldValue = useForm('HeadersInput', (state) => state.onChange);\n const { value = [] } = useField<Header[]>('headers');\n\n const removeRow = (index: number) => {\n // if we are removing the last row, simply clear it\n if (value.length === 1) {\n setFieldValue('headers', [{ key: '', value: '' }]);\n } else {\n removeFieldRow('headers', index);\n }\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <DSField.Label>\n {formatMessage({\n id: 'Settings.webhooks.form.headers',\n defaultMessage: 'Headers',\n })}\n </DSField.Label>\n <Box padding={8} background=\"neutral100\" hasRadius>\n {value.map((val, index) => {\n return (\n <Grid.Root key={`${index}-${JSON.stringify(val.key)}`} gap={4} padding={2}>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <HeaderCombobox\n name={`headers.${index}.key`}\n aria-label={`row ${index + 1} key`}\n label={formatMessage({\n id: 'Settings.webhooks.key',\n defaultMessage: 'Key',\n })}\n />\n </Grid.Item>\n <Grid.Item col={6} direction=\"column\" alignItems=\"stretch\">\n <Flex alignItems=\"flex-end\" gap={2}>\n <Box style={{ flex: 1 }}>\n <StringInput\n name={`headers.${index}.value`}\n aria-label={`row ${index + 1} value`}\n label={formatMessage({\n id: 'Settings.webhooks.value',\n defaultMessage: 'Value',\n })}\n type=\"string\"\n />\n </Box>\n <IconButton\n width=\"4rem\"\n height=\"4rem\"\n onClick={() => removeRow(index)}\n color=\"primary600\"\n label={formatMessage(\n {\n id: 'Settings.webhooks.headers.remove',\n defaultMessage: 'Remove header row {number}',\n },\n { number: index + 1 }\n )}\n type=\"button\"\n >\n <Minus width=\"0.8rem\" />\n </IconButton>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n );\n })}\n <Box paddingTop={4}>\n <AddHeaderButton\n type=\"button\"\n onClick={() => {\n addFieldRow('headers', { key: '', value: '' });\n }}\n startIcon={<Plus />}\n >\n {formatMessage({\n id: 'Settings.webhooks.create.header',\n defaultMessage: 'Create new header',\n })}\n </AddHeaderButton>\n </Box>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderCombobox\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderComboboxProps extends Omit<ComboboxProps, 'children' | 'name'> {\n name: string;\n label: string;\n}\n\nconst HeaderCombobox = ({ name, label, ...restProps }: HeaderComboboxProps) => {\n const [options, setOptions] = React.useState<HTTPHeaders[]>([...HTTP_HEADERS]);\n const { value: headers } = useField<Header[]>('headers');\n const field = useField(name);\n\n React.useEffect(() => {\n const headerOptions = HTTP_HEADERS.filter(\n (key) => !headers?.some((header) => header.key !== field.value && header.key === key)\n );\n\n setOptions(headerOptions);\n }, [headers, field.value]);\n\n const handleChange: ComboboxProps['onChange'] = (value) => {\n field.onChange(name, value);\n };\n\n const handleCreateOption = (value?: string) => {\n setOptions((prev) => [...prev, value as HTTPHeaders]);\n\n if (value) {\n handleChange(value);\n }\n };\n\n return (\n <DSField.Root name={name} error={field.error}>\n <DSField.Label>{label}</DSField.Label>\n <Combobox\n {...restProps}\n onClear={() => handleChange('')}\n onChange={handleChange}\n onCreateOption={handleCreateOption}\n placeholder=\"\"\n creatable\n value={field.value}\n >\n {options.map((key) => (\n <ComboboxOption value={key} key={key}>\n {key}\n </ComboboxOption>\n ))}\n </Combobox>\n <DSField.Error />\n </DSField.Root>\n );\n};\n\nconst HTTP_HEADERS = [\n 'A-IM',\n 'Accept',\n 'Accept-Charset',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Datetime',\n 'Access-Control-Request-Method',\n 'Access-Control-Request-Headers',\n 'Authorization',\n 'Cache-Control',\n 'Connection',\n 'Content-Length',\n 'Content-Type',\n 'Cookie',\n 'Date',\n 'Expect',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Max-Forwards',\n 'Origin',\n 'Pragma',\n 'Proxy-Authorization',\n 'Range',\n 'Referer',\n 'TE',\n 'User-Agent',\n 'Upgrade',\n 'Via',\n 'Warning',\n] as const;\n\ntype HTTPHeaders = (typeof HTTP_HEADERS)[number];\n\nexport { HeadersInput };\n"],"names":["AddHeaderButton","styled","TextButton","HeadersInput","formatMessage","useIntl","addFieldRow","useForm","state","removeFieldRow","setFieldValue","onChange","value","useField","removeRow","index","length","key","_jsxs","Flex","direction","alignItems","gap","_jsx","DSField","Label","id","defaultMessage","Box","padding","background","hasRadius","map","val","Grid","Root","Item","col","HeaderCombobox","name","aria-label","label","style","flex","StringInput","type","IconButton","width","height","onClick","color","number","Minus","JSON","stringify","paddingTop","startIcon","Plus","restProps","options","setOptions","React","useState","HTTP_HEADERS","headers","field","useEffect","headerOptions","filter","some","header","handleChange","handleCreateOption","prev","error","Combobox","onClear","onCreateOption","placeholder","creatable","ComboboxOption","Error"],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
var api = require('./api.js');
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/**
|
|
6
|
+
* TODO: Remove this service when the future flag for the widget api is removed
|
|
7
|
+
*/ const homepageService = api.adminApi.enhanceEndpoints({
|
|
7
8
|
addTagTypes: [
|
|
8
9
|
'RecentDocumentList'
|
|
9
10
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homepage.js","sources":["../../../../../admin/src/services/homepage.ts"],"sourcesContent":["import * as Homepage from '../../../shared/contracts/homepage';\n\nimport { adminApi } from './api';\n\
|
|
1
|
+
{"version":3,"file":"homepage.js","sources":["../../../../../admin/src/services/homepage.ts"],"sourcesContent":["import * as Homepage from '../../../shared/contracts/homepage';\n\nimport { adminApi } from './api';\n\n/**\n * TODO: Remove this service when the future flag for the widget api is removed\n */\nconst homepageService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['RecentDocumentList'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n getRecentDocuments: builder.query<\n Homepage.GetRecentDocuments.Response['data'],\n Homepage.GetRecentDocuments.Request['query']\n >({\n query: (params) => `/admin/homepage/recent-documents?action=${params.action}`,\n transformResponse: (response: Homepage.GetRecentDocuments.Response) => response.data,\n providesTags: (res, _err, { action }) => [\n { type: 'RecentDocumentList' as const, id: action },\n ],\n }),\n }),\n });\n\nconst { useGetRecentDocumentsQuery } = homepageService;\n\nexport { useGetRecentDocumentsQuery };\n"],"names":["homepageService","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","getRecentDocuments","query","params","action","transformResponse","response","data","providesTags","res","_err","type","id","useGetRecentDocumentsQuery"],"mappings":";;;;AAIA;;AAEC,IACD,MAAMA,eAAAA,GAAkBC,YACrBC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA;AAAqB;AACrC,CAAA,CAAA,CACCC,eAAe,CAAC;IACfC,SAAW,EAAA,CAACC,WAAa;YACvBC,kBAAoBD,EAAAA,OAAAA,CAAQE,KAAK,CAG/B;gBACAA,KAAO,EAAA,CAACC,SAAW,CAAC,wCAAwC,EAAEA,MAAOC,CAAAA,MAAM,CAAC,CAAC;gBAC7EC,iBAAmB,EAAA,CAACC,QAAmDA,GAAAA,QAAAA,CAASC,IAAI;AACpFC,gBAAAA,YAAAA,EAAc,CAACC,GAAKC,EAAAA,IAAAA,EAAM,EAAEN,MAAM,EAAE,GAAK;AACvC,wBAAA;4BAAEO,IAAM,EAAA,oBAAA;4BAA+BC,EAAIR,EAAAA;AAAO;AACnD;AACH,aAAA;SACF;AACF,CAAA,CAAA;AAEI,MAAA,EAAES,0BAA0B,EAAE,GAAGnB;;;;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { adminApi } from './api.mjs';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* TODO: Remove this service when the future flag for the widget api is removed
|
|
5
|
+
*/ const homepageService = adminApi.enhanceEndpoints({
|
|
5
6
|
addTagTypes: [
|
|
6
7
|
'RecentDocumentList'
|
|
7
8
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"homepage.mjs","sources":["../../../../../admin/src/services/homepage.ts"],"sourcesContent":["import * as Homepage from '../../../shared/contracts/homepage';\n\nimport { adminApi } from './api';\n\
|
|
1
|
+
{"version":3,"file":"homepage.mjs","sources":["../../../../../admin/src/services/homepage.ts"],"sourcesContent":["import * as Homepage from '../../../shared/contracts/homepage';\n\nimport { adminApi } from './api';\n\n/**\n * TODO: Remove this service when the future flag for the widget api is removed\n */\nconst homepageService = adminApi\n .enhanceEndpoints({\n addTagTypes: ['RecentDocumentList'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n getRecentDocuments: builder.query<\n Homepage.GetRecentDocuments.Response['data'],\n Homepage.GetRecentDocuments.Request['query']\n >({\n query: (params) => `/admin/homepage/recent-documents?action=${params.action}`,\n transformResponse: (response: Homepage.GetRecentDocuments.Response) => response.data,\n providesTags: (res, _err, { action }) => [\n { type: 'RecentDocumentList' as const, id: action },\n ],\n }),\n }),\n });\n\nconst { useGetRecentDocumentsQuery } = homepageService;\n\nexport { useGetRecentDocumentsQuery };\n"],"names":["homepageService","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","endpoints","builder","getRecentDocuments","query","params","action","transformResponse","response","data","providesTags","res","_err","type","id","useGetRecentDocumentsQuery"],"mappings":";;AAIA;;AAEC,IACD,MAAMA,eAAAA,GAAkBC,QACrBC,CAAAA,gBAAgB,CAAC;IAChBC,WAAa,EAAA;AAAC,QAAA;AAAqB;AACrC,CAAA,CAAA,CACCC,eAAe,CAAC;IACfC,SAAW,EAAA,CAACC,WAAa;YACvBC,kBAAoBD,EAAAA,OAAAA,CAAQE,KAAK,CAG/B;gBACAA,KAAO,EAAA,CAACC,SAAW,CAAC,wCAAwC,EAAEA,MAAOC,CAAAA,MAAM,CAAC,CAAC;gBAC7EC,iBAAmB,EAAA,CAACC,QAAmDA,GAAAA,QAAAA,CAASC,IAAI;AACpFC,gBAAAA,YAAAA,EAAc,CAACC,GAAKC,EAAAA,IAAAA,EAAM,EAAEN,MAAM,EAAE,GAAK;AACvC,wBAAA;4BAAEO,IAAM,EAAA,oBAAA;4BAA+BC,EAAIR,EAAAA;AAAO;AACnD;AACH,aAAA;SACF;AACF,CAAA,CAAA;AAEI,MAAA,EAAES,0BAA0B,EAAE,GAAGnB;;;;"}
|
|
@@ -89,6 +89,7 @@ var en = {
|
|
|
89
89
|
"HomePage.widget.loading": "Loading widget content",
|
|
90
90
|
"HomePage.widget.error": "Couldn't load widget content.",
|
|
91
91
|
"HomePage.widget.no-data": "No content found.",
|
|
92
|
+
"HomePage.widget.no-permissions": "You don’t have the permission to see this widget",
|
|
92
93
|
"Media Library": "Media Library",
|
|
93
94
|
"New entry": "New entry",
|
|
94
95
|
Password: Password,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -85,6 +85,7 @@ var en = {
|
|
|
85
85
|
"HomePage.widget.loading": "Loading widget content",
|
|
86
86
|
"HomePage.widget.error": "Couldn't load widget content.",
|
|
87
87
|
"HomePage.widget.no-data": "No content found.",
|
|
88
|
+
"HomePage.widget.no-permissions": "You don’t have the permission to see this widget",
|
|
88
89
|
"Media Library": "Media Library",
|
|
89
90
|
"New entry": "New entry",
|
|
90
91
|
Password: Password,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -80,6 +80,11 @@ const Providers = ({ children, initialEntries, storeConfig, permissions = [] })=
|
|
|
80
80
|
element: /*#__PURE__*/ jsxRuntime.jsx(StrapiApp.StrapiAppProvider, {
|
|
81
81
|
components: {},
|
|
82
82
|
rbac: new rbac.RBAC(),
|
|
83
|
+
widgets: {
|
|
84
|
+
widgets: {},
|
|
85
|
+
getAll: jest.fn(),
|
|
86
|
+
register: jest.fn()
|
|
87
|
+
},
|
|
83
88
|
customFields: {
|
|
84
89
|
customFields: {},
|
|
85
90
|
get: jest.fn().mockReturnValue({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../admin/tests/utils.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { ConfigureStoreOptions, configureStore } from '@reduxjs/toolkit';\nimport { fixtures } from '@strapi/admin-test-utils';\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport {\n fireEvent,\n renderHook as renderHookRTL,\n render as renderRTL,\n waitFor,\n RenderOptions as RTLRenderOptions,\n RenderResult,\n act,\n screen,\n RenderHookOptions,\n RenderHookResult,\n Queries,\n} from '@testing-library/react';\nimport { userEvent } from '@testing-library/user-event';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { QueryClient, QueryClientProvider, setLogger } from 'react-query';\nimport { Provider } from 'react-redux';\nimport { MemoryRouterProps, RouterProvider, createMemoryRouter } from 'react-router-dom';\n\nimport { GuidedTourProvider } from '../src/components/GuidedTour/Provider';\nimport { LanguageProvider } from '../src/components/LanguageProvider';\nimport { Theme } from '../src/components/Theme';\nimport { RBAC } from '../src/core/apis/rbac';\nimport { AppInfoProvider } from '../src/features/AppInfo';\nimport { AuthProvider, type Permission } from '../src/features/Auth';\nimport { _internalConfigurationContextProvider as ConfigurationContextProvider } from '../src/features/Configuration';\nimport { NotificationsProvider } from '../src/features/Notifications';\nimport { StrapiAppProvider } from '../src/features/StrapiApp';\nimport { reducer as appReducer } from '../src/reducer';\nimport { adminApi } from '../src/services/api';\n\nimport { server } from './server';\nimport { initialState } from './store';\n\nsetLogger({\n log: () => {},\n warn: () => {},\n error: () => {},\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n initialEntries?: MemoryRouterProps['initialEntries'];\n storeConfig?: Partial<ConfigureStoreOptions>;\n permissions?: Permission[] | ((defaultPermissions: Permission[]) => Permission[] | undefined);\n}\n\nconst defaultTestStoreConfig = () => ({\n preloadedState: initialState(),\n reducer: {\n [adminApi.reducerPath]: adminApi.reducer,\n admin_app: appReducer,\n },\n // @ts-expect-error – this fails.\n middleware: (getDefaultMiddleware) => [\n ...getDefaultMiddleware({\n // Disable timing checks for test env\n immutableCheck: false,\n serializableCheck: false,\n }),\n adminApi.middleware,\n ],\n});\n\nconst DEFAULT_PERMISSIONS = [\n ...fixtures.permissions.allPermissions,\n {\n id: 314,\n action: 'admin::users.read',\n subject: null,\n properties: {},\n conditions: [],\n actionParameters: {},\n },\n];\n\nconst Providers = ({ children, initialEntries, storeConfig, permissions = [] }: ProvidersProps) => {\n const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n },\n },\n });\n\n const store = configureStore({\n ...defaultTestStoreConfig(),\n ...storeConfig,\n });\n\n const allPermissions =\n typeof permissions === 'function'\n ? permissions(DEFAULT_PERMISSIONS)\n : [...DEFAULT_PERMISSIONS, ...permissions];\n\n const router = createMemoryRouter(\n [\n {\n path: '/*',\n element: (\n <StrapiAppProvider\n components={{}}\n rbac={new RBAC()}\n customFields={{\n customFields: {},\n get: jest.fn().mockReturnValue({\n name: 'color',\n pluginId: 'mycustomfields',\n type: 'text',\n icon: jest.fn(),\n intlLabel: {\n id: 'mycustomfields.color.label',\n defaultMessage: 'Color',\n },\n intlDescription: {\n id: 'mycustomfields.color.description',\n defaultMessage: 'Select any color',\n },\n components: {\n Input: jest.fn().mockResolvedValue({ default: jest.fn() }),\n },\n }),\n getAll: jest.fn(),\n register: jest.fn(),\n }}\n fields={{}}\n menu={[]}\n getAdminInjectedComponents={jest.fn()}\n getPlugin={jest.fn()}\n plugins={{}}\n runHookParallel={jest.fn()}\n runHookWaterfall={jest.fn().mockImplementation((_name, initialValue) => initialValue)}\n runHookSeries={jest.fn()}\n settings={{}}\n >\n <Provider store={store}>\n <AuthProvider _defaultPermissions={allPermissions} _disableRenewToken={true}>\n <QueryClientProvider client={queryClient}>\n <DndProvider backend={HTML5Backend}>\n <LanguageProvider messages={{}}>\n <Theme\n themes={{\n dark: darkTheme,\n light: lightTheme,\n }}\n >\n <NotificationsProvider>\n <GuidedTourProvider>\n <ConfigurationContextProvider\n showReleaseNotification={false}\n logos={{\n auth: { default: 'default' },\n menu: { default: 'default' },\n }}\n updateProjectSettings={jest.fn()}\n >\n <AppInfoProvider\n autoReload\n useYarn\n dependencies={{\n '@strapi/plugin-documentation': '4.2.0',\n '@strapi/provider-upload-cloudinary': '4.2.0',\n }}\n strapiVersion=\"4.1.0\"\n communityEdition\n shouldUpdateStrapi={false}\n >\n {children}\n </AppInfoProvider>\n </ConfigurationContextProvider>\n </GuidedTourProvider>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </DndProvider>\n </QueryClientProvider>\n </AuthProvider>\n </Provider>\n </StrapiAppProvider>\n ),\n },\n ],\n {\n initialEntries,\n }\n );\n\n // en is the default locale of the admin app.\n return <RouterProvider router={router} />;\n};\n\n// eslint-disable-next-line react/jsx-no-useless-fragment\nconst fallbackWrapper = ({ children }: { children: React.ReactNode }) => <>{children}</>;\n\nexport interface RenderOptions {\n renderOptions?: RTLRenderOptions;\n userEventOptions?: Parameters<typeof userEvent.setup>[0];\n initialEntries?: MemoryRouterProps['initialEntries'];\n providerOptions?: Pick<ProvidersProps, 'storeConfig' | 'permissions'>;\n}\n\n/**\n * @alpha\n * @description A custom render function that wraps the component with the necessary providers,\n * for use of testing components within the Strapi Admin.\n */\nconst render = (\n ui: React.ReactElement,\n { renderOptions, userEventOptions, initialEntries, providerOptions }: RenderOptions = {}\n): RenderResult & { user: ReturnType<typeof userEvent.setup> } => {\n const { wrapper: Wrapper = fallbackWrapper, ...restOptions } = renderOptions ?? {};\n\n return {\n ...renderRTL(ui, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n }),\n user: userEvent.setup({\n skipHover: true,\n ...userEventOptions,\n }),\n };\n};\n\n/**\n * @alpha\n * @description A custom render-hook function that wraps the component with the necessary providers,\n * for use of testing hooks within the Strapi Admin.\n */\nconst renderHook = <\n Result,\n Props,\n Q extends Queries,\n Container extends Element | DocumentFragment = HTMLElement,\n BaseElement extends Element | DocumentFragment = Container,\n>(\n hook: (initialProps: Props) => Result,\n options?: RenderHookOptions<Props, Q, Container, BaseElement> &\n Pick<RenderOptions, 'initialEntries' | 'providerOptions'>\n): RenderHookResult<Result, Props> => {\n const {\n wrapper: Wrapper = fallbackWrapper,\n initialEntries,\n providerOptions,\n ...restOptions\n } = options ?? {};\n\n return renderHookRTL(hook, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n });\n};\n\nexport { render, renderHook, waitFor, server, act, screen, fireEvent, defaultTestStoreConfig };\n"],"names":["setLogger","log","warn","error","defaultTestStoreConfig","preloadedState","initialState","reducer","adminApi","reducerPath","admin_app","appReducer","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","DEFAULT_PERMISSIONS","fixtures","permissions","allPermissions","id","action","subject","properties","conditions","actionParameters","Providers","children","initialEntries","storeConfig","queryClient","QueryClient","defaultOptions","queries","retry","store","configureStore","router","createMemoryRouter","path","element","_jsx","StrapiAppProvider","components","rbac","RBAC","customFields","get","jest","fn","mockReturnValue","name","pluginId","type","icon","intlLabel","defaultMessage","intlDescription","Input","mockResolvedValue","default","getAll","register","fields","menu","getAdminInjectedComponents","getPlugin","plugins","runHookParallel","runHookWaterfall","mockImplementation","_name","initialValue","runHookSeries","settings","Provider","AuthProvider","_defaultPermissions","_disableRenewToken","QueryClientProvider","client","DndProvider","backend","HTML5Backend","LanguageProvider","messages","Theme","themes","dark","darkTheme","light","lightTheme","NotificationsProvider","GuidedTourProvider","ConfigurationContextProvider","showReleaseNotification","logos","auth","updateProjectSettings","AppInfoProvider","autoReload","useYarn","dependencies","strapiVersion","communityEdition","shouldUpdateStrapi","RouterProvider","fallbackWrapper","_Fragment","render","ui","renderOptions","userEventOptions","providerOptions","wrapper","Wrapper","restOptions","renderRTL","user","userEvent","setup","skipHover","renderHook","hook","options","renderHookRTL"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCAA,oBAAU,CAAA;AACRC,IAAAA,GAAAA,EAAK,IAAO,EAAA;AACZC,IAAAA,IAAAA,EAAM,IAAO,EAAA;AACbC,IAAAA,KAAAA,EAAO,IAAO;AAChB,CAAA,CAAA;AASMC,MAAAA,sBAAAA,GAAyB,KAAO;QACpCC,cAAgBC,EAAAA,kBAAAA,EAAAA;QAChBC,OAAS,EAAA;AACP,YAAA,CAACC,YAASC,CAAAA,WAAW,GAAGD,aAASD,OAAO;YACxCG,SAAWC,EAAAA;AACb,SAAA;;AAEAC,QAAAA,UAAAA,EAAY,CAACC,oBAAyB,GAAA;mBACjCA,oBAAqB,CAAA;;oBAEtBC,cAAgB,EAAA,KAAA;oBAChBC,iBAAmB,EAAA;AACrB,iBAAA,CAAA;AACAP,gBAAAA,YAAAA,CAASI;AACV;KACH;AAEA,MAAMI,mBAAsB,GAAA;OACvBC,uBAASC,CAAAA,WAAW,CAACC,cAAc;AACtC,IAAA;QACEC,EAAI,EAAA,GAAA;QACJC,MAAQ,EAAA,mBAAA;QACRC,OAAS,EAAA,IAAA;AACTC,QAAAA,UAAAA,EAAY,EAAC;AACbC,QAAAA,UAAAA,EAAY,EAAE;AACdC,QAAAA,gBAAAA,EAAkB;AACpB;AACD,CAAA;AAED,MAAMC,SAAAA,GAAY,CAAC,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,WAAW,EAAEX,WAAc,GAAA,EAAE,EAAkB,GAAA;IAC5F,MAAMY,WAAAA,GAAc,IAAIC,sBAAY,CAAA;QAClCC,cAAgB,EAAA;YACdC,OAAS,EAAA;gBACPC,KAAO,EAAA;AACT;AACF;AACF,KAAA,CAAA;AAEA,IAAA,MAAMC,QAAQC,sBAAe,CAAA;AAC3B,QAAA,GAAGhC,sBAAwB,EAAA;AAC3B,QAAA,GAAGyB;AACL,KAAA,CAAA;AAEA,IAAA,MAAMV,cACJ,GAAA,OAAOD,WAAgB,KAAA,UAAA,GACnBA,YAAYF,mBACZ,CAAA,GAAA;AAAIA,QAAAA,GAAAA,mBAAAA;AAAwBE,QAAAA,GAAAA;AAAY,KAAA;AAE9C,IAAA,MAAMmB,SAASC,iCACb,CAAA;AACE,QAAA;YACEC,IAAM,EAAA,IAAA;AACNC,YAAAA,OAAAA,gBACEC,cAACC,CAAAA,2BAAAA,EAAAA;AACCC,gBAAAA,UAAAA,EAAY,EAAC;AACbC,gBAAAA,IAAAA,EAAM,IAAIC,SAAAA,EAAAA;gBACVC,YAAc,EAAA;AACZA,oBAAAA,YAAAA,EAAc,EAAC;AACfC,oBAAAA,GAAAA,EAAKC,IAAKC,CAAAA,EAAE,EAAGC,CAAAA,eAAe,CAAC;wBAC7BC,IAAM,EAAA,OAAA;wBACNC,QAAU,EAAA,gBAAA;wBACVC,IAAM,EAAA,MAAA;AACNC,wBAAAA,IAAAA,EAAMN,KAAKC,EAAE,EAAA;wBACbM,SAAW,EAAA;4BACTnC,EAAI,EAAA,4BAAA;4BACJoC,cAAgB,EAAA;AAClB,yBAAA;wBACAC,eAAiB,EAAA;4BACfrC,EAAI,EAAA,kCAAA;4BACJoC,cAAgB,EAAA;AAClB,yBAAA;wBACAb,UAAY,EAAA;AACVe,4BAAAA,KAAAA,EAAOV,IAAKC,CAAAA,EAAE,EAAGU,CAAAA,iBAAiB,CAAC;AAAEC,gCAAAA,OAAAA,EAASZ,KAAKC,EAAE;AAAG,6BAAA;AAC1D;AACF,qBAAA,CAAA;AACAY,oBAAAA,MAAAA,EAAQb,KAAKC,EAAE,EAAA;AACfa,oBAAAA,QAAAA,EAAUd,KAAKC,EAAE;AACnB,iBAAA;AACAc,gBAAAA,MAAAA,EAAQ,EAAC;AACTC,gBAAAA,IAAAA,EAAM,EAAE;AACRC,gBAAAA,0BAAAA,EAA4BjB,KAAKC,EAAE,EAAA;AACnCiB,gBAAAA,SAAAA,EAAWlB,KAAKC,EAAE,EAAA;AAClBkB,gBAAAA,OAAAA,EAAS,EAAC;AACVC,gBAAAA,eAAAA,EAAiBpB,KAAKC,EAAE,EAAA;AACxBoB,gBAAAA,gBAAAA,EAAkBrB,KAAKC,EAAE,EAAA,CAAGqB,kBAAkB,CAAC,CAACC,OAAOC,YAAiBA,GAAAA,YAAAA,CAAAA;AACxEC,gBAAAA,aAAAA,EAAezB,KAAKC,EAAE,EAAA;AACtByB,gBAAAA,QAAAA,EAAU,EAAC;AAEX,gBAAA,QAAA,gBAAAjC,cAACkC,CAAAA,mBAAAA,EAAAA;oBAASxC,KAAOA,EAAAA,KAAAA;AACf,oBAAA,QAAA,gBAAAM,cAACmC,CAAAA,iBAAAA,EAAAA;wBAAaC,mBAAqB1D,EAAAA,cAAAA;wBAAgB2D,kBAAoB,EAAA,IAAA;AACrE,wBAAA,QAAA,gBAAArC,cAACsC,CAAAA,8BAAAA,EAAAA;4BAAoBC,MAAQlD,EAAAA,WAAAA;AAC3B,4BAAA,QAAA,gBAAAW,cAACwC,CAAAA,oBAAAA,EAAAA;gCAAYC,OAASC,EAAAA,iCAAAA;AACpB,gCAAA,QAAA,gBAAA1C,cAAC2C,CAAAA,iCAAAA,EAAAA;AAAiBC,oCAAAA,QAAAA,EAAU,EAAC;AAC3B,oCAAA,QAAA,gBAAA5C,cAAC6C,CAAAA,WAAAA,EAAAA;wCACCC,MAAQ,EAAA;4CACNC,IAAMC,EAAAA,sBAAAA;4CACNC,KAAOC,EAAAA;AACT,yCAAA;AAEA,wCAAA,QAAA,gBAAAlD,cAACmD,CAAAA,mCAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAAnD,cAACoD,CAAAA,2BAAAA,EAAAA;AACC,gDAAA,QAAA,gBAAApD,cAACqD,CAAAA,mDAAAA,EAAAA;oDACCC,uBAAyB,EAAA,KAAA;oDACzBC,KAAO,EAAA;wDACLC,IAAM,EAAA;4DAAErC,OAAS,EAAA;AAAU,yDAAA;wDAC3BI,IAAM,EAAA;4DAAEJ,OAAS,EAAA;AAAU;AAC7B,qDAAA;AACAsC,oDAAAA,qBAAAA,EAAuBlD,KAAKC,EAAE,EAAA;AAE9B,oDAAA,QAAA,gBAAAR,cAAC0D,CAAAA,uBAAAA,EAAAA;wDACCC,UAAU,EAAA,IAAA;wDACVC,OAAO,EAAA,IAAA;wDACPC,YAAc,EAAA;4DACZ,8BAAgC,EAAA,OAAA;4DAChC,oCAAsC,EAAA;AACxC,yDAAA;wDACAC,aAAc,EAAA,OAAA;wDACdC,gBAAgB,EAAA,IAAA;wDAChBC,kBAAoB,EAAA,KAAA;AAEnB9E,wDAAAA,QAAAA,EAAAA;;;;;;;;;;;;AAa3B;KACD,EACD;AACEC,QAAAA;AACF,KAAA,CAAA;;AAIF,IAAA,qBAAOa,cAACiE,CAAAA,6BAAAA,EAAAA;QAAerE,MAAQA,EAAAA;;AACjC,CAAA;AAEA;AACA,MAAMsE,eAAkB,GAAA,CAAC,EAAEhF,QAAQ,EAAiC,iBAAKc,cAAA,CAAAmE,mBAAA,EAAA;AAAGjF,QAAAA,QAAAA,EAAAA;;AAS5E;;;;AAIC,IACKkF,MAAAA,MAAAA,GAAS,CACbC,EAAAA,EACA,EAAEC,aAAa,EAAEC,gBAAgB,EAAEpF,cAAc,EAAEqF,eAAe,EAAiB,GAAG,EAAE,GAAA;IAExF,MAAM,EAAEC,SAASC,OAAUR,GAAAA,eAAe,EAAE,GAAGS,WAAAA,EAAa,GAAGL,aAAAA,IAAiB,EAAC;IAEjF,OAAO;AACL,QAAA,GAAGM,aAAUP,EAAI,EAAA;AACfI,YAAAA,OAAAA,EAAS,CAAC,EAAEvF,QAAQ,EAAE,iBACpBc,cAACf,CAAAA,SAAAA,EAAAA;oBAAUE,cAAgBA,EAAAA,cAAAA;AAAiB,oBAAA,GAAGqF,eAAe;AAC5D,oBAAA,QAAA,gBAAAxE,cAAC0E,CAAAA,OAAAA,EAAAA;AAASxF,wBAAAA,QAAAA,EAAAA;;;AAGd,YAAA,GAAGyF;SACH,CAAA;QACFE,IAAMC,EAAAA,mBAAAA,CAAUC,KAAK,CAAC;YACpBC,SAAW,EAAA,IAAA;AACX,YAAA,GAAGT;AACL,SAAA;AACF,KAAA;AACF;AAEA;;;;IAKA,MAAMU,UAAa,GAAA,CAOjBC,IACAC,EAAAA,OAAAA,GAAAA;AAGA,IAAA,MAAM,EACJV,OAAAA,EAASC,OAAUR,GAAAA,eAAe,EAClC/E,cAAc,EACdqF,eAAe,EACf,GAAGG,WACJ,EAAA,GAAGQ,WAAW,EAAC;AAEhB,IAAA,OAAOC,iBAAcF,IAAM,EAAA;AACzBT,QAAAA,OAAAA,EAAS,CAAC,EAAEvF,QAAQ,EAAE,iBACpBc,cAACf,CAAAA,SAAAA,EAAAA;gBAAUE,cAAgBA,EAAAA,cAAAA;AAAiB,gBAAA,GAAGqF,eAAe;AAC5D,gBAAA,QAAA,gBAAAxE,cAAC0E,CAAAA,OAAAA,EAAAA;AAASxF,oBAAAA,QAAAA,EAAAA;;;AAGd,QAAA,GAAGyF;AACL,KAAA,CAAA;AACF;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../admin/tests/utils.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { ConfigureStoreOptions, configureStore } from '@reduxjs/toolkit';\nimport { fixtures } from '@strapi/admin-test-utils';\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport {\n fireEvent,\n renderHook as renderHookRTL,\n render as renderRTL,\n waitFor,\n RenderOptions as RTLRenderOptions,\n RenderResult,\n act,\n screen,\n RenderHookOptions,\n RenderHookResult,\n Queries,\n} from '@testing-library/react';\nimport { userEvent } from '@testing-library/user-event';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { QueryClient, QueryClientProvider, setLogger } from 'react-query';\nimport { Provider } from 'react-redux';\nimport { MemoryRouterProps, RouterProvider, createMemoryRouter } from 'react-router-dom';\n\nimport { GuidedTourProvider } from '../src/components/GuidedTour/Provider';\nimport { LanguageProvider } from '../src/components/LanguageProvider';\nimport { Theme } from '../src/components/Theme';\nimport { RBAC } from '../src/core/apis/rbac';\nimport { AppInfoProvider } from '../src/features/AppInfo';\nimport { AuthProvider, type Permission } from '../src/features/Auth';\nimport { _internalConfigurationContextProvider as ConfigurationContextProvider } from '../src/features/Configuration';\nimport { NotificationsProvider } from '../src/features/Notifications';\nimport { StrapiAppProvider } from '../src/features/StrapiApp';\nimport { reducer as appReducer } from '../src/reducer';\nimport { adminApi } from '../src/services/api';\n\nimport { server } from './server';\nimport { initialState } from './store';\n\nsetLogger({\n log: () => {},\n warn: () => {},\n error: () => {},\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n initialEntries?: MemoryRouterProps['initialEntries'];\n storeConfig?: Partial<ConfigureStoreOptions>;\n permissions?: Permission[] | ((defaultPermissions: Permission[]) => Permission[] | undefined);\n}\n\nconst defaultTestStoreConfig = () => ({\n preloadedState: initialState(),\n reducer: {\n [adminApi.reducerPath]: adminApi.reducer,\n admin_app: appReducer,\n },\n // @ts-expect-error – this fails.\n middleware: (getDefaultMiddleware) => [\n ...getDefaultMiddleware({\n // Disable timing checks for test env\n immutableCheck: false,\n serializableCheck: false,\n }),\n adminApi.middleware,\n ],\n});\n\nconst DEFAULT_PERMISSIONS = [\n ...fixtures.permissions.allPermissions,\n {\n id: 314,\n action: 'admin::users.read',\n subject: null,\n properties: {},\n conditions: [],\n actionParameters: {},\n },\n];\n\nconst Providers = ({ children, initialEntries, storeConfig, permissions = [] }: ProvidersProps) => {\n const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n },\n },\n });\n\n const store = configureStore({\n ...defaultTestStoreConfig(),\n ...storeConfig,\n });\n\n const allPermissions =\n typeof permissions === 'function'\n ? permissions(DEFAULT_PERMISSIONS)\n : [...DEFAULT_PERMISSIONS, ...permissions];\n\n const router = createMemoryRouter(\n [\n {\n path: '/*',\n element: (\n <StrapiAppProvider\n components={{}}\n rbac={new RBAC()}\n widgets={{\n widgets: {},\n getAll: jest.fn(),\n register: jest.fn(),\n }}\n customFields={{\n customFields: {},\n get: jest.fn().mockReturnValue({\n name: 'color',\n pluginId: 'mycustomfields',\n type: 'text',\n icon: jest.fn(),\n intlLabel: {\n id: 'mycustomfields.color.label',\n defaultMessage: 'Color',\n },\n intlDescription: {\n id: 'mycustomfields.color.description',\n defaultMessage: 'Select any color',\n },\n components: {\n Input: jest.fn().mockResolvedValue({ default: jest.fn() }),\n },\n }),\n getAll: jest.fn(),\n register: jest.fn(),\n }}\n fields={{}}\n menu={[]}\n getAdminInjectedComponents={jest.fn()}\n getPlugin={jest.fn()}\n plugins={{}}\n runHookParallel={jest.fn()}\n runHookWaterfall={jest.fn().mockImplementation((_name, initialValue) => initialValue)}\n runHookSeries={jest.fn()}\n settings={{}}\n >\n <Provider store={store}>\n <AuthProvider _defaultPermissions={allPermissions} _disableRenewToken={true}>\n <QueryClientProvider client={queryClient}>\n <DndProvider backend={HTML5Backend}>\n <LanguageProvider messages={{}}>\n <Theme\n themes={{\n dark: darkTheme,\n light: lightTheme,\n }}\n >\n <NotificationsProvider>\n <GuidedTourProvider>\n <ConfigurationContextProvider\n showReleaseNotification={false}\n logos={{\n auth: { default: 'default' },\n menu: { default: 'default' },\n }}\n updateProjectSettings={jest.fn()}\n >\n <AppInfoProvider\n autoReload\n useYarn\n dependencies={{\n '@strapi/plugin-documentation': '4.2.0',\n '@strapi/provider-upload-cloudinary': '4.2.0',\n }}\n strapiVersion=\"4.1.0\"\n communityEdition\n shouldUpdateStrapi={false}\n >\n {children}\n </AppInfoProvider>\n </ConfigurationContextProvider>\n </GuidedTourProvider>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </DndProvider>\n </QueryClientProvider>\n </AuthProvider>\n </Provider>\n </StrapiAppProvider>\n ),\n },\n ],\n {\n initialEntries,\n }\n );\n\n // en is the default locale of the admin app.\n return <RouterProvider router={router} />;\n};\n\n// eslint-disable-next-line react/jsx-no-useless-fragment\nconst fallbackWrapper = ({ children }: { children: React.ReactNode }) => <>{children}</>;\n\nexport interface RenderOptions {\n renderOptions?: RTLRenderOptions;\n userEventOptions?: Parameters<typeof userEvent.setup>[0];\n initialEntries?: MemoryRouterProps['initialEntries'];\n providerOptions?: Pick<ProvidersProps, 'storeConfig' | 'permissions'>;\n}\n\n/**\n * @alpha\n * @description A custom render function that wraps the component with the necessary providers,\n * for use of testing components within the Strapi Admin.\n */\nconst render = (\n ui: React.ReactElement,\n { renderOptions, userEventOptions, initialEntries, providerOptions }: RenderOptions = {}\n): RenderResult & { user: ReturnType<typeof userEvent.setup> } => {\n const { wrapper: Wrapper = fallbackWrapper, ...restOptions } = renderOptions ?? {};\n\n return {\n ...renderRTL(ui, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n }),\n user: userEvent.setup({\n skipHover: true,\n ...userEventOptions,\n }),\n };\n};\n\n/**\n * @alpha\n * @description A custom render-hook function that wraps the component with the necessary providers,\n * for use of testing hooks within the Strapi Admin.\n */\nconst renderHook = <\n Result,\n Props,\n Q extends Queries,\n Container extends Element | DocumentFragment = HTMLElement,\n BaseElement extends Element | DocumentFragment = Container,\n>(\n hook: (initialProps: Props) => Result,\n options?: RenderHookOptions<Props, Q, Container, BaseElement> &\n Pick<RenderOptions, 'initialEntries' | 'providerOptions'>\n): RenderHookResult<Result, Props> => {\n const {\n wrapper: Wrapper = fallbackWrapper,\n initialEntries,\n providerOptions,\n ...restOptions\n } = options ?? {};\n\n return renderHookRTL(hook, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n });\n};\n\nexport { render, renderHook, waitFor, server, act, screen, fireEvent, defaultTestStoreConfig };\n"],"names":["setLogger","log","warn","error","defaultTestStoreConfig","preloadedState","initialState","reducer","adminApi","reducerPath","admin_app","appReducer","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","DEFAULT_PERMISSIONS","fixtures","permissions","allPermissions","id","action","subject","properties","conditions","actionParameters","Providers","children","initialEntries","storeConfig","queryClient","QueryClient","defaultOptions","queries","retry","store","configureStore","router","createMemoryRouter","path","element","_jsx","StrapiAppProvider","components","rbac","RBAC","widgets","getAll","jest","fn","register","customFields","get","mockReturnValue","name","pluginId","type","icon","intlLabel","defaultMessage","intlDescription","Input","mockResolvedValue","default","fields","menu","getAdminInjectedComponents","getPlugin","plugins","runHookParallel","runHookWaterfall","mockImplementation","_name","initialValue","runHookSeries","settings","Provider","AuthProvider","_defaultPermissions","_disableRenewToken","QueryClientProvider","client","DndProvider","backend","HTML5Backend","LanguageProvider","messages","Theme","themes","dark","darkTheme","light","lightTheme","NotificationsProvider","GuidedTourProvider","ConfigurationContextProvider","showReleaseNotification","logos","auth","updateProjectSettings","AppInfoProvider","autoReload","useYarn","dependencies","strapiVersion","communityEdition","shouldUpdateStrapi","RouterProvider","fallbackWrapper","_Fragment","render","ui","renderOptions","userEventOptions","providerOptions","wrapper","Wrapper","restOptions","renderRTL","user","userEvent","setup","skipHover","renderHook","hook","options","renderHookRTL"],"mappings":"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"}
|
|
@@ -79,6 +79,11 @@ const Providers = ({ children, initialEntries, storeConfig, permissions = [] })=
|
|
|
79
79
|
element: /*#__PURE__*/ jsx(StrapiAppProvider, {
|
|
80
80
|
components: {},
|
|
81
81
|
rbac: new RBAC(),
|
|
82
|
+
widgets: {
|
|
83
|
+
widgets: {},
|
|
84
|
+
getAll: jest.fn(),
|
|
85
|
+
register: jest.fn()
|
|
86
|
+
},
|
|
82
87
|
customFields: {
|
|
83
88
|
customFields: {},
|
|
84
89
|
get: jest.fn().mockReturnValue({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","sources":["../../../../admin/tests/utils.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { ConfigureStoreOptions, configureStore } from '@reduxjs/toolkit';\nimport { fixtures } from '@strapi/admin-test-utils';\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport {\n fireEvent,\n renderHook as renderHookRTL,\n render as renderRTL,\n waitFor,\n RenderOptions as RTLRenderOptions,\n RenderResult,\n act,\n screen,\n RenderHookOptions,\n RenderHookResult,\n Queries,\n} from '@testing-library/react';\nimport { userEvent } from '@testing-library/user-event';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { QueryClient, QueryClientProvider, setLogger } from 'react-query';\nimport { Provider } from 'react-redux';\nimport { MemoryRouterProps, RouterProvider, createMemoryRouter } from 'react-router-dom';\n\nimport { GuidedTourProvider } from '../src/components/GuidedTour/Provider';\nimport { LanguageProvider } from '../src/components/LanguageProvider';\nimport { Theme } from '../src/components/Theme';\nimport { RBAC } from '../src/core/apis/rbac';\nimport { AppInfoProvider } from '../src/features/AppInfo';\nimport { AuthProvider, type Permission } from '../src/features/Auth';\nimport { _internalConfigurationContextProvider as ConfigurationContextProvider } from '../src/features/Configuration';\nimport { NotificationsProvider } from '../src/features/Notifications';\nimport { StrapiAppProvider } from '../src/features/StrapiApp';\nimport { reducer as appReducer } from '../src/reducer';\nimport { adminApi } from '../src/services/api';\n\nimport { server } from './server';\nimport { initialState } from './store';\n\nsetLogger({\n log: () => {},\n warn: () => {},\n error: () => {},\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n initialEntries?: MemoryRouterProps['initialEntries'];\n storeConfig?: Partial<ConfigureStoreOptions>;\n permissions?: Permission[] | ((defaultPermissions: Permission[]) => Permission[] | undefined);\n}\n\nconst defaultTestStoreConfig = () => ({\n preloadedState: initialState(),\n reducer: {\n [adminApi.reducerPath]: adminApi.reducer,\n admin_app: appReducer,\n },\n // @ts-expect-error – this fails.\n middleware: (getDefaultMiddleware) => [\n ...getDefaultMiddleware({\n // Disable timing checks for test env\n immutableCheck: false,\n serializableCheck: false,\n }),\n adminApi.middleware,\n ],\n});\n\nconst DEFAULT_PERMISSIONS = [\n ...fixtures.permissions.allPermissions,\n {\n id: 314,\n action: 'admin::users.read',\n subject: null,\n properties: {},\n conditions: [],\n actionParameters: {},\n },\n];\n\nconst Providers = ({ children, initialEntries, storeConfig, permissions = [] }: ProvidersProps) => {\n const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n },\n },\n });\n\n const store = configureStore({\n ...defaultTestStoreConfig(),\n ...storeConfig,\n });\n\n const allPermissions =\n typeof permissions === 'function'\n ? permissions(DEFAULT_PERMISSIONS)\n : [...DEFAULT_PERMISSIONS, ...permissions];\n\n const router = createMemoryRouter(\n [\n {\n path: '/*',\n element: (\n <StrapiAppProvider\n components={{}}\n rbac={new RBAC()}\n customFields={{\n customFields: {},\n get: jest.fn().mockReturnValue({\n name: 'color',\n pluginId: 'mycustomfields',\n type: 'text',\n icon: jest.fn(),\n intlLabel: {\n id: 'mycustomfields.color.label',\n defaultMessage: 'Color',\n },\n intlDescription: {\n id: 'mycustomfields.color.description',\n defaultMessage: 'Select any color',\n },\n components: {\n Input: jest.fn().mockResolvedValue({ default: jest.fn() }),\n },\n }),\n getAll: jest.fn(),\n register: jest.fn(),\n }}\n fields={{}}\n menu={[]}\n getAdminInjectedComponents={jest.fn()}\n getPlugin={jest.fn()}\n plugins={{}}\n runHookParallel={jest.fn()}\n runHookWaterfall={jest.fn().mockImplementation((_name, initialValue) => initialValue)}\n runHookSeries={jest.fn()}\n settings={{}}\n >\n <Provider store={store}>\n <AuthProvider _defaultPermissions={allPermissions} _disableRenewToken={true}>\n <QueryClientProvider client={queryClient}>\n <DndProvider backend={HTML5Backend}>\n <LanguageProvider messages={{}}>\n <Theme\n themes={{\n dark: darkTheme,\n light: lightTheme,\n }}\n >\n <NotificationsProvider>\n <GuidedTourProvider>\n <ConfigurationContextProvider\n showReleaseNotification={false}\n logos={{\n auth: { default: 'default' },\n menu: { default: 'default' },\n }}\n updateProjectSettings={jest.fn()}\n >\n <AppInfoProvider\n autoReload\n useYarn\n dependencies={{\n '@strapi/plugin-documentation': '4.2.0',\n '@strapi/provider-upload-cloudinary': '4.2.0',\n }}\n strapiVersion=\"4.1.0\"\n communityEdition\n shouldUpdateStrapi={false}\n >\n {children}\n </AppInfoProvider>\n </ConfigurationContextProvider>\n </GuidedTourProvider>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </DndProvider>\n </QueryClientProvider>\n </AuthProvider>\n </Provider>\n </StrapiAppProvider>\n ),\n },\n ],\n {\n initialEntries,\n }\n );\n\n // en is the default locale of the admin app.\n return <RouterProvider router={router} />;\n};\n\n// eslint-disable-next-line react/jsx-no-useless-fragment\nconst fallbackWrapper = ({ children }: { children: React.ReactNode }) => <>{children}</>;\n\nexport interface RenderOptions {\n renderOptions?: RTLRenderOptions;\n userEventOptions?: Parameters<typeof userEvent.setup>[0];\n initialEntries?: MemoryRouterProps['initialEntries'];\n providerOptions?: Pick<ProvidersProps, 'storeConfig' | 'permissions'>;\n}\n\n/**\n * @alpha\n * @description A custom render function that wraps the component with the necessary providers,\n * for use of testing components within the Strapi Admin.\n */\nconst render = (\n ui: React.ReactElement,\n { renderOptions, userEventOptions, initialEntries, providerOptions }: RenderOptions = {}\n): RenderResult & { user: ReturnType<typeof userEvent.setup> } => {\n const { wrapper: Wrapper = fallbackWrapper, ...restOptions } = renderOptions ?? {};\n\n return {\n ...renderRTL(ui, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n }),\n user: userEvent.setup({\n skipHover: true,\n ...userEventOptions,\n }),\n };\n};\n\n/**\n * @alpha\n * @description A custom render-hook function that wraps the component with the necessary providers,\n * for use of testing hooks within the Strapi Admin.\n */\nconst renderHook = <\n Result,\n Props,\n Q extends Queries,\n Container extends Element | DocumentFragment = HTMLElement,\n BaseElement extends Element | DocumentFragment = Container,\n>(\n hook: (initialProps: Props) => Result,\n options?: RenderHookOptions<Props, Q, Container, BaseElement> &\n Pick<RenderOptions, 'initialEntries' | 'providerOptions'>\n): RenderHookResult<Result, Props> => {\n const {\n wrapper: Wrapper = fallbackWrapper,\n initialEntries,\n providerOptions,\n ...restOptions\n } = options ?? {};\n\n return renderHookRTL(hook, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n });\n};\n\nexport { render, renderHook, waitFor, server, act, screen, fireEvent, defaultTestStoreConfig };\n"],"names":["setLogger","log","warn","error","defaultTestStoreConfig","preloadedState","initialState","reducer","adminApi","reducerPath","admin_app","appReducer","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","DEFAULT_PERMISSIONS","fixtures","permissions","allPermissions","id","action","subject","properties","conditions","actionParameters","Providers","children","initialEntries","storeConfig","queryClient","QueryClient","defaultOptions","queries","retry","store","configureStore","router","createMemoryRouter","path","element","_jsx","StrapiAppProvider","components","rbac","RBAC","customFields","get","jest","fn","mockReturnValue","name","pluginId","type","icon","intlLabel","defaultMessage","intlDescription","Input","mockResolvedValue","default","getAll","register","fields","menu","getAdminInjectedComponents","getPlugin","plugins","runHookParallel","runHookWaterfall","mockImplementation","_name","initialValue","runHookSeries","settings","Provider","AuthProvider","_defaultPermissions","_disableRenewToken","QueryClientProvider","client","DndProvider","backend","HTML5Backend","LanguageProvider","messages","Theme","themes","dark","darkTheme","light","lightTheme","NotificationsProvider","GuidedTourProvider","ConfigurationContextProvider","showReleaseNotification","logos","auth","updateProjectSettings","AppInfoProvider","autoReload","useYarn","dependencies","strapiVersion","communityEdition","shouldUpdateStrapi","RouterProvider","fallbackWrapper","_Fragment","render","ui","renderOptions","userEventOptions","providerOptions","wrapper","Wrapper","restOptions","renderRTL","user","userEvent","setup","skipHover","renderHook","hook","options","renderHookRTL"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../../../../admin/tests/utils.tsx"],"sourcesContent":["/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { ConfigureStoreOptions, configureStore } from '@reduxjs/toolkit';\nimport { fixtures } from '@strapi/admin-test-utils';\nimport { darkTheme, lightTheme } from '@strapi/design-system';\nimport {\n fireEvent,\n renderHook as renderHookRTL,\n render as renderRTL,\n waitFor,\n RenderOptions as RTLRenderOptions,\n RenderResult,\n act,\n screen,\n RenderHookOptions,\n RenderHookResult,\n Queries,\n} from '@testing-library/react';\nimport { userEvent } from '@testing-library/user-event';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { QueryClient, QueryClientProvider, setLogger } from 'react-query';\nimport { Provider } from 'react-redux';\nimport { MemoryRouterProps, RouterProvider, createMemoryRouter } from 'react-router-dom';\n\nimport { GuidedTourProvider } from '../src/components/GuidedTour/Provider';\nimport { LanguageProvider } from '../src/components/LanguageProvider';\nimport { Theme } from '../src/components/Theme';\nimport { RBAC } from '../src/core/apis/rbac';\nimport { AppInfoProvider } from '../src/features/AppInfo';\nimport { AuthProvider, type Permission } from '../src/features/Auth';\nimport { _internalConfigurationContextProvider as ConfigurationContextProvider } from '../src/features/Configuration';\nimport { NotificationsProvider } from '../src/features/Notifications';\nimport { StrapiAppProvider } from '../src/features/StrapiApp';\nimport { reducer as appReducer } from '../src/reducer';\nimport { adminApi } from '../src/services/api';\n\nimport { server } from './server';\nimport { initialState } from './store';\n\nsetLogger({\n log: () => {},\n warn: () => {},\n error: () => {},\n});\n\ninterface ProvidersProps {\n children: React.ReactNode;\n initialEntries?: MemoryRouterProps['initialEntries'];\n storeConfig?: Partial<ConfigureStoreOptions>;\n permissions?: Permission[] | ((defaultPermissions: Permission[]) => Permission[] | undefined);\n}\n\nconst defaultTestStoreConfig = () => ({\n preloadedState: initialState(),\n reducer: {\n [adminApi.reducerPath]: adminApi.reducer,\n admin_app: appReducer,\n },\n // @ts-expect-error – this fails.\n middleware: (getDefaultMiddleware) => [\n ...getDefaultMiddleware({\n // Disable timing checks for test env\n immutableCheck: false,\n serializableCheck: false,\n }),\n adminApi.middleware,\n ],\n});\n\nconst DEFAULT_PERMISSIONS = [\n ...fixtures.permissions.allPermissions,\n {\n id: 314,\n action: 'admin::users.read',\n subject: null,\n properties: {},\n conditions: [],\n actionParameters: {},\n },\n];\n\nconst Providers = ({ children, initialEntries, storeConfig, permissions = [] }: ProvidersProps) => {\n const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n },\n },\n });\n\n const store = configureStore({\n ...defaultTestStoreConfig(),\n ...storeConfig,\n });\n\n const allPermissions =\n typeof permissions === 'function'\n ? permissions(DEFAULT_PERMISSIONS)\n : [...DEFAULT_PERMISSIONS, ...permissions];\n\n const router = createMemoryRouter(\n [\n {\n path: '/*',\n element: (\n <StrapiAppProvider\n components={{}}\n rbac={new RBAC()}\n widgets={{\n widgets: {},\n getAll: jest.fn(),\n register: jest.fn(),\n }}\n customFields={{\n customFields: {},\n get: jest.fn().mockReturnValue({\n name: 'color',\n pluginId: 'mycustomfields',\n type: 'text',\n icon: jest.fn(),\n intlLabel: {\n id: 'mycustomfields.color.label',\n defaultMessage: 'Color',\n },\n intlDescription: {\n id: 'mycustomfields.color.description',\n defaultMessage: 'Select any color',\n },\n components: {\n Input: jest.fn().mockResolvedValue({ default: jest.fn() }),\n },\n }),\n getAll: jest.fn(),\n register: jest.fn(),\n }}\n fields={{}}\n menu={[]}\n getAdminInjectedComponents={jest.fn()}\n getPlugin={jest.fn()}\n plugins={{}}\n runHookParallel={jest.fn()}\n runHookWaterfall={jest.fn().mockImplementation((_name, initialValue) => initialValue)}\n runHookSeries={jest.fn()}\n settings={{}}\n >\n <Provider store={store}>\n <AuthProvider _defaultPermissions={allPermissions} _disableRenewToken={true}>\n <QueryClientProvider client={queryClient}>\n <DndProvider backend={HTML5Backend}>\n <LanguageProvider messages={{}}>\n <Theme\n themes={{\n dark: darkTheme,\n light: lightTheme,\n }}\n >\n <NotificationsProvider>\n <GuidedTourProvider>\n <ConfigurationContextProvider\n showReleaseNotification={false}\n logos={{\n auth: { default: 'default' },\n menu: { default: 'default' },\n }}\n updateProjectSettings={jest.fn()}\n >\n <AppInfoProvider\n autoReload\n useYarn\n dependencies={{\n '@strapi/plugin-documentation': '4.2.0',\n '@strapi/provider-upload-cloudinary': '4.2.0',\n }}\n strapiVersion=\"4.1.0\"\n communityEdition\n shouldUpdateStrapi={false}\n >\n {children}\n </AppInfoProvider>\n </ConfigurationContextProvider>\n </GuidedTourProvider>\n </NotificationsProvider>\n </Theme>\n </LanguageProvider>\n </DndProvider>\n </QueryClientProvider>\n </AuthProvider>\n </Provider>\n </StrapiAppProvider>\n ),\n },\n ],\n {\n initialEntries,\n }\n );\n\n // en is the default locale of the admin app.\n return <RouterProvider router={router} />;\n};\n\n// eslint-disable-next-line react/jsx-no-useless-fragment\nconst fallbackWrapper = ({ children }: { children: React.ReactNode }) => <>{children}</>;\n\nexport interface RenderOptions {\n renderOptions?: RTLRenderOptions;\n userEventOptions?: Parameters<typeof userEvent.setup>[0];\n initialEntries?: MemoryRouterProps['initialEntries'];\n providerOptions?: Pick<ProvidersProps, 'storeConfig' | 'permissions'>;\n}\n\n/**\n * @alpha\n * @description A custom render function that wraps the component with the necessary providers,\n * for use of testing components within the Strapi Admin.\n */\nconst render = (\n ui: React.ReactElement,\n { renderOptions, userEventOptions, initialEntries, providerOptions }: RenderOptions = {}\n): RenderResult & { user: ReturnType<typeof userEvent.setup> } => {\n const { wrapper: Wrapper = fallbackWrapper, ...restOptions } = renderOptions ?? {};\n\n return {\n ...renderRTL(ui, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n }),\n user: userEvent.setup({\n skipHover: true,\n ...userEventOptions,\n }),\n };\n};\n\n/**\n * @alpha\n * @description A custom render-hook function that wraps the component with the necessary providers,\n * for use of testing hooks within the Strapi Admin.\n */\nconst renderHook = <\n Result,\n Props,\n Q extends Queries,\n Container extends Element | DocumentFragment = HTMLElement,\n BaseElement extends Element | DocumentFragment = Container,\n>(\n hook: (initialProps: Props) => Result,\n options?: RenderHookOptions<Props, Q, Container, BaseElement> &\n Pick<RenderOptions, 'initialEntries' | 'providerOptions'>\n): RenderHookResult<Result, Props> => {\n const {\n wrapper: Wrapper = fallbackWrapper,\n initialEntries,\n providerOptions,\n ...restOptions\n } = options ?? {};\n\n return renderHookRTL(hook, {\n wrapper: ({ children }) => (\n <Providers initialEntries={initialEntries} {...providerOptions}>\n <Wrapper>{children}</Wrapper>\n </Providers>\n ),\n ...restOptions,\n });\n};\n\nexport { render, renderHook, waitFor, server, act, screen, fireEvent, defaultTestStoreConfig };\n"],"names":["setLogger","log","warn","error","defaultTestStoreConfig","preloadedState","initialState","reducer","adminApi","reducerPath","admin_app","appReducer","middleware","getDefaultMiddleware","immutableCheck","serializableCheck","DEFAULT_PERMISSIONS","fixtures","permissions","allPermissions","id","action","subject","properties","conditions","actionParameters","Providers","children","initialEntries","storeConfig","queryClient","QueryClient","defaultOptions","queries","retry","store","configureStore","router","createMemoryRouter","path","element","_jsx","StrapiAppProvider","components","rbac","RBAC","widgets","getAll","jest","fn","register","customFields","get","mockReturnValue","name","pluginId","type","icon","intlLabel","defaultMessage","intlDescription","Input","mockResolvedValue","default","fields","menu","getAdminInjectedComponents","getPlugin","plugins","runHookParallel","runHookWaterfall","mockImplementation","_name","initialValue","runHookSeries","settings","Provider","AuthProvider","_defaultPermissions","_disableRenewToken","QueryClientProvider","client","DndProvider","backend","HTML5Backend","LanguageProvider","messages","Theme","themes","dark","darkTheme","light","lightTheme","NotificationsProvider","GuidedTourProvider","ConfigurationContextProvider","showReleaseNotification","logos","auth","updateProjectSettings","AppInfoProvider","autoReload","useYarn","dependencies","strapiVersion","communityEdition","shouldUpdateStrapi","RouterProvider","fallbackWrapper","_Fragment","render","ui","renderOptions","userEventOptions","providerOptions","wrapper","Wrapper","restOptions","renderRTL","user","userEvent","setup","skipHover","renderHook","hook","options","renderHookRTL"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCAA,SAAU,CAAA;AACRC,IAAAA,GAAAA,EAAK,IAAO,EAAA;AACZC,IAAAA,IAAAA,EAAM,IAAO,EAAA;AACbC,IAAAA,KAAAA,EAAO,IAAO;AAChB,CAAA,CAAA;AASMC,MAAAA,sBAAAA,GAAyB,KAAO;QACpCC,cAAgBC,EAAAA,YAAAA,EAAAA;QAChBC,OAAS,EAAA;AACP,YAAA,CAACC,QAASC,CAAAA,WAAW,GAAGD,SAASD,OAAO;YACxCG,SAAWC,EAAAA;AACb,SAAA;;AAEAC,QAAAA,UAAAA,EAAY,CAACC,oBAAyB,GAAA;mBACjCA,oBAAqB,CAAA;;oBAEtBC,cAAgB,EAAA,KAAA;oBAChBC,iBAAmB,EAAA;AACrB,iBAAA,CAAA;AACAP,gBAAAA,QAAAA,CAASI;AACV;KACH;AAEA,MAAMI,mBAAsB,GAAA;OACvBC,QAASC,CAAAA,WAAW,CAACC,cAAc;AACtC,IAAA;QACEC,EAAI,EAAA,GAAA;QACJC,MAAQ,EAAA,mBAAA;QACRC,OAAS,EAAA,IAAA;AACTC,QAAAA,UAAAA,EAAY,EAAC;AACbC,QAAAA,UAAAA,EAAY,EAAE;AACdC,QAAAA,gBAAAA,EAAkB;AACpB;AACD,CAAA;AAED,MAAMC,SAAAA,GAAY,CAAC,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,WAAW,EAAEX,WAAc,GAAA,EAAE,EAAkB,GAAA;IAC5F,MAAMY,WAAAA,GAAc,IAAIC,WAAY,CAAA;QAClCC,cAAgB,EAAA;YACdC,OAAS,EAAA;gBACPC,KAAO,EAAA;AACT;AACF;AACF,KAAA,CAAA;AAEA,IAAA,MAAMC,QAAQC,cAAe,CAAA;AAC3B,QAAA,GAAGhC,sBAAwB,EAAA;AAC3B,QAAA,GAAGyB;AACL,KAAA,CAAA;AAEA,IAAA,MAAMV,cACJ,GAAA,OAAOD,WAAgB,KAAA,UAAA,GACnBA,YAAYF,mBACZ,CAAA,GAAA;AAAIA,QAAAA,GAAAA,mBAAAA;AAAwBE,QAAAA,GAAAA;AAAY,KAAA;AAE9C,IAAA,MAAMmB,SAASC,kBACb,CAAA;AACE,QAAA;YACEC,IAAM,EAAA,IAAA;AACNC,YAAAA,OAAAA,gBACEC,GAACC,CAAAA,iBAAAA,EAAAA;AACCC,gBAAAA,UAAAA,EAAY,EAAC;AACbC,gBAAAA,IAAAA,EAAM,IAAIC,IAAAA,EAAAA;gBACVC,OAAS,EAAA;AACPA,oBAAAA,OAAAA,EAAS,EAAC;AACVC,oBAAAA,MAAAA,EAAQC,KAAKC,EAAE,EAAA;AACfC,oBAAAA,QAAAA,EAAUF,KAAKC,EAAE;AACnB,iBAAA;gBACAE,YAAc,EAAA;AACZA,oBAAAA,YAAAA,EAAc,EAAC;AACfC,oBAAAA,GAAAA,EAAKJ,IAAKC,CAAAA,EAAE,EAAGI,CAAAA,eAAe,CAAC;wBAC7BC,IAAM,EAAA,OAAA;wBACNC,QAAU,EAAA,gBAAA;wBACVC,IAAM,EAAA,MAAA;AACNC,wBAAAA,IAAAA,EAAMT,KAAKC,EAAE,EAAA;wBACbS,SAAW,EAAA;4BACTtC,EAAI,EAAA,4BAAA;4BACJuC,cAAgB,EAAA;AAClB,yBAAA;wBACAC,eAAiB,EAAA;4BACfxC,EAAI,EAAA,kCAAA;4BACJuC,cAAgB,EAAA;AAClB,yBAAA;wBACAhB,UAAY,EAAA;AACVkB,4BAAAA,KAAAA,EAAOb,IAAKC,CAAAA,EAAE,EAAGa,CAAAA,iBAAiB,CAAC;AAAEC,gCAAAA,OAAAA,EAASf,KAAKC,EAAE;AAAG,6BAAA;AAC1D;AACF,qBAAA,CAAA;AACAF,oBAAAA,MAAAA,EAAQC,KAAKC,EAAE,EAAA;AACfC,oBAAAA,QAAAA,EAAUF,KAAKC,EAAE;AACnB,iBAAA;AACAe,gBAAAA,MAAAA,EAAQ,EAAC;AACTC,gBAAAA,IAAAA,EAAM,EAAE;AACRC,gBAAAA,0BAAAA,EAA4BlB,KAAKC,EAAE,EAAA;AACnCkB,gBAAAA,SAAAA,EAAWnB,KAAKC,EAAE,EAAA;AAClBmB,gBAAAA,OAAAA,EAAS,EAAC;AACVC,gBAAAA,eAAAA,EAAiBrB,KAAKC,EAAE,EAAA;AACxBqB,gBAAAA,gBAAAA,EAAkBtB,KAAKC,EAAE,EAAA,CAAGsB,kBAAkB,CAAC,CAACC,OAAOC,YAAiBA,GAAAA,YAAAA,CAAAA;AACxEC,gBAAAA,aAAAA,EAAe1B,KAAKC,EAAE,EAAA;AACtB0B,gBAAAA,QAAAA,EAAU,EAAC;AAEX,gBAAA,QAAA,gBAAAlC,GAACmC,CAAAA,QAAAA,EAAAA;oBAASzC,KAAOA,EAAAA,KAAAA;AACf,oBAAA,QAAA,gBAAAM,GAACoC,CAAAA,YAAAA,EAAAA;wBAAaC,mBAAqB3D,EAAAA,cAAAA;wBAAgB4D,kBAAoB,EAAA,IAAA;AACrE,wBAAA,QAAA,gBAAAtC,GAACuC,CAAAA,mBAAAA,EAAAA;4BAAoBC,MAAQnD,EAAAA,WAAAA;AAC3B,4BAAA,QAAA,gBAAAW,GAACyC,CAAAA,WAAAA,EAAAA;gCAAYC,OAASC,EAAAA,YAAAA;AACpB,gCAAA,QAAA,gBAAA3C,GAAC4C,CAAAA,gBAAAA,EAAAA;AAAiBC,oCAAAA,QAAAA,EAAU,EAAC;AAC3B,oCAAA,QAAA,gBAAA7C,GAAC8C,CAAAA,KAAAA,EAAAA;wCACCC,MAAQ,EAAA;4CACNC,IAAMC,EAAAA,SAAAA;4CACNC,KAAOC,EAAAA;AACT,yCAAA;AAEA,wCAAA,QAAA,gBAAAnD,GAACoD,CAAAA,qBAAAA,EAAAA;AACC,4CAAA,QAAA,gBAAApD,GAACqD,CAAAA,kBAAAA,EAAAA;AACC,gDAAA,QAAA,gBAAArD,GAACsD,CAAAA,4BAAAA,EAAAA;oDACCC,uBAAyB,EAAA,KAAA;oDACzBC,KAAO,EAAA;wDACLC,IAAM,EAAA;4DAAEnC,OAAS,EAAA;AAAU,yDAAA;wDAC3BE,IAAM,EAAA;4DAAEF,OAAS,EAAA;AAAU;AAC7B,qDAAA;AACAoC,oDAAAA,qBAAAA,EAAuBnD,KAAKC,EAAE,EAAA;AAE9B,oDAAA,QAAA,gBAAAR,GAAC2D,CAAAA,eAAAA,EAAAA;wDACCC,UAAU,EAAA,IAAA;wDACVC,OAAO,EAAA,IAAA;wDACPC,YAAc,EAAA;4DACZ,8BAAgC,EAAA,OAAA;4DAChC,oCAAsC,EAAA;AACxC,yDAAA;wDACAC,aAAc,EAAA,OAAA;wDACdC,gBAAgB,EAAA,IAAA;wDAChBC,kBAAoB,EAAA,KAAA;AAEnB/E,wDAAAA,QAAAA,EAAAA;;;;;;;;;;;;AAa3B;KACD,EACD;AACEC,QAAAA;AACF,KAAA,CAAA;;AAIF,IAAA,qBAAOa,GAACkE,CAAAA,cAAAA,EAAAA;QAAetE,MAAQA,EAAAA;;AACjC,CAAA;AAEA;AACA,MAAMuE,eAAkB,GAAA,CAAC,EAAEjF,QAAQ,EAAiC,iBAAKc,GAAA,CAAAoE,QAAA,EAAA;AAAGlF,QAAAA,QAAAA,EAAAA;;AAS5E;;;;AAIC,IACKmF,MAAAA,MAAAA,GAAS,CACbC,EAAAA,EACA,EAAEC,aAAa,EAAEC,gBAAgB,EAAErF,cAAc,EAAEsF,eAAe,EAAiB,GAAG,EAAE,GAAA;IAExF,MAAM,EAAEC,SAASC,OAAUR,GAAAA,eAAe,EAAE,GAAGS,WAAAA,EAAa,GAAGL,aAAAA,IAAiB,EAAC;IAEjF,OAAO;AACL,QAAA,GAAGM,SAAUP,EAAI,EAAA;AACfI,YAAAA,OAAAA,EAAS,CAAC,EAAExF,QAAQ,EAAE,iBACpBc,GAACf,CAAAA,SAAAA,EAAAA;oBAAUE,cAAgBA,EAAAA,cAAAA;AAAiB,oBAAA,GAAGsF,eAAe;AAC5D,oBAAA,QAAA,gBAAAzE,GAAC2E,CAAAA,OAAAA,EAAAA;AAASzF,wBAAAA,QAAAA,EAAAA;;;AAGd,YAAA,GAAG0F;SACH,CAAA;QACFE,IAAMC,EAAAA,SAAAA,CAAUC,KAAK,CAAC;YACpBC,SAAW,EAAA,IAAA;AACX,YAAA,GAAGT;AACL,SAAA;AACF,KAAA;AACF;AAEA;;;;IAKA,MAAMU,UAAa,GAAA,CAOjBC,IACAC,EAAAA,OAAAA,GAAAA;AAGA,IAAA,MAAM,EACJV,OAAAA,EAASC,OAAUR,GAAAA,eAAe,EAClChF,cAAc,EACdsF,eAAe,EACf,GAAGG,WACJ,EAAA,GAAGQ,WAAW,EAAC;AAEhB,IAAA,OAAOC,aAAcF,IAAM,EAAA;AACzBT,QAAAA,OAAAA,EAAS,CAAC,EAAExF,QAAQ,EAAE,iBACpBc,GAACf,CAAAA,SAAAA,EAAAA;gBAAUE,cAAgBA,EAAAA,cAAAA;AAAiB,gBAAA,GAAGsF,eAAe;AAC5D,gBAAA,QAAA,gBAAAzE,GAAC2E,CAAAA,OAAAA,EAAAA;AAASzF,oBAAAA,QAAAA,EAAAA;;;AAGd,QAAA,GAAG0F;AACL,KAAA,CAAA;AACF;;;;"}
|
package/dist/admin/index.js
CHANGED
|
@@ -9,6 +9,7 @@ var Filters = require('./admin/src/components/Filters.js');
|
|
|
9
9
|
var Form = require('./admin/src/components/Form.js');
|
|
10
10
|
var Renderer = require('./admin/src/components/FormInputs/Renderer.js');
|
|
11
11
|
var PageHelpers = require('./admin/src/components/PageHelpers.js');
|
|
12
|
+
var WidgetHelpers = require('./admin/src/components/WidgetHelpers.js');
|
|
12
13
|
var Pagination = require('./admin/src/components/Pagination.js');
|
|
13
14
|
var SearchInput = require('./admin/src/components/SearchInput.js');
|
|
14
15
|
var Table = require('./admin/src/components/Table.js');
|
|
@@ -50,6 +51,7 @@ exports.useField = Form.useField;
|
|
|
50
51
|
exports.useForm = Form.useForm;
|
|
51
52
|
exports.InputRenderer = Renderer.InputRenderer;
|
|
52
53
|
exports.Page = PageHelpers.Page;
|
|
54
|
+
exports.Widget = WidgetHelpers.Widget;
|
|
53
55
|
exports.Pagination = Pagination.Pagination;
|
|
54
56
|
exports.SearchInput = SearchInput.SearchInput;
|
|
55
57
|
exports.Table = Table.Table;
|
package/dist/admin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/admin/index.mjs
CHANGED
|
@@ -7,6 +7,7 @@ export { Filters } from './admin/src/components/Filters.mjs';
|
|
|
7
7
|
export { Blocker, Form, getYupValidationErrors, useField, useForm } from './admin/src/components/Form.mjs';
|
|
8
8
|
export { InputRenderer } from './admin/src/components/FormInputs/Renderer.mjs';
|
|
9
9
|
export { Page } from './admin/src/components/PageHelpers.mjs';
|
|
10
|
+
export { Widget } from './admin/src/components/WidgetHelpers.mjs';
|
|
10
11
|
export { Pagination } from './admin/src/components/Pagination.mjs';
|
|
11
12
|
export { SearchInput } from './admin/src/components/SearchInput.mjs';
|
|
12
13
|
export { Table, useTable } from './admin/src/components/Table.mjs';
|
package/dist/admin/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,6 +4,7 @@ import { CustomFields } from './core/apis/CustomFields';
|
|
|
4
4
|
import { Plugin, PluginConfig } from './core/apis/Plugin';
|
|
5
5
|
import { RBAC, RBACMiddleware } from './core/apis/rbac';
|
|
6
6
|
import { Router, StrapiAppSetting, UnloadedSettingsLink } from './core/apis/router';
|
|
7
|
+
import { Widgets } from './core/apis/Widgets';
|
|
7
8
|
import { RootState, Store } from './core/store/configure';
|
|
8
9
|
import { Handler, createHook } from './core/utils/createHook';
|
|
9
10
|
import type { ReducersMapObject, Middleware } from '@reduxjs/toolkit';
|
|
@@ -94,6 +95,7 @@ declare class StrapiApp {
|
|
|
94
95
|
reducers: ReducersMapObject;
|
|
95
96
|
store: Store | null;
|
|
96
97
|
customFields: CustomFields;
|
|
98
|
+
widgets: Widgets;
|
|
97
99
|
constructor({ config, appPlugins }?: StrapiAppConstructorArgs);
|
|
98
100
|
addComponents: (components: Component | Component[]) => void;
|
|
99
101
|
addFields: (fields: Field | Field[]) => void;
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { type MessageDescriptor } from 'react-intl';
|
|
3
|
-
interface RootProps {
|
|
4
|
-
title: MessageDescriptor;
|
|
5
|
-
icon?: typeof import('@strapi/icons').PuzzlePiece;
|
|
6
|
-
children: React.ReactNode;
|
|
7
|
-
}
|
|
8
1
|
interface LoadingProps {
|
|
9
2
|
children?: string;
|
|
10
3
|
}
|
|
@@ -14,10 +7,13 @@ interface ErrorProps {
|
|
|
14
7
|
interface NoDataProps {
|
|
15
8
|
children?: string;
|
|
16
9
|
}
|
|
10
|
+
interface NoPermissionsProps {
|
|
11
|
+
children?: string;
|
|
12
|
+
}
|
|
17
13
|
declare const Widget: {
|
|
18
|
-
Root: ({ title, icon, children }: RootProps) => import("react/jsx-runtime").JSX.Element;
|
|
19
14
|
Loading: ({ children }: LoadingProps) => import("react/jsx-runtime").JSX.Element;
|
|
20
15
|
Error: ({ children }: ErrorProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
16
|
NoData: ({ children }: NoDataProps) => import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
NoPermissions: ({ children }: NoPermissionsProps) => import("react/jsx-runtime").JSX.Element;
|
|
22
18
|
};
|
|
23
19
|
export { Widget };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { To } from 'react-router-dom';
|
|
3
|
+
import { Permission } from '../../../../shared/contracts/shared';
|
|
4
|
+
import type { Internal, Utils } from '@strapi/types';
|
|
5
|
+
import type { MessageDescriptor } from 'react-intl';
|
|
6
|
+
type WidgetUID = Utils.String.Suffix<Internal.Namespace.WithSeparator<Internal.Namespace.Plugin> | Internal.Namespace.WithSeparator<Internal.Namespace.Global>, string>;
|
|
7
|
+
type WidgetArgs = {
|
|
8
|
+
icon?: typeof import('@strapi/icons').PuzzlePiece;
|
|
9
|
+
title: MessageDescriptor;
|
|
10
|
+
link?: {
|
|
11
|
+
label: MessageDescriptor;
|
|
12
|
+
href: To;
|
|
13
|
+
};
|
|
14
|
+
component: () => Promise<React.ComponentType>;
|
|
15
|
+
pluginId?: string;
|
|
16
|
+
id: string;
|
|
17
|
+
permissions?: Permission[];
|
|
18
|
+
};
|
|
19
|
+
type Widget = Omit<WidgetArgs, 'id' | 'pluginId'> & {
|
|
20
|
+
uid: WidgetUID;
|
|
21
|
+
};
|
|
22
|
+
declare class Widgets {
|
|
23
|
+
widgets: Record<string, Widget>;
|
|
24
|
+
constructor();
|
|
25
|
+
register: (widget: WidgetArgs | WidgetArgs[]) => void;
|
|
26
|
+
getAll: () => Widget[];
|
|
27
|
+
}
|
|
28
|
+
export { Widgets };
|
|
29
|
+
export type { WidgetArgs };
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { RBAC } from '../core/apis/rbac';
|
|
3
3
|
import { Router } from '../core/apis/router';
|
|
4
4
|
import type { StrapiApp } from '../StrapiApp';
|
|
5
|
-
interface StrapiAppContextValue extends Pick<StrapiApp, 'customFields' | 'getPlugin' | 'getAdminInjectedComponents' | 'plugins' | 'runHookParallel' | 'runHookSeries'>, Pick<Router, 'menu' | 'settings'> {
|
|
5
|
+
interface StrapiAppContextValue extends Pick<StrapiApp, 'customFields' | 'getPlugin' | 'getAdminInjectedComponents' | 'plugins' | 'runHookParallel' | 'runHookSeries' | 'widgets'>, Pick<Router, 'menu' | 'settings'> {
|
|
6
6
|
components: StrapiApp['library']['components'];
|
|
7
7
|
fields: StrapiApp['library']['fields'];
|
|
8
8
|
rbac: RBAC;
|
|
@@ -15,6 +15,7 @@ export * from './components/Filters';
|
|
|
15
15
|
export * from './components/Form';
|
|
16
16
|
export * from './components/FormInputs/Renderer';
|
|
17
17
|
export * from './components/PageHelpers';
|
|
18
|
+
export * from './components/WidgetHelpers';
|
|
18
19
|
export * from './components/Pagination';
|
|
19
20
|
export * from './components/SearchInput';
|
|
20
21
|
export * from './components/Table';
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { MessageDescriptor } from 'react-intl';
|
|
3
|
+
interface RootProps {
|
|
4
|
+
title: MessageDescriptor;
|
|
5
|
+
icon?: typeof import('@strapi/icons').PuzzlePiece;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare const WidgetRoot: ({ title, icon, children }: RootProps) => import("react/jsx-runtime").JSX.Element;
|
|
1
9
|
declare const HomePageCE: () => import("react/jsx-runtime").JSX.Element;
|
|
2
10
|
declare const HomePage: () => import("react/jsx-runtime").JSX.Element | null;
|
|
3
11
|
export { HomePage, HomePageCE };
|