@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectField.js","names":["index","option","readOnly","value","controlClassName","label","description","errors","required","disabled","className","labelClassName","descriptionClassName","errorsClassName","options","selected","change","locked","_c","styles"],"sources":["../../src/select/SelectField.tsx"],"sourcesContent":["import type { Option } from '@panneau/protocol';\nimport { Checkbox, Fieldset, type OptionValue, RadioGroup, Select } from '@panneau/ui';\n\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport styles from './SelectField.module.css';\n\nexport type { OptionValue };\n\n/** Props of both single and multiple select fields. */\nexport interface SelectFieldBaseProps extends Omit<FieldProps<never>, 'value' | 'onChange'> {\n /** The choices. Same shape as the protocol's `Option`. */\n options: readonly Option[];\n placeholder?: string;\n controlClassName?: string;\n}\n\nexport interface SingleSelectFieldProps extends SelectFieldBaseProps {\n multiple?: false;\n value?: OptionValue | null;\n onChange?: (value: OptionValue | null) => void;\n /** `select` (default): a dropdown. `radios`: every choice visible. */\n widget?: 'select' | 'radios';\n}\n\nexport interface MultipleSelectFieldProps extends SelectFieldBaseProps {\n multiple: true;\n value?: readonly OptionValue[] | null;\n /** Called with the selected values, in the order of the options. An empty list is `null`. */\n onChange?: (value: OptionValue[] | null) => void;\n /** `select` (default): a dropdown. `checkboxes`: every choice visible. */\n widget?: 'select' | 'checkboxes';\n}\n\nexport type SelectFieldProps = SingleSelectFieldProps | MultipleSelectFieldProps;\n\n/**\n * A choice among options, or several with `multiple`, as a dropdown or as radios and checkboxes.\n * Values keep their type (strings, numbers, booleans).\n */\nexport function SelectField(props: SelectFieldProps) {\n const {\n options,\n label,\n description,\n errors,\n disabled,\n readOnly,\n required,\n placeholder,\n name,\n id,\n autoFocus,\n onBlur,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n } = props;\n const chrome = {\n label,\n description,\n errors,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n ...(props['aria-label'] !== undefined ? { 'aria-label': props['aria-label'] } : {}),\n };\n const locked = disabled === true || readOnly === true;\n\n if (props.multiple === true) {\n const selected = props.value ?? [];\n const change = (next: readonly OptionValue[]) => {\n // Keep the order of the options, whatever the order of the clicks.\n const ordered = options\n .map((option) => option.value)\n .filter((value) => next.includes(value));\n props.onChange?.(ordered.length > 0 ? ordered : null);\n };\n if (props.widget === 'checkboxes') {\n return (\n <Fieldset\n legend={label}\n description={description}\n errors={errors}\n isRequired={required}\n isDisabled={disabled}\n className={className}\n legendClassName={labelClassName}\n descriptionClassName={descriptionClassName}\n errorsClassName={errorsClassName}\n >\n <div className={styles.checkboxes}>\n {options.map((option, index) => (\n <Checkbox\n key={index}\n isSelected={selected.includes(option.value)}\n isDisabled={option.disabled}\n isReadOnly={readOnly}\n description={option.description}\n onChange={(checked) =>\n change(\n checked\n ? [...selected, option.value]\n : selected.filter((value) => value !== option.value),\n )\n }\n checkboxClassName={controlClassName}\n >\n {option.label}\n </Checkbox>\n ))}\n </div>\n </Fieldset>\n );\n }\n return (\n <Select\n {...chrome}\n multiple\n options={options}\n value={selected}\n onChange={change}\n isRequired={required}\n isDisabled={locked}\n {...(placeholder !== undefined ? { placeholder } : {})}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n {...(autoFocus !== undefined ? { autoFocus } : {})}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(controlClassName !== undefined ? { triggerClassName: controlClassName } : {})}\n />\n );\n }\n\n if (props.widget === 'radios') {\n return (\n <RadioGroup\n {...chrome}\n options={options}\n value={props.value ?? null}\n onChange={(value) => props.onChange?.(value)}\n isRequired={required}\n isDisabled={disabled}\n isReadOnly={readOnly}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(controlClassName !== undefined ? { radioClassName: controlClassName } : {})}\n />\n );\n }\n return (\n <Select\n {...chrome}\n options={options}\n value={props.value ?? null}\n onChange={(value) => props.onChange?.(value)}\n isRequired={required}\n isDisabled={locked}\n {...(placeholder !== undefined ? { placeholder } : {})}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n {...(autoFocus !== undefined ? { autoFocus } : {})}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(controlClassName !== undefined ? { triggerClassName: controlClassName } : {})}\n />\n );\n}\n\nfunction isOptionValue(value: unknown): value is OptionValue {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\n/**\n * The `select` type: `options`, `multiple`, and setting `widget` (`radios` for a single choice,\n * `checkboxes` for several).\n */\nexport function SelectFieldEntry(props: FieldEntryProps) {\n const { field } = props;\n const widget = getSetting(field, 'widget', isString);\n const options = field.options ?? [];\n if (field.multiple === true) {\n const value = Array.isArray(props.value) ? props.value.filter(isOptionValue) : null;\n return (\n <SelectField\n {...getFieldProps(props)}\n multiple\n options={options}\n value={value}\n onChange={props.onChange}\n {...(widget === 'checkboxes' ? { widget } : {})}\n />\n );\n }\n return (\n <SelectField\n {...getFieldProps(props)}\n options={options}\n value={isOptionValue(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(widget === 'radios' ? { widget } : {})}\n />\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SelectField.js","names":["Option","Checkbox","Fieldset","OptionValue","RadioGroup","Select","getFieldProps","getSetting","isString","FieldEntryProps","FieldProps","styles","SelectFieldBaseProps","Omit","options","placeholder","controlClassName","SingleSelectFieldProps","multiple","value","onChange","widget","MultipleSelectFieldProps","SelectFieldProps","SelectField","props","$","_c","label","description","errors","disabled","readOnly","required","name","id","autoFocus","onBlur","className","labelClassName","descriptionClassName","errorsClassName","t0","undefined","t1","chrome","locked","t2","selected","t3","next","ordered","map","_temp","filter","includes","length","change","t4","t5","option_0","index","option","checked","value_0","checkboxes","t6","t7","t8","t9","triggerClassName","t10","value_1","radioClassName","value_2","isOptionValue","SelectFieldEntry","field","Array","isArray","_c","styles"],"sources":["../../src/select/SelectField.tsx"],"sourcesContent":["import type { Option } from '@panneau/protocol';\nimport { Checkbox, Fieldset, type OptionValue, RadioGroup, Select } from '@panneau/ui';\n\nimport { getFieldProps, getSetting, isString } from '../shared/entry';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport styles from './SelectField.module.css';\n\nexport type { OptionValue };\n\n/** Props of both single and multiple select fields. */\nexport interface SelectFieldBaseProps extends Omit<FieldProps<never>, 'value' | 'onChange'> {\n /** The choices. Same shape as the protocol's `Option`. */\n options: readonly Option[];\n placeholder?: string;\n controlClassName?: string;\n}\n\nexport interface SingleSelectFieldProps extends SelectFieldBaseProps {\n multiple?: false;\n value?: OptionValue | null;\n onChange?: (value: OptionValue | null) => void;\n /** `select` (default): a dropdown. `radios`: every choice visible. */\n widget?: 'select' | 'radios';\n}\n\nexport interface MultipleSelectFieldProps extends SelectFieldBaseProps {\n multiple: true;\n value?: readonly OptionValue[] | null;\n /** Called with the selected values, in the order of the options. An empty list is `null`. */\n onChange?: (value: OptionValue[] | null) => void;\n /** `select` (default): a dropdown. `checkboxes`: every choice visible. */\n widget?: 'select' | 'checkboxes';\n}\n\nexport type SelectFieldProps = SingleSelectFieldProps | MultipleSelectFieldProps;\n\n/**\n * A choice among options, or several with `multiple`, as a dropdown or as radios and checkboxes.\n * Values keep their type (strings, numbers, booleans).\n */\nexport function SelectField(props: SelectFieldProps) {\n const {\n options,\n label,\n description,\n errors,\n disabled,\n readOnly,\n required,\n placeholder,\n name,\n id,\n autoFocus,\n onBlur,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n } = props;\n const chrome = {\n label,\n description,\n errors,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n ...(props['aria-label'] !== undefined ? { 'aria-label': props['aria-label'] } : {}),\n };\n const locked = disabled === true || readOnly === true;\n\n if (props.multiple === true) {\n const selected = props.value ?? [];\n const change = (next: readonly OptionValue[]) => {\n // Keep the order of the options, whatever the order of the clicks.\n const ordered = options\n .map((option) => option.value)\n .filter((value) => next.includes(value));\n props.onChange?.(ordered.length > 0 ? ordered : null);\n };\n if (props.widget === 'checkboxes') {\n return (\n <Fieldset\n legend={label}\n description={description}\n errors={errors}\n isRequired={required}\n isDisabled={disabled}\n className={className}\n legendClassName={labelClassName}\n descriptionClassName={descriptionClassName}\n errorsClassName={errorsClassName}\n >\n <div className={styles.checkboxes}>\n {options.map((option, index) => (\n <Checkbox\n key={index}\n isSelected={selected.includes(option.value)}\n isDisabled={option.disabled}\n isReadOnly={readOnly}\n description={option.description}\n onChange={(checked) =>\n change(\n checked\n ? [...selected, option.value]\n : selected.filter((value) => value !== option.value),\n )\n }\n checkboxClassName={controlClassName}\n >\n {option.label}\n </Checkbox>\n ))}\n </div>\n </Fieldset>\n );\n }\n return (\n <Select\n {...chrome}\n multiple\n options={options}\n value={selected}\n onChange={change}\n isRequired={required}\n isDisabled={locked}\n {...(placeholder !== undefined ? { placeholder } : {})}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n {...(autoFocus !== undefined ? { autoFocus } : {})}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(controlClassName !== undefined ? { triggerClassName: controlClassName } : {})}\n />\n );\n }\n\n if (props.widget === 'radios') {\n return (\n <RadioGroup\n {...chrome}\n options={options}\n value={props.value ?? null}\n onChange={(value) => props.onChange?.(value)}\n isRequired={required}\n isDisabled={disabled}\n isReadOnly={readOnly}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(controlClassName !== undefined ? { radioClassName: controlClassName } : {})}\n />\n );\n }\n return (\n <Select\n {...chrome}\n options={options}\n value={props.value ?? null}\n onChange={(value) => props.onChange?.(value)}\n isRequired={required}\n isDisabled={locked}\n {...(placeholder !== undefined ? { placeholder } : {})}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n {...(autoFocus !== undefined ? { autoFocus } : {})}\n {...(onBlur !== undefined ? { onBlur } : {})}\n {...(controlClassName !== undefined ? { triggerClassName: controlClassName } : {})}\n />\n );\n}\n\nfunction isOptionValue(value: unknown): value is OptionValue {\n return typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean';\n}\n\n/**\n * The `select` type: `options`, `multiple`, and setting `widget` (`radios` for a single choice,\n * `checkboxes` for several).\n */\nexport function SelectFieldEntry(props: FieldEntryProps) {\n const { field } = props;\n const widget = getSetting(field, 'widget', isString);\n const options = field.options ?? [];\n if (field.multiple === true) {\n const value = Array.isArray(props.value) ? props.value.filter(isOptionValue) : null;\n return (\n <SelectField\n {...getFieldProps(props)}\n multiple\n options={options}\n value={value}\n onChange={props.onChange}\n {...(widget === 'checkboxes' ? { widget } : {})}\n />\n );\n }\n return (\n <SelectField\n {...getFieldProps(props)}\n options={options}\n value={isOptionValue(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(widget === 'radios' ? { widget } : {})}\n />\n );\n}\n"],"mappings":"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"}
|
package/dist/select/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { type MultipleSelectFieldProps, type SelectFieldBaseProps, type OptionValue, SelectField, SelectFieldEntry, type SelectFieldProps, type SingleSelectFieldProps, } from './SelectField';
|
|
1
|
+
export { type MultipleSelectFieldProps, type SelectFieldBaseProps, type OptionValue, SelectField, SelectFieldEntry, type SelectFieldProps, type SingleSelectFieldProps, } from './SelectField.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type CompoundFieldEntry } from '../compound/compound.js';
|
|
2
|
+
/**
|
|
3
|
+
* The `sessions` type (decision 0065): a compound field whose items are the `dates` of a session
|
|
4
|
+
* (a `daterange`) and its `venue` (a relation). The definition gives the sub-fields: those of a
|
|
5
|
+
* site (a price, a link to the tickets) come after these.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SessionsFieldEntry: CompoundFieldEntry;
|
|
8
|
+
/** The `sessions` type, as a `@panneau/core` plugin. */
|
|
9
|
+
export declare const sessionsPlugin: {
|
|
10
|
+
id: string;
|
|
11
|
+
fields: {
|
|
12
|
+
sessions: CompoundFieldEntry;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=SessionsField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionsField.d.ts","sourceRoot":"","sources":["../../src/sessions/SessionsField.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,kBAAkB,EAAkC,MAAM,sBAAsB,CAAC;AAM/F;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBA+B/B,CAAC;AAEH,wDAAwD;AACxD,eAAO,MAAM,cAAc;;;;;CAG1B,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { formatDateRange, getDateRangeSettings } from "../daterange/range.js";
|
|
2
|
+
import { toReferences } from "../shared/relation.js";
|
|
3
|
+
import { defineCompoundField, restParts } from "../compound/compound.js";
|
|
4
|
+
import Compound_module_default from "../compound/Compound.module.js";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/sessions/SessionsField.tsx
|
|
7
|
+
var PLACED = ["dates", "venue"];
|
|
8
|
+
/**
|
|
9
|
+
* The `sessions` type (decision 0065): a compound field whose items are the `dates` of a session
|
|
10
|
+
* (a `daterange`) and its `venue` (a relation). The definition gives the sub-fields: those of a
|
|
11
|
+
* site (a price, a link to the tickets) come after these.
|
|
12
|
+
*/
|
|
13
|
+
var SessionsFieldEntry = defineCompoundField({
|
|
14
|
+
layout: ({ parts }) => /* @__PURE__ */ jsxs("div", {
|
|
15
|
+
className: Compound_module_default.stack,
|
|
16
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
17
|
+
className: Compound_module_default.row,
|
|
18
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
19
|
+
className: `${Compound_module_default.part} ${Compound_module_default.wide}`,
|
|
20
|
+
children: parts.dates
|
|
21
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
22
|
+
className: Compound_module_default.part,
|
|
23
|
+
children: parts.venue
|
|
24
|
+
})]
|
|
25
|
+
}), restParts(parts, PLACED).length > 0 ? /* @__PURE__ */ jsx("div", {
|
|
26
|
+
className: Compound_module_default.row,
|
|
27
|
+
children: restParts(parts, PLACED).map((part, index) => /* @__PURE__ */ jsx("div", {
|
|
28
|
+
className: Compound_module_default.part,
|
|
29
|
+
children: part
|
|
30
|
+
}, index))
|
|
31
|
+
}) : null]
|
|
32
|
+
}),
|
|
33
|
+
summarize: (session, { field, locale }) => {
|
|
34
|
+
const dates = field.fields?.find((part) => part.name === "dates");
|
|
35
|
+
const range = formatDateRange(session.dates, locale, getDateRangeSettings(dates?.settings).timeZone);
|
|
36
|
+
const venue = toReferences(session.venue)[0]?.label;
|
|
37
|
+
const texts = [range?.text, venue].filter((text) => text !== void 0 && text !== "");
|
|
38
|
+
return texts.length > 0 ? texts.join(" · ") : null;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
/** The `sessions` type, as a `@panneau/core` plugin. */
|
|
42
|
+
var sessionsPlugin = {
|
|
43
|
+
id: "panneau.sessions",
|
|
44
|
+
fields: { sessions: SessionsFieldEntry }
|
|
45
|
+
};
|
|
46
|
+
//#endregion
|
|
47
|
+
export { SessionsFieldEntry, sessionsPlugin };
|
|
48
|
+
|
|
49
|
+
//# sourceMappingURL=SessionsField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionsField.js","names":["styles","CompoundFieldEntry","defineCompoundField","restParts","formatDateRange","getDateRangeSettings","toReferences","PLACED","SessionsFieldEntry","layout","parts","stack","row","part","wide","dates","venue","length","map","index","summarize","session","field","locale","fields","find","name","range","settings","timeZone","label","texts","text","filter","undefined","join","sessionsPlugin","id","sessions","styles"],"sources":["../../src/sessions/SessionsField.tsx"],"sourcesContent":["import styles from '../compound/Compound.module.css';\nimport { type CompoundFieldEntry, defineCompoundField, restParts } from '../compound/compound';\nimport { formatDateRange, getDateRangeSettings } from '../daterange/range';\nimport { toReferences } from '../shared/relation';\n\nconst PLACED = ['dates', 'venue'];\n\n/**\n * The `sessions` type (decision 0065): a compound field whose items are the `dates` of a session\n * (a `daterange`) and its `venue` (a relation). The definition gives the sub-fields: those of a\n * site (a price, a link to the tickets) come after these.\n */\nexport const SessionsFieldEntry: CompoundFieldEntry = defineCompoundField({\n layout: ({ parts }) => (\n <div className={styles.stack}>\n <div className={styles.row}>\n <div className={`${styles.part} ${styles.wide}`}>{parts.dates}</div>\n <div className={styles.part}>{parts.venue}</div>\n </div>\n {restParts(parts, PLACED).length > 0 ? (\n <div className={styles.row}>\n {restParts(parts, PLACED).map((part, index) => (\n <div key={index} className={styles.part}>\n {part}\n </div>\n ))}\n </div>\n ) : null}\n </div>\n ),\n summarize: (session, { field, locale }) => {\n const dates = field.fields?.find((part) => part.name === 'dates');\n const range = formatDateRange(\n session.dates,\n locale,\n getDateRangeSettings(dates?.settings).timeZone,\n );\n const venue = toReferences(session.venue)[0]?.label;\n const texts = [range?.text, venue].filter(\n (text): text is string => text !== undefined && text !== '',\n );\n return texts.length > 0 ? texts.join(' · ') : null;\n },\n});\n\n/** The `sessions` type, as a `@panneau/core` plugin. */\nexport const sessionsPlugin = {\n id: 'panneau.sessions',\n fields: { sessions: SessionsFieldEntry },\n};\n"],"mappings":";;;;;;AAKA,IAAMO,SAAS,CAAC,SAAS,OAAO;;;;;;AAOhC,IAAaC,qBAAyCN,oBAAoB;CACtEO,SAAS,EAAEC,YACP,qBAAC,OAAD;EAAK,WAAWV,wBAAOW;EAAvB,UAAA,CACI,qBAAC,OAAD;GAAK,WAAWX,wBAAOY;GAAvB,UAAA,CACI,oBAAC,OAAD;IAAK,WAAW,GAAGZ,wBAAOa,KAAI,GAAIb,wBAAOc;IAASJ,UAAAA,MAAMK;GAAW,CAAA,GACnE,oBAAC,OAAD;IAAK,WAAWf,wBAAOa;IAAOH,UAAAA,MAAMM;GAAW,CAAA,CAC9C;EACJb,CAAAA,GAAAA,UAAUO,OAAOH,MAAM,CAAC,CAACU,SAAS,IAC/B,oBAAC,OAAD;GAAK,WAAWjB,wBAAOY;GAClBT,UAAAA,UAAUO,OAAOH,MAAM,CAAC,CAACW,KAAKL,MAAMM,UACjC,oBAAC,OAAD;IAAiB,WAAWnB,wBAAOa;IAC9BA,UAAAA;GACA,GAFKM,KAEL,CACR;EACA,CAAA,IACL,IACH;;CAETC,YAAYC,SAAS,EAAEC,OAAOC,aAAa;EACvC,MAAMR,QAAQO,MAAME,QAAQC,MAAMZ,SAASA,KAAKa,SAAS,OAAO;EAChE,MAAMC,QAAQvB,gBACViB,QAAQN,OACRQ,QACAlB,qBAAqBU,OAAOa,QAAQ,CAAC,CAACC,QAC1C;EACA,MAAMb,QAAQV,aAAae,QAAQL,KAAK,CAAC,CAAC,EAAE,EAAEc;EAC9C,MAAMC,QAAQ,CAACJ,OAAOK,MAAMhB,KAAK,CAAC,CAACiB,QAC9BD,SAAyBA,SAASE,KAAAA,KAAaF,SAAS,EAC7D;EACA,OAAOD,MAAMd,SAAS,IAAIc,MAAMI,KAAK,KAAK,IAAI;CAClD;AACJ,CAAC;;AAGD,IAAaC,iBAAiB;CAC1BC,IAAI;CACJb,QAAQ,EAAEc,UAAU9B,mBAAmB;AAC3C"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { SessionsFieldEntry, sessionsPlugin } from './SessionsField.js';
|
|
2
|
+
export type { CompoundFieldEntry, CompoundSummary, CompoundSummaryContext, } from '../compound/compound.js';
|
|
3
|
+
export type { FieldEntry, FieldEntryProps } from '../shared/types.js';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sessions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACrE,YAAY,EACR,kBAAkB,EAClB,eAAe,EACf,sBAAsB,GACzB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SessionsFieldEntry, sessionsPlugin } from "./SessionsField.js";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { FieldProps } from './types.js';
|
|
3
|
+
/** A choice of a code combo box: a code, its name, and a decorative prefix (a flag). */
|
|
4
|
+
export interface CodeChoice {
|
|
5
|
+
code: string;
|
|
6
|
+
name: string;
|
|
7
|
+
prefix?: ReactNode;
|
|
8
|
+
}
|
|
9
|
+
export interface CodeComboBoxProps extends Omit<FieldProps<string>, 'onChange'> {
|
|
10
|
+
choices: readonly CodeChoice[];
|
|
11
|
+
onChange?: ((value: string | null) => void) | undefined;
|
|
12
|
+
placeholder?: string | undefined;
|
|
13
|
+
emptyMessage: string;
|
|
14
|
+
controlClassName?: string | undefined;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A combo box of codes shown by their names (countries, regions): typing filters them by the start
|
|
18
|
+
* of a word of their name, or by their code. A value outside the choices shows as it is.
|
|
19
|
+
*/
|
|
20
|
+
export declare function CodeComboBox({ choices, value, onChange, onBlur, label, description, errors, disabled, readOnly, required, placeholder, name, id, autoFocus, emptyMessage, className, labelClassName, descriptionClassName, errorsClassName, controlClassName, ...props }: CodeComboBoxProps): import("react").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=CodeComboBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeComboBox.d.ts","sourceRoot":"","sources":["../../src/shared/CodeComboBox.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE1C,wFAAwF;AACxF,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC3E,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAwBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EACzB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,WAAW,EACX,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,EAAE,EACF,SAAS,EACT,YAAY,EACZ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,GAAG,KAAK,EACX,EAAE,iBAAiB,+BA0DnB"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { c } from "react/compiler-runtime";
|
|
2
|
+
import { ComboBox } from "@panneau/ui";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
//#region src/shared/CodeComboBox.tsx
|
|
6
|
+
/** Lower case, without accents: `Québec` matches `quebec`. */
|
|
7
|
+
function normalize(text) {
|
|
8
|
+
return text.normalize("NFD").replace(/\p{Diacritic}/gu, "").toLowerCase();
|
|
9
|
+
}
|
|
10
|
+
function matches(choice, query) {
|
|
11
|
+
const text = normalize(query.trim());
|
|
12
|
+
if (text === "") return true;
|
|
13
|
+
return normalize(choice.name).split(/[\s'’-]+/).some((word) => word.startsWith(text)) || normalize(choice.name).startsWith(text) || choice.code.toLowerCase() === text;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A combo box of codes shown by their names (countries, regions): typing filters them by the start
|
|
17
|
+
* of a word of their name, or by their code. A value outside the choices shows as it is.
|
|
18
|
+
*/
|
|
19
|
+
function CodeComboBox(t0) {
|
|
20
|
+
const $ = c(71);
|
|
21
|
+
let autoFocus;
|
|
22
|
+
let choices;
|
|
23
|
+
let className;
|
|
24
|
+
let controlClassName;
|
|
25
|
+
let description;
|
|
26
|
+
let descriptionClassName;
|
|
27
|
+
let disabled;
|
|
28
|
+
let emptyMessage;
|
|
29
|
+
let errors;
|
|
30
|
+
let errorsClassName;
|
|
31
|
+
let id;
|
|
32
|
+
let label;
|
|
33
|
+
let labelClassName;
|
|
34
|
+
let name;
|
|
35
|
+
let onBlur;
|
|
36
|
+
let onChange;
|
|
37
|
+
let placeholder;
|
|
38
|
+
let props;
|
|
39
|
+
let readOnly;
|
|
40
|
+
let required;
|
|
41
|
+
let value;
|
|
42
|
+
if ($[0] !== t0) {
|
|
43
|
+
({choices, value, onChange, onBlur, label, description, errors, disabled, readOnly, required, placeholder, name, id, autoFocus, emptyMessage, className, labelClassName, descriptionClassName, errorsClassName, controlClassName, ...props} = t0);
|
|
44
|
+
$[0] = t0;
|
|
45
|
+
$[1] = autoFocus;
|
|
46
|
+
$[2] = choices;
|
|
47
|
+
$[3] = className;
|
|
48
|
+
$[4] = controlClassName;
|
|
49
|
+
$[5] = description;
|
|
50
|
+
$[6] = descriptionClassName;
|
|
51
|
+
$[7] = disabled;
|
|
52
|
+
$[8] = emptyMessage;
|
|
53
|
+
$[9] = errors;
|
|
54
|
+
$[10] = errorsClassName;
|
|
55
|
+
$[11] = id;
|
|
56
|
+
$[12] = label;
|
|
57
|
+
$[13] = labelClassName;
|
|
58
|
+
$[14] = name;
|
|
59
|
+
$[15] = onBlur;
|
|
60
|
+
$[16] = onChange;
|
|
61
|
+
$[17] = placeholder;
|
|
62
|
+
$[18] = props;
|
|
63
|
+
$[19] = readOnly;
|
|
64
|
+
$[20] = required;
|
|
65
|
+
$[21] = value;
|
|
66
|
+
} else {
|
|
67
|
+
autoFocus = $[1];
|
|
68
|
+
choices = $[2];
|
|
69
|
+
className = $[3];
|
|
70
|
+
controlClassName = $[4];
|
|
71
|
+
description = $[5];
|
|
72
|
+
descriptionClassName = $[6];
|
|
73
|
+
disabled = $[7];
|
|
74
|
+
emptyMessage = $[8];
|
|
75
|
+
errors = $[9];
|
|
76
|
+
errorsClassName = $[10];
|
|
77
|
+
id = $[11];
|
|
78
|
+
label = $[12];
|
|
79
|
+
labelClassName = $[13];
|
|
80
|
+
name = $[14];
|
|
81
|
+
onBlur = $[15];
|
|
82
|
+
onChange = $[16];
|
|
83
|
+
placeholder = $[17];
|
|
84
|
+
props = $[18];
|
|
85
|
+
readOnly = $[19];
|
|
86
|
+
required = $[20];
|
|
87
|
+
value = $[21];
|
|
88
|
+
}
|
|
89
|
+
const [query, setQuery] = useState(null);
|
|
90
|
+
const current = value !== null && value !== void 0 && value !== "" ? value : null;
|
|
91
|
+
let t1;
|
|
92
|
+
if ($[22] !== choices || $[23] !== current) {
|
|
93
|
+
t1 = current !== null ? choices.find((choice) => choice.code === current) : null;
|
|
94
|
+
$[22] = choices;
|
|
95
|
+
$[23] = current;
|
|
96
|
+
$[24] = t1;
|
|
97
|
+
} else t1 = $[24];
|
|
98
|
+
const selected = t1;
|
|
99
|
+
let t2;
|
|
100
|
+
if ($[25] !== choices || $[26] !== current || $[27] !== query || $[28] !== selected) {
|
|
101
|
+
t2 = (query !== null ? choices.filter((choice_0) => matches(choice_0, query)) : choices).concat(current !== null && selected === void 0 && query === null ? [{
|
|
102
|
+
code: current,
|
|
103
|
+
name: current
|
|
104
|
+
}] : []).map(_temp);
|
|
105
|
+
$[25] = choices;
|
|
106
|
+
$[26] = current;
|
|
107
|
+
$[27] = query;
|
|
108
|
+
$[28] = selected;
|
|
109
|
+
$[29] = t2;
|
|
110
|
+
} else t2 = $[29];
|
|
111
|
+
const items = t2;
|
|
112
|
+
let t3;
|
|
113
|
+
if ($[30] !== errors) {
|
|
114
|
+
t3 = errors ?? [];
|
|
115
|
+
$[30] = errors;
|
|
116
|
+
$[31] = t3;
|
|
117
|
+
} else t3 = $[31];
|
|
118
|
+
let t4;
|
|
119
|
+
if ($[32] !== controlClassName) {
|
|
120
|
+
t4 = controlClassName !== void 0 ? { controlClassName } : {};
|
|
121
|
+
$[32] = controlClassName;
|
|
122
|
+
$[33] = t4;
|
|
123
|
+
} else t4 = $[33];
|
|
124
|
+
let t5;
|
|
125
|
+
if ($[34] !== props) {
|
|
126
|
+
t5 = props["aria-label"] !== void 0 ? { "aria-label": props["aria-label"] } : {};
|
|
127
|
+
$[34] = props;
|
|
128
|
+
$[35] = t5;
|
|
129
|
+
} else t5 = $[35];
|
|
130
|
+
let t6;
|
|
131
|
+
if ($[36] !== name) {
|
|
132
|
+
t6 = name !== void 0 ? { name } : {};
|
|
133
|
+
$[36] = name;
|
|
134
|
+
$[37] = t6;
|
|
135
|
+
} else t6 = $[37];
|
|
136
|
+
let t7;
|
|
137
|
+
if ($[38] !== id) {
|
|
138
|
+
t7 = id !== void 0 ? { id } : {};
|
|
139
|
+
$[38] = id;
|
|
140
|
+
$[39] = t7;
|
|
141
|
+
} else t7 = $[39];
|
|
142
|
+
const t8 = query === null ? selected?.prefix : void 0;
|
|
143
|
+
const t9 = query ?? selected?.name ?? current ?? "";
|
|
144
|
+
let t10;
|
|
145
|
+
let t11;
|
|
146
|
+
if ($[40] !== current || $[41] !== onChange) {
|
|
147
|
+
t10 = (text) => {
|
|
148
|
+
setQuery(text);
|
|
149
|
+
if (text === "" && current !== null) onChange?.(null);
|
|
150
|
+
};
|
|
151
|
+
t11 = (code) => {
|
|
152
|
+
setQuery(null);
|
|
153
|
+
if (code !== null && code !== current) onChange?.(code);
|
|
154
|
+
};
|
|
155
|
+
$[40] = current;
|
|
156
|
+
$[41] = onChange;
|
|
157
|
+
$[42] = t10;
|
|
158
|
+
$[43] = t11;
|
|
159
|
+
} else {
|
|
160
|
+
t10 = $[42];
|
|
161
|
+
t11 = $[43];
|
|
162
|
+
}
|
|
163
|
+
let t12;
|
|
164
|
+
if ($[44] !== onBlur) {
|
|
165
|
+
t12 = () => {
|
|
166
|
+
setQuery(null);
|
|
167
|
+
onBlur?.();
|
|
168
|
+
};
|
|
169
|
+
$[44] = onBlur;
|
|
170
|
+
$[45] = t12;
|
|
171
|
+
} else t12 = $[45];
|
|
172
|
+
let t13;
|
|
173
|
+
if ($[46] !== autoFocus || $[47] !== className || $[48] !== current || $[49] !== description || $[50] !== descriptionClassName || $[51] !== disabled || $[52] !== emptyMessage || $[53] !== errorsClassName || $[54] !== items || $[55] !== label || $[56] !== labelClassName || $[57] !== placeholder || $[58] !== readOnly || $[59] !== required || $[60] !== t10 || $[61] !== t11 || $[62] !== t12 || $[63] !== t3 || $[64] !== t4 || $[65] !== t5 || $[66] !== t6 || $[67] !== t7 || $[68] !== t8 || $[69] !== t9) {
|
|
174
|
+
t13 = /* @__PURE__ */ jsx(ComboBox, {
|
|
175
|
+
label,
|
|
176
|
+
description,
|
|
177
|
+
errors: t3,
|
|
178
|
+
isRequired: required,
|
|
179
|
+
isDisabled: disabled,
|
|
180
|
+
isReadOnly: readOnly,
|
|
181
|
+
autoFocus,
|
|
182
|
+
className,
|
|
183
|
+
labelClassName,
|
|
184
|
+
descriptionClassName,
|
|
185
|
+
errorsClassName,
|
|
186
|
+
...t4,
|
|
187
|
+
...t5,
|
|
188
|
+
...t6,
|
|
189
|
+
...t7,
|
|
190
|
+
items,
|
|
191
|
+
value: current,
|
|
192
|
+
prefix: t8,
|
|
193
|
+
inputValue: t9,
|
|
194
|
+
onInputChange: t10,
|
|
195
|
+
onChange: t11,
|
|
196
|
+
onBlur: t12,
|
|
197
|
+
placeholder,
|
|
198
|
+
emptyMessage
|
|
199
|
+
});
|
|
200
|
+
$[46] = autoFocus;
|
|
201
|
+
$[47] = className;
|
|
202
|
+
$[48] = current;
|
|
203
|
+
$[49] = description;
|
|
204
|
+
$[50] = descriptionClassName;
|
|
205
|
+
$[51] = disabled;
|
|
206
|
+
$[52] = emptyMessage;
|
|
207
|
+
$[53] = errorsClassName;
|
|
208
|
+
$[54] = items;
|
|
209
|
+
$[55] = label;
|
|
210
|
+
$[56] = labelClassName;
|
|
211
|
+
$[57] = placeholder;
|
|
212
|
+
$[58] = readOnly;
|
|
213
|
+
$[59] = required;
|
|
214
|
+
$[60] = t10;
|
|
215
|
+
$[61] = t11;
|
|
216
|
+
$[62] = t12;
|
|
217
|
+
$[63] = t3;
|
|
218
|
+
$[64] = t4;
|
|
219
|
+
$[65] = t5;
|
|
220
|
+
$[66] = t6;
|
|
221
|
+
$[67] = t7;
|
|
222
|
+
$[68] = t8;
|
|
223
|
+
$[69] = t9;
|
|
224
|
+
$[70] = t13;
|
|
225
|
+
} else t13 = $[70];
|
|
226
|
+
return t13;
|
|
227
|
+
}
|
|
228
|
+
function _temp(choice_1) {
|
|
229
|
+
return {
|
|
230
|
+
id: choice_1.code,
|
|
231
|
+
label: choice_1.name,
|
|
232
|
+
...choice_1.prefix !== void 0 ? { prefix: choice_1.prefix } : {}
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
//#endregion
|
|
236
|
+
export { CodeComboBox };
|
|
237
|
+
|
|
238
|
+
//# sourceMappingURL=CodeComboBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeComboBox.js","names":["ReactNode","useState","ComboBox","FieldProps","CodeChoice","code","name","prefix","CodeComboBoxProps","Omit","choices","onChange","value","placeholder","emptyMessage","controlClassName","normalize","text","replace","toLowerCase","matches","choice","query","trim","split","some","word","startsWith","CodeComboBox","t0","$","_c","autoFocus","className","description","descriptionClassName","disabled","errors","errorsClassName","id","label","labelClassName","onBlur","props","readOnly","required","setQuery","current","undefined","t1","find","selected","t2","filter","choice_0","concat","map","_temp","items","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","choice_1","_c"],"sources":["../../src/shared/CodeComboBox.tsx"],"sourcesContent":["import { type ReactNode, useState } from 'react';\n\nimport { ComboBox } from '@panneau/ui';\n\nimport type { FieldProps } from './types';\n\n/** A choice of a code combo box: a code, its name, and a decorative prefix (a flag). */\nexport interface CodeChoice {\n code: string;\n name: string;\n prefix?: ReactNode;\n}\n\nexport interface CodeComboBoxProps extends Omit<FieldProps<string>, 'onChange'> {\n choices: readonly CodeChoice[];\n onChange?: ((value: string | null) => void) | undefined;\n placeholder?: string | undefined;\n emptyMessage: string;\n controlClassName?: string | undefined;\n}\n\n/** Lower case, without accents: `Québec` matches `quebec`. */\nfunction normalize(text: string): string {\n return text\n .normalize('NFD')\n .replace(/\\p{Diacritic}/gu, '')\n .toLowerCase();\n}\n\nfunction matches(choice: CodeChoice, query: string): boolean {\n const text = normalize(query.trim());\n if (text === '') {\n return true;\n }\n return (\n normalize(choice.name)\n .split(/[\\s'’-]+/)\n .some((word) => word.startsWith(text)) ||\n normalize(choice.name).startsWith(text) ||\n choice.code.toLowerCase() === text\n );\n}\n\n/**\n * A combo box of codes shown by their names (countries, regions): typing filters them by the start\n * of a word of their name, or by their code. A value outside the choices shows as it is.\n */\nexport function CodeComboBox({\n choices,\n value,\n onChange,\n onBlur,\n label,\n description,\n errors,\n disabled,\n readOnly,\n required,\n placeholder,\n name,\n id,\n autoFocus,\n emptyMessage,\n className,\n labelClassName,\n descriptionClassName,\n errorsClassName,\n controlClassName,\n ...props\n}: CodeComboBoxProps) {\n // The text being typed, while the user searches; the name of the value otherwise.\n const [query, setQuery] = useState<string | null>(null);\n const current = value !== null && value !== undefined && value !== '' ? value : null;\n const selected = current !== null ? choices.find((choice) => choice.code === current) : null;\n const items = (query !== null ? choices.filter((choice) => matches(choice, query)) : choices)\n .concat(\n // A value outside the choices, kept from before, stays selectable as it is.\n current !== null && selected === undefined && query === null\n ? [{ code: current, name: current }]\n : [],\n )\n .map((choice): { id: string; label: string; prefix?: ReactNode } => ({\n id: choice.code,\n label: choice.name,\n ...(choice.prefix !== undefined ? { prefix: choice.prefix } : {}),\n }));\n return (\n <ComboBox\n label={label}\n description={description}\n errors={errors ?? []}\n isRequired={required}\n isDisabled={disabled}\n isReadOnly={readOnly}\n autoFocus={autoFocus}\n className={className}\n labelClassName={labelClassName}\n descriptionClassName={descriptionClassName}\n errorsClassName={errorsClassName}\n {...(controlClassName !== undefined ? { controlClassName } : {})}\n {...(props['aria-label'] !== undefined ? { 'aria-label': props['aria-label'] } : {})}\n {...(name !== undefined ? { name } : {})}\n {...(id !== undefined ? { id } : {})}\n items={items}\n value={current}\n prefix={query === null ? selected?.prefix : undefined}\n inputValue={query ?? selected?.name ?? current ?? ''}\n onInputChange={(text) => {\n setQuery(text);\n if (text === '' && current !== null) {\n onChange?.(null);\n }\n }}\n onChange={(code) => {\n setQuery(null);\n if (code !== null && code !== current) {\n onChange?.(code);\n }\n }}\n onBlur={() => {\n setQuery(null);\n onBlur?.();\n }}\n placeholder={placeholder}\n emptyMessage={emptyMessage}\n />\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Field } from '@panneau/protocol';
|
|
2
|
-
import type { FieldEntryProps } from './types';
|
|
2
|
+
import type { FieldEntryProps } from './types.js';
|
|
3
3
|
export interface NestedFieldProps {
|
|
4
4
|
field: Field;
|
|
5
5
|
/** Dot path of the field's value. */
|
|
@@ -12,6 +12,10 @@ export interface NestedFieldProps {
|
|
|
12
12
|
errors?: readonly string[];
|
|
13
13
|
/** The object the field belongs to, for conditions and generated values. */
|
|
14
14
|
parentValue?: unknown;
|
|
15
|
+
/** The locale of the value, in a localized field. */
|
|
16
|
+
locale?: string;
|
|
17
|
+
/** Renders the field without a visible label, named by its label for assistive technologies. */
|
|
18
|
+
hideLabel?: boolean;
|
|
15
19
|
disabled?: boolean;
|
|
16
20
|
readOnly?: boolean;
|
|
17
21
|
className?: string;
|
|
@@ -22,11 +26,12 @@ export interface NestedFieldProps {
|
|
|
22
26
|
* one, it uses `value` and `onChange`, and hides itself when its `visibleWhen` condition on the
|
|
23
27
|
* parent value is false.
|
|
24
28
|
*/
|
|
25
|
-
export declare function NestedField({ field, path, value, onChange, onBlur, errors, parentValue, disabled, readOnly, className, }: NestedFieldProps): import("react").JSX.Element | null;
|
|
29
|
+
export declare function NestedField({ field, path, value, onChange, onBlur, errors, parentValue, locale, hideLabel, disabled, readOnly, className, }: NestedFieldProps): import("react").JSX.Element | null;
|
|
26
30
|
/**
|
|
27
31
|
* Renders a field of the definition with the entry of its type: from the fields context, or a
|
|
28
|
-
* built-in one. A localized field renders an input per locale. A
|
|
29
|
-
*
|
|
32
|
+
* built-in one. A localized field renders an input per locale. A compound field without an entry
|
|
33
|
+
* (decision 0065) renders as a group, or as a repeater with `multiple`. Another type without an
|
|
34
|
+
* entry renders a placeholder that names the missing plugin.
|
|
30
35
|
*/
|
|
31
36
|
export declare function DefinitionField(props: FieldEntryProps): import("react").JSX.Element;
|
|
32
37
|
//# sourceMappingURL=DefinitionField.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefinitionField.d.ts","sourceRoot":"","sources":["../../src/shared/DefinitionField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"DefinitionField.d.ts","sourceRoot":"","sources":["../../src/shared/DefinitionField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAY/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,oCAAoC;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gGAAgG;IAChG,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EACxB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,MAAM,EACN,WAAW,EACX,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,SAAS,GACZ,EAAE,gBAAgB,sCAkClB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,+BAgBrD"}
|