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, }; }