diff --git a/paperless/manifest.json b/paperless/manifest.json index f1679d5..977980c 100644 --- a/paperless/manifest.json +++ b/paperless/manifest.json @@ -1,7 +1,7 @@ { "id": "paperless", "name": "Paperless-ngx", - "version": "1.1.1", + "version": "1.2.0", "author": "Bulwark Mail Community", "description": "Send attachments and messages to Paperless-ngx, find your documents there and attach them to new mail.", "type": "ui-extension", @@ -20,7 +20,7 @@ "ui:download-file" ], "entrypoint": "index.js", - "minAppVersion": "1.15.0", + "minAppVersion": "1.16.0", "icon": "media/icon.svg", "banner": "media/banner.svg", "configSchema": { diff --git a/paperless/package-lock.json b/paperless/package-lock.json index f35fab4..9ee1969 100644 --- a/paperless/package-lock.json +++ b/paperless/package-lock.json @@ -1,12 +1,12 @@ { "name": "bulwark-plugin-paperless", - "version": "1.1.1", + "version": "1.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "bulwark-plugin-paperless", - "version": "1.1.1", + "version": "1.2.0", "devDependencies": { "esbuild": "^0.28.1" } diff --git a/paperless/package.json b/paperless/package.json index 2ef37f3..5067c2a 100644 --- a/paperless/package.json +++ b/paperless/package.json @@ -1,6 +1,6 @@ { "name": "bulwark-plugin-paperless", - "version": "1.1.1", + "version": "1.2.0", "private": true, "type": "module", "scripts": { diff --git a/paperless/paperless.zip b/paperless/paperless.zip index 7a9dfa3..31107eb 100644 Binary files a/paperless/paperless.zip and b/paperless/paperless.zip differ diff --git a/paperless/src/ui/common.jsx b/paperless/src/ui/common.jsx index a24ac47..9c8eff8 100644 --- a/paperless/src/ui/common.jsx +++ b/paperless/src/ui/common.jsx @@ -1,5 +1,5 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; -import { Alert, Badge, Button, Checkbox, EmptyState, Field, LinkButton, Row, Select, Stack, Text } from '@plugin-host/ui'; +import { Alert, Badge, Button, Combobox, EmptyState, Field, LinkButton, Stack } from '@plugin-host/ui'; import { getApi, t, hostOf } from './host.js'; import { clientFor, connectPersonal, resolveConnection } from '../lib/connection.js'; import { errorText } from '../lib/errors.js'; @@ -73,41 +73,54 @@ export function ConnectEmptyState({ connection, onConnected }) { ); } -/** A select over Paperless objects, with an empty "none" entry. */ -export function PickOne({ label, items, value, onChange, noneLabel, suggested, block = true }) { +/** A searchable combobox over Paperless objects, with an empty "none" entry. */ +export function PickOne({ label, items, value, onChange, noneLabel, suggested, block = true, placeholder }) { + const options = useMemo(() => [ + { value: '', label: noneLabel || t('common.none') }, + ...(items || []).map((it) => ({ value: String(it.id), label: it.name })), + ], [items, noneLabel]); + + const handleChange = useCallback((v) => { + onChange?.(v === '' ? null : Number(v)); + }, [onChange]); + + const strValue = value == null ? '' : String(value); + const fieldLabel = suggested ? <>{label} {t('send.suggested')} : label; + return ( - {label} {t('send.suggested')} : label}> -