Attachment preview
This commit is contained in:
@@ -61,7 +61,7 @@ export default function AttachmentRulesOverlay({
|
||||
}
|
||||
|
||||
function addOverlayRule() {
|
||||
onChange([...rules, createAttachmentRule(basePaths[0]?.path ?? "", nextAttachmentLabel(rules))]);
|
||||
onChange([...rules, createAttachmentRule(basePaths[0]?.path ?? "", nextAttachmentLabel(rules), basePaths[0]?.id ?? "")]);
|
||||
}
|
||||
|
||||
const dialog = open ? createPortal(
|
||||
@@ -110,7 +110,7 @@ export function AttachmentRulesTable({
|
||||
function addRule() {
|
||||
onChange([
|
||||
...tableProps.rules,
|
||||
createAttachmentRule(tableProps.basePaths?.[0]?.path ?? "", nextAttachmentLabel(tableProps.rules))
|
||||
createAttachmentRule(tableProps.basePaths?.[0]?.path ?? "", nextAttachmentLabel(tableProps.rules), tableProps.basePaths?.[0]?.id ?? "")
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -158,7 +158,8 @@ export function AttachmentRulesDataGrid({
|
||||
}
|
||||
const rule = rules[ruleIndex] ?? {};
|
||||
const currentPath = getText(rule, "base_dir", basePaths[0]?.path ?? "");
|
||||
const basePath = basePaths.find((item) => item.path === currentPath) ?? basePaths[0] ?? null;
|
||||
const currentBasePathId = getText(rule, "base_path_id");
|
||||
const basePath = basePaths.find((item) => item.id === currentBasePathId) ?? basePaths.find((item) => item.path === currentPath) ?? basePaths[0] ?? null;
|
||||
setFileChooser({ ruleIndex, basePath });
|
||||
}
|
||||
|
||||
@@ -166,6 +167,7 @@ export function AttachmentRulesDataGrid({
|
||||
if (!fileChooser) return;
|
||||
const currentRule = rules[fileChooser.ruleIndex] ?? {};
|
||||
patchRule(fileChooser.ruleIndex, {
|
||||
base_path_id: fileChooser.basePath?.id ?? "",
|
||||
base_dir: fileChooser.basePath?.path ?? (selection.folderPath || "."),
|
||||
file_filter: selection.fileFilter,
|
||||
type: selection.selectionType === "file" ? "direct" : "pattern",
|
||||
@@ -223,13 +225,22 @@ function attachmentRuleColumns({ disabled, basePaths, activeChooserRuleIndex: _a
|
||||
sortable: true,
|
||||
filterable: true,
|
||||
render: (rule, index) => {
|
||||
const currentBasePath = getText(rule, "base_dir", basePaths[0]?.path ?? "");
|
||||
const currentBasePathValue = getText(rule, "base_dir", basePaths[0]?.path ?? "");
|
||||
const currentBasePathId = getText(rule, "base_path_id");
|
||||
const selectedBasePath = basePaths.find((basePath) => basePath.id === currentBasePathId) ?? basePaths.find((basePath) => basePath.path === currentBasePathValue) ?? basePaths[0];
|
||||
return basePaths.length > 0 ? (
|
||||
<select value={currentBasePath} disabled={disabled} onChange={(event) => patchRule(index, { base_dir: event.target.value })}>
|
||||
{basePaths.map((basePath) => <option key={basePath.id} value={basePath.path}>{basePath.name || basePath.path}</option>)}
|
||||
<select
|
||||
value={selectedBasePath?.id ?? ""}
|
||||
disabled={disabled}
|
||||
onChange={(event) => {
|
||||
const nextBasePath = basePaths.find((basePath) => basePath.id === event.target.value);
|
||||
if (nextBasePath) patchRule(index, { base_path_id: nextBasePath.id, base_dir: nextBasePath.path });
|
||||
}}
|
||||
>
|
||||
{basePaths.map((basePath) => <option key={basePath.id} value={basePath.id}>{basePath.name || basePath.path}</option>)}
|
||||
</select>
|
||||
) : (
|
||||
<input value={currentBasePath} disabled={disabled} readOnly placeholder="optional/folder" />
|
||||
<input value={currentBasePathValue} disabled={disabled} readOnly placeholder="optional/folder" />
|
||||
);
|
||||
},
|
||||
value: (rule) => getText(rule, "base_dir", basePaths[0]?.path ?? "")
|
||||
|
||||
Reference in New Issue
Block a user