shelving 1.236.0 → 1.236.2
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/api/cache/APICache.d.ts +69 -6
- package/api/cache/APICache.js +61 -5
- package/api/cache/EndpointCache.d.ts +75 -7
- package/api/cache/EndpointCache.js +75 -7
- package/api/endpoint/Endpoint.d.ts +141 -25
- package/api/endpoint/Endpoint.js +55 -9
- package/api/endpoint/util.d.ts +28 -6
- package/api/provider/APIProvider.d.ts +58 -14
- package/api/provider/APIProvider.js +24 -2
- package/api/provider/CachedAPIProvider.d.ts +58 -5
- package/api/provider/CachedAPIProvider.js +58 -6
- package/api/provider/ClientAPIProvider.d.ts +80 -4
- package/api/provider/ClientAPIProvider.js +75 -4
- package/api/provider/DebugAPIProvider.d.ts +40 -1
- package/api/provider/DebugAPIProvider.js +40 -1
- package/api/provider/JSONAPIProvider.d.ts +18 -2
- package/api/provider/JSONAPIProvider.js +18 -2
- package/api/provider/LoggingAPIProvider.d.ts +25 -2
- package/api/provider/LoggingAPIProvider.js +25 -2
- package/api/provider/MockAPIProvider.d.ts +72 -1
- package/api/provider/MockAPIProvider.js +60 -4
- package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
- package/api/provider/MockEndpointAPIProvider.js +9 -0
- package/api/provider/ThroughAPIProvider.d.ts +67 -1
- package/api/provider/ThroughAPIProvider.js +67 -1
- package/api/provider/ValidationAPIProvider.d.ts +32 -1
- package/api/provider/ValidationAPIProvider.js +32 -1
- package/api/provider/XMLAPIProvider.d.ts +18 -2
- package/api/provider/XMLAPIProvider.js +18 -2
- package/api/store/EndpointStore.d.ts +24 -1
- package/api/store/EndpointStore.js +24 -1
- package/bun/BunPostgreSQLProvider.d.ts +38 -0
- package/bun/BunPostgreSQLProvider.js +38 -2
- package/cloudflare/CloudflareD1Provider.d.ts +29 -2
- package/cloudflare/CloudflareD1Provider.js +29 -2
- package/cloudflare/CloudflareKVProvider.d.ts +115 -0
- package/cloudflare/CloudflareKVProvider.js +115 -0
- package/cloudflare/types.d.ts +41 -7
- package/db/cache/CollectionCache.d.ts +83 -7
- package/db/cache/CollectionCache.js +83 -7
- package/db/cache/DBCache.d.ts +93 -8
- package/db/cache/DBCache.js +85 -7
- package/db/collection/Collection.d.ts +103 -15
- package/db/collection/Collection.js +58 -6
- package/db/migrate/DBMigrator.d.ts +29 -1
- package/db/migrate/DBMigrator.js +20 -1
- package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
- package/db/migrate/PostgreSQLMigrator.js +8 -1
- package/db/migrate/SQLMigrator.d.ts +63 -4
- package/db/migrate/SQLMigrator.js +51 -1
- package/db/migrate/SQLiteMigrator.d.ts +8 -1
- package/db/migrate/SQLiteMigrator.js +8 -1
- package/db/provider/CacheDBProvider.d.ts +135 -1
- package/db/provider/CacheDBProvider.js +135 -1
- package/db/provider/ChangesDBProvider.d.ts +84 -3
- package/db/provider/ChangesDBProvider.js +77 -2
- package/db/provider/DBProvider.d.ts +148 -1
- package/db/provider/DBProvider.js +51 -1
- package/db/provider/DebugDBProvider.d.ts +118 -1
- package/db/provider/DebugDBProvider.js +118 -1
- package/db/provider/MemoryDBProvider.d.ts +262 -7
- package/db/provider/MemoryDBProvider.js +262 -7
- package/db/provider/MockDBProvider.d.ts +113 -2
- package/db/provider/MockDBProvider.js +106 -1
- package/db/provider/PostgreSQLProvider.d.ts +34 -2
- package/db/provider/PostgreSQLProvider.js +34 -4
- package/db/provider/SQLProvider.d.ts +250 -14
- package/db/provider/SQLProvider.js +237 -13
- package/db/provider/SQLiteProvider.d.ts +41 -1
- package/db/provider/SQLiteProvider.js +41 -4
- package/db/provider/ThroughDBProvider.d.ts +156 -1
- package/db/provider/ThroughDBProvider.js +156 -1
- package/db/provider/ValidationDBProvider.d.ts +120 -1
- package/db/provider/ValidationDBProvider.js +120 -1
- package/db/store/ItemStore.d.ts +38 -2
- package/db/store/ItemStore.js +38 -2
- package/db/store/QueryStore.d.ts +64 -6
- package/db/store/QueryStore.js +64 -6
- package/error/BaseError.d.ts +27 -2
- package/error/BaseError.js +14 -0
- package/error/Errors.d.ts +12 -1
- package/error/Errors.js +12 -1
- package/error/NetworkError.d.ts +13 -1
- package/error/NetworkError.js +13 -1
- package/error/RequestError.d.ts +90 -7
- package/error/RequestError.js +90 -7
- package/error/RequiredError.d.ts +11 -1
- package/error/RequiredError.js +11 -1
- package/error/ResponseError.d.ts +19 -2
- package/error/ResponseError.js +19 -2
- package/error/UnexpectedError.d.ts +14 -1
- package/error/UnexpectedError.js +14 -1
- package/error/UnimplementedError.d.ts +13 -1
- package/error/UnimplementedError.js +13 -1
- package/error/ValueError.d.ts +14 -1
- package/error/ValueError.js +14 -1
- package/extract/DirectoryExtractor.d.ts +35 -1
- package/extract/DirectoryExtractor.js +30 -0
- package/extract/Extractor.d.ts +21 -2
- package/extract/Extractor.js +7 -1
- package/extract/FileExtractor.d.ts +18 -0
- package/extract/FileExtractor.js +18 -0
- package/extract/IndexExtractor.d.ts +36 -1
- package/extract/IndexExtractor.js +31 -0
- package/extract/MarkupExtractor.d.ts +15 -0
- package/extract/MarkupExtractor.js +15 -0
- package/extract/MergingExtractor.d.ts +36 -1
- package/extract/MergingExtractor.js +31 -0
- package/extract/ModuleExtractor.d.ts +25 -1
- package/extract/ModuleExtractor.js +20 -0
- package/extract/PackageExtractor.d.ts +36 -1
- package/extract/PackageExtractor.js +31 -0
- package/extract/ThroughExtractor.d.ts +22 -1
- package/extract/ThroughExtractor.js +22 -1
- package/extract/TypescriptExtractor.d.ts +21 -0
- package/extract/TypescriptExtractor.js +28 -3
- package/firestore/client/FirestoreClientProvider.d.ts +129 -4
- package/firestore/client/FirestoreClientProvider.js +129 -4
- package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
- package/firestore/lite/FirestoreLiteProvider.js +128 -3
- package/firestore/server/FirestoreServerProvider.d.ts +129 -2
- package/firestore/server/FirestoreServerProvider.js +129 -2
- package/markup/MarkupParser.d.ts +57 -10
- package/markup/MarkupParser.js +50 -9
- package/markup/MarkupRule.d.ts +34 -1
- package/markup/Parser.d.ts +18 -0
- package/markup/Parser.js +11 -0
- package/markup/rule/blockquote.d.ts +3 -0
- package/markup/rule/blockquote.js +3 -0
- package/markup/rule/code.d.ts +3 -0
- package/markup/rule/code.js +3 -0
- package/markup/rule/fenced.d.ts +3 -0
- package/markup/rule/fenced.js +3 -0
- package/markup/rule/heading.d.ts +3 -0
- package/markup/rule/heading.js +3 -0
- package/markup/rule/index.d.ts +16 -3
- package/markup/rule/index.js +16 -3
- package/markup/rule/inline.d.ts +4 -1
- package/markup/rule/inline.js +5 -2
- package/markup/rule/linebreak.d.ts +3 -0
- package/markup/rule/linebreak.js +3 -0
- package/markup/rule/link.d.ts +6 -0
- package/markup/rule/link.js +6 -0
- package/markup/rule/ordered.d.ts +3 -0
- package/markup/rule/ordered.js +3 -0
- package/markup/rule/paragraph.d.ts +3 -0
- package/markup/rule/paragraph.js +3 -0
- package/markup/rule/separator.d.ts +3 -0
- package/markup/rule/separator.js +3 -0
- package/markup/rule/table.d.ts +3 -0
- package/markup/rule/table.js +3 -0
- package/markup/rule/unordered.d.ts +3 -0
- package/markup/rule/unordered.js +3 -0
- package/markup/util/regexp.d.ts +80 -3
- package/markup/util/regexp.js +44 -0
- package/package.json +1 -1
- package/react/createAPIContext.d.ts +15 -0
- package/react/createAPIContext.js +10 -0
- package/react/createDBContext.d.ts +15 -0
- package/react/createDBContext.js +10 -0
- package/react/useInstance.d.ts +11 -0
- package/react/useInstance.js +11 -0
- package/react/useLazy.d.ts +11 -0
- package/react/useMap.d.ts +14 -1
- package/react/useMap.js +14 -1
- package/react/useReduce.d.ts +12 -0
- package/react/useSequence.d.ts +10 -0
- package/react/useSequence.js +10 -0
- package/react/useStore.d.ts +16 -1
- package/schema/AddressSchema.d.ts +41 -4
- package/schema/AddressSchema.js +36 -3
- package/schema/ArraySchema.d.ts +48 -6
- package/schema/ArraySchema.js +40 -5
- package/schema/BooleanSchema.d.ts +59 -3
- package/schema/BooleanSchema.js +51 -2
- package/schema/ChoiceSchema.d.ts +61 -7
- package/schema/ChoiceSchema.js +44 -2
- package/schema/ColorSchema.d.ts +41 -8
- package/schema/ColorSchema.js +36 -7
- package/schema/CountrySchema.d.ts +44 -4
- package/schema/CountrySchema.js +39 -3
- package/schema/CurrencyAmountSchema.d.ts +104 -8
- package/schema/CurrencyAmountSchema.js +91 -4
- package/schema/CurrencyCodeSchema.d.ts +56 -4
- package/schema/CurrencyCodeSchema.js +49 -3
- package/schema/DataSchema.d.ts +101 -10
- package/schema/DataSchema.js +87 -8
- package/schema/DateSchema.d.ts +73 -4
- package/schema/DateSchema.js +57 -2
- package/schema/DateTimeSchema.d.ts +40 -3
- package/schema/DateTimeSchema.js +40 -3
- package/schema/DictionarySchema.d.ts +54 -4
- package/schema/DictionarySchema.js +47 -3
- package/schema/EmailSchema.d.ts +34 -3
- package/schema/EmailSchema.js +34 -3
- package/schema/EntitySchema.d.ts +45 -4
- package/schema/EntitySchema.js +38 -3
- package/schema/FileSchema.d.ts +45 -4
- package/schema/FileSchema.js +39 -3
- package/schema/KeySchema.d.ts +32 -3
- package/schema/KeySchema.js +32 -3
- package/schema/NullableSchema.d.ts +64 -4
- package/schema/NullableSchema.js +59 -3
- package/schema/NumberSchema.d.ts +137 -12
- package/schema/NumberSchema.js +127 -11
- package/schema/OptionalSchema.d.ts +61 -4
- package/schema/OptionalSchema.js +56 -4
- package/schema/PasswordSchema.d.ts +37 -1
- package/schema/PasswordSchema.js +32 -1
- package/schema/PhoneSchema.d.ts +40 -4
- package/schema/PhoneSchema.js +35 -3
- package/schema/RequiredSchema.d.ts +39 -3
- package/schema/RequiredSchema.js +41 -3
- package/schema/Schema.d.ts +67 -7
- package/schema/Schema.js +42 -6
- package/schema/SlugSchema.d.ts +37 -5
- package/schema/SlugSchema.js +37 -5
- package/schema/StringSchema.d.ts +124 -19
- package/schema/StringSchema.js +107 -17
- package/schema/ThroughSchema.d.ts +35 -2
- package/schema/ThroughSchema.js +30 -1
- package/schema/TimeSchema.d.ts +43 -3
- package/schema/TimeSchema.js +43 -3
- package/schema/URISchema.d.ts +67 -6
- package/schema/URISchema.js +60 -6
- package/schema/URLSchema.d.ts +69 -6
- package/schema/URLSchema.js +61 -6
- package/schema/UUIDSchema.d.ts +37 -4
- package/schema/UUIDSchema.js +37 -4
- package/sequence/DeferredSequence.d.ts +49 -3
- package/sequence/DeferredSequence.js +39 -3
- package/sequence/InspectSequence.d.ts +59 -5
- package/sequence/InspectSequence.js +59 -5
- package/sequence/LazySequence.d.ts +30 -2
- package/sequence/LazySequence.js +30 -2
- package/sequence/Sequence.d.ts +11 -0
- package/sequence/Sequence.js +10 -0
- package/sequence/ThroughSequence.d.ts +15 -0
- package/sequence/ThroughSequence.js +15 -0
- package/store/ArrayStore.d.ts +74 -11
- package/store/ArrayStore.js +74 -11
- package/store/BooleanStore.d.ts +19 -2
- package/store/BooleanStore.js +19 -2
- package/store/BusyStore.d.ts +13 -1
- package/store/BusyStore.js +13 -1
- package/store/DataStore.d.ts +118 -15
- package/store/DataStore.js +118 -15
- package/store/DictionaryStore.d.ts +66 -8
- package/store/DictionaryStore.js +66 -8
- package/store/FetchStore.d.ts +43 -6
- package/store/FetchStore.js +36 -5
- package/store/PathStore.d.ts +44 -5
- package/store/PathStore.js +44 -5
- package/store/PayloadFetchStore.d.ts +16 -1
- package/store/PayloadFetchStore.js +9 -1
- package/store/Store.d.ts +85 -16
- package/store/Store.js +52 -10
- package/store/URLStore.d.ts +173 -15
- package/store/URLStore.js +173 -15
- package/test/basics.d.ts +70 -0
- package/test/basics.js +60 -0
- package/test/people.d.ts +45 -0
- package/test/people.js +35 -0
- package/test/util.d.ts +30 -3
- package/test/util.js +30 -3
- package/ui/app/App.d.ts +14 -2
- package/ui/app/App.js +9 -2
- package/ui/app/App.tsx +14 -2
- package/ui/block/Address.d.ts +45 -3
- package/ui/block/Address.js +30 -3
- package/ui/block/Address.tsx +46 -3
- package/ui/block/Block.d.ts +23 -1
- package/ui/block/Block.js +13 -1
- package/ui/block/Block.tsx +23 -1
- package/ui/block/Blockquote.d.ts +21 -0
- package/ui/block/Blockquote.js +16 -0
- package/ui/block/Blockquote.tsx +22 -0
- package/ui/block/Caption.d.ts +21 -1
- package/ui/block/Caption.js +16 -1
- package/ui/block/Caption.tsx +22 -1
- package/ui/block/Card.d.ts +6 -0
- package/ui/block/Card.js +1 -0
- package/ui/block/Card.tsx +6 -0
- package/ui/block/Definitions.d.ts +18 -0
- package/ui/block/Definitions.js +13 -0
- package/ui/block/Definitions.tsx +19 -0
- package/ui/block/Divider.d.ts +21 -0
- package/ui/block/Divider.js +16 -0
- package/ui/block/Divider.tsx +22 -0
- package/ui/block/Heading.d.ts +20 -1
- package/ui/block/Heading.js +15 -0
- package/ui/block/Heading.tsx +21 -1
- package/ui/block/Image.d.ts +23 -0
- package/ui/block/Image.js +18 -0
- package/ui/block/Image.tsx +24 -0
- package/ui/block/Label.d.ts +18 -3
- package/ui/block/Label.js +13 -3
- package/ui/block/Label.tsx +18 -3
- package/ui/block/List.d.ts +30 -0
- package/ui/block/List.js +25 -0
- package/ui/block/List.tsx +32 -0
- package/ui/block/Panel.d.ts +13 -1
- package/ui/block/Panel.js +3 -0
- package/ui/block/Panel.tsx +13 -1
- package/ui/block/Paragraph.d.ts +23 -0
- package/ui/block/Paragraph.js +18 -0
- package/ui/block/Paragraph.tsx +24 -0
- package/ui/block/Preformatted.d.ts +20 -0
- package/ui/block/Preformatted.js +15 -0
- package/ui/block/Preformatted.tsx +21 -0
- package/ui/block/Prose.d.ts +14 -1
- package/ui/block/Prose.js +9 -1
- package/ui/block/Prose.tsx +14 -1
- package/ui/block/Section.d.ts +69 -6
- package/ui/block/Section.js +59 -6
- package/ui/block/Section.tsx +70 -6
- package/ui/block/Subheading.d.ts +20 -1
- package/ui/block/Subheading.js +15 -0
- package/ui/block/Subheading.tsx +21 -1
- package/ui/block/Table.d.ts +20 -0
- package/ui/block/Table.js +15 -0
- package/ui/block/Table.tsx +21 -0
- package/ui/block/Title.d.ts +20 -1
- package/ui/block/Title.js +15 -0
- package/ui/block/Title.tsx +21 -1
- package/ui/block/Video.d.ts +50 -3
- package/ui/block/Video.js +30 -3
- package/ui/block/Video.tsx +50 -3
- package/ui/dialog/Dialog.d.ts +28 -1
- package/ui/dialog/Dialog.js +18 -1
- package/ui/dialog/Dialog.tsx +28 -1
- package/ui/dialog/Dialogs.d.ts +53 -6
- package/ui/dialog/Dialogs.js +43 -6
- package/ui/dialog/Dialogs.tsx +53 -6
- package/ui/dialog/Modal.d.ts +13 -0
- package/ui/dialog/Modal.js +8 -0
- package/ui/dialog/Modal.tsx +13 -0
- package/ui/docs/DocumentationButtons.d.ts +5 -1
- package/ui/docs/DocumentationButtons.tsx +5 -1
- package/ui/docs/DocumentationCard.d.ts +6 -1
- package/ui/docs/DocumentationCard.js +6 -1
- package/ui/docs/DocumentationCard.tsx +6 -1
- package/ui/docs/DocumentationKind.d.ts +13 -1
- package/ui/docs/DocumentationKind.js +8 -0
- package/ui/docs/DocumentationKind.tsx +13 -1
- package/ui/docs/DocumentationPage.d.ts +6 -1
- package/ui/docs/DocumentationPage.js +6 -1
- package/ui/docs/DocumentationPage.tsx +6 -1
- package/ui/docs/DocumentationSignatures.d.ts +10 -1
- package/ui/docs/DocumentationSignatures.js +5 -0
- package/ui/docs/DocumentationSignatures.tsx +10 -1
- package/ui/form/ArrayInput.d.ts +15 -0
- package/ui/form/ArrayInput.tsx +15 -0
- package/ui/form/ArrayRadioInputs.d.ts +10 -0
- package/ui/form/ArrayRadioInputs.js +5 -0
- package/ui/form/ArrayRadioInputs.tsx +10 -0
- package/ui/form/Button.d.ts +19 -3
- package/ui/form/Button.js +14 -2
- package/ui/form/Button.tsx +19 -3
- package/ui/form/ButtonInput.d.ts +14 -1
- package/ui/form/ButtonInput.js +9 -1
- package/ui/form/ButtonInput.tsx +14 -1
- package/ui/form/ButtonInputPopover.d.ts +10 -0
- package/ui/form/ButtonInputPopover.js +5 -0
- package/ui/form/ButtonInputPopover.tsx +10 -0
- package/ui/form/ButtonPopover.d.ts +11 -1
- package/ui/form/ButtonPopover.js +6 -1
- package/ui/form/ButtonPopover.tsx +11 -1
- package/ui/form/CheckboxInput.d.ts +14 -1
- package/ui/form/CheckboxInput.js +9 -1
- package/ui/form/CheckboxInput.tsx +14 -1
- package/ui/form/ChoiceRadioInputs.d.ts +10 -0
- package/ui/form/ChoiceRadioInputs.tsx +10 -0
- package/ui/form/Clickable.d.ts +45 -5
- package/ui/form/Clickable.js +30 -3
- package/ui/form/Clickable.tsx +45 -5
- package/ui/form/DataInput.d.ts +14 -0
- package/ui/form/DataInput.tsx +14 -0
- package/ui/form/DateInput.d.ts +14 -0
- package/ui/form/DateInput.js +9 -0
- package/ui/form/DateInput.tsx +14 -0
- package/ui/form/DictionaryInput.d.ts +15 -0
- package/ui/form/DictionaryInput.tsx +15 -0
- package/ui/form/Field.d.ts +5 -0
- package/ui/form/Field.tsx +5 -0
- package/ui/form/FileInput.d.ts +14 -0
- package/ui/form/FileInput.js +9 -0
- package/ui/form/FileInput.tsx +14 -0
- package/ui/form/Form.d.ts +55 -6
- package/ui/form/Form.js +35 -3
- package/ui/form/Form.tsx +55 -6
- package/ui/form/FormContext.d.ts +24 -3
- package/ui/form/FormContext.js +5 -1
- package/ui/form/FormContext.tsx +24 -3
- package/ui/form/FormFields.d.ts +15 -2
- package/ui/form/FormFields.js +15 -2
- package/ui/form/FormFields.tsx +15 -2
- package/ui/form/FormFooter.d.ts +13 -3
- package/ui/form/FormFooter.js +8 -3
- package/ui/form/FormFooter.tsx +13 -3
- package/ui/form/FormInput.d.ts +21 -2
- package/ui/form/FormInput.js +16 -2
- package/ui/form/FormInput.tsx +21 -2
- package/ui/form/FormMessage.d.ts +8 -1
- package/ui/form/FormMessage.js +8 -1
- package/ui/form/FormMessage.tsx +8 -2
- package/ui/form/FormNotice.d.ts +8 -1
- package/ui/form/FormNotice.js +8 -1
- package/ui/form/FormNotice.tsx +8 -2
- package/ui/form/FormNotify.d.ts +8 -1
- package/ui/form/FormNotify.js +8 -1
- package/ui/form/FormNotify.tsx +8 -2
- package/ui/form/FormStore.d.ts +50 -6
- package/ui/form/FormStore.js +50 -6
- package/ui/form/FormStore.tsx +50 -6
- package/ui/form/Input.d.ts +65 -1
- package/ui/form/Input.js +60 -0
- package/ui/form/Input.tsx +77 -1
- package/ui/form/NumberInput.d.ts +14 -0
- package/ui/form/NumberInput.js +9 -0
- package/ui/form/NumberInput.tsx +14 -0
- package/ui/form/OutputInput.d.ts +13 -1
- package/ui/form/OutputInput.js +8 -1
- package/ui/form/OutputInput.tsx +13 -1
- package/ui/form/Popover.d.ts +18 -2
- package/ui/form/Popover.js +8 -2
- package/ui/form/Popover.tsx +18 -2
- package/ui/form/Progress.d.ts +26 -2
- package/ui/form/Progress.js +16 -2
- package/ui/form/Progress.tsx +26 -2
- package/ui/form/QueryInput.d.ts +14 -5
- package/ui/form/QueryInput.js +9 -5
- package/ui/form/QueryInput.tsx +14 -5
- package/ui/form/RadioInput.d.ts +14 -1
- package/ui/form/RadioInput.js +9 -1
- package/ui/form/RadioInput.tsx +14 -1
- package/ui/form/SchemaInput.d.ts +138 -7
- package/ui/form/SchemaInput.js +79 -4
- package/ui/form/SchemaInput.tsx +138 -7
- package/ui/form/SelectInput.d.ts +14 -0
- package/ui/form/SelectInput.tsx +14 -0
- package/ui/form/SubmitButton.d.ts +14 -1
- package/ui/form/SubmitButton.js +9 -1
- package/ui/form/SubmitButton.tsx +14 -1
- package/ui/form/TextInput.d.ts +15 -0
- package/ui/form/TextInput.js +10 -0
- package/ui/form/TextInput.tsx +15 -0
- package/ui/inline/Code.d.ts +29 -0
- package/ui/inline/Code.js +24 -0
- package/ui/inline/Code.tsx +31 -0
- package/ui/inline/Deleted.d.ts +23 -0
- package/ui/inline/Deleted.js +18 -0
- package/ui/inline/Deleted.tsx +24 -0
- package/ui/inline/Emphasis.d.ts +23 -0
- package/ui/inline/Emphasis.js +18 -0
- package/ui/inline/Emphasis.tsx +24 -0
- package/ui/inline/Inserted.d.ts +23 -0
- package/ui/inline/Inserted.js +18 -0
- package/ui/inline/Inserted.tsx +24 -0
- package/ui/inline/Link.d.ts +23 -0
- package/ui/inline/Link.js +18 -0
- package/ui/inline/Link.tsx +24 -0
- package/ui/inline/Mark.d.ts +23 -0
- package/ui/inline/Mark.js +18 -0
- package/ui/inline/Mark.tsx +24 -0
- package/ui/inline/Small.d.ts +23 -0
- package/ui/inline/Small.js +18 -0
- package/ui/inline/Small.tsx +24 -0
- package/ui/inline/Strong.d.ts +23 -0
- package/ui/inline/Strong.js +18 -0
- package/ui/inline/Strong.tsx +24 -0
- package/ui/inline/Subscript.d.ts +23 -0
- package/ui/inline/Subscript.js +18 -0
- package/ui/inline/Subscript.tsx +24 -0
- package/ui/inline/Superscript.d.ts +23 -0
- package/ui/inline/Superscript.js +18 -0
- package/ui/inline/Superscript.tsx +24 -0
- package/ui/inline/When.d.ts +42 -3
- package/ui/inline/When.js +27 -3
- package/ui/inline/When.tsx +42 -3
- package/ui/layout/CenteredLayout.d.ts +12 -1
- package/ui/layout/CenteredLayout.js +7 -1
- package/ui/layout/CenteredLayout.tsx +12 -1
- package/ui/layout/Layout.d.ts +12 -3
- package/ui/layout/Layout.js +12 -3
- package/ui/layout/Layout.ts +12 -3
- package/ui/layout/SidebarLayout.d.ts +12 -0
- package/ui/layout/SidebarLayout.js +7 -0
- package/ui/layout/SidebarLayout.tsx +12 -0
- package/ui/menu/Menu.d.ts +22 -0
- package/ui/menu/Menu.js +12 -0
- package/ui/menu/Menu.tsx +22 -0
- package/ui/misc/Catcher.d.ts +77 -5
- package/ui/misc/Catcher.js +47 -5
- package/ui/misc/Catcher.tsx +77 -5
- package/ui/misc/Loading.d.ts +20 -0
- package/ui/misc/Loading.js +15 -0
- package/ui/misc/Loading.tsx +20 -0
- package/ui/misc/Mapper.d.ts +13 -1
- package/ui/misc/Mapper.js +4 -0
- package/ui/misc/Mapper.tsx +13 -1
- package/ui/misc/Markup.d.ts +9 -1
- package/ui/misc/Markup.js +4 -0
- package/ui/misc/Markup.tsx +9 -1
- package/ui/misc/MetaContext.d.ts +24 -7
- package/ui/misc/MetaContext.js +19 -6
- package/ui/misc/MetaContext.tsx +24 -7
- package/ui/misc/StatusIcon.d.ts +16 -1
- package/ui/misc/StatusIcon.js +11 -1
- package/ui/misc/StatusIcon.tsx +16 -1
- package/ui/misc/Tag.d.ts +21 -0
- package/ui/misc/Tag.js +11 -0
- package/ui/misc/Tag.tsx +21 -0
- package/ui/notice/Message.d.ts +27 -1
- package/ui/notice/Message.js +22 -1
- package/ui/notice/Message.tsx +27 -1
- package/ui/notice/Notice.d.ts +24 -0
- package/ui/notice/Notice.js +19 -0
- package/ui/notice/Notice.tsx +24 -0
- package/ui/notice/NoticeStore.d.ts +30 -2
- package/ui/notice/NoticeStore.js +30 -2
- package/ui/notice/NoticeStore.ts +30 -2
- package/ui/notice/Notices.d.ts +11 -1
- package/ui/notice/Notices.js +6 -1
- package/ui/notice/Notices.tsx +11 -1
- package/ui/notice/NoticesStore.d.ts +23 -3
- package/ui/notice/NoticesStore.js +23 -3
- package/ui/notice/NoticesStore.ts +23 -3
- package/ui/page/HTML.d.ts +13 -2
- package/ui/page/HTML.js +8 -2
- package/ui/page/HTML.tsx +13 -2
- package/ui/page/Head.d.ts +5 -1
- package/ui/page/Head.js +5 -1
- package/ui/page/Head.tsx +5 -1
- package/ui/page/Page.d.ts +12 -1
- package/ui/page/Page.js +7 -1
- package/ui/page/Page.tsx +12 -1
- package/ui/router/Navigation.d.ts +11 -0
- package/ui/router/Navigation.js +6 -0
- package/ui/router/Navigation.tsx +11 -0
- package/ui/router/NavigationContext.d.ts +14 -2
- package/ui/router/NavigationContext.js +14 -2
- package/ui/router/NavigationContext.tsx +14 -2
- package/ui/router/NavigationStore.d.ts +29 -1
- package/ui/router/NavigationStore.js +29 -1
- package/ui/router/NavigationStore.tsx +29 -1
- package/ui/router/Router.d.ts +12 -1
- package/ui/router/Router.js +7 -1
- package/ui/router/Router.tsx +12 -1
- package/ui/router/Routes.d.ts +14 -4
- package/ui/router/Routes.tsx +14 -4
- package/ui/style/Color.d.ts +15 -2
- package/ui/style/Color.js +5 -0
- package/ui/style/Color.tsx +15 -2
- package/ui/style/Flex.d.ts +41 -4
- package/ui/style/Flex.js +26 -3
- package/ui/style/Flex.tsx +41 -4
- package/ui/style/Gap.d.ts +18 -3
- package/ui/style/Gap.js +8 -1
- package/ui/style/Gap.tsx +18 -3
- package/ui/style/Padding.d.ts +18 -3
- package/ui/style/Padding.js +8 -1
- package/ui/style/Padding.tsx +18 -3
- package/ui/style/Scroll.d.ts +36 -1
- package/ui/style/Scroll.js +26 -1
- package/ui/style/Scroll.tsx +37 -1
- package/ui/style/Space.d.ts +18 -3
- package/ui/style/Space.js +8 -1
- package/ui/style/Space.tsx +18 -3
- package/ui/style/Status.d.ts +23 -7
- package/ui/style/Status.js +13 -5
- package/ui/style/Status.tsx +23 -7
- package/ui/style/Tint.d.ts +7 -1
- package/ui/style/Tint.js +7 -1
- package/ui/style/Tint.tsx +7 -1
- package/ui/style/Typography.d.ts +38 -6
- package/ui/style/Typography.js +8 -0
- package/ui/style/Typography.tsx +38 -6
- package/ui/style/Width.d.ts +18 -1
- package/ui/style/Width.js +8 -0
- package/ui/style/Width.tsx +18 -1
- package/ui/transition/CollapseTransition.d.ts +13 -0
- package/ui/transition/CollapseTransition.js +8 -0
- package/ui/transition/CollapseTransition.tsx +13 -0
- package/ui/transition/FadeTransition.d.ts +13 -0
- package/ui/transition/FadeTransition.js +8 -0
- package/ui/transition/FadeTransition.tsx +13 -0
- package/ui/transition/HorizontalTransition.d.ts +13 -0
- package/ui/transition/HorizontalTransition.js +8 -0
- package/ui/transition/HorizontalTransition.tsx +13 -0
- package/ui/transition/Transition.d.ts +12 -4
- package/ui/transition/Transition.js +7 -3
- package/ui/transition/Transition.tsx +12 -4
- package/ui/transition/VerticalTransition.d.ts +13 -0
- package/ui/transition/VerticalTransition.js +8 -0
- package/ui/transition/VerticalTransition.tsx +13 -0
- package/ui/transition/util.d.ts +16 -6
- package/ui/transition/util.js +7 -1
- package/ui/transition/util.tsx +16 -6
- package/ui/tree/TreeApp.d.ts +11 -0
- package/ui/tree/TreeApp.js +6 -0
- package/ui/tree/TreeApp.tsx +11 -0
- package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
- package/ui/tree/TreeBreadcrumbs.js +6 -0
- package/ui/tree/TreeBreadcrumbs.tsx +11 -0
- package/ui/tree/TreeButton.d.ts +9 -1
- package/ui/tree/TreeButton.js +4 -0
- package/ui/tree/TreeButton.tsx +9 -1
- package/ui/tree/TreeCard.d.ts +8 -1
- package/ui/tree/TreeCard.js +8 -1
- package/ui/tree/TreeCard.tsx +8 -1
- package/ui/tree/TreeCards.d.ts +16 -1
- package/ui/tree/TreeCards.js +11 -1
- package/ui/tree/TreeCards.tsx +16 -1
- package/ui/tree/TreeContext.d.ts +18 -1
- package/ui/tree/TreeContext.js +18 -1
- package/ui/tree/TreeContext.tsx +18 -1
- package/ui/tree/TreeMenu.d.ts +28 -1
- package/ui/tree/TreeMenu.js +23 -1
- package/ui/tree/TreeMenu.tsx +28 -1
- package/ui/tree/TreePage.d.ts +6 -0
- package/ui/tree/TreePage.js +6 -0
- package/ui/tree/TreePage.tsx +6 -0
- package/ui/tree/TreeRouter.d.ts +17 -2
- package/ui/tree/TreeRouter.js +12 -2
- package/ui/tree/TreeRouter.tsx +17 -2
- package/ui/tree/TreeSidebar.d.ts +11 -0
- package/ui/tree/TreeSidebar.js +6 -0
- package/ui/tree/TreeSidebar.tsx +11 -0
- package/ui/util/context.d.ts +13 -1
- package/ui/util/context.ts +13 -1
- package/ui/util/css.d.ts +17 -4
- package/ui/util/css.js +5 -1
- package/ui/util/css.ts +17 -4
- package/ui/util/event.d.ts +9 -1
- package/ui/util/event.js +9 -1
- package/ui/util/event.ts +9 -1
- package/ui/util/focus.d.ts +24 -5
- package/ui/util/focus.js +24 -5
- package/ui/util/focus.ts +24 -5
- package/ui/util/meta.d.ts +113 -21
- package/ui/util/meta.js +73 -13
- package/ui/util/meta.ts +113 -21
- package/ui/util/notice.d.ts +98 -10
- package/ui/util/notice.js +93 -9
- package/ui/util/notice.ts +98 -10
- package/ui/util/props.d.ts +10 -2
- package/ui/util/props.ts +10 -2
- package/ui/util/refresh.d.ts +10 -1
- package/ui/util/refresh.js +10 -1
- package/ui/util/refresh.ts +10 -1
- package/ui/util/scroll.d.ts +20 -4
- package/ui/util/scroll.js +20 -4
- package/ui/util/scroll.ts +20 -4
- package/ui/util/state.d.ts +19 -5
- package/ui/util/state.js +19 -5
- package/ui/util/state.ts +19 -5
- package/util/ansi.d.ts +118 -0
- package/util/ansi.js +116 -0
- package/util/array.d.ts +349 -33
- package/util/array.js +284 -27
- package/util/async.d.ts +87 -9
- package/util/async.js +80 -8
- package/util/base64.d.ts +56 -6
- package/util/base64.js +56 -6
- package/util/boolean.d.ts +75 -10
- package/util/boolean.js +75 -10
- package/util/buffer.d.ts +26 -3
- package/util/buffer.js +21 -3
- package/util/bytes.d.ts +42 -4
- package/util/bytes.js +32 -2
- package/util/class.d.ts +59 -8
- package/util/class.js +44 -5
- package/util/color.d.ts +131 -13
- package/util/color.js +126 -12
- package/util/constants.d.ts +132 -19
- package/util/constants.js +132 -19
- package/util/crypto.d.ts +17 -1
- package/util/crypto.js +17 -1
- package/util/currency.d.ts +38 -4
- package/util/currency.js +33 -3
- package/util/data.d.ts +139 -24
- package/util/data.js +39 -5
- package/util/date.d.ts +152 -18
- package/util/date.js +147 -17
- package/util/debug.d.ts +112 -11
- package/util/debug.js +114 -11
- package/util/dictionary.d.ts +205 -24
- package/util/dictionary.js +162 -17
- package/util/diff.d.ts +22 -3
- package/util/diff.js +11 -1
- package/util/dispose.d.ts +74 -2
- package/util/dispose.js +74 -2
- package/util/duration.d.ts +278 -16
- package/util/duration.js +267 -15
- package/util/element.d.ts +59 -6
- package/util/element.js +32 -3
- package/util/entity.d.ts +39 -6
- package/util/entity.js +5 -1
- package/util/entry.d.ts +56 -9
- package/util/entry.js +32 -4
- package/util/env.d.ts +26 -4
- package/util/env.js +26 -4
- package/util/equal.d.ts +181 -17
- package/util/equal.js +181 -17
- package/util/error.d.ts +57 -5
- package/util/error.js +52 -4
- package/util/file.d.ts +30 -7
- package/util/file.js +25 -6
- package/util/filter.d.ts +36 -4
- package/util/filter.js +31 -3
- package/util/focus.d.ts +9 -1
- package/util/focus.js +9 -1
- package/util/format.d.ts +186 -22
- package/util/format.js +135 -14
- package/util/function.d.ts +66 -11
- package/util/function.js +31 -4
- package/util/geo.d.ts +60 -8
- package/util/geo.js +45 -5
- package/util/hash.d.ts +21 -2
- package/util/hash.js +21 -2
- package/util/http.d.ts +134 -19
- package/util/http.js +94 -11
- package/util/hydrate.d.ts +19 -2
- package/util/hydrate.js +12 -1
- package/util/item.d.ts +70 -11
- package/util/item.js +35 -4
- package/util/iterate.d.ts +109 -13
- package/util/iterate.js +86 -10
- package/util/jwt.d.ts +47 -13
- package/util/jwt.js +36 -12
- package/util/lazy.d.ts +9 -6
- package/util/link.d.ts +10 -3
- package/util/link.js +5 -2
- package/util/log.d.ts +26 -3
- package/util/log.js +26 -3
- package/util/map.d.ts +144 -19
- package/util/map.js +101 -11
- package/util/merge.d.ts +23 -1
- package/util/merge.js +6 -0
- package/util/null.d.ts +102 -13
- package/util/null.js +92 -11
- package/util/number.d.ts +125 -8
- package/util/number.js +120 -7
- package/util/object.d.ts +263 -31
- package/util/object.js +154 -17
- package/util/path.d.ts +91 -15
- package/util/path.js +60 -9
- package/util/query.d.ts +78 -9
- package/util/query.js +58 -6
- package/util/random.d.ts +67 -4
- package/util/random.js +67 -4
- package/util/regexp.d.ts +201 -24
- package/util/regexp.js +106 -11
- package/util/sequence.d.ts +66 -8
- package/util/sequence.js +52 -7
- package/util/serialise.d.ts +7 -1
- package/util/serialise.js +7 -1
- package/util/set.d.ts +103 -13
- package/util/set.js +83 -9
- package/util/sort.d.ts +32 -7
- package/util/sort.js +26 -6
- package/util/source.d.ts +28 -3
- package/util/source.js +22 -2
- package/util/start.d.ts +62 -5
- package/util/start.js +47 -2
- package/util/string.d.ts +209 -25
- package/util/string.js +188 -21
- package/util/template.d.ts +58 -9
- package/util/template.js +45 -6
- package/util/timeout.d.ts +35 -11
- package/util/timeout.js +35 -11
- package/util/transform.d.ts +87 -8
- package/util/transform.js +75 -7
- package/util/tree.d.ts +39 -6
- package/util/tree.js +3 -0
- package/util/types.d.ts +8 -2
- package/util/undefined.d.ts +47 -6
- package/util/undefined.js +47 -6
- package/util/units.d.ts +107 -12
- package/util/units.js +97 -12
- package/util/update.d.ts +36 -4
- package/util/update.js +24 -2
- package/util/uri.d.ts +138 -6
- package/util/uri.js +44 -3
- package/util/url.d.ts +152 -7
- package/util/url.js +136 -5
- package/util/uuid.d.ts +28 -3
- package/util/uuid.js +28 -3
- package/util/validate.d.ts +85 -20
- package/util/validate.js +61 -12
- package/util/xml.d.ts +9 -10
- package/util/xml.js +9 -10
package/ui/form/SchemaInput.d.ts
CHANGED
|
@@ -12,48 +12,179 @@ import { type Data } from "../../util/data.js";
|
|
|
12
12
|
import type { ValidatorType } from "../../util/validate.js";
|
|
13
13
|
import type { OptionalChildProps } from "../util/props.js";
|
|
14
14
|
import type { ValueInputProps } from "./Input.js";
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Whether a schema is required, i.e. not wrapped in an `OptionalSchema` or `NullableSchema`.
|
|
17
|
+
*
|
|
18
|
+
* @param schema The schema to test.
|
|
19
|
+
* @returns `true` if the schema is required, `false` if it is optional or nullable.
|
|
20
|
+
* @example isSchemaRequired(STRING) // true
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/isSchemaRequired
|
|
22
|
+
*/
|
|
16
23
|
export declare function isSchemaRequired(schema: Schema): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Props for `SchemaInput` and its variants: a `schema` plus the value input props it drives.
|
|
26
|
+
*
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaInputProps
|
|
28
|
+
*/
|
|
17
29
|
export interface SchemaInputProps<T extends Schema, I = never> extends ValueInputProps<ValidatorType<T>, I> {
|
|
18
30
|
schema: T;
|
|
19
31
|
}
|
|
20
32
|
/**
|
|
21
|
-
* Show the
|
|
33
|
+
* Show the appropriate input control for a schema, dispatching on the schema's concrete type.
|
|
34
|
+
* - Picks `DateInput`, `NumberInput`, choice radios/select, `CheckboxInput`, `TextInput`, `ArrayInput`, `DictionaryInput`, or `DataInput`.
|
|
35
|
+
* - `required` defaults to whether the schema is required.
|
|
22
36
|
*
|
|
23
|
-
* @
|
|
24
|
-
* @
|
|
37
|
+
* @param props Props including the `schema` plus value input props.
|
|
38
|
+
* @returns The matching input element for the schema.
|
|
39
|
+
* @throws `UnexpectedError` if no input matches the schema type.
|
|
40
|
+
* @example <SchemaInput name="email" schema={EMAIL} /> // Outputs a `<TextInput>` for the "email" property.
|
|
41
|
+
* @example <SchemaInput name="age" schema={AGE} /> // Outputs a `<NumberInput>` for the "age" property.
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaInput
|
|
25
43
|
*/
|
|
26
44
|
export declare function SchemaInput<T extends Schema>(props: SchemaInputProps<T>): ReactElement;
|
|
45
|
+
/**
|
|
46
|
+
* Props for `DateSchemaInput`, the `DateSchema` input variant.
|
|
47
|
+
*
|
|
48
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DateSchemaInputProps
|
|
49
|
+
*/
|
|
27
50
|
export interface DateSchemaInputProps extends SchemaInputProps<DateSchema, unknown> {
|
|
28
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Show a `DateInput` for a `DateSchema`.
|
|
54
|
+
*
|
|
55
|
+
* @param props Props including the `DateSchema` and value input props.
|
|
56
|
+
* @returns A `DateInput` element bound to the schema.
|
|
57
|
+
* @example <DateSchemaInput name="dob" schema={DATE} />
|
|
58
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DateSchemaInput
|
|
59
|
+
*/
|
|
29
60
|
export declare function DateSchemaInput({ schema, value, ...props }: DateSchemaInputProps): ReactElement;
|
|
61
|
+
/**
|
|
62
|
+
* Props for `NumberSchemaInput`, the `NumberSchema` input variant.
|
|
63
|
+
*
|
|
64
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/NumberSchemaInputProps
|
|
65
|
+
*/
|
|
30
66
|
export interface NumberSchemaInputProps extends SchemaInputProps<NumberSchema, unknown> {
|
|
31
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Show a `NumberInput` for a `NumberSchema`, formatting values with the schema's `format()`.
|
|
70
|
+
*
|
|
71
|
+
* @param props Props including the `NumberSchema` and value input props.
|
|
72
|
+
* @returns A `NumberInput` element bound to the schema.
|
|
73
|
+
* @example <NumberSchemaInput name="age" schema={NUMBER} />
|
|
74
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/NumberSchemaInput
|
|
75
|
+
*/
|
|
32
76
|
export declare function NumberSchemaInput({ schema, value, ...props }: NumberSchemaInputProps): ReactElement;
|
|
77
|
+
/**
|
|
78
|
+
* Props for `ChoiceSchemaInput`, the `ChoiceSchema` input variant.
|
|
79
|
+
*
|
|
80
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ChoiceSchemaInputProps
|
|
81
|
+
*/
|
|
33
82
|
export interface ChoiceSchemaInputProps extends SchemaInputProps<ChoiceSchema<string>, unknown> {
|
|
34
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Show a choice input for a `ChoiceSchema` — radio inputs for up to 8 options, otherwise a select.
|
|
86
|
+
*
|
|
87
|
+
* @param props Props including the `ChoiceSchema` and value input props.
|
|
88
|
+
* @returns A `ChoiceRadioInputs` or `SelectInput` element bound to the schema.
|
|
89
|
+
* @example <ChoiceSchemaInput name="role" schema={ROLE} />
|
|
90
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ChoiceSchemaInput
|
|
91
|
+
*/
|
|
35
92
|
export declare function ChoiceSchemaInput({ schema, value, ...props }: ChoiceSchemaInputProps): ReactElement;
|
|
93
|
+
/**
|
|
94
|
+
* Props for `BooleanSchemaInput`, the `BooleanSchema` input variant.
|
|
95
|
+
*
|
|
96
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/BooleanSchemaInputProps
|
|
97
|
+
*/
|
|
36
98
|
export interface BooleanSchemaInputProps extends SchemaInputProps<BooleanSchema, unknown> {
|
|
37
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Show a `CheckboxInput` for a `BooleanSchema`.
|
|
102
|
+
*
|
|
103
|
+
* @param props Props including the `BooleanSchema` and value input props.
|
|
104
|
+
* @returns A `CheckboxInput` element bound to the schema.
|
|
105
|
+
* @example <BooleanSchemaInput name="agree" schema={BOOLEAN} />
|
|
106
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/BooleanSchemaInput
|
|
107
|
+
*/
|
|
38
108
|
export declare function BooleanSchemaInput({ schema, value, ...props }: BooleanSchemaInputProps): ReactElement;
|
|
109
|
+
/**
|
|
110
|
+
* Props for `StringSchemaInput`, the `StringSchema` input variant.
|
|
111
|
+
*
|
|
112
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/StringSchemaInputProps
|
|
113
|
+
*/
|
|
39
114
|
export interface StringSchemaInputProps extends SchemaInputProps<StringSchema, unknown> {
|
|
40
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Show a `TextInput` for a `StringSchema`, sanitising and formatting values with the schema.
|
|
118
|
+
*
|
|
119
|
+
* @param props Props including the `StringSchema` and value input props.
|
|
120
|
+
* @returns A `TextInput` element bound to the schema.
|
|
121
|
+
* @example <StringSchemaInput name="email" schema={EMAIL} />
|
|
122
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/StringSchemaInput
|
|
123
|
+
*/
|
|
41
124
|
export declare function StringSchemaInput({ schema, value, ...props }: StringSchemaInputProps): ReactElement;
|
|
125
|
+
/**
|
|
126
|
+
* Props for `ArraySchemaInput`, the `ArraySchema` input variant.
|
|
127
|
+
*
|
|
128
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ArraySchemaInputProps
|
|
129
|
+
*/
|
|
42
130
|
export interface ArraySchemaInputProps extends SchemaInputProps<ArraySchema<unknown>, unknown> {
|
|
43
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Show an `ArrayInput` for an `ArraySchema`.
|
|
134
|
+
*
|
|
135
|
+
* @param props Props including the `ArraySchema` and value input props.
|
|
136
|
+
* @returns An `ArrayInput` element bound to the schema.
|
|
137
|
+
* @example <ArraySchemaInput name="tags" schema={TAGS} />
|
|
138
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ArraySchemaInput
|
|
139
|
+
*/
|
|
44
140
|
export declare function ArraySchemaInput({ schema, value, ...props }: ArraySchemaInputProps): ReactElement;
|
|
141
|
+
/**
|
|
142
|
+
* Props for `DictionarySchemaInput`, the `DictionarySchema` input variant.
|
|
143
|
+
*
|
|
144
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DictionarySchemaInputProps
|
|
145
|
+
*/
|
|
45
146
|
export interface DictionarySchemaInputProps extends SchemaInputProps<DictionarySchema<unknown>, unknown> {
|
|
46
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Show a `DictionaryInput` for a `DictionarySchema`.
|
|
150
|
+
*
|
|
151
|
+
* @param props Props including the `DictionarySchema` and value input props.
|
|
152
|
+
* @returns A `DictionaryInput` element bound to the schema.
|
|
153
|
+
* @example <DictionarySchemaInput name="meta" schema={META} />
|
|
154
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DictionarySchemaInput
|
|
155
|
+
*/
|
|
47
156
|
export declare function DictionarySchemaInput({ schema, value, ...props }: DictionarySchemaInputProps): ReactElement;
|
|
157
|
+
/**
|
|
158
|
+
* Props for `DataSchemaInput`, the `DataSchema` input variant.
|
|
159
|
+
*
|
|
160
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DataSchemaInputProps
|
|
161
|
+
*/
|
|
48
162
|
export interface DataSchemaInputProps extends SchemaInputProps<DataSchema<Data>, unknown> {
|
|
49
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* Show a `DataInput` for a nested `DataSchema`.
|
|
166
|
+
*
|
|
167
|
+
* @param props Props including the `DataSchema` and value input props.
|
|
168
|
+
* @returns A `DataInput` element bound to the schema.
|
|
169
|
+
* @example <DataSchemaInput name="address" schema={ADDRESS} />
|
|
170
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DataSchemaInput
|
|
171
|
+
*/
|
|
50
172
|
export declare function DataSchemaInput({ schema, value, ...props }: DataSchemaInputProps): ReactElement;
|
|
173
|
+
/**
|
|
174
|
+
* Props for `SchemaField`: `SchemaInput` props plus optional `children` to override the input.
|
|
175
|
+
*
|
|
176
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaFieldProps
|
|
177
|
+
*/
|
|
51
178
|
export interface SchemaFieldProps extends SchemaInputProps<Schema, unknown>, OptionalChildProps {
|
|
52
179
|
}
|
|
53
180
|
/**
|
|
54
|
-
* Show the
|
|
181
|
+
* Show the appropriate input for a schema, wrapped in a `<Field>` with its label and message.
|
|
182
|
+
* - Renders custom `children` inside the field, or a `SchemaInput` when none are provided.
|
|
55
183
|
*
|
|
56
|
-
* @
|
|
57
|
-
* @
|
|
184
|
+
* @param props Props including the `schema`, optional `children`, and value input props.
|
|
185
|
+
* @returns A `<Field>` wrapping the schema's input.
|
|
186
|
+
* @example <SchemaField name="email" schema={EMAIL} /> // Outputs a `<Field>` wrapping a `<TextInput>`.
|
|
187
|
+
* @example <SchemaField name="age" schema={AGE} /> // Outputs a `<Field>` wrapping a `<NumberInput>`.
|
|
188
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaField
|
|
58
189
|
*/
|
|
59
190
|
export declare function SchemaField({ schema, children, ...props }: SchemaFieldProps): ReactElement;
|
package/ui/form/SchemaInput.js
CHANGED
|
@@ -27,7 +27,14 @@ import { Field } from "./Field.js";
|
|
|
27
27
|
import { NumberInput } from "./NumberInput.js";
|
|
28
28
|
import { SelectInput } from "./SelectInput.js";
|
|
29
29
|
import { TextInput } from "./TextInput.js";
|
|
30
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Whether a schema is required, i.e. not wrapped in an `OptionalSchema` or `NullableSchema`.
|
|
32
|
+
*
|
|
33
|
+
* @param schema The schema to test.
|
|
34
|
+
* @returns `true` if the schema is required, `false` if it is optional or nullable.
|
|
35
|
+
* @example isSchemaRequired(STRING) // true
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/isSchemaRequired
|
|
37
|
+
*/
|
|
31
38
|
export function isSchemaRequired(schema) {
|
|
32
39
|
return !(schema instanceof OptionalSchema || schema instanceof NullableSchema);
|
|
33
40
|
}
|
|
@@ -64,38 +71,106 @@ required = isSchemaRequired(schema), ...props }) {
|
|
|
64
71
|
return _jsx(DataSchemaInput, { name: name, schema: data, required: required, ...props });
|
|
65
72
|
throw new UnexpectedError(`Schema "${name}" has no corresponding form field`, { name, schema });
|
|
66
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Show a `DateInput` for a `DateSchema`.
|
|
76
|
+
*
|
|
77
|
+
* @param props Props including the `DateSchema` and value input props.
|
|
78
|
+
* @returns A `DateInput` element bound to the schema.
|
|
79
|
+
* @example <DateSchemaInput name="dob" schema={DATE} />
|
|
80
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DateSchemaInput
|
|
81
|
+
*/
|
|
67
82
|
export function DateSchemaInput({ schema, value, ...props }) {
|
|
68
83
|
return _jsx(DateInput, { ...schema, value: getString(value), ...props });
|
|
69
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Show a `NumberInput` for a `NumberSchema`, formatting values with the schema's `format()`.
|
|
87
|
+
*
|
|
88
|
+
* @param props Props including the `NumberSchema` and value input props.
|
|
89
|
+
* @returns A `NumberInput` element bound to the schema.
|
|
90
|
+
* @example <NumberSchemaInput name="age" schema={NUMBER} />
|
|
91
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/NumberSchemaInput
|
|
92
|
+
*/
|
|
70
93
|
export function NumberSchemaInput({ schema, value, ...props }) {
|
|
71
94
|
return _jsx(NumberInput, { ...schema, value: getNumber(value), formatter: num => schema.format(num), ...props });
|
|
72
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Show a choice input for a `ChoiceSchema` — radio inputs for up to 8 options, otherwise a select.
|
|
98
|
+
*
|
|
99
|
+
* @param props Props including the `ChoiceSchema` and value input props.
|
|
100
|
+
* @returns A `ChoiceRadioInputs` or `SelectInput` element bound to the schema.
|
|
101
|
+
* @example <ChoiceSchemaInput name="role" schema={ROLE} />
|
|
102
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ChoiceSchemaInput
|
|
103
|
+
*/
|
|
73
104
|
export function ChoiceSchemaInput({ schema, value, ...props }) {
|
|
74
105
|
const { options } = requireSource(ChoiceSchema, schema);
|
|
75
106
|
if (getKeys(options).length <= 8)
|
|
76
107
|
return _jsx(ChoiceRadioInputs, { ...schema, value: getString(value), ...props });
|
|
77
108
|
return _jsx(SelectInput, { ...schema, value: getString(value), ...props });
|
|
78
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Show a `CheckboxInput` for a `BooleanSchema`.
|
|
112
|
+
*
|
|
113
|
+
* @param props Props including the `BooleanSchema` and value input props.
|
|
114
|
+
* @returns A `CheckboxInput` element bound to the schema.
|
|
115
|
+
* @example <BooleanSchemaInput name="agree" schema={BOOLEAN} />
|
|
116
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/BooleanSchemaInput
|
|
117
|
+
*/
|
|
79
118
|
export function BooleanSchemaInput({ schema, value, ...props }) {
|
|
80
119
|
return _jsx(CheckboxInput, { ...schema, value: !!value, ...props });
|
|
81
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Show a `TextInput` for a `StringSchema`, sanitising and formatting values with the schema.
|
|
123
|
+
*
|
|
124
|
+
* @param props Props including the `StringSchema` and value input props.
|
|
125
|
+
* @returns A `TextInput` element bound to the schema.
|
|
126
|
+
* @example <StringSchemaInput name="email" schema={EMAIL} />
|
|
127
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/StringSchemaInput
|
|
128
|
+
*/
|
|
82
129
|
export function StringSchemaInput({ schema, value, ...props }) {
|
|
83
130
|
return _jsx(TextInput, { ...schema, value: getString(value), formatter: str => schema.format(schema.sanitize(str)), ...props });
|
|
84
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* Show an `ArrayInput` for an `ArraySchema`.
|
|
134
|
+
*
|
|
135
|
+
* @param props Props including the `ArraySchema` and value input props.
|
|
136
|
+
* @returns An `ArrayInput` element bound to the schema.
|
|
137
|
+
* @example <ArraySchemaInput name="tags" schema={TAGS} />
|
|
138
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ArraySchemaInput
|
|
139
|
+
*/
|
|
85
140
|
export function ArraySchemaInput({ schema, value, ...props }) {
|
|
86
141
|
return _jsx(ArrayInput, { ...schema, value: isArray(value) ? value : undefined, ...props });
|
|
87
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Show a `DictionaryInput` for a `DictionarySchema`.
|
|
145
|
+
*
|
|
146
|
+
* @param props Props including the `DictionarySchema` and value input props.
|
|
147
|
+
* @returns A `DictionaryInput` element bound to the schema.
|
|
148
|
+
* @example <DictionarySchemaInput name="meta" schema={META} />
|
|
149
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DictionarySchemaInput
|
|
150
|
+
*/
|
|
88
151
|
export function DictionarySchemaInput({ schema, value, ...props }) {
|
|
89
152
|
return _jsx(DictionaryInput, { ...schema, value: isDictionary(value) ? value : undefined, ...props });
|
|
90
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Show a `DataInput` for a nested `DataSchema`.
|
|
156
|
+
*
|
|
157
|
+
* @param props Props including the `DataSchema` and value input props.
|
|
158
|
+
* @returns A `DataInput` element bound to the schema.
|
|
159
|
+
* @example <DataSchemaInput name="address" schema={ADDRESS} />
|
|
160
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DataSchemaInput
|
|
161
|
+
*/
|
|
91
162
|
export function DataSchemaInput({ schema, value, ...props }) {
|
|
92
163
|
return _jsx(DataInput, { ...schema, value: isData(value) ? value : undefined, ...props });
|
|
93
164
|
}
|
|
94
165
|
/**
|
|
95
|
-
* Show the
|
|
166
|
+
* Show the appropriate input for a schema, wrapped in a `<Field>` with its label and message.
|
|
167
|
+
* - Renders custom `children` inside the field, or a `SchemaInput` when none are provided.
|
|
96
168
|
*
|
|
97
|
-
* @
|
|
98
|
-
* @
|
|
169
|
+
* @param props Props including the `schema`, optional `children`, and value input props.
|
|
170
|
+
* @returns A `<Field>` wrapping the schema's input.
|
|
171
|
+
* @example <SchemaField name="email" schema={EMAIL} /> // Outputs a `<Field>` wrapping a `<TextInput>`.
|
|
172
|
+
* @example <SchemaField name="age" schema={AGE} /> // Outputs a `<Field>` wrapping a `<NumberInput>`.
|
|
173
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaField
|
|
99
174
|
*/
|
|
100
175
|
export function SchemaField({ schema, children, ...props }) {
|
|
101
176
|
return (_jsx(Field, { ...props, ...schema, children: children ?? _jsx(SchemaInput, { schema: schema, ...props }) }));
|
package/ui/form/SchemaInput.tsx
CHANGED
|
@@ -32,20 +32,38 @@ import { NumberInput } from "./NumberInput.js";
|
|
|
32
32
|
import { SelectInput } from "./SelectInput.js";
|
|
33
33
|
import { TextInput } from "./TextInput.js";
|
|
34
34
|
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Whether a schema is required, i.e. not wrapped in an `OptionalSchema` or `NullableSchema`.
|
|
37
|
+
*
|
|
38
|
+
* @param schema The schema to test.
|
|
39
|
+
* @returns `true` if the schema is required, `false` if it is optional or nullable.
|
|
40
|
+
* @example isSchemaRequired(STRING) // true
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/isSchemaRequired
|
|
42
|
+
*/
|
|
36
43
|
export function isSchemaRequired(schema: Schema): boolean {
|
|
37
44
|
return !(schema instanceof OptionalSchema || schema instanceof NullableSchema);
|
|
38
45
|
}
|
|
39
46
|
|
|
47
|
+
/**
|
|
48
|
+
* Props for `SchemaInput` and its variants: a `schema` plus the value input props it drives.
|
|
49
|
+
*
|
|
50
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaInputProps
|
|
51
|
+
*/
|
|
40
52
|
export interface SchemaInputProps<T extends Schema, I = never> extends ValueInputProps<ValidatorType<T>, I> {
|
|
41
53
|
schema: T;
|
|
42
54
|
}
|
|
43
55
|
|
|
44
56
|
/**
|
|
45
|
-
* Show the
|
|
57
|
+
* Show the appropriate input control for a schema, dispatching on the schema's concrete type.
|
|
58
|
+
* - Picks `DateInput`, `NumberInput`, choice radios/select, `CheckboxInput`, `TextInput`, `ArrayInput`, `DictionaryInput`, or `DataInput`.
|
|
59
|
+
* - `required` defaults to whether the schema is required.
|
|
46
60
|
*
|
|
47
|
-
* @
|
|
48
|
-
* @
|
|
61
|
+
* @param props Props including the `schema` plus value input props.
|
|
62
|
+
* @returns The matching input element for the schema.
|
|
63
|
+
* @throws `UnexpectedError` if no input matches the schema type.
|
|
64
|
+
* @example <SchemaInput name="email" schema={EMAIL} /> // Outputs a `<TextInput>` for the "email" property.
|
|
65
|
+
* @example <SchemaInput name="age" schema={AGE} /> // Outputs a `<NumberInput>` for the "age" property.
|
|
66
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaInput
|
|
49
67
|
*/
|
|
50
68
|
export function SchemaInput<T extends Schema>(props: SchemaInputProps<T>): ReactElement;
|
|
51
69
|
export function SchemaInput({
|
|
@@ -86,63 +104,176 @@ export function SchemaInput({
|
|
|
86
104
|
throw new UnexpectedError(`Schema "${name}" has no corresponding form field`, { name, schema });
|
|
87
105
|
}
|
|
88
106
|
|
|
107
|
+
/**
|
|
108
|
+
* Props for `DateSchemaInput`, the `DateSchema` input variant.
|
|
109
|
+
*
|
|
110
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DateSchemaInputProps
|
|
111
|
+
*/
|
|
89
112
|
export interface DateSchemaInputProps extends SchemaInputProps<DateSchema, unknown> {}
|
|
90
113
|
|
|
114
|
+
/**
|
|
115
|
+
* Show a `DateInput` for a `DateSchema`.
|
|
116
|
+
*
|
|
117
|
+
* @param props Props including the `DateSchema` and value input props.
|
|
118
|
+
* @returns A `DateInput` element bound to the schema.
|
|
119
|
+
* @example <DateSchemaInput name="dob" schema={DATE} />
|
|
120
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DateSchemaInput
|
|
121
|
+
*/
|
|
91
122
|
export function DateSchemaInput({ schema, value, ...props }: DateSchemaInputProps): ReactElement {
|
|
92
123
|
return <DateInput {...schema} value={getString(value)} {...props} />;
|
|
93
124
|
}
|
|
94
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Props for `NumberSchemaInput`, the `NumberSchema` input variant.
|
|
128
|
+
*
|
|
129
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/NumberSchemaInputProps
|
|
130
|
+
*/
|
|
95
131
|
export interface NumberSchemaInputProps extends SchemaInputProps<NumberSchema, unknown> {}
|
|
96
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Show a `NumberInput` for a `NumberSchema`, formatting values with the schema's `format()`.
|
|
135
|
+
*
|
|
136
|
+
* @param props Props including the `NumberSchema` and value input props.
|
|
137
|
+
* @returns A `NumberInput` element bound to the schema.
|
|
138
|
+
* @example <NumberSchemaInput name="age" schema={NUMBER} />
|
|
139
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/NumberSchemaInput
|
|
140
|
+
*/
|
|
97
141
|
export function NumberSchemaInput({ schema, value, ...props }: NumberSchemaInputProps): ReactElement {
|
|
98
142
|
return <NumberInput {...schema} value={getNumber(value)} formatter={num => schema.format(num)} {...props} />;
|
|
99
143
|
}
|
|
100
144
|
|
|
145
|
+
/**
|
|
146
|
+
* Props for `ChoiceSchemaInput`, the `ChoiceSchema` input variant.
|
|
147
|
+
*
|
|
148
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ChoiceSchemaInputProps
|
|
149
|
+
*/
|
|
101
150
|
export interface ChoiceSchemaInputProps extends SchemaInputProps<ChoiceSchema<string>, unknown> {}
|
|
102
151
|
|
|
152
|
+
/**
|
|
153
|
+
* Show a choice input for a `ChoiceSchema` — radio inputs for up to 8 options, otherwise a select.
|
|
154
|
+
*
|
|
155
|
+
* @param props Props including the `ChoiceSchema` and value input props.
|
|
156
|
+
* @returns A `ChoiceRadioInputs` or `SelectInput` element bound to the schema.
|
|
157
|
+
* @example <ChoiceSchemaInput name="role" schema={ROLE} />
|
|
158
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ChoiceSchemaInput
|
|
159
|
+
*/
|
|
103
160
|
export function ChoiceSchemaInput({ schema, value, ...props }: ChoiceSchemaInputProps): ReactElement {
|
|
104
161
|
const { options } = requireSource(ChoiceSchema, schema);
|
|
105
162
|
if (getKeys(options).length <= 8) return <ChoiceRadioInputs {...schema} value={getString(value)} {...props} />;
|
|
106
163
|
return <SelectInput {...schema} value={getString(value)} {...props} />;
|
|
107
164
|
}
|
|
108
165
|
|
|
166
|
+
/**
|
|
167
|
+
* Props for `BooleanSchemaInput`, the `BooleanSchema` input variant.
|
|
168
|
+
*
|
|
169
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/BooleanSchemaInputProps
|
|
170
|
+
*/
|
|
109
171
|
export interface BooleanSchemaInputProps extends SchemaInputProps<BooleanSchema, unknown> {}
|
|
110
172
|
|
|
173
|
+
/**
|
|
174
|
+
* Show a `CheckboxInput` for a `BooleanSchema`.
|
|
175
|
+
*
|
|
176
|
+
* @param props Props including the `BooleanSchema` and value input props.
|
|
177
|
+
* @returns A `CheckboxInput` element bound to the schema.
|
|
178
|
+
* @example <BooleanSchemaInput name="agree" schema={BOOLEAN} />
|
|
179
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/BooleanSchemaInput
|
|
180
|
+
*/
|
|
111
181
|
export function BooleanSchemaInput({ schema, value, ...props }: BooleanSchemaInputProps): ReactElement {
|
|
112
182
|
return <CheckboxInput {...schema} value={!!value} {...props} />;
|
|
113
183
|
}
|
|
114
184
|
|
|
185
|
+
/**
|
|
186
|
+
* Props for `StringSchemaInput`, the `StringSchema` input variant.
|
|
187
|
+
*
|
|
188
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/StringSchemaInputProps
|
|
189
|
+
*/
|
|
115
190
|
export interface StringSchemaInputProps extends SchemaInputProps<StringSchema, unknown> {}
|
|
116
191
|
|
|
192
|
+
/**
|
|
193
|
+
* Show a `TextInput` for a `StringSchema`, sanitising and formatting values with the schema.
|
|
194
|
+
*
|
|
195
|
+
* @param props Props including the `StringSchema` and value input props.
|
|
196
|
+
* @returns A `TextInput` element bound to the schema.
|
|
197
|
+
* @example <StringSchemaInput name="email" schema={EMAIL} />
|
|
198
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/StringSchemaInput
|
|
199
|
+
*/
|
|
117
200
|
export function StringSchemaInput({ schema, value, ...props }: StringSchemaInputProps): ReactElement {
|
|
118
201
|
return <TextInput {...schema} value={getString(value)} formatter={str => schema.format(schema.sanitize(str))} {...props} />;
|
|
119
202
|
}
|
|
120
203
|
|
|
204
|
+
/**
|
|
205
|
+
* Props for `ArraySchemaInput`, the `ArraySchema` input variant.
|
|
206
|
+
*
|
|
207
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ArraySchemaInputProps
|
|
208
|
+
*/
|
|
121
209
|
export interface ArraySchemaInputProps extends SchemaInputProps<ArraySchema<unknown>, unknown> {}
|
|
122
210
|
|
|
211
|
+
/**
|
|
212
|
+
* Show an `ArrayInput` for an `ArraySchema`.
|
|
213
|
+
*
|
|
214
|
+
* @param props Props including the `ArraySchema` and value input props.
|
|
215
|
+
* @returns An `ArrayInput` element bound to the schema.
|
|
216
|
+
* @example <ArraySchemaInput name="tags" schema={TAGS} />
|
|
217
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/ArraySchemaInput
|
|
218
|
+
*/
|
|
123
219
|
export function ArraySchemaInput({ schema, value, ...props }: ArraySchemaInputProps): ReactElement {
|
|
124
220
|
return <ArrayInput {...schema} value={isArray(value) ? value : undefined} {...props} />;
|
|
125
221
|
}
|
|
126
222
|
|
|
223
|
+
/**
|
|
224
|
+
* Props for `DictionarySchemaInput`, the `DictionarySchema` input variant.
|
|
225
|
+
*
|
|
226
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DictionarySchemaInputProps
|
|
227
|
+
*/
|
|
127
228
|
export interface DictionarySchemaInputProps extends SchemaInputProps<DictionarySchema<unknown>, unknown> {}
|
|
128
229
|
|
|
230
|
+
/**
|
|
231
|
+
* Show a `DictionaryInput` for a `DictionarySchema`.
|
|
232
|
+
*
|
|
233
|
+
* @param props Props including the `DictionarySchema` and value input props.
|
|
234
|
+
* @returns A `DictionaryInput` element bound to the schema.
|
|
235
|
+
* @example <DictionarySchemaInput name="meta" schema={META} />
|
|
236
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DictionarySchemaInput
|
|
237
|
+
*/
|
|
129
238
|
export function DictionarySchemaInput({ schema, value, ...props }: DictionarySchemaInputProps): ReactElement {
|
|
130
239
|
return <DictionaryInput {...schema} value={isDictionary(value) ? value : undefined} {...props} />;
|
|
131
240
|
}
|
|
132
241
|
|
|
242
|
+
/**
|
|
243
|
+
* Props for `DataSchemaInput`, the `DataSchema` input variant.
|
|
244
|
+
*
|
|
245
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DataSchemaInputProps
|
|
246
|
+
*/
|
|
133
247
|
export interface DataSchemaInputProps extends SchemaInputProps<DataSchema<Data>, unknown> {}
|
|
134
248
|
|
|
249
|
+
/**
|
|
250
|
+
* Show a `DataInput` for a nested `DataSchema`.
|
|
251
|
+
*
|
|
252
|
+
* @param props Props including the `DataSchema` and value input props.
|
|
253
|
+
* @returns A `DataInput` element bound to the schema.
|
|
254
|
+
* @example <DataSchemaInput name="address" schema={ADDRESS} />
|
|
255
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/DataSchemaInput
|
|
256
|
+
*/
|
|
135
257
|
export function DataSchemaInput({ schema, value, ...props }: DataSchemaInputProps): ReactElement {
|
|
136
258
|
return <DataInput {...schema} value={isData(value) ? value : undefined} {...props} />;
|
|
137
259
|
}
|
|
138
260
|
|
|
261
|
+
/**
|
|
262
|
+
* Props for `SchemaField`: `SchemaInput` props plus optional `children` to override the input.
|
|
263
|
+
*
|
|
264
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaFieldProps
|
|
265
|
+
*/
|
|
139
266
|
export interface SchemaFieldProps extends SchemaInputProps<Schema, unknown>, OptionalChildProps {}
|
|
140
267
|
|
|
141
268
|
/**
|
|
142
|
-
* Show the
|
|
269
|
+
* Show the appropriate input for a schema, wrapped in a `<Field>` with its label and message.
|
|
270
|
+
* - Renders custom `children` inside the field, or a `SchemaInput` when none are provided.
|
|
143
271
|
*
|
|
144
|
-
* @
|
|
145
|
-
* @
|
|
272
|
+
* @param props Props including the `schema`, optional `children`, and value input props.
|
|
273
|
+
* @returns A `<Field>` wrapping the schema's input.
|
|
274
|
+
* @example <SchemaField name="email" schema={EMAIL} /> // Outputs a `<Field>` wrapping a `<TextInput>`.
|
|
275
|
+
* @example <SchemaField name="age" schema={AGE} /> // Outputs a `<Field>` wrapping a `<NumberInput>`.
|
|
276
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SchemaInput/SchemaField
|
|
146
277
|
*/
|
|
147
278
|
export function SchemaField({ schema, children, ...props }: SchemaFieldProps): ReactElement {
|
|
148
279
|
return (
|
package/ui/form/SelectInput.d.ts
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
import type { ReactElement } from "react";
|
|
2
2
|
import type { ChoiceOptions } from "../../schema/ChoiceSchema.js";
|
|
3
3
|
import { type ValueInputProps } from "./Input.js";
|
|
4
|
+
/**
|
|
5
|
+
* Props for `SelectInput`, a dropdown `<select>` bound to a string value.
|
|
6
|
+
*
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SelectInput/SelectProps
|
|
8
|
+
*/
|
|
4
9
|
export interface SelectProps<T extends string> extends ValueInputProps<T> {
|
|
5
10
|
/** The options for the select. */
|
|
6
11
|
options: ChoiceOptions<T>;
|
|
7
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* Dropdown input bound to a string value, rendered as a `<select>` of the provided `options`.
|
|
15
|
+
* - Shows a placeholder empty option unless the field is required and already has a value.
|
|
16
|
+
*
|
|
17
|
+
* @param props Props including `options`, `value`, `onValue`, and `placeholder`.
|
|
18
|
+
* @returns A `<select>` element.
|
|
19
|
+
* @example <SelectInput name="role" options={ROLES} value={role} onValue={setRole} />
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SelectInput/SelectInput
|
|
21
|
+
*/
|
|
8
22
|
export declare function SelectInput<T extends string>(props: SelectProps<T>): ReactElement;
|
package/ui/form/SelectInput.tsx
CHANGED
|
@@ -3,11 +3,25 @@ import type { ChoiceOptions } from "../../schema/ChoiceSchema.js";
|
|
|
3
3
|
import { getProps } from "../../util/object.js";
|
|
4
4
|
import { EMPTY_OPTION_CLASS, SELECT_INPUT_CLASS, VALUE_OPTION_CLASS, type ValueInputProps } from "./Input.js";
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Props for `SelectInput`, a dropdown `<select>` bound to a string value.
|
|
8
|
+
*
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SelectInput/SelectProps
|
|
10
|
+
*/
|
|
6
11
|
export interface SelectProps<T extends string> extends ValueInputProps<T> {
|
|
7
12
|
/** The options for the select. */
|
|
8
13
|
options: ChoiceOptions<T>;
|
|
9
14
|
}
|
|
10
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Dropdown input bound to a string value, rendered as a `<select>` of the provided `options`.
|
|
18
|
+
* - Shows a placeholder empty option unless the field is required and already has a value.
|
|
19
|
+
*
|
|
20
|
+
* @param props Props including `options`, `value`, `onValue`, and `placeholder`.
|
|
21
|
+
* @returns A `<select>` element.
|
|
22
|
+
* @example <SelectInput name="role" options={ROLES} value={role} onValue={setRole} />
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SelectInput/SelectInput
|
|
24
|
+
*/
|
|
11
25
|
export function SelectInput<T extends string>(props: SelectProps<T>): ReactElement;
|
|
12
26
|
export function SelectInput({
|
|
13
27
|
name,
|
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import type { ReactElement } from "react";
|
|
2
2
|
import type { OptionalChildProps } from "../util/props.js";
|
|
3
3
|
import { type ButtonVariants } from "./Button.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Submit button for a form that disables itself and shows a spinner while the form is busy.
|
|
6
|
+
* - Defaults to strong, full-width, primary styling and a "Save" label.
|
|
7
|
+
*
|
|
8
|
+
* @param props Button variants and optional `children` label content.
|
|
9
|
+
* @returns A `<button type="submit">` element bound to the current form.
|
|
10
|
+
* @example <SubmitButton>Save changes</SubmitButton>
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SubmitButton/SubmitButton
|
|
12
|
+
*/
|
|
5
13
|
export declare function SubmitButton({ children, strong, color, full, ...variants }: SubmitButtonProps): ReactElement;
|
|
14
|
+
/**
|
|
15
|
+
* Props for `SubmitButton`, a form submit button.
|
|
16
|
+
*
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SubmitButton/SubmitButtonProps
|
|
18
|
+
*/
|
|
6
19
|
export interface SubmitButtonProps extends ButtonVariants, OptionalChildProps {
|
|
7
20
|
}
|
package/ui/form/SubmitButton.js
CHANGED
|
@@ -4,7 +4,15 @@ import { useStore } from "../../react/useStore.js";
|
|
|
4
4
|
import { Loading } from "../misc/Loading.js";
|
|
5
5
|
import { getButtonClass } from "./Button.js";
|
|
6
6
|
import { requireForm } from "./FormContext.js";
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Submit button for a form that disables itself and shows a spinner while the form is busy.
|
|
9
|
+
* - Defaults to strong, full-width, primary styling and a "Save" label.
|
|
10
|
+
*
|
|
11
|
+
* @param props Button variants and optional `children` label content.
|
|
12
|
+
* @returns A `<button type="submit">` element bound to the current form.
|
|
13
|
+
* @example <SubmitButton>Save changes</SubmitButton>
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SubmitButton/SubmitButton
|
|
15
|
+
*/
|
|
8
16
|
export function SubmitButton({ children = SUBMIT_CHILDREN, strong = true, color = "primary", full = true, ...variants }) {
|
|
9
17
|
const form = requireForm();
|
|
10
18
|
const busy = useStore(form.busy).value;
|
package/ui/form/SubmitButton.tsx
CHANGED
|
@@ -6,7 +6,15 @@ import type { OptionalChildProps } from "../util/props.js";
|
|
|
6
6
|
import { type ButtonVariants, getButtonClass } from "./Button.js";
|
|
7
7
|
import { requireForm } from "./FormContext.js";
|
|
8
8
|
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Submit button for a form that disables itself and shows a spinner while the form is busy.
|
|
11
|
+
* - Defaults to strong, full-width, primary styling and a "Save" label.
|
|
12
|
+
*
|
|
13
|
+
* @param props Button variants and optional `children` label content.
|
|
14
|
+
* @returns A `<button type="submit">` element bound to the current form.
|
|
15
|
+
* @example <SubmitButton>Save changes</SubmitButton>
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SubmitButton/SubmitButton
|
|
17
|
+
*/
|
|
10
18
|
export function SubmitButton({
|
|
11
19
|
children = SUBMIT_CHILDREN,
|
|
12
20
|
strong = true,
|
|
@@ -23,6 +31,11 @@ export function SubmitButton({
|
|
|
23
31
|
);
|
|
24
32
|
}
|
|
25
33
|
|
|
34
|
+
/**
|
|
35
|
+
* Props for `SubmitButton`, a form submit button.
|
|
36
|
+
*
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/ui/form/SubmitButton/SubmitButtonProps
|
|
38
|
+
*/
|
|
26
39
|
export interface SubmitButtonProps extends ButtonVariants, OptionalChildProps {}
|
|
27
40
|
|
|
28
41
|
const SUBMIT_CHILDREN = (
|