@panneau/fields 5.0.0-alpha.2 → 5.0.0-alpha.20
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
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
import { cx } from "../shared/cx.js";
|
|
2
|
+
import { getFieldProps, getSetting, isBoolean, isString } from "../shared/entry.js";
|
|
3
|
+
import { useFieldsContext } from "../shared/context.js";
|
|
4
|
+
import { messages } from "../shared/messages.js";
|
|
5
|
+
import { CountryField } from "../country/CountryField.js";
|
|
6
|
+
import { LocationMap } from "../location/LocationMap.js";
|
|
7
|
+
import { useAddressSearch } from "../location/search.js";
|
|
8
|
+
import { OPEN_STREET_MAP_TILES } from "../location/LocationField.js";
|
|
9
|
+
import { TextField } from "../text/TextField.js";
|
|
10
|
+
import { RegionField } from "../region/RegionField.js";
|
|
11
|
+
import { BoundPart } from "../shared/part.js";
|
|
12
|
+
import AddressField_module_default from "./AddressField.module.js";
|
|
13
|
+
import { cleanAddress, endsWithRegion, isAddress } from "./address.js";
|
|
14
|
+
import { c } from "react/compiler-runtime";
|
|
15
|
+
import { DEFAULT_ADDRESS_REQUIRED_PARTS, getAddressRequiredParts, normalizePostalCode } from "@panneau/protocol/runtime";
|
|
16
|
+
import { ComboBox, Fieldset, IconButton, usePanneauIntl } from "@panneau/ui";
|
|
17
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
|
+
import { X } from "lucide-react";
|
|
19
|
+
import { useRef, useState } from "react";
|
|
20
|
+
//#region src/address/AddressField.tsx
|
|
21
|
+
var WORLD = {
|
|
22
|
+
lat: 20,
|
|
23
|
+
lng: 0
|
|
24
|
+
};
|
|
25
|
+
/** The type of the field of each part, for the binding of the fields context. */
|
|
26
|
+
var PART_TYPES = {
|
|
27
|
+
country: "country",
|
|
28
|
+
street: "text",
|
|
29
|
+
unit: "text",
|
|
30
|
+
city: "text",
|
|
31
|
+
region: "region",
|
|
32
|
+
postalCode: "text"
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* A postal address (decision 0054): the country first, which sets the labels, the order and the
|
|
36
|
+
* regions of the other parts, then the street, the unit, the city, the region and the postal
|
|
37
|
+
* code, which is normalized for the country when it loses focus. With an address search, a place
|
|
38
|
+
* found fills every part; with `point`, a map places the address. Each part shows the errors of
|
|
39
|
+
* its own path (`address.postalCode`) in a form.
|
|
40
|
+
*/
|
|
41
|
+
function AddressField(t0) {
|
|
42
|
+
const $ = c(34);
|
|
43
|
+
const { value, onChange, onBlur, path, name, country: countryProp, countries, preferred, requiredParts: t1, point: t2, geocoding: geocodingProp, tiles: tilesProp, zoom: t3, label, description, errors, disabled, readOnly, required, className } = t0;
|
|
44
|
+
const requiredParts = t1 === void 0 ? DEFAULT_ADDRESS_REQUIRED_PARTS : t1;
|
|
45
|
+
const withPoint = t2 === void 0 ? false : t2;
|
|
46
|
+
const zoom = t3 === void 0 ? 16 : t3;
|
|
47
|
+
const intl = usePanneauIntl();
|
|
48
|
+
const { maps } = useFieldsContext();
|
|
49
|
+
const geocoding = geocodingProp === void 0 ? maps?.geocoding ?? null : geocodingProp;
|
|
50
|
+
const tiles = tilesProp ?? maps?.tiles ?? OPEN_STREET_MAP_TILES;
|
|
51
|
+
const editable = disabled !== true && readOnly !== true;
|
|
52
|
+
const base = path ?? name ?? "";
|
|
53
|
+
const onlyCountry = countries?.length === 1 ? countries[0] : void 0;
|
|
54
|
+
const defaultCountry = onlyCountry ?? countryProp ?? null;
|
|
55
|
+
const address = value ?? {};
|
|
56
|
+
const country = address.country ?? defaultCountry;
|
|
57
|
+
const filled = value !== null && value !== void 0;
|
|
58
|
+
let t4;
|
|
59
|
+
if ($[0] !== defaultCountry || $[1] !== onChange) {
|
|
60
|
+
t4 = (next) => onChange?.(cleanAddress(next, defaultCountry));
|
|
61
|
+
$[0] = defaultCountry;
|
|
62
|
+
$[1] = onChange;
|
|
63
|
+
$[2] = t4;
|
|
64
|
+
} else t4 = $[2];
|
|
65
|
+
const change = t4;
|
|
66
|
+
const setPart = (part, text) => change({
|
|
67
|
+
...address,
|
|
68
|
+
[part]: text ?? void 0
|
|
69
|
+
});
|
|
70
|
+
const setCountry = (next_0) => change({
|
|
71
|
+
...address,
|
|
72
|
+
country: next_0 ?? void 0,
|
|
73
|
+
region: next_0 === country ? address.region : void 0,
|
|
74
|
+
postalCode: address.postalCode !== void 0 ? normalizePostalCode(address.postalCode, next_0) : void 0
|
|
75
|
+
});
|
|
76
|
+
const [query, setQuery] = useState("");
|
|
77
|
+
const [chosen, setChosen] = useState(null);
|
|
78
|
+
const search = useAddressSearch(editable && query !== chosen?.label ? geocoding : null, query, intl.locale);
|
|
79
|
+
const unitRef = useRef(null);
|
|
80
|
+
let t5;
|
|
81
|
+
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
82
|
+
t5 = () => window.requestAnimationFrame(() => unitRef.current?.querySelector("input")?.focus());
|
|
83
|
+
$[3] = t5;
|
|
84
|
+
} else t5 = $[3];
|
|
85
|
+
const focusUnit = t5;
|
|
86
|
+
const places = (chosen !== null && query === chosen.label ? [chosen] : search.results).filter(_temp);
|
|
87
|
+
const labels = {
|
|
88
|
+
country: intl.formatMessage(messages.addressCountry),
|
|
89
|
+
street: intl.formatMessage(messages.addressStreet),
|
|
90
|
+
unit: intl.formatMessage(messages.addressUnit),
|
|
91
|
+
city: intl.formatMessage(messages.addressCity),
|
|
92
|
+
region: intl.formatMessage(country === "CA" ? messages.addressProvince : country === "US" ? messages.addressState : messages.addressRegion),
|
|
93
|
+
postalCode: intl.formatMessage(country === "US" ? messages.addressZipCode : messages.addressPostalCode)
|
|
94
|
+
};
|
|
95
|
+
const renderPart = (part_0, input) => {
|
|
96
|
+
const field = {
|
|
97
|
+
name: part_0,
|
|
98
|
+
type: PART_TYPES[part_0],
|
|
99
|
+
label: labels[part_0]
|
|
100
|
+
};
|
|
101
|
+
return /* @__PURE__ */ jsx("div", {
|
|
102
|
+
className: cx(AddressField_module_default.part, AddressField_module_default[part_0]),
|
|
103
|
+
...part_0 === "unit" ? { ref: unitRef } : {},
|
|
104
|
+
children: /* @__PURE__ */ jsx(BoundPart, {
|
|
105
|
+
field,
|
|
106
|
+
path: base !== "" ? `${base}.${part_0}` : part_0,
|
|
107
|
+
...onBlur !== void 0 ? { onBlur } : {},
|
|
108
|
+
render: input
|
|
109
|
+
})
|
|
110
|
+
}, part_0);
|
|
111
|
+
};
|
|
112
|
+
const shared = (part_1, bound) => ({
|
|
113
|
+
label: labels[part_1],
|
|
114
|
+
errors: bound.errors ?? [],
|
|
115
|
+
...disabled !== void 0 ? { disabled } : {},
|
|
116
|
+
...readOnly !== void 0 ? { readOnly } : {},
|
|
117
|
+
required: requiredParts.includes(part_1) && (required === true || filled)
|
|
118
|
+
});
|
|
119
|
+
const textPart = (part_2, autoComplete) => renderPart(part_2, (bound_0) => /* @__PURE__ */ jsx(TextField, {
|
|
120
|
+
...shared(part_2, bound_0),
|
|
121
|
+
autoComplete,
|
|
122
|
+
value: address[part_2] ?? null,
|
|
123
|
+
onChange: (text_0) => setPart(part_2, text_0),
|
|
124
|
+
...bound_0.onBlur !== void 0 ? { onBlur: bound_0.onBlur } : {}
|
|
125
|
+
}));
|
|
126
|
+
const region = renderPart("region", (bound_1) => /* @__PURE__ */ jsx(RegionField, {
|
|
127
|
+
...shared("region", bound_1),
|
|
128
|
+
country,
|
|
129
|
+
value: address.region ?? null,
|
|
130
|
+
onChange: (text_1) => setPart("region", text_1),
|
|
131
|
+
...bound_1.onBlur !== void 0 ? { onBlur: bound_1.onBlur } : {}
|
|
132
|
+
}));
|
|
133
|
+
const postalCode = renderPart("postalCode", (bound_2) => /* @__PURE__ */ jsx(TextField, {
|
|
134
|
+
...shared("postalCode", bound_2),
|
|
135
|
+
autoComplete: "postal-code",
|
|
136
|
+
value: address.postalCode ?? null,
|
|
137
|
+
onChange: (text_2) => setPart("postalCode", text_2),
|
|
138
|
+
onBlur: () => {
|
|
139
|
+
if (address.postalCode !== void 0) {
|
|
140
|
+
const normalized = normalizePostalCode(address.postalCode, country);
|
|
141
|
+
if (normalized !== address.postalCode) setPart("postalCode", normalized);
|
|
142
|
+
}
|
|
143
|
+
bound_2.onBlur?.();
|
|
144
|
+
}
|
|
145
|
+
}));
|
|
146
|
+
const city = textPart("city", "address-level2");
|
|
147
|
+
const locality = endsWithRegion(country) ? [
|
|
148
|
+
city,
|
|
149
|
+
region,
|
|
150
|
+
postalCode
|
|
151
|
+
] : [
|
|
152
|
+
postalCode,
|
|
153
|
+
city,
|
|
154
|
+
region
|
|
155
|
+
];
|
|
156
|
+
const point = address.point ?? null;
|
|
157
|
+
const T0 = Fieldset;
|
|
158
|
+
const t6 = AddressField_module_default;
|
|
159
|
+
const t7 = editable && geocoding !== null ? /* @__PURE__ */ jsx(ComboBox, {
|
|
160
|
+
"aria-label": intl.formatMessage(messages.searchAddress),
|
|
161
|
+
placeholder: intl.formatMessage(messages.searchAddress),
|
|
162
|
+
onInputChange: setQuery,
|
|
163
|
+
items: places.map(_temp2),
|
|
164
|
+
isLoading: search.loading,
|
|
165
|
+
menuTrigger: "input",
|
|
166
|
+
emptyMessage: query.trim().length < 3 ? intl.formatMessage(messages.searchAddressHint, { count: 3 }) : intl.formatMessage(messages.noPlaces),
|
|
167
|
+
value: chosen !== null && query === chosen.label ? "0" : null,
|
|
168
|
+
onChange: (id) => {
|
|
169
|
+
const result_1 = id !== null ? places[Number(id)] : void 0;
|
|
170
|
+
if (result_1 !== void 0) {
|
|
171
|
+
setChosen(result_1);
|
|
172
|
+
change({
|
|
173
|
+
...result_1.address,
|
|
174
|
+
...withPoint ? { point: roundPoint(result_1) } : {}
|
|
175
|
+
});
|
|
176
|
+
focusUnit();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}) : null;
|
|
180
|
+
const t8 = AddressField_module_default;
|
|
181
|
+
const t9 = onlyCountry === void 0 ? renderPart("country", (bound_3) => /* @__PURE__ */ jsx(CountryField, {
|
|
182
|
+
...shared("country", bound_3),
|
|
183
|
+
...countries !== void 0 ? { countries } : {},
|
|
184
|
+
...preferred !== void 0 ? { preferred } : {},
|
|
185
|
+
value: country,
|
|
186
|
+
onChange: setCountry,
|
|
187
|
+
...bound_3.onBlur !== void 0 ? { onBlur: bound_3.onBlur } : {}
|
|
188
|
+
})) : null;
|
|
189
|
+
const t10 = textPart("street", "address-line1");
|
|
190
|
+
const t11 = textPart("unit", "address-line2");
|
|
191
|
+
let t12;
|
|
192
|
+
if ($[4] !== locality || $[5] !== t10 || $[6] !== t11 || $[7] !== t8.parts || $[8] !== t9) {
|
|
193
|
+
t12 = /* @__PURE__ */ jsxs("div", {
|
|
194
|
+
className: t8.parts,
|
|
195
|
+
children: [
|
|
196
|
+
t9,
|
|
197
|
+
t10,
|
|
198
|
+
t11,
|
|
199
|
+
locality
|
|
200
|
+
]
|
|
201
|
+
});
|
|
202
|
+
$[4] = locality;
|
|
203
|
+
$[5] = t10;
|
|
204
|
+
$[6] = t11;
|
|
205
|
+
$[7] = t8.parts;
|
|
206
|
+
$[8] = t9;
|
|
207
|
+
$[9] = t12;
|
|
208
|
+
} else t12 = $[9];
|
|
209
|
+
let t13;
|
|
210
|
+
if ($[10] !== address || $[11] !== change || $[12] !== editable || $[13] !== intl || $[14] !== label || $[15] !== point || $[16] !== tiles || $[17] !== withPoint || $[18] !== zoom) {
|
|
211
|
+
t13 = withPoint ? /* @__PURE__ */ jsxs("div", {
|
|
212
|
+
className: AddressField_module_default.map,
|
|
213
|
+
children: [/* @__PURE__ */ jsx(LocationMap, {
|
|
214
|
+
point,
|
|
215
|
+
onChange: (next_1) => change({
|
|
216
|
+
...address,
|
|
217
|
+
point: roundPoint(next_1)
|
|
218
|
+
}),
|
|
219
|
+
tiles,
|
|
220
|
+
center: point ?? WORLD,
|
|
221
|
+
zoom,
|
|
222
|
+
readOnly: !editable,
|
|
223
|
+
label: intl.formatMessage(messages.map, { label: typeof label === "string" ? label : "" })
|
|
224
|
+
}), editable && point !== null ? /* @__PURE__ */ jsx(IconButton, {
|
|
225
|
+
icon: X,
|
|
226
|
+
label: intl.formatMessage(messages.removePoint),
|
|
227
|
+
className: AddressField_module_default.remove,
|
|
228
|
+
onPress: () => change({
|
|
229
|
+
...address,
|
|
230
|
+
point: void 0
|
|
231
|
+
})
|
|
232
|
+
}) : null]
|
|
233
|
+
}) : null;
|
|
234
|
+
$[10] = address;
|
|
235
|
+
$[11] = change;
|
|
236
|
+
$[12] = editable;
|
|
237
|
+
$[13] = intl;
|
|
238
|
+
$[14] = label;
|
|
239
|
+
$[15] = point;
|
|
240
|
+
$[16] = tiles;
|
|
241
|
+
$[17] = withPoint;
|
|
242
|
+
$[18] = zoom;
|
|
243
|
+
$[19] = t13;
|
|
244
|
+
} else t13 = $[19];
|
|
245
|
+
let t14;
|
|
246
|
+
if ($[20] !== t12 || $[21] !== t13 || $[22] !== t6.address || $[23] !== t7) {
|
|
247
|
+
t14 = /* @__PURE__ */ jsxs("div", {
|
|
248
|
+
className: t6.address,
|
|
249
|
+
children: [
|
|
250
|
+
t7,
|
|
251
|
+
t12,
|
|
252
|
+
t13
|
|
253
|
+
]
|
|
254
|
+
});
|
|
255
|
+
$[20] = t12;
|
|
256
|
+
$[21] = t13;
|
|
257
|
+
$[22] = t6.address;
|
|
258
|
+
$[23] = t7;
|
|
259
|
+
$[24] = t14;
|
|
260
|
+
} else t14 = $[24];
|
|
261
|
+
let t15;
|
|
262
|
+
if ($[25] !== T0 || $[26] !== className || $[27] !== description || $[28] !== disabled || $[29] !== errors || $[30] !== label || $[31] !== required || $[32] !== t14) {
|
|
263
|
+
t15 = /* @__PURE__ */ jsx(T0, {
|
|
264
|
+
legend: label,
|
|
265
|
+
description,
|
|
266
|
+
errors,
|
|
267
|
+
isRequired: required,
|
|
268
|
+
isDisabled: disabled,
|
|
269
|
+
className,
|
|
270
|
+
children: t14
|
|
271
|
+
});
|
|
272
|
+
$[25] = T0;
|
|
273
|
+
$[26] = className;
|
|
274
|
+
$[27] = description;
|
|
275
|
+
$[28] = disabled;
|
|
276
|
+
$[29] = errors;
|
|
277
|
+
$[30] = label;
|
|
278
|
+
$[31] = required;
|
|
279
|
+
$[32] = t14;
|
|
280
|
+
$[33] = t15;
|
|
281
|
+
} else t15 = $[33];
|
|
282
|
+
return t15;
|
|
283
|
+
}
|
|
284
|
+
/** A point to the sixth decimal, about ten centimetres. */
|
|
285
|
+
function _temp2(result_0, index) {
|
|
286
|
+
return {
|
|
287
|
+
id: String(index),
|
|
288
|
+
label: result_0.label
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
function _temp(result) {
|
|
292
|
+
return result.address !== void 0;
|
|
293
|
+
}
|
|
294
|
+
function roundPoint(point) {
|
|
295
|
+
return {
|
|
296
|
+
lat: Number(point.lat.toFixed(6)),
|
|
297
|
+
lng: Number(point.lng.toFixed(6))
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
var isCodes = (value) => Array.isArray(value) && value.every(isString);
|
|
301
|
+
/**
|
|
302
|
+
* The `address` type: settings `country`, `countries`, `preferred`, `required` (the parts a
|
|
303
|
+
* filled address must have) and `point`, over the maps of the `FieldsProvider`.
|
|
304
|
+
*/
|
|
305
|
+
function AddressFieldEntry(props) {
|
|
306
|
+
const $ = c(32);
|
|
307
|
+
const { field } = props;
|
|
308
|
+
let t0;
|
|
309
|
+
if ($[0] !== field) {
|
|
310
|
+
t0 = getSetting(field, "country", isString);
|
|
311
|
+
$[0] = field;
|
|
312
|
+
$[1] = t0;
|
|
313
|
+
} else t0 = $[1];
|
|
314
|
+
const country = t0;
|
|
315
|
+
let t1;
|
|
316
|
+
if ($[2] !== field) {
|
|
317
|
+
t1 = getSetting(field, "countries", isCodes);
|
|
318
|
+
$[2] = field;
|
|
319
|
+
$[3] = t1;
|
|
320
|
+
} else t1 = $[3];
|
|
321
|
+
const countries = t1;
|
|
322
|
+
let t2;
|
|
323
|
+
if ($[4] !== field) {
|
|
324
|
+
t2 = getSetting(field, "preferred", isCodes);
|
|
325
|
+
$[4] = field;
|
|
326
|
+
$[5] = t2;
|
|
327
|
+
} else t2 = $[5];
|
|
328
|
+
const preferred = t2;
|
|
329
|
+
let t3;
|
|
330
|
+
if ($[6] !== field) {
|
|
331
|
+
t3 = getSetting(field, "point", isBoolean);
|
|
332
|
+
$[6] = field;
|
|
333
|
+
$[7] = t3;
|
|
334
|
+
} else t3 = $[7];
|
|
335
|
+
const point = t3;
|
|
336
|
+
let t4;
|
|
337
|
+
if ($[8] !== props) {
|
|
338
|
+
t4 = getFieldProps(props);
|
|
339
|
+
$[8] = props;
|
|
340
|
+
$[9] = t4;
|
|
341
|
+
} else t4 = $[9];
|
|
342
|
+
let fieldProps;
|
|
343
|
+
if ($[10] !== t4) {
|
|
344
|
+
const { placeholder: _placeholder, ...t5 } = t4;
|
|
345
|
+
fieldProps = t5;
|
|
346
|
+
$[10] = t4;
|
|
347
|
+
$[11] = fieldProps;
|
|
348
|
+
} else fieldProps = $[11];
|
|
349
|
+
const t5 = props.path;
|
|
350
|
+
const t6 = isAddress(props.value) ? props.value : null;
|
|
351
|
+
const t7 = props.onChange;
|
|
352
|
+
let t8;
|
|
353
|
+
if ($[12] !== field) {
|
|
354
|
+
t8 = getAddressRequiredParts(field);
|
|
355
|
+
$[12] = field;
|
|
356
|
+
$[13] = t8;
|
|
357
|
+
} else t8 = $[13];
|
|
358
|
+
let t9;
|
|
359
|
+
if ($[14] !== country) {
|
|
360
|
+
t9 = country !== void 0 ? { country } : {};
|
|
361
|
+
$[14] = country;
|
|
362
|
+
$[15] = t9;
|
|
363
|
+
} else t9 = $[15];
|
|
364
|
+
let t10;
|
|
365
|
+
if ($[16] !== countries) {
|
|
366
|
+
t10 = countries !== void 0 ? { countries } : {};
|
|
367
|
+
$[16] = countries;
|
|
368
|
+
$[17] = t10;
|
|
369
|
+
} else t10 = $[17];
|
|
370
|
+
let t11;
|
|
371
|
+
if ($[18] !== preferred) {
|
|
372
|
+
t11 = preferred !== void 0 ? { preferred } : {};
|
|
373
|
+
$[18] = preferred;
|
|
374
|
+
$[19] = t11;
|
|
375
|
+
} else t11 = $[19];
|
|
376
|
+
let t12;
|
|
377
|
+
if ($[20] !== point) {
|
|
378
|
+
t12 = point !== void 0 ? { point } : {};
|
|
379
|
+
$[20] = point;
|
|
380
|
+
$[21] = t12;
|
|
381
|
+
} else t12 = $[21];
|
|
382
|
+
let t13;
|
|
383
|
+
if ($[22] !== fieldProps || $[23] !== props.onChange || $[24] !== props.path || $[25] !== t10 || $[26] !== t11 || $[27] !== t12 || $[28] !== t6 || $[29] !== t8 || $[30] !== t9) {
|
|
384
|
+
t13 = /* @__PURE__ */ jsx(AddressField, {
|
|
385
|
+
...fieldProps,
|
|
386
|
+
path: t5,
|
|
387
|
+
value: t6,
|
|
388
|
+
onChange: t7,
|
|
389
|
+
requiredParts: t8,
|
|
390
|
+
...t9,
|
|
391
|
+
...t10,
|
|
392
|
+
...t11,
|
|
393
|
+
...t12
|
|
394
|
+
});
|
|
395
|
+
$[22] = fieldProps;
|
|
396
|
+
$[23] = props.onChange;
|
|
397
|
+
$[24] = props.path;
|
|
398
|
+
$[25] = t10;
|
|
399
|
+
$[26] = t11;
|
|
400
|
+
$[27] = t12;
|
|
401
|
+
$[28] = t6;
|
|
402
|
+
$[29] = t8;
|
|
403
|
+
$[30] = t9;
|
|
404
|
+
$[31] = t13;
|
|
405
|
+
} else t13 = $[31];
|
|
406
|
+
return t13;
|
|
407
|
+
}
|
|
408
|
+
//#endregion
|
|
409
|
+
export { AddressField, AddressFieldEntry };
|
|
410
|
+
|
|
411
|
+
//# sourceMappingURL=AddressField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddressField.js","names":["X","ReactNode","useRef","useState","AddressPart","AddressValue","Field","DEFAULT_ADDRESS_REQUIRED_PARTS","getAddressRequiredParts","normalizePostalCode","ComboBox","Fieldset","IconButton","usePanneauIntl","CountryField","OPEN_STREET_MAP_TILES","LocationMap","Point","SEARCH_MIN_LENGTH","useAddressSearch","GeocodingResult","GeocodingSource","MapTiles","RegionField","useFieldsContext","cx","getFieldProps","getSetting","isBoolean","isString","messages","BoundPart","BoundPartProps","FieldEntryProps","FieldProps","TextField","styles","cleanAddress","endsWithRegion","isAddress","AddressFieldProps","path","country","countries","preferred","requiredParts","point","geocoding","tiles","zoom","WORLD","lat","lng","PART_TYPES","Readonly","Record","street","unit","city","region","postalCode","AddressField","t0","$","_c","value","onChange","onBlur","name","countryProp","t1","t2","geocodingProp","tilesProp","t3","label","description","errors","disabled","readOnly","required","className","undefined","withPoint","intl","maps","editable","base","onlyCountry","length","defaultCountry","address","filled","t4","next","change","setPart","part","text","setCountry","next_0","query","setQuery","chosen","setChosen","search","locale","unitRef","t5","Symbol","for","window","requestAnimationFrame","current","querySelector","focus","focusUnit","places","results","filter","_temp","labels","formatMessage","addressCountry","addressStreet","addressUnit","addressCity","addressProvince","addressState","addressRegion","addressZipCode","addressPostalCode","renderPart","part_0","input","field","type","ref","shared","part_1","bound","includes","textPart","part_2","autoComplete","bound_0","text_0","bound_1","text_1","bound_2","text_2","normalized","locality","T0","t7","searchAddress","map","_temp2","loading","trim","searchAddressHint","count","noPlaces","id","result_1","Number","result","roundPoint","t9","bound_3","t10","t11","t12","t8","parts","t13","next_1","removePoint","remove","t14","t6","t15","result_0","index","String","toFixed","isCodes","Array","isArray","every","AddressFieldEntry","props","fieldProps","placeholder","_placeholder","_c","styles"],"sources":["../../src/address/AddressField.tsx"],"sourcesContent":["import { X } from 'lucide-react';\nimport { type ReactNode, useRef, useState } from 'react';\n\nimport type { AddressPart, AddressValue, Field } from '@panneau/protocol';\nimport {\n DEFAULT_ADDRESS_REQUIRED_PARTS,\n getAddressRequiredParts,\n normalizePostalCode,\n} from '@panneau/protocol/runtime';\nimport { ComboBox, Fieldset, IconButton, usePanneauIntl } from '@panneau/ui';\n\nimport { CountryField } from '../country/CountryField';\nimport { OPEN_STREET_MAP_TILES } from '../location/LocationField';\nimport { LocationMap, type Point } from '../location/LocationMap';\nimport { SEARCH_MIN_LENGTH, useAddressSearch } from '../location/search';\nimport type { GeocodingResult, GeocodingSource, MapTiles } from '../location/types';\nimport { RegionField } from '../region/RegionField';\nimport { useFieldsContext } from '../shared/context';\nimport { cx } from '../shared/cx';\nimport { getFieldProps, getSetting, isBoolean, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport { BoundPart, type BoundPartProps } from '../shared/part';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport { TextField } from '../text/TextField';\nimport styles from './AddressField.module.css';\nimport { cleanAddress, endsWithRegion, isAddress } from './address';\n\nexport interface AddressFieldProps extends FieldProps<AddressValue> {\n /** Dot path of the value, the prefix of the paths of its parts. Defaults to `name`. */\n path?: string;\n /** The country of a new address (`CA`), set as soon as a part is typed. */\n country?: string | null;\n /** The countries the field allows. With one, the field doesn't show the country. */\n countries?: readonly string[];\n /** Countries shown first: `['CA', 'US']`. */\n preferred?: readonly string[];\n /** The parts a filled address must have, marked as required. */\n requiredParts?: readonly AddressPart[];\n /** Adds a map under the parts, and the point of the address to the value. */\n point?: boolean;\n /** The address search. Defaults to that of the `FieldsProvider`; without one, there is none. */\n geocoding?: GeocodingSource | null;\n /** The tiles of the map. Defaults to those of the `FieldsProvider`, or OpenStreetMap's. */\n tiles?: MapTiles;\n /** Zoom of the map on a point. Defaults to 16. */\n zoom?: number;\n}\n\nconst WORLD: Point = { lat: 20, lng: 0 };\n\n/** The type of the field of each part, for the binding of the fields context. */\nconst PART_TYPES: Readonly<Record<AddressPart, string>> = {\n country: 'country',\n street: 'text',\n unit: 'text',\n city: 'text',\n region: 'region',\n postalCode: 'text',\n};\n\n/**\n * A postal address (decision 0054): the country first, which sets the labels, the order and the\n * regions of the other parts, then the street, the unit, the city, the region and the postal\n * code, which is normalized for the country when it loses focus. With an address search, a place\n * found fills every part; with `point`, a map places the address. Each part shows the errors of\n * its own path (`address.postalCode`) in a form.\n */\nexport function AddressField({\n value,\n onChange,\n onBlur,\n path,\n name,\n country: countryProp,\n countries,\n preferred,\n requiredParts = DEFAULT_ADDRESS_REQUIRED_PARTS,\n point: withPoint = false,\n geocoding: geocodingProp,\n tiles: tilesProp,\n zoom = 16,\n label,\n description,\n errors,\n disabled,\n readOnly,\n required,\n className,\n}: AddressFieldProps) {\n const intl = usePanneauIntl();\n const { maps } = useFieldsContext();\n const geocoding = geocodingProp === undefined ? (maps?.geocoding ?? null) : geocodingProp;\n const tiles = tilesProp ?? maps?.tiles ?? OPEN_STREET_MAP_TILES;\n const editable = disabled !== true && readOnly !== true;\n const base = path ?? name ?? '';\n const onlyCountry = countries?.length === 1 ? countries[0] : undefined;\n const defaultCountry = onlyCountry ?? countryProp ?? null;\n const address: AddressValue = value ?? {};\n const country = address.country ?? defaultCountry;\n const filled = value !== null && value !== undefined;\n\n const change = (next: Partial<Record<keyof AddressValue, unknown>>) =>\n onChange?.(cleanAddress(next, defaultCountry));\n const setPart = (part: AddressPart, text: string | null) =>\n change({ ...address, [part]: text ?? undefined });\n // A region belongs to its country, and a postal code is written as in its country\n const setCountry = (next: string | null) =>\n change({\n ...address,\n country: next ?? undefined,\n region: next === country ? address.region : undefined,\n postalCode:\n address.postalCode !== undefined\n ? normalizePostalCode(address.postalCode, next)\n : undefined,\n });\n\n const [query, setQuery] = useState('');\n const [chosen, setChosen] = useState<GeocodingResult | null>(null);\n const search = useAddressSearch(\n editable && query !== chosen?.label ? geocoding : null,\n query,\n intl.locale,\n );\n // A place chosen moves focus to the unit, the part it doesn't fill, which closes the results\n const unitRef = useRef<HTMLDivElement>(null);\n const focusUnit = () =>\n window.requestAnimationFrame(() =>\n unitRef.current?.querySelector<HTMLInputElement>('input')?.focus(),\n );\n const places = (chosen !== null && query === chosen.label ? [chosen] : search.results).filter(\n (result) => result.address !== undefined,\n );\n\n const labels: Record<AddressPart, string> = {\n country: intl.formatMessage(messages.addressCountry),\n street: intl.formatMessage(messages.addressStreet),\n unit: intl.formatMessage(messages.addressUnit),\n city: intl.formatMessage(messages.addressCity),\n region: intl.formatMessage(\n country === 'CA'\n ? messages.addressProvince\n : country === 'US'\n ? messages.addressState\n : messages.addressRegion,\n ),\n postalCode: intl.formatMessage(\n country === 'US' ? messages.addressZipCode : messages.addressPostalCode,\n ),\n };\n\n const renderPart = (part: AddressPart, input: (bound: BoundPartProps) => ReactNode) => {\n const field: Field = { name: part, type: PART_TYPES[part], label: labels[part] };\n return (\n <div\n key={part}\n className={cx(styles.part, styles[part])}\n {...(part === 'unit' ? { ref: unitRef } : {})}\n >\n <BoundPart\n field={field}\n path={base !== '' ? `${base}.${part}` : part}\n {...(onBlur !== undefined ? { onBlur } : {})}\n render={input}\n />\n </div>\n );\n };\n const shared = (part: AddressPart, bound: BoundPartProps) => ({\n label: labels[part],\n errors: bound.errors ?? [],\n ...(disabled !== undefined ? { disabled } : {}),\n ...(readOnly !== undefined ? { readOnly } : {}),\n required: requiredParts.includes(part) && (required === true || filled),\n });\n const textPart = (part: 'street' | 'unit' | 'city', autoComplete: string) =>\n renderPart(part, (bound) => (\n <TextField\n {...shared(part, bound)}\n autoComplete={autoComplete}\n value={address[part] ?? null}\n onChange={(text) => setPart(part, text)}\n {...(bound.onBlur !== undefined ? { onBlur: bound.onBlur } : {})}\n />\n ));\n\n const region = renderPart('region', (bound) => (\n <RegionField\n {...shared('region', bound)}\n country={country}\n value={address.region ?? null}\n onChange={(text) => setPart('region', text)}\n {...(bound.onBlur !== undefined ? { onBlur: bound.onBlur } : {})}\n />\n ));\n const postalCode = renderPart('postalCode', (bound) => (\n <TextField\n {...shared('postalCode', bound)}\n autoComplete=\"postal-code\"\n value={address.postalCode ?? null}\n onChange={(text) => setPart('postalCode', text)}\n onBlur={() => {\n if (address.postalCode !== undefined) {\n const normalized = normalizePostalCode(address.postalCode, country);\n if (normalized !== address.postalCode) {\n setPart('postalCode', normalized);\n }\n }\n bound.onBlur?.();\n }}\n />\n ));\n const city = textPart('city', 'address-level2');\n const locality = endsWithRegion(country)\n ? [city, region, postalCode]\n : [postalCode, city, region];\n\n const point = address.point ?? null;\n return (\n <Fieldset\n legend={label}\n description={description}\n errors={errors}\n isRequired={required}\n isDisabled={disabled}\n className={className}\n >\n <div className={styles.address}>\n {editable && geocoding !== null ? (\n <ComboBox\n aria-label={intl.formatMessage(messages.searchAddress)}\n placeholder={intl.formatMessage(messages.searchAddress)}\n onInputChange={setQuery}\n items={places.map((result, index) => ({\n id: String(index),\n label: result.label,\n }))}\n isLoading={search.loading}\n menuTrigger=\"input\"\n emptyMessage={\n query.trim().length < SEARCH_MIN_LENGTH\n ? intl.formatMessage(messages.searchAddressHint, {\n count: SEARCH_MIN_LENGTH,\n })\n : intl.formatMessage(messages.noPlaces)\n }\n value={chosen !== null && query === chosen.label ? '0' : null}\n onChange={(id) => {\n const result = id !== null ? places[Number(id)] : undefined;\n if (result !== undefined) {\n setChosen(result);\n change({\n ...result.address,\n ...(withPoint ? { point: roundPoint(result) } : {}),\n });\n focusUnit();\n }\n }}\n />\n ) : null}\n <div className={styles.parts}>\n {onlyCountry === undefined\n ? renderPart('country', (bound) => (\n <CountryField\n {...shared('country', bound)}\n {...(countries !== undefined ? { countries } : {})}\n {...(preferred !== undefined ? { preferred } : {})}\n value={country}\n onChange={setCountry}\n {...(bound.onBlur !== undefined ? { onBlur: bound.onBlur } : {})}\n />\n ))\n : null}\n {textPart('street', 'address-line1')}\n {textPart('unit', 'address-line2')}\n {locality}\n </div>\n {withPoint ? (\n <div className={styles.map}>\n <LocationMap\n point={point}\n onChange={(next) => change({ ...address, point: roundPoint(next) })}\n tiles={tiles}\n center={point ?? WORLD}\n zoom={zoom}\n readOnly={!editable}\n label={intl.formatMessage(messages.map, {\n label: typeof label === 'string' ? label : '',\n })}\n />\n {editable && point !== null ? (\n <IconButton\n icon={X}\n label={intl.formatMessage(messages.removePoint)}\n className={styles.remove}\n onPress={() => change({ ...address, point: undefined })}\n />\n ) : null}\n </div>\n ) : null}\n </div>\n </Fieldset>\n );\n}\n\n/** A point to the sixth decimal, about ten centimetres. */\nfunction roundPoint(point: Point): Point {\n return { lat: Number(point.lat.toFixed(6)), lng: Number(point.lng.toFixed(6)) };\n}\n\nconst isCodes = (value: unknown): value is string[] =>\n Array.isArray(value) && value.every(isString);\n\n/**\n * The `address` type: settings `country`, `countries`, `preferred`, `required` (the parts a\n * filled address must have) and `point`, over the maps of the `FieldsProvider`.\n */\nexport function AddressFieldEntry(props: FieldEntryProps) {\n const { field } = props;\n const country = getSetting(field, 'country', isString);\n const countries = getSetting(field, 'countries', isCodes);\n const preferred = getSetting(field, 'preferred', isCodes);\n const point = getSetting(field, 'point', isBoolean);\n const { placeholder: _placeholder, ...fieldProps } = getFieldProps(props);\n return (\n <AddressField\n {...fieldProps}\n path={props.path}\n value={isAddress(props.value) ? props.value : null}\n onChange={props.onChange}\n requiredParts={getAddressRequiredParts(field)}\n {...(country !== undefined ? { country } : {})}\n {...(countries !== undefined ? { countries } : {})}\n {...(preferred !== undefined ? { preferred } : {})}\n {...(point !== undefined ? { point } : {})}\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import "./AddressField.css";
|
|
2
|
+
//#region src/address/AddressField.module.css
|
|
3
|
+
var address = "panneau-address-field-address";
|
|
4
|
+
var parts = "panneau-address-field-parts";
|
|
5
|
+
var part = "panneau-address-field-part";
|
|
6
|
+
var country = "panneau-address-field-country";
|
|
7
|
+
var street = "panneau-address-field-street";
|
|
8
|
+
var map = "panneau-address-field-map";
|
|
9
|
+
var remove = "panneau-address-field-remove";
|
|
10
|
+
var AddressField_module_default = {
|
|
11
|
+
address,
|
|
12
|
+
parts,
|
|
13
|
+
part,
|
|
14
|
+
country,
|
|
15
|
+
street,
|
|
16
|
+
map,
|
|
17
|
+
remove
|
|
18
|
+
};
|
|
19
|
+
//#endregion
|
|
20
|
+
export { address, country, AddressField_module_default as default, map, part, parts, remove, street };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=AddressField.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddressField.module.js","names":[],"sources":["../../src/address/AddressField.module.css"],"sourcesContent":["/* The search, the parts, then the map. */\n.address {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-3);\n}\n\n/* The parts on a grid of six columns: the street and its unit, then the city, the region and the\n postal code in the order of the country. */\n.parts {\n display: grid;\n grid-template-columns: repeat(6, minmax(0, 1fr));\n gap: var(--panneau-space-3);\n}\n\n.part {\n grid-column: span 2;\n min-width: 0;\n}\n\n.country {\n grid-column: 1 / -1;\n}\n\n.street {\n grid-column: span 4;\n}\n\n.map {\n display: flex;\n flex-direction: column;\n gap: var(--panneau-space-2);\n}\n\n.remove {\n align-self: flex-start;\n}\n\n@media (max-width: 40rem) {\n .part,\n .street {\n grid-column: 1 / -1;\n }\n}\n"],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AddressValue } from '@panneau/protocol';
|
|
2
|
+
export type { AddressValue };
|
|
3
|
+
/** Whether a value is an address: an object, whose parts are checked as they are read. */
|
|
4
|
+
export declare function isAddress(value: unknown): value is AddressValue;
|
|
5
|
+
/**
|
|
6
|
+
* Whether the addresses of a country end with the city, the region and the postal code
|
|
7
|
+
* (`Montréal QC H2X 1Y4`): those of the countries whose regions Panneau knows, and an address
|
|
8
|
+
* without a country. Elsewhere, the postal code comes first (`75001 Paris`).
|
|
9
|
+
*/
|
|
10
|
+
export declare function endsWithRegion(country: string | null | undefined): boolean;
|
|
11
|
+
/**
|
|
12
|
+
* An address without its empty parts, with `country` when it has a part and no country. `null`
|
|
13
|
+
* when nothing but a country is left.
|
|
14
|
+
*/
|
|
15
|
+
export declare function cleanAddress(address: Partial<Record<keyof AddressValue, unknown>>, country?: string | null): AddressValue | null;
|
|
16
|
+
/**
|
|
17
|
+
* An address on one line, in the order of its country, without the country:
|
|
18
|
+
* `1234 Rue Saint-Denis, App. 5, Montréal QC H2X 1Y4`, `12 rue de Rivoli, 75001 Paris`. The
|
|
19
|
+
* region is its code in Canada and the United States, as on envelopes, and its name in the locale
|
|
20
|
+
* for the other countries whose regions Panneau knows.
|
|
21
|
+
*/
|
|
22
|
+
export declare function formatAddress(address: AddressValue, locale: string): string;
|
|
23
|
+
//# sourceMappingURL=address.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src/address/address.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,0FAA0F;AAC1F,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAE1E;AAOD;;;GAGG;AACH,wBAAgB,YAAY,CACxB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,YAAY,EAAE,OAAO,CAAC,CAAC,EACrD,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,YAAY,GAAG,IAAI,CA0BrB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAkB3E"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { REGION_COUNTRIES, getRegionName } from "../region/regions.js";
|
|
2
|
+
import { ADDRESS_PARTS, normalizePostalCode } from "@panneau/protocol/runtime";
|
|
3
|
+
//#region src/address/address.ts
|
|
4
|
+
/** Whether a value is an address: an object, whose parts are checked as they are read. */
|
|
5
|
+
function isAddress(value) {
|
|
6
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Whether the addresses of a country end with the city, the region and the postal code
|
|
10
|
+
* (`Montréal QC H2X 1Y4`): those of the countries whose regions Panneau knows, and an address
|
|
11
|
+
* without a country. Elsewhere, the postal code comes first (`75001 Paris`).
|
|
12
|
+
*/
|
|
13
|
+
function endsWithRegion(country) {
|
|
14
|
+
return country === null || country === void 0 || REGION_COUNTRIES.includes(country);
|
|
15
|
+
}
|
|
16
|
+
/** The text of a part, trimmed, or `undefined` when it is empty or isn't text. */
|
|
17
|
+
function partText(value) {
|
|
18
|
+
return typeof value === "string" && value.trim() !== "" ? value.trim() : void 0;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* An address without its empty parts, with `country` when it has a part and no country. `null`
|
|
22
|
+
* when nothing but a country is left.
|
|
23
|
+
*/
|
|
24
|
+
function cleanAddress(address, country) {
|
|
25
|
+
const next = {};
|
|
26
|
+
ADDRESS_PARTS.forEach((part) => {
|
|
27
|
+
const text = typeof address[part] === "string" ? address[part] : void 0;
|
|
28
|
+
if (text !== void 0 && text.trim() !== "") next[part] = text;
|
|
29
|
+
});
|
|
30
|
+
const point = address.point;
|
|
31
|
+
if (point !== null && typeof point === "object" && typeof point.lat === "number" && typeof point.lng === "number") next.point = point;
|
|
32
|
+
if (Object.keys(next).every((part) => part === "country")) return null;
|
|
33
|
+
if (next.country === void 0 && country !== null && country !== void 0) next.country = country;
|
|
34
|
+
return next;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* An address on one line, in the order of its country, without the country:
|
|
38
|
+
* `1234 Rue Saint-Denis, App. 5, Montréal QC H2X 1Y4`, `12 rue de Rivoli, 75001 Paris`. The
|
|
39
|
+
* region is its code in Canada and the United States, as on envelopes, and its name in the locale
|
|
40
|
+
* for the other countries whose regions Panneau knows.
|
|
41
|
+
*/
|
|
42
|
+
function formatAddress(address, locale) {
|
|
43
|
+
const country = partText(address.country);
|
|
44
|
+
const regionCode = partText(address.region);
|
|
45
|
+
const region = regionCode !== void 0 && country !== "CA" && country !== "US" ? getRegionName(country, regionCode, locale) ?? regionCode : regionCode;
|
|
46
|
+
const postalCode = partText(address.postalCode) !== void 0 ? normalizePostalCode(address.postalCode ?? "", country) : void 0;
|
|
47
|
+
const city = partText(address.city);
|
|
48
|
+
const locality = endsWithRegion(country) ? [city, [region, postalCode].filter(Boolean).join(" ")] : [[postalCode, city].filter(Boolean).join(" "), region];
|
|
49
|
+
return [
|
|
50
|
+
partText(address.street),
|
|
51
|
+
partText(address.unit),
|
|
52
|
+
...locality
|
|
53
|
+
].filter((part) => part !== void 0 && part !== "").join(", ");
|
|
54
|
+
}
|
|
55
|
+
//#endregion
|
|
56
|
+
export { cleanAddress, endsWithRegion, formatAddress, isAddress };
|
|
57
|
+
|
|
58
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","names":["AddressValue","ADDRESS_PARTS","normalizePostalCode","REGION_COUNTRIES","getRegionName","isAddress","value","Array","isArray","endsWithRegion","country","undefined","includes","partText","trim","cleanAddress","address","Partial","Record","next","forEach","part","text","point","lat","lng","NonNullable","Object","keys","every","formatAddress","locale","regionCode","region","postalCode","city","locality","filter","Boolean","join","street","unit"],"sources":["../../src/address/address.ts"],"sourcesContent":["import type { AddressValue } from '@panneau/protocol';\nimport { ADDRESS_PARTS, normalizePostalCode } from '@panneau/protocol/runtime';\n\nimport { REGION_COUNTRIES, getRegionName } from '../region/regions';\n\nexport type { AddressValue };\n\n/** Whether a value is an address: an object, whose parts are checked as they are read. */\nexport function isAddress(value: unknown): value is AddressValue {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\n/**\n * Whether the addresses of a country end with the city, the region and the postal code\n * (`Montréal QC H2X 1Y4`): those of the countries whose regions Panneau knows, and an address\n * without a country. Elsewhere, the postal code comes first (`75001 Paris`).\n */\nexport function endsWithRegion(country: string | null | undefined): boolean {\n return country === null || country === undefined || REGION_COUNTRIES.includes(country);\n}\n\n/** The text of a part, trimmed, or `undefined` when it is empty or isn't text. */\nfunction partText(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() !== '' ? value.trim() : undefined;\n}\n\n/**\n * An address without its empty parts, with `country` when it has a part and no country. `null`\n * when nothing but a country is left.\n */\nexport function cleanAddress(\n address: Partial<Record<keyof AddressValue, unknown>>,\n country?: string | null,\n): AddressValue | null {\n const next: AddressValue = {};\n ADDRESS_PARTS.forEach((part) => {\n const text = typeof address[part] === 'string' ? (address[part] as string) : undefined;\n // Spaces typed at the end stay while the part is typed\n if (text !== undefined && text.trim() !== '') {\n next[part] = text;\n }\n });\n const point = address.point;\n if (\n point !== null &&\n typeof point === 'object' &&\n typeof (point as { lat?: unknown }).lat === 'number' &&\n typeof (point as { lng?: unknown }).lng === 'number'\n ) {\n next.point = point as NonNullable<AddressValue['point']>;\n }\n // A country alone, picked before the other parts, isn't an address yet\n if (Object.keys(next).every((part) => part === 'country')) {\n return null;\n }\n if (next.country === undefined && country !== null && country !== undefined) {\n next.country = country;\n }\n return next;\n}\n\n/**\n * An address on one line, in the order of its country, without the country:\n * `1234 Rue Saint-Denis, App. 5, Montréal QC H2X 1Y4`, `12 rue de Rivoli, 75001 Paris`. The\n * region is its code in Canada and the United States, as on envelopes, and its name in the locale\n * for the other countries whose regions Panneau knows.\n */\nexport function formatAddress(address: AddressValue, locale: string): string {\n const country = partText(address.country);\n const regionCode = partText(address.region);\n const region =\n regionCode !== undefined && country !== 'CA' && country !== 'US'\n ? (getRegionName(country, regionCode, locale) ?? regionCode)\n : regionCode;\n const postalCode =\n partText(address.postalCode) !== undefined\n ? normalizePostalCode(address.postalCode ?? '', country)\n : undefined;\n const city = partText(address.city);\n const locality = endsWithRegion(country)\n ? [city, [region, postalCode].filter(Boolean).join(' ')]\n : [[postalCode, city].filter(Boolean).join(' '), region];\n return [partText(address.street), partText(address.unit), ...locality]\n .filter((part) => part !== undefined && part !== '')\n .join(', ');\n}\n"],"mappings":";;;;AAQA,SAAgBK,UAAUC,OAAuC;CAC7D,OAAOA,UAAU,QAAQ,OAAOA,UAAU,YAAY,CAACC,MAAMC,QAAQF,KAAK;AAC9E;;;;;;AAOA,SAAgBG,eAAeC,SAA6C;CACxE,OAAOA,YAAY,QAAQA,YAAYC,KAAAA,KAAaR,iBAAiBS,SAASF,OAAO;AACzF;;AAGA,SAASG,SAASP,OAAoC;CAClD,OAAO,OAAOA,UAAU,YAAYA,MAAMQ,KAAK,MAAM,KAAKR,MAAMQ,KAAK,IAAIH,KAAAA;AAC7E;;;;;AAMA,SAAgBI,aACZC,SACAN,SACmB;CACnB,MAAMS,OAAqB,CAAC;CAC5BlB,cAAcmB,SAASC,SAAS;EAC5B,MAAMC,OAAO,OAAON,QAAQK,UAAU,WAAYL,QAAQK,QAAmBV,KAAAA;EAE7E,IAAIW,SAASX,KAAAA,KAAaW,KAAKR,KAAK,MAAM,IACtCK,KAAKE,QAAQC;CAErB,CAAC;CACD,MAAMC,QAAQP,QAAQO;CACtB,IACIA,UAAU,QACV,OAAOA,UAAU,YACjB,OAAQA,MAA4BC,QAAQ,YAC5C,OAAQD,MAA4BE,QAAQ,UAE5CN,KAAKI,QAAQA;CAGjB,IAAII,OAAOC,KAAKT,IAAI,CAAC,CAACU,OAAOR,SAASA,SAAS,SAAS,GACpD,OAAO;CAEX,IAAIF,KAAKT,YAAYC,KAAAA,KAAaD,YAAY,QAAQA,YAAYC,KAAAA,GAC9DQ,KAAKT,UAAUA;CAEnB,OAAOS;AACX;;;;;;;AAQA,SAAgBW,cAAcd,SAAuBe,QAAwB;CACzE,MAAMrB,UAAUG,SAASG,QAAQN,OAAO;CACxC,MAAMsB,aAAanB,SAASG,QAAQiB,MAAM;CAC1C,MAAMA,SACFD,eAAerB,KAAAA,KAAaD,YAAY,QAAQA,YAAY,OACrDN,cAAcM,SAASsB,YAAYD,MAAM,KAAKC,aAC/CA;CACV,MAAME,aACFrB,SAASG,QAAQkB,UAAU,MAAMvB,KAAAA,IAC3BT,oBAAoBc,QAAQkB,cAAc,IAAIxB,OAAO,IACrDC,KAAAA;CACV,MAAMwB,OAAOtB,SAASG,QAAQmB,IAAI;CAClC,MAAMC,WAAW3B,eAAeC,OAAO,IACjC,CAACyB,MAAM,CAACF,QAAQC,UAAU,CAAC,CAACG,OAAOC,OAAO,CAAC,CAACC,KAAK,GAAG,CAAC,IACrD,CAAC,CAACL,YAAYC,IAAI,CAAC,CAACE,OAAOC,OAAO,CAAC,CAACC,KAAK,GAAG,GAAGN,MAAM;CAC3D,OAAO;EAACpB,SAASG,QAAQwB,MAAM;EAAG3B,SAASG,QAAQyB,IAAI;EAAG,GAAGL;CAAQ,CAAC,CACjEC,QAAQhB,SAASA,SAASV,KAAAA,KAAaU,SAAS,EAAE,CAAC,CACnDkB,KAAK,IAAI;AAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/address/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzF,OAAO,EACH,KAAK,YAAY,EACjB,YAAY,EACZ,cAAc,EACd,aAAa,EACb,SAAS,GACZ,MAAM,WAAW,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { FieldEntryProps, FieldProps } from '../shared/types';
|
|
1
|
+
import type { FieldEntryProps, FieldProps } from '../shared/types.js';
|
|
2
2
|
export interface BooleanFieldProps extends Omit<FieldProps<boolean>, 'labelClassName'> {
|
|
3
3
|
/** `checkbox` (default) for a choice saved with the form, `switch` for an on and off setting. */
|
|
4
4
|
widget?: 'checkbox' | 'switch';
|