diff --git a/assets/css/inputs.css b/assets/css/inputs.css
index 0eb5573..8218d48 100644
--- a/assets/css/inputs.css
+++ b/assets/css/inputs.css
@@ -25,7 +25,8 @@
.button {
display: inline-flex;
flex-shrink: 0;
- align-items: stretch;
+ /* align-items: stretch; */
+ align-items: center;
box-sizing: border-box;
padding: .5rem;
border: none;
diff --git a/components/actors/add.vue b/components/actors/add.vue
new file mode 100644
index 0000000..2922932
--- /dev/null
+++ b/components/actors/add.vue
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
diff --git a/pages/actors/edit/+Page.vue b/pages/actors/edit/+Page.vue
index faa54c6..a8a3f50 100644
--- a/pages/actors/edit/+Page.vue
+++ b/pages/actors/edit/+Page.vue
@@ -373,8 +373,6 @@ import {
post,
} from '#/src/api.js';
-import events from '#/src/events.js';
-
const pageContext = inject('pageContext');
const user = pageContext.user;
@@ -642,48 +640,7 @@ const groupMap = {
weight: 'size',
};
-async function submitCreate() {
- submitting.value = true;
-
- try {
- const newActor = {
- actor: Object.fromEntries(Array.from(['name', 'gender']).flatMap((key) => {
- if (!edits.value[key]) {
- throw new Error(`Missing ${key}`);
- }
-
- if (edits.value[key] && typeof edits.value[key] === 'object' && !Array.isArray(edits.value[key])) {
- return Object.entries(edits.value[key]).map(([valueKey, value]) => [keyMap[key]?.[valueKey] || valueKey, value]);
- }
-
- return [[key, edits.value[key]]];
- })),
- comment: comment.value,
- };
-
- const { actor: createdActor } = await post('/actors', newActor, {
- successFeedback: 'Actor has been added.',
- appendErrorMessage: true,
- });
-
- actor.value = createdActor;
- } catch (error) {
- events.emit('feedback', {
- type: 'error',
- message: error.message,
- });
- }
-
- submitting.value = false;
- submitted.value = true;
-}
-
async function submit() {
- if (!actor.value) {
- submitCreate();
- return;
- }
-
try {
submitting.value = true;
diff --git a/pages/actors/edit/+route.js b/pages/actors/edit/+route.js
index 9f7ccdf..dff3006 100644
--- a/pages/actors/edit/+route.js
+++ b/pages/actors/edit/+route.js
@@ -2,7 +2,7 @@
// import { redirect } from 'vike/abort'; /* eslint-disable-line import/extensions */
import { match } from 'path-to-regexp';
-const path = '/actor/(edit|new)/:actorId?/:actorSlug?';
+const path = '/actor/edit/:actorId/:actorSlug?';
const urlMatch = match(path, { decode: decodeURIComponent });
export default (pageContext) => {
diff --git a/pages/admin/actors/+Page.vue b/pages/admin/actors/+Page.vue
index d8de870..fe86d4b 100644
--- a/pages/admin/actors/+Page.vue
+++ b/pages/admin/actors/+Page.vue
@@ -21,6 +21,11 @@
:disabled="selectedActors.size === 0"
@click="showMergeDialog = true"
>Merge
+
+
@@ -84,6 +89,17 @@
@change="(isChecked) => selectActors(actor, isChecked, index)"
/>
+
+
+
+
-
+
+
@@ -117,7 +138,8 @@ import { ref, inject, onMounted } from 'vue';
import Admin from '#/components/admin/admin.vue';
import Checkbox from '#/components/form/checkbox.vue';
-import Merge from '#/components/actors/merge.vue';
+import MergeActors from '#/components/actors/merge.vue';
+import AddActor from '#/components/actors/add.vue';
import getPath from '#/src/get-path.js';
import navigate from '#/src/navigate.js';
@@ -133,6 +155,7 @@ const actorQuery = ref(urlParsed.search.q || null);
const lastSelectedIndex = ref(null);
const holdingShift = ref(false);
const showMergeDialog = ref(false);
+const showAddDialog = ref(false);
function selectActors(selectedActor, isChecked, index) {
const [start, end] = holdingShift.value
@@ -155,7 +178,7 @@ function selectActors(selectedActor, isChecked, index) {
}
async function searchActors() {
- navigate('/admin/actors', { q: actorQuery.value }, { redirect: true });
+ navigate('/admin/actors', { q: actorQuery.value || undefined }, { redirect: true });
}
onMounted(() => {
@@ -192,7 +215,9 @@ onMounted(() => {
.header-actions {
display: flex;
align-items: center;
+ justify-content: flex-end;
gap: .5rem;
+ flex-grow: 1;
}
.actors-header tr {
diff --git a/pages/admin/actors/+onBeforeRender.js b/pages/admin/actors/+onBeforeRender.js
index 0b37898..8501cfd 100644
--- a/pages/admin/actors/+onBeforeRender.js
+++ b/pages/admin/actors/+onBeforeRender.js
@@ -12,7 +12,7 @@ export default async function onBeforeRender(pageContext) {
query: pageContext.urlParsed.search.q,
}, {
limit: 100,
- // order: pageContext.urlParsed.search.order?.split('.') || ['likes', 'desc'],
+ order: pageContext.urlParsed.search.order?.split('.') || ['likes', 'desc'],
}, pageContext.user);
return {
diff --git a/src/actors.js b/src/actors.js
index c32b687..d77fe40 100644
--- a/src/actors.js
+++ b/src/actors.js
@@ -548,6 +548,7 @@ function curateActorEntry(actor, context) {
slug: slugify(actor.name),
entry_id: nanoid(), // allows for manual creation of multiple actors with the same name
gender: actor.gender,
+ allow_global_match: actor.allowGlobalMatch,
comment: context?.comment,
};
}