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
|
@@ -9,6 +9,11 @@ import { Popover } from "./Popover.js";
|
|
|
9
9
|
* - The first element passed to `children` is used as the content for the button, the rest is the content of the popover.
|
|
10
10
|
*
|
|
11
11
|
* DH: Would love to use new HTML `popover="auto"` functionality for this but the anchor positioning it needs is not supported everywhere yet.
|
|
12
|
+
*
|
|
13
|
+
* @param props Props including the input `name` and `children` whose first node is the button and the rest the popover.
|
|
14
|
+
* @returns A `Popover` wrapping a `ButtonInput` that toggles it open and closed.
|
|
15
|
+
* @example <ButtonInputPopover name="filter">{label}{panel}</ButtonInputPopover>
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ButtonInputPopover/ButtonInputPopover
|
|
12
17
|
*/
|
|
13
18
|
export function ButtonInputPopover({ children: [buttonChildren, ...popoverChildren], //
|
|
14
19
|
...props }) {
|
|
@@ -6,6 +6,11 @@ import { ButtonInput } from "./ButtonInput.js";
|
|
|
6
6
|
import type { InputProps } from "./Input.js";
|
|
7
7
|
import { Popover, type PopoverChildren } from "./Popover.js";
|
|
8
8
|
|
|
9
|
+
/**
|
|
10
|
+
* Props for `ButtonInputPopover`, an input button that toggles an adjacent popover.
|
|
11
|
+
*
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ButtonInputPopover/ButtonInputPopoverProps
|
|
13
|
+
*/
|
|
9
14
|
export interface ButtonInputPopoverProps extends InputProps {
|
|
10
15
|
children: PopoverChildren;
|
|
11
16
|
}
|
|
@@ -15,6 +20,11 @@ export interface ButtonInputPopoverProps extends InputProps {
|
|
|
15
20
|
* - The first element passed to `children` is used as the content for the button, the rest is the content of the popover.
|
|
16
21
|
*
|
|
17
22
|
* DH: Would love to use new HTML `popover="auto"` functionality for this but the anchor positioning it needs is not supported everywhere yet.
|
|
23
|
+
*
|
|
24
|
+
* @param props Props including the input `name` and `children` whose first node is the button and the rest the popover.
|
|
25
|
+
* @returns A `Popover` wrapping a `ButtonInput` that toggles it open and closed.
|
|
26
|
+
* @example <ButtonInputPopover name="filter">{label}{panel}</ButtonInputPopover>
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ButtonInputPopover/ButtonInputPopover
|
|
18
28
|
*/
|
|
19
29
|
export function ButtonInputPopover({
|
|
20
30
|
children: [buttonChildren, ...popoverChildren], //
|
|
@@ -3,14 +3,24 @@
|
|
|
3
3
|
import { type ReactElement } from "react";
|
|
4
4
|
import { type ButtonVariants } from "./Button.js";
|
|
5
5
|
import { type PopoverChildren } from "./Popover.js";
|
|
6
|
+
/**
|
|
7
|
+
* Props for `ButtonPopover`, a button that toggles an adjacent popover.
|
|
8
|
+
*
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ButtonPopover/ButtonPopoverProps
|
|
10
|
+
*/
|
|
6
11
|
export interface ButtonPopoverProps extends ButtonVariants {
|
|
7
12
|
children: PopoverChildren;
|
|
8
13
|
}
|
|
9
14
|
/**
|
|
10
|
-
*
|
|
15
|
+
* A button that, when clicked, shows a popover next to it when clicked or focused.
|
|
11
16
|
* - The first element passed to `children` is used as the content for the button, the rest is the content of the popover.
|
|
12
17
|
*
|
|
13
18
|
* DH: Would love to use new HTML `popover="auto"` functionality for this but the anchor positioning it needs is not supported everywhere yet.
|
|
19
|
+
*
|
|
20
|
+
* @param props Props including `Button` variants and `children` whose first node is the button and the rest the popover.
|
|
21
|
+
* @returns A `Popover` wrapping a `Button` that toggles it open and closed.
|
|
22
|
+
* @example <ButtonPopover>{label}{panel}</ButtonPopover>
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ButtonPopover/ButtonPopover
|
|
14
24
|
*/
|
|
15
25
|
export declare function ButtonPopover({ children: [buttonChildren, ...popoverChildren], //
|
|
16
26
|
...props }: ButtonPopoverProps): ReactElement;
|
package/ui/form/ButtonPopover.js
CHANGED
|
@@ -5,10 +5,15 @@ import { useState } from "react";
|
|
|
5
5
|
import { Button } from "./Button.js";
|
|
6
6
|
import { Popover } from "./Popover.js";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* A button that, when clicked, shows a popover next to it when clicked or focused.
|
|
9
9
|
* - The first element passed to `children` is used as the content for the button, the rest is the content of the popover.
|
|
10
10
|
*
|
|
11
11
|
* DH: Would love to use new HTML `popover="auto"` functionality for this but the anchor positioning it needs is not supported everywhere yet.
|
|
12
|
+
*
|
|
13
|
+
* @param props Props including `Button` variants and `children` whose first node is the button and the rest the popover.
|
|
14
|
+
* @returns A `Popover` wrapping a `Button` that toggles it open and closed.
|
|
15
|
+
* @example <ButtonPopover>{label}{panel}</ButtonPopover>
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ButtonPopover/ButtonPopover
|
|
12
17
|
*/
|
|
13
18
|
export function ButtonPopover({ children: [buttonChildren, ...popoverChildren], //
|
|
14
19
|
...props }) {
|
|
@@ -5,15 +5,25 @@ import { type ReactElement, useState } from "react";
|
|
|
5
5
|
import { Button, type ButtonVariants } from "./Button.js";
|
|
6
6
|
import { Popover, type PopoverChildren } from "./Popover.js";
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Props for `ButtonPopover`, a button that toggles an adjacent popover.
|
|
10
|
+
*
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ButtonPopover/ButtonPopoverProps
|
|
12
|
+
*/
|
|
8
13
|
export interface ButtonPopoverProps extends ButtonVariants {
|
|
9
14
|
children: PopoverChildren;
|
|
10
15
|
}
|
|
11
16
|
|
|
12
17
|
/**
|
|
13
|
-
*
|
|
18
|
+
* A button that, when clicked, shows a popover next to it when clicked or focused.
|
|
14
19
|
* - The first element passed to `children` is used as the content for the button, the rest is the content of the popover.
|
|
15
20
|
*
|
|
16
21
|
* DH: Would love to use new HTML `popover="auto"` functionality for this but the anchor positioning it needs is not supported everywhere yet.
|
|
22
|
+
*
|
|
23
|
+
* @param props Props including `Button` variants and `children` whose first node is the button and the rest the popover.
|
|
24
|
+
* @returns A `Popover` wrapping a `Button` that toggles it open and closed.
|
|
25
|
+
* @example <ButtonPopover>{label}{panel}</ButtonPopover>
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ButtonPopover/ButtonPopover
|
|
17
27
|
*/
|
|
18
28
|
export function ButtonPopover({
|
|
19
29
|
children: [buttonChildren, ...popoverChildren], //
|
|
@@ -2,7 +2,20 @@ import type { ReactElement } from "react";
|
|
|
2
2
|
import { type FlexVariants } from "../style/Flex.js";
|
|
3
3
|
import type { OptionalChildProps } from "../util/props.js";
|
|
4
4
|
import { type ValueInputProps } from "./Input.js";
|
|
5
|
+
/**
|
|
6
|
+
* Props for `CheckboxInput`, a boolean-valued checkbox input.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/ui/form/CheckboxInput/CheckboxProps
|
|
9
|
+
*/
|
|
5
10
|
export interface CheckboxProps extends ValueInputProps<boolean>, OptionalChildProps, FlexVariants {
|
|
6
11
|
}
|
|
7
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Checkbox input bound to a `boolean` value, rendered as a labelled `<input type="checkbox">`.
|
|
14
|
+
* - The label content comes from `children`, falling back to `placeholder`/`title`.
|
|
15
|
+
*
|
|
16
|
+
* @param props Props including `value`, `onValue`, label `children`, and `Flex` variants.
|
|
17
|
+
* @returns A `<label>` wrapping the checkbox and its label content.
|
|
18
|
+
* @example <CheckboxInput name="agree" value={agree} onValue={setAgree}>I agree</CheckboxInput>
|
|
19
|
+
* @see https://dhoulb.github.io/shelving/ui/form/CheckboxInput/CheckboxInput
|
|
20
|
+
*/
|
|
8
21
|
export declare function CheckboxInput({ name, title, placeholder, required, disabled, message, value, onValue, children, ...variants }: CheckboxProps): ReactElement;
|
package/ui/form/CheckboxInput.js
CHANGED
|
@@ -3,7 +3,15 @@ import { notNullish } from "../../util/null.js";
|
|
|
3
3
|
import { getFlexClass } from "../style/Flex.js";
|
|
4
4
|
import { getClass } from "../util/css.js";
|
|
5
5
|
import { CHECKBOX_CLASS, LABEL_INPUT_CLASS, PLACEHOLDER_CLASS } from "./Input.js";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Checkbox input bound to a `boolean` value, rendered as a labelled `<input type="checkbox">`.
|
|
8
|
+
* - The label content comes from `children`, falling back to `placeholder`/`title`.
|
|
9
|
+
*
|
|
10
|
+
* @param props Props including `value`, `onValue`, label `children`, and `Flex` variants.
|
|
11
|
+
* @returns A `<label>` wrapping the checkbox and its label content.
|
|
12
|
+
* @example <CheckboxInput name="agree" value={agree} onValue={setAgree}>I agree</CheckboxInput>
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/ui/form/CheckboxInput/CheckboxInput
|
|
14
|
+
*/
|
|
7
15
|
export function CheckboxInput({ name, title, placeholder = title || "Yes", required = false, disabled = false, message = "", value = false, onValue, children, ...variants }) {
|
|
8
16
|
const hasChildren = notNullish(children);
|
|
9
17
|
return (_jsxs("label", { className: getClass(LABEL_INPUT_CLASS, getFlexClass(variants), hasChildren && PLACEHOLDER_CLASS), "aria-invalid": !!message, children: [_jsx("input", { name: name, type: "checkbox", defaultChecked: !!value, onChange: e => onValue?.(!!e.currentTarget.checked), required: required, disabled: disabled, title: message, className: CHECKBOX_CLASS }), _jsx("span", { children: hasChildren ? children : placeholder })] }));
|
|
@@ -5,9 +5,22 @@ import { getClass } from "../util/css.js";
|
|
|
5
5
|
import type { OptionalChildProps } from "../util/props.js";
|
|
6
6
|
import { CHECKBOX_CLASS, LABEL_INPUT_CLASS, PLACEHOLDER_CLASS, type ValueInputProps } from "./Input.js";
|
|
7
7
|
|
|
8
|
+
/**
|
|
9
|
+
* Props for `CheckboxInput`, a boolean-valued checkbox input.
|
|
10
|
+
*
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/ui/form/CheckboxInput/CheckboxProps
|
|
12
|
+
*/
|
|
8
13
|
export interface CheckboxProps extends ValueInputProps<boolean>, OptionalChildProps, FlexVariants {}
|
|
9
14
|
|
|
10
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Checkbox input bound to a `boolean` value, rendered as a labelled `<input type="checkbox">`.
|
|
17
|
+
* - The label content comes from `children`, falling back to `placeholder`/`title`.
|
|
18
|
+
*
|
|
19
|
+
* @param props Props including `value`, `onValue`, label `children`, and `Flex` variants.
|
|
20
|
+
* @returns A `<label>` wrapping the checkbox and its label content.
|
|
21
|
+
* @example <CheckboxInput name="agree" value={agree} onValue={setAgree}>I agree</CheckboxInput>
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/ui/form/CheckboxInput/CheckboxInput
|
|
23
|
+
*/
|
|
11
24
|
export function CheckboxInput({
|
|
12
25
|
name,
|
|
13
26
|
title,
|
|
@@ -1,6 +1,11 @@
|
|
|
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 `ChoiceRadioInputs`, which renders a radio for each entry in a `ChoiceOptions` set.
|
|
6
|
+
*
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ChoiceRadioInputs/ChoiceRadioInputsProps
|
|
8
|
+
*/
|
|
4
9
|
export interface ChoiceRadioInputsProps<T extends string> extends ValueInputProps<T> {
|
|
5
10
|
/** Options for the radios. */
|
|
6
11
|
options: ChoiceOptions<T>;
|
|
@@ -13,5 +18,10 @@ export interface ChoiceRadioInputsProps<T extends string> extends ValueInputProp
|
|
|
13
18
|
* Output a list of `<RadioInput>` elements for each item in a set of `ChoiceOptions` in `{ key: title }` format.
|
|
14
19
|
* - This is the same type a `ChoiceSchema` uses for its `.options` field.
|
|
15
20
|
* - A `placeholder` option is shown at the bottom if `required=false`.
|
|
21
|
+
*
|
|
22
|
+
* @param props Props including the `options` set, current `value`, `onValue`, and `wrap`/`column` layout flags.
|
|
23
|
+
* @returns Element rendering one radio per option plus an optional empty placeholder radio.
|
|
24
|
+
* @example <ChoiceRadioInputs name="role" options={{ admin: "Admin", user: "User" }} value={role} onValue={setRole} />
|
|
25
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ChoiceRadioInputs/ChoiceRadioInputs
|
|
16
26
|
*/
|
|
17
27
|
export declare function ChoiceRadioInputs<T extends string>(props: ChoiceRadioInputsProps<T>): ReactElement;
|
|
@@ -8,6 +8,11 @@ import { RadioInput } from "./RadioInput.js";
|
|
|
8
8
|
/** Maximum number of options to show in a row. */
|
|
9
9
|
const MAX_ROW_OPTIONS = 2;
|
|
10
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Props for `ChoiceRadioInputs`, which renders a radio for each entry in a `ChoiceOptions` set.
|
|
13
|
+
*
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ChoiceRadioInputs/ChoiceRadioInputsProps
|
|
15
|
+
*/
|
|
11
16
|
export interface ChoiceRadioInputsProps<T extends string> extends ValueInputProps<T> {
|
|
12
17
|
/** Options for the radios. */
|
|
13
18
|
options: ChoiceOptions<T>;
|
|
@@ -21,6 +26,11 @@ export interface ChoiceRadioInputsProps<T extends string> extends ValueInputProp
|
|
|
21
26
|
* Output a list of `<RadioInput>` elements for each item in a set of `ChoiceOptions` in `{ key: title }` format.
|
|
22
27
|
* - This is the same type a `ChoiceSchema` uses for its `.options` field.
|
|
23
28
|
* - A `placeholder` option is shown at the bottom if `required=false`.
|
|
29
|
+
*
|
|
30
|
+
* @param props Props including the `options` set, current `value`, `onValue`, and `wrap`/`column` layout flags.
|
|
31
|
+
* @returns Element rendering one radio per option plus an optional empty placeholder radio.
|
|
32
|
+
* @example <ChoiceRadioInputs name="role" options={{ admin: "Admin", user: "User" }} value={role} onValue={setRole} />
|
|
33
|
+
* @see https://dhoulb.github.io/shelving/ui/form/ChoiceRadioInputs/ChoiceRadioInputs
|
|
24
34
|
*/
|
|
25
35
|
export function ChoiceRadioInputs<T extends string>(props: ChoiceRadioInputsProps<T>): ReactElement;
|
|
26
36
|
export function ChoiceRadioInputs({
|
package/ui/form/Clickable.d.ts
CHANGED
|
@@ -2,13 +2,21 @@ import type { MouseEvent, ReactElement, ReactNode } from "react";
|
|
|
2
2
|
import type { Path } from "../../util/path.js";
|
|
3
3
|
import type { ImmutableURI, URIString } from "../../util/uri.js";
|
|
4
4
|
import type { OptionalChildProps } from "../util/props.js";
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
6
|
* Handler for a clickable `onClick` event.
|
|
7
7
|
* - Returned value (if defined) is notified to the user using `notifySuccess()`
|
|
8
8
|
* - Thrown value is notified to the user using `notifyError()`
|
|
9
|
+
*
|
|
10
|
+
* @param event The `MouseEvent` from the underlying `<button>`.
|
|
11
|
+
* @returns A `ReactNode` (shown as a success notice), nothing, or a promise of either.
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/ClickableCallback
|
|
9
13
|
*/
|
|
10
14
|
export type ClickableCallback = (event: MouseEvent<HTMLButtonElement>) => ReactNode | void | PromiseLike<ReactNode | void>;
|
|
11
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Props for a thing that can be clicked — either has a string `href` link or an `onClick` callback handler.
|
|
17
|
+
*
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/ClickableProps
|
|
19
|
+
*/
|
|
12
20
|
export interface ClickableProps extends OptionalChildProps {
|
|
13
21
|
/** Whether the clickable is currently disabled. */
|
|
14
22
|
disabled?: boolean | undefined;
|
|
@@ -23,14 +31,46 @@ export interface ClickableProps extends OptionalChildProps {
|
|
|
23
31
|
/** Title shown on hover. */
|
|
24
32
|
title?: string | undefined;
|
|
25
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Props for a clickable that also accepts a `className` for styling.
|
|
36
|
+
*
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/StylableClickableProps
|
|
38
|
+
*/
|
|
26
39
|
export interface StylableClickableProps extends ClickableProps {
|
|
27
40
|
className?: string | undefined;
|
|
28
41
|
}
|
|
29
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Render either a `<button>`, an `<a href="">`, or a plain `<span>` based on whether an `onClick` or `href` prop is provided.
|
|
44
|
+
* - `href` renders a `LinkClickable`; `onClick` renders a `ButtonClickable`; neither renders a `SpanClickable`.
|
|
45
|
+
*
|
|
46
|
+
* @example <Clickable href="/about">About</Clickable>
|
|
47
|
+
* @example <Clickable onClick={save}>Save</Clickable>
|
|
48
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/Clickable
|
|
49
|
+
*/
|
|
30
50
|
export declare function Clickable(props: StylableClickableProps): ReactElement;
|
|
31
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Render an `<a href="">` element, resolving its `href` against the current page URL and marking it active when it matches.
|
|
53
|
+
* - The `href` is resolved against the current page URL and site root so site-absolute paths (`/foo`) honour the base subfolder.
|
|
54
|
+
* - Sets `aria-current="page"` when the link points at the current URL.
|
|
55
|
+
*
|
|
56
|
+
* @example <LinkClickable href="/about" className="link">About</LinkClickable>
|
|
57
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/LinkClickable
|
|
58
|
+
*/
|
|
32
59
|
export declare function LinkClickable({ href, disabled, target, download, title, children, className, }: StylableClickableProps): ReactElement;
|
|
33
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Render a `<button>` element that runs its `onClick` handler through a `BusyStore` and shows a loading spinner while busy.
|
|
62
|
+
* - Notifies the user of the handler's returned value (success) or thrown value (error).
|
|
63
|
+
* - Disabled and ignores clicks while a previous click is still pending.
|
|
64
|
+
*
|
|
65
|
+
* @example <ButtonClickable onClick={save} className="btn">Save</ButtonClickable>
|
|
66
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/ButtonClickable
|
|
67
|
+
*/
|
|
34
68
|
export declare function ButtonClickable({ onClick, disabled, title, children, className, }: StylableClickableProps): ReactElement;
|
|
69
|
+
/**
|
|
70
|
+
* Render a non-interactive `<span>` element, used as the fallback when neither `href` nor `onClick` is provided.
|
|
71
|
+
*
|
|
72
|
+
* @example <SpanClickable className="label">Static</SpanClickable>
|
|
73
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/SpanClickable
|
|
74
|
+
*/
|
|
35
75
|
export declare function SpanClickable({ title, children, //
|
|
36
76
|
className, }: StylableClickableProps): ReactElement;
|
package/ui/form/Clickable.js
CHANGED
|
@@ -7,11 +7,25 @@ import { getLink } from "../../util/link.js";
|
|
|
7
7
|
import { LOADING } from "../misc/Loading.js";
|
|
8
8
|
import { requireMeta } from "../misc/MetaContext.js";
|
|
9
9
|
import { callNotifiedElement } from "../util/notice.js";
|
|
10
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Render either a `<button>`, an `<a href="">`, or a plain `<span>` based on whether an `onClick` or `href` prop is provided.
|
|
12
|
+
* - `href` renders a `LinkClickable`; `onClick` renders a `ButtonClickable`; neither renders a `SpanClickable`.
|
|
13
|
+
*
|
|
14
|
+
* @example <Clickable href="/about">About</Clickable>
|
|
15
|
+
* @example <Clickable onClick={save}>Save</Clickable>
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/Clickable
|
|
17
|
+
*/
|
|
11
18
|
export function Clickable(props) {
|
|
12
19
|
return "href" in props ? (_jsx(LinkClickable, { ...props })) : "onClick" in props ? (_jsx(ButtonClickable, { ...props })) : (_jsx(SpanClickable, { ...props }));
|
|
13
20
|
}
|
|
14
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Render an `<a href="">` element, resolving its `href` against the current page URL and marking it active when it matches.
|
|
23
|
+
* - The `href` is resolved against the current page URL and site root so site-absolute paths (`/foo`) honour the base subfolder.
|
|
24
|
+
* - Sets `aria-current="page"` when the link points at the current URL.
|
|
25
|
+
*
|
|
26
|
+
* @example <LinkClickable href="/about" className="link">About</LinkClickable>
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/LinkClickable
|
|
28
|
+
*/
|
|
15
29
|
export function LinkClickable({ href, disabled = !href, target, download, title, children = "Go", className, }) {
|
|
16
30
|
// Resolve `href` against the current page URL and site root so site-absolute paths (`/foo`) honour the base subfolder.
|
|
17
31
|
const { url, root } = requireMeta();
|
|
@@ -20,7 +34,14 @@ export function LinkClickable({ href, disabled = !href, target, download, title,
|
|
|
20
34
|
const active = isURLActive(link, url);
|
|
21
35
|
return (_jsx("a", { href: link?.href, title: title, download: download, target: target, className: className, "aria-current": active ? "page" : undefined, children: children }));
|
|
22
36
|
}
|
|
23
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Render a `<button>` element that runs its `onClick` handler through a `BusyStore` and shows a loading spinner while busy.
|
|
39
|
+
* - Notifies the user of the handler's returned value (success) or thrown value (error).
|
|
40
|
+
* - Disabled and ignores clicks while a previous click is still pending.
|
|
41
|
+
*
|
|
42
|
+
* @example <ButtonClickable onClick={save} className="btn">Save</ButtonClickable>
|
|
43
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/ButtonClickable
|
|
44
|
+
*/
|
|
24
45
|
export function ButtonClickable({ onClick, disabled = !onClick, title, children = "Click", className, }) {
|
|
25
46
|
// Create a `BusyStore<undefined>` to keep track of the `onClick` call and any thrown errors.
|
|
26
47
|
const store = useInstance(BusyStore, undefined);
|
|
@@ -35,6 +56,12 @@ export function ButtonClickable({ onClick, disabled = !onClick, title, children
|
|
|
35
56
|
}
|
|
36
57
|
}, children: busy ? LOADING : children }));
|
|
37
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Render a non-interactive `<span>` element, used as the fallback when neither `href` nor `onClick` is provided.
|
|
61
|
+
*
|
|
62
|
+
* @example <SpanClickable className="label">Static</SpanClickable>
|
|
63
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/SpanClickable
|
|
64
|
+
*/
|
|
38
65
|
export function SpanClickable({ title, children = "Click", //
|
|
39
66
|
className, }) {
|
|
40
67
|
return (_jsx("span", { title: title, className: className, children: children }));
|
package/ui/form/Clickable.tsx
CHANGED
|
@@ -11,14 +11,22 @@ import { requireMeta } from "../misc/MetaContext.js";
|
|
|
11
11
|
import { callNotifiedElement } from "../util/notice.js";
|
|
12
12
|
import type { OptionalChildProps } from "../util/props.js";
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
15
|
* Handler for a clickable `onClick` event.
|
|
16
16
|
* - Returned value (if defined) is notified to the user using `notifySuccess()`
|
|
17
17
|
* - Thrown value is notified to the user using `notifyError()`
|
|
18
|
+
*
|
|
19
|
+
* @param event The `MouseEvent` from the underlying `<button>`.
|
|
20
|
+
* @returns A `ReactNode` (shown as a success notice), nothing, or a promise of either.
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/ClickableCallback
|
|
18
22
|
*/
|
|
19
23
|
export type ClickableCallback = (event: MouseEvent<HTMLButtonElement>) => ReactNode | void | PromiseLike<ReactNode | void>;
|
|
20
24
|
|
|
21
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Props for a thing that can be clicked — either has a string `href` link or an `onClick` callback handler.
|
|
27
|
+
*
|
|
28
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/ClickableProps
|
|
29
|
+
*/
|
|
22
30
|
export interface ClickableProps extends OptionalChildProps {
|
|
23
31
|
/** Whether the clickable is currently disabled. */
|
|
24
32
|
disabled?: boolean | undefined;
|
|
@@ -34,11 +42,23 @@ export interface ClickableProps extends OptionalChildProps {
|
|
|
34
42
|
title?: string | undefined;
|
|
35
43
|
}
|
|
36
44
|
|
|
45
|
+
/**
|
|
46
|
+
* Props for a clickable that also accepts a `className` for styling.
|
|
47
|
+
*
|
|
48
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/StylableClickableProps
|
|
49
|
+
*/
|
|
37
50
|
export interface StylableClickableProps extends ClickableProps {
|
|
38
51
|
className?: string | undefined;
|
|
39
52
|
}
|
|
40
53
|
|
|
41
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Render either a `<button>`, an `<a href="">`, or a plain `<span>` based on whether an `onClick` or `href` prop is provided.
|
|
56
|
+
* - `href` renders a `LinkClickable`; `onClick` renders a `ButtonClickable`; neither renders a `SpanClickable`.
|
|
57
|
+
*
|
|
58
|
+
* @example <Clickable href="/about">About</Clickable>
|
|
59
|
+
* @example <Clickable onClick={save}>Save</Clickable>
|
|
60
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/Clickable
|
|
61
|
+
*/
|
|
42
62
|
export function Clickable(props: StylableClickableProps): ReactElement {
|
|
43
63
|
return "href" in props ? (
|
|
44
64
|
<LinkClickable {...props} />
|
|
@@ -49,7 +69,14 @@ export function Clickable(props: StylableClickableProps): ReactElement {
|
|
|
49
69
|
);
|
|
50
70
|
}
|
|
51
71
|
|
|
52
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* Render an `<a href="">` element, resolving its `href` against the current page URL and marking it active when it matches.
|
|
74
|
+
* - The `href` is resolved against the current page URL and site root so site-absolute paths (`/foo`) honour the base subfolder.
|
|
75
|
+
* - Sets `aria-current="page"` when the link points at the current URL.
|
|
76
|
+
*
|
|
77
|
+
* @example <LinkClickable href="/about" className="link">About</LinkClickable>
|
|
78
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/LinkClickable
|
|
79
|
+
*/
|
|
53
80
|
export function LinkClickable({
|
|
54
81
|
href,
|
|
55
82
|
disabled = !href,
|
|
@@ -80,7 +107,14 @@ export function LinkClickable({
|
|
|
80
107
|
);
|
|
81
108
|
}
|
|
82
109
|
|
|
83
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* Render a `<button>` element that runs its `onClick` handler through a `BusyStore` and shows a loading spinner while busy.
|
|
112
|
+
* - Notifies the user of the handler's returned value (success) or thrown value (error).
|
|
113
|
+
* - Disabled and ignores clicks while a previous click is still pending.
|
|
114
|
+
*
|
|
115
|
+
* @example <ButtonClickable onClick={save} className="btn">Save</ButtonClickable>
|
|
116
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/ButtonClickable
|
|
117
|
+
*/
|
|
84
118
|
export function ButtonClickable({
|
|
85
119
|
onClick,
|
|
86
120
|
disabled = !onClick,
|
|
@@ -116,6 +150,12 @@ export function ButtonClickable({
|
|
|
116
150
|
);
|
|
117
151
|
}
|
|
118
152
|
|
|
153
|
+
/**
|
|
154
|
+
* Render a non-interactive `<span>` element, used as the fallback when neither `href` nor `onClick` is provided.
|
|
155
|
+
*
|
|
156
|
+
* @example <SpanClickable className="label">Static</SpanClickable>
|
|
157
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Clickable/SpanClickable
|
|
158
|
+
*/
|
|
119
159
|
export function SpanClickable({
|
|
120
160
|
title,
|
|
121
161
|
children = "Click", //
|
package/ui/form/DataInput.d.ts
CHANGED
|
@@ -2,8 +2,22 @@ import type { ReactElement } from "react";
|
|
|
2
2
|
import type { Schemas } from "../../schema/Schema.js";
|
|
3
3
|
import type { Data } from "../../util/data.js";
|
|
4
4
|
import type { ValueInputProps } from "./Input.js";
|
|
5
|
+
/**
|
|
6
|
+
* Props for `DataInput`, a composite input that edits an object of schema-validated sub-fields.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DataInput/DataInputProps
|
|
9
|
+
*/
|
|
5
10
|
export interface DataInputProps<T extends Data> extends ValueInputProps<T> {
|
|
6
11
|
/** Schema for the sub-fields of this input. */
|
|
7
12
|
props: Schemas<T>;
|
|
8
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Composite input that edits a data object by rendering a `SchemaInput` for each property schema.
|
|
16
|
+
* - Each sub-field is keyed by its property name and validated using the matching schema in `props`.
|
|
17
|
+
*
|
|
18
|
+
* @param props Props including the per-property `props` schemas, current `value`, and `onValue`.
|
|
19
|
+
* @returns Element rendering one input per property, laid out in a row or column.
|
|
20
|
+
* @example <DataInput name="address" props={addressSchemas} value={address} onValue={setAddress} />
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DataInput/DataInput
|
|
22
|
+
*/
|
|
9
23
|
export declare function DataInput<T extends Data>(props: DataInputProps<T>): ReactElement;
|
package/ui/form/DataInput.tsx
CHANGED
|
@@ -7,11 +7,25 @@ import { Row } from "../style/Flex.js";
|
|
|
7
7
|
import type { ValueInputProps } from "./Input.js";
|
|
8
8
|
import { SchemaInput } from "./SchemaInput.js";
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Props for `DataInput`, a composite input that edits an object of schema-validated sub-fields.
|
|
12
|
+
*
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DataInput/DataInputProps
|
|
14
|
+
*/
|
|
10
15
|
export interface DataInputProps<T extends Data> extends ValueInputProps<T> {
|
|
11
16
|
/** Schema for the sub-fields of this input. */
|
|
12
17
|
props: Schemas<T>;
|
|
13
18
|
}
|
|
14
19
|
|
|
20
|
+
/**
|
|
21
|
+
* Composite input that edits a data object by rendering a `SchemaInput` for each property schema.
|
|
22
|
+
* - Each sub-field is keyed by its property name and validated using the matching schema in `props`.
|
|
23
|
+
*
|
|
24
|
+
* @param props Props including the per-property `props` schemas, current `value`, and `onValue`.
|
|
25
|
+
* @returns Element rendering one input per property, laid out in a row or column.
|
|
26
|
+
* @example <DataInput name="address" props={addressSchemas} value={address} onValue={setAddress} />
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DataInput/DataInput
|
|
28
|
+
*/
|
|
15
29
|
export function DataInput<T extends Data>(props: DataInputProps<T>): ReactElement;
|
|
16
30
|
export function DataInput({
|
|
17
31
|
// name,
|
package/ui/form/DateInput.d.ts
CHANGED
|
@@ -2,11 +2,25 @@ import type { ReactElement } from "react";
|
|
|
2
2
|
import type { DateInputType } from "../../schema/DateSchema.js";
|
|
3
3
|
import { type PossibleDate } from "../../util/date.js";
|
|
4
4
|
import { type ValueInputProps } from "./Input.js";
|
|
5
|
+
/**
|
|
6
|
+
* Props for `DateInput`, a date/time `<input>` that emits an ISO string value.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DateInput/DateInputProps
|
|
9
|
+
*/
|
|
5
10
|
export interface DateInputProps extends ValueInputProps<string, PossibleDate> {
|
|
6
11
|
min?: PossibleDate | undefined;
|
|
7
12
|
max?: PossibleDate | undefined;
|
|
8
13
|
input?: DateInputType | undefined;
|
|
9
14
|
step?: number | undefined;
|
|
10
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Date, time, or datetime input that accepts a `PossibleDate` and emits an ISO string value.
|
|
18
|
+
* - The `input` prop selects the underlying `<input type="date|time|datetime-local">` and matching string format.
|
|
19
|
+
*
|
|
20
|
+
* @param props Props including `value`, `onValue`, optional `min`/`max` bounds, `input` type, and `step`.
|
|
21
|
+
* @returns A native date/time `<input>` element.
|
|
22
|
+
* @example <DateInput name="dob" input="date" value={dob} onValue={setDob} />
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DateInput/DateInput
|
|
24
|
+
*/
|
|
11
25
|
export declare function DateInput({ name, title, placeholder, // Placeholder must be defined or `:placeholder-shown` CSS rules won't show.
|
|
12
26
|
required, disabled, message, value, onValue, min, max, input, step, }: DateInputProps): ReactElement;
|
package/ui/form/DateInput.js
CHANGED
|
@@ -7,6 +7,15 @@ const _DATE_TO_STRING = {
|
|
|
7
7
|
date: getDateString, // YYYY-MM-DD
|
|
8
8
|
time: getTimeString, // HH:MM:SS
|
|
9
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Date, time, or datetime input that accepts a `PossibleDate` and emits an ISO string value.
|
|
12
|
+
* - The `input` prop selects the underlying `<input type="date|time|datetime-local">` and matching string format.
|
|
13
|
+
*
|
|
14
|
+
* @param props Props including `value`, `onValue`, optional `min`/`max` bounds, `input` type, and `step`.
|
|
15
|
+
* @returns A native date/time `<input>` element.
|
|
16
|
+
* @example <DateInput name="dob" input="date" value={dob} onValue={setDob} />
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DateInput/DateInput
|
|
18
|
+
*/
|
|
10
19
|
export function DateInput({ name, title = "", placeholder = title, // Placeholder must be defined or `:placeholder-shown` CSS rules won't show.
|
|
11
20
|
required = false, disabled = false, message = "", value, onValue, min, max, input = "date", step, }) {
|
|
12
21
|
const onChange = (e) => {
|
package/ui/form/DateInput.tsx
CHANGED
|
@@ -10,6 +10,11 @@ const _DATE_TO_STRING: { [K in DateInputType]: (d: PossibleDate | undefined) =>
|
|
|
10
10
|
time: getTimeString, // HH:MM:SS
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Props for `DateInput`, a date/time `<input>` that emits an ISO string value.
|
|
15
|
+
*
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DateInput/DateInputProps
|
|
17
|
+
*/
|
|
13
18
|
export interface DateInputProps extends ValueInputProps<string, PossibleDate> {
|
|
14
19
|
min?: PossibleDate | undefined;
|
|
15
20
|
max?: PossibleDate | undefined;
|
|
@@ -17,6 +22,15 @@ export interface DateInputProps extends ValueInputProps<string, PossibleDate> {
|
|
|
17
22
|
step?: number | undefined;
|
|
18
23
|
}
|
|
19
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Date, time, or datetime input that accepts a `PossibleDate` and emits an ISO string value.
|
|
27
|
+
* - The `input` prop selects the underlying `<input type="date|time|datetime-local">` and matching string format.
|
|
28
|
+
*
|
|
29
|
+
* @param props Props including `value`, `onValue`, optional `min`/`max` bounds, `input` type, and `step`.
|
|
30
|
+
* @returns A native date/time `<input>` element.
|
|
31
|
+
* @example <DateInput name="dob" input="date" value={dob} onValue={setDob} />
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DateInput/DateInput
|
|
33
|
+
*/
|
|
20
34
|
export function DateInput({
|
|
21
35
|
name,
|
|
22
36
|
title = "",
|
|
@@ -2,6 +2,11 @@ import type { ReactElement } from "react";
|
|
|
2
2
|
import type { Schema } from "../../schema/Schema.js";
|
|
3
3
|
import type { ImmutableDictionary } from "../../util/dictionary.js";
|
|
4
4
|
import type { ValueInputProps } from "./Input.js";
|
|
5
|
+
/**
|
|
6
|
+
* Props for `DictionaryInput`, a repeating input that edits a dictionary of schema-validated items.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DictionaryInput/DictionaryInputProps
|
|
9
|
+
*/
|
|
5
10
|
export interface DictionaryInputProps<T> extends ValueInputProps<ImmutableDictionary<T>> {
|
|
6
11
|
one?: string;
|
|
7
12
|
many?: string;
|
|
@@ -10,4 +15,14 @@ export interface DictionaryInputProps<T> extends ValueInputProps<ImmutableDictio
|
|
|
10
15
|
/** Schema for the items in the repeater. */
|
|
11
16
|
items: Schema<T>;
|
|
12
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Repeating input that edits a dictionary, with an editable key and schema-validated value per entry.
|
|
20
|
+
* - Each value is validated and rendered using the supplied `items` schema.
|
|
21
|
+
* - Enforces `min`/`max` entry count and offers add, remove, and clear controls.
|
|
22
|
+
*
|
|
23
|
+
* @param props Props including `value`, `onValue`, the `items` schema, and `min`/`max` entry bounds.
|
|
24
|
+
* @returns Element rendering one key/value row per entry plus add/clear controls.
|
|
25
|
+
* @example <DictionaryInput name="meta" items={STRING} value={meta} onValue={setMeta} />
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DictionaryInput/DictionaryInput
|
|
27
|
+
*/
|
|
13
28
|
export declare function DictionaryInput<T>(props: DictionaryInputProps<T>): ReactElement;
|
|
@@ -13,6 +13,11 @@ import type { ValueInputProps } from "./Input.js";
|
|
|
13
13
|
import { SchemaInput } from "./SchemaInput.js";
|
|
14
14
|
import { TextInput } from "./TextInput.js";
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Props for `DictionaryInput`, a repeating input that edits a dictionary of schema-validated items.
|
|
18
|
+
*
|
|
19
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DictionaryInput/DictionaryInputProps
|
|
20
|
+
*/
|
|
16
21
|
export interface DictionaryInputProps<T> extends ValueInputProps<ImmutableDictionary<T>> {
|
|
17
22
|
one?: string;
|
|
18
23
|
many?: string;
|
|
@@ -22,6 +27,16 @@ export interface DictionaryInputProps<T> extends ValueInputProps<ImmutableDictio
|
|
|
22
27
|
items: Schema<T>;
|
|
23
28
|
}
|
|
24
29
|
|
|
30
|
+
/**
|
|
31
|
+
* Repeating input that edits a dictionary, with an editable key and schema-validated value per entry.
|
|
32
|
+
* - Each value is validated and rendered using the supplied `items` schema.
|
|
33
|
+
* - Enforces `min`/`max` entry count and offers add, remove, and clear controls.
|
|
34
|
+
*
|
|
35
|
+
* @param props Props including `value`, `onValue`, the `items` schema, and `min`/`max` entry bounds.
|
|
36
|
+
* @returns Element rendering one key/value row per entry plus add/clear controls.
|
|
37
|
+
* @example <DictionaryInput name="meta" items={STRING} value={meta} onValue={setMeta} />
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/ui/form/DictionaryInput/DictionaryInput
|
|
39
|
+
*/
|
|
25
40
|
export function DictionaryInput<T>(props: DictionaryInputProps<T>): ReactElement;
|
|
26
41
|
export function DictionaryInput({
|
|
27
42
|
name,
|
package/ui/form/Field.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { ReactElement, ReactNode } from "react";
|
|
2
2
|
import type { ChildProps } from "../util/props.js";
|
|
3
|
+
/**
|
|
4
|
+
* Props for `Field`, a labelled wrapper around a form control.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/ui/form/Field/FieldProps
|
|
7
|
+
*/
|
|
3
8
|
export interface FieldProps extends ChildProps {
|
|
4
9
|
title?: ReactNode | undefined;
|
|
5
10
|
description?: ReactNode | undefined;
|