@payloadcms/ui 3.29.0-canary.5 → 3.29.0-canary.7

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 (144) hide show
  1. package/dist/elements/Autosave/index.js +1 -1
  2. package/dist/elements/Autosave/index.js.map +1 -1
  3. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  4. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +143 -127
  5. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  6. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
  7. package/dist/elements/BulkUpload/EditMany/index.js +1 -1
  8. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  9. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  10. package/dist/elements/BulkUpload/FileSidebar/index.js +5 -5
  11. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  12. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  13. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  14. package/dist/elements/DocumentControls/index.js +1 -1
  15. package/dist/elements/DocumentControls/index.js.map +1 -1
  16. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  17. package/dist/elements/DocumentFields/index.js +1 -5
  18. package/dist/elements/DocumentFields/index.js.map +1 -1
  19. package/dist/elements/EditMany/DrawerContent.d.ts +2 -1
  20. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  21. package/dist/elements/EditMany/DrawerContent.js +107 -118
  22. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  23. package/dist/elements/EditMany/index.d.ts.map +1 -1
  24. package/dist/elements/EditMany/index.js +6 -5
  25. package/dist/elements/EditMany/index.js.map +1 -1
  26. package/dist/elements/FieldSelect/index.d.ts +12 -2
  27. package/dist/elements/FieldSelect/index.d.ts.map +1 -1
  28. package/dist/elements/FieldSelect/index.js +31 -48
  29. package/dist/elements/FieldSelect/index.js.map +1 -1
  30. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts +2 -1
  31. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  32. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js +5 -2
  33. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
  34. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  35. package/dist/elements/PublishButton/ScheduleDrawer/index.js +3 -3
  36. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  37. package/dist/elements/Table/DefaultCell/fields/Date/index.js +1 -1
  38. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  39. package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
  40. package/dist/elements/Table/DefaultCell/fields/File/index.js +24 -1
  41. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  42. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +1 -1
  43. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  44. package/dist/elements/Thumbnail/index.js +25 -23
  45. package/dist/elements/Thumbnail/index.js.map +1 -1
  46. package/dist/elements/ThumbnailCard/index.js +1 -1
  47. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  48. package/dist/exports/client/index.js +23 -23
  49. package/dist/exports/client/index.js.map +4 -4
  50. package/dist/exports/shared/index.d.ts +2 -2
  51. package/dist/exports/shared/index.d.ts.map +1 -1
  52. package/dist/exports/shared/index.js +2 -2
  53. package/dist/exports/shared/index.js.map +4 -4
  54. package/dist/fields/Array/index.d.ts.map +1 -1
  55. package/dist/fields/Array/index.js +4 -3
  56. package/dist/fields/Array/index.js.map +1 -1
  57. package/dist/fields/Blocks/index.d.ts.map +1 -1
  58. package/dist/fields/Blocks/index.js +5 -4
  59. package/dist/fields/Blocks/index.js.map +1 -1
  60. package/dist/fields/Checkbox/index.d.ts +1 -1
  61. package/dist/fields/Checkbox/index.d.ts.map +1 -1
  62. package/dist/fields/Checkbox/index.js +4 -3
  63. package/dist/fields/Checkbox/index.js.map +1 -1
  64. package/dist/fields/Code/index.d.ts.map +1 -1
  65. package/dist/fields/Code/index.js +4 -3
  66. package/dist/fields/Code/index.js.map +1 -1
  67. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  68. package/dist/fields/Collapsible/index.js +3 -2
  69. package/dist/fields/Collapsible/index.js.map +1 -1
  70. package/dist/fields/ConfirmPassword/index.js +13 -11
  71. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  72. package/dist/fields/DateTime/index.d.ts.map +1 -1
  73. package/dist/fields/DateTime/index.js +5 -4
  74. package/dist/fields/DateTime/index.js.map +1 -1
  75. package/dist/fields/Email/index.d.ts.map +1 -1
  76. package/dist/fields/Email/index.js +3 -2
  77. package/dist/fields/Email/index.js.map +1 -1
  78. package/dist/fields/Group/index.d.ts.map +1 -1
  79. package/dist/fields/Group/index.js.map +1 -1
  80. package/dist/fields/Group/index.scss +12 -6
  81. package/dist/fields/JSON/index.d.ts.map +1 -1
  82. package/dist/fields/JSON/index.js +5 -4
  83. package/dist/fields/JSON/index.js.map +1 -1
  84. package/dist/fields/Number/index.d.ts.map +1 -1
  85. package/dist/fields/Number/index.js +6 -5
  86. package/dist/fields/Number/index.js.map +1 -1
  87. package/dist/fields/Password/index.d.ts.map +1 -1
  88. package/dist/fields/Password/index.js +2 -4
  89. package/dist/fields/Password/index.js.map +1 -1
  90. package/dist/fields/Point/index.d.ts.map +1 -1
  91. package/dist/fields/Point/index.js +4 -3
  92. package/dist/fields/Point/index.js.map +1 -1
  93. package/dist/fields/RadioGroup/index.d.ts.map +1 -1
  94. package/dist/fields/RadioGroup/index.js +4 -3
  95. package/dist/fields/RadioGroup/index.js.map +1 -1
  96. package/dist/fields/Relationship/index.d.ts.map +1 -1
  97. package/dist/fields/Relationship/index.js +5 -4
  98. package/dist/fields/Relationship/index.js.map +1 -1
  99. package/dist/fields/Relationship/optionsReducer.js +1 -1
  100. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  101. package/dist/fields/Select/index.d.ts.map +1 -1
  102. package/dist/fields/Select/index.js +4 -3
  103. package/dist/fields/Select/index.js.map +1 -1
  104. package/dist/fields/Tabs/index.js.map +1 -1
  105. package/dist/fields/Text/index.d.ts.map +1 -1
  106. package/dist/fields/Text/index.js +4 -3
  107. package/dist/fields/Text/index.js.map +1 -1
  108. package/dist/fields/Textarea/index.d.ts.map +1 -1
  109. package/dist/fields/Textarea/index.js +2 -1
  110. package/dist/fields/Textarea/index.js.map +1 -1
  111. package/dist/fields/Upload/index.d.ts.map +1 -1
  112. package/dist/fields/Upload/index.js +2 -1
  113. package/dist/fields/Upload/index.js.map +1 -1
  114. package/dist/forms/Form/fieldReducer.js +1 -1
  115. package/dist/forms/Form/fieldReducer.js.map +1 -1
  116. package/dist/forms/useField/index.d.ts.map +1 -1
  117. package/dist/forms/useField/index.js +70 -67
  118. package/dist/forms/useField/index.js.map +1 -1
  119. package/dist/forms/useField/types.d.ts +1 -0
  120. package/dist/forms/useField/types.d.ts.map +1 -1
  121. package/dist/forms/useField/types.js.map +1 -1
  122. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  123. package/dist/providers/DocumentInfo/index.js +1 -1
  124. package/dist/providers/DocumentInfo/index.js.map +1 -1
  125. package/dist/styles.css +1 -1
  126. package/dist/utilities/{formatDate.d.ts → formatDocTitle/formatDateTitle.d.ts} +1 -1
  127. package/dist/utilities/formatDocTitle/formatDateTitle.d.ts.map +1 -0
  128. package/dist/utilities/{formatDate.js → formatDocTitle/formatDateTitle.js} +1 -1
  129. package/dist/utilities/formatDocTitle/formatDateTitle.js.map +1 -0
  130. package/dist/utilities/formatDocTitle/formatLexicalDocTitle.d.ts +19 -0
  131. package/dist/utilities/formatDocTitle/formatLexicalDocTitle.d.ts.map +1 -0
  132. package/dist/utilities/formatDocTitle/formatLexicalDocTitle.js +19 -0
  133. package/dist/utilities/formatDocTitle/formatLexicalDocTitle.js.map +1 -0
  134. package/dist/utilities/{formatDocTitle.d.ts → formatDocTitle/index.d.ts} +2 -2
  135. package/dist/utilities/formatDocTitle/index.d.ts.map +1 -0
  136. package/dist/utilities/{formatDocTitle.js → formatDocTitle/index.js} +11 -3
  137. package/dist/utilities/formatDocTitle/index.js.map +1 -0
  138. package/dist/views/Edit/SetDocumentTitle/index.js +1 -1
  139. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  140. package/package.json +5 -5
  141. package/dist/utilities/formatDate.d.ts.map +0 -1
  142. package/dist/utilities/formatDate.js.map +0 -1
  143. package/dist/utilities/formatDocTitle.d.ts.map +0 -1
  144. package/dist/utilities/formatDocTitle.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["TZDateMini","TZDate","getTranslation","transpose","useCallback","useMemo","DatePickerField","RenderCustomComponent","TimezonePicker","FieldDescription","FieldError","FieldLabel","useForm","useFormFields","useField","withCondition","useConfig","useTranslation","mergeFieldStyles","fieldBaseClass","baseClass","DateTimeFieldComponent","props","field","admin","className","date","datePickerProps","description","placeholder","label","localized","required","timezone","path","readOnly","validate","pickerAppearance","userTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","config","i18n","dispatchFields","setModified","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","setValue","showError","timezonePath","timezoneField","fields","_","supportedTimezones","timezones","isDateOnly","includes","selectedTimezone","displayedValue","DateWithOriginalTz","tz","DateWithUserTz","modifiedDate","withTimeZone","dateWithTimezone","dateWithUserTimezone","toISOString","styles","onChange","incomingDate","TZDateWithSelectedTz","incomingOffset","getTimezoneOffset","originalHour","getHours","setHours","dateToSelectedTz","dateToUserTz","onChangeTimezone","type","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","id","replace","overrides","length","DateTimeField"],"sources":["../../../src/fields/DateTime/index.tsx"],"sourcesContent":["'use client'\nimport type { DateFieldClientComponent, DateFieldValidation } from 'payload'\n\nimport { TZDateMini as TZDate } from '@date-fns/tz/date/mini'\nimport { getTranslation } from '@payloadcms/translations'\nimport { transpose } from 'date-fns'\nimport { useCallback, useMemo } from 'react'\n\nimport { DatePickerField } from '../../elements/DatePicker/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { TimezonePicker } from '../../elements/TimezonePicker/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm, useFormFields } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport './index.scss'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'date-time-field'\n\nconst DateTimeFieldComponent: DateFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, date: datePickerProps, description, placeholder } = {},\n label,\n localized,\n required,\n timezone,\n },\n path,\n readOnly,\n validate,\n } = props\n\n const pickerAppearance = datePickerProps?.pickerAppearance || 'default'\n\n // Get the user timezone so we can adjust the displayed value against it\n const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n\n const { config } = useConfig()\n const { i18n } = useTranslation()\n const { dispatchFields, setModified } = useForm()\n\n const memoizedValidate: DateFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n setValue,\n showError,\n value,\n } = useField<string>({\n path,\n validate: memoizedValidate,\n })\n\n const timezonePath = path + '_tz'\n const timezoneField = useFormFields(([fields, _]) => fields?.[timezonePath])\n const supportedTimezones = config.admin.timezones.supportedTimezones\n /**\n * Date appearance doesn't include timestamps,\n * which means we need to pin the time to always 12:00 for the selected date\n */\n const isDateOnly = ['dayOnly', 'default', 'monthOnly'].includes(pickerAppearance)\n const selectedTimezone = timezoneField?.value as string\n\n // The displayed value should be the original value, adjusted to the user's timezone\n const displayedValue = useMemo(() => {\n if (timezone && selectedTimezone && userTimezone && value) {\n // Create TZDate instances for the selected timezone and the user's timezone\n // These instances allow us to transpose the date between timezones while keeping the same time value\n const DateWithOriginalTz = TZDate.tz(selectedTimezone)\n const DateWithUserTz = TZDate.tz(userTimezone)\n\n const modifiedDate = new TZDate(value).withTimeZone(selectedTimezone)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(modifiedDate, DateWithOriginalTz)\n\n // Transpose the date to the user's timezone - this is necessary because the react-datepicker component insists on displaying the date in the user's timezone\n const dateWithUserTimezone = transpose(dateWithTimezone, DateWithUserTz)\n\n return dateWithUserTimezone.toISOString()\n }\n\n return value\n }, [timezone, selectedTimezone, value, userTimezone])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n const onChange = useCallback(\n (incomingDate: Date) => {\n if (!readOnly) {\n if (timezone && selectedTimezone && incomingDate) {\n // Create TZDate instances for the selected timezone\n const TZDateWithSelectedTz = TZDate.tz(selectedTimezone)\n\n if (isDateOnly) {\n // We need to offset this hardcoded hour offset from the DatePicker elemenent\n // this can be removed in 4.0 when we remove the hardcoded offset as it is a breaking change\n // const tzOffset = incomingDate.getTimezoneOffset() / 60\n const incomingOffset = incomingDate.getTimezoneOffset() / 60\n const originalHour = incomingDate.getHours() + incomingOffset\n incomingDate.setHours(originalHour)\n\n // Convert the original date as picked into the desired timezone.\n const dateToSelectedTz = transpose(incomingDate, TZDateWithSelectedTz)\n\n setValue(dateToSelectedTz.toISOString() || null)\n } else {\n // Creates a TZDate instance for the user's timezone — this is default behaviour of TZDate as it wraps the Date constructor\n const dateToUserTz = new TZDate(incomingDate)\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(dateToUserTz, TZDateWithSelectedTz)\n\n setValue(dateWithTimezone.toISOString() || null)\n }\n } else {\n setValue(incomingDate?.toISOString() || null)\n }\n }\n },\n [readOnly, setValue, timezone, selectedTimezone],\n )\n\n const onChangeTimezone = useCallback(\n (timezone: string) => {\n if (timezonePath) {\n dispatchFields({\n type: 'UPDATE',\n path: timezonePath,\n value: timezone,\n })\n\n setModified(true)\n }\n },\n [dispatchFields, setModified, timezonePath],\n )\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && `${baseClass}--has-error`,\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={<FieldLabel label={label} localized={localized} required={required} />}\n />\n <div className={`${fieldBaseClass}__wrap`} id={`field-${path.replace(/\\./g, '__')}`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n <DatePickerField\n {...datePickerProps}\n onChange={onChange}\n overrides={{\n ...datePickerProps?.overrides,\n }}\n placeholder={getTranslation(placeholder, i18n)}\n readOnly={readOnly}\n value={displayedValue}\n />\n {timezone && supportedTimezones.length > 0 && (\n <TimezonePicker\n id={`${path}-timezone-picker`}\n onChange={onChangeTimezone}\n options={supportedTimezones}\n required={required}\n selectedTimezone={selectedTimezone}\n />\n )}\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const DateTimeField = withCondition(DateTimeFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["TZDateMini","TZDate","getTranslation","transpose","useCallback","useMemo","DatePickerField","RenderCustomComponent","TimezonePicker","FieldDescription","FieldError","FieldLabel","useForm","useFormFields","useField","withCondition","useConfig","useTranslation","mergeFieldStyles","fieldBaseClass","baseClass","DateTimeFieldComponent","props","field","admin","className","date","datePickerProps","description","placeholder","label","localized","required","timezone","path","readOnly","validate","pickerAppearance","userTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","config","i18n","dispatchFields","setModified","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","setValue","showError","timezonePath","timezoneField","fields","_","supportedTimezones","timezones","isDateOnly","includes","selectedTimezone","displayedValue","DateWithOriginalTz","tz","DateWithUserTz","modifiedDate","withTimeZone","dateWithTimezone","dateWithUserTimezone","toISOString","styles","onChange","incomingDate","TZDateWithSelectedTz","incomingOffset","getTimezoneOffset","originalHour","getHours","setHours","dateToSelectedTz","dateToUserTz","onChangeTimezone","type","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","id","replace","overrides","length","DateTimeField"],"sources":["../../../src/fields/DateTime/index.tsx"],"sourcesContent":["'use client'\nimport type { DateFieldClientComponent, DateFieldValidation } from 'payload'\n\nimport { TZDateMini as TZDate } from '@date-fns/tz/date/mini'\nimport { getTranslation } from '@payloadcms/translations'\nimport { transpose } from 'date-fns'\nimport { useCallback, useMemo } from 'react'\n\nimport { DatePickerField } from '../../elements/DatePicker/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { TimezonePicker } from '../../elements/TimezonePicker/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm, useFormFields } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport './index.scss'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'date-time-field'\n\nconst DateTimeFieldComponent: DateFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, date: datePickerProps, description, placeholder } = {},\n label,\n localized,\n required,\n timezone,\n },\n path,\n readOnly,\n validate,\n } = props\n\n const pickerAppearance = datePickerProps?.pickerAppearance || 'default'\n\n // Get the user timezone so we can adjust the displayed value against it\n const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone\n\n const { config } = useConfig()\n const { i18n } = useTranslation()\n const { dispatchFields, setModified } = useForm()\n\n const memoizedValidate: DateFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n setValue,\n showError,\n value,\n } = useField<string>({\n path,\n validate: memoizedValidate,\n })\n\n const timezonePath = path + '_tz'\n const timezoneField = useFormFields(([fields, _]) => fields?.[timezonePath])\n const supportedTimezones = config.admin.timezones.supportedTimezones\n /**\n * Date appearance doesn't include timestamps,\n * which means we need to pin the time to always 12:00 for the selected date\n */\n const isDateOnly = ['dayOnly', 'default', 'monthOnly'].includes(pickerAppearance)\n const selectedTimezone = timezoneField?.value as string\n\n // The displayed value should be the original value, adjusted to the user's timezone\n const displayedValue = useMemo(() => {\n if (timezone && selectedTimezone && userTimezone && value) {\n // Create TZDate instances for the selected timezone and the user's timezone\n // These instances allow us to transpose the date between timezones while keeping the same time value\n const DateWithOriginalTz = TZDate.tz(selectedTimezone)\n const DateWithUserTz = TZDate.tz(userTimezone)\n\n const modifiedDate = new TZDate(value).withTimeZone(selectedTimezone)\n\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(modifiedDate, DateWithOriginalTz)\n\n // Transpose the date to the user's timezone - this is necessary because the react-datepicker component insists on displaying the date in the user's timezone\n const dateWithUserTimezone = transpose(dateWithTimezone, DateWithUserTz)\n\n return dateWithUserTimezone.toISOString()\n }\n\n return value\n }, [timezone, selectedTimezone, value, userTimezone])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n const onChange = useCallback(\n (incomingDate: Date) => {\n if (!(readOnly || disabled)) {\n if (timezone && selectedTimezone && incomingDate) {\n // Create TZDate instances for the selected timezone\n const TZDateWithSelectedTz = TZDate.tz(selectedTimezone)\n\n if (isDateOnly) {\n // We need to offset this hardcoded hour offset from the DatePicker elemenent\n // this can be removed in 4.0 when we remove the hardcoded offset as it is a breaking change\n // const tzOffset = incomingDate.getTimezoneOffset() / 60\n const incomingOffset = incomingDate.getTimezoneOffset() / 60\n const originalHour = incomingDate.getHours() + incomingOffset\n incomingDate.setHours(originalHour)\n\n // Convert the original date as picked into the desired timezone.\n const dateToSelectedTz = transpose(incomingDate, TZDateWithSelectedTz)\n\n setValue(dateToSelectedTz.toISOString() || null)\n } else {\n // Creates a TZDate instance for the user's timezone — this is default behaviour of TZDate as it wraps the Date constructor\n const dateToUserTz = new TZDate(incomingDate)\n // Transpose the date to the selected timezone\n const dateWithTimezone = transpose(dateToUserTz, TZDateWithSelectedTz)\n\n setValue(dateWithTimezone.toISOString() || null)\n }\n } else {\n setValue(incomingDate?.toISOString() || null)\n }\n }\n },\n [readOnly, disabled, timezone, selectedTimezone, isDateOnly, setValue],\n )\n\n const onChangeTimezone = useCallback(\n (timezone: string) => {\n if (timezonePath) {\n dispatchFields({\n type: 'UPDATE',\n path: timezonePath,\n value: timezone,\n })\n\n setModified(true)\n }\n },\n [dispatchFields, setModified, timezonePath],\n )\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && `${baseClass}--has-error`,\n (readOnly || disabled) && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={<FieldLabel label={label} localized={localized} required={required} />}\n />\n <div className={`${fieldBaseClass}__wrap`} id={`field-${path.replace(/\\./g, '__')}`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n <DatePickerField\n {...datePickerProps}\n onChange={onChange}\n overrides={{\n ...datePickerProps?.overrides,\n }}\n placeholder={getTranslation(placeholder, i18n)}\n readOnly={readOnly || disabled}\n value={displayedValue}\n />\n {timezone && supportedTimezones.length > 0 && (\n <TimezonePicker\n id={`${path}-timezone-picker`}\n onChange={onChangeTimezone}\n options={supportedTimezones}\n required={required}\n selectedTimezone={selectedTimezone}\n />\n )}\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const DateTimeField = withCondition(DateTimeFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Email/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAGhB,OAAO,KAA+B,MAAM,OAAO,CAAA;AAUnD,OAAO,cAAc,CAAA;AAuFrB,eAAO,MAAM,UAAU;;;;;+EAAqC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Email/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAGhB,OAAO,KAA+B,MAAM,OAAO,CAAA;AAUnD,OAAO,cAAc,CAAA;AA8FrB,eAAO,MAAM,UAAU;;;;;+EAAqC,CAAA"}
@@ -50,6 +50,7 @@ const EmailFieldComponent = props => {
50
50
  Error,
51
51
  Label
52
52
  } = {},
53
+ disabled,
53
54
  setValue,
54
55
  showError,
55
56
  value: value_0
@@ -59,7 +60,7 @@ const EmailFieldComponent = props => {
59
60
  });
60
61
  const styles = useMemo(() => mergeFieldStyles(field), [field]);
61
62
  return /*#__PURE__*/_jsxs("div", {
62
- className: [fieldBaseClass, 'email', className, showError && 'error', readOnly && 'read-only'].filter(Boolean).join(' '),
63
+ className: [fieldBaseClass, 'email', className, showError && 'error', (readOnly || disabled) && 'read-only'].filter(Boolean).join(' '),
63
64
  style: styles,
64
65
  children: [/*#__PURE__*/_jsx(RenderCustomComponent, {
65
66
  CustomComponent: Label,
@@ -79,7 +80,7 @@ const EmailFieldComponent = props => {
79
80
  })
80
81
  }), BeforeInput, /*#__PURE__*/_jsx("input", {
81
82
  autoComplete: autoComplete,
82
- disabled: readOnly,
83
+ disabled: readOnly || disabled,
83
84
  id: `field-${path.replace(/\./g, '__')}`,
84
85
  name: path,
85
86
  onChange: setValue,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","React","useCallback","useMemo","RenderCustomComponent","FieldDescription","FieldError","useField","withCondition","useTranslation","FieldLabel","mergeFieldStyles","fieldBaseClass","EmailFieldComponent","props","field","admin","autoComplete","className","description","placeholder","label","localized","required","path","readOnly","validate","i18n","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","setValue","showError","styles","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","disabled","id","replace","name","onChange","type","EmailField"],"sources":["../../../src/fields/Email/index.tsx"],"sourcesContent":["'use client'\nimport type {\n EmailFieldClientComponent,\n EmailFieldClientProps,\n EmailFieldValidation,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useMemo } from 'react'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst EmailFieldComponent: EmailFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: {\n autoComplete,\n className,\n description,\n placeholder,\n } = {} as EmailFieldClientProps['field']['admin'],\n label,\n localized,\n required,\n } = {} as EmailFieldClientProps['field'],\n path,\n readOnly,\n validate,\n } = props\n\n const { i18n } = useTranslation()\n\n const memoizedValidate: EmailFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n setValue,\n showError,\n value,\n } = useField({\n path,\n validate: memoizedValidate,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[fieldBaseClass, 'email', className, showError && 'error', readOnly && 'read-only']\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {/* disable eslint here because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n autoComplete={autoComplete}\n disabled={readOnly}\n id={`field-${path.replace(/\\./g, '__')}`}\n name={path}\n onChange={setValue}\n placeholder={getTranslation(placeholder, i18n)}\n required={required}\n type=\"email\"\n value={(value as string) || ''}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const EmailField = withCondition(EmailFieldComponent)\n"],"mappings":"AAAA;;;AAOA,SAASA,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,WAAW,EAAEC,OAAO,QAAQ;AAE5C,SAASC,qBAAqB,QAAQ;AACtC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,UAAU,QAAQ;AAC3B,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,UAAU,QAAQ;AAC3B,SAASC,gBAAgB,QAAQ;AACjC,OAAO;AACP,SAASC,cAAc,QAAQ;AAE/B,MAAMC,mBAAA,GAAkDC,KAAA;EACtD,MAAM;IACJC,KAAK;IACLA,KAAA,EAAO;MACLC,KAAA,EAAO;QACLC,YAAY;QACZC,SAAS;QACTC,WAAW;QACXC;MAAW,CACZ,GAAG,CAAC,CAA4C;MACjDC,KAAK;MACLC,SAAS;MACTC;IAAQ,CACT,GAAG,CAAC,CAAmC;IACxCC,IAAI;IACJC,QAAQ;IACRC;EAAQ,CACT,GAAGZ,KAAA;EAEJ,MAAM;IAAEa;EAAI,CAAE,GAAGlB,cAAA;EAEjB,MAAMmB,gBAAA,GAAyC1B,WAAA,CAC7C,CAAC2B,KAAA,EAAOC,OAAA;IACN,IAAI,OAAOJ,QAAA,KAAa,YAAY;MAClC,OAAOA,QAAA,CAASG,KAAA,EAAO;QAAE,GAAGC,OAAO;QAAEP;MAAS;IAChD;EACF,GACA,CAACG,QAAA,EAAUH,QAAA,CAAS;EAGtB,MAAM;IACJQ,gBAAA,EAAkB;MAAEC,UAAU;MAAEC,WAAW;MAAEC,WAAW;MAAEC,KAAK;MAAEC;IAAK,CAAE,GAAG,CAAC,CAAC;IAC7EC,QAAQ;IACRC,SAAS;IACTT,KAAK,EAALA;EAAK,CACN,GAAGtB,QAAA,CAAS;IACXiB,IAAA;IACAE,QAAA,EAAUE;EACZ;EAEA,MAAMW,MAAA,GAASpC,OAAA,CAAQ,MAAMQ,gBAAA,CAAiBI,KAAA,GAAQ,CAACA,KAAA,CAAM;EAE7D,oBACEyB,KAAA,CAAC;IACCtB,SAAA,EAAW,CAACN,cAAA,EAAgB,SAASM,SAAA,EAAWoB,SAAA,IAAa,SAASb,QAAA,IAAY,YAAY,CAC3FgB,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;IACRC,KAAA,EAAOL,MAAA;4BAEPM,IAAA,CAACzC,qBAAA;MACC0C,eAAA,EAAiBV,KAAA;MACjBW,QAAA,eACEF,IAAA,CAACnC,UAAA;QAAWW,KAAA,EAAOA,KAAA;QAAOC,SAAA,EAAWA,SAAA;QAAWE,IAAA,EAAMA,IAAA;QAAMD,QAAA,EAAUA;;qBAG1EiB,KAAA,CAAC;MAAItB,SAAA,EAAW,GAAGN,cAAA,QAAsB;8BACvCiC,IAAA,CAACzC,qBAAA;QACC0C,eAAA,EAAiBX,KAAA;QACjBY,QAAA,eAAUF,IAAA,CAACvC,UAAA;UAAWkB,IAAA,EAAMA,IAAA;UAAMc,SAAA,EAAWA;;UAE9CL,WAAA,E,aAGDY,IAAA,CAAC;QACC5B,YAAA,EAAcA,YAAA;QACd+B,QAAA,EAAUvB,QAAA;QACVwB,EAAA,EAAI,SAASzB,IAAA,CAAK0B,OAAO,CAAC,OAAO,OAAO;QACxCC,IAAA,EAAM3B,IAAA;QACN4B,QAAA,EAAUf,QAAA;QACVjB,WAAA,EAAapB,cAAA,CAAeoB,WAAA,EAAaO,IAAA;QACzCJ,QAAA,EAAUA,QAAA;QACV8B,IAAA,EAAK;QACLxB,KAAA,EAAOA,OAAC,IAAoB;UAE7BG,UAAA;qBAEHa,IAAA,CAACzC,qBAAA;MACC0C,eAAA,EAAiBZ,WAAA;MACjBa,QAAA,eAAUF,IAAA,CAACxC,gBAAA;QAAiBc,WAAA,EAAaA,WAAA;QAAaK,IAAA,EAAMA;;;;AAIpE;AAEA,OAAO,MAAM8B,UAAA,GAAa9C,aAAA,CAAcK,mBAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","useCallback","useMemo","RenderCustomComponent","FieldDescription","FieldError","useField","withCondition","useTranslation","FieldLabel","mergeFieldStyles","fieldBaseClass","EmailFieldComponent","props","field","admin","autoComplete","className","description","placeholder","label","localized","required","path","readOnly","validate","i18n","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","setValue","showError","styles","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","id","replace","name","onChange","type","EmailField"],"sources":["../../../src/fields/Email/index.tsx"],"sourcesContent":["'use client'\nimport type {\n EmailFieldClientComponent,\n EmailFieldClientProps,\n EmailFieldValidation,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useMemo } from 'react'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst EmailFieldComponent: EmailFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: {\n autoComplete,\n className,\n description,\n placeholder,\n } = {} as EmailFieldClientProps['field']['admin'],\n label,\n localized,\n required,\n } = {} as EmailFieldClientProps['field'],\n path,\n readOnly,\n validate,\n } = props\n\n const { i18n } = useTranslation()\n\n const memoizedValidate: EmailFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n setValue,\n showError,\n value,\n } = useField({\n path,\n validate: memoizedValidate,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'email',\n className,\n showError && 'error',\n (readOnly || disabled) && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {/* disable eslint here because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n autoComplete={autoComplete}\n disabled={readOnly || disabled}\n id={`field-${path.replace(/\\./g, '__')}`}\n name={path}\n onChange={setValue}\n placeholder={getTranslation(placeholder, i18n)}\n required={required}\n type=\"email\"\n value={(value as string) || ''}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const EmailField = withCondition(EmailFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Group/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAGxD,OAAO,KAAkB,MAAM,OAAO,CAAA;AAetC,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIvD,eAAO,MAAM,mBAAmB,EAAE,yBAyFjC,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAA;AAElC,eAAO,MAAM,UAAU;;+EAAqC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Group/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAGxD,OAAO,KAAkB,MAAM,OAAO,CAAA;AAetC,OAAO,cAAc,CAAA;AAErB,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAIvD,eAAO,MAAM,mBAAmB,EAAE,yBA2FjC,CAAA;AAED,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAA;AAElC,eAAO,MAAM,UAAU;;+EAAqC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","React","useMemo","useCollapsible","ErrorPill","RenderCustomComponent","FieldDescription","FieldLabel","useFormSubmitted","RenderFields","useField","withCondition","useTranslation","mergeFieldStyles","useRow","fieldBaseClass","useTabs","GroupProvider","useGroup","baseClass","GroupFieldComponent","props","field","name","admin","className","description","hideGutter","fields","label","path","permissions","readOnly","schemaPath","schemaPathFromProps","i18n","isWithinCollapsible","isWithinGroup","isWithinRow","isWithinTab","customComponents","AfterInput","BeforeInput","Description","Label","errorPaths","submitted","errorCount","length","fieldHasErrors","isTopLevel","styles","_jsxs","filter","Boolean","join","id","replace","style","_jsx","CustomComponent","Fallback","as","localized","required","count","withMessage","margins","parentIndexPath","parentPath","parentSchemaPath","GroupField"],"sources":["../../../src/fields/Group/index.tsx"],"sourcesContent":["'use client'\n\nimport type { GroupFieldClientComponent } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useMemo } from 'react'\n\nimport { useCollapsible } from '../../elements/Collapsible/provider.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { useRow } from '../Row/provider.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\nimport { useTabs } from '../Tabs/provider.js'\nimport { GroupProvider, useGroup } from './provider.js'\n\nconst baseClass = 'group-field'\n\nexport const GroupFieldComponent: GroupFieldClientComponent = (props) => {\n const {\n field,\n field: { name, admin: { className, description, hideGutter } = {}, fields, label },\n path,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n } = props\n const schemaPath = schemaPathFromProps ?? name\n\n const { i18n } = useTranslation()\n const { isWithinCollapsible } = useCollapsible()\n const isWithinGroup = useGroup()\n const isWithinRow = useRow()\n const isWithinTab = useTabs()\n const { customComponents: { AfterInput, BeforeInput, Description, Label } = {}, errorPaths } =\n useField({ path })\n const submitted = useFormSubmitted()\n const errorCount = errorPaths.length\n const fieldHasErrors = submitted && errorCount > 0\n\n const isTopLevel = !(isWithinCollapsible || isWithinGroup || isWithinRow)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n isTopLevel && `${baseClass}--top-level`,\n isWithinCollapsible && `${baseClass}--within-collapsible`,\n isWithinGroup && `${baseClass}--within-group`,\n isWithinRow && `${baseClass}--within-row`,\n isWithinTab && `${baseClass}--within-tab`,\n !hideGutter && isWithinGroup && `${baseClass}--gutter`,\n fieldHasErrors && `${baseClass}--has-error`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n style={styles}\n >\n <GroupProvider>\n <div className={`${baseClass}__wrap`}>\n {Boolean(Label || Description || label || fieldHasErrors) && (\n <div className={`${baseClass}__header`}>\n {Boolean(Label || Description || label) && (\n <header>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <h3 className={`${baseClass}__title`}>\n <FieldLabel\n as=\"span\"\n label={getTranslation(label, i18n)}\n localized={false}\n path={path}\n required={false}\n />\n </h3>\n }\n />\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n )}\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n )}\n {BeforeInput}\n <RenderFields\n fields={fields}\n margins=\"small\"\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={permissions === true ? permissions : permissions?.fields}\n readOnly={readOnly}\n />\n </div>\n </GroupProvider>\n {AfterInput}\n </div>\n )\n}\n\nexport { GroupProvider, useGroup }\n\nexport const GroupField = withCondition(GroupFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","useMemo","useCollapsible","ErrorPill","RenderCustomComponent","FieldDescription","FieldLabel","useFormSubmitted","RenderFields","useField","withCondition","useTranslation","mergeFieldStyles","useRow","fieldBaseClass","useTabs","GroupProvider","useGroup","baseClass","GroupFieldComponent","props","field","name","admin","className","description","hideGutter","fields","label","path","permissions","readOnly","schemaPath","schemaPathFromProps","i18n","isWithinCollapsible","isWithinGroup","isWithinRow","isWithinTab","customComponents","AfterInput","BeforeInput","Description","Label","errorPaths","submitted","errorCount","length","fieldHasErrors","isTopLevel","styles","_jsxs","filter","Boolean","join","id","replace","style","_jsx","CustomComponent","Fallback","as","localized","required","count","withMessage","margins","parentIndexPath","parentPath","parentSchemaPath","GroupField"],"sources":["../../../src/fields/Group/index.tsx"],"sourcesContent":["'use client'\n\nimport type { GroupFieldClientComponent } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useMemo } from 'react'\n\nimport { useCollapsible } from '../../elements/Collapsible/provider.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { useRow } from '../Row/provider.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\nimport { useTabs } from '../Tabs/provider.js'\nimport { GroupProvider, useGroup } from './provider.js'\n\nconst baseClass = 'group-field'\n\nexport const GroupFieldComponent: GroupFieldClientComponent = (props) => {\n const {\n field,\n field: { name, admin: { className, description, hideGutter } = {}, fields, label },\n path,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n } = props\n const schemaPath = schemaPathFromProps ?? name\n\n const { i18n } = useTranslation()\n const { isWithinCollapsible } = useCollapsible()\n const isWithinGroup = useGroup()\n const isWithinRow = useRow()\n const isWithinTab = useTabs()\n\n const { customComponents: { AfterInput, BeforeInput, Description, Label } = {}, errorPaths } =\n useField({ path })\n\n const submitted = useFormSubmitted()\n const errorCount = errorPaths.length\n const fieldHasErrors = submitted && errorCount > 0\n\n const isTopLevel = !(isWithinCollapsible || isWithinGroup || isWithinRow)\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n isTopLevel && `${baseClass}--top-level`,\n isWithinCollapsible && `${baseClass}--within-collapsible`,\n isWithinGroup && `${baseClass}--within-group`,\n isWithinRow && `${baseClass}--within-row`,\n isWithinTab && `${baseClass}--within-tab`,\n !hideGutter && isWithinGroup && `${baseClass}--gutter`,\n fieldHasErrors && `${baseClass}--has-error`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n style={styles}\n >\n <GroupProvider>\n <div className={`${baseClass}__wrap`}>\n {Boolean(Label || Description || label || fieldHasErrors) && (\n <div className={`${baseClass}__header`}>\n {Boolean(Label || Description || label) && (\n <header>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <h3 className={`${baseClass}__title`}>\n <FieldLabel\n as=\"span\"\n label={getTranslation(label, i18n)}\n localized={false}\n path={path}\n required={false}\n />\n </h3>\n }\n />\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n )}\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n )}\n {BeforeInput}\n <RenderFields\n fields={fields}\n margins=\"small\"\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={permissions === true ? permissions : permissions?.fields}\n readOnly={readOnly}\n />\n </div>\n </GroupProvider>\n {AfterInput}\n </div>\n )\n}\n\nexport { GroupProvider, useGroup }\n\nexport const GroupField = withCondition(GroupFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -126,9 +126,12 @@
126
126
  html[data-theme='light'] {
127
127
  .group-field {
128
128
  &--has-error {
129
- color: var(--theme-error-750);
130
- &:after {
131
- background: var(--theme-error-500);
129
+ .group-field__header {
130
+ color: var(--theme-error-750);
131
+
132
+ &:after {
133
+ background: var(--theme-error-500);
134
+ }
132
135
  }
133
136
  }
134
137
  }
@@ -137,9 +140,12 @@
137
140
  html[data-theme='dark'] {
138
141
  .group-field {
139
142
  &--has-error {
140
- color: var(--theme-error-500);
141
- &:after {
142
- background: var(--theme-error-500);
143
+ .group-field__header {
144
+ color: var(--theme-error-500);
145
+
146
+ &:after {
147
+ background: var(--theme-error-500);
148
+ }
143
149
  }
144
150
  }
145
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/JSON/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAWxE,OAAO,cAAc,CAAA;AA4JrB,eAAO,MAAM,SAAS;;;;;+EAAoC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/JSON/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAWxE,OAAO,cAAc,CAAA;AA8JrB,eAAO,MAAM,SAAS;;;;;+EAAoC,CAAA"}
@@ -52,6 +52,7 @@ const JSONFieldComponent = props => {
52
52
  Error,
53
53
  Label
54
54
  } = {},
55
+ disabled,
55
56
  initialValue,
56
57
  setValue,
57
58
  showError,
@@ -75,7 +76,7 @@ const JSONFieldComponent = props => {
75
76
  editor.setModel(monaco.editor.createModel(JSON.stringify(value_0, null, 2), 'json', monaco.Uri.parse(newUri)));
76
77
  }, [jsonSchema, value_0]);
77
78
  const handleChange = useCallback(val => {
78
- if (readOnly) {
79
+ if (readOnly || disabled) {
79
80
  return;
80
81
  }
81
82
  inputChangeFromRef.current = 'user';
@@ -86,7 +87,7 @@ const JSONFieldComponent = props => {
86
87
  setValue(val ? val : null);
87
88
  setJsonError(e);
88
89
  }
89
- }, [readOnly, setValue]);
90
+ }, [readOnly, disabled, setValue]);
90
91
  useEffect(() => {
91
92
  if (inputChangeFromRef.current === 'system') {
92
93
  setInitialStringValue((value_0 || initialValue) !== undefined ? JSON.stringify(value_0 ?? initialValue, null, 2) : undefined);
@@ -96,7 +97,7 @@ const JSONFieldComponent = props => {
96
97
  }, [initialValue, value_0]);
97
98
  const styles = useMemo(() => mergeFieldStyles(field), [field]);
98
99
  return /*#__PURE__*/_jsxs("div", {
99
- className: [fieldBaseClass, baseClass, className, showError && 'error', readOnly && 'read-only'].filter(Boolean).join(' '),
100
+ className: [fieldBaseClass, baseClass, className, showError && 'error', (readOnly || disabled) && 'read-only'].filter(Boolean).join(' '),
100
101
  style: styles,
101
102
  children: [/*#__PURE__*/_jsx(RenderCustomComponent, {
102
103
  CustomComponent: Label,
@@ -121,7 +122,7 @@ const JSONFieldComponent = props => {
121
122
  onChange: handleChange,
122
123
  onMount: handleMount,
123
124
  options: editorOptions,
124
- readOnly: readOnly,
125
+ readOnly: readOnly || disabled,
125
126
  value: initialStringValue,
126
127
  wrapperProps: {
127
128
  id: `field-${path?.replace(/\./g, '__')}`
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useState","CodeEditor","RenderCustomComponent","useField","withCondition","FieldDescription","FieldError","FieldLabel","mergeFieldStyles","fieldBaseClass","baseClass","JSONFieldComponent","props","field","admin","className","description","editorOptions","maxHeight","jsonSchema","label","localized","required","path","readOnly","validate","jsonError","setJsonError","inputChangeFromRef","useRef","editorKey","setEditorKey","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","initialValue","setValue","showError","initialStringValue","setInitialStringValue","undefined","JSON","stringify","handleMount","editor","monaco","languages","json","jsonDefaults","setDiagnosticsOptions","enableSchemaRequest","schemas","diagnosticsOptions","uri","newUri","includes","crypto","randomUUID","setModel","createModel","Uri","parse","handleChange","val","current","e","Date","toString","styles","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","message","defaultLanguage","onChange","onMount","wrapperProps","id","replace","JSONField"],"sources":["../../../src/fields/JSON/index.tsx"],"sourcesContent":["'use client'\nimport type { JSONFieldClientComponent } from 'payload'\n\nimport { type OnMount } from '@monaco-editor/react'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { CodeEditor } from '../../elements/CodeEditor/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst baseClass = 'json-field'\n\nconst JSONFieldComponent: JSONFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, editorOptions, maxHeight } = {},\n jsonSchema,\n label,\n localized,\n required,\n },\n path,\n readOnly,\n validate,\n } = props\n const [jsonError, setJsonError] = useState<string>()\n const inputChangeFromRef = React.useRef<'system' | 'user'>('system')\n const [editorKey, setEditorKey] = useState<string>('')\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, jsonError, required })\n }\n },\n [validate, required, jsonError],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n initialValue,\n setValue,\n showError,\n value,\n } = useField<string>({\n path,\n validate: memoizedValidate,\n })\n\n const [initialStringValue, setInitialStringValue] = useState<string | undefined>(() =>\n (value || initialValue) !== undefined\n ? JSON.stringify(value ?? initialValue, null, 2)\n : undefined,\n )\n\n const handleMount = useCallback<OnMount>(\n (editor, monaco) => {\n if (!jsonSchema) {\n return\n }\n\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n enableSchemaRequest: true,\n schemas: [\n ...(monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas || []),\n jsonSchema,\n ],\n validate: true,\n })\n\n const uri = jsonSchema.uri\n const newUri = uri.includes('?')\n ? `${uri}&${crypto.randomUUID()}`\n : `${uri}?${crypto.randomUUID()}`\n\n editor.setModel(\n monaco.editor.createModel(JSON.stringify(value, null, 2), 'json', monaco.Uri.parse(newUri)),\n )\n },\n [jsonSchema, value],\n )\n\n const handleChange = useCallback(\n (val) => {\n if (readOnly) {\n return\n }\n inputChangeFromRef.current = 'user'\n\n try {\n setValue(val ? JSON.parse(val) : null)\n setJsonError(undefined)\n } catch (e) {\n setValue(val ? val : null)\n setJsonError(e)\n }\n },\n [readOnly, setValue],\n )\n\n useEffect(() => {\n if (inputChangeFromRef.current === 'system') {\n setInitialStringValue(\n (value || initialValue) !== undefined\n ? JSON.stringify(value ?? initialValue, null, 2)\n : undefined,\n )\n setEditorKey(new Date().toString())\n }\n\n inputChangeFromRef.current = 'system'\n }, [initialValue, value])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError message={jsonError} path={path} showError={showError} />}\n />\n {BeforeInput}\n <CodeEditor\n defaultLanguage=\"json\"\n key={editorKey}\n maxHeight={maxHeight}\n onChange={handleChange}\n onMount={handleMount}\n options={editorOptions}\n readOnly={readOnly}\n value={initialStringValue}\n wrapperProps={{\n id: `field-${path?.replace(/\\./g, '__')}`,\n }}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const JSONField = withCondition(JSONFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useEffect","useMemo","useState","CodeEditor","RenderCustomComponent","useField","withCondition","FieldDescription","FieldError","FieldLabel","mergeFieldStyles","fieldBaseClass","baseClass","JSONFieldComponent","props","field","admin","className","description","editorOptions","maxHeight","jsonSchema","label","localized","required","path","readOnly","validate","jsonError","setJsonError","inputChangeFromRef","useRef","editorKey","setEditorKey","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","initialValue","setValue","showError","initialStringValue","setInitialStringValue","undefined","JSON","stringify","handleMount","editor","monaco","languages","json","jsonDefaults","setDiagnosticsOptions","enableSchemaRequest","schemas","diagnosticsOptions","uri","newUri","includes","crypto","randomUUID","setModel","createModel","Uri","parse","handleChange","val","current","e","Date","toString","styles","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","message","defaultLanguage","onChange","onMount","wrapperProps","id","replace","JSONField"],"sources":["../../../src/fields/JSON/index.tsx"],"sourcesContent":["'use client'\nimport type { JSONFieldClientComponent } from 'payload'\n\nimport { type OnMount } from '@monaco-editor/react'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { CodeEditor } from '../../elements/CodeEditor/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst baseClass = 'json-field'\n\nconst JSONFieldComponent: JSONFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, editorOptions, maxHeight } = {},\n jsonSchema,\n label,\n localized,\n required,\n },\n path,\n readOnly,\n validate,\n } = props\n\n const [jsonError, setJsonError] = useState<string>()\n const inputChangeFromRef = React.useRef<'system' | 'user'>('system')\n const [editorKey, setEditorKey] = useState<string>('')\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, jsonError, required })\n }\n },\n [validate, required, jsonError],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n initialValue,\n setValue,\n showError,\n value,\n } = useField<string>({\n path,\n validate: memoizedValidate,\n })\n\n const [initialStringValue, setInitialStringValue] = useState<string | undefined>(() =>\n (value || initialValue) !== undefined\n ? JSON.stringify(value ?? initialValue, null, 2)\n : undefined,\n )\n\n const handleMount = useCallback<OnMount>(\n (editor, monaco) => {\n if (!jsonSchema) {\n return\n }\n\n monaco.languages.json.jsonDefaults.setDiagnosticsOptions({\n enableSchemaRequest: true,\n schemas: [\n ...(monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas || []),\n jsonSchema,\n ],\n validate: true,\n })\n\n const uri = jsonSchema.uri\n const newUri = uri.includes('?')\n ? `${uri}&${crypto.randomUUID()}`\n : `${uri}?${crypto.randomUUID()}`\n\n editor.setModel(\n monaco.editor.createModel(JSON.stringify(value, null, 2), 'json', monaco.Uri.parse(newUri)),\n )\n },\n [jsonSchema, value],\n )\n\n const handleChange = useCallback(\n (val) => {\n if (readOnly || disabled) {\n return\n }\n inputChangeFromRef.current = 'user'\n\n try {\n setValue(val ? JSON.parse(val) : null)\n setJsonError(undefined)\n } catch (e) {\n setValue(val ? val : null)\n setJsonError(e)\n }\n },\n [readOnly, disabled, setValue],\n )\n\n useEffect(() => {\n if (inputChangeFromRef.current === 'system') {\n setInitialStringValue(\n (value || initialValue) !== undefined\n ? JSON.stringify(value ?? initialValue, null, 2)\n : undefined,\n )\n setEditorKey(new Date().toString())\n }\n\n inputChangeFromRef.current = 'system'\n }, [initialValue, value])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n (readOnly || disabled) && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError message={jsonError} path={path} showError={showError} />}\n />\n {BeforeInput}\n <CodeEditor\n defaultLanguage=\"json\"\n key={editorKey}\n maxHeight={maxHeight}\n onChange={handleChange}\n onMount={handleMount}\n options={editorOptions}\n readOnly={readOnly || disabled}\n value={initialStringValue}\n wrapperProps={{\n id: `field-${path?.replace(/\\./g, '__')}`,\n }}\n />\n {AfterInput}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const JSONField = withCondition(JSONFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Number/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAaxE,OAAO,cAAc,CAAA;AA8LrB,eAAO,MAAM,WAAW;;;;;;+EAAsC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Number/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAaxE,OAAO,cAAc,CAAA;AA+LrB,eAAO,MAAM,WAAW;;;;;;+EAAsC,CAAA"}
@@ -60,6 +60,7 @@ const NumberFieldComponent = props => {
60
60
  Error,
61
61
  Label
62
62
  } = {},
63
+ disabled,
63
64
  setValue,
64
65
  showError,
65
66
  value: value_0
@@ -81,7 +82,7 @@ const NumberFieldComponent = props => {
81
82
  const [valueToRender, setValueToRender] = useState([]) // Only for hasMany
82
83
  ;
83
84
  const handleHasManyChange = useCallback(selectedOption => {
84
- if (!readOnly) {
85
+ if (!(readOnly || disabled)) {
85
86
  let newValue;
86
87
  if (!selectedOption) {
87
88
  newValue = [];
@@ -92,7 +93,7 @@ const NumberFieldComponent = props => {
92
93
  }
93
94
  setValue(newValue);
94
95
  }
95
- }, [readOnly, setValue]);
96
+ }, [readOnly, disabled, setValue]);
96
97
  // useEffect update valueToRender:
97
98
  useEffect(() => {
98
99
  if (hasMany && Array.isArray(value_0)) {
@@ -110,7 +111,7 @@ const NumberFieldComponent = props => {
110
111
  }, [value_0, hasMany]);
111
112
  const styles = useMemo(() => mergeFieldStyles(field), [field]);
112
113
  return /*#__PURE__*/_jsxs("div", {
113
- className: [fieldBaseClass, 'number', className, showError && 'error', readOnly && 'read-only', hasMany && 'has-many'].filter(Boolean).join(' '),
114
+ className: [fieldBaseClass, 'number', className, showError && 'error', (readOnly || disabled) && 'read-only', hasMany && 'has-many'].filter(Boolean).join(' '),
114
115
  style: styles,
115
116
  children: [/*#__PURE__*/_jsx(RenderCustomComponent, {
116
117
  CustomComponent: Label,
@@ -130,7 +131,7 @@ const NumberFieldComponent = props => {
130
131
  })
131
132
  }), BeforeInput, hasMany ? /*#__PURE__*/_jsx(ReactSelect, {
132
133
  className: `field-${path.replace(/\./g, '__')}`,
133
- disabled: readOnly,
134
+ disabled: readOnly || disabled,
134
135
  filterOption: (_, rawInput) => {
135
136
  const isOverHasMany = Array.isArray(value_0) && value_0.length >= maxRows;
136
137
  return isNumber(rawInput) && !isOverHasMany;
@@ -157,7 +158,7 @@ const NumberFieldComponent = props => {
157
158
  value: valueToRender
158
159
  }) : /*#__PURE__*/_jsx("div", {
159
160
  children: /*#__PURE__*/_jsx("input", {
160
- disabled: readOnly,
161
+ disabled: readOnly || disabled,
161
162
  id: `field-${path.replace(/\./g, '__')}`,
162
163
  max: max,
163
164
  min: min,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","isNumber","React","useCallback","useEffect","useMemo","useState","ReactSelect","RenderCustomComponent","useField","withCondition","useTranslation","FieldDescription","FieldError","FieldLabel","mergeFieldStyles","fieldBaseClass","NumberFieldComponent","props","field","admin","className","description","placeholder","step","hasMany","label","localized","max","Infinity","maxRows","min","required","onChange","onChangeFromProps","path","readOnly","validate","i18n","t","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","setValue","showError","handleChange","e","val","parseFloat","target","newVal","Number","isNaN","valueToRender","setValueToRender","handleHasManyChange","selectedOption","newValue","Array","isArray","map","option","index","id","toString","styles","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","replace","disabled","filterOption","_","rawInput","isOverHasMany","length","isClearable","isCreatable","isMulti","isSortable","noOptionsMessage","name","onWheel","blur","type","NumberField"],"sources":["../../../src/fields/Number/index.tsx"],"sourcesContent":["'use client'\nimport type { NumberFieldClientComponent, NumberFieldClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { isNumber } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst NumberFieldComponent: NumberFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: {\n className,\n description,\n placeholder,\n step = 1,\n } = {} as NumberFieldClientProps['field']['admin'],\n hasMany = false,\n label,\n localized,\n max = Infinity,\n maxRows = Infinity,\n min = -Infinity,\n required,\n },\n onChange: onChangeFromProps,\n path,\n readOnly,\n validate,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, max, min, required })\n }\n },\n [validate, min, max, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n setValue,\n showError,\n value,\n } = useField<number | number[]>({\n path,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e) => {\n const val = parseFloat(e.target.value)\n let newVal = val\n\n if (Number.isNaN(val)) {\n newVal = null\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newVal)\n }\n\n setValue(newVal)\n },\n [onChangeFromProps, setValue],\n )\n\n const [valueToRender, setValueToRender] = useState<\n { id: string; label: string; value: { value: number } }[]\n >([]) // Only for hasMany\n\n const handleHasManyChange = useCallback(\n (selectedOption) => {\n if (!readOnly) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => Number(option.value?.value || option.value))\n } else {\n newValue = [Number(selectedOption.value?.value || selectedOption.value)]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, setValue],\n )\n\n // useEffect update valueToRender:\n useEffect(() => {\n if (hasMany && Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n toString: () => `${val}${index}`,\n value: (val as unknown as Record<string, number>)?.value || val,\n }, // You're probably wondering, why the hell is this done that way? Well, React-select automatically uses \"label-value\" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key.\n }\n }),\n )\n }\n }, [value, hasMany])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'number',\n className,\n showError && 'error',\n readOnly && 'read-only',\n hasMany && 'has-many',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {hasMany ? (\n <ReactSelect\n className={`field-${path.replace(/\\./g, '__')}`}\n disabled={readOnly}\n filterOption={(_, rawInput) => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n return isNumber(rawInput) && !isOverHasMany\n }}\n isClearable\n isCreatable\n isMulti\n isSortable\n noOptionsMessage={() => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n if (isOverHasMany) {\n return t('validation:limitReached', { max: maxRows, value: value.length + 1 })\n }\n return null\n }}\n // numberOnly\n onChange={handleHasManyChange}\n options={[]}\n placeholder={t('general:enterAValue')}\n showError={showError}\n value={valueToRender as Option[]}\n />\n ) : (\n <div>\n <input\n disabled={readOnly}\n id={`field-${path.replace(/\\./g, '__')}`}\n max={max}\n min={min}\n name={path}\n onChange={handleChange}\n onWheel={(e) => {\n // @ts-expect-error\n e.target.blur()\n }}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={typeof value === 'number' ? value : ''}\n />\n </div>\n )}\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n\nexport const NumberField = withCondition(NumberFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","isNumber","React","useCallback","useEffect","useMemo","useState","ReactSelect","RenderCustomComponent","useField","withCondition","useTranslation","FieldDescription","FieldError","FieldLabel","mergeFieldStyles","fieldBaseClass","NumberFieldComponent","props","field","admin","className","description","placeholder","step","hasMany","label","localized","max","Infinity","maxRows","min","required","onChange","onChangeFromProps","path","readOnly","validate","i18n","t","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","setValue","showError","handleChange","e","val","parseFloat","target","newVal","Number","isNaN","valueToRender","setValueToRender","handleHasManyChange","selectedOption","newValue","Array","isArray","map","option","index","id","toString","styles","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","replace","filterOption","_","rawInput","isOverHasMany","length","isClearable","isCreatable","isMulti","isSortable","noOptionsMessage","name","onWheel","blur","type","NumberField"],"sources":["../../../src/fields/Number/index.tsx"],"sourcesContent":["'use client'\nimport type { NumberFieldClientComponent, NumberFieldClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { isNumber } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst NumberFieldComponent: NumberFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: {\n className,\n description,\n placeholder,\n step = 1,\n } = {} as NumberFieldClientProps['field']['admin'],\n hasMany = false,\n label,\n localized,\n max = Infinity,\n maxRows = Infinity,\n min = -Infinity,\n required,\n },\n onChange: onChangeFromProps,\n path,\n readOnly,\n validate,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, max, min, required })\n }\n },\n [validate, min, max, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n setValue,\n showError,\n value,\n } = useField<number | number[]>({\n path,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e) => {\n const val = parseFloat(e.target.value)\n let newVal = val\n\n if (Number.isNaN(val)) {\n newVal = null\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newVal)\n }\n\n setValue(newVal)\n },\n [onChangeFromProps, setValue],\n )\n\n const [valueToRender, setValueToRender] = useState<\n { id: string; label: string; value: { value: number } }[]\n >([]) // Only for hasMany\n\n const handleHasManyChange = useCallback(\n (selectedOption) => {\n if (!(readOnly || disabled)) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => Number(option.value?.value || option.value))\n } else {\n newValue = [Number(selectedOption.value?.value || selectedOption.value)]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, disabled, setValue],\n )\n\n // useEffect update valueToRender:\n useEffect(() => {\n if (hasMany && Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n toString: () => `${val}${index}`,\n value: (val as unknown as Record<string, number>)?.value || val,\n }, // You're probably wondering, why the hell is this done that way? Well, React-select automatically uses \"label-value\" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key.\n }\n }),\n )\n }\n }, [value, hasMany])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'number',\n className,\n showError && 'error',\n (readOnly || disabled) && 'read-only',\n hasMany && 'has-many',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {hasMany ? (\n <ReactSelect\n className={`field-${path.replace(/\\./g, '__')}`}\n disabled={readOnly || disabled}\n filterOption={(_, rawInput) => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n return isNumber(rawInput) && !isOverHasMany\n }}\n isClearable\n isCreatable\n isMulti\n isSortable\n noOptionsMessage={() => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n if (isOverHasMany) {\n return t('validation:limitReached', { max: maxRows, value: value.length + 1 })\n }\n return null\n }}\n // numberOnly\n onChange={handleHasManyChange}\n options={[]}\n placeholder={t('general:enterAValue')}\n showError={showError}\n value={valueToRender as Option[]}\n />\n ) : (\n <div>\n <input\n disabled={readOnly || disabled}\n id={`field-${path.replace(/\\./g, '__')}`}\n max={max}\n min={min}\n name={path}\n onChange={handleChange}\n onWheel={(e) => {\n // @ts-expect-error\n e.target.blur()\n }}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={typeof value === 'number' ? value : ''}\n />\n </div>\n )}\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n\nexport const NumberField = withCondition(NumberFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Password/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA+B,MAAM,OAAO,CAAA;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAQpD,OAAO,cAAc,CAAA;AA2GrB,eAAO,MAAM,aAAa,8BAAwC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Password/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA+B,MAAM,OAAO,CAAA;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAQpD,OAAO,cAAc,CAAA;AAwGrB,eAAO,MAAM,aAAa,8BAAwC,CAAA"}
@@ -74,8 +74,7 @@ const PasswordFieldComponent = props => {
74
74
  Error,
75
75
  Label
76
76
  } = {},
77
- formInitializing,
78
- formProcessing,
77
+ disabled,
79
78
  setValue,
80
79
  showError,
81
80
  value: value_0
@@ -83,7 +82,6 @@ const PasswordFieldComponent = props => {
83
82
  path,
84
83
  validate: memoizedValidate
85
84
  });
86
- const disabled = disabledFromProps || formInitializing || formProcessing;
87
85
  const renderRTL = isFieldRTL({
88
86
  fieldLocalized: false,
89
87
  fieldRTL: rtl,
@@ -107,7 +105,7 @@ const PasswordFieldComponent = props => {
107
105
  },
108
106
  path: path,
109
107
  placeholder: placeholder,
110
- readOnly: disabled,
108
+ readOnly: disabled || disabledFromProps,
111
109
  required: required,
112
110
  rtl: renderRTL,
113
111
  showError: showError,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["password","React","useCallback","useMemo","useField","withCondition","useConfig","useLocale","useTranslation","mergeFieldStyles","isFieldRTL","PasswordInput","PasswordFieldComponent","props","autoComplete","field","admin","className","disabled","disabledFromProps","placeholder","rtl","label","localized","required","inputRef","path","validate","t","locale","config","memoizedValidate","value","options","pathSegments","split","name","type","blockData","data","event","preferences","fields","req","payload","siblingData","customComponents","AfterInput","BeforeInput","Description","Error","Label","formInitializing","formProcessing","setValue","showError","renderRTL","fieldLocalized","fieldRTL","localizationConfig","localization","undefined","styles","_jsx","onChange","e","target","readOnly","style","PasswordField"],"sources":["../../../src/fields/Password/index.tsx"],"sourcesContent":["'use client'\nimport type { PasswordFieldValidation, PayloadRequest } from 'payload'\n\nimport { password } from 'payload/shared'\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { PasswordFieldProps } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { isFieldRTL } from '../shared/index.js'\nimport { PasswordInput } from './input.js'\n\nconst PasswordFieldComponent: React.FC<PasswordFieldProps> = (props) => {\n const {\n autoComplete,\n field,\n field: {\n admin: {\n className,\n disabled: disabledFromProps,\n placeholder,\n rtl,\n } = {} as PasswordFieldProps['field']['admin'],\n label,\n localized,\n required,\n } = {} as PasswordFieldProps['field'],\n inputRef,\n path,\n validate,\n } = props\n\n const { t } = useTranslation()\n const locale = useLocale()\n const { config } = useConfig()\n\n const memoizedValidate: PasswordFieldValidation = useCallback(\n (value, options) => {\n const pathSegments = path ? path.split('.') : []\n\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n\n return password(value, {\n name: 'password',\n type: 'text',\n blockData: {},\n data: {},\n event: 'onChange',\n path: pathSegments,\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as unknown as PayloadRequest,\n required: true,\n siblingData: {},\n })\n },\n [validate, config, t, required, path],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n formInitializing,\n formProcessing,\n setValue,\n showError,\n value,\n } = useField({\n path,\n validate: memoizedValidate,\n })\n\n const disabled = disabledFromProps || formInitializing || formProcessing\n\n const renderRTL = isFieldRTL({\n fieldLocalized: false,\n fieldRTL: rtl,\n locale,\n localizationConfig: config.localization || undefined,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <PasswordInput\n AfterInput={AfterInput}\n autoComplete={autoComplete}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n Error={Error}\n inputRef={inputRef}\n Label={Label}\n label={label}\n localized={localized}\n onChange={(e) => {\n setValue(e.target.value)\n }}\n path={path}\n placeholder={placeholder}\n readOnly={disabled}\n required={required}\n rtl={renderRTL}\n showError={showError}\n style={styles}\n value={(value as string) || ''}\n />\n )\n}\n\nexport const PasswordField = withCondition(PasswordFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["password","React","useCallback","useMemo","useField","withCondition","useConfig","useLocale","useTranslation","mergeFieldStyles","isFieldRTL","PasswordInput","PasswordFieldComponent","props","autoComplete","field","admin","className","disabled","disabledFromProps","placeholder","rtl","label","localized","required","inputRef","path","validate","t","locale","config","memoizedValidate","value","options","pathSegments","split","name","type","blockData","data","event","preferences","fields","req","payload","siblingData","customComponents","AfterInput","BeforeInput","Description","Error","Label","setValue","showError","renderRTL","fieldLocalized","fieldRTL","localizationConfig","localization","undefined","styles","_jsx","onChange","e","target","readOnly","style","PasswordField"],"sources":["../../../src/fields/Password/index.tsx"],"sourcesContent":["'use client'\nimport type { PasswordFieldValidation, PayloadRequest } from 'payload'\n\nimport { password } from 'payload/shared'\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { PasswordFieldProps } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { isFieldRTL } from '../shared/index.js'\nimport { PasswordInput } from './input.js'\n\nconst PasswordFieldComponent: React.FC<PasswordFieldProps> = (props) => {\n const {\n autoComplete,\n field,\n field: {\n admin: {\n className,\n disabled: disabledFromProps,\n placeholder,\n rtl,\n } = {} as PasswordFieldProps['field']['admin'],\n label,\n localized,\n required,\n } = {} as PasswordFieldProps['field'],\n inputRef,\n path,\n validate,\n } = props\n\n const { t } = useTranslation()\n const locale = useLocale()\n const { config } = useConfig()\n\n const memoizedValidate: PasswordFieldValidation = useCallback(\n (value, options) => {\n const pathSegments = path ? path.split('.') : []\n\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n\n return password(value, {\n name: 'password',\n type: 'text',\n blockData: {},\n data: {},\n event: 'onChange',\n path: pathSegments,\n preferences: { fields: {} },\n req: {\n payload: {\n config,\n },\n t,\n } as unknown as PayloadRequest,\n required: true,\n siblingData: {},\n })\n },\n [validate, config, t, required, path],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n setValue,\n showError,\n value,\n } = useField({\n path,\n validate: memoizedValidate,\n })\n\n const renderRTL = isFieldRTL({\n fieldLocalized: false,\n fieldRTL: rtl,\n locale,\n localizationConfig: config.localization || undefined,\n })\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <PasswordInput\n AfterInput={AfterInput}\n autoComplete={autoComplete}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n Error={Error}\n inputRef={inputRef}\n Label={Label}\n label={label}\n localized={localized}\n onChange={(e) => {\n setValue(e.target.value)\n }}\n path={path}\n placeholder={placeholder}\n readOnly={disabled || disabledFromProps}\n required={required}\n rtl={renderRTL}\n showError={showError}\n style={styles}\n value={(value as string) || ''}\n />\n )\n}\n\nexport const PasswordField = withCondition(PasswordFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Point/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAG9E,OAAO,KAA+B,MAAM,OAAO,CAAA;AAUnD,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,mBAAmB,EAAE,yBA4IjC,CAAA;AAED,eAAO,MAAM,UAAU;;;;;+EAAqC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Point/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAG9E,OAAO,KAA+B,MAAM,OAAO,CAAA;AAUnD,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,mBAAmB,EAAE,yBA6IjC,CAAA;AAED,eAAO,MAAM,UAAU;;;;;+EAAqC,CAAA"}
@@ -52,6 +52,7 @@ export const PointFieldComponent = props => {
52
52
  Error,
53
53
  Label
54
54
  } = {},
55
+ disabled,
55
56
  setValue,
56
57
  showError,
57
58
  value: value_0 = [null, null]
@@ -75,7 +76,7 @@ export const PointFieldComponent = props => {
75
76
  };
76
77
  const styles = useMemo(() => mergeFieldStyles(field), [field]);
77
78
  return /*#__PURE__*/_jsxs("div", {
78
- className: [fieldBaseClass, baseClass, className, showError && 'error', readOnly && 'read-only'].filter(Boolean).join(' '),
79
+ className: [fieldBaseClass, baseClass, className, showError && 'error', (readOnly || disabled) && 'read-only'].filter(Boolean).join(' '),
79
80
  style: styles,
80
81
  children: [/*#__PURE__*/_jsxs("ul", {
81
82
  className: `${baseClass}__wrap`,
@@ -91,7 +92,7 @@ export const PointFieldComponent = props => {
91
92
  }), /*#__PURE__*/_jsxs("div", {
92
93
  className: "input-wrapper",
93
94
  children: [BeforeInput, /*#__PURE__*/_jsx("input", {
94
- disabled: readOnly,
95
+ disabled: readOnly || disabled,
95
96
  id: `field-longitude-${path?.replace(/\./g, '__')}`,
96
97
  name: `${path}.longitude`,
97
98
  onChange: e_0 => handleChange(e_0, 0),
@@ -119,7 +120,7 @@ export const PointFieldComponent = props => {
119
120
  showError: showError
120
121
  })
121
122
  }), BeforeInput, /*#__PURE__*/_jsx("input", {
122
- disabled: readOnly,
123
+ disabled: readOnly || disabled,
123
124
  id: `field-latitude-${path?.replace(/\./g, '__')}`,
124
125
  name: `${path}.latitude`,
125
126
  onChange: e_1 => handleChange(e_1, 1),