mirror of
https://github.com/zadam/trilium.git
synced 2025-11-26 10:34:25 +01:00
chore(react/promoted_attributes): map promoted attribute types
This commit is contained in:
parent
87f30ed3d5
commit
49189bc63e
@ -5,9 +5,10 @@ import { Attribute } from "../services/attribute_parser";
|
|||||||
import FAttribute from "../entities/fattribute";
|
import FAttribute from "../entities/fattribute";
|
||||||
import clsx from "clsx";
|
import clsx from "clsx";
|
||||||
import { t } from "../services/i18n";
|
import { t } from "../services/i18n";
|
||||||
import { DefinitionObject } from "../services/promoted_attribute_definition_parser";
|
import { DefinitionObject, LabelType } from "../services/promoted_attribute_definition_parser";
|
||||||
import server from "../services/server";
|
import server from "../services/server";
|
||||||
import FNote from "../entities/fnote";
|
import FNote from "../entities/fnote";
|
||||||
|
import { HTMLInputTypeAttribute } from "preact";
|
||||||
|
|
||||||
interface Cell {
|
interface Cell {
|
||||||
definitionAttr: FAttribute;
|
definitionAttr: FAttribute;
|
||||||
@ -116,6 +117,17 @@ function PromotedAttributeCell(props: CellProps) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const LABEL_MAPPINGS: Record<LabelType, HTMLInputTypeAttribute> = {
|
||||||
|
text: "text",
|
||||||
|
number: "number",
|
||||||
|
boolean: "checkbox",
|
||||||
|
date: "date",
|
||||||
|
datetime: "datetime-local",
|
||||||
|
time: "time",
|
||||||
|
color: "hidden", // handled separately.
|
||||||
|
url: "url"
|
||||||
|
};
|
||||||
|
|
||||||
function LabelInput({ inputId, ...props }: CellProps & { inputId: string }) {
|
function LabelInput({ inputId, ...props }: CellProps & { inputId: string }) {
|
||||||
const { valueAttr, definition, definitionAttr } = props.cell;
|
const { valueAttr, definition, definitionAttr } = props.cell;
|
||||||
|
|
||||||
@ -136,6 +148,7 @@ function LabelInput({ inputId, ...props }: CellProps & { inputId: string }) {
|
|||||||
className="form-control promoted-attribute-input"
|
className="form-control promoted-attribute-input"
|
||||||
tabIndex={200 + definitionAttr.position}
|
tabIndex={200 + definitionAttr.position}
|
||||||
id={inputId}
|
id={inputId}
|
||||||
|
type={LABEL_MAPPINGS[definition.labelType ?? "text"]}
|
||||||
value={valueAttr.value}
|
value={valueAttr.value}
|
||||||
placeholder={t("promoted_attributes.unset-field-placeholder")}
|
placeholder={t("promoted_attributes.unset-field-placeholder")}
|
||||||
data-attribute-id={valueAttr.attributeId}
|
data-attribute-id={valueAttr.attributeId}
|
||||||
@ -207,7 +220,6 @@ function MultiplicityCell({ cell, cells, setCells, setCellToFocus, note, compone
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
console.log("Delete at ", index, isLastOneOfType);
|
|
||||||
setCells(cells.toSpliced(index, 1, ...newOnesToInsert));
|
setCells(cells.toSpliced(index, 1, ...newOnesToInsert));
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -28,16 +28,7 @@ export default class PromotedAttributesWidget extends NoteContextAwareWidget {
|
|||||||
if (valueAttr.type === "label") {
|
if (valueAttr.type === "label") {
|
||||||
$wrapper.addClass(`promoted-attribute-label-${definition.labelType}`);
|
$wrapper.addClass(`promoted-attribute-label-${definition.labelType}`);
|
||||||
if (definition.labelType === "text") {
|
if (definition.labelType === "text") {
|
||||||
$input.prop("type", "text");
|
|
||||||
|
|
||||||
// autocomplete for label values is just nice to have, mobile can keep labels editable without autocomplete
|
|
||||||
if (utils.isDesktop()) {
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} else if (definition.labelType === "number") {
|
} else if (definition.labelType === "number") {
|
||||||
$input.prop("type", "number");
|
|
||||||
|
|
||||||
let step = 1;
|
let step = 1;
|
||||||
|
|
||||||
for (let i = 0; i < (definition.numberPrecision || 0) && i < 10; i++) {
|
for (let i = 0; i < (definition.numberPrecision || 0) && i < 10; i++) {
|
||||||
@ -47,8 +38,6 @@ export default class PromotedAttributesWidget extends NoteContextAwareWidget {
|
|||||||
$input.prop("step", step);
|
$input.prop("step", step);
|
||||||
$input.css("text-align", "right").css("width", "120");
|
$input.css("text-align", "right").css("width", "120");
|
||||||
} else if (definition.labelType === "boolean") {
|
} else if (definition.labelType === "boolean") {
|
||||||
$input.prop("type", "checkbox");
|
|
||||||
|
|
||||||
$input.wrap($(`<label class="tn-checkbox"></label>`));
|
$input.wrap($(`<label class="tn-checkbox"></label>`));
|
||||||
$wrapper.find(".input-group").removeClass("input-group");
|
$wrapper.find(".input-group").removeClass("input-group");
|
||||||
|
|
||||||
@ -56,11 +45,8 @@ export default class PromotedAttributesWidget extends NoteContextAwareWidget {
|
|||||||
$input.prop("checked", "checked");
|
$input.prop("checked", "checked");
|
||||||
}
|
}
|
||||||
} else if (definition.labelType === "date") {
|
} else if (definition.labelType === "date") {
|
||||||
$input.prop("type", "date");
|
|
||||||
} else if (definition.labelType === "datetime") {
|
} else if (definition.labelType === "datetime") {
|
||||||
$input.prop("type", "datetime-local");
|
|
||||||
} else if (definition.labelType === "time") {
|
} else if (definition.labelType === "time") {
|
||||||
$input.prop("type", "time");
|
|
||||||
} else if (definition.labelType === "url") {
|
} else if (definition.labelType === "url") {
|
||||||
$input.prop("placeholder", t("promoted_attributes.url_placeholder"));
|
$input.prop("placeholder", t("promoted_attributes.url_placeholder"));
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user