Drop ${objectTypeReference}
- here${isMultipleTypes
+
+
+ : html`
Cannot get full ${isMultipleTypes ? this.type.join(" / ") : this.type}
+ path${this.multiple ? "s" : ""} on web distribution`}
+ `
+ : html`Drop ${objectTypeReference}
+ here${isMultipleTypes
+ ? ""
+ : `, or click to choose ${getObjectTypeReferenceString(this.type, this.multiple, {
+ native: true,
+ })}`}${this.multiple &&
+ (this.type === "directory" ||
+ (isMultipleTypes && this.type.includes("directory") && !dialog))
+ ? html`
Multiple directory support only available using drag-and-drop.`
+ : ""}`}
+
+ ${this.multiple && this.value.length > 1
+ ? new List({
+ items: this.value.map((v) => ({ value: v })),
+ editable: false,
+ onChange: function () {
+ instanceThis.value = this.items.map((item) => item.value);
+ },
+ })
+ : ""}
+
${isMultipleTypes
? html`
${this.type.map(
diff --git a/src/renderer/src/stories/List.ts b/src/renderer/src/stories/List.ts
index 9e1f8a061..af3ad0222 100644
--- a/src/renderer/src/stories/List.ts
+++ b/src/renderer/src/stories/List.ts
@@ -317,6 +317,8 @@ export class List extends LitElement {
this.items = [...this.items]
}
}
+
+ this.onChange() // Register that the object has changed
};
button.onClick = deleteListItem;
diff --git a/src/renderer/src/stories/Table.js b/src/renderer/src/stories/Table.js
index 9612ac6b6..9d211cd26 100644
--- a/src/renderer/src/stories/Table.js
+++ b/src/renderer/src/stories/Table.js
@@ -266,20 +266,20 @@ export class Table extends LitElement {
}
};
- let ogThis = this;
+ let instanceThis = this;
const isRequired = this.isRequired(k);
const validator = async function (value, callback) {
- const validateEmptyCells = ogThis.validateEmptyCells;
+ const validateEmptyCells = instanceThis.validateEmptyCells;
const willValidate =
validateEmptyCells === true ||
(Array.isArray(validateEmptyCells) && validateEmptyCells.includes(k));
- value = ogThis.#getValue(value, colInfo);
+ value = instanceThis.#getValue(value, colInfo);
// Clear empty values if not validated
if (!value && !willValidate) {
- ogThis.#handleValidationResult(
+ instanceThis.#handleValidationResult(
[], // Clear errors
this.row,
this.col
@@ -288,9 +288,9 @@ export class Table extends LitElement {
return;
}
- if (value && k === ogThis.keyColumn && unresolved[this.row]) {
- if (value in ogThis.data) {
- ogThis.#handleValidationResult(
+ if (value && k === instanceThis.keyColumn && unresolved[this.row]) {
+ if (value in instanceThis.data) {
+ instanceThis.#handleValidationResult(
[{ message: `${header(k)} already exists`, type: "error" }],
this.row,
this.col
@@ -306,7 +306,7 @@ export class Table extends LitElement {
}
if (!value && isRequired) {
- ogThis.#handleValidationResult(
+ instanceThis.#handleValidationResult(
[{ message: `${header(k)} is a required property.`, type: "error" }],
this.row,
this.col
diff --git a/src/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js b/src/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js
index 86ff3c6e0..a3414cf75 100644
--- a/src/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js
+++ b/src/renderer/src/stories/pages/guided-mode/data/GuidedSourceData.js
@@ -104,14 +104,11 @@ export class GuidedSourceDataPage extends ManagedPage {
if (isStorybook) return;
if (result.message) {
- const [
- type,
- text = `
${result.traceback
- .trim()
- .split("\n")
- .slice(-2)[0]
- .trim()}
`,
- ] = result.message.split(":");
+ const [type, ...splitText] = result.message.split(":");
+ const text = splitText.length
+ ? splitText.join(":").replaceAll("<", "<").replaceAll(">", ">")
+ : `
${result.traceback.trim().split("\n").slice(-2)[0].trim()}
`;
+
const message = `
Request Failed
${type}${text}
`;
this.notify(message, "error");
throw result;
diff --git a/src/renderer/src/stories/sidebar.js b/src/renderer/src/stories/sidebar.js
index 4e44801f7..aae92d3be 100644
--- a/src/renderer/src/stories/sidebar.js
+++ b/src/renderer/src/stories/sidebar.js
@@ -72,7 +72,7 @@ export class Sidebar extends LitElement {
// Actually click the item
let selectedItem = this.#selected
? (this.shadowRoot ?? this).querySelector(`ul[data-id='${this.#selected}']`)
- : (this.shadowRoot ?? this).querySelector("ul").children[0];
+ : (this.shadowRoot ?? this).querySelector("ul").querySelector("a");
if (this.initialize && selectedItem) selectedItem.click();
else if (this.#selected) this.selectItem(this.#selected); // Visually select the item
@@ -139,7 +139,14 @@ export class Sidebar extends LitElement {