@panneau/fields 5.0.0-alpha.2 → 5.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +186 -20
- package/dist/address/AddressField.css +44 -0
- package/dist/address/AddressField.d.ts +37 -0
- package/dist/address/AddressField.d.ts.map +1 -0
- package/dist/address/AddressField.js +411 -0
- package/dist/address/AddressField.js.map +1 -0
- package/dist/address/AddressField.module.js +22 -0
- package/dist/address/AddressField.module.js.map +1 -0
- package/dist/address/address.d.ts +23 -0
- package/dist/address/address.d.ts.map +1 -0
- package/dist/address/address.js +58 -0
- package/dist/address/address.js.map +1 -0
- package/dist/address/index.d.ts +3 -0
- package/dist/address/index.d.ts.map +1 -0
- package/dist/address/index.js +3 -0
- package/dist/boolean/BooleanField.d.ts +1 -1
- package/dist/boolean/BooleanField.js +78 -17
- package/dist/boolean/BooleanField.js.map +1 -1
- package/dist/boolean/index.d.ts +1 -1
- package/dist/color/ColorField.css +9 -0
- package/dist/color/ColorField.d.ts +12 -5
- package/dist/color/ColorField.d.ts.map +1 -1
- package/dist/color/ColorField.js +341 -81
- package/dist/color/ColorField.js.map +1 -1
- package/dist/color/ColorField.module.js +4 -2
- package/dist/color/ColorField.module.js.map +1 -1
- package/dist/color/index.d.ts +2 -1
- package/dist/color/index.d.ts.map +1 -1
- package/dist/color/index.js +3 -1
- package/dist/color/palette.d.ts +23 -0
- package/dist/color/palette.d.ts.map +1 -0
- package/dist/color/palette.js +34 -0
- package/dist/color/palette.js.map +1 -0
- package/dist/compound/Compound.css +26 -0
- package/dist/compound/Compound.module.js +16 -0
- package/dist/compound/Compound.module.js.map +1 -0
- package/dist/compound/compound.d.ts +56 -0
- package/dist/compound/compound.d.ts.map +1 -0
- package/dist/compound/compound.js +186 -0
- package/dist/compound/compound.js.map +1 -0
- package/dist/country/CountryField.css +42 -0
- package/dist/country/CountryField.d.ts +32 -0
- package/dist/country/CountryField.d.ts.map +1 -0
- package/dist/country/CountryField.js +424 -0
- package/dist/country/CountryField.js.map +1 -0
- package/dist/country/CountryField.module.js +20 -0
- package/dist/country/CountryField.module.js.map +1 -0
- package/dist/country/codes.d.ts +6 -0
- package/dist/country/codes.d.ts.map +1 -0
- package/dist/country/codes.js +261 -0
- package/dist/country/codes.js.map +1 -0
- package/dist/country/countries.d.ts +32 -0
- package/dist/country/countries.d.ts.map +1 -0
- package/dist/country/countries.js +60 -0
- package/dist/country/countries.js.map +1 -0
- package/dist/country/index.d.ts +3 -0
- package/dist/country/index.d.ts.map +1 -0
- package/dist/country/index.js +4 -0
- package/dist/credits/CreditsField.d.ts +15 -0
- package/dist/credits/CreditsField.d.ts.map +1 -0
- package/dist/credits/CreditsField.js +58 -0
- package/dist/credits/CreditsField.js.map +1 -0
- package/dist/credits/credits.d.ts +18 -0
- package/dist/credits/credits.d.ts.map +1 -0
- package/dist/credits/credits.js +33 -0
- package/dist/credits/credits.js.map +1 -0
- package/dist/credits/index.d.ts +5 -0
- package/dist/credits/index.d.ts.map +1 -0
- package/dist/credits/index.js +3 -0
- package/dist/date/DateField.d.ts +1 -1
- package/dist/date/DateField.js.map +1 -1
- package/dist/date/index.d.ts +1 -1
- package/dist/daterange/DateRangeField.css +9 -0
- package/dist/daterange/DateRangeField.d.ts +31 -0
- package/dist/daterange/DateRangeField.d.ts.map +1 -0
- package/dist/daterange/DateRangeField.js +372 -0
- package/dist/daterange/DateRangeField.js.map +1 -0
- package/dist/daterange/DateRangeField.module.js +12 -0
- package/dist/daterange/DateRangeField.module.js.map +1 -0
- package/dist/daterange/index.d.ts +3 -0
- package/dist/daterange/index.d.ts.map +1 -0
- package/dist/daterange/index.js +3 -0
- package/dist/daterange/range.d.ts +61 -0
- package/dist/daterange/range.d.ts.map +1 -0
- package/dist/daterange/range.js +119 -0
- package/dist/daterange/range.js.map +1 -0
- package/dist/datetime/DateTimeField.d.ts +1 -1
- package/dist/datetime/DateTimeField.js +107 -20
- package/dist/datetime/DateTimeField.js.map +1 -1
- package/dist/datetime/index.d.ts +1 -1
- package/dist/duration/DurationField.css +11 -0
- package/dist/duration/DurationField.d.ts +67 -0
- package/dist/duration/DurationField.d.ts.map +1 -0
- package/dist/duration/DurationField.js +260 -0
- package/dist/duration/DurationField.js.map +1 -0
- package/dist/duration/DurationField.module.js +12 -0
- package/dist/duration/DurationField.module.js.map +1 -0
- package/dist/duration/index.d.ts +2 -0
- package/dist/duration/index.d.ts.map +1 -0
- package/dist/duration/index.js +1 -0
- package/dist/email/EmailField.d.ts +2 -2
- package/dist/email/EmailField.js.map +1 -1
- package/dist/email/index.d.ts +1 -1
- package/dist/embed/EmbedField.css +60 -0
- package/dist/embed/EmbedField.d.ts +29 -0
- package/dist/embed/EmbedField.d.ts.map +1 -0
- package/dist/embed/EmbedField.js +309 -0
- package/dist/embed/EmbedField.js.map +1 -0
- package/dist/embed/EmbedField.module.js +22 -0
- package/dist/embed/EmbedField.module.js.map +1 -0
- package/dist/embed/index.d.ts +3 -0
- package/dist/embed/index.d.ts.map +1 -0
- package/dist/embed/index.js +3 -0
- package/dist/file/FileField.css +54 -0
- package/dist/file/FileField.d.ts +50 -0
- package/dist/file/FileField.d.ts.map +1 -0
- package/dist/file/FileField.js +288 -0
- package/dist/file/FileField.js.map +1 -0
- package/dist/file/FileField.module.js +22 -0
- package/dist/file/FileField.module.js.map +1 -0
- package/dist/file/index.d.ts +3 -0
- package/dist/file/index.d.ts.map +1 -0
- package/dist/file/index.js +1 -0
- package/dist/group/GroupField.css +20 -3
- package/dist/group/GroupField.d.ts +10 -4
- package/dist/group/GroupField.d.ts.map +1 -1
- package/dist/group/GroupField.js +71 -66
- package/dist/group/GroupField.js.map +1 -1
- package/dist/group/GroupField.module.js +10 -2
- package/dist/group/GroupField.module.js.map +1 -1
- package/dist/group/index.d.ts +1 -1
- package/dist/index.d.ts +21 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -2
- package/dist/json/JsonField.css +7 -0
- package/dist/json/JsonField.d.ts +22 -0
- package/dist/json/JsonField.d.ts.map +1 -0
- package/dist/json/JsonField.js +207 -0
- package/dist/json/JsonField.js.map +1 -0
- package/dist/json/JsonField.module.js +8 -0
- package/dist/json/JsonField.module.js.map +1 -0
- package/dist/json/index.d.ts +2 -0
- package/dist/json/index.d.ts.map +1 -0
- package/dist/json/index.js +1 -0
- package/dist/link/LinkField.css +12 -0
- package/dist/link/LinkField.d.ts +38 -0
- package/dist/link/LinkField.d.ts.map +1 -0
- package/dist/link/LinkField.js +742 -0
- package/dist/link/LinkField.js.map +1 -0
- package/dist/link/LinkField.module.js +8 -0
- package/dist/link/LinkField.module.js.map +1 -0
- package/dist/link/index.d.ts +3 -0
- package/dist/link/index.d.ts.map +1 -0
- package/dist/link/index.js +3 -0
- package/dist/link/link.d.ts +30 -0
- package/dist/link/link.d.ts.map +1 -0
- package/dist/link/link.js +63 -0
- package/dist/link/link.js.map +1 -0
- package/dist/link/pages.d.ts +17 -0
- package/dist/link/pages.d.ts.map +1 -0
- package/dist/link/pages.js +104 -0
- package/dist/link/pages.js.map +1 -0
- package/dist/locales/index.js.map +1 -1
- package/dist/localized/LocalizedField.css +27 -6
- package/dist/localized/LocalizedField.d.ts +19 -8
- package/dist/localized/LocalizedField.d.ts.map +1 -1
- package/dist/localized/LocalizedField.js +238 -105
- package/dist/localized/LocalizedField.js.map +1 -1
- package/dist/localized/LocalizedField.module.js +10 -4
- package/dist/localized/LocalizedField.module.js.map +1 -1
- package/dist/localized/index.d.ts +1 -1
- package/dist/location/LocationField.css +54 -0
- package/dist/location/LocationField.d.ts +31 -0
- package/dist/location/LocationField.d.ts.map +1 -0
- package/dist/location/LocationField.js +487 -0
- package/dist/location/LocationField.js.map +1 -0
- package/dist/location/LocationField.module.js +22 -0
- package/dist/location/LocationField.module.js.map +1 -0
- package/dist/location/LocationMap.d.ts +25 -0
- package/dist/location/LocationMap.d.ts.map +1 -0
- package/dist/location/LocationMap.js +205 -0
- package/dist/location/LocationMap.js.map +1 -0
- package/dist/location/index.d.ts +5 -0
- package/dist/location/index.d.ts.map +1 -0
- package/dist/location/index.js +4 -0
- package/dist/location/leafletCss.d.ts +2 -0
- package/dist/location/leafletCss.d.ts.map +1 -0
- package/dist/location/leafletCss.js +6 -0
- package/dist/location/leafletCss.js.map +1 -0
- package/dist/location/nominatim.d.ts +23 -0
- package/dist/location/nominatim.d.ts.map +1 -0
- package/dist/location/nominatim.js +79 -0
- package/dist/location/nominatim.js.map +1 -0
- package/dist/location/search.d.ts +10 -0
- package/dist/location/search.d.ts.map +1 -0
- package/dist/location/search.js +83 -0
- package/dist/location/search.js.map +1 -0
- package/dist/location/types.d.ts +46 -0
- package/dist/location/types.d.ts.map +1 -0
- package/dist/missing/MissingField.d.ts +4 -3
- package/dist/missing/MissingField.d.ts.map +1 -1
- package/dist/missing/MissingField.js +3 -2
- package/dist/missing/MissingField.js.map +1 -1
- package/dist/money/MoneyField.d.ts +28 -0
- package/dist/money/MoneyField.d.ts.map +1 -0
- package/dist/money/MoneyField.js +269 -0
- package/dist/money/MoneyField.js.map +1 -0
- package/dist/money/index.d.ts +3 -0
- package/dist/money/index.d.ts.map +1 -0
- package/dist/money/index.js +3 -0
- package/dist/money/money.d.ts +27 -0
- package/dist/money/money.d.ts.map +1 -0
- package/dist/money/money.js +56 -0
- package/dist/money/money.js.map +1 -0
- package/dist/number/NumberField.d.ts +1 -1
- package/dist/number/NumberField.js.map +1 -1
- package/dist/number/index.d.ts +1 -1
- package/dist/range/RangeField.d.ts +22 -0
- package/dist/range/RangeField.d.ts.map +1 -0
- package/dist/range/RangeField.js +203 -0
- package/dist/range/RangeField.js.map +1 -0
- package/dist/range/index.d.ts +2 -0
- package/dist/range/index.d.ts.map +1 -0
- package/dist/range/index.js +1 -0
- package/dist/region/RegionField.d.ts +23 -0
- package/dist/region/RegionField.d.ts.map +1 -0
- package/dist/region/RegionField.js +174 -0
- package/dist/region/RegionField.js.map +1 -0
- package/dist/region/RegionFlag.css +9 -0
- package/dist/region/RegionFlag.d.ts +20 -0
- package/dist/region/RegionFlag.d.ts.map +1 -0
- package/dist/region/RegionFlag.js +61 -0
- package/dist/region/RegionFlag.js.map +1 -0
- package/dist/region/RegionFlag.module.js +8 -0
- package/dist/region/RegionFlag.module.js.map +1 -0
- package/dist/region/data.d.ts +5 -0
- package/dist/region/data.d.ts.map +1 -0
- package/dist/region/data.js +513 -0
- package/dist/region/data.js.map +1 -0
- package/dist/region/flags/CA.d.ts +4 -0
- package/dist/region/flags/CA.d.ts.map +1 -0
- package/dist/region/flags/CA.js +21 -0
- package/dist/region/flags/CA.js.map +1 -0
- package/dist/region/flags/US.d.ts +4 -0
- package/dist/region/flags/US.d.ts.map +1 -0
- package/dist/region/flags/US.js +65 -0
- package/dist/region/flags/US.js.map +1 -0
- package/dist/region/flags.d.ts +17 -0
- package/dist/region/flags.d.ts.map +1 -0
- package/dist/region/flags.js +84 -0
- package/dist/region/flags.js.map +1 -0
- package/dist/region/index.d.ts +5 -0
- package/dist/region/index.d.ts.map +1 -0
- package/dist/region/index.js +5 -0
- package/dist/region/regions.d.ts +15 -0
- package/dist/region/regions.d.ts.map +1 -0
- package/dist/region/regions.js +29 -0
- package/dist/region/regions.js.map +1 -0
- package/dist/relation/RelationField.d.ts +2 -2
- package/dist/relation/RelationField.d.ts.map +1 -1
- package/dist/relation/RelationField.js +511 -171
- package/dist/relation/RelationField.js.map +1 -1
- package/dist/relation/index.d.ts +2 -2
- package/dist/repeater/RepeaterField.d.ts +13 -2
- package/dist/repeater/RepeaterField.d.ts.map +1 -1
- package/dist/repeater/RepeaterField.js +138 -50
- package/dist/repeater/RepeaterField.js.map +1 -1
- package/dist/repeater/index.d.ts +1 -1
- package/dist/select/SelectField.d.ts +1 -1
- package/dist/select/SelectField.js.map +1 -1
- package/dist/select/index.d.ts +1 -1
- package/dist/sessions/SessionsField.d.ts +15 -0
- package/dist/sessions/SessionsField.d.ts.map +1 -0
- package/dist/sessions/SessionsField.js +49 -0
- package/dist/sessions/SessionsField.js.map +1 -0
- package/dist/sessions/index.d.ts +4 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +1 -0
- package/dist/shared/CodeComboBox.d.ts +21 -0
- package/dist/shared/CodeComboBox.d.ts.map +1 -0
- package/dist/shared/CodeComboBox.js +238 -0
- package/dist/shared/CodeComboBox.js.map +1 -0
- package/dist/shared/DefinitionField.d.ts +9 -4
- package/dist/shared/DefinitionField.d.ts.map +1 -1
- package/dist/shared/DefinitionField.js +98 -78
- package/dist/shared/DefinitionField.js.map +1 -1
- package/dist/shared/builtIn.d.ts +7 -3
- package/dist/shared/builtIn.d.ts.map +1 -1
- package/dist/shared/builtIn.js +39 -7
- package/dist/shared/builtIn.js.map +1 -1
- package/dist/shared/check.d.ts +27 -0
- package/dist/shared/check.d.ts.map +1 -0
- package/dist/shared/check.js +18 -0
- package/dist/shared/check.js.map +1 -0
- package/dist/shared/context.d.ts +33 -5
- package/dist/shared/context.d.ts.map +1 -1
- package/dist/shared/context.js +36 -20
- package/dist/shared/context.js.map +1 -1
- package/dist/shared/cx.js.map +1 -1
- package/dist/shared/dates.js +2 -2
- package/dist/shared/dates.js.map +1 -1
- package/dist/shared/embed.d.ts +19 -0
- package/dist/shared/embed.d.ts.map +1 -0
- package/dist/shared/embed.js +14 -0
- package/dist/shared/embed.js.map +1 -0
- package/dist/shared/entry.d.ts +13 -4
- package/dist/shared/entry.d.ts.map +1 -1
- package/dist/shared/entry.js +24 -7
- package/dist/shared/entry.js.map +1 -1
- package/dist/shared/flow.d.ts +8 -0
- package/dist/shared/flow.d.ts.map +1 -0
- package/dist/shared/flow.js +38 -0
- package/dist/shared/flow.js.map +1 -0
- package/dist/shared/part.d.ts +26 -0
- package/dist/shared/part.d.ts.map +1 -0
- package/dist/shared/part.js +64 -0
- package/dist/shared/part.js.map +1 -0
- package/dist/shared/relation.js.map +1 -1
- package/dist/shared/reveal.d.ts +16 -0
- package/dist/shared/reveal.d.ts.map +1 -0
- package/dist/shared/reveal.js +46 -0
- package/dist/shared/reveal.js.map +1 -0
- package/dist/shared/types.d.ts +12 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/slug/SlugField.css +18 -0
- package/dist/slug/SlugField.d.ts +33 -5
- package/dist/slug/SlugField.d.ts.map +1 -1
- package/dist/slug/SlugField.js +346 -126
- package/dist/slug/SlugField.js.map +1 -1
- package/dist/slug/SlugField.module.js +14 -0
- package/dist/slug/SlugField.module.js.map +1 -0
- package/dist/slug/index.d.ts +1 -1
- package/dist/slug/index.d.ts.map +1 -1
- package/dist/slug/index.js +1 -1
- package/dist/tags/TagsField.d.ts +17 -0
- package/dist/tags/TagsField.d.ts.map +1 -0
- package/dist/tags/TagsField.js +120 -0
- package/dist/tags/TagsField.js.map +1 -0
- package/dist/tags/index.d.ts +2 -0
- package/dist/tags/index.d.ts.map +1 -0
- package/dist/tags/index.js +1 -0
- package/dist/tel/TelField.css +25 -0
- package/dist/tel/TelField.d.ts +34 -0
- package/dist/tel/TelField.d.ts.map +1 -0
- package/dist/tel/TelField.js +390 -0
- package/dist/tel/TelField.js.map +1 -0
- package/dist/tel/TelField.module.js +12 -0
- package/dist/tel/TelField.module.js.map +1 -0
- package/dist/tel/index.d.ts +3 -0
- package/dist/tel/index.d.ts.map +1 -0
- package/dist/tel/index.js +3 -0
- package/dist/tel/phone.d.ts +59 -0
- package/dist/tel/phone.d.ts.map +1 -0
- package/dist/tel/phone.js +107 -0
- package/dist/tel/phone.js.map +1 -0
- package/dist/text/TextField.d.ts +12 -4
- package/dist/text/TextField.d.ts.map +1 -1
- package/dist/text/TextField.js +104 -60
- package/dist/text/TextField.js.map +1 -1
- package/dist/text/index.d.ts +1 -1
- package/dist/textarea/TextAreaField.d.ts +1 -1
- package/dist/textarea/TextAreaField.js.map +1 -1
- package/dist/textarea/index.d.ts +1 -1
- package/dist/time/TimeField.d.ts +1 -1
- package/dist/time/TimeField.js +64 -10
- package/dist/time/TimeField.js.map +1 -1
- package/dist/time/index.d.ts +1 -1
- package/dist/upload/FilePicker.css +24 -0
- package/dist/upload/FilePicker.d.ts +14 -0
- package/dist/upload/FilePicker.d.ts.map +1 -0
- package/dist/upload/FilePicker.js +130 -0
- package/dist/upload/FilePicker.js.map +1 -0
- package/dist/upload/FilePicker.module.js +12 -0
- package/dist/upload/FilePicker.module.js.map +1 -0
- package/dist/upload/UploadList.css +93 -0
- package/dist/upload/UploadList.d.ts +18 -0
- package/dist/upload/UploadList.d.ts.map +1 -0
- package/dist/upload/UploadList.js +144 -0
- package/dist/upload/UploadList.js.map +1 -0
- package/dist/upload/UploadList.module.js +32 -0
- package/dist/upload/UploadList.module.js.map +1 -0
- package/dist/upload/files.d.ts +5 -0
- package/dist/upload/files.d.ts.map +1 -0
- package/dist/upload/files.js +26 -0
- package/dist/upload/files.js.map +1 -0
- package/dist/upload/types.d.ts +58 -0
- package/dist/upload/types.d.ts.map +1 -0
- package/dist/upload/useRejectionMessage.d.ts +4 -0
- package/dist/upload/useRejectionMessage.d.ts.map +1 -0
- package/dist/upload/useRejectionMessage.js +25 -0
- package/dist/upload/useRejectionMessage.js.map +1 -0
- package/dist/upload/useUploads.d.ts +30 -0
- package/dist/upload/useUploads.d.ts.map +1 -0
- package/dist/upload/useUploads.js +115 -0
- package/dist/upload/useUploads.js.map +1 -0
- package/dist/uppy/index.d.ts +3 -0
- package/dist/uppy/index.d.ts.map +1 -0
- package/dist/uppy/index.js +1 -0
- package/dist/uppy/uploader.d.ts +44 -0
- package/dist/uppy/uploader.d.ts.map +1 -0
- package/dist/uppy/uploader.js +139 -0
- package/dist/uppy/uploader.js.map +1 -0
- package/dist/url/UrlField.d.ts +2 -2
- package/dist/url/UrlField.d.ts.map +1 -1
- package/dist/url/UrlField.js +69 -14
- package/dist/url/UrlField.js.map +1 -1
- package/dist/url/index.d.ts +1 -1
- package/package.json +110 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupField.js","names":["
|
|
1
|
+
{"version":3,"file":"GroupField.js","names":["ReactNode","Field","Fieldset","NestedField","cx","getFieldProps","isWideField","FieldEntryProps","FieldProps","styles","GroupValue","Record","GroupFieldProps","fields","path","renderFields","parts","Readonly","value","fieldsClassName","GroupField","t0","$","_c","name","onChange","onBlur","label","description","errors","disabled","readOnly","required","className","labelClassName","descriptionClassName","errorsClassName","base","t1","object","t2","field","next","undefined","renderField","t3","t4","Object","fromEntries","map","field_0","flow","field_1","cell","wide","t5","t6","GroupFieldEntry","props","Array","isArray","_c","styles"],"sources":["../../src/group/GroupField.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\n\nimport type { Field } from '@panneau/protocol';\nimport { Fieldset } from '@panneau/ui';\n\nimport { NestedField } from '../shared/DefinitionField';\nimport { cx } from '../shared/cx';\nimport { getFieldProps } from '../shared/entry';\nimport { isWideField } from '../shared/flow';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport styles from './GroupField.module.css';\n\nexport type GroupValue = Record<string, unknown>;\n\nexport interface GroupFieldProps extends FieldProps<GroupValue> {\n /** The nested fields, rendered with the entries of the fields context. */\n fields: readonly Field[];\n /** Dot path of the group's value, the prefix of its fields' paths. Defaults to `name`. */\n path?: string;\n /**\n * Lays out the rendered fields, by name, instead of the flow of short fields side by side:\n * the layout of a compound field (decision 0065).\n */\n renderFields?: (parts: Readonly<Record<string, ReactNode>>, value: GroupValue) => ReactNode;\n fieldsClassName?: string;\n}\n\n/**\n * A nested object: its fields under a legend, short ones side by side (`isWideField()`). Each\n * field renders with the entry of its type, at the path `<group>.<field>`. Without a binding in the fields context, the group sets the whole\n * object through `onChange`.\n */\nexport function GroupField({\n fields,\n path,\n name,\n value,\n onChange,\n onBlur,\n label,\n description,\n errors,\n disabled,\n readOnly,\n required,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n renderFields,\n fieldsClassName,\n}: GroupFieldProps) {\n const base = path ?? name ?? '';\n const object = value ?? {};\n const renderField = (field: Field) => (\n <NestedField\n field={field}\n path={base !== '' ? `${base}.${field.name}` : field.name}\n value={object[field.name]}\n onChange={(next) => onChange?.({ ...object, [field.name]: next })}\n {...(onBlur !== undefined ? { onBlur } : {})}\n parentValue={object}\n {...(disabled !== undefined ? { disabled } : {})}\n {...(readOnly !== undefined ? { readOnly } : {})}\n />\n );\n return (\n <Fieldset\n legend={label}\n description={description}\n errors={errors}\n isRequired={required}\n className={className}\n legendClassName={labelClassName}\n descriptionClassName={descriptionClassName}\n errorsClassName={errorsClassName}\n >\n <div className={cx(styles.fields, fieldsClassName)}>\n {renderFields !== undefined ? (\n renderFields(\n Object.fromEntries(fields.map((field) => [field.name, renderField(field)])),\n object,\n )\n ) : (\n <div className={styles.flow}>\n {fields.map((field) => (\n <div\n key={field.name}\n className={cx(styles.cell, isWideField(field) && styles.wide)}\n >\n {renderField(field)}\n </div>\n ))}\n </div>\n )}\n </div>\n </Fieldset>\n );\n}\n\n/** The `group` type: its `fields`, as a nested object. */\nexport function GroupFieldEntry(props: FieldEntryProps) {\n const { value } = props;\n return (\n <GroupField\n {...getFieldProps(props)}\n fields={props.field.fields ?? []}\n path={props.path}\n value={\n value !== null && typeof value === 'object' && !Array.isArray(value)\n ? (value as GroupValue)\n : null\n }\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import "./GroupField.css";
|
|
2
2
|
//#region src/group/GroupField.module.css
|
|
3
3
|
var fields = "panneau-group-field-fields";
|
|
4
|
-
var
|
|
4
|
+
var flow = "panneau-group-field-flow";
|
|
5
|
+
var cell = "panneau-group-field-cell";
|
|
6
|
+
var wide = "panneau-group-field-wide";
|
|
7
|
+
var GroupField_module_default = {
|
|
8
|
+
fields,
|
|
9
|
+
flow,
|
|
10
|
+
cell,
|
|
11
|
+
wide
|
|
12
|
+
};
|
|
5
13
|
//#endregion
|
|
6
|
-
export { GroupField_module_default as default, fields };
|
|
14
|
+
export { cell, GroupField_module_default as default, fields, flow, wide };
|
|
7
15
|
|
|
8
16
|
//# sourceMappingURL=GroupField.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupField.module.js","names":[],"sources":["../../src/group/GroupField.module.css"],"sourcesContent":[".fields {\n
|
|
1
|
+
{"version":3,"file":"GroupField.module.js","names":[],"sources":["../../src/group/GroupField.module.css"],"sourcesContent":[".fields {\n padding: var(--panneau-space-4);\n border: var(--panneau-border-width) solid var(--panneau-color-border);\n border-radius: var(--panneau-radius-md);\n}\n\n/* Short fields share a row, in columns of at least 14rem. */\n.flow {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr));\n gap: var(--panneau-space-4);\n}\n\n.cell {\n min-width: 0;\n}\n\n/* A field hidden by its condition renders nothing: its cell takes no column. */\n.cell:empty {\n display: none;\n}\n\n.wide {\n grid-column: 1 / -1;\n}\n\n@media (max-width: 30rem) {\n .fields {\n padding: var(--panneau-space-3);\n }\n}\n"],"mappings":""}
|
package/dist/group/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { GroupField, GroupFieldEntry, type GroupFieldProps, type GroupValue } from './GroupField';
|
|
1
|
+
export { GroupField, GroupFieldEntry, type GroupFieldProps, type GroupValue } from './GroupField.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
|
-
export { DefinitionField, NestedField, type NestedFieldProps } from './shared/DefinitionField';
|
|
2
|
-
export { builtInFields, fieldsPlugin } from './shared/builtIn';
|
|
3
|
-
export { type BoundFieldProps, type FieldBinding, type FieldBindingProps, FieldsProvider, type FieldsContextValue, type FieldsProviderProps, getParentPath, useFieldsContext, } from './shared/context';
|
|
4
|
-
export { findRule, getFieldProps, getRuleNumber, isRequired } from './shared/entry';
|
|
5
|
-
export { type RelationListAdapter, type RelationReference, type RelationSource, type RelationSourceOptions, createRelationSource, toReferences, useRelationReferences, } from './shared/relation';
|
|
6
|
-
export type
|
|
7
|
-
export {
|
|
1
|
+
export { DefinitionField, NestedField, type NestedFieldProps } from './shared/DefinitionField.js';
|
|
2
|
+
export { builtInFields, fieldsPlugin } from './shared/builtIn.js';
|
|
3
|
+
export { type BoundFieldProps, type FieldBinding, type FieldBindingProps, FieldsProvider, type FieldsContextValue, type FieldsProviderProps, getParentPath, useFieldsContext, } from './shared/context.js';
|
|
4
|
+
export { findRule, getAccept, getFieldProps, getMaxSize, getRuleNumber, isRequired, } from './shared/entry.js';
|
|
5
|
+
export { type RelationListAdapter, type RelationReference, type RelationSource, type RelationSourceOptions, createRelationSource, toReferences, useRelationReferences, } from './shared/relation.js';
|
|
6
|
+
export { type FieldCheckAdapter, type FieldCheckSource, createFieldCheckSource, } from './shared/check.js';
|
|
7
|
+
export { type EmbedAdapter, type EmbedSource, createEmbedSource } from './shared/embed.js';
|
|
8
|
+
export type { GeocodingResult, GeocodingSource, MapTiles, MapsConfig } from './location/types.js';
|
|
9
|
+
export { type NominatimSourceOptions, createNominatimSource } from './location/nominatim.js';
|
|
10
|
+
export type { FieldEntry, FieldEntryProps, FieldProps } from './shared/types.js';
|
|
11
|
+
export { isWideField } from './shared/flow.js';
|
|
12
|
+
export { type CompoundFieldEntry, type CompoundFieldOptions, type CompoundLayoutProps, type CompoundSummary, type CompoundSummaryContext, defineCompoundField, restParts, summarizeCompound, } from './compound/compound.js';
|
|
13
|
+
export { MissingFieldEntry } from './missing/MissingField.js';
|
|
14
|
+
export { type RevealRegistry, type Revealer, RevealContext, createRevealRegistry, useRevealer, } from './shared/reveal.js';
|
|
15
|
+
export { type FileFieldBaseProps, FileField, FileFieldEntry, type FileFieldProps, type FileValue, type MultipleFileFieldProps, type SingleFileFieldProps, isFileValue, toFiles, } from './file/FileField.js';
|
|
16
|
+
export { FilePicker, type FilePickerProps } from './upload/FilePicker.js';
|
|
17
|
+
export { UploadList, type UploadListProps } from './upload/UploadList.js';
|
|
18
|
+
export { formatSize, matchesMime } from './upload/files.js';
|
|
19
|
+
export { type UploadItem, type UploadItemStatus, type UploadRejection, type UploadSource, type UploadedFile, type Uploader, } from './upload/types.js';
|
|
20
|
+
export { useRejectionMessage } from './upload/useRejectionMessage.js';
|
|
21
|
+
export { type UseUploadsOptions, type UseUploadsResult, useUploads } from './upload/useUploads.js';
|
|
8
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,aAAa,EACb,gBAAgB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,aAAa,EACb,gBAAgB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACH,QAAQ,EACR,SAAS,EACT,aAAa,EACb,UAAU,EACV,aAAa,EACb,UAAU,GACb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACH,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,sBAAsB,GACzB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxF,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,KAAK,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACH,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,mBAAmB,EACnB,SAAS,EACT,iBAAiB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EACH,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,aAAa,EACb,oBAAoB,EACpB,WAAW,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACH,KAAK,kBAAkB,EACvB,SAAS,EACT,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,WAAW,EACX,OAAO,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EACH,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,QAAQ,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
|
+
import { findRule, getAccept, getFieldProps, getMaxSize, getRuleNumber, isRequired } from "./shared/entry.js";
|
|
2
|
+
import { isWideField } from "./shared/flow.js";
|
|
1
3
|
import { FieldsProvider, getParentPath, useFieldsContext } from "./shared/context.js";
|
|
2
|
-
import {
|
|
4
|
+
import { RevealContext, createRevealRegistry, useRevealer } from "./shared/reveal.js";
|
|
3
5
|
import { MissingFieldEntry } from "./missing/MissingField.js";
|
|
6
|
+
import { FilePicker } from "./upload/FilePicker.js";
|
|
7
|
+
import { formatSize, matchesMime } from "./upload/files.js";
|
|
8
|
+
import { UploadList } from "./upload/UploadList.js";
|
|
9
|
+
import { useRejectionMessage } from "./upload/useRejectionMessage.js";
|
|
10
|
+
import { useUploads } from "./upload/useUploads.js";
|
|
11
|
+
import { FileField, FileFieldEntry, isFileValue, toFiles } from "./file/FileField.js";
|
|
4
12
|
import { createRelationSource, toReferences, useRelationReferences } from "./shared/relation.js";
|
|
5
13
|
import { builtInFields, fieldsPlugin } from "./shared/builtIn.js";
|
|
6
14
|
import { DefinitionField, NestedField } from "./shared/DefinitionField.js";
|
|
7
|
-
|
|
15
|
+
import { createFieldCheckSource } from "./shared/check.js";
|
|
16
|
+
import { createEmbedSource } from "./shared/embed.js";
|
|
17
|
+
import { createNominatimSource } from "./location/nominatim.js";
|
|
18
|
+
import { defineCompoundField, restParts, summarizeCompound } from "./compound/compound.js";
|
|
19
|
+
export { DefinitionField, FieldsProvider, FileField, FileFieldEntry, FilePicker, MissingFieldEntry, NestedField, RevealContext, UploadList, builtInFields, createEmbedSource, createFieldCheckSource, createNominatimSource, createRelationSource, createRevealRegistry, defineCompoundField, fieldsPlugin, findRule, formatSize, getAccept, getFieldProps, getMaxSize, getParentPath, getRuleNumber, isFileValue, isRequired, isWideField, matchesMime, restParts, summarizeCompound, toFiles, toReferences, useFieldsContext, useRejectionMessage, useRelationReferences, useRevealer, useUploads };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { FieldEntryProps, FieldProps } from '../shared/types.js';
|
|
2
|
+
/** The value of a `json` field: an object or an array, or the text while it doesn't parse. */
|
|
3
|
+
export type JsonValue = Record<string, unknown> | unknown[] | string;
|
|
4
|
+
export interface JsonFieldProps extends FieldProps<JsonValue> {
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
/** Visible lines. Defaults to 8. */
|
|
7
|
+
rows?: number;
|
|
8
|
+
}
|
|
9
|
+
/** The value of a text: what it parses to when it is an object or an array, or the text itself. */
|
|
10
|
+
export declare function parseJson(text: string): {
|
|
11
|
+
value: JsonValue | null;
|
|
12
|
+
error: string | null;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Structured data edited as JSON: an object or an array. While the text doesn't parse, the value
|
|
16
|
+
* is the text itself, which the `json` rule refuses, so the form can't be saved with it. The text
|
|
17
|
+
* is indented again on blur once it parses.
|
|
18
|
+
*/
|
|
19
|
+
export declare function JsonField({ value, onChange, onBlur, errors, rows, disabled, readOnly, required, ...props }: JsonFieldProps): import("react").JSX.Element;
|
|
20
|
+
/** The `json` type: an object or an array, with setting `rows`. */
|
|
21
|
+
export declare function JsonFieldEntry(props: FieldEntryProps): import("react").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=JsonField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonField.d.ts","sourceRoot":"","sources":["../../src/json/JsonField.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGnE,8FAA8F;AAC9F,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,cAAe,SAAQ,UAAU,CAAC,SAAS,CAAC;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,mGAAmG;AACnG,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAazF;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAW,EACX,IAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,cAAc,+BAwChB;AAED,mEAAmE;AACnE,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,+BAepD"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { getFieldProps, getSetting, isNumber } from "../shared/entry.js";
|
|
2
|
+
import { messages } from "../shared/messages.js";
|
|
3
|
+
import JsonField_module_default from "./JsonField.module.js";
|
|
4
|
+
import { c } from "react/compiler-runtime";
|
|
5
|
+
import { TextArea, usePanneauIntl } from "@panneau/ui";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
import { useState } from "react";
|
|
8
|
+
//#region src/json/JsonField.tsx
|
|
9
|
+
/** The text of a value: indented JSON, or the text that doesn't parse as it is. */
|
|
10
|
+
function toText(value) {
|
|
11
|
+
if (value === null || value === void 0) return "";
|
|
12
|
+
return typeof value === "string" ? value : JSON.stringify(value, null, 2);
|
|
13
|
+
}
|
|
14
|
+
/** The value of a text: what it parses to when it is an object or an array, or the text itself. */
|
|
15
|
+
function parseJson(text) {
|
|
16
|
+
if (text.trim() === "") return {
|
|
17
|
+
value: null,
|
|
18
|
+
error: null
|
|
19
|
+
};
|
|
20
|
+
try {
|
|
21
|
+
const parsed = JSON.parse(text);
|
|
22
|
+
if (parsed !== null && typeof parsed === "object") return {
|
|
23
|
+
value: parsed,
|
|
24
|
+
error: null
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
value: text,
|
|
28
|
+
error: "an object or an array"
|
|
29
|
+
};
|
|
30
|
+
} catch (error) {
|
|
31
|
+
return {
|
|
32
|
+
value: text,
|
|
33
|
+
error: error instanceof Error ? error.message : String(error)
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Structured data edited as JSON: an object or an array. While the text doesn't parse, the value
|
|
39
|
+
* is the text itself, which the `json` rule refuses, so the form can't be saved with it. The text
|
|
40
|
+
* is indented again on blur once it parses.
|
|
41
|
+
*/
|
|
42
|
+
function JsonField(t0) {
|
|
43
|
+
const $ = c(33);
|
|
44
|
+
let disabled;
|
|
45
|
+
let onBlur;
|
|
46
|
+
let onChange;
|
|
47
|
+
let props;
|
|
48
|
+
let readOnly;
|
|
49
|
+
let required;
|
|
50
|
+
let t1;
|
|
51
|
+
let t2;
|
|
52
|
+
let value;
|
|
53
|
+
if ($[0] !== t0) {
|
|
54
|
+
({value, onChange, onBlur, errors: t1, rows: t2, disabled, readOnly, required, ...props} = t0);
|
|
55
|
+
$[0] = t0;
|
|
56
|
+
$[1] = disabled;
|
|
57
|
+
$[2] = onBlur;
|
|
58
|
+
$[3] = onChange;
|
|
59
|
+
$[4] = props;
|
|
60
|
+
$[5] = readOnly;
|
|
61
|
+
$[6] = required;
|
|
62
|
+
$[7] = t1;
|
|
63
|
+
$[8] = t2;
|
|
64
|
+
$[9] = value;
|
|
65
|
+
} else {
|
|
66
|
+
disabled = $[1];
|
|
67
|
+
onBlur = $[2];
|
|
68
|
+
onChange = $[3];
|
|
69
|
+
props = $[4];
|
|
70
|
+
readOnly = $[5];
|
|
71
|
+
required = $[6];
|
|
72
|
+
t1 = $[7];
|
|
73
|
+
t2 = $[8];
|
|
74
|
+
value = $[9];
|
|
75
|
+
}
|
|
76
|
+
let t3;
|
|
77
|
+
if ($[10] !== t1) {
|
|
78
|
+
t3 = t1 === void 0 ? [] : t1;
|
|
79
|
+
$[10] = t1;
|
|
80
|
+
$[11] = t3;
|
|
81
|
+
} else t3 = $[11];
|
|
82
|
+
const errors = t3;
|
|
83
|
+
const rows = t2 === void 0 ? 8 : t2;
|
|
84
|
+
const intl = usePanneauIntl();
|
|
85
|
+
let t4;
|
|
86
|
+
if ($[12] !== value) {
|
|
87
|
+
t4 = () => ({
|
|
88
|
+
value,
|
|
89
|
+
text: toText(value)
|
|
90
|
+
});
|
|
91
|
+
$[12] = value;
|
|
92
|
+
$[13] = t4;
|
|
93
|
+
} else t4 = $[13];
|
|
94
|
+
const [state, setState] = useState(t4);
|
|
95
|
+
if (state.value !== value) setState({
|
|
96
|
+
value,
|
|
97
|
+
text: toText(value)
|
|
98
|
+
});
|
|
99
|
+
const { text } = state;
|
|
100
|
+
let t5;
|
|
101
|
+
if ($[14] !== errors || $[15] !== intl || $[16] !== text) {
|
|
102
|
+
const { error } = parseJson(text);
|
|
103
|
+
t5 = error !== null && errors.length === 0 ? [intl.formatMessage(messages.jsonInvalid, { error })] : errors;
|
|
104
|
+
$[14] = errors;
|
|
105
|
+
$[15] = intl;
|
|
106
|
+
$[16] = text;
|
|
107
|
+
$[17] = t5;
|
|
108
|
+
} else t5 = $[17];
|
|
109
|
+
const shown = t5;
|
|
110
|
+
let t6;
|
|
111
|
+
if ($[18] !== onChange) {
|
|
112
|
+
t6 = (next) => {
|
|
113
|
+
const parsed = parseJson(next).value;
|
|
114
|
+
setState({
|
|
115
|
+
value: parsed,
|
|
116
|
+
text: next
|
|
117
|
+
});
|
|
118
|
+
onChange?.(parsed);
|
|
119
|
+
};
|
|
120
|
+
$[18] = onChange;
|
|
121
|
+
$[19] = t6;
|
|
122
|
+
} else t6 = $[19];
|
|
123
|
+
let t7;
|
|
124
|
+
if ($[20] !== onBlur || $[21] !== value) {
|
|
125
|
+
t7 = () => {
|
|
126
|
+
if (value !== null && value !== void 0 && typeof value !== "string") setState({
|
|
127
|
+
value,
|
|
128
|
+
text: toText(value)
|
|
129
|
+
});
|
|
130
|
+
onBlur?.();
|
|
131
|
+
};
|
|
132
|
+
$[20] = onBlur;
|
|
133
|
+
$[21] = value;
|
|
134
|
+
$[22] = t7;
|
|
135
|
+
} else t7 = $[22];
|
|
136
|
+
let t8;
|
|
137
|
+
if ($[23] !== disabled || $[24] !== props || $[25] !== readOnly || $[26] !== required || $[27] !== rows || $[28] !== shown || $[29] !== t6 || $[30] !== t7 || $[31] !== text) {
|
|
138
|
+
t8 = /* @__PURE__ */ jsx(TextArea, {
|
|
139
|
+
...props,
|
|
140
|
+
value: text,
|
|
141
|
+
onChange: t6,
|
|
142
|
+
onBlur: t7,
|
|
143
|
+
errors: shown,
|
|
144
|
+
rows,
|
|
145
|
+
spellCheck: "false",
|
|
146
|
+
textAreaClassName: JsonField_module_default.code,
|
|
147
|
+
isDisabled: disabled,
|
|
148
|
+
isReadOnly: readOnly,
|
|
149
|
+
isRequired: required
|
|
150
|
+
});
|
|
151
|
+
$[23] = disabled;
|
|
152
|
+
$[24] = props;
|
|
153
|
+
$[25] = readOnly;
|
|
154
|
+
$[26] = required;
|
|
155
|
+
$[27] = rows;
|
|
156
|
+
$[28] = shown;
|
|
157
|
+
$[29] = t6;
|
|
158
|
+
$[30] = t7;
|
|
159
|
+
$[31] = text;
|
|
160
|
+
$[32] = t8;
|
|
161
|
+
} else t8 = $[32];
|
|
162
|
+
return t8;
|
|
163
|
+
}
|
|
164
|
+
/** The `json` type: an object or an array, with setting `rows`. */
|
|
165
|
+
function JsonFieldEntry(props) {
|
|
166
|
+
const $ = c(11);
|
|
167
|
+
let t0;
|
|
168
|
+
if ($[0] !== props.field) {
|
|
169
|
+
t0 = getSetting(props.field, "rows", isNumber);
|
|
170
|
+
$[0] = props.field;
|
|
171
|
+
$[1] = t0;
|
|
172
|
+
} else t0 = $[1];
|
|
173
|
+
const rows = t0;
|
|
174
|
+
const { value } = props;
|
|
175
|
+
let t1;
|
|
176
|
+
if ($[2] !== props) {
|
|
177
|
+
t1 = getFieldProps(props);
|
|
178
|
+
$[2] = props;
|
|
179
|
+
$[3] = t1;
|
|
180
|
+
} else t1 = $[3];
|
|
181
|
+
const t2 = typeof value === "string" || value !== null && typeof value === "object" ? value : null;
|
|
182
|
+
let t3;
|
|
183
|
+
if ($[4] !== rows) {
|
|
184
|
+
t3 = rows !== void 0 ? { rows } : {};
|
|
185
|
+
$[4] = rows;
|
|
186
|
+
$[5] = t3;
|
|
187
|
+
} else t3 = $[5];
|
|
188
|
+
let t4;
|
|
189
|
+
if ($[6] !== props.onChange || $[7] !== t1 || $[8] !== t2 || $[9] !== t3) {
|
|
190
|
+
t4 = /* @__PURE__ */ jsx(JsonField, {
|
|
191
|
+
...t1,
|
|
192
|
+
value: t2,
|
|
193
|
+
onChange: props.onChange,
|
|
194
|
+
...t3
|
|
195
|
+
});
|
|
196
|
+
$[6] = props.onChange;
|
|
197
|
+
$[7] = t1;
|
|
198
|
+
$[8] = t2;
|
|
199
|
+
$[9] = t3;
|
|
200
|
+
$[10] = t4;
|
|
201
|
+
} else t4 = $[10];
|
|
202
|
+
return t4;
|
|
203
|
+
}
|
|
204
|
+
//#endregion
|
|
205
|
+
export { JsonField, JsonFieldEntry, parseJson };
|
|
206
|
+
|
|
207
|
+
//# sourceMappingURL=JsonField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonField.js","names":["useState","TextArea","usePanneauIntl","getFieldProps","getSetting","isNumber","messages","FieldEntryProps","FieldProps","styles","JsonValue","Record","JsonFieldProps","placeholder","rows","toText","value","undefined","JSON","stringify","parseJson","text","error","trim","parsed","parse","Error","message","String","JsonField","t0","$","_c","disabled","onBlur","onChange","props","readOnly","required","t1","t2","errors","t3","intl","t4","state","setState","t5","length","formatMessage","jsonInvalid","shown","t6","next","t7","t8","code","JsonFieldEntry","field","_c","styles"],"sources":["../../src/json/JsonField.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { TextArea, usePanneauIntl } from '@panneau/ui';\n\nimport { getFieldProps, getSetting, isNumber } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport styles from './JsonField.module.css';\n\n/** The value of a `json` field: an object or an array, or the text while it doesn't parse. */\nexport type JsonValue = Record<string, unknown> | unknown[] | string;\n\nexport interface JsonFieldProps extends FieldProps<JsonValue> {\n placeholder?: string;\n /** Visible lines. Defaults to 8. */\n rows?: number;\n}\n\n/** The text of a value: indented JSON, or the text that doesn't parse as it is. */\nfunction toText(value: JsonValue | null | undefined): string {\n if (value === null || value === undefined) {\n return '';\n }\n return typeof value === 'string' ? value : JSON.stringify(value, null, 2);\n}\n\n/** The value of a text: what it parses to when it is an object or an array, or the text itself. */\nexport function parseJson(text: string): { value: JsonValue | null; error: string | null } {\n if (text.trim() === '') {\n return { value: null, error: null };\n }\n try {\n const parsed: unknown = JSON.parse(text);\n if (parsed !== null && typeof parsed === 'object') {\n return { value: parsed as JsonValue, error: null };\n }\n return { value: text, error: 'an object or an array' };\n } catch (error) {\n return { value: text, error: error instanceof Error ? error.message : String(error) };\n }\n}\n\n/**\n * Structured data edited as JSON: an object or an array. While the text doesn't parse, the value\n * is the text itself, which the `json` rule refuses, so the form can't be saved with it. The text\n * is indented again on blur once it parses.\n */\nexport function JsonField({\n value,\n onChange,\n onBlur,\n errors = [],\n rows = 8,\n disabled,\n readOnly,\n required,\n ...props\n}: JsonFieldProps) {\n const intl = usePanneauIntl();\n // The text as typed: a value that comes back from the form keeps its text, and a value set\n // from outside (a reset, a reload) shows its JSON\n const [state, setState] = useState(() => ({ value, text: toText(value) }));\n if (state.value !== value) {\n setState({ value, text: toText(value) });\n }\n const { text } = state;\n const { error } = parseJson(text);\n // The parser's message, until the form shows the rule's\n const shown =\n error !== null && errors.length === 0\n ? [intl.formatMessage(messages.jsonInvalid, { error })]\n : errors;\n return (\n <TextArea\n {...props}\n value={text}\n onChange={(next) => {\n const parsed = parseJson(next).value;\n setState({ value: parsed, text: next });\n onChange?.(parsed);\n }}\n onBlur={() => {\n // Indent the text once it parses\n if (value !== null && value !== undefined && typeof value !== 'string') {\n setState({ value, text: toText(value) });\n }\n onBlur?.();\n }}\n errors={shown}\n rows={rows}\n spellCheck=\"false\"\n textAreaClassName={styles.code}\n isDisabled={disabled}\n isReadOnly={readOnly}\n isRequired={required}\n />\n );\n}\n\n/** The `json` type: an object or an array, with setting `rows`. */\nexport function JsonFieldEntry(props: FieldEntryProps) {\n const rows = getSetting(props.field, 'rows', isNumber);\n const { value } = props;\n return (\n <JsonField\n {...getFieldProps(props)}\n value={\n typeof value === 'string' || (value !== null && typeof value === 'object')\n ? (value as JsonValue)\n : null\n }\n onChange={props.onChange}\n {...(rows !== undefined ? { rows } : {})}\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "./JsonField.css";
|
|
2
|
+
//#region src/json/JsonField.module.css
|
|
3
|
+
var code = "panneau-json-field-code";
|
|
4
|
+
var JsonField_module_default = { code };
|
|
5
|
+
//#endregion
|
|
6
|
+
export { code, JsonField_module_default as default };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=JsonField.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonField.module.js","names":[],"sources":["../../src/json/JsonField.module.css"],"sourcesContent":["/* JSON reads in a monospace font, without wrapping long lines. */\n.code {\n font-family: var(--panneau-font-family-mono);\n font-size: var(--panneau-font-size-sm);\n white-space: pre;\n tab-size: 2;\n}\n"],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/json/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,SAAS,GACZ,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { JsonField, JsonFieldEntry, parseJson } from "./JsonField.js";
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/* The type, its input, the label, then the new tab. */
|
|
2
|
+
.panneau-link-field-link {
|
|
3
|
+
display: flex;
|
|
4
|
+
flex-direction: column;
|
|
5
|
+
align-items: stretch;
|
|
6
|
+
gap: var(--panneau-space-3);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.panneau-link-field-link > :first-child {
|
|
10
|
+
align-self: flex-start;
|
|
11
|
+
max-width: 100%;
|
|
12
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { LinkValue } from '@panneau/protocol';
|
|
2
|
+
import { type LinkNewTab, type LinkType } from '@panneau/protocol/runtime';
|
|
3
|
+
import type { FieldEntryProps, FieldProps } from '../shared/types.js';
|
|
4
|
+
/** Whether links have a label: optional, required, or none. */
|
|
5
|
+
export type LinkLabelMode = 'optional' | 'required' | 'none';
|
|
6
|
+
export interface LinkFieldProps extends FieldProps<LinkValue> {
|
|
7
|
+
/** Dot path of the value, the prefix of the paths of its parts. Defaults to `name`. */
|
|
8
|
+
path?: string;
|
|
9
|
+
/** The types offered, in order. Defaults to `url`, `email` and `tel`. */
|
|
10
|
+
types?: readonly LinkType[];
|
|
11
|
+
/** The resources of `page` links. */
|
|
12
|
+
pages?: readonly string[];
|
|
13
|
+
/** The media libraries of `file` links. Defaults to every library. */
|
|
14
|
+
libraries?: readonly string[];
|
|
15
|
+
/** Which links open in a new tab. Defaults to `choose`, a checkbox. */
|
|
16
|
+
newTab?: LinkNewTab;
|
|
17
|
+
/** Whether links have a label. Defaults to `optional`. */
|
|
18
|
+
labelMode?: LinkLabelMode;
|
|
19
|
+
/**
|
|
20
|
+
* The label is a string, not a value per locale: in a `localized` link field, where the whole
|
|
21
|
+
* link is per locale already.
|
|
22
|
+
*/
|
|
23
|
+
singleLabel?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A link (decision 0055): its type, in a segmented control, then the input of the type (a URL, a
|
|
27
|
+
* page searched in the resources of `pages`, an email address, a phone number, a media, or the
|
|
28
|
+
* text of a type of the site), its label per locale, and whether it opens in a new tab. Each part
|
|
29
|
+
* shows the errors of its own path (`link.url`) in a form.
|
|
30
|
+
*/
|
|
31
|
+
export declare function LinkField({ value, onChange, onBlur, path, name, types: typesProp, pages, libraries, newTab, labelMode, singleLabel, label, description, errors, disabled, readOnly, required, className, }: LinkFieldProps): import("react").JSX.Element;
|
|
32
|
+
/**
|
|
33
|
+
* The `link` type: its `resource` (the resources of `page` links), and settings `types`,
|
|
34
|
+
* `newTab`, `label` and `libraries`. In a localized field, the label of each locale's link is a
|
|
35
|
+
* string.
|
|
36
|
+
*/
|
|
37
|
+
export declare function LinkFieldEntry(props: FieldEntryProps): import("react").JSX.Element;
|
|
38
|
+
//# sourceMappingURL=LinkField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LinkField.d.ts","sourceRoot":"","sources":["../../src/link/LinkField.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAS,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACH,KAAK,UAAU,EACf,KAAK,QAAQ,EAGhB,MAAM,2BAA2B,CAAC;AAkBnC,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQnE,+DAA+D;AAC/D,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE7D,MAAM,WAAW,cAAe,SAAQ,UAAU,CAAC,SAAS,CAAC;IACzD,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC5B,qCAAqC;IACrC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,sEAAsE;IACtE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,uEAAuE;IACvE,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAoBD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACtB,KAAK,EACL,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,KAAK,EAAE,SAAS,EAChB,KAAU,EACV,SAAS,EACT,MAAiB,EACjB,SAAsB,EACtB,WAAmB,EACnB,KAAK,EACL,WAAW,EACX,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,SAAS,GACZ,EAAE,cAAc,+BA8OhB;AAgFD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,+BAyBpD"}
|