@strapi/content-type-builder 5.19.0 → 5.21.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.
Files changed (50) hide show
  1. package/dist/admin/components/DataManager/DataManagerProvider.js +3 -6
  2. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  3. package/dist/admin/components/DataManager/DataManagerProvider.mjs +4 -7
  4. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  5. package/dist/admin/components/FormModal/attributes/ConditionForm.js +8 -6
  6. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
  7. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +8 -6
  8. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
  9. package/dist/admin/components/PluralName.js +20 -17
  10. package/dist/admin/components/PluralName.js.map +1 -1
  11. package/dist/admin/components/PluralName.mjs +20 -17
  12. package/dist/admin/components/PluralName.mjs.map +1 -1
  13. package/dist/admin/components/SingularName.js +12 -4
  14. package/dist/admin/components/SingularName.js.map +1 -1
  15. package/dist/admin/components/SingularName.mjs +12 -4
  16. package/dist/admin/components/SingularName.mjs.map +1 -1
  17. package/dist/admin/pages/App/index.js +0 -7
  18. package/dist/admin/pages/App/index.js.map +1 -1
  19. package/dist/admin/pages/App/index.mjs +2 -9
  20. package/dist/admin/pages/App/index.mjs.map +1 -1
  21. package/dist/admin/pages/ListView/EmptyState.js +1 -1
  22. package/dist/admin/pages/ListView/EmptyState.js.map +1 -1
  23. package/dist/admin/pages/ListView/EmptyState.mjs +2 -2
  24. package/dist/admin/pages/ListView/EmptyState.mjs.map +1 -1
  25. package/dist/admin/pages/ListView/ListView.js +1 -1
  26. package/dist/admin/pages/ListView/ListView.js.map +1 -1
  27. package/dist/admin/pages/ListView/ListView.mjs +2 -2
  28. package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
  29. package/dist/server/controllers/validation/schema.js +4 -2
  30. package/dist/server/controllers/validation/schema.js.map +1 -1
  31. package/dist/server/controllers/validation/schema.mjs +3 -3
  32. package/dist/server/controllers/validation/schema.mjs.map +1 -1
  33. package/dist/server/routes/content-api.js +191 -25
  34. package/dist/server/routes/content-api.js.map +1 -1
  35. package/dist/server/routes/content-api.mjs +172 -25
  36. package/dist/server/routes/content-api.mjs.map +1 -1
  37. package/dist/server/services/builder.js +1 -0
  38. package/dist/server/services/builder.js.map +1 -1
  39. package/dist/server/services/builder.mjs +1 -0
  40. package/dist/server/services/builder.mjs.map +1 -1
  41. package/dist/server/src/controllers/validation/schema.d.ts +2774 -3828
  42. package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
  43. package/dist/server/src/index.d.ts +1 -8
  44. package/dist/server/src/index.d.ts.map +1 -1
  45. package/dist/server/src/routes/content-api.d.ts +2 -8
  46. package/dist/server/src/routes/content-api.d.ts.map +1 -1
  47. package/dist/server/src/routes/index.d.ts +1 -8
  48. package/dist/server/src/routes/index.d.ts.map +1 -1
  49. package/dist/server/src/services/builder.d.ts.map +1 -1
  50. package/package.json +6 -6
@@ -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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"}
@@ -11,36 +11,39 @@ const PluralName = ({ description, error, intlLabel, modifiedData, name, onChang
11
11
  const { formatMessage } = reactIntl.useIntl();
12
12
  const onChangeRef = React.useRef(onChange);
13
13
  const displayName = modifiedData?.displayName || '';
14
+ const previousDisplayName = React.useRef(displayName);
15
+ const previousValue = React.useRef(value);
14
16
  React.useEffect(()=>{
15
- if (displayName) {
16
- const value = nameToSlug.nameToSlug(displayName);
17
+ if (displayName && displayName !== previousDisplayName.current) {
18
+ const baseValue = nameToSlug.nameToSlug(displayName);
19
+ let newValue = baseValue;
17
20
  try {
18
- const plural = pluralize(value, 2);
19
- onChangeRef.current({
20
- target: {
21
- name,
22
- value: plural
23
- }
24
- });
21
+ newValue = pluralize(baseValue, 2);
25
22
  } catch (err) {
26
- onChangeRef.current({
27
- target: {
28
- name,
29
- value
30
- }
31
- });
23
+ // If pluralize fails, use the base value
32
24
  }
33
- } else {
25
+ onChangeRef.current({
26
+ target: {
27
+ name,
28
+ value: newValue
29
+ }
30
+ });
31
+ previousValue.current = newValue;
32
+ previousDisplayName.current = displayName;
33
+ } else if (!displayName) {
34
34
  onChangeRef.current({
35
35
  target: {
36
36
  name,
37
37
  value: ''
38
38
  }
39
39
  });
40
+ previousValue.current = '';
41
+ previousDisplayName.current = '';
40
42
  }
41
43
  }, [
42
44
  displayName,
43
- name
45
+ name,
46
+ value
44
47
  ]);
45
48
  const errorMessage = error ? formatMessage({
46
49
  id: error,
@@ -1 +1 @@
1
- {"version":3,"file":"PluralName.js","sources":["../../../admin/src/components/PluralName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface Description {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n}\n\ninterface PluralNameProps {\n description?: Description;\n error?: string;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string;\n}\n\nexport const PluralName = ({\n description,\n error,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value,\n}: PluralNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName) {\n const value = nameToSlug(displayName);\n\n try {\n const plural = pluralize(value, 2);\n onChangeRef.current({ target: { name, value: plural } });\n } catch (err) {\n onChangeRef.current({ target: { name, value } });\n }\n } else {\n onChangeRef.current({ target: { name, value: '' } });\n }\n }, [displayName, name]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} />\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["PluralName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","displayName","useEffect","nameToSlug","plural","pluralize","current","target","err","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","Error"],"mappings":";;;;;;;;;MA0BaA,UAAa,GAAA,CAAC,EACzBC,WAAW,EACXC,KAAK,EACLC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAK,EACW,GAAA;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,YAAOL,CAAAA,QAAAA,CAAAA;IAC3B,MAAMM,WAAAA,GAAcR,cAAcQ,WAAe,IAAA,EAAA;IAEjDC,eAAU,CAAA,IAAA;AACR,QAAA,IAAID,WAAa,EAAA;AACf,YAAA,MAAML,QAAQO,qBAAWF,CAAAA,WAAAA,CAAAA;YAEzB,IAAI;gBACF,MAAMG,MAAAA,GAASC,UAAUT,KAAO,EAAA,CAAA,CAAA;AAChCG,gBAAAA,WAAAA,CAAYO,OAAO,CAAC;oBAAEC,MAAQ,EAAA;AAAEb,wBAAAA,IAAAA;wBAAME,KAAOQ,EAAAA;AAAO;AAAE,iBAAA,CAAA;AACxD,aAAA,CAAE,OAAOI,GAAK,EAAA;AACZT,gBAAAA,WAAAA,CAAYO,OAAO,CAAC;oBAAEC,MAAQ,EAAA;AAAEb,wBAAAA,IAAAA;AAAME,wBAAAA;AAAM;AAAE,iBAAA,CAAA;AAChD;SACK,MAAA;AACLG,YAAAA,WAAAA,CAAYO,OAAO,CAAC;gBAAEC,MAAQ,EAAA;AAAEb,oBAAAA,IAAAA;oBAAME,KAAO,EAAA;AAAG;AAAE,aAAA,CAAA;AACpD;KACC,EAAA;AAACK,QAAAA,WAAAA;AAAaP,QAAAA;AAAK,KAAA,CAAA;IAEtB,MAAMe,YAAAA,GAAelB,QAAQM,aAAc,CAAA;QAAEa,EAAInB,EAAAA,KAAAA;QAAOoB,cAAgBpB,EAAAA;KAAW,CAAA,GAAA,EAAA;IACnF,MAAMqB,IAAAA,GAAOtB,cACTO,aACE,CAAA;AAAEa,QAAAA,EAAAA,EAAIpB,YAAYoB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBrB,YAAYqB;KAClD,EAAA;AAAE,QAAA,GAAGrB,YAAYuB;KAEnB,CAAA,GAAA,EAAA;AACJ,IAAA,MAAMC,QAAQjB,aAAcL,CAAAA,SAAAA,CAAAA;IAE5B,qBACEuB,eAAA,CAACC,mBAAMC,IAAI,EAAA;QAAC1B,KAAOkB,EAAAA,YAAAA;QAAcG,IAAMA,EAAAA,IAAAA;QAAMlB,IAAMA,EAAAA,IAAAA;;AACjD,0BAAAwB,cAAA,CAACF,mBAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,cAACE,CAAAA,sBAAAA,EAAAA;gBAAUzB,QAAUA,EAAAA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAS,IAAA;;AAC/C,0BAAAsB,cAAA,CAACF,mBAAMK,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
1
+ {"version":3,"file":"PluralName.js","sources":["../../../admin/src/components/PluralName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface Description {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n}\n\ninterface PluralNameProps {\n description?: Description;\n error?: string;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string;\n}\n\nexport const PluralName = ({\n description,\n error,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value,\n}: PluralNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n const previousDisplayName = useRef(displayName);\n const previousValue = useRef(value);\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const baseValue = nameToSlug(displayName);\n let newValue = baseValue;\n\n try {\n newValue = pluralize(baseValue, 2);\n } catch (err) {\n // If pluralize fails, use the base value\n }\n\n onChangeRef.current({ target: { name, value: newValue } });\n previousValue.current = newValue;\n previousDisplayName.current = displayName;\n } else if (!displayName) {\n onChangeRef.current({ target: { name, value: '' } });\n previousValue.current = '';\n previousDisplayName.current = '';\n }\n }, [displayName, name, value]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} />\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["PluralName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","displayName","previousDisplayName","previousValue","useEffect","current","baseValue","nameToSlug","newValue","pluralize","err","target","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","Error"],"mappings":";;;;;;;;;MA0BaA,UAAa,GAAA,CAAC,EACzBC,WAAW,EACXC,KAAK,EACLC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAK,EACW,GAAA;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,YAAOL,CAAAA,QAAAA,CAAAA;IAC3B,MAAMM,WAAAA,GAAcR,cAAcQ,WAAe,IAAA,EAAA;AACjD,IAAA,MAAMC,sBAAsBF,YAAOC,CAAAA,WAAAA,CAAAA;AACnC,IAAA,MAAME,gBAAgBH,YAAOJ,CAAAA,KAAAA,CAAAA;IAE7BQ,eAAU,CAAA,IAAA;AACR,QAAA,IAAIH,WAAeA,IAAAA,WAAAA,KAAgBC,mBAAoBG,CAAAA,OAAO,EAAE;AAC9D,YAAA,MAAMC,YAAYC,qBAAWN,CAAAA,WAAAA,CAAAA;AAC7B,YAAA,IAAIO,QAAWF,GAAAA,SAAAA;YAEf,IAAI;AACFE,gBAAAA,QAAAA,GAAWC,UAAUH,SAAW,EAAA,CAAA,CAAA;AAClC,aAAA,CAAE,OAAOI,GAAK,EAAA;;AAEd;AAEAX,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEM,MAAQ,EAAA;AAAEjB,oBAAAA,IAAAA;oBAAME,KAAOY,EAAAA;AAAS;AAAE,aAAA,CAAA;AACxDL,YAAAA,aAAAA,CAAcE,OAAO,GAAGG,QAAAA;AACxBN,YAAAA,mBAAAA,CAAoBG,OAAO,GAAGJ,WAAAA;SACzB,MAAA,IAAI,CAACA,WAAa,EAAA;AACvBF,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEM,MAAQ,EAAA;AAAEjB,oBAAAA,IAAAA;oBAAME,KAAO,EAAA;AAAG;AAAE,aAAA,CAAA;AAClDO,YAAAA,aAAAA,CAAcE,OAAO,GAAG,EAAA;AACxBH,YAAAA,mBAAAA,CAAoBG,OAAO,GAAG,EAAA;AAChC;KACC,EAAA;AAACJ,QAAAA,WAAAA;AAAaP,QAAAA,IAAAA;AAAME,QAAAA;AAAM,KAAA,CAAA;IAE7B,MAAMgB,YAAAA,GAAerB,QAAQM,aAAc,CAAA;QAAEgB,EAAItB,EAAAA,KAAAA;QAAOuB,cAAgBvB,EAAAA;KAAW,CAAA,GAAA,EAAA;IACnF,MAAMwB,IAAAA,GAAOzB,cACTO,aACE,CAAA;AAAEgB,QAAAA,EAAAA,EAAIvB,YAAYuB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBxB,YAAYwB;KAClD,EAAA;AAAE,QAAA,GAAGxB,YAAY0B;KAEnB,CAAA,GAAA,EAAA;AACJ,IAAA,MAAMC,QAAQpB,aAAcL,CAAAA,SAAAA,CAAAA;IAE5B,qBACE0B,eAAA,CAACC,mBAAMC,IAAI,EAAA;QAAC7B,KAAOqB,EAAAA,YAAAA;QAAcG,IAAMA,EAAAA,IAAAA;QAAMrB,IAAMA,EAAAA,IAAAA;;AACjD,0BAAA2B,cAAA,CAACF,mBAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,cAACE,CAAAA,sBAAAA,EAAAA;gBAAU5B,QAAUA,EAAAA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAS,IAAA;;AAC/C,0BAAAyB,cAAA,CAACF,mBAAMK,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
@@ -9,36 +9,39 @@ const PluralName = ({ description, error, intlLabel, modifiedData, name, onChang
9
9
  const { formatMessage } = useIntl();
10
10
  const onChangeRef = useRef(onChange);
11
11
  const displayName = modifiedData?.displayName || '';
12
+ const previousDisplayName = useRef(displayName);
13
+ const previousValue = useRef(value);
12
14
  useEffect(()=>{
13
- if (displayName) {
14
- const value = nameToSlug(displayName);
15
+ if (displayName && displayName !== previousDisplayName.current) {
16
+ const baseValue = nameToSlug(displayName);
17
+ let newValue = baseValue;
15
18
  try {
16
- const plural = pluralize(value, 2);
17
- onChangeRef.current({
18
- target: {
19
- name,
20
- value: plural
21
- }
22
- });
19
+ newValue = pluralize(baseValue, 2);
23
20
  } catch (err) {
24
- onChangeRef.current({
25
- target: {
26
- name,
27
- value
28
- }
29
- });
21
+ // If pluralize fails, use the base value
30
22
  }
31
- } else {
23
+ onChangeRef.current({
24
+ target: {
25
+ name,
26
+ value: newValue
27
+ }
28
+ });
29
+ previousValue.current = newValue;
30
+ previousDisplayName.current = displayName;
31
+ } else if (!displayName) {
32
32
  onChangeRef.current({
33
33
  target: {
34
34
  name,
35
35
  value: ''
36
36
  }
37
37
  });
38
+ previousValue.current = '';
39
+ previousDisplayName.current = '';
38
40
  }
39
41
  }, [
40
42
  displayName,
41
- name
43
+ name,
44
+ value
42
45
  ]);
43
46
  const errorMessage = error ? formatMessage({
44
47
  id: error,
@@ -1 +1 @@
1
- {"version":3,"file":"PluralName.mjs","sources":["../../../admin/src/components/PluralName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface Description {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n}\n\ninterface PluralNameProps {\n description?: Description;\n error?: string;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string;\n}\n\nexport const PluralName = ({\n description,\n error,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value,\n}: PluralNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName) {\n const value = nameToSlug(displayName);\n\n try {\n const plural = pluralize(value, 2);\n onChangeRef.current({ target: { name, value: plural } });\n } catch (err) {\n onChangeRef.current({ target: { name, value } });\n }\n } else {\n onChangeRef.current({ target: { name, value: '' } });\n }\n }, [displayName, name]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} />\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["PluralName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","displayName","useEffect","nameToSlug","plural","pluralize","current","target","err","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","Error"],"mappings":";;;;;;;MA0BaA,UAAa,GAAA,CAAC,EACzBC,WAAW,EACXC,KAAK,EACLC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAK,EACW,GAAA;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,MAAOL,CAAAA,QAAAA,CAAAA;IAC3B,MAAMM,WAAAA,GAAcR,cAAcQ,WAAe,IAAA,EAAA;IAEjDC,SAAU,CAAA,IAAA;AACR,QAAA,IAAID,WAAa,EAAA;AACf,YAAA,MAAML,QAAQO,UAAWF,CAAAA,WAAAA,CAAAA;YAEzB,IAAI;gBACF,MAAMG,MAAAA,GAASC,UAAUT,KAAO,EAAA,CAAA,CAAA;AAChCG,gBAAAA,WAAAA,CAAYO,OAAO,CAAC;oBAAEC,MAAQ,EAAA;AAAEb,wBAAAA,IAAAA;wBAAME,KAAOQ,EAAAA;AAAO;AAAE,iBAAA,CAAA;AACxD,aAAA,CAAE,OAAOI,GAAK,EAAA;AACZT,gBAAAA,WAAAA,CAAYO,OAAO,CAAC;oBAAEC,MAAQ,EAAA;AAAEb,wBAAAA,IAAAA;AAAME,wBAAAA;AAAM;AAAE,iBAAA,CAAA;AAChD;SACK,MAAA;AACLG,YAAAA,WAAAA,CAAYO,OAAO,CAAC;gBAAEC,MAAQ,EAAA;AAAEb,oBAAAA,IAAAA;oBAAME,KAAO,EAAA;AAAG;AAAE,aAAA,CAAA;AACpD;KACC,EAAA;AAACK,QAAAA,WAAAA;AAAaP,QAAAA;AAAK,KAAA,CAAA;IAEtB,MAAMe,YAAAA,GAAelB,QAAQM,aAAc,CAAA;QAAEa,EAAInB,EAAAA,KAAAA;QAAOoB,cAAgBpB,EAAAA;KAAW,CAAA,GAAA,EAAA;IACnF,MAAMqB,IAAAA,GAAOtB,cACTO,aACE,CAAA;AAAEa,QAAAA,EAAAA,EAAIpB,YAAYoB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBrB,YAAYqB;KAClD,EAAA;AAAE,QAAA,GAAGrB,YAAYuB;KAEnB,CAAA,GAAA,EAAA;AACJ,IAAA,MAAMC,QAAQjB,aAAcL,CAAAA,SAAAA,CAAAA;IAE5B,qBACEuB,IAAA,CAACC,MAAMC,IAAI,EAAA;QAAC1B,KAAOkB,EAAAA,YAAAA;QAAcG,IAAMA,EAAAA,IAAAA;QAAMlB,IAAMA,EAAAA,IAAAA;;AACjD,0BAAAwB,GAAA,CAACF,MAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,GAACE,CAAAA,SAAAA,EAAAA;gBAAUzB,QAAUA,EAAAA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAS,IAAA;;AAC/C,0BAAAsB,GAAA,CAACF,MAAMK,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
1
+ {"version":3,"file":"PluralName.mjs","sources":["../../../admin/src/components/PluralName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport pluralize from 'pluralize';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface Description {\n id: string;\n defaultMessage: string;\n values?: Record<string, any>;\n}\n\ninterface PluralNameProps {\n description?: Description;\n error?: string;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string;\n}\n\nexport const PluralName = ({\n description,\n error,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value,\n}: PluralNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n const previousDisplayName = useRef(displayName);\n const previousValue = useRef(value);\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const baseValue = nameToSlug(displayName);\n let newValue = baseValue;\n\n try {\n newValue = pluralize(baseValue, 2);\n } catch (err) {\n // If pluralize fails, use the base value\n }\n\n onChangeRef.current({ target: { name, value: newValue } });\n previousValue.current = newValue;\n previousDisplayName.current = displayName;\n } else if (!displayName) {\n onChangeRef.current({ target: { name, value: '' } });\n previousValue.current = '';\n previousDisplayName.current = '';\n }\n }, [displayName, name, value]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} />\n <Field.Error />\n </Field.Root>\n );\n};\n"],"names":["PluralName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","displayName","previousDisplayName","previousValue","useEffect","current","baseValue","nameToSlug","newValue","pluralize","err","target","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","Error"],"mappings":";;;;;;;MA0BaA,UAAa,GAAA,CAAC,EACzBC,WAAW,EACXC,KAAK,EACLC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAK,EACW,GAAA;IAChB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,MAAOL,CAAAA,QAAAA,CAAAA;IAC3B,MAAMM,WAAAA,GAAcR,cAAcQ,WAAe,IAAA,EAAA;AACjD,IAAA,MAAMC,sBAAsBF,MAAOC,CAAAA,WAAAA,CAAAA;AACnC,IAAA,MAAME,gBAAgBH,MAAOJ,CAAAA,KAAAA,CAAAA;IAE7BQ,SAAU,CAAA,IAAA;AACR,QAAA,IAAIH,WAAeA,IAAAA,WAAAA,KAAgBC,mBAAoBG,CAAAA,OAAO,EAAE;AAC9D,YAAA,MAAMC,YAAYC,UAAWN,CAAAA,WAAAA,CAAAA;AAC7B,YAAA,IAAIO,QAAWF,GAAAA,SAAAA;YAEf,IAAI;AACFE,gBAAAA,QAAAA,GAAWC,UAAUH,SAAW,EAAA,CAAA,CAAA;AAClC,aAAA,CAAE,OAAOI,GAAK,EAAA;;AAEd;AAEAX,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEM,MAAQ,EAAA;AAAEjB,oBAAAA,IAAAA;oBAAME,KAAOY,EAAAA;AAAS;AAAE,aAAA,CAAA;AACxDL,YAAAA,aAAAA,CAAcE,OAAO,GAAGG,QAAAA;AACxBN,YAAAA,mBAAAA,CAAoBG,OAAO,GAAGJ,WAAAA;SACzB,MAAA,IAAI,CAACA,WAAa,EAAA;AACvBF,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEM,MAAQ,EAAA;AAAEjB,oBAAAA,IAAAA;oBAAME,KAAO,EAAA;AAAG;AAAE,aAAA,CAAA;AAClDO,YAAAA,aAAAA,CAAcE,OAAO,GAAG,EAAA;AACxBH,YAAAA,mBAAAA,CAAoBG,OAAO,GAAG,EAAA;AAChC;KACC,EAAA;AAACJ,QAAAA,WAAAA;AAAaP,QAAAA,IAAAA;AAAME,QAAAA;AAAM,KAAA,CAAA;IAE7B,MAAMgB,YAAAA,GAAerB,QAAQM,aAAc,CAAA;QAAEgB,EAAItB,EAAAA,KAAAA;QAAOuB,cAAgBvB,EAAAA;KAAW,CAAA,GAAA,EAAA;IACnF,MAAMwB,IAAAA,GAAOzB,cACTO,aACE,CAAA;AAAEgB,QAAAA,EAAAA,EAAIvB,YAAYuB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBxB,YAAYwB;KAClD,EAAA;AAAE,QAAA,GAAGxB,YAAY0B;KAEnB,CAAA,GAAA,EAAA;AACJ,IAAA,MAAMC,QAAQpB,aAAcL,CAAAA,SAAAA,CAAAA;IAE5B,qBACE0B,IAAA,CAACC,MAAMC,IAAI,EAAA;QAAC7B,KAAOqB,EAAAA,YAAAA;QAAcG,IAAMA,EAAAA,IAAAA;QAAMrB,IAAMA,EAAAA,IAAAA;;AACjD,0BAAA2B,GAAA,CAACF,MAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,GAACE,CAAAA,SAAAA,EAAAA;gBAAU5B,QAAUA,EAAAA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAS,IAAA;;AAC/C,0BAAAyB,GAAA,CAACF,MAAMK,KAAK,EAAA,EAAA;;;AAGlB;;;;"}
@@ -9,26 +9,34 @@ var nameToSlug = require('../utils/nameToSlug.js');
9
9
  const SingularName = ({ description = null, error = null, intlLabel, modifiedData, name, onChange, value = null })=>{
10
10
  const { formatMessage } = reactIntl.useIntl();
11
11
  const onChangeRef = React.useRef(onChange);
12
+ const previousValue = React.useRef(value);
13
+ const previousDisplayName = React.useRef(modifiedData?.displayName || '');
12
14
  const displayName = modifiedData?.displayName || '';
13
15
  React.useEffect(()=>{
14
- if (displayName) {
16
+ if (displayName && displayName !== previousDisplayName.current) {
17
+ const newValue = nameToSlug.nameToSlug(displayName);
15
18
  onChangeRef.current({
16
19
  target: {
17
20
  name,
18
- value: nameToSlug.nameToSlug(displayName)
21
+ value: newValue
19
22
  }
20
23
  });
21
- } else {
24
+ previousValue.current = newValue;
25
+ previousDisplayName.current = displayName;
26
+ } else if (!displayName) {
22
27
  onChangeRef.current({
23
28
  target: {
24
29
  name,
25
30
  value: ''
26
31
  }
27
32
  });
33
+ previousValue.current = '';
34
+ previousDisplayName.current = '';
28
35
  }
29
36
  }, [
30
37
  displayName,
31
- name
38
+ name,
39
+ value
32
40
  ]);
33
41
  const errorMessage = error ? formatMessage({
34
42
  id: error,
@@ -1 +1 @@
1
- {"version":3,"file":"SingularName.js","sources":["../../../admin/src/components/SingularName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface SingularNameProps {\n description?: IntlLabel | null;\n error?: string | null;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string | null;\n}\n\nexport const SingularName = ({\n description = null,\n error = null,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value = null,\n}: SingularNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName) {\n onChangeRef.current({ target: { name, value: nameToSlug(displayName) } });\n } else {\n onChangeRef.current({ target: { name, value: '' } });\n }\n }, [displayName, name]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n"],"names":["SingularName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","displayName","useEffect","current","target","nameToSlug","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","Error","Hint"],"mappings":";;;;;;;;AAmBO,MAAMA,eAAe,CAAC,EAC3BC,cAAc,IAAI,EAClBC,QAAQ,IAAI,EACZC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAAA,GAAQ,IAAI,EACM,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,YAAOL,CAAAA,QAAAA,CAAAA;IAC3B,MAAMM,WAAAA,GAAcR,cAAcQ,WAAe,IAAA,EAAA;IAEjDC,eAAU,CAAA,IAAA;AACR,QAAA,IAAID,WAAa,EAAA;AACfF,YAAAA,WAAAA,CAAYI,OAAO,CAAC;gBAAEC,MAAQ,EAAA;AAAEV,oBAAAA,IAAAA;AAAME,oBAAAA,KAAAA,EAAOS,qBAAWJ,CAAAA,WAAAA;AAAa;AAAE,aAAA,CAAA;SAClE,MAAA;AACLF,YAAAA,WAAAA,CAAYI,OAAO,CAAC;gBAAEC,MAAQ,EAAA;AAAEV,oBAAAA,IAAAA;oBAAME,KAAO,EAAA;AAAG;AAAE,aAAA,CAAA;AACpD;KACC,EAAA;AAACK,QAAAA,WAAAA;AAAaP,QAAAA;AAAK,KAAA,CAAA;IAEtB,MAAMY,YAAAA,GAAef,QAAQM,aAAc,CAAA;QAAEU,EAAIhB,EAAAA,KAAAA;QAAOiB,cAAgBjB,EAAAA;KAAW,CAAA,GAAA,EAAA;IACnF,MAAMkB,IAAAA,GAAOnB,cACTO,aACE,CAAA;AAAEU,QAAAA,EAAAA,EAAIjB,YAAYiB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBlB,YAAYkB;KAClD,EAAA;AAAE,QAAA,GAAGlB,YAAYoB;KAEnB,CAAA,GAAA,EAAA;AACJ,IAAA,MAAMC,QAAQd,aAAcL,CAAAA,SAAAA,CAAAA;IAE5B,qBACEoB,eAAA,CAACC,mBAAMC,IAAI,EAAA;QAACvB,KAAOe,EAAAA,YAAAA;QAAcG,IAAMA,EAAAA,IAAAA;QAAMf,IAAMA,EAAAA,IAAAA;;AACjD,0BAAAqB,cAAA,CAACF,mBAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,cAACE,CAAAA,sBAAAA,EAAAA;gBAAUtB,QAAUA,EAAAA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAS,IAAA;;AAC/C,0BAAAmB,cAAA,CAACF,mBAAMK,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAAH,cAAA,CAACF,mBAAMM,IAAI,EAAA,EAAA;;;AAGjB;;;;"}
1
+ {"version":3,"file":"SingularName.js","sources":["../../../admin/src/components/SingularName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface SingularNameProps {\n description?: IntlLabel | null;\n error?: string | null;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string | null;\n}\n\nexport const SingularName = ({\n description = null,\n error = null,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value = null,\n}: SingularNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const previousValue = useRef(value);\n const previousDisplayName = useRef(modifiedData?.displayName || '');\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const newValue = nameToSlug(displayName);\n onChangeRef.current({ target: { name, value: newValue } });\n previousValue.current = newValue;\n previousDisplayName.current = displayName;\n } else if (!displayName) {\n onChangeRef.current({ target: { name, value: '' } });\n previousValue.current = '';\n previousDisplayName.current = '';\n }\n }, [displayName, name, value]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n"],"names":["SingularName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","previousValue","previousDisplayName","displayName","useEffect","current","newValue","nameToSlug","target","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","Error","Hint"],"mappings":";;;;;;;;AAmBO,MAAMA,eAAe,CAAC,EAC3BC,cAAc,IAAI,EAClBC,QAAQ,IAAI,EACZC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAAA,GAAQ,IAAI,EACM,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,YAAOL,CAAAA,QAAAA,CAAAA;AAC3B,IAAA,MAAMM,gBAAgBD,YAAOJ,CAAAA,KAAAA,CAAAA;IAC7B,MAAMM,mBAAAA,GAAsBF,YAAOP,CAAAA,YAAAA,EAAcU,WAAe,IAAA,EAAA,CAAA;IAChE,MAAMA,WAAAA,GAAcV,cAAcU,WAAe,IAAA,EAAA;IAEjDC,eAAU,CAAA,IAAA;AACR,QAAA,IAAID,WAAeA,IAAAA,WAAAA,KAAgBD,mBAAoBG,CAAAA,OAAO,EAAE;AAC9D,YAAA,MAAMC,WAAWC,qBAAWJ,CAAAA,WAAAA,CAAAA;AAC5BJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAQ,EAAA;AAAEd,oBAAAA,IAAAA;oBAAME,KAAOU,EAAAA;AAAS;AAAE,aAAA,CAAA;AACxDL,YAAAA,aAAAA,CAAcI,OAAO,GAAGC,QAAAA;AACxBJ,YAAAA,mBAAAA,CAAoBG,OAAO,GAAGF,WAAAA;SACzB,MAAA,IAAI,CAACA,WAAa,EAAA;AACvBJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAQ,EAAA;AAAEd,oBAAAA,IAAAA;oBAAME,KAAO,EAAA;AAAG;AAAE,aAAA,CAAA;AAClDK,YAAAA,aAAAA,CAAcI,OAAO,GAAG,EAAA;AACxBH,YAAAA,mBAAAA,CAAoBG,OAAO,GAAG,EAAA;AAChC;KACC,EAAA;AAACF,QAAAA,WAAAA;AAAaT,QAAAA,IAAAA;AAAME,QAAAA;AAAM,KAAA,CAAA;IAE7B,MAAMa,YAAAA,GAAelB,QAAQM,aAAc,CAAA;QAAEa,EAAInB,EAAAA,KAAAA;QAAOoB,cAAgBpB,EAAAA;KAAW,CAAA,GAAA,EAAA;IACnF,MAAMqB,IAAAA,GAAOtB,cACTO,aACE,CAAA;AAAEa,QAAAA,EAAAA,EAAIpB,YAAYoB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBrB,YAAYqB;KAClD,EAAA;AAAE,QAAA,GAAGrB,YAAYuB;KAEnB,CAAA,GAAA,EAAA;AACJ,IAAA,MAAMC,QAAQjB,aAAcL,CAAAA,SAAAA,CAAAA;IAE5B,qBACEuB,eAAA,CAACC,mBAAMC,IAAI,EAAA;QAAC1B,KAAOkB,EAAAA,YAAAA;QAAcG,IAAMA,EAAAA,IAAAA;QAAMlB,IAAMA,EAAAA,IAAAA;;AACjD,0BAAAwB,cAAA,CAACF,mBAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,cAACE,CAAAA,sBAAAA,EAAAA;gBAAUzB,QAAUA,EAAAA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAS,IAAA;;AAC/C,0BAAAsB,cAAA,CAACF,mBAAMK,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAAH,cAAA,CAACF,mBAAMM,IAAI,EAAA,EAAA;;;AAGjB;;;;"}
@@ -7,26 +7,34 @@ import { nameToSlug } from '../utils/nameToSlug.mjs';
7
7
  const SingularName = ({ description = null, error = null, intlLabel, modifiedData, name, onChange, value = null })=>{
8
8
  const { formatMessage } = useIntl();
9
9
  const onChangeRef = useRef(onChange);
10
+ const previousValue = useRef(value);
11
+ const previousDisplayName = useRef(modifiedData?.displayName || '');
10
12
  const displayName = modifiedData?.displayName || '';
11
13
  useEffect(()=>{
12
- if (displayName) {
14
+ if (displayName && displayName !== previousDisplayName.current) {
15
+ const newValue = nameToSlug(displayName);
13
16
  onChangeRef.current({
14
17
  target: {
15
18
  name,
16
- value: nameToSlug(displayName)
19
+ value: newValue
17
20
  }
18
21
  });
19
- } else {
22
+ previousValue.current = newValue;
23
+ previousDisplayName.current = displayName;
24
+ } else if (!displayName) {
20
25
  onChangeRef.current({
21
26
  target: {
22
27
  name,
23
28
  value: ''
24
29
  }
25
30
  });
31
+ previousValue.current = '';
32
+ previousDisplayName.current = '';
26
33
  }
27
34
  }, [
28
35
  displayName,
29
- name
36
+ name,
37
+ value
30
38
  ]);
31
39
  const errorMessage = error ? formatMessage({
32
40
  id: error,
@@ -1 +1 @@
1
- {"version":3,"file":"SingularName.mjs","sources":["../../../admin/src/components/SingularName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface SingularNameProps {\n description?: IntlLabel | null;\n error?: string | null;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string | null;\n}\n\nexport const SingularName = ({\n description = null,\n error = null,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value = null,\n}: SingularNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName) {\n onChangeRef.current({ target: { name, value: nameToSlug(displayName) } });\n } else {\n onChangeRef.current({ target: { name, value: '' } });\n }\n }, [displayName, name]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n"],"names":["SingularName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","displayName","useEffect","current","target","nameToSlug","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","Error","Hint"],"mappings":";;;;;;AAmBO,MAAMA,eAAe,CAAC,EAC3BC,cAAc,IAAI,EAClBC,QAAQ,IAAI,EACZC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAAA,GAAQ,IAAI,EACM,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,MAAOL,CAAAA,QAAAA,CAAAA;IAC3B,MAAMM,WAAAA,GAAcR,cAAcQ,WAAe,IAAA,EAAA;IAEjDC,SAAU,CAAA,IAAA;AACR,QAAA,IAAID,WAAa,EAAA;AACfF,YAAAA,WAAAA,CAAYI,OAAO,CAAC;gBAAEC,MAAQ,EAAA;AAAEV,oBAAAA,IAAAA;AAAME,oBAAAA,KAAAA,EAAOS,UAAWJ,CAAAA,WAAAA;AAAa;AAAE,aAAA,CAAA;SAClE,MAAA;AACLF,YAAAA,WAAAA,CAAYI,OAAO,CAAC;gBAAEC,MAAQ,EAAA;AAAEV,oBAAAA,IAAAA;oBAAME,KAAO,EAAA;AAAG;AAAE,aAAA,CAAA;AACpD;KACC,EAAA;AAACK,QAAAA,WAAAA;AAAaP,QAAAA;AAAK,KAAA,CAAA;IAEtB,MAAMY,YAAAA,GAAef,QAAQM,aAAc,CAAA;QAAEU,EAAIhB,EAAAA,KAAAA;QAAOiB,cAAgBjB,EAAAA;KAAW,CAAA,GAAA,EAAA;IACnF,MAAMkB,IAAAA,GAAOnB,cACTO,aACE,CAAA;AAAEU,QAAAA,EAAAA,EAAIjB,YAAYiB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBlB,YAAYkB;KAClD,EAAA;AAAE,QAAA,GAAGlB,YAAYoB;KAEnB,CAAA,GAAA,EAAA;AACJ,IAAA,MAAMC,QAAQd,aAAcL,CAAAA,SAAAA,CAAAA;IAE5B,qBACEoB,IAAA,CAACC,MAAMC,IAAI,EAAA;QAACvB,KAAOe,EAAAA,YAAAA;QAAcG,IAAMA,EAAAA,IAAAA;QAAMf,IAAMA,EAAAA,IAAAA;;AACjD,0BAAAqB,GAAA,CAACF,MAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,GAACE,CAAAA,SAAAA,EAAAA;gBAAUtB,QAAUA,EAAAA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAS,IAAA;;AAC/C,0BAAAmB,GAAA,CAACF,MAAMK,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAAH,GAAA,CAACF,MAAMM,IAAI,EAAA,EAAA;;;AAGjB;;;;"}
1
+ {"version":3,"file":"SingularName.mjs","sources":["../../../admin/src/components/SingularName.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nimport { Field, TextInput } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { nameToSlug } from '../utils/nameToSlug';\n\nimport type { IntlLabel } from '../types';\n\ninterface SingularNameProps {\n description?: IntlLabel | null;\n error?: string | null;\n intlLabel: IntlLabel;\n modifiedData: Record<string, any>;\n name: string;\n onChange: (value: { target: { name: string; value: string } }) => void;\n value?: string | null;\n}\n\nexport const SingularName = ({\n description = null,\n error = null,\n intlLabel,\n modifiedData,\n name,\n onChange,\n value = null,\n}: SingularNameProps) => {\n const { formatMessage } = useIntl();\n const onChangeRef = useRef(onChange);\n const previousValue = useRef(value);\n const previousDisplayName = useRef(modifiedData?.displayName || '');\n const displayName = modifiedData?.displayName || '';\n\n useEffect(() => {\n if (displayName && displayName !== previousDisplayName.current) {\n const newValue = nameToSlug(displayName);\n onChangeRef.current({ target: { name, value: newValue } });\n previousValue.current = newValue;\n previousDisplayName.current = displayName;\n } else if (!displayName) {\n onChangeRef.current({ target: { name, value: '' } });\n previousValue.current = '';\n previousDisplayName.current = '';\n }\n }, [displayName, name, value]);\n\n const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : '';\n const hint = description\n ? formatMessage(\n { id: description.id, defaultMessage: description.defaultMessage },\n { ...description.values }\n )\n : '';\n const label = formatMessage(intlLabel);\n\n return (\n <Field.Root error={errorMessage} hint={hint} name={name}>\n <Field.Label>{label}</Field.Label>\n <TextInput onChange={onChange} value={value || ''} />\n <Field.Error />\n <Field.Hint />\n </Field.Root>\n );\n};\n"],"names":["SingularName","description","error","intlLabel","modifiedData","name","onChange","value","formatMessage","useIntl","onChangeRef","useRef","previousValue","previousDisplayName","displayName","useEffect","current","newValue","nameToSlug","target","errorMessage","id","defaultMessage","hint","values","label","_jsxs","Field","Root","_jsx","Label","TextInput","Error","Hint"],"mappings":";;;;;;AAmBO,MAAMA,eAAe,CAAC,EAC3BC,cAAc,IAAI,EAClBC,QAAQ,IAAI,EACZC,SAAS,EACTC,YAAY,EACZC,IAAI,EACJC,QAAQ,EACRC,KAAAA,GAAQ,IAAI,EACM,GAAA;IAClB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,MAAOL,CAAAA,QAAAA,CAAAA;AAC3B,IAAA,MAAMM,gBAAgBD,MAAOJ,CAAAA,KAAAA,CAAAA;IAC7B,MAAMM,mBAAAA,GAAsBF,MAAOP,CAAAA,YAAAA,EAAcU,WAAe,IAAA,EAAA,CAAA;IAChE,MAAMA,WAAAA,GAAcV,cAAcU,WAAe,IAAA,EAAA;IAEjDC,SAAU,CAAA,IAAA;AACR,QAAA,IAAID,WAAeA,IAAAA,WAAAA,KAAgBD,mBAAoBG,CAAAA,OAAO,EAAE;AAC9D,YAAA,MAAMC,WAAWC,UAAWJ,CAAAA,WAAAA,CAAAA;AAC5BJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAQ,EAAA;AAAEd,oBAAAA,IAAAA;oBAAME,KAAOU,EAAAA;AAAS;AAAE,aAAA,CAAA;AACxDL,YAAAA,aAAAA,CAAcI,OAAO,GAAGC,QAAAA;AACxBJ,YAAAA,mBAAAA,CAAoBG,OAAO,GAAGF,WAAAA;SACzB,MAAA,IAAI,CAACA,WAAa,EAAA;AACvBJ,YAAAA,WAAAA,CAAYM,OAAO,CAAC;gBAAEG,MAAQ,EAAA;AAAEd,oBAAAA,IAAAA;oBAAME,KAAO,EAAA;AAAG;AAAE,aAAA,CAAA;AAClDK,YAAAA,aAAAA,CAAcI,OAAO,GAAG,EAAA;AACxBH,YAAAA,mBAAAA,CAAoBG,OAAO,GAAG,EAAA;AAChC;KACC,EAAA;AAACF,QAAAA,WAAAA;AAAaT,QAAAA,IAAAA;AAAME,QAAAA;AAAM,KAAA,CAAA;IAE7B,MAAMa,YAAAA,GAAelB,QAAQM,aAAc,CAAA;QAAEa,EAAInB,EAAAA,KAAAA;QAAOoB,cAAgBpB,EAAAA;KAAW,CAAA,GAAA,EAAA;IACnF,MAAMqB,IAAAA,GAAOtB,cACTO,aACE,CAAA;AAAEa,QAAAA,EAAAA,EAAIpB,YAAYoB,EAAE;AAAEC,QAAAA,cAAAA,EAAgBrB,YAAYqB;KAClD,EAAA;AAAE,QAAA,GAAGrB,YAAYuB;KAEnB,CAAA,GAAA,EAAA;AACJ,IAAA,MAAMC,QAAQjB,aAAcL,CAAAA,SAAAA,CAAAA;IAE5B,qBACEuB,IAAA,CAACC,MAAMC,IAAI,EAAA;QAAC1B,KAAOkB,EAAAA,YAAAA;QAAcG,IAAMA,EAAAA,IAAAA;QAAMlB,IAAMA,EAAAA,IAAAA;;AACjD,0BAAAwB,GAAA,CAACF,MAAMG,KAAK,EAAA;AAAEL,gBAAAA,QAAAA,EAAAA;;0BACdI,GAACE,CAAAA,SAAAA,EAAAA;gBAAUzB,QAAUA,EAAAA,QAAAA;AAAUC,gBAAAA,KAAAA,EAAOA,KAAS,IAAA;;AAC/C,0BAAAsB,GAAA,CAACF,MAAMK,KAAK,EAAA,EAAA,CAAA;AACZ,0BAAAH,GAAA,CAACF,MAAMM,IAAI,EAAA,EAAA;;;AAGjB;;;;"}
@@ -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, useGuidedTour, 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 const startSection = useGuidedTour('App', (state) => state.startSection);\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const startSectionRef = useRef(startSection);\n\n useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentTypeBuilder');\n }\n }, []);\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","startSection","useGuidedTour","state","autoReload","useAppInfo","startSectionRef","useRef","useEffect","current","_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;AACA,IAAA,MAAMC,eAAeC,yBAAc,CAAA,KAAA,EAAO,CAACC,KAAAA,GAAUA,MAAMF,YAAY,CAAA;AACvE,IAAA,MAAMG,aAAaC,sBAAW,CAAA,qBAAA,EAAuB,CAACF,KAAAA,GAAUA,MAAMC,UAAU,CAAA;AAChF,IAAA,MAAME,kBAAkBC,YAAON,CAAAA,YAAAA,CAAAA;IAE/BO,eAAU,CAAA,IAAA;QACR,IAAIF,eAAAA,CAAgBG,OAAO,EAAE;AAC3BH,YAAAA,eAAAA,CAAgBG,OAAO,CAAC,oBAAA,CAAA;AAC1B;AACF,KAAA,EAAG,EAAE,CAAA;IAEL,qBACEC,eAAA,CAACC,iBAAKC,OAAO,EAAA;AAACC,QAAAA,WAAAA,EAAaC,sBAAYC,IAAI;;AACzC,0BAAAC,cAAA,CAACL,iBAAKM,KAAK,EAAA;AAAEpB,gBAAAA,QAAAA,EAAAA;;0BACbmB,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;;AACGlB,oCAAAA,UAAAA,kBAAcY,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,cAACxB,CAAAA,QAAAA,EAAAA,EAAAA;;kEACtDwB,cAACgB,CAAAA,oBAAAA,EAAAA;wDACCC,IAAM,EAAA,CAAC,+CAA+C,CAAC;AACvDC,wDAAAA,OAAAA,gBAASlB,cAACxB,CAAAA,QAAAA,EAAAA,EAAAA;;kEAEZwB,cAACgB,CAAAA,oBAAAA,EAAAA;wDAAMC,IAAK,EAAA,GAAA;AAAIC,wDAAAA,OAAAA,gBAASlB,cAACxB,CAAAA,QAAAA,EAAAA,EAAAA;;;;;;;;;;;;;;AAU9C;;;;"}
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 { useRef, useEffect, Suspense, lazy } from 'react';
3
- import { useGuidedTour, useAppInfo, Page, Layouts } from '@strapi/admin/strapi-admin';
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, useGuidedTour, 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 const startSection = useGuidedTour('App', (state) => state.startSection);\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const startSectionRef = useRef(startSection);\n\n useEffect(() => {\n if (startSectionRef.current) {\n startSectionRef.current('contentTypeBuilder');\n }\n }, []);\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","startSection","useGuidedTour","state","autoReload","useAppInfo","startSectionRef","useRef","useEffect","current","_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;AACA,IAAA,MAAMC,eAAeC,aAAc,CAAA,KAAA,EAAO,CAACC,KAAAA,GAAUA,MAAMF,YAAY,CAAA;AACvE,IAAA,MAAMG,aAAaC,UAAW,CAAA,qBAAA,EAAuB,CAACF,KAAAA,GAAUA,MAAMC,UAAU,CAAA;AAChF,IAAA,MAAME,kBAAkBC,MAAON,CAAAA,YAAAA,CAAAA;IAE/BO,SAAU,CAAA,IAAA;QACR,IAAIF,eAAAA,CAAgBG,OAAO,EAAE;AAC3BH,YAAAA,eAAAA,CAAgBG,OAAO,CAAC,oBAAA,CAAA;AAC1B;AACF,KAAA,EAAG,EAAE,CAAA;IAEL,qBACEC,IAAA,CAACC,KAAKC,OAAO,EAAA;AAACC,QAAAA,WAAAA,EAAaC,YAAYC,IAAI;;AACzC,0BAAAC,GAAA,CAACL,KAAKM,KAAK,EAAA;AAAEpB,gBAAAA,QAAAA,EAAAA;;0BACbmB,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;;AACGlB,oCAAAA,UAAAA,kBAAcY,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,GAACxB,CAAAA,QAAAA,EAAAA,EAAAA;;kEACtDwB,GAACgB,CAAAA,KAAAA,EAAAA;wDACCC,IAAM,EAAA,CAAC,+CAA+C,CAAC;AACvDC,wDAAAA,OAAAA,gBAASlB,GAACxB,CAAAA,QAAAA,EAAAA,EAAAA;;kEAEZwB,GAACgB,CAAAA,KAAAA,EAAAA;wDAAMC,IAAK,EAAA,GAAA;AAAIC,wDAAAA,OAAAA,gBAASlB,GAACxB,CAAAA,QAAAA,EAAAA,EAAAA;;;;;;;;;;;;;;AAU9C;;;;"}
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.unstable_tours.contentTypeBuilder.Introduction, {
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 { unstable_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 <unstable_tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box paddingTop={5} />\n </unstable_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","unstable_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,0BAAAA,CAAeC,kBAAkB,CAACC,YAAY,EAAA;AAE7C,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
+ {"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 { unstable_tours } from '@strapi/admin/strapi-admin';
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(unstable_tours.contentTypeBuilder.Introduction, {
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 { unstable_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 <unstable_tours.contentTypeBuilder.Introduction>\n {/* Invisible Anchor */}\n <Box paddingTop={5} />\n </unstable_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","unstable_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,cAAAA,CAAeC,kBAAkB,CAACC,YAAY,EAAA;AAE7C,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;;;;"}
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;;;;"}