@strapi/content-type-builder 5.50.0 → 5.50.1

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 (227) hide show
  1. package/dist/admin/components/AIChat/Chat.js +2 -4
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -1
  3. package/dist/admin/components/AIChat/Chat.mjs +2 -4
  4. package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/UploadFigmaModal.js +1 -1
  6. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
  7. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -1
  8. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
  9. package/dist/admin/components/AIChat/components/Messages/Message.js +8 -3
  10. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  11. package/dist/admin/components/AIChat/components/Messages/Message.mjs +8 -3
  12. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
  13. package/dist/admin/components/AIChat/lib/aiClient.js +8 -2
  14. package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
  15. package/dist/admin/components/AIChat/lib/aiClient.mjs +8 -2
  16. package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
  17. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js +0 -3
  18. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.js.map +1 -1
  19. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs +0 -3
  20. package/dist/admin/components/AIChat/lib/transforms/schemas/fromCTB.mjs.map +1 -1
  21. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +9 -7
  22. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
  23. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +9 -7
  24. package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
  25. package/dist/admin/components/AIChat/providers/SchemaProvider.js +1 -1
  26. package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
  27. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs +1 -1
  28. package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
  29. package/dist/admin/components/AllowedTypesSelect.js.map +1 -1
  30. package/dist/admin/components/AllowedTypesSelect.mjs.map +1 -1
  31. package/dist/admin/components/AttributeIcon.js +1 -1
  32. package/dist/admin/components/AttributeIcon.js.map +1 -1
  33. package/dist/admin/components/AttributeIcon.mjs +1 -1
  34. package/dist/admin/components/AttributeIcon.mjs.map +1 -1
  35. package/dist/admin/components/BooleanDefaultValueSelect.js +3 -2
  36. package/dist/admin/components/BooleanDefaultValueSelect.js.map +1 -1
  37. package/dist/admin/components/BooleanDefaultValueSelect.mjs +3 -2
  38. package/dist/admin/components/BooleanDefaultValueSelect.mjs.map +1 -1
  39. package/dist/admin/components/BooleanRadioGroup.js.map +1 -1
  40. package/dist/admin/components/BooleanRadioGroup.mjs.map +1 -1
  41. package/dist/admin/components/CTBSession/useCTBTracking.js +3 -3
  42. package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -1
  43. package/dist/admin/components/CTBSession/useCTBTracking.mjs +3 -3
  44. package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -1
  45. package/dist/admin/components/CheckboxWithNumberField.js +3 -2
  46. package/dist/admin/components/CheckboxWithNumberField.js.map +1 -1
  47. package/dist/admin/components/CheckboxWithNumberField.mjs +3 -2
  48. package/dist/admin/components/CheckboxWithNumberField.mjs.map +1 -1
  49. package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
  50. package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
  51. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +160 -162
  52. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
  53. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +160 -162
  54. package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
  55. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +1 -1
  56. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  57. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +1 -1
  58. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
  59. package/dist/admin/components/ContentTypeRadioGroup.js.map +1 -1
  60. package/dist/admin/components/ContentTypeRadioGroup.mjs.map +1 -1
  61. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js +6 -5
  62. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.js.map +1 -1
  63. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs +6 -5
  64. package/dist/admin/components/CustomRadioGroup/CustomRadioGroup.mjs.map +1 -1
  65. package/dist/admin/components/CustomRadioGroup/Styles.js.map +1 -1
  66. package/dist/admin/components/CustomRadioGroup/Styles.mjs.map +1 -1
  67. package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
  68. package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
  69. package/dist/admin/components/DataManager/DataManagerProvider.js +16 -4
  70. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  71. package/dist/admin/components/DataManager/DataManagerProvider.mjs +16 -4
  72. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  73. package/dist/admin/components/DataManager/reducer.js +2 -2
  74. package/dist/admin/components/DataManager/reducer.js.map +1 -1
  75. package/dist/admin/components/DataManager/reducer.mjs +2 -2
  76. package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
  77. package/dist/admin/components/DataManager/useServerRestartWatcher.js.map +1 -1
  78. package/dist/admin/components/DataManager/useServerRestartWatcher.mjs.map +1 -1
  79. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.js.map +1 -1
  80. package/dist/admin/components/DataManager/utils/retrieveSpecificInfoFromComponents.mjs.map +1 -1
  81. package/dist/admin/components/DraftAndPublishToggle.js.map +1 -1
  82. package/dist/admin/components/DraftAndPublishToggle.mjs.map +1 -1
  83. package/dist/admin/components/DynamicZoneList.js.map +1 -1
  84. package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
  85. package/dist/admin/components/FormModal/FormModal.js +91 -71
  86. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  87. package/dist/admin/components/FormModal/FormModal.mjs +91 -70
  88. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  89. package/dist/admin/components/FormModal/attributes/ConditionForm.js +20 -17
  90. package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
  91. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs +20 -17
  92. package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
  93. package/dist/admin/components/FormModal/attributes/validation/common.js.map +1 -1
  94. package/dist/admin/components/FormModal/attributes/validation/common.mjs.map +1 -1
  95. package/dist/admin/components/FormModal/forms/forms.js +4 -6
  96. package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
  97. package/dist/admin/components/FormModal/forms/forms.mjs +4 -6
  98. package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
  99. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.js.map +1 -1
  100. package/dist/admin/components/FormModal/forms/utils/getUsedAttributeNames.mjs.map +1 -1
  101. package/dist/admin/components/FormModal/reducer.js +9 -6
  102. package/dist/admin/components/FormModal/reducer.js.map +1 -1
  103. package/dist/admin/components/FormModal/reducer.mjs +9 -6
  104. package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
  105. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js +3 -3
  106. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.js.map +1 -1
  107. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs +3 -3
  108. package/dist/admin/components/FormModal/utils/customFieldDefaultOptionsReducer.mjs.map +1 -1
  109. package/dist/admin/components/FormModal/utils/getFormInputNames.js +1 -1
  110. package/dist/admin/components/FormModal/utils/getFormInputNames.js.map +1 -1
  111. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs +1 -1
  112. package/dist/admin/components/FormModal/utils/getFormInputNames.mjs.map +1 -1
  113. package/dist/admin/components/FormModal/utils/relations.js +2 -2
  114. package/dist/admin/components/FormModal/utils/relations.js.map +1 -1
  115. package/dist/admin/components/FormModal/utils/relations.mjs +2 -2
  116. package/dist/admin/components/FormModal/utils/relations.mjs.map +1 -1
  117. package/dist/admin/components/FormModalHeader.js.map +1 -1
  118. package/dist/admin/components/FormModalHeader.mjs.map +1 -1
  119. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.js.map +1 -1
  120. package/dist/admin/components/FormModalNavigation/FormModalNavigationContext.mjs.map +1 -1
  121. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +13 -13
  122. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
  123. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +13 -13
  124. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
  125. package/dist/admin/components/GenericInputs.js +24 -12
  126. package/dist/admin/components/GenericInputs.js.map +1 -1
  127. package/dist/admin/components/GenericInputs.mjs +24 -12
  128. package/dist/admin/components/GenericInputs.mjs.map +1 -1
  129. package/dist/admin/components/IconPicker/IconPicker.js.map +1 -1
  130. package/dist/admin/components/IconPicker/IconPicker.mjs.map +1 -1
  131. package/dist/admin/components/PluralName.js.map +1 -1
  132. package/dist/admin/components/PluralName.mjs.map +1 -1
  133. package/dist/admin/components/Relation/Relation.js +3 -3
  134. package/dist/admin/components/Relation/Relation.js.map +1 -1
  135. package/dist/admin/components/Relation/Relation.mjs +3 -3
  136. package/dist/admin/components/Relation/Relation.mjs.map +1 -1
  137. package/dist/admin/components/Relation/RelationField/RelationField.js +1 -1
  138. package/dist/admin/components/Relation/RelationField/RelationField.js.map +1 -1
  139. package/dist/admin/components/Relation/RelationField/RelationField.mjs +1 -1
  140. package/dist/admin/components/Relation/RelationField/RelationField.mjs.map +1 -1
  141. package/dist/admin/components/SelectCategory.js +6 -0
  142. package/dist/admin/components/SelectCategory.js.map +1 -1
  143. package/dist/admin/components/SelectCategory.mjs +6 -0
  144. package/dist/admin/components/SelectCategory.mjs.map +1 -1
  145. package/dist/admin/components/SelectComponent.js +1 -1
  146. package/dist/admin/components/SelectComponent.js.map +1 -1
  147. package/dist/admin/components/SelectComponent.mjs +1 -1
  148. package/dist/admin/components/SelectComponent.mjs.map +1 -1
  149. package/dist/admin/components/SingularName.js.map +1 -1
  150. package/dist/admin/components/SingularName.mjs.map +1 -1
  151. package/dist/admin/components/TabForm.js +50 -51
  152. package/dist/admin/components/TabForm.js.map +1 -1
  153. package/dist/admin/components/TabForm.mjs +51 -52
  154. package/dist/admin/components/TabForm.mjs.map +1 -1
  155. package/dist/admin/src/components/AIChat/components/Messages/Message.d.ts +1 -2
  156. package/dist/admin/src/components/AIChat/lib/aiClient.d.ts +1 -1
  157. package/dist/admin/src/components/AIChat/lib/transforms/schemas/fromCTB.d.ts +6 -2
  158. package/dist/admin/src/components/AIChat/lib/transforms/schemas/toCTB.d.ts +1 -1
  159. package/dist/admin/src/components/AIChat/lib/types/schema.d.ts +5 -5
  160. package/dist/admin/src/components/AllowedTypesSelect.d.ts +3 -3
  161. package/dist/admin/src/components/BooleanDefaultValueSelect.d.ts +3 -3
  162. package/dist/admin/src/components/BooleanRadioGroup.d.ts +2 -2
  163. package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +1 -1
  164. package/dist/admin/src/components/CheckboxWithNumberField.d.ts +6 -4
  165. package/dist/admin/src/components/ContentTypeRadioGroup.d.ts +3 -2
  166. package/dist/admin/src/components/CustomRadioGroup/CustomRadioGroup.d.ts +3 -2
  167. package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +13 -11
  168. package/dist/admin/src/components/DataManager/reducer.d.ts +14 -10
  169. package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +8 -8
  170. package/dist/admin/src/components/DataManager/utils/formatSchemas.d.ts +9 -3
  171. package/dist/admin/src/components/DataManager/utils/retrieveSpecificInfoFromComponents.d.ts +2 -1
  172. package/dist/admin/src/components/DraftAndPublishToggle.d.ts +1 -6
  173. package/dist/admin/src/components/DynamicZoneList.d.ts +2 -2
  174. package/dist/admin/src/components/FormModal/attributes/ConditionForm.d.ts +3 -2
  175. package/dist/admin/src/components/FormModal/attributes/validation/common.d.ts +3 -1
  176. package/dist/admin/src/components/FormModal/forms/forms.d.ts +59 -26
  177. package/dist/admin/src/components/FormModal/forms/utils/getUsedAttributeNames.d.ts +12 -2
  178. package/dist/admin/src/components/FormModal/reducer.d.ts +104 -32
  179. package/dist/admin/src/components/FormModal/utils/customFieldDefaultOptionsReducer.d.ts +11 -1
  180. package/dist/admin/src/components/FormModal/utils/getFormInputNames.d.ts +8 -1
  181. package/dist/admin/src/components/FormModal/utils/relations.d.ts +2 -2
  182. package/dist/admin/src/components/FormModalHeader.d.ts +5 -8
  183. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationContext.d.ts +2 -2
  184. package/dist/admin/src/components/FormModalNavigation/FormModalNavigationProvider.d.ts +17 -1
  185. package/dist/admin/src/components/GenericInputs.d.ts +12 -7
  186. package/dist/admin/src/components/IconPicker/IconPicker.d.ts +2 -7
  187. package/dist/admin/src/components/PluralName.d.ts +6 -14
  188. package/dist/admin/src/components/Relation/Relation.d.ts +12 -3
  189. package/dist/admin/src/components/Relation/RelationField/RelationField.d.ts +3 -2
  190. package/dist/admin/src/components/SelectCategory.d.ts +3 -12
  191. package/dist/admin/src/components/SelectComponent.d.ts +8 -7
  192. package/dist/admin/src/components/SingularName.d.ts +5 -8
  193. package/dist/admin/src/components/TabForm.d.ts +38 -7
  194. package/dist/admin/src/types.d.ts +20 -12
  195. package/dist/admin/src/utils/conditions.d.ts +13 -4
  196. package/dist/admin/src/utils/formAPI.d.ts +38 -33
  197. package/dist/admin/src/utils/getRelationType.d.ts +1 -1
  198. package/dist/admin/src/utils/parseNumberInputValue.d.ts +1 -0
  199. package/dist/admin/utils/conditions.js +38 -28
  200. package/dist/admin/utils/conditions.js.map +1 -1
  201. package/dist/admin/utils/conditions.mjs +37 -28
  202. package/dist/admin/utils/conditions.mjs.map +1 -1
  203. package/dist/admin/utils/formAPI.js +9 -6
  204. package/dist/admin/utils/formAPI.js.map +1 -1
  205. package/dist/admin/utils/formAPI.mjs +9 -6
  206. package/dist/admin/utils/formAPI.mjs.map +1 -1
  207. package/dist/admin/utils/getRelationType.js +3 -0
  208. package/dist/admin/utils/getRelationType.js.map +1 -1
  209. package/dist/admin/utils/getRelationType.mjs +3 -0
  210. package/dist/admin/utils/getRelationType.mjs.map +1 -1
  211. package/dist/admin/utils/getYupInnerErrors.js +6 -4
  212. package/dist/admin/utils/getYupInnerErrors.js.map +1 -1
  213. package/dist/admin/utils/getYupInnerErrors.mjs +6 -4
  214. package/dist/admin/utils/getYupInnerErrors.mjs.map +1 -1
  215. package/dist/admin/utils/parseNumberInputValue.js +15 -0
  216. package/dist/admin/utils/parseNumberInputValue.js.map +1 -0
  217. package/dist/admin/utils/parseNumberInputValue.mjs +13 -0
  218. package/dist/admin/utils/parseNumberInputValue.mjs.map +1 -0
  219. package/dist/server/controllers/validation/relations.js +1 -1
  220. package/dist/server/controllers/validation/relations.js.map +1 -1
  221. package/dist/server/controllers/validation/relations.mjs +1 -1
  222. package/dist/server/controllers/validation/relations.mjs.map +1 -1
  223. package/dist/server/controllers/validation/types.js +4 -3
  224. package/dist/server/controllers/validation/types.js.map +1 -1
  225. package/dist/server/controllers/validation/types.mjs +4 -3
  226. package/dist/server/controllers/validation/types.mjs.map +1 -1
  227. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"ConditionForm.js","sources":["../../../../../admin/src/components/FormModal/attributes/ConditionForm.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useState } from 'react';\n\nimport { createRulesEngine, ConfirmDialog, type Condition } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n Field,\n SingleSelect,\n SingleSelectOption,\n Dialog,\n} from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { AttributeIcon } from '../../../components/AttributeIcon';\nimport { getTrad } from '../../../utils/getTrad';\nimport { ApplyConditionButton } from '../../ApplyConditionButton';\n\nconst SmallAttributeIcon = styled(AttributeIcon)`\n width: 16px !important;\n height: 16px !important;\n svg {\n width: 16px !important;\n height: 16px !important;\n }\n`;\n\ninterface ConditionFormProps {\n name: string;\n value: any;\n onChange: (e: { target: { name: string; value: any } }) => void;\n onDelete: () => void;\n attributeName?: string;\n conditionFields?: Array<{\n name: string;\n type: string;\n enum?: string[];\n }>;\n allAttributes?: Array<{\n name: string;\n type: string;\n }>;\n}\n\ninterface JsonLogicValue {\n visible?: {\n [key: string]: [{ var: string }, any];\n };\n}\n\ninterface LocalValue {\n dependsOn: string;\n operator: 'is' | 'isNot';\n value: string | boolean;\n action: 'show' | 'hide';\n}\n\nconst convertFromJsonLogic = (jsonLogic: JsonLogicValue): LocalValue => {\n if (!jsonLogic?.visible) {\n return {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n }\n\n const [[operator, conditions]] = Object.entries(jsonLogic.visible);\n const [fieldVar, value] = conditions as [{ var: string }, any];\n\n // 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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"}
1
+ {"version":3,"file":"ConditionForm.js","sources":["../../../../../admin/src/components/FormModal/attributes/ConditionForm.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useState } from 'react';\n\nimport { createRulesEngine, ConfirmDialog, type Condition } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n IconButton,\n Typography,\n Field,\n SingleSelect,\n SingleSelectOption,\n Dialog,\n} from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AttributeIcon } from '../../../components/AttributeIcon';\nimport { getFirstVisibleConditionEntry } from '../../../utils/conditions';\nimport { getTrad } from '../../../utils/getTrad';\nimport { ApplyConditionButton } from '../../ApplyConditionButton';\n\nimport type {\n AttributeConditions,\n AttributeConditionRule,\n AttributeConditionValue,\n} from '../../../types';\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?: AttributeConditions | null;\n onChange: (e: { target: { name: string; value?: AttributeConditions | null } }) => 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 LocalValue {\n dependsOn: string;\n operator: 'is' | 'isNot';\n value: AttributeConditionValue;\n action: 'show' | 'hide';\n}\n\nconst convertFromJsonLogic = (jsonLogic?: AttributeConditions | null): LocalValue => {\n const conditionEntry = getFirstVisibleConditionEntry(jsonLogic);\n\n if (conditionEntry === null) {\n return {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n }\n\n const { operator, fieldVar, value } = conditionEntry;\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): AttributeConditions | 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 const conditionRule: AttributeConditionRule = [{ var: value.dependsOn }, value.value];\n return {\n visible: {\n [operator]: conditionRule,\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 = getFirstVisibleConditionEntry(value) !== null;\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 conditionRule: AttributeConditionRule = [\n { var: updatedValue.dependsOn },\n updatedValue.value,\n ];\n const jsonLogic: AttributeConditions | null = updatedValue.dependsOn\n ? {\n visible: {\n [operator]: conditionRule,\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","conditionEntry","getFirstVisibleConditionEntry","dependsOn","operator","value","action","fieldVar","var","convertToJsonLogic","rulesEngine","createRulesEngine","condition","validate","conditionRule","visible","error","ConditionForm","name","onChange","onDelete","attributeName","conditionFields","formatMessage","useIntl","localValue","setLocalValue","React","useState","showConfirmDialog","setShowConfirmDialog","hasCondition","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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"}
@@ -7,6 +7,7 @@ import { Trash } from '@strapi/icons';
7
7
  import { useIntl } from 'react-intl';
8
8
  import { styled } from 'styled-components';
9
9
  import { AttributeIcon } from '../../AttributeIcon.mjs';
10
+ import { getFirstVisibleConditionEntry } from '../../../utils/conditions.mjs';
10
11
  import { getTrad } from '../../../utils/getTrad.mjs';
11
12
  import { ApplyConditionButton } from '../../ApplyConditionButton.mjs';
12
13
 
@@ -19,7 +20,8 @@ const SmallAttributeIcon = styled(AttributeIcon)`
19
20
  }
20
21
  `;
21
22
  const convertFromJsonLogic = (jsonLogic)=>{
22
- if (!jsonLogic?.visible) {
23
+ const conditionEntry = getFirstVisibleConditionEntry(jsonLogic);
24
+ if (conditionEntry === null) {
23
25
  return {
24
26
  dependsOn: '',
25
27
  operator: 'is',
@@ -27,8 +29,7 @@ const convertFromJsonLogic = (jsonLogic)=>{
27
29
  action: 'show'
28
30
  };
29
31
  }
30
- const [[operator, conditions]] = Object.entries(jsonLogic.visible);
31
- const [fieldVar, value] = conditions;
32
+ const { operator, fieldVar, value } = conditionEntry;
32
33
  // Assume 'visible' implies 'show' for now; adjust if backend uses 'hidden' key
33
34
  return {
34
35
  dependsOn: fieldVar.var,
@@ -38,7 +39,7 @@ const convertFromJsonLogic = (jsonLogic)=>{
38
39
  };
39
40
  };
40
41
  const convertToJsonLogic = (value)=>{
41
- if (!value.dependsOn) {
42
+ if (value.dependsOn === '') {
42
43
  return null;
43
44
  }
44
45
  const rulesEngine = createRulesEngine();
@@ -51,14 +52,15 @@ const convertToJsonLogic = (value)=>{
51
52
  rulesEngine.validate(condition);
52
53
  // Determine JSON Logic operator based on operator and action
53
54
  const operator = value.operator === 'is' && value.action === 'show' || value.operator === 'isNot' && value.action === 'hide' ? '==' : '!=';
55
+ const conditionRule = [
56
+ {
57
+ var: value.dependsOn
58
+ },
59
+ value.value
60
+ ];
54
61
  return {
55
62
  visible: {
56
- [operator]: [
57
- {
58
- var: value.dependsOn
59
- },
60
- value.value
61
- ]
63
+ [operator]: conditionRule
62
64
  }
63
65
  };
64
66
  } catch (error) {
@@ -69,7 +71,7 @@ const ConditionForm = ({ name, value, onChange, onDelete, attributeName, conditi
69
71
  const { formatMessage } = useIntl();
70
72
  const [localValue, setLocalValue] = React.useState(convertFromJsonLogic(value));
71
73
  const [showConfirmDialog, setShowConfirmDialog] = useState(false);
72
- const hasCondition = Boolean(value?.visible);
74
+ const hasCondition = getFirstVisibleConditionEntry(value) !== null;
73
75
  // Add safety check for conditionFields
74
76
  if (!Array.isArray(conditionFields)) {
75
77
  conditionFields = [];
@@ -88,14 +90,15 @@ const ConditionForm = ({ name, value, onChange, onDelete, attributeName, conditi
88
90
  try {
89
91
  rulesEngine.validate(condition);
90
92
  const operator = updatedValue.operator === 'is' && updatedValue.action === 'show' || updatedValue.operator === 'isNot' && updatedValue.action === 'hide' ? '==' : '!=';
93
+ const conditionRule = [
94
+ {
95
+ var: updatedValue.dependsOn
96
+ },
97
+ updatedValue.value
98
+ ];
91
99
  const jsonLogic = updatedValue.dependsOn ? {
92
100
  visible: {
93
- [operator]: [
94
- {
95
- var: updatedValue.dependsOn
96
- },
97
- updatedValue.value
98
- ]
101
+ [operator]: conditionRule
99
102
  }
100
103
  } : null;
101
104
  if (jsonLogic) {
@@ -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 // 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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"}
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';\n\nimport { AttributeIcon } from '../../../components/AttributeIcon';\nimport { getFirstVisibleConditionEntry } from '../../../utils/conditions';\nimport { getTrad } from '../../../utils/getTrad';\nimport { ApplyConditionButton } from '../../ApplyConditionButton';\n\nimport type {\n AttributeConditions,\n AttributeConditionRule,\n AttributeConditionValue,\n} from '../../../types';\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?: AttributeConditions | null;\n onChange: (e: { target: { name: string; value?: AttributeConditions | null } }) => 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 LocalValue {\n dependsOn: string;\n operator: 'is' | 'isNot';\n value: AttributeConditionValue;\n action: 'show' | 'hide';\n}\n\nconst convertFromJsonLogic = (jsonLogic?: AttributeConditions | null): LocalValue => {\n const conditionEntry = getFirstVisibleConditionEntry(jsonLogic);\n\n if (conditionEntry === null) {\n return {\n dependsOn: '',\n operator: 'is',\n value: '',\n action: 'show',\n };\n }\n\n const { operator, fieldVar, value } = conditionEntry;\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): AttributeConditions | 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 const conditionRule: AttributeConditionRule = [{ var: value.dependsOn }, value.value];\n return {\n visible: {\n [operator]: conditionRule,\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 = getFirstVisibleConditionEntry(value) !== null;\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 conditionRule: AttributeConditionRule = [\n { var: updatedValue.dependsOn },\n updatedValue.value,\n ];\n const jsonLogic: AttributeConditions | null = updatedValue.dependsOn\n ? {\n visible: {\n [operator]: conditionRule,\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","conditionEntry","getFirstVisibleConditionEntry","dependsOn","operator","value","action","fieldVar","var","convertToJsonLogic","rulesEngine","createRulesEngine","condition","validate","conditionRule","visible","error","ConditionForm","name","onChange","onDelete","attributeName","conditionFields","formatMessage","useIntl","localValue","setLocalValue","React","useState","showConfirmDialog","setShowConfirmDialog","hasCondition","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 +1 @@
1
- {"version":3,"file":"common.js","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n maxLengthString: () =>\n yup\n .number()\n .integer()\n .positive(getTrad('error.validation.positive'))\n .max(255, 'Maximum length for short text fields is 255 characters')\n .nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\nconst createStringShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLengthString(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","maxLengthString","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","createStringShape","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: { attributes?: Record<string, unknown> },\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n maxLengthString: () =>\n yup\n .number()\n .integer()\n .positive(getTrad('error.validation.positive'))\n .max(255, 'Maximum length for short text fields is 255 characters')\n .nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\nconst createStringShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLengthString(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = this.parent as { max?: T };\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","maxLengthString","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","createStringShape","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.mjs","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: any,\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n maxLengthString: () =>\n yup\n .number()\n .integer()\n .positive(getTrad('error.validation.positive'))\n .max(255, 'Maximum length for short text fields is 255 characters')\n .nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\nconst createStringShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLengthString(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = (this as any).parent;\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","maxLengthString","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","createStringShape","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":"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"}
1
+ {"version":3,"file":"common.mjs","sources":["../../../../../../admin/src/components/FormModal/attributes/validation/common.ts"],"sourcesContent":["import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport { snakeCase } from 'lodash/fp';\nimport toNumber from 'lodash/toNumber';\nimport * as yup from 'yup';\n\nimport { getTrad } from '../../../../utils/getTrad';\n\nconst NAME_REGEX = /^[A-Za-z][_0-9A-Za-z]*$/;\n\nconst alreadyUsedAttributeNames = (\n usedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'attributeNameAlreadyUsed',\n message: errorsTrads.unique.id,\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !usedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst getUsedContentTypeAttributeNames = (\n ctShema: { attributes?: Record<string, unknown> },\n isEdition: boolean,\n attributeNameToEdit: string\n) => {\n const attributes = ctShema?.attributes ?? {};\n\n return Object.keys(attributes).filter((attr) => {\n if (isEdition) {\n return attr !== attributeNameToEdit;\n }\n\n return true;\n });\n};\n\nconst isNameAllowed = (\n reservedNames: Array<string>\n): yup.TestConfig<string | undefined, Record<string, unknown>> => {\n return {\n name: 'forbiddenAttributeName',\n message: getTrad('error.attributeName.reserved-name'),\n test(value: string | undefined) {\n if (!value) {\n return false;\n }\n const snakeCaseKey = snakeCase(value);\n\n return !reservedNames.some((existingKey) => {\n return snakeCase(existingKey) === snakeCaseKey;\n });\n },\n };\n};\n\nconst validators = {\n default: () => yup.string().nullable(),\n max: () => yup.number().integer().nullable(),\n min: () =>\n yup\n .number()\n .integer()\n .when('max', (max, schema) => {\n if (max) {\n return schema.max(max, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n maxLength: () => yup.number().integer().positive(getTrad('error.validation.positive')).nullable(),\n maxLengthString: () =>\n yup\n .number()\n .integer()\n .positive(getTrad('error.validation.positive'))\n .max(255, 'Maximum length for short text fields is 255 characters')\n .nullable(),\n minLength: () =>\n yup\n .number()\n .integer()\n .min(1)\n .when('maxLength', (maxLength, schema) => {\n if (maxLength) {\n return schema.max(maxLength, getTrad('error.validation.minSupMax'));\n }\n\n return schema;\n })\n .nullable(),\n name(usedNames: Array<string>, reservedNames: Array<string>) {\n return yup\n .string()\n .test(alreadyUsedAttributeNames(usedNames))\n .test(isNameAllowed(reservedNames))\n .matches(NAME_REGEX, errorsTrads.regex.id)\n .required(errorsTrads.required.id);\n },\n required: () => yup.boolean(),\n type: () => yup.string().required(errorsTrads.required.id),\n unique: () => yup.boolean().nullable(),\n};\n\nconst createTextShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLength(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\nconst createStringShape = (usedAttributeNames: Array<string>, reservedNames: Array<string>) => {\n const shape = {\n name: validators.name(usedAttributeNames, reservedNames),\n type: validators.type(),\n default: validators.default(),\n unique: validators.unique(),\n required: validators.required(),\n maxLength: validators.maxLengthString(),\n minLength: validators.minLength(),\n regex: yup\n .string()\n .test({\n name: 'isValidRegExpPattern',\n message: getTrad('error.validation.regex'),\n test(value) {\n try {\n return new RegExp(value || '') !== null;\n } catch (e) {\n return false;\n }\n },\n })\n .nullable(),\n };\n\n return shape;\n};\n\ntype GenericIsMinSuperiorThanMax<T extends (string | null) | number> = yup.TestConfig<\n T | undefined,\n Record<string, unknown>\n>;\n\nconst isMinSuperiorThanMax = <\n T extends (string | null) | number,\n>(): GenericIsMinSuperiorThanMax<T> => ({\n name: 'isMinSuperiorThanMax',\n message: getTrad('error.validation.minSupMax'),\n test(min: T | undefined) {\n if (!min) {\n return true;\n }\n\n const { max } = this.parent as { max?: T };\n\n if (!max) {\n return true;\n }\n\n if (Number.isNaN(toNumber(min))) {\n return true;\n }\n\n return toNumber(max) >= toNumber(min);\n },\n});\n\nexport {\n alreadyUsedAttributeNames,\n createStringShape,\n createTextShape,\n getUsedContentTypeAttributeNames,\n isMinSuperiorThanMax,\n isNameAllowed,\n NAME_REGEX,\n validators,\n};\n"],"names":["NAME_REGEX","alreadyUsedAttributeNames","usedNames","name","message","errorsTrads","unique","id","test","value","snakeCaseKey","snakeCase","some","existingKey","isNameAllowed","reservedNames","getTrad","validators","default","yup","string","nullable","max","number","integer","min","when","schema","maxLength","positive","maxLengthString","minLength","matches","regex","required","boolean","type","createTextShape","usedAttributeNames","shape","RegExp","e","createStringShape","isMinSuperiorThanMax","parent","Number","isNaN","toNumber"],"mappings":";;;;;;AAOA,MAAMA,UAAAA,GAAa;AAEnB,MAAMC,4BAA4B,CAChCC,SAAAA,GAAAA;IAEA,OAAO;QACLC,IAAAA,EAAM,0BAAA;QACNC,OAAAA,EAASC,gBAAAA,CAAYC,MAAM,CAACC,EAAE;AAC9BC,QAAAA,IAAAA,CAAAA,CAAKC,KAAyB,EAAA;AAC5B,YAAA,IAAI,CAACA,KAAAA,EAAO;gBACV,OAAO,KAAA;AACT,YAAA;AACA,YAAA,MAAMC,eAAeC,SAAAA,CAAUF,KAAAA,CAAAA;AAE/B,YAAA,OAAO,CAACP,SAAAA,CAAUU,IAAI,CAAC,CAACC,WAAAA,GAAAA;AACtB,gBAAA,OAAOF,UAAUE,WAAAA,CAAAA,KAAiBH,YAAAA;AACpC,YAAA,CAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF;AAkBA,MAAMI,gBAAgB,CACpBC,aAAAA,GAAAA;IAEA,OAAO;QACLZ,IAAAA,EAAM,wBAAA;AACNC,QAAAA,OAAAA,EAASY,OAAAA,CAAQ,mCAAA,CAAA;AACjBR,QAAAA,IAAAA,CAAAA,CAAKC,KAAyB,EAAA;AAC5B,YAAA,IAAI,CAACA,KAAAA,EAAO;gBACV,OAAO,KAAA;AACT,YAAA;AACA,YAAA,MAAMC,eAAeC,SAAAA,CAAUF,KAAAA,CAAAA;AAE/B,YAAA,OAAO,CAACM,aAAAA,CAAcH,IAAI,CAAC,CAACC,WAAAA,GAAAA;AAC1B,gBAAA,OAAOF,UAAUE,WAAAA,CAAAA,KAAiBH,YAAAA;AACpC,YAAA,CAAA,CAAA;AACF,QAAA;AACF,KAAA;AACF;AAEA,MAAMO,UAAAA,GAAa;AACjBC,IAAAA,OAAAA,EAAS,IAAMC,GAAAA,CAAIC,MAAM,EAAA,CAAGC,QAAQ,EAAA;AACpCC,IAAAA,GAAAA,EAAK,IAAMH,GAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGH,QAAQ,EAAA;IAC1CI,GAAAA,EAAK,IACHN,GAAAA,CACGI,MAAM,EAAA,CACNC,OAAO,GACPE,IAAI,CAAC,KAAA,EAAO,CAACJ,GAAAA,EAAKK,MAAAA,GAAAA;AACjB,YAAA,IAAIL,GAAAA,EAAK;AACP,gBAAA,OAAOK,MAAAA,CAAOL,GAAG,CAACA,GAAAA,EAAKN,OAAAA,CAAQ,4BAAA,CAAA,CAAA;AACjC,YAAA;YAEA,OAAOW,MAAAA;AACT,QAAA,CAAA,CAAA,CACCN,QAAQ,EAAA;IACbO,SAAAA,EAAW,IAAMT,GAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGK,QAAQ,CAACb,OAAAA,CAAQ,2BAAA,CAAA,CAAA,CAA8BK,QAAQ,EAAA;AAC/FS,IAAAA,eAAAA,EAAiB,IACfX,GAAAA,CACGI,MAAM,EAAA,CACNC,OAAO,EAAA,CACPK,QAAQ,CAACb,OAAAA,CAAQ,2BAAA,CAAA,CAAA,CACjBM,GAAG,CAAC,GAAA,EAAK,0DACTD,QAAQ,EAAA;AACbU,IAAAA,SAAAA,EAAW,IACTZ,GAAAA,CACGI,MAAM,EAAA,CACNC,OAAO,EAAA,CACPC,GAAG,CAAC,CAAA,CAAA,CACJC,IAAI,CAAC,WAAA,EAAa,CAACE,SAAAA,EAAWD,MAAAA,GAAAA;AAC7B,YAAA,IAAIC,SAAAA,EAAW;AACb,gBAAA,OAAOD,MAAAA,CAAOL,GAAG,CAACM,SAAAA,EAAWZ,OAAAA,CAAQ,4BAAA,CAAA,CAAA;AACvC,YAAA;YAEA,OAAOW,MAAAA;AACT,QAAA,CAAA,CAAA,CACCN,QAAQ,EAAA;IACblB,IAAAA,CAAAA,CAAKD,SAAwB,EAAEa,aAA4B,EAAA;QACzD,OAAOI,GAAAA,CACJC,MAAM,EAAA,CACNZ,IAAI,CAACP,0BAA0BC,SAAAA,CAAAA,CAAAA,CAC/BM,IAAI,CAACM,aAAAA,CAAcC,aAAAA,CAAAA,CAAAA,CACnBiB,OAAO,CAAChC,UAAAA,EAAYK,gBAAAA,CAAY4B,KAAK,CAAC1B,EAAE,CAAA,CACxC2B,QAAQ,CAAC7B,gBAAAA,CAAY6B,QAAQ,CAAC3B,EAAE,CAAA;AACrC,IAAA,CAAA;IACA2B,QAAAA,EAAU,IAAMf,IAAIgB,OAAO,EAAA;IAC3BC,IAAAA,EAAM,IAAMjB,IAAIC,MAAM,EAAA,CAAGc,QAAQ,CAAC7B,gBAAAA,CAAY6B,QAAQ,CAAC3B,EAAE,CAAA;AACzDD,IAAAA,MAAAA,EAAQ,IAAMa,GAAAA,CAAIgB,OAAO,EAAA,CAAGd,QAAQ;AACtC;AAEA,MAAMgB,eAAAA,GAAkB,CAACC,kBAAAA,EAAmCvB,aAAAA,GAAAA;AAC1D,IAAA,MAAMwB,KAAAA,GAAQ;QACZpC,IAAAA,EAAMc,UAAAA,CAAWd,IAAI,CAACmC,kBAAAA,EAAoBvB,aAAAA,CAAAA;AAC1CqB,QAAAA,IAAAA,EAAMnB,WAAWmB,IAAI,EAAA;AACrBlB,QAAAA,OAAAA,EAASD,WAAWC,OAAO,EAAA;AAC3BZ,QAAAA,MAAAA,EAAQW,WAAWX,MAAM,EAAA;AACzB4B,QAAAA,QAAAA,EAAUjB,WAAWiB,QAAQ,EAAA;AAC7BN,QAAAA,SAAAA,EAAWX,WAAWW,SAAS,EAAA;AAC/BG,QAAAA,SAAAA,EAAWd,WAAWc,SAAS,EAAA;AAC/BE,QAAAA,KAAAA,EAAOd,GAAAA,CACJC,MAAM,EAAA,CACNZ,IAAI,CAAC;YACJL,IAAAA,EAAM,sBAAA;AACNC,YAAAA,OAAAA,EAASY,OAAAA,CAAQ,wBAAA,CAAA;AACjBR,YAAAA,IAAAA,CAAAA,CAAKC,KAAK,EAAA;gBACR,IAAI;oBACF,OAAO,IAAI+B,MAAAA,CAAO/B,KAAAA,IAAS,EAAA,CAAA,KAAQ,IAAA;AACrC,gBAAA,CAAA,CAAE,OAAOgC,CAAAA,EAAG;oBACV,OAAO,KAAA;AACT,gBAAA;AACF,YAAA;AACF,SAAA,CAAA,CACCpB,QAAQ;AACb,KAAA;IAEA,OAAOkB,KAAAA;AACT;AAEA,MAAMG,iBAAAA,GAAoB,CAACJ,kBAAAA,EAAmCvB,aAAAA,GAAAA;AAC5D,IAAA,MAAMwB,KAAAA,GAAQ;QACZpC,IAAAA,EAAMc,UAAAA,CAAWd,IAAI,CAACmC,kBAAAA,EAAoBvB,aAAAA,CAAAA;AAC1CqB,QAAAA,IAAAA,EAAMnB,WAAWmB,IAAI,EAAA;AACrBlB,QAAAA,OAAAA,EAASD,WAAWC,OAAO,EAAA;AAC3BZ,QAAAA,MAAAA,EAAQW,WAAWX,MAAM,EAAA;AACzB4B,QAAAA,QAAAA,EAAUjB,WAAWiB,QAAQ,EAAA;AAC7BN,QAAAA,SAAAA,EAAWX,WAAWa,eAAe,EAAA;AACrCC,QAAAA,SAAAA,EAAWd,WAAWc,SAAS,EAAA;AAC/BE,QAAAA,KAAAA,EAAOd,GAAAA,CACJC,MAAM,EAAA,CACNZ,IAAI,CAAC;YACJL,IAAAA,EAAM,sBAAA;AACNC,YAAAA,OAAAA,EAASY,OAAAA,CAAQ,wBAAA,CAAA;AACjBR,YAAAA,IAAAA,CAAAA,CAAKC,KAAK,EAAA;gBACR,IAAI;oBACF,OAAO,IAAI+B,MAAAA,CAAO/B,KAAAA,IAAS,EAAA,CAAA,KAAQ,IAAA;AACrC,gBAAA,CAAA,CAAE,OAAOgC,CAAAA,EAAG;oBACV,OAAO,KAAA;AACT,gBAAA;AACF,YAAA;AACF,SAAA,CAAA,CACCpB,QAAQ;AACb,KAAA;IAEA,OAAOkB,KAAAA;AACT;AAOA,MAAMI,oBAAAA,GAAuB,KAEW;QACtCxC,IAAAA,EAAM,sBAAA;AACNC,QAAAA,OAAAA,EAASY,OAAAA,CAAQ,4BAAA,CAAA;AACjBR,QAAAA,IAAAA,CAAAA,CAAKiB,GAAkB,EAAA;AACrB,YAAA,IAAI,CAACA,GAAAA,EAAK;gBACR,OAAO,IAAA;AACT,YAAA;AAEA,YAAA,MAAM,EAAEH,GAAG,EAAE,GAAG,IAAI,CAACsB,MAAM;AAE3B,YAAA,IAAI,CAACtB,GAAAA,EAAK;gBACR,OAAO,IAAA;AACT,YAAA;AAEA,YAAA,IAAIuB,MAAAA,CAAOC,KAAK,CAACC,QAAAA,CAAStB,GAAAA,CAAAA,CAAAA,EAAO;gBAC/B,OAAO,IAAA;AACT,YAAA;YAEA,OAAOsB,QAAAA,CAASzB,QAAQyB,QAAAA,CAAStB,GAAAA,CAAAA;AACnC,QAAA;KACF;;;;"}
@@ -88,7 +88,7 @@ const forms = {
88
88
  if (customField.options?.advanced) {
89
89
  addItemsToFormSection.addItemsToFormSection(customField.options.advanced, sections);
90
90
  }
91
- if (injectedInputs) {
91
+ if (injectedInputs !== undefined) {
92
92
  const extendedSettings = {
93
93
  sectionTitle: {
94
94
  id: getTrad.getTrad('modalForm.custom-fields.advanced.settings.extended'),
@@ -123,7 +123,7 @@ const forms = {
123
123
  form: {
124
124
  advanced ({ data, type, step, extensions, ...rest }) {
125
125
  try {
126
- const baseForm = form.attributesForm.advanced[type](data, step).sections;
126
+ const baseForm = form.attributesForm.advanced[type](data, step ?? '').sections;
127
127
  const itemsToAdd = extensions.getAdvancedForm([
128
128
  'attribute',
129
129
  type
@@ -170,7 +170,7 @@ const forms = {
170
170
  },
171
171
  base ({ data, type, step, attributes }) {
172
172
  try {
173
- return form.attributesForm.base[type](data, step, attributes);
173
+ return form.attributesForm.base[type](data, step ?? '', attributes);
174
174
  } catch (err) {
175
175
  return commonBaseForm.commonBaseForm;
176
176
  }
@@ -242,9 +242,7 @@ const forms = {
242
242
  component: {
243
243
  schema (alreadyTakenAttributes, componentCategory, reservedNames, isEditing = false, components, componentDisplayName, compoUid = null) {
244
244
  const takenNames = isEditing ? alreadyTakenAttributes.filter((uid)=>uid !== compoUid) : alreadyTakenAttributes;
245
- const collectionNames = Object.values(components).map((component)=>{
246
- return component?.collectionName;
247
- });
245
+ const collectionNames = Object.values(components).map((component)=>component?.collectionName).filter((collectionName)=>collectionName !== undefined);
248
246
  const currentCollectionName = createCollectionName.createComponentCollectionName(componentDisplayName, componentCategory);
249
247
  const takenCollectionNames = isEditing ? collectionNames.filter((collectionName)=>collectionName !== currentCollectionName) : collectionNames;
250
248
  return createComponentSchema.createComponentSchema(takenNames, reservedNames.models, componentCategory, takenCollectionNames, currentCollectionName);