@strapi/content-type-builder 5.18.1 → 5.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +0 -3
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +1 -4
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js +8 -6
- package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +8 -6
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
- package/dist/admin/pages/App/index.js +0 -7
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs +2 -9
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/pages/ListView/EmptyState.js +1 -1
- package/dist/admin/pages/ListView/EmptyState.js.map +1 -1
- package/dist/admin/pages/ListView/EmptyState.mjs +2 -2
- package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListView.js +5 -0
- package/dist/admin/pages/ListView/ListView.js.map +1 -1
- package/dist/admin/pages/ListView/ListView.mjs +7 -2
- package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
- package/dist/server/controllers/validation/schema.js +4 -2
- package/dist/server/controllers/validation/schema.js.map +1 -1
- package/dist/server/controllers/validation/schema.mjs +3 -3
- package/dist/server/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/routes/content-api.js +191 -25
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs +172 -25
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/src/controllers/validation/schema.d.ts +2774 -3828
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +1 -8
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/content-api.d.ts +2 -8
- package/dist/server/src/routes/content-api.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +1 -8
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionForm.js","sources":["../../../../../admin/src/components/FormModal/attributes/ConditionForm.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useState } from 'react';\n\nimport { createRulesEngine, ConfirmDialog, type Condition } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n Field,\n SingleSelect,\n SingleSelectOption,\n Dialog,\n} from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { AttributeIcon } from '../../../components/AttributeIcon';\nimport { getTrad } from '../../../utils/getTrad';\nimport { ApplyConditionButton } from '../../ApplyConditionButton';\n\nconst SmallAttributeIcon = styled(AttributeIcon)`\n width: 16px !important;\n height: 16px !important;\n svg {\n width: 16px !important;\n height: 16px !important;\n }\n`;\n\ninterface ConditionFormProps {\n name: string;\n value: any;\n onChange: (e: { target: { name: string; value: any } }) => void;\n onDelete: () => void;\n attributeName?: string;\n conditionFields?: Array<{\n name: string;\n type: string;\n enum?: string[];\n }>;\n allAttributes?: Array<{\n name: string;\n type: string;\n }>;\n}\n\ninterface JsonLogicValue {\n visible?: {\n [key: string]: [{ var: string }, any];\n };\n}\n\ninterface LocalValue {\n dependsOn: string;\n operator: 'is' | 'isNot';\n value: string | boolean;\n action: 'show' | 'hide';\n}\n\nconst convertFromJsonLogic = (jsonLogic: JsonLogicValue): LocalValue => {\n if (!jsonLogic?.visible) {\n return {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n }\n\n const [[operator, conditions]] = Object.entries(jsonLogic.visible);\n const [fieldVar, value] = conditions as [{ var: string }, any];\n\n return {\n dependsOn: fieldVar.var,\n operator: operator === '==' ? 'is' : 'isNot',\n value: value,\n action: operator === '==' ? 'show' : 'hide',\n };\n};\n\nconst convertToJsonLogic = (value: LocalValue): JsonLogicValue | null => {\n if (!value.dependsOn) {\n return null;\n }\n\n const rulesEngine = createRulesEngine();\n const condition: Condition = {\n dependsOn: value.dependsOn,\n operator: value.operator,\n value: value.value,\n };\n\n try {\n rulesEngine.validate(condition);\n const action = value.action === 'show' ? '==' : '!=';\n return {\n visible: {\n [action]: [{ var: value.dependsOn }, value.value],\n },\n };\n } catch (error) {\n return null;\n }\n};\n\nexport const ConditionForm = ({\n name,\n value,\n onChange,\n onDelete,\n attributeName,\n conditionFields = [],\n}: ConditionFormProps) => {\n const { formatMessage } = useIntl();\n const [localValue, setLocalValue] = React.useState<LocalValue>(convertFromJsonLogic(value));\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n const hasCondition = Boolean(value?.visible);\n\n // Add safety check for conditionFields\n if (!Array.isArray(conditionFields)) {\n conditionFields = [];\n }\n\n const selectedField = conditionFields.find((field) => field.name === localValue.dependsOn);\n const isEnumField = selectedField?.type === 'enumeration';\n\n // Helper to update localValue and propagate JSON Logic\n const updateCondition = (updatedValue: LocalValue) => {\n setLocalValue(updatedValue);\n const rulesEngine = createRulesEngine();\n const condition: Condition = {\n dependsOn: updatedValue.dependsOn,\n operator: updatedValue.operator,\n value: updatedValue.value,\n };\n try {\n rulesEngine.validate(condition);\n const action = updatedValue.action === 'show' ? '==' : '!=';\n const jsonLogic = updatedValue.dependsOn\n ? {\n visible: {\n [action]: [{ var: updatedValue.dependsOn }, updatedValue.value],\n },\n }\n : null;\n if (jsonLogic) {\n onChange({\n target: {\n name,\n value: jsonLogic,\n },\n });\n }\n } catch {\n // Do nothing if invalid\n }\n };\n\n const handleApplyCondition = () => {\n const initialValue: LocalValue = {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n setLocalValue(initialValue);\n onChange({\n target: {\n name,\n value: convertToJsonLogic(initialValue),\n },\n });\n };\n\n const handleDelete = () => {\n setLocalValue({\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n });\n onChange({\n target: {\n name,\n value: null,\n },\n });\n onDelete();\n setShowConfirmDialog(false);\n };\n\n const handleFieldChange = (fieldName: string | number) => {\n const newValue = fieldName?.toString() || '';\n const field = conditionFields.find((f) => f.name === newValue);\n const isNewFieldEnum = field?.type === 'enumeration';\n const updatedValue: LocalValue = {\n ...localValue,\n dependsOn: newValue,\n value: newValue ? (isNewFieldEnum ? '' : false) : localValue.value,\n };\n updateCondition(updatedValue);\n };\n\n const handleOperatorChange = (operator: string | number) => {\n const newValue = operator?.toString() || 'is';\n const updatedValue: LocalValue = {\n ...localValue,\n operator: newValue as 'is' | 'isNot',\n };\n updateCondition(updatedValue);\n };\n\n const handleValueChange = (newValue: string | number) => {\n const value = isEnumField ? newValue?.toString() : newValue?.toString() === 'true';\n const updatedValue: LocalValue = { ...localValue, value };\n updateCondition(updatedValue);\n };\n\n const handleActionChange = (action: string | number) => {\n const newValue = action?.toString() || 'show';\n const updatedValue: LocalValue = {\n ...localValue,\n action: newValue as 'show' | 'hide',\n };\n updateCondition(updatedValue);\n };\n\n if (!hasCondition) {\n return (\n <Box padding={4} margin={4} hasRadius background=\"neutral0\" borderColor=\"neutral200\">\n <ApplyConditionButton onClick={handleApplyCondition} />\n </Box>\n );\n }\n\n return (\n <Box marginTop={2}>\n <Box\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n borderWidth={0.5}\n borderStyle=\"solid\"\n >\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Typography variant=\"sigma\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('form.attribute.condition.title'),\n defaultMessage: 'Condition for {name}',\n },\n {\n name: <strong>{attributeName}</strong>,\n }\n )}\n </Typography>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <IconButton label=\"Delete\">\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleDelete}>\n {formatMessage({\n id: getTrad('popUpWarning.bodyMessage.delete-condition'),\n defaultMessage: 'Are you sure you want to delete this condition?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </Flex>\n\n <Box background=\"neutral100\" padding={4}>\n <Box paddingBottom={2}>\n <Typography\n variant=\"sigma\"\n textColor=\"neutral600\"\n style={{ textTransform: 'uppercase', letterSpacing: 1 }}\n >\n {formatMessage({ id: getTrad('form.attribute.condition.if'), defaultMessage: 'IF' })}\n </Typography>\n </Box>\n <Flex gap={4}>\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.field`}>\n <SingleSelect\n value={localValue.dependsOn}\n onChange={handleFieldChange}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.field'),\n defaultMessage: 'field',\n })}\n >\n {conditionFields.map((field) => (\n <SingleSelectOption key={field.name} value={field.name}>\n <Flex gap={2} alignItems=\"center\">\n <SmallAttributeIcon type={field.type} />\n <span>{field.name}</span>\n </Flex>\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.operator`}>\n <SingleSelect\n value={localValue.operator}\n onChange={handleOperatorChange}\n disabled={!localValue.dependsOn}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.operator'),\n defaultMessage: 'condition',\n })}\n >\n <SingleSelectOption value=\"is\">\n {formatMessage({\n id: getTrad('form.attribute.condition.operator.is'),\n defaultMessage: 'is',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"isNot\">\n {formatMessage({\n id: getTrad('form.attribute.condition.operator.isNot'),\n defaultMessage: 'is not',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Box>\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.value`}>\n <SingleSelect\n value={localValue.value?.toString() || ''}\n onChange={handleValueChange}\n disabled={!localValue.dependsOn}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.value'),\n defaultMessage: 'value',\n })}\n >\n {isEnumField && selectedField?.enum ? (\n selectedField.enum.map((enumValue) => (\n <SingleSelectOption key={enumValue} value={enumValue}>\n {enumValue}\n </SingleSelectOption>\n ))\n ) : (\n <>\n <SingleSelectOption value=\"true\">\n {formatMessage({\n id: getTrad('form.attribute.condition.value.true'),\n defaultMessage: 'true',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"false\">\n {formatMessage({\n id: getTrad('form.attribute.condition.value.false'),\n defaultMessage: 'false',\n })}\n </SingleSelectOption>\n </>\n )}\n </SingleSelect>\n </Field.Root>\n </Box>\n </Flex>\n </Box>\n\n <Box background=\"neutral100\" padding={4}>\n <Box paddingBottom={4}>\n <Typography\n variant=\"sigma\"\n textColor=\"neutral600\"\n style={{ textTransform: 'uppercase', letterSpacing: 1 }}\n >\n {formatMessage({\n id: getTrad('form.attribute.condition.then'),\n defaultMessage: 'THEN',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={4}>\n <Field.Root name={`${name}.action`}>\n <SingleSelect\n value={localValue.action}\n onChange={handleActionChange}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.action'),\n defaultMessage: 'action',\n })}\n >\n <SingleSelectOption value=\"show\">\n Show <span style={{ fontWeight: 'bold' }}>{attributeName || name}</span>\n </SingleSelectOption>\n <SingleSelectOption value=\"hide\">\n Hide <span style={{ fontWeight: 'bold' }}>{attributeName || name}</span>\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Box>\n </Box>\n </Box>\n </Box>\n );\n};\n"],"names":["SmallAttributeIcon","styled","AttributeIcon","convertFromJsonLogic","jsonLogic","visible","dependsOn","operator","value","action","conditions","Object","entries","fieldVar","var","convertToJsonLogic","rulesEngine","createRulesEngine","condition","validate","error","ConditionForm","name","onChange","onDelete","attributeName","conditionFields","formatMessage","useIntl","localValue","setLocalValue","React","useState","showConfirmDialog","setShowConfirmDialog","hasCondition","Boolean","Array","isArray","selectedField","find","field","isEnumField","type","updateCondition","updatedValue","target","handleApplyCondition","initialValue","handleDelete","handleFieldChange","fieldName","newValue","toString","f","isNewFieldEnum","handleOperatorChange","handleValueChange","handleActionChange","_jsx","Box","padding","margin","hasRadius","background","borderColor","ApplyConditionButton","onClick","marginTop","_jsxs","borderWidth","borderStyle","Flex","justifyContent","alignItems","Typography","variant","textColor","id","getTrad","defaultMessage","strong","Dialog","Root","open","onOpenChange","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","paddingBottom","style","textTransform","letterSpacing","gap","minWidth","flex","Field","SingleSelect","placeholder","map","SingleSelectOption","span","disabled","enum","enumValue","_Fragment","fontWeight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConditionForm.js","sources":["../../../../../admin/src/components/FormModal/attributes/ConditionForm.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useState } from 'react';\n\nimport { createRulesEngine, ConfirmDialog, type Condition } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n Field,\n SingleSelect,\n SingleSelectOption,\n Dialog,\n} from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { AttributeIcon } from '../../../components/AttributeIcon';\nimport { getTrad } from '../../../utils/getTrad';\nimport { ApplyConditionButton } from '../../ApplyConditionButton';\n\nconst SmallAttributeIcon = styled(AttributeIcon)`\n width: 16px !important;\n height: 16px !important;\n svg {\n width: 16px !important;\n height: 16px !important;\n }\n`;\n\ninterface ConditionFormProps {\n name: string;\n value: any;\n onChange: (e: { target: { name: string; value: any } }) => void;\n onDelete: () => void;\n attributeName?: string;\n conditionFields?: Array<{\n name: string;\n type: string;\n enum?: string[];\n }>;\n allAttributes?: Array<{\n name: string;\n type: string;\n }>;\n}\n\ninterface JsonLogicValue {\n visible?: {\n [key: string]: [{ var: string }, any];\n };\n}\n\ninterface LocalValue {\n dependsOn: string;\n operator: 'is' | 'isNot';\n value: string | boolean;\n action: 'show' | 'hide';\n}\n\nconst convertFromJsonLogic = (jsonLogic: JsonLogicValue): LocalValue => {\n if (!jsonLogic?.visible) {\n return {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n }\n\n const [[operator, conditions]] = Object.entries(jsonLogic.visible);\n const [fieldVar, value] = conditions as [{ var: string }, any];\n\n // Assume 'visible' implies 'show' for now; adjust if backend uses 'hidden' key\n return {\n dependsOn: fieldVar.var,\n operator: operator === '==' ? 'is' : 'isNot',\n value: value,\n action: 'show', // Default to 'show' for 'visible'; adjust based on backend logic\n };\n};\n\nconst convertToJsonLogic = (value: LocalValue): JsonLogicValue | null => {\n if (!value.dependsOn) {\n return null;\n }\n\n const rulesEngine = createRulesEngine();\n const condition: Condition = {\n dependsOn: value.dependsOn,\n operator: value.operator,\n value: value.value,\n };\n\n try {\n rulesEngine.validate(condition);\n // Determine JSON Logic operator based on operator and action\n const operator =\n (value.operator === 'is' && value.action === 'show') ||\n (value.operator === 'isNot' && value.action === 'hide')\n ? '=='\n : '!=';\n return {\n visible: {\n [operator]: [{ var: value.dependsOn }, value.value],\n },\n };\n } catch (error) {\n return null;\n }\n};\n\nexport const ConditionForm = ({\n name,\n value,\n onChange,\n onDelete,\n attributeName,\n conditionFields = [],\n}: ConditionFormProps) => {\n const { formatMessage } = useIntl();\n const [localValue, setLocalValue] = React.useState<LocalValue>(convertFromJsonLogic(value));\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n const hasCondition = Boolean(value?.visible);\n\n // Add safety check for conditionFields\n if (!Array.isArray(conditionFields)) {\n conditionFields = [];\n }\n\n const selectedField = conditionFields.find((field) => field.name === localValue.dependsOn);\n const isEnumField = selectedField?.type === 'enumeration';\n\n // Helper to update localValue and propagate JSON Logic\n const updateCondition = (updatedValue: LocalValue) => {\n setLocalValue(updatedValue);\n const rulesEngine = createRulesEngine();\n const condition: Condition = {\n dependsOn: updatedValue.dependsOn,\n operator: updatedValue.operator,\n value: updatedValue.value,\n };\n try {\n rulesEngine.validate(condition);\n const operator =\n (updatedValue.operator === 'is' && updatedValue.action === 'show') ||\n (updatedValue.operator === 'isNot' && updatedValue.action === 'hide')\n ? '=='\n : '!=';\n const jsonLogic = updatedValue.dependsOn\n ? {\n visible: {\n [operator]: [{ var: updatedValue.dependsOn }, updatedValue.value],\n },\n }\n : null;\n if (jsonLogic) {\n onChange({\n target: {\n name,\n value: jsonLogic,\n },\n });\n }\n } catch {\n // Optionally, show an error to the user\n }\n };\n\n const handleApplyCondition = () => {\n const initialValue: LocalValue = {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n setLocalValue(initialValue);\n onChange({\n target: {\n name,\n value: convertToJsonLogic(initialValue),\n },\n });\n };\n\n const handleDelete = () => {\n setLocalValue({\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n });\n onChange({\n target: {\n name,\n value: null,\n },\n });\n onDelete();\n setShowConfirmDialog(false);\n };\n\n const handleFieldChange = (fieldName: string | number) => {\n const newValue = fieldName?.toString() || '';\n const field = conditionFields.find((f) => f.name === newValue);\n const isNewFieldEnum = field?.type === 'enumeration';\n const updatedValue: LocalValue = {\n ...localValue,\n dependsOn: newValue,\n value: newValue ? (isNewFieldEnum ? '' : false) : localValue.value,\n };\n updateCondition(updatedValue);\n };\n\n const handleOperatorChange = (operator: string | number) => {\n const newValue = operator?.toString() || 'is';\n const updatedValue: LocalValue = {\n ...localValue,\n operator: newValue as 'is' | 'isNot',\n };\n updateCondition(updatedValue);\n };\n\n const handleValueChange = (newValue: string | number) => {\n const value = isEnumField ? newValue?.toString() : newValue?.toString() === 'true';\n const updatedValue: LocalValue = { ...localValue, value };\n updateCondition(updatedValue);\n };\n\n const handleActionChange = (action: string | number) => {\n const newValue = action?.toString() || 'show';\n const updatedValue: LocalValue = {\n ...localValue,\n action: newValue as 'show' | 'hide',\n };\n updateCondition(updatedValue);\n };\n\n if (!hasCondition) {\n return (\n <Box padding={4} margin={4} hasRadius background=\"neutral0\" borderColor=\"neutral200\">\n <ApplyConditionButton onClick={handleApplyCondition} />\n </Box>\n );\n }\n\n return (\n <Box marginTop={2}>\n <Box\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n borderWidth={0.5}\n borderStyle=\"solid\"\n >\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Typography variant=\"sigma\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('form.attribute.condition.title'),\n defaultMessage: 'Condition for {name}',\n },\n {\n name: <strong>{attributeName}</strong>,\n }\n )}\n </Typography>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <IconButton label=\"Delete\">\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleDelete}>\n {formatMessage({\n id: getTrad('popUpWarning.bodyMessage.delete-condition'),\n defaultMessage: 'Are you sure you want to delete this condition?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </Flex>\n\n <Box background=\"neutral100\" padding={4}>\n <Box paddingBottom={2}>\n <Typography\n variant=\"sigma\"\n textColor=\"neutral600\"\n style={{ textTransform: 'uppercase', letterSpacing: 1 }}\n >\n {formatMessage({ id: getTrad('form.attribute.condition.if'), defaultMessage: 'IF' })}\n </Typography>\n </Box>\n <Flex gap={4}>\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.field`}>\n <SingleSelect\n value={localValue.dependsOn}\n onChange={handleFieldChange}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.field'),\n defaultMessage: 'field',\n })}\n >\n {conditionFields.map((field) => (\n <SingleSelectOption key={field.name} value={field.name}>\n <Flex gap={2} alignItems=\"center\">\n <SmallAttributeIcon type={field.type} />\n <span>{field.name}</span>\n </Flex>\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.operator`}>\n <SingleSelect\n value={localValue.operator}\n onChange={handleOperatorChange}\n disabled={!localValue.dependsOn}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.operator'),\n defaultMessage: 'condition',\n })}\n >\n <SingleSelectOption value=\"is\">\n {formatMessage({\n id: getTrad('form.attribute.condition.operator.is'),\n defaultMessage: 'is',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"isNot\">\n {formatMessage({\n id: getTrad('form.attribute.condition.operator.isNot'),\n defaultMessage: 'is not',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Box>\n\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.value`}>\n <SingleSelect\n value={localValue.value?.toString() || ''}\n onChange={handleValueChange}\n disabled={!localValue.dependsOn}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.value'),\n defaultMessage: 'value',\n })}\n >\n {isEnumField && selectedField?.enum ? (\n selectedField.enum.map((enumValue) => (\n <SingleSelectOption key={enumValue} value={enumValue}>\n {enumValue}\n </SingleSelectOption>\n ))\n ) : (\n <>\n <SingleSelectOption value=\"true\">\n {formatMessage({\n id: getTrad('form.attribute.condition.value.true'),\n defaultMessage: 'true',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"false\">\n {formatMessage({\n id: getTrad('form.attribute.condition.value.false'),\n defaultMessage: 'false',\n })}\n </SingleSelectOption>\n </>\n )}\n </SingleSelect>\n </Field.Root>\n </Box>\n </Flex>\n </Box>\n\n <Box background=\"neutral100\" padding={4}>\n <Box paddingBottom={4}>\n <Typography\n variant=\"sigma\"\n textColor=\"neutral600\"\n style={{ textTransform: 'uppercase', letterSpacing: 1 }}\n >\n {formatMessage({\n id: getTrad('form.attribute.condition.then'),\n defaultMessage: 'THEN',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={4}>\n <Field.Root name={`${name}.action`}>\n <SingleSelect\n value={localValue.action}\n onChange={handleActionChange}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.action'),\n defaultMessage: 'action',\n })}\n >\n <SingleSelectOption value=\"show\">\n Show <span style={{ fontWeight: 'bold' }}>{attributeName || name}</span>\n </SingleSelectOption>\n <SingleSelectOption value=\"hide\">\n Hide <span style={{ fontWeight: 'bold' }}>{attributeName || name}</span>\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Box>\n </Box>\n </Box>\n </Box>\n );\n};\n"],"names":["SmallAttributeIcon","styled","AttributeIcon","convertFromJsonLogic","jsonLogic","visible","dependsOn","operator","value","action","conditions","Object","entries","fieldVar","var","convertToJsonLogic","rulesEngine","createRulesEngine","condition","validate","error","ConditionForm","name","onChange","onDelete","attributeName","conditionFields","formatMessage","useIntl","localValue","setLocalValue","React","useState","showConfirmDialog","setShowConfirmDialog","hasCondition","Boolean","Array","isArray","selectedField","find","field","isEnumField","type","updateCondition","updatedValue","target","handleApplyCondition","initialValue","handleDelete","handleFieldChange","fieldName","newValue","toString","f","isNewFieldEnum","handleOperatorChange","handleValueChange","handleActionChange","_jsx","Box","padding","margin","hasRadius","background","borderColor","ApplyConditionButton","onClick","marginTop","_jsxs","borderWidth","borderStyle","Flex","justifyContent","alignItems","Typography","variant","textColor","id","getTrad","defaultMessage","strong","Dialog","Root","open","onOpenChange","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","paddingBottom","style","textTransform","letterSpacing","gap","minWidth","flex","Field","SingleSelect","placeholder","map","SingleSelectOption","span","disabled","enum","enumValue","_Fragment","fontWeight"],"mappings":"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"}
|
|
@@ -29,11 +29,12 @@ const convertFromJsonLogic = (jsonLogic)=>{
|
|
|
29
29
|
}
|
|
30
30
|
const [[operator, conditions]] = Object.entries(jsonLogic.visible);
|
|
31
31
|
const [fieldVar, value] = conditions;
|
|
32
|
+
// Assume 'visible' implies 'show' for now; adjust if backend uses 'hidden' key
|
|
32
33
|
return {
|
|
33
34
|
dependsOn: fieldVar.var,
|
|
34
35
|
operator: operator === '==' ? 'is' : 'isNot',
|
|
35
36
|
value: value,
|
|
36
|
-
action:
|
|
37
|
+
action: 'show'
|
|
37
38
|
};
|
|
38
39
|
};
|
|
39
40
|
const convertToJsonLogic = (value)=>{
|
|
@@ -48,10 +49,11 @@ const convertToJsonLogic = (value)=>{
|
|
|
48
49
|
};
|
|
49
50
|
try {
|
|
50
51
|
rulesEngine.validate(condition);
|
|
51
|
-
|
|
52
|
+
// Determine JSON Logic operator based on operator and action
|
|
53
|
+
const operator = value.operator === 'is' && value.action === 'show' || value.operator === 'isNot' && value.action === 'hide' ? '==' : '!=';
|
|
52
54
|
return {
|
|
53
55
|
visible: {
|
|
54
|
-
[
|
|
56
|
+
[operator]: [
|
|
55
57
|
{
|
|
56
58
|
var: value.dependsOn
|
|
57
59
|
},
|
|
@@ -85,10 +87,10 @@ const ConditionForm = ({ name, value, onChange, onDelete, attributeName, conditi
|
|
|
85
87
|
};
|
|
86
88
|
try {
|
|
87
89
|
rulesEngine.validate(condition);
|
|
88
|
-
const
|
|
90
|
+
const operator = updatedValue.operator === 'is' && updatedValue.action === 'show' || updatedValue.operator === 'isNot' && updatedValue.action === 'hide' ? '==' : '!=';
|
|
89
91
|
const jsonLogic = updatedValue.dependsOn ? {
|
|
90
92
|
visible: {
|
|
91
|
-
[
|
|
93
|
+
[operator]: [
|
|
92
94
|
{
|
|
93
95
|
var: updatedValue.dependsOn
|
|
94
96
|
},
|
|
@@ -105,7 +107,7 @@ const ConditionForm = ({ name, value, onChange, onDelete, attributeName, conditi
|
|
|
105
107
|
});
|
|
106
108
|
}
|
|
107
109
|
} catch {
|
|
108
|
-
//
|
|
110
|
+
// Optionally, show an error to the user
|
|
109
111
|
}
|
|
110
112
|
};
|
|
111
113
|
const handleApplyCondition = ()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionForm.mjs","sources":["../../../../../admin/src/components/FormModal/attributes/ConditionForm.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useState } from 'react';\n\nimport { createRulesEngine, ConfirmDialog, type Condition } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n Field,\n SingleSelect,\n SingleSelectOption,\n Dialog,\n} from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { AttributeIcon } from '../../../components/AttributeIcon';\nimport { getTrad } from '../../../utils/getTrad';\nimport { ApplyConditionButton } from '../../ApplyConditionButton';\n\nconst SmallAttributeIcon = styled(AttributeIcon)`\n width: 16px !important;\n height: 16px !important;\n svg {\n width: 16px !important;\n height: 16px !important;\n }\n`;\n\ninterface ConditionFormProps {\n name: string;\n value: any;\n onChange: (e: { target: { name: string; value: any } }) => void;\n onDelete: () => void;\n attributeName?: string;\n conditionFields?: Array<{\n name: string;\n type: string;\n enum?: string[];\n }>;\n allAttributes?: Array<{\n name: string;\n type: string;\n }>;\n}\n\ninterface JsonLogicValue {\n visible?: {\n [key: string]: [{ var: string }, any];\n };\n}\n\ninterface LocalValue {\n dependsOn: string;\n operator: 'is' | 'isNot';\n value: string | boolean;\n action: 'show' | 'hide';\n}\n\nconst convertFromJsonLogic = (jsonLogic: JsonLogicValue): LocalValue => {\n if (!jsonLogic?.visible) {\n return {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n }\n\n const [[operator, conditions]] = Object.entries(jsonLogic.visible);\n const [fieldVar, value] = conditions as [{ var: string }, any];\n\n return {\n dependsOn: fieldVar.var,\n operator: operator === '==' ? 'is' : 'isNot',\n value: value,\n action: operator === '==' ? 'show' : 'hide',\n };\n};\n\nconst convertToJsonLogic = (value: LocalValue): JsonLogicValue | null => {\n if (!value.dependsOn) {\n return null;\n }\n\n const rulesEngine = createRulesEngine();\n const condition: Condition = {\n dependsOn: value.dependsOn,\n operator: value.operator,\n value: value.value,\n };\n\n try {\n rulesEngine.validate(condition);\n const action = value.action === 'show' ? '==' : '!=';\n return {\n visible: {\n [action]: [{ var: value.dependsOn }, value.value],\n },\n };\n } catch (error) {\n return null;\n }\n};\n\nexport const ConditionForm = ({\n name,\n value,\n onChange,\n onDelete,\n attributeName,\n conditionFields = [],\n}: ConditionFormProps) => {\n const { formatMessage } = useIntl();\n const [localValue, setLocalValue] = React.useState<LocalValue>(convertFromJsonLogic(value));\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n const hasCondition = Boolean(value?.visible);\n\n // Add safety check for conditionFields\n if (!Array.isArray(conditionFields)) {\n conditionFields = [];\n }\n\n const selectedField = conditionFields.find((field) => field.name === localValue.dependsOn);\n const isEnumField = selectedField?.type === 'enumeration';\n\n // Helper to update localValue and propagate JSON Logic\n const updateCondition = (updatedValue: LocalValue) => {\n setLocalValue(updatedValue);\n const rulesEngine = createRulesEngine();\n const condition: Condition = {\n dependsOn: updatedValue.dependsOn,\n operator: updatedValue.operator,\n value: updatedValue.value,\n };\n try {\n rulesEngine.validate(condition);\n const action = updatedValue.action === 'show' ? '==' : '!=';\n const jsonLogic = updatedValue.dependsOn\n ? {\n visible: {\n [action]: [{ var: updatedValue.dependsOn }, updatedValue.value],\n },\n }\n : null;\n if (jsonLogic) {\n onChange({\n target: {\n name,\n value: jsonLogic,\n },\n });\n }\n } catch {\n // Do nothing if invalid\n }\n };\n\n const handleApplyCondition = () => {\n const initialValue: LocalValue = {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n setLocalValue(initialValue);\n onChange({\n target: {\n name,\n value: convertToJsonLogic(initialValue),\n },\n });\n };\n\n const handleDelete = () => {\n setLocalValue({\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n });\n onChange({\n target: {\n name,\n value: null,\n },\n });\n onDelete();\n setShowConfirmDialog(false);\n };\n\n const handleFieldChange = (fieldName: string | number) => {\n const newValue = fieldName?.toString() || '';\n const field = conditionFields.find((f) => f.name === newValue);\n const isNewFieldEnum = field?.type === 'enumeration';\n const updatedValue: LocalValue = {\n ...localValue,\n dependsOn: newValue,\n value: newValue ? (isNewFieldEnum ? '' : false) : localValue.value,\n };\n updateCondition(updatedValue);\n };\n\n const handleOperatorChange = (operator: string | number) => {\n const newValue = operator?.toString() || 'is';\n const updatedValue: LocalValue = {\n ...localValue,\n operator: newValue as 'is' | 'isNot',\n };\n updateCondition(updatedValue);\n };\n\n const handleValueChange = (newValue: string | number) => {\n const value = isEnumField ? newValue?.toString() : newValue?.toString() === 'true';\n const updatedValue: LocalValue = { ...localValue, value };\n updateCondition(updatedValue);\n };\n\n const handleActionChange = (action: string | number) => {\n const newValue = action?.toString() || 'show';\n const updatedValue: LocalValue = {\n ...localValue,\n action: newValue as 'show' | 'hide',\n };\n updateCondition(updatedValue);\n };\n\n if (!hasCondition) {\n return (\n <Box padding={4} margin={4} hasRadius background=\"neutral0\" borderColor=\"neutral200\">\n <ApplyConditionButton onClick={handleApplyCondition} />\n </Box>\n );\n }\n\n return (\n <Box marginTop={2}>\n <Box\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n borderWidth={0.5}\n borderStyle=\"solid\"\n >\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Typography variant=\"sigma\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('form.attribute.condition.title'),\n defaultMessage: 'Condition for {name}',\n },\n {\n name: <strong>{attributeName}</strong>,\n }\n )}\n </Typography>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <IconButton label=\"Delete\">\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleDelete}>\n {formatMessage({\n id: getTrad('popUpWarning.bodyMessage.delete-condition'),\n defaultMessage: 'Are you sure you want to delete this condition?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </Flex>\n\n <Box background=\"neutral100\" padding={4}>\n <Box paddingBottom={2}>\n <Typography\n variant=\"sigma\"\n textColor=\"neutral600\"\n style={{ textTransform: 'uppercase', letterSpacing: 1 }}\n >\n {formatMessage({ id: getTrad('form.attribute.condition.if'), defaultMessage: 'IF' })}\n </Typography>\n </Box>\n <Flex gap={4}>\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.field`}>\n <SingleSelect\n value={localValue.dependsOn}\n onChange={handleFieldChange}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.field'),\n defaultMessage: 'field',\n })}\n >\n {conditionFields.map((field) => (\n <SingleSelectOption key={field.name} value={field.name}>\n <Flex gap={2} alignItems=\"center\">\n <SmallAttributeIcon type={field.type} />\n <span>{field.name}</span>\n </Flex>\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.operator`}>\n <SingleSelect\n value={localValue.operator}\n onChange={handleOperatorChange}\n disabled={!localValue.dependsOn}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.operator'),\n defaultMessage: 'condition',\n })}\n >\n <SingleSelectOption value=\"is\">\n {formatMessage({\n id: getTrad('form.attribute.condition.operator.is'),\n defaultMessage: 'is',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"isNot\">\n {formatMessage({\n id: getTrad('form.attribute.condition.operator.isNot'),\n defaultMessage: 'is not',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Box>\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.value`}>\n <SingleSelect\n value={localValue.value?.toString() || ''}\n onChange={handleValueChange}\n disabled={!localValue.dependsOn}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.value'),\n defaultMessage: 'value',\n })}\n >\n {isEnumField && selectedField?.enum ? (\n selectedField.enum.map((enumValue) => (\n <SingleSelectOption key={enumValue} value={enumValue}>\n {enumValue}\n </SingleSelectOption>\n ))\n ) : (\n <>\n <SingleSelectOption value=\"true\">\n {formatMessage({\n id: getTrad('form.attribute.condition.value.true'),\n defaultMessage: 'true',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"false\">\n {formatMessage({\n id: getTrad('form.attribute.condition.value.false'),\n defaultMessage: 'false',\n })}\n </SingleSelectOption>\n </>\n )}\n </SingleSelect>\n </Field.Root>\n </Box>\n </Flex>\n </Box>\n\n <Box background=\"neutral100\" padding={4}>\n <Box paddingBottom={4}>\n <Typography\n variant=\"sigma\"\n textColor=\"neutral600\"\n style={{ textTransform: 'uppercase', letterSpacing: 1 }}\n >\n {formatMessage({\n id: getTrad('form.attribute.condition.then'),\n defaultMessage: 'THEN',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={4}>\n <Field.Root name={`${name}.action`}>\n <SingleSelect\n value={localValue.action}\n onChange={handleActionChange}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.action'),\n defaultMessage: 'action',\n })}\n >\n <SingleSelectOption value=\"show\">\n Show <span style={{ fontWeight: 'bold' }}>{attributeName || name}</span>\n </SingleSelectOption>\n <SingleSelectOption value=\"hide\">\n Hide <span style={{ fontWeight: 'bold' }}>{attributeName || name}</span>\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Box>\n </Box>\n </Box>\n </Box>\n );\n};\n"],"names":["SmallAttributeIcon","styled","AttributeIcon","convertFromJsonLogic","jsonLogic","visible","dependsOn","operator","value","action","conditions","Object","entries","fieldVar","var","convertToJsonLogic","rulesEngine","createRulesEngine","condition","validate","error","ConditionForm","name","onChange","onDelete","attributeName","conditionFields","formatMessage","useIntl","localValue","setLocalValue","React","useState","showConfirmDialog","setShowConfirmDialog","hasCondition","Boolean","Array","isArray","selectedField","find","field","isEnumField","type","updateCondition","updatedValue","target","handleApplyCondition","initialValue","handleDelete","handleFieldChange","fieldName","newValue","toString","f","isNewFieldEnum","handleOperatorChange","handleValueChange","handleActionChange","_jsx","Box","padding","margin","hasRadius","background","borderColor","ApplyConditionButton","onClick","marginTop","_jsxs","borderWidth","borderStyle","Flex","justifyContent","alignItems","Typography","variant","textColor","id","getTrad","defaultMessage","strong","Dialog","Root","open","onOpenChange","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","paddingBottom","style","textTransform","letterSpacing","gap","minWidth","flex","Field","SingleSelect","placeholder","map","SingleSelectOption","span","disabled","enum","enumValue","_Fragment","fontWeight"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConditionForm.mjs","sources":["../../../../../admin/src/components/FormModal/attributes/ConditionForm.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useState } from 'react';\n\nimport { createRulesEngine, ConfirmDialog, type Condition } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n Field,\n SingleSelect,\n SingleSelectOption,\n Dialog,\n} from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { AttributeIcon } from '../../../components/AttributeIcon';\nimport { getTrad } from '../../../utils/getTrad';\nimport { ApplyConditionButton } from '../../ApplyConditionButton';\n\nconst SmallAttributeIcon = styled(AttributeIcon)`\n width: 16px !important;\n height: 16px !important;\n svg {\n width: 16px !important;\n height: 16px !important;\n }\n`;\n\ninterface ConditionFormProps {\n name: string;\n value: any;\n onChange: (e: { target: { name: string; value: any } }) => void;\n onDelete: () => void;\n attributeName?: string;\n conditionFields?: Array<{\n name: string;\n type: string;\n enum?: string[];\n }>;\n allAttributes?: Array<{\n name: string;\n type: string;\n }>;\n}\n\ninterface JsonLogicValue {\n visible?: {\n [key: string]: [{ var: string }, any];\n };\n}\n\ninterface LocalValue {\n dependsOn: string;\n operator: 'is' | 'isNot';\n value: string | boolean;\n action: 'show' | 'hide';\n}\n\nconst convertFromJsonLogic = (jsonLogic: JsonLogicValue): LocalValue => {\n if (!jsonLogic?.visible) {\n return {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n }\n\n const [[operator, conditions]] = Object.entries(jsonLogic.visible);\n const [fieldVar, value] = conditions as [{ var: string }, any];\n\n // Assume 'visible' implies 'show' for now; adjust if backend uses 'hidden' key\n return {\n dependsOn: fieldVar.var,\n operator: operator === '==' ? 'is' : 'isNot',\n value: value,\n action: 'show', // Default to 'show' for 'visible'; adjust based on backend logic\n };\n};\n\nconst convertToJsonLogic = (value: LocalValue): JsonLogicValue | null => {\n if (!value.dependsOn) {\n return null;\n }\n\n const rulesEngine = createRulesEngine();\n const condition: Condition = {\n dependsOn: value.dependsOn,\n operator: value.operator,\n value: value.value,\n };\n\n try {\n rulesEngine.validate(condition);\n // Determine JSON Logic operator based on operator and action\n const operator =\n (value.operator === 'is' && value.action === 'show') ||\n (value.operator === 'isNot' && value.action === 'hide')\n ? '=='\n : '!=';\n return {\n visible: {\n [operator]: [{ var: value.dependsOn }, value.value],\n },\n };\n } catch (error) {\n return null;\n }\n};\n\nexport const ConditionForm = ({\n name,\n value,\n onChange,\n onDelete,\n attributeName,\n conditionFields = [],\n}: ConditionFormProps) => {\n const { formatMessage } = useIntl();\n const [localValue, setLocalValue] = React.useState<LocalValue>(convertFromJsonLogic(value));\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n const hasCondition = Boolean(value?.visible);\n\n // Add safety check for conditionFields\n if (!Array.isArray(conditionFields)) {\n conditionFields = [];\n }\n\n const selectedField = conditionFields.find((field) => field.name === localValue.dependsOn);\n const isEnumField = selectedField?.type === 'enumeration';\n\n // Helper to update localValue and propagate JSON Logic\n const updateCondition = (updatedValue: LocalValue) => {\n setLocalValue(updatedValue);\n const rulesEngine = createRulesEngine();\n const condition: Condition = {\n dependsOn: updatedValue.dependsOn,\n operator: updatedValue.operator,\n value: updatedValue.value,\n };\n try {\n rulesEngine.validate(condition);\n const operator =\n (updatedValue.operator === 'is' && updatedValue.action === 'show') ||\n (updatedValue.operator === 'isNot' && updatedValue.action === 'hide')\n ? '=='\n : '!=';\n const jsonLogic = updatedValue.dependsOn\n ? {\n visible: {\n [operator]: [{ var: updatedValue.dependsOn }, updatedValue.value],\n },\n }\n : null;\n if (jsonLogic) {\n onChange({\n target: {\n name,\n value: jsonLogic,\n },\n });\n }\n } catch {\n // Optionally, show an error to the user\n }\n };\n\n const handleApplyCondition = () => {\n const initialValue: LocalValue = {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n setLocalValue(initialValue);\n onChange({\n target: {\n name,\n value: convertToJsonLogic(initialValue),\n },\n });\n };\n\n const handleDelete = () => {\n setLocalValue({\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n });\n onChange({\n target: {\n name,\n value: null,\n },\n });\n onDelete();\n setShowConfirmDialog(false);\n };\n\n const handleFieldChange = (fieldName: string | number) => {\n const newValue = fieldName?.toString() || '';\n const field = conditionFields.find((f) => f.name === newValue);\n const isNewFieldEnum = field?.type === 'enumeration';\n const updatedValue: LocalValue = {\n ...localValue,\n dependsOn: newValue,\n value: newValue ? (isNewFieldEnum ? '' : false) : localValue.value,\n };\n updateCondition(updatedValue);\n };\n\n const handleOperatorChange = (operator: string | number) => {\n const newValue = operator?.toString() || 'is';\n const updatedValue: LocalValue = {\n ...localValue,\n operator: newValue as 'is' | 'isNot',\n };\n updateCondition(updatedValue);\n };\n\n const handleValueChange = (newValue: string | number) => {\n const value = isEnumField ? newValue?.toString() : newValue?.toString() === 'true';\n const updatedValue: LocalValue = { ...localValue, value };\n updateCondition(updatedValue);\n };\n\n const handleActionChange = (action: string | number) => {\n const newValue = action?.toString() || 'show';\n const updatedValue: LocalValue = {\n ...localValue,\n action: newValue as 'show' | 'hide',\n };\n updateCondition(updatedValue);\n };\n\n if (!hasCondition) {\n return (\n <Box padding={4} margin={4} hasRadius background=\"neutral0\" borderColor=\"neutral200\">\n <ApplyConditionButton onClick={handleApplyCondition} />\n </Box>\n );\n }\n\n return (\n <Box marginTop={2}>\n <Box\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n borderWidth={0.5}\n borderStyle=\"solid\"\n >\n <Flex justifyContent=\"space-between\" alignItems=\"center\" padding={4}>\n <Typography variant=\"sigma\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('form.attribute.condition.title'),\n defaultMessage: 'Condition for {name}',\n },\n {\n name: <strong>{attributeName}</strong>,\n }\n )}\n </Typography>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <IconButton label=\"Delete\">\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleDelete}>\n {formatMessage({\n id: getTrad('popUpWarning.bodyMessage.delete-condition'),\n defaultMessage: 'Are you sure you want to delete this condition?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </Flex>\n\n <Box background=\"neutral100\" padding={4}>\n <Box paddingBottom={2}>\n <Typography\n variant=\"sigma\"\n textColor=\"neutral600\"\n style={{ textTransform: 'uppercase', letterSpacing: 1 }}\n >\n {formatMessage({ id: getTrad('form.attribute.condition.if'), defaultMessage: 'IF' })}\n </Typography>\n </Box>\n <Flex gap={4}>\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.field`}>\n <SingleSelect\n value={localValue.dependsOn}\n onChange={handleFieldChange}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.field'),\n defaultMessage: 'field',\n })}\n >\n {conditionFields.map((field) => (\n <SingleSelectOption key={field.name} value={field.name}>\n <Flex gap={2} alignItems=\"center\">\n <SmallAttributeIcon type={field.type} />\n <span>{field.name}</span>\n </Flex>\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Field.Root>\n </Box>\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.operator`}>\n <SingleSelect\n value={localValue.operator}\n onChange={handleOperatorChange}\n disabled={!localValue.dependsOn}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.operator'),\n defaultMessage: 'condition',\n })}\n >\n <SingleSelectOption value=\"is\">\n {formatMessage({\n id: getTrad('form.attribute.condition.operator.is'),\n defaultMessage: 'is',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"isNot\">\n {formatMessage({\n id: getTrad('form.attribute.condition.operator.isNot'),\n defaultMessage: 'is not',\n })}\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Box>\n\n <Box minWidth={0} flex={1}>\n <Field.Root name={`${name}.value`}>\n <SingleSelect\n value={localValue.value?.toString() || ''}\n onChange={handleValueChange}\n disabled={!localValue.dependsOn}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.value'),\n defaultMessage: 'value',\n })}\n >\n {isEnumField && selectedField?.enum ? (\n selectedField.enum.map((enumValue) => (\n <SingleSelectOption key={enumValue} value={enumValue}>\n {enumValue}\n </SingleSelectOption>\n ))\n ) : (\n <>\n <SingleSelectOption value=\"true\">\n {formatMessage({\n id: getTrad('form.attribute.condition.value.true'),\n defaultMessage: 'true',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"false\">\n {formatMessage({\n id: getTrad('form.attribute.condition.value.false'),\n defaultMessage: 'false',\n })}\n </SingleSelectOption>\n </>\n )}\n </SingleSelect>\n </Field.Root>\n </Box>\n </Flex>\n </Box>\n\n <Box background=\"neutral100\" padding={4}>\n <Box paddingBottom={4}>\n <Typography\n variant=\"sigma\"\n textColor=\"neutral600\"\n style={{ textTransform: 'uppercase', letterSpacing: 1 }}\n >\n {formatMessage({\n id: getTrad('form.attribute.condition.then'),\n defaultMessage: 'THEN',\n })}\n </Typography>\n </Box>\n <Box paddingBottom={4}>\n <Field.Root name={`${name}.action`}>\n <SingleSelect\n value={localValue.action}\n onChange={handleActionChange}\n placeholder={formatMessage({\n id: getTrad('form.attribute.condition.action'),\n defaultMessage: 'action',\n })}\n >\n <SingleSelectOption value=\"show\">\n Show <span style={{ fontWeight: 'bold' }}>{attributeName || name}</span>\n </SingleSelectOption>\n <SingleSelectOption value=\"hide\">\n Hide <span style={{ fontWeight: 'bold' }}>{attributeName || name}</span>\n </SingleSelectOption>\n </SingleSelect>\n </Field.Root>\n </Box>\n </Box>\n </Box>\n </Box>\n );\n};\n"],"names":["SmallAttributeIcon","styled","AttributeIcon","convertFromJsonLogic","jsonLogic","visible","dependsOn","operator","value","action","conditions","Object","entries","fieldVar","var","convertToJsonLogic","rulesEngine","createRulesEngine","condition","validate","error","ConditionForm","name","onChange","onDelete","attributeName","conditionFields","formatMessage","useIntl","localValue","setLocalValue","React","useState","showConfirmDialog","setShowConfirmDialog","hasCondition","Boolean","Array","isArray","selectedField","find","field","isEnumField","type","updateCondition","updatedValue","target","handleApplyCondition","initialValue","handleDelete","handleFieldChange","fieldName","newValue","toString","f","isNewFieldEnum","handleOperatorChange","handleValueChange","handleActionChange","_jsx","Box","padding","margin","hasRadius","background","borderColor","ApplyConditionButton","onClick","marginTop","_jsxs","borderWidth","borderStyle","Flex","justifyContent","alignItems","Typography","variant","textColor","id","getTrad","defaultMessage","strong","Dialog","Root","open","onOpenChange","Trigger","IconButton","label","Trash","ConfirmDialog","onConfirm","paddingBottom","style","textTransform","letterSpacing","gap","minWidth","flex","Field","SingleSelect","placeholder","map","SingleSelectOption","span","disabled","enum","enumValue","_Fragment","fontWeight"],"mappings":"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"}
|
|
@@ -24,14 +24,7 @@ const App = ()=>{
|
|
|
24
24
|
id: `${pluginId.pluginId}.plugin.name`,
|
|
25
25
|
defaultMessage: 'Content Types Builder'
|
|
26
26
|
});
|
|
27
|
-
const startSection = strapiAdmin.useGuidedTour('App', (state)=>state.startSection);
|
|
28
27
|
const autoReload = strapiAdmin.useAppInfo('DataManagerProvider', (state)=>state.autoReload);
|
|
29
|
-
const startSectionRef = React.useRef(startSection);
|
|
30
|
-
React.useEffect(()=>{
|
|
31
|
-
if (startSectionRef.current) {
|
|
32
|
-
startSectionRef.current('contentTypeBuilder');
|
|
33
|
-
}
|
|
34
|
-
}, []);
|
|
35
28
|
return /*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Page.Protect, {
|
|
36
29
|
permissions: constants.PERMISSIONS.main,
|
|
37
30
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect, useRef } from 'react';\n\nimport { Page,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect, useRef } from 'react';\n\nimport { Page, Layouts, useAppInfo } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <FormModalNavigationProvider>\n <DataManagerProvider>\n <ExitPrompt />\n <>\n {autoReload && <FormModal />}\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/create-content-type\" element={<EmptyState />} />\n <Route path=\"content-types/:contentTypeUid\" element={<ListView />} />\n <Route\n path={`component-categories/:categoryUid/:componentUid`}\n element={<ListView />}\n />\n <Route path=\"*\" element={<ListView />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n </>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["ListView","lazy","App","formatMessage","useIntl","title","id","pluginId","defaultMessage","autoReload","useAppInfo","state","_jsxs","Page","Protect","permissions","PERMISSIONS","main","_jsx","Title","AutoReloadOverlayBlockerProvider","FormModalNavigationProvider","DataManagerProvider","ExitPrompt","_Fragment","FormModal","Layouts","Root","sideNav","ContentTypeBuilderNav","Suspense","fallback","Loading","Routes","Route","path","element","EmptyState"],"mappings":";;;;;;;;;;;;;;;;;;;AAmBA,MAAMA,QAAWC,iBAAAA,UAAAA,CAAK,IAAM,8FAAO,yBAAA,MAAA,CAAA;AAEnC,MAAMC,GAAM,GAAA,IAAA;IACV,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQF,aAAc,CAAA;AAC1BG,QAAAA,EAAAA,EAAI,CAAC,EAAEC,iBAAS,CAAA,YAAY,CAAC;QAC7BC,cAAgB,EAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAMC,aAAaC,sBAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAMF,UAAU,CAAA;IAEhF,qBACEG,eAAA,CAACC,iBAAKC,OAAO,EAAA;AAACC,QAAAA,WAAAA,EAAaC,sBAAYC,IAAI;;AACzC,0BAAAC,cAAA,CAACL,iBAAKM,KAAK,EAAA;AAAEd,gBAAAA,QAAAA,EAAAA;;0BACba,cAACE,CAAAA,yDAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAF,cAACG,CAAAA,uDAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAT,eAACU,CAAAA,mBAAAA,EAAAA;;0CACCJ,cAACK,CAAAA,qBAAAA,EAAAA,EAAAA,CAAAA;AACD,0CAAAX,eAAA,CAAAY,mBAAA,EAAA;;AACGf,oCAAAA,UAAAA,kBAAcS,cAACO,CAAAA,mBAAAA,EAAAA,EAAAA,CAAAA;AAChB,kDAAAP,cAAA,CAACQ,oBAAQC,IAAI,EAAA;AAACC,wCAAAA,OAAAA,gBAASV,cAACW,CAAAA,2CAAAA,EAAAA,EAAAA,CAAAA;AACtB,wCAAA,QAAA,gBAAAX,cAACY,CAAAA,cAAAA,EAAAA;4CAASC,QAAU,gBAAAb,cAAA,CAACL,iBAAKmB,OAAO,EAAA,EAAA,CAAA;AAC/B,4CAAA,QAAA,gBAAApB,eAACqB,CAAAA,qBAAAA,EAAAA;;kEACCf,cAACgB,CAAAA,oBAAAA,EAAAA;wDAAMC,IAAK,EAAA,mCAAA;AAAoCC,wDAAAA,OAAAA,gBAASlB,cAACmB,CAAAA,qBAAAA,EAAAA,EAAAA;;kEAC1DnB,cAACgB,CAAAA,oBAAAA,EAAAA;wDAAMC,IAAK,EAAA,+BAAA;AAAgCC,wDAAAA,OAAAA,gBAASlB,cAAClB,CAAAA,QAAAA,EAAAA,EAAAA;;kEACtDkB,cAACgB,CAAAA,oBAAAA,EAAAA;wDACCC,IAAM,EAAA,CAAC,+CAA+C,CAAC;AACvDC,wDAAAA,OAAAA,gBAASlB,cAAClB,CAAAA,QAAAA,EAAAA,EAAAA;;kEAEZkB,cAACgB,CAAAA,oBAAAA,EAAAA;wDAAMC,IAAK,EAAA,GAAA;AAAIC,wDAAAA,OAAAA,gBAASlB,cAAClB,CAAAA,QAAAA,EAAAA,EAAAA;;;;;;;;;;;;;;AAU9C;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { Suspense, lazy } from 'react';
|
|
3
|
+
import { useAppInfo, Page, Layouts } from '@strapi/admin/strapi-admin';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
5
|
import { Routes, Route } from 'react-router-dom';
|
|
6
6
|
import { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker.mjs';
|
|
@@ -20,14 +20,7 @@ const App = ()=>{
|
|
|
20
20
|
id: `${pluginId}.plugin.name`,
|
|
21
21
|
defaultMessage: 'Content Types Builder'
|
|
22
22
|
});
|
|
23
|
-
const startSection = useGuidedTour('App', (state)=>state.startSection);
|
|
24
23
|
const autoReload = useAppInfo('DataManagerProvider', (state)=>state.autoReload);
|
|
25
|
-
const startSectionRef = useRef(startSection);
|
|
26
|
-
useEffect(()=>{
|
|
27
|
-
if (startSectionRef.current) {
|
|
28
|
-
startSectionRef.current('contentTypeBuilder');
|
|
29
|
-
}
|
|
30
|
-
}, []);
|
|
31
24
|
return /*#__PURE__*/ jsxs(Page.Protect, {
|
|
32
25
|
permissions: PERMISSIONS.main,
|
|
33
26
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect, useRef } from 'react';\n\nimport { Page,
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect, useRef } from 'react';\n\nimport { Page, Layouts, useAppInfo } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <FormModalNavigationProvider>\n <DataManagerProvider>\n <ExitPrompt />\n <>\n {autoReload && <FormModal />}\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/create-content-type\" element={<EmptyState />} />\n <Route path=\"content-types/:contentTypeUid\" element={<ListView />} />\n <Route\n path={`component-categories/:categoryUid/:componentUid`}\n element={<ListView />}\n />\n <Route path=\"*\" element={<ListView />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n </>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["ListView","lazy","App","formatMessage","useIntl","title","id","pluginId","defaultMessage","autoReload","useAppInfo","state","_jsxs","Page","Protect","permissions","PERMISSIONS","main","_jsx","Title","AutoReloadOverlayBlockerProvider","FormModalNavigationProvider","DataManagerProvider","ExitPrompt","_Fragment","FormModal","Layouts","Root","sideNav","ContentTypeBuilderNav","Suspense","fallback","Loading","Routes","Route","path","element","EmptyState"],"mappings":";;;;;;;;;;;;;;;AAmBA,MAAMA,QAAWC,iBAAAA,IAAAA,CAAK,IAAM,OAAO,0BAAA,CAAA,CAAA;AAEnC,MAAMC,GAAM,GAAA,IAAA;IACV,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQF,aAAc,CAAA;AAC1BG,QAAAA,EAAAA,EAAI,CAAC,EAAEC,QAAS,CAAA,YAAY,CAAC;QAC7BC,cAAgB,EAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAMC,aAAaC,UAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAMF,UAAU,CAAA;IAEhF,qBACEG,IAAA,CAACC,KAAKC,OAAO,EAAA;AAACC,QAAAA,WAAAA,EAAaC,YAAYC,IAAI;;AACzC,0BAAAC,GAAA,CAACL,KAAKM,KAAK,EAAA;AAAEd,gBAAAA,QAAAA,EAAAA;;0BACba,GAACE,CAAAA,gCAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAF,GAACG,CAAAA,2BAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAT,IAACU,CAAAA,mBAAAA,EAAAA;;0CACCJ,GAACK,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;AACD,0CAAAX,IAAA,CAAAY,QAAA,EAAA;;AACGf,oCAAAA,UAAAA,kBAAcS,GAACO,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA;AAChB,kDAAAP,GAAA,CAACQ,QAAQC,IAAI,EAAA;AAACC,wCAAAA,OAAAA,gBAASV,GAACW,CAAAA,qBAAAA,EAAAA,EAAAA,CAAAA;AACtB,wCAAA,QAAA,gBAAAX,GAACY,CAAAA,QAAAA,EAAAA;4CAASC,QAAU,gBAAAb,GAAA,CAACL,KAAKmB,OAAO,EAAA,EAAA,CAAA;AAC/B,4CAAA,QAAA,gBAAApB,IAACqB,CAAAA,MAAAA,EAAAA;;kEACCf,GAACgB,CAAAA,KAAAA,EAAAA;wDAAMC,IAAK,EAAA,mCAAA;AAAoCC,wDAAAA,OAAAA,gBAASlB,GAACmB,CAAAA,UAAAA,EAAAA,EAAAA;;kEAC1DnB,GAACgB,CAAAA,KAAAA,EAAAA;wDAAMC,IAAK,EAAA,+BAAA;AAAgCC,wDAAAA,OAAAA,gBAASlB,GAAClB,CAAAA,QAAAA,EAAAA,EAAAA;;kEACtDkB,GAACgB,CAAAA,KAAAA,EAAAA;wDACCC,IAAM,EAAA,CAAC,+CAA+C,CAAC;AACvDC,wDAAAA,OAAAA,gBAASlB,GAAClB,CAAAA,QAAAA,EAAAA,EAAAA;;kEAEZkB,GAACgB,CAAAA,KAAAA,EAAAA;wDAAMC,IAAK,EAAA,GAAA;AAAIC,wDAAAA,OAAAA,gBAASlB,GAAClB,CAAAA,QAAAA,EAAAA,EAAAA;;;;;;;;;;;;;;AAU9C;;;;"}
|
|
@@ -14,7 +14,7 @@ const EmptyState = ()=>{
|
|
|
14
14
|
});
|
|
15
15
|
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
16
16
|
children: [
|
|
17
|
-
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.
|
|
17
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.tours.contentTypeBuilder.Introduction, {
|
|
18
18
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
19
19
|
paddingTop: 5
|
|
20
20
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.js","sources":["../../../../admin/src/pages/ListView/EmptyState.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"EmptyState.js","sources":["../../../../admin/src/pages/ListView/EmptyState.tsx"],"sourcesContent":["import { tours } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../utils/getTrad';\n\nexport const EmptyState = () => {\n const { formatMessage } = useIntl();\n\n const pluginName = formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: 'Content-Type Builder',\n });\n\n return (\n <>\n <tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box paddingTop={5} />\n </tours.contentTypeBuilder.Introduction>\n <Flex justifyContent=\"center\" alignItems=\"center\" height=\"100%\" direction=\"column\">\n <Typography variant=\"alpha\">{pluginName}</Typography>\n <Typography variant=\"delta\">\n {formatMessage({\n id: getTrad('table.content.create-first-content-type'),\n defaultMessage: 'Create your first Collection-Type',\n })}\n </Typography>\n </Flex>\n </>\n );\n};\n"],"names":["EmptyState","formatMessage","useIntl","pluginName","id","getTrad","defaultMessage","_jsxs","_Fragment","_jsx","tours","contentTypeBuilder","Introduction","Box","paddingTop","Flex","justifyContent","alignItems","height","direction","Typography","variant"],"mappings":";;;;;;;;MAMaA,UAAa,GAAA,IAAA;IACxB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMC,aAAaF,aAAc,CAAA;AAC/BG,QAAAA,EAAAA,EAAIC,eAAQ,CAAA,aAAA,CAAA;QACZC,cAAgB,EAAA;AAClB,KAAA,CAAA;IAEA,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;0BACEC,cAACC,CAAAA,iBAAAA,CAAMC,kBAAkB,CAACC,YAAY,EAAA;AAEpC,gBAAA,QAAA,gBAAAH,cAACI,CAAAA,gBAAAA,EAAAA;oBAAIC,UAAY,EAAA;;;0BAEnBP,eAACQ,CAAAA,iBAAAA,EAAAA;gBAAKC,cAAe,EAAA,QAAA;gBAASC,UAAW,EAAA,QAAA;gBAASC,MAAO,EAAA,MAAA;gBAAOC,SAAU,EAAA,QAAA;;kCACxEV,cAACW,CAAAA,uBAAAA,EAAAA;wBAAWC,OAAQ,EAAA,OAAA;AAASlB,wBAAAA,QAAAA,EAAAA;;kCAC7BM,cAACW,CAAAA,uBAAAA,EAAAA;wBAAWC,OAAQ,EAAA,OAAA;kCACjBpB,aAAc,CAAA;AACbG,4BAAAA,EAAAA,EAAIC,eAAQ,CAAA,yCAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAKV;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
2
|
+
import { tours } from '@strapi/admin/strapi-admin';
|
|
3
3
|
import { Box, Flex, Typography } from '@strapi/design-system';
|
|
4
4
|
import { useIntl } from 'react-intl';
|
|
5
5
|
import { getTrad } from '../../utils/getTrad.mjs';
|
|
@@ -12,7 +12,7 @@ const EmptyState = ()=>{
|
|
|
12
12
|
});
|
|
13
13
|
return /*#__PURE__*/ jsxs(Fragment, {
|
|
14
14
|
children: [
|
|
15
|
-
/*#__PURE__*/ jsx(
|
|
15
|
+
/*#__PURE__*/ jsx(tours.contentTypeBuilder.Introduction, {
|
|
16
16
|
children: /*#__PURE__*/ jsx(Box, {
|
|
17
17
|
paddingTop: 5
|
|
18
18
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState.mjs","sources":["../../../../admin/src/pages/ListView/EmptyState.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"EmptyState.mjs","sources":["../../../../admin/src/pages/ListView/EmptyState.tsx"],"sourcesContent":["import { tours } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../utils/getTrad';\n\nexport const EmptyState = () => {\n const { formatMessage } = useIntl();\n\n const pluginName = formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: 'Content-Type Builder',\n });\n\n return (\n <>\n <tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box paddingTop={5} />\n </tours.contentTypeBuilder.Introduction>\n <Flex justifyContent=\"center\" alignItems=\"center\" height=\"100%\" direction=\"column\">\n <Typography variant=\"alpha\">{pluginName}</Typography>\n <Typography variant=\"delta\">\n {formatMessage({\n id: getTrad('table.content.create-first-content-type'),\n defaultMessage: 'Create your first Collection-Type',\n })}\n </Typography>\n </Flex>\n </>\n );\n};\n"],"names":["EmptyState","formatMessage","useIntl","pluginName","id","getTrad","defaultMessage","_jsxs","_Fragment","_jsx","tours","contentTypeBuilder","Introduction","Box","paddingTop","Flex","justifyContent","alignItems","height","direction","Typography","variant"],"mappings":";;;;;;MAMaA,UAAa,GAAA,IAAA;IACxB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,MAAMC,aAAaF,aAAc,CAAA;AAC/BG,QAAAA,EAAAA,EAAIC,OAAQ,CAAA,aAAA,CAAA;QACZC,cAAgB,EAAA;AAClB,KAAA,CAAA;IAEA,qBACEC,IAAA,CAAAC,QAAA,EAAA;;0BACEC,GAACC,CAAAA,KAAAA,CAAMC,kBAAkB,CAACC,YAAY,EAAA;AAEpC,gBAAA,QAAA,gBAAAH,GAACI,CAAAA,GAAAA,EAAAA;oBAAIC,UAAY,EAAA;;;0BAEnBP,IAACQ,CAAAA,IAAAA,EAAAA;gBAAKC,cAAe,EAAA,QAAA;gBAASC,UAAW,EAAA,QAAA;gBAASC,MAAO,EAAA,MAAA;gBAAOC,SAAU,EAAA,QAAA;;kCACxEV,GAACW,CAAAA,UAAAA,EAAAA;wBAAWC,OAAQ,EAAA,OAAA;AAASlB,wBAAAA,QAAAA,EAAAA;;kCAC7BM,GAACW,CAAAA,UAAAA,EAAAA;wBAAWC,OAAQ,EAAA,OAAA;kCACjBpB,aAAc,CAAA;AACbG,4BAAAA,EAAAA,EAAIC,OAAQ,CAAA,yCAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA;;;;;;AAKV;;;;"}
|
|
@@ -115,6 +115,11 @@ const ListView = ()=>{
|
|
|
115
115
|
});
|
|
116
116
|
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
117
117
|
children: [
|
|
118
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.tours.contentTypeBuilder.Introduction, {
|
|
119
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
120
|
+
paddingTop: 5
|
|
121
|
+
})
|
|
122
|
+
}),
|
|
118
123
|
isDeleted && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
119
124
|
background: "danger100",
|
|
120
125
|
justifyContent: 'center',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListView.js","sources":["../../../../admin/src/pages/ListView/ListView.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\nimport { useTracking, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Typography } from '@strapi/design-system';\nimport { Information, Pencil, Plus } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../../components/DataManager/useDataManager';\nimport { useFormModalNavigation } from '../../components/FormModalNavigation/useFormModalNavigation';\nimport { List } from '../../components/List';\nimport { getTrad } from '../../utils/getTrad';\n\nimport { LinkToCMSettingsView } from './LinkToCMSettingsView';\n\nimport type { Internal } from '@strapi/types';\n\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst ListView = () => {\n const { isInDevelopmentMode, contentTypes, components, isLoading } = useDataManager();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const { contentTypeUid, componentUid } = useParams<{\n contentTypeUid: Internal.UID.ContentType;\n componentUid: Internal.UID.Component;\n }>();\n\n const { onOpenModalAddComponentsToDZ, onOpenModalAddField, onOpenModalEditSchema } =\n useFormModalNavigation();\n\n const type = contentTypeUid\n ? contentTypes[contentTypeUid]\n : componentUid\n ? components[componentUid]\n : null;\n\n if (isLoading) {\n return null;\n }\n\n if (!type) {\n const allowedEndpoints = Object.values(contentTypes)\n .filter((ct) => ct.visible === true && !ct.plugin)\n .map((ct) => ct.uid)\n .sort();\n\n if (allowedEndpoints.length > 0) {\n return <Navigate to={`/plugins/content-type-builder/content-types/${allowedEndpoints[0]}`} />;\n }\n\n return <Navigate to=\"/plugins/content-type-builder/content-types/create-content-type\" />;\n }\n\n const isFromPlugin = 'plugin' in type && type?.plugin !== undefined;\n\n const forTarget = contentTypeUid ? 'contentType' : 'component';\n\n const label = type?.info?.displayName ?? '';\n\n const canEdit = isInDevelopmentMode && !isFromPlugin;\n\n const handleClickAddComponentToDZ = (dynamicZoneTarget?: string) => {\n onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid: type.uid });\n };\n\n const onEdit = () => {\n if ('kind' in type) {\n if (type?.kind === 'collectionType') {\n trackUsage('willEditNameOfContentType');\n }\n\n if (type?.kind === 'singleType') {\n trackUsage('willEditNameOfSingleType');\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n kind: type?.kind,\n });\n\n return;\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n });\n };\n\n const addNewFieldLabel = formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n });\n\n const addAnotherFieldLabel = formatMessage({\n id: getTrad('button.attributes.add.another'),\n defaultMessage: 'Add another field',\n });\n\n const isDeleted = type.status === 'REMOVED';\n\n const primaryAction = isInDevelopmentMode && (\n <Flex gap={2}>\n <LinkToCMSettingsView\n key=\"link-to-cm-settings-view\"\n type={type}\n disabled={type.status === 'NEW' || isDeleted}\n />\n <Button\n startIcon={<Pencil />}\n variant=\"tertiary\"\n onClick={onEdit}\n disabled={!canEdit || isDeleted}\n >\n {formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })}\n </Button>\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n minWidth=\"max-content\"\n onClick={() => {\n onOpenModalAddField({ forTarget, targetUid: type.uid });\n }}\n disabled={isDeleted}\n >\n {type.attributes.length === 0 ? addNewFieldLabel : addAnotherFieldLabel}\n </Button>\n </Flex>\n );\n\n return (\n <>\n {isDeleted && (\n <Flex background=\"danger100\" justifyContent={'center'} padding={4}>\n <Flex gap={2}>\n <Information fill=\"danger600\" height=\"2rem\" width=\"2rem\" />\n <Typography>\n {formatMessage(\n {\n id: getTrad('table.warning.deleted'),\n defaultMessage: `This {kind} has been deleted`,\n },\n {\n kind: type.modelType === 'contentType' ? 'Content Type' : 'Component',\n }\n )}\n </Typography>\n </Flex>\n </Flex>\n )}\n <LayoutsHeaderCustom id=\"title\" primaryAction={primaryAction} title={upperFirst(label)} />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n shadow=\"filterShadow\"\n hasRadius\n overflow=\"auto\"\n borderColor=\"neutral150\"\n >\n <List type={type} addComponentToDZ={handleClickAddComponentToDZ} isMain />\n </Box>\n </Layouts.Content>\n </>\n );\n};\n\nexport default ListView;\n"],"names":["LayoutsHeaderCustom","styled","Layouts","Header","ListView","isInDevelopmentMode","contentTypes","components","isLoading","useDataManager","formatMessage","useIntl","trackUsage","useTracking","contentTypeUid","componentUid","useParams","onOpenModalAddComponentsToDZ","onOpenModalAddField","onOpenModalEditSchema","useFormModalNavigation","type","allowedEndpoints","Object","values","filter","ct","visible","plugin","map","uid","sort","length","_jsx","Navigate","to","isFromPlugin","undefined","forTarget","label","info","displayName","canEdit","handleClickAddComponentToDZ","dynamicZoneTarget","targetUid","onEdit","kind","modalType","addNewFieldLabel","id","getTrad","defaultMessage","addAnotherFieldLabel","isDeleted","status","primaryAction","_jsxs","Flex","gap","LinkToCMSettingsView","disabled","Button","startIcon","Pencil","variant","onClick","Plus","minWidth","attributes","_Fragment","background","justifyContent","padding","Information","fill","height","width","Typography","modelType","title","upperFirst","Content","Box","shadow","hasRadius","overflow","borderColor","List","addComponentToDZ","isMain"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ListView.js","sources":["../../../../admin/src/pages/ListView/ListView.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\nimport { useTracking, Layouts, tours } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Typography } from '@strapi/design-system';\nimport { Information, Pencil, Plus } from '@strapi/icons';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../../components/DataManager/useDataManager';\nimport { useFormModalNavigation } from '../../components/FormModalNavigation/useFormModalNavigation';\nimport { List } from '../../components/List';\nimport { getTrad } from '../../utils/getTrad';\n\nimport { LinkToCMSettingsView } from './LinkToCMSettingsView';\n\nimport type { Internal } from '@strapi/types';\n\nconst LayoutsHeaderCustom = styled(Layouts.Header)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst ListView = () => {\n const { isInDevelopmentMode, contentTypes, components, isLoading } = useDataManager();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const { contentTypeUid, componentUid } = useParams<{\n contentTypeUid: Internal.UID.ContentType;\n componentUid: Internal.UID.Component;\n }>();\n\n const { onOpenModalAddComponentsToDZ, onOpenModalAddField, onOpenModalEditSchema } =\n useFormModalNavigation();\n\n const type = contentTypeUid\n ? contentTypes[contentTypeUid]\n : componentUid\n ? components[componentUid]\n : null;\n\n if (isLoading) {\n return null;\n }\n\n if (!type) {\n const allowedEndpoints = Object.values(contentTypes)\n .filter((ct) => ct.visible === true && !ct.plugin)\n .map((ct) => ct.uid)\n .sort();\n\n if (allowedEndpoints.length > 0) {\n return <Navigate to={`/plugins/content-type-builder/content-types/${allowedEndpoints[0]}`} />;\n }\n\n return <Navigate to=\"/plugins/content-type-builder/content-types/create-content-type\" />;\n }\n\n const isFromPlugin = 'plugin' in type && type?.plugin !== undefined;\n\n const forTarget = contentTypeUid ? 'contentType' : 'component';\n\n const label = type?.info?.displayName ?? '';\n\n const canEdit = isInDevelopmentMode && !isFromPlugin;\n\n const handleClickAddComponentToDZ = (dynamicZoneTarget?: string) => {\n onOpenModalAddComponentsToDZ({ dynamicZoneTarget, targetUid: type.uid });\n };\n\n const onEdit = () => {\n if ('kind' in type) {\n if (type?.kind === 'collectionType') {\n trackUsage('willEditNameOfContentType');\n }\n\n if (type?.kind === 'singleType') {\n trackUsage('willEditNameOfSingleType');\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n kind: type?.kind,\n });\n\n return;\n }\n\n onOpenModalEditSchema({\n modalType: forTarget,\n forTarget: forTarget,\n targetUid: type.uid,\n });\n };\n\n const addNewFieldLabel = formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n });\n\n const addAnotherFieldLabel = formatMessage({\n id: getTrad('button.attributes.add.another'),\n defaultMessage: 'Add another field',\n });\n\n const isDeleted = type.status === 'REMOVED';\n\n const primaryAction = isInDevelopmentMode && (\n <Flex gap={2}>\n <LinkToCMSettingsView\n key=\"link-to-cm-settings-view\"\n type={type}\n disabled={type.status === 'NEW' || isDeleted}\n />\n <Button\n startIcon={<Pencil />}\n variant=\"tertiary\"\n onClick={onEdit}\n disabled={!canEdit || isDeleted}\n >\n {formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })}\n </Button>\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n minWidth=\"max-content\"\n onClick={() => {\n onOpenModalAddField({ forTarget, targetUid: type.uid });\n }}\n disabled={isDeleted}\n >\n {type.attributes.length === 0 ? addNewFieldLabel : addAnotherFieldLabel}\n </Button>\n </Flex>\n );\n\n return (\n <>\n <tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box paddingTop={5} />\n </tours.contentTypeBuilder.Introduction>\n {isDeleted && (\n <Flex background=\"danger100\" justifyContent={'center'} padding={4}>\n <Flex gap={2}>\n <Information fill=\"danger600\" height=\"2rem\" width=\"2rem\" />\n <Typography>\n {formatMessage(\n {\n id: getTrad('table.warning.deleted'),\n defaultMessage: `This {kind} has been deleted`,\n },\n {\n kind: type.modelType === 'contentType' ? 'Content Type' : 'Component',\n }\n )}\n </Typography>\n </Flex>\n </Flex>\n )}\n <LayoutsHeaderCustom id=\"title\" primaryAction={primaryAction} title={upperFirst(label)} />\n <Layouts.Content>\n <Box\n background=\"neutral0\"\n shadow=\"filterShadow\"\n hasRadius\n overflow=\"auto\"\n borderColor=\"neutral150\"\n >\n <List type={type} addComponentToDZ={handleClickAddComponentToDZ} isMain />\n </Box>\n </Layouts.Content>\n </>\n );\n};\n\nexport default ListView;\n"],"names":["LayoutsHeaderCustom","styled","Layouts","Header","ListView","isInDevelopmentMode","contentTypes","components","isLoading","useDataManager","formatMessage","useIntl","trackUsage","useTracking","contentTypeUid","componentUid","useParams","onOpenModalAddComponentsToDZ","onOpenModalAddField","onOpenModalEditSchema","useFormModalNavigation","type","allowedEndpoints","Object","values","filter","ct","visible","plugin","map","uid","sort","length","_jsx","Navigate","to","isFromPlugin","undefined","forTarget","label","info","displayName","canEdit","handleClickAddComponentToDZ","dynamicZoneTarget","targetUid","onEdit","kind","modalType","addNewFieldLabel","id","getTrad","defaultMessage","addAnotherFieldLabel","isDeleted","status","primaryAction","_jsxs","Flex","gap","LinkToCMSettingsView","disabled","Button","startIcon","Pencil","variant","onClick","Plus","minWidth","attributes","_Fragment","tours","contentTypeBuilder","Introduction","Box","paddingTop","background","justifyContent","padding","Information","fill","height","width","Typography","modelType","title","upperFirst","Content","shadow","hasRadius","overflow","borderColor","List","addComponentToDZ","isMain"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { Layouts, useTracking } from '@strapi/admin/strapi-admin';
|
|
3
|
-
import { Flex, Button,
|
|
2
|
+
import { Layouts, useTracking, tours } from '@strapi/admin/strapi-admin';
|
|
3
|
+
import { Flex, Button, Box, Typography } from '@strapi/design-system';
|
|
4
4
|
import { Pencil, Plus, Information } from '@strapi/icons';
|
|
5
5
|
import upperFirst from 'lodash/upperFirst';
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
@@ -113,6 +113,11 @@ const ListView = ()=>{
|
|
|
113
113
|
});
|
|
114
114
|
return /*#__PURE__*/ jsxs(Fragment, {
|
|
115
115
|
children: [
|
|
116
|
+
/*#__PURE__*/ jsx(tours.contentTypeBuilder.Introduction, {
|
|
117
|
+
children: /*#__PURE__*/ jsx(Box, {
|
|
118
|
+
paddingTop: 5
|
|
119
|
+
})
|
|
120
|
+
}),
|
|
116
121
|
isDeleted && /*#__PURE__*/ jsx(Flex, {
|
|
117
122
|
background: "danger100",
|
|
118
123
|
justifyContent: 'center',
|