diff --git a/@fiction/admin/settings/ElAccountHeader.vue b/@fiction/admin/settings/ElAccountHeader.vue index 4f8bbc432..531468f6c 100644 --- a/@fiction/admin/settings/ElAccountHeader.vue +++ b/@fiction/admin/settings/ElAccountHeader.vue @@ -3,8 +3,8 @@ import { dayjs, gravatarUrlSync, useService, vue } from '@fiction/core/index.js' import ElModal from '@fiction/ui/ElModal.vue' import { InputOption } from '@fiction/ui/index.js' import ElForm from '@fiction/ui/inputs/ElForm.vue' +import FormEngine from '@fiction/ui/inputs/FormEngine.vue' import type { Card } from '@fiction/site/card' -import ToolForm from '../tools/ToolForm.vue' import ElHeader from './ElHeader.vue' import type { FictionAdmin } from '..' @@ -116,7 +116,7 @@ vue.onMounted(() => {
- + diff --git a/@fiction/admin/settings/ElOrgHeader.vue b/@fiction/admin/settings/ElOrgHeader.vue index 449ce57b1..aa661d342 100644 --- a/@fiction/admin/settings/ElOrgHeader.vue +++ b/@fiction/admin/settings/ElOrgHeader.vue @@ -4,11 +4,11 @@ import { gravatarUrlSync } from '@fiction/core/index.js' import ElAvatar from '@fiction/ui/common/ElAvatar.vue' import ElModal from '@fiction/ui/ElModal.vue' import ElForm from '@fiction/ui/inputs/ElForm.vue' +import FormEngine from '@fiction/ui/inputs/FormEngine.vue' import ElIndexGrid from '@fiction/ui/lists/ElIndexGrid.vue' import type { ActionItem, IndexItem, Organization } from '@fiction/core/index.js' import type { Card } from '@fiction/site/card' import type { InputOption } from '@fiction/ui' -import ToolForm from '../tools/ToolForm.vue' import ElHeader from './ElHeader.vue' import { newOrgOptions } from './index.js' @@ -104,7 +104,7 @@ vue.onMounted(() => {
- +
diff --git a/@fiction/admin/settings/SettingsTool.vue b/@fiction/admin/settings/SettingsTool.vue index c1942840b..c2593e286 100644 --- a/@fiction/admin/settings/SettingsTool.vue +++ b/@fiction/admin/settings/SettingsTool.vue @@ -2,10 +2,10 @@ import { getNavComponentType, toLabel, toSlug, useService, vue } from '@fiction/core' import ElPanel from '@fiction/ui/ElPanel.vue' import ElForm from '@fiction/ui/inputs/ElForm.vue' +import FormEngine from '@fiction/ui/inputs/FormEngine.vue' import type { NavItem } from '@fiction/core' import type { Card } from '@fiction/site/card' import type { InputOption } from '@fiction/ui' -import ToolForm from '../tools/ToolForm.vue' import type { SettingsTool } from '..' const props = defineProps({ @@ -100,7 +100,7 @@ async function navigate(v: NavItem) {
{{ currentPanel.title.value }}
- , required: true }, @@ -92,7 +92,7 @@ const cls = vue.computed(() => { :input-props="inputProps" :options="opt.options.value || []" :model-value="modelValue" - :depth="1" + :depth="depth + 1" :base-path="basePath" :card @update:model-value="emit('update:modelValue', $event)" diff --git a/@fiction/cards/capture/index.ts b/@fiction/cards/capture/index.ts index 69c4c199d..3de7734f5 100644 --- a/@fiction/cards/capture/index.ts +++ b/@fiction/cards/capture/index.ts @@ -43,7 +43,7 @@ const demoUserConfig = { const options: InputOption[] = [ new InputOption({ key: 'presentationMode', label: 'Presentation Mode', input: 'InputSelect', list: ['inline', 'onScroll', 'onLoad'], description: 'Show the card inline with content as a popup on load, or when scrolling.' }), standardOption.headers(), - new InputOption({ key: 'media', label: 'Image', input: 'InputMediaDisplay' }), + new InputOption({ key: 'media', label: 'Image', input: 'InputMedia' }), new InputOption({ key: 'dismissText', label: 'Dismiss Text', input: 'InputText', placeholder: 'No thanks', description: 'Dismisses modal in load and modal modes' }), new InputOption({ key: 'buttonText', label: 'Button Text', input: 'InputText', placeholder: 'Subscribe', description: 'Text on the subscribe button' }), new InputOption({ key: 'thanksText', label: 'Thanks Text', input: 'InputText', placeholder: 'Thanks for subscribing!', description: 'Text on the thank you message' }), diff --git a/@fiction/cards/footer/index.ts b/@fiction/cards/footer/index.ts index 84ad02a21..76cb30b7e 100644 --- a/@fiction/cards/footer/index.ts +++ b/@fiction/cards/footer/index.ts @@ -1,8 +1,8 @@ -import { standardOption } from '@fiction/cards/inputSets' import { vue } from '@fiction/core' import { CardTemplate } from '@fiction/site/card' import { InputOption } from '@fiction/ui' import { z } from 'zod' +import { standardOption } from '../inputSets' import { mediaSchema } from '../schemaSets' const templateId = 'footer' @@ -55,7 +55,7 @@ const schema = z.object({ export type UserConfig = z.infer const options: InputOption[] = [ - new InputOption({ key: 'logo', label: 'Logo', input: 'InputMediaDisplay' }), + new InputOption({ key: 'logo', label: 'Logo', input: 'InputLogo' }), new InputOption({ key: 'layout', label: 'Layout', input: 'InputSelect', list: layoutKeys }), new InputOption({ key: 'tagline', label: 'Tagline', input: 'InputText', description: 'A catchy phrase or description of what you do.' }), standardOption.navItems({ key: 'nav', maxDepth: 2, itemNames: ['Column', 'Nav Item', 'Sub Nav Item'] }), @@ -71,7 +71,7 @@ const options: InputOption[] = [ new InputOption({ key: 'badges', label: 'Badges', description: 'Add certifications or other graphics to build your authority', input: 'InputList', props: { itemName: 'Badge' }, options: [ new InputOption({ key: 'name', label: 'Name', input: 'InputText' }), new InputOption({ key: 'href', label: 'URL', input: 'InputText' }), - new InputOption({ key: 'media', label: 'Media', input: 'InputMediaDisplay' }), + new InputOption({ key: 'media', label: 'Media', input: 'InputMedia' }), new InputOption({ key: 'target', label: 'Target', input: 'InputSelect', list: ['_blank', '_self'] }), ] }), ] }), diff --git a/@fiction/cards/hero/index.ts b/@fiction/cards/hero/index.ts index ce69b1835..7300a6936 100644 --- a/@fiction/cards/hero/index.ts +++ b/@fiction/cards/hero/index.ts @@ -45,7 +45,7 @@ export const options: InputOption[] = [ standardOption.media({ key: 'splash', label: 'Splash Image' }), new InputOption({ key: 'caption', input: 'InputText', label: 'Splash Caption' }), new InputOption({ key: 'overlays', input: 'InputList', label: 'Overlays', options: [ - new InputOption({ key: 'media', label: 'Image', input: 'InputMediaDisplay', props: { formats: { url: true } } }), + new InputOption({ key: 'media', label: 'Image', input: 'InputMedia', props: { formats: { url: true } } }), new InputOption({ key: 'opacity', label: 'Opacity', input: 'InputNumber' }), new InputOption({ key: 'position', label: 'Position', input: 'InputSelect', list: ['top', 'bottom', 'left', 'right', 'center', 'bottomRight', 'topRight', 'bottomLeft', 'topLeft'] as const }), new InputOption({ key: 'widthPercent', label: 'Width Percent', input: 'InputRange', props: { min: 10, max: 100 } }), diff --git a/@fiction/cards/inputSets.ts b/@fiction/cards/inputSets.ts index db14608a9..8402601e1 100644 --- a/@fiction/cards/inputSets.ts +++ b/@fiction/cards/inputSets.ts @@ -6,7 +6,7 @@ import type { InputOptionSettings } from '@fiction/ui/index.js' type OptArgs = (Partial> & Record) | undefined export const standardOption = { - media: (_: OptArgs = {}) => new InputOption({ key: 'media', label: 'Image', input: 'InputMediaDisplay', props: { formats: _?.formats }, ..._ }), + media: (_: OptArgs = {}) => new InputOption({ key: 'media', label: 'Image', input: 'InputMedia', props: { formats: _?.formats }, ..._ }), name: (_: OptArgs = {}) => new InputOption({ key: 'name', label: 'Text', input: 'InputText', ..._ }), desc: (_: OptArgs = {}) => new InputOption({ key: 'desc', label: 'Description', input: 'InputTextarea', ..._ }), icon: (_: OptArgs = {}) => new InputOption({ key: 'icon', label: 'Icon', input: 'InputSelect', ..._ }), diff --git a/@fiction/cards/logos/index.ts b/@fiction/cards/logos/index.ts index dae5b8ce5..7635f8641 100644 --- a/@fiction/cards/logos/index.ts +++ b/@fiction/cards/logos/index.ts @@ -27,7 +27,7 @@ const options: InputOption[] = [ new InputOption({ key: 'items', label: 'Items', input: 'InputList', options: [ new InputOption({ key: 'name', label: 'Name', input: 'InputText' }), new InputOption({ key: 'href', label: 'Link', input: 'InputText' }), - new InputOption({ key: 'media', label: 'Image URL', input: 'InputMediaDisplay' }), + new InputOption({ key: 'media', label: 'Image URL', input: 'InputMedia' }), ] }), ] diff --git a/@fiction/cards/magazine/ElMagazine.vue b/@fiction/cards/magazine/ElMagazine.vue index 5c8a1099b..f56cdfcba 100644 --- a/@fiction/cards/magazine/ElMagazine.vue +++ b/@fiction/cards/magazine/ElMagazine.vue @@ -52,7 +52,7 @@ async function loadGlobal() { } async function loadInline() { - const ps = uc.value.posts?.items || [] + const ps = uc.value.posts?.posts || [] postIndex.value = ps.map(p => new Post({ fictionPosts, ...p })) if (routeSlug.value) { @@ -63,7 +63,7 @@ async function loadInline() { } async function load() { - if (uc.value.posts?.mode === 'inline') { + if (uc.value.posts?.format === 'local') { await loadInline() } else { diff --git a/@fiction/cards/magazine/index.ts b/@fiction/cards/magazine/index.ts index e904fd566..d474c895e 100644 --- a/@fiction/cards/magazine/index.ts +++ b/@fiction/cards/magazine/index.ts @@ -15,13 +15,13 @@ const schema = z.object({ export type UserConfig = z.infer & SiteUserConfig const options: InputOption[] = [ - new InputOption({ key: 'scheme.reverse', label: 'Reverse Color Scheme', input: 'InputCheckbox' }), + new InputOption({ key: 'posts', label: 'Posts', input: 'InputPosts' }), ] async function getDefaultUserConfig(): Promise { return { standard: { spacing: { verticalSpacing: 'none' } }, - posts: { mode: 'global', limit: 12 }, + posts: { format: 'global', limit: 12 }, } } @@ -29,8 +29,8 @@ async function getDemoUserConfig(args: { site?: Site }): Promise { const c: UserConfig = { standard: { spacing: { verticalSpacing: 'sm' } }, posts: { - mode: 'inline', - items: [ + format: 'local', + posts: [ { title: 'Revolutionizing UX: My Journey at Tech Giant', subTitle: 'From Concept to Launch', diff --git a/@fiction/cards/nav/index.ts b/@fiction/cards/nav/index.ts index 9cc149658..b630e8c87 100644 --- a/@fiction/cards/nav/index.ts +++ b/@fiction/cards/nav/index.ts @@ -1,8 +1,8 @@ -import { standardOption } from '@fiction/cards/inputSets' import { MediaTypographySchema, vue } from '@fiction/core' import { CardTemplate } from '@fiction/site/card' import { InputOption } from '@fiction/ui' import { z } from 'zod' +import { standardOption } from '../inputSets' import { mediaSchema } from '../schemaSets' const templateId = 'nav' diff --git a/@fiction/cards/people/index.ts b/@fiction/cards/people/index.ts index 471094126..e5ffd26e3 100644 --- a/@fiction/cards/people/index.ts +++ b/@fiction/cards/people/index.ts @@ -38,7 +38,7 @@ const options: InputOption[] = [ new InputOption({ key: 'name', input: 'InputText', label: 'Name' }), new InputOption({ key: 'title', input: 'InputText', label: 'Title' }), new InputOption({ key: 'desc', input: 'InputText', label: 'Description' }), - new InputOption({ key: 'media', input: 'InputMediaDisplay', label: 'Media', props: { formats: { url: true } } }), + new InputOption({ key: 'media', input: 'InputMedia', label: 'Media', props: { formats: { url: true } } }), new InputOption({ key: 'social', input: 'InputList', label: 'Social', options: [ new InputOption({ key: 'name', input: 'InputText', label: 'Name' }), new InputOption({ key: 'href', input: 'InputText', label: 'Link' }), diff --git a/@fiction/cards/quote/index.ts b/@fiction/cards/quote/index.ts index c7e2d5050..7298b64c6 100644 --- a/@fiction/cards/quote/index.ts +++ b/@fiction/cards/quote/index.ts @@ -85,10 +85,10 @@ export const templates = [ new InputOption({ key: 'text', label: 'Quote Text', input: 'InputText' }), new InputOption({ key: 'author.name', label: 'Author', input: 'InputText' }), new InputOption({ key: 'author.title', label: 'Title', input: 'InputText' }), - new InputOption({ key: 'author.image', label: 'Author Image', input: 'InputMediaDisplay' }), + new InputOption({ key: 'author.image', label: 'Author Image', input: 'InputMedia' }), new InputOption({ key: 'author.href', label: 'Author Link', input: 'InputUrl' }), new InputOption({ key: 'org.name', label: 'Organization', input: 'InputText' }), - new InputOption({ key: 'org.image', label: 'Organization Image', input: 'InputMediaDisplay' }), + new InputOption({ key: 'org.image', label: 'Organization Image', input: 'InputMedia' }), new InputOption({ key: 'org.href', label: 'Organization Link', input: 'InputUrl' }), ], }), diff --git a/@fiction/cards/story/index.ts b/@fiction/cards/story/index.ts index ae6697260..9d170e216 100644 --- a/@fiction/cards/story/index.ts +++ b/@fiction/cards/story/index.ts @@ -25,7 +25,7 @@ const options: InputOption[] = [ new InputOption({ key: 'items', label: 'Tour Items', input: 'InputList', props: { itemName: 'paragraph' }, options: [ new InputOption({ key: 'title', label: 'Title', input: 'InputText' }), new InputOption({ key: 'content', label: 'Content', input: 'InputText' }), - new InputOption({ key: 'media', label: 'Media', input: 'InputMediaDisplay' }), + new InputOption({ key: 'media', label: 'Media', input: 'InputMedia' }), new InputOption({ key: 'actions', label: 'Actions', input: 'InputList', options: [ new InputOption({ key: 'name', label: 'Button Label', input: 'InputText' }), new InputOption({ key: 'href', label: 'Button Link', input: 'InputText' }), diff --git a/@fiction/cards/test/tpl.unit.test.ts b/@fiction/cards/test/tpl.unit.test.ts index 3732ad595..80e467394 100644 --- a/@fiction/cards/test/tpl.unit.test.ts +++ b/@fiction/cards/test/tpl.unit.test.ts @@ -23,9 +23,7 @@ describe('verify template settings config', async () => { "hasDemo": false, "isPublic": false, "templateId": "wrap", - "unusedSchema": { - "fixedHeader": "boolean", - }, + "unusedSchema": {}, }, { "hasDemo": false, diff --git a/@fiction/cards/trek/index.ts b/@fiction/cards/trek/index.ts index 18e83bd23..41e2213e3 100644 --- a/@fiction/cards/trek/index.ts +++ b/@fiction/cards/trek/index.ts @@ -25,7 +25,7 @@ const options: InputOption[] = [ new InputOption({ key: 'items', label: 'Tour Items', input: 'InputList', props: { itemName: 'Tour Item' }, options: [ new InputOption({ key: 'title', label: 'Title', input: 'InputText' }), new InputOption({ key: 'content', label: 'Content', input: 'InputText' }), - new InputOption({ key: 'media', label: 'Media', input: 'InputMediaDisplay' }), + new InputOption({ key: 'media', label: 'Media', input: 'InputMedia' }), new InputOption({ key: 'actions', label: 'Actions', input: 'InputList', options: [ new InputOption({ key: 'name', label: 'Button Label', input: 'InputText' }), new InputOption({ key: 'href', label: 'Button Link', input: 'InputText' }), diff --git a/@fiction/core/plugin-email/templates/EmailStandard.vue b/@fiction/core/plugin-email/templates/EmailStandard.vue index d5761fbfb..4cf4a0125 100644 --- a/@fiction/core/plugin-email/templates/EmailStandard.vue +++ b/@fiction/core/plugin-email/templates/EmailStandard.vue @@ -210,7 +210,7 @@ const markdownStyles = { - + diff --git a/@fiction/core/schemas/schemas.ts b/@fiction/core/schemas/schemas.ts index e978a5130..6c4669f8e 100644 --- a/@fiction/core/schemas/schemas.ts +++ b/@fiction/core/schemas/schemas.ts @@ -1,5 +1,6 @@ import { z } from 'zod' import type { IconId } from '@fiction/ui/lib/systemIcons.js' +import { OrFilterGroupSchema } from '../types/endpoint.js' import { ColorScaleSchema, colorThemeUser, colorThemeWithInvert } from '../utils/colors.js' import type { vue } from '../utils/libraries.js' @@ -181,10 +182,24 @@ export const PostSchema = z.object({ authors: z.array(UserSchema).optional(), }) +export const GlobalQuerySchema = z.object({ + filters: z.array(OrFilterGroupSchema).optional(), // Array of OR filter groups + sortBy: z.string().optional(), + sortOrder: z.enum(['asc', 'desc']).optional(), + search: z.string().optional(), + dateRange: z.object({ + start: z.date().optional(), + end: z.date().optional(), + }).optional(), +}) + +// Updated PostHandlingSchema export const PostHandlingSchema = z.object({ - mode: z.enum(['global', 'inline']).optional(), + format: z.enum(['global', 'local']).default('local'), limit: z.number().optional(), - items: z.array(PostSchema).optional(), + posts: z.array(PostSchema).optional(), + query: GlobalQuerySchema.optional(), }) export type PostObject = z.infer +export type PostHandlingObject = z.infer diff --git a/@fiction/core/types/endpoint.ts b/@fiction/core/types/endpoint.ts index 12c814bc0..78349961e 100644 --- a/@fiction/core/types/endpoint.ts +++ b/@fiction/core/types/endpoint.ts @@ -3,14 +3,16 @@ import type express from 'express' import type { ErrorCode } from '../utils/error.js' import type { UserRoles } from './roles.js' -export const DataFilterSchema = z.object({ +export const AndDataFilterSchema = z.object({ field: z.string(), value: z.union([z.string(), z.number(), z.array(z.union([z.string(), z.number()]))]), operator: z.enum(['=', '!=', '>', '<', '>=', '<=', 'like', 'not like', 'in', 'not in']), }) +export const OrFilterGroupSchema = z.array(AndDataFilterSchema) + // sql where operators.value -export type DataFilter = z.infer +export type DataFilter = z.infer export type IndexQuery = { offset?: number diff --git a/@fiction/plugins/plugin-send/admin/SidebarEmailEditor.vue b/@fiction/plugins/plugin-send/admin/SidebarEmailEditor.vue index 9246d2f99..e3e483dda 100644 --- a/@fiction/plugins/plugin-send/admin/SidebarEmailEditor.vue +++ b/@fiction/plugins/plugin-send/admin/SidebarEmailEditor.vue @@ -1,12 +1,12 @@ diff --git a/@fiction/site/plugin-builder/tools/ToolCardEdit.vue b/@fiction/site/plugin-builder/tools/ToolCardEdit.vue index e75028a10..8300fda01 100644 --- a/@fiction/site/plugin-builder/tools/ToolCardEdit.vue +++ b/@fiction/site/plugin-builder/tools/ToolCardEdit.vue @@ -1,8 +1,8 @@ @@ -82,7 +86,7 @@ async function save() { title="Edit Page" > - import ElTool from '@fiction/admin/tools/ElTool.vue' -import ToolForm from '@fiction/admin/tools/ToolForm.vue' import { toSlug, vue } from '@fiction/core' import { InputOption } from '@fiction/ui' import ElForm from '@fiction/ui/inputs/ElForm.vue' import ElInput from '@fiction/ui/inputs/ElInput.vue' +import FormEngine from '@fiction/ui/inputs/FormEngine.vue' import type { AdminEditorController, EditorTool } from '@fiction/admin' import { imageStyle } from '../../util' import { saveSite, updateSite } from '../../utils/site' @@ -116,7 +116,7 @@ const v = vue.computed({ v-bind="props" > - import ElTool from '@fiction/admin/tools/ElTool.vue' -import ToolForm from '@fiction/admin/tools/ToolForm.vue' import { useService, vue } from '@fiction/core' import { InputOption } from '@fiction/ui' import XButton from '@fiction/ui/buttons/XButton.vue' import ElModalConfirm from '@fiction/ui/ElModalConfirm.vue' import ElForm from '@fiction/ui/inputs/ElForm.vue' +import FormEngine from '@fiction/ui/inputs/FormEngine.vue' import type { AdminEditorController, EditorTool } from '@fiction/admin' import type { FictionApp } from '@fiction/core' import { tableNames } from '../../tables' @@ -89,7 +89,7 @@ const showConfirm = vue.ref(false) v-bind="props" > - +
diff --git a/@fiction/site/utils/test/schema.unit.test.ts b/@fiction/site/utils/test/schema.unit.test.ts index d92944165..de68ded61 100644 --- a/@fiction/site/utils/test/schema.unit.test.ts +++ b/@fiction/site/utils/test/schema.unit.test.ts @@ -15,7 +15,7 @@ describe('schema tools', () => { new InputOption({ key: 'grp', label: 'Group 1', input: 'group', options: [ new InputOption({ key: 'groupInput', label: 'subText', input: 'InputTextarea' }), ] }), - new InputOption({ key: 'media', label: 'test', input: 'InputMediaDisplay' }), + new InputOption({ key: 'media', label: 'test', input: 'InputMedia' }), ] const schema = z.object({ diff --git a/@fiction/ui/inputs/InputMediaDisplay.vue b/@fiction/ui/.ref/InputMediaDisplay.vue similarity index 100% rename from @fiction/ui/inputs/InputMediaDisplay.vue rename to @fiction/ui/.ref/InputMediaDisplay.vue diff --git a/@fiction/admin/tools/ElToolSep.vue b/@fiction/ui/inputs/ElToolSep.vue similarity index 100% rename from @fiction/admin/tools/ElToolSep.vue rename to @fiction/ui/inputs/ElToolSep.vue diff --git a/@fiction/ui/inputs/FormEngine.vue b/@fiction/ui/inputs/FormEngine.vue new file mode 100644 index 000000000..08afa1f89 --- /dev/null +++ b/@fiction/ui/inputs/FormEngine.vue @@ -0,0 +1,127 @@ + + + diff --git a/@fiction/ui/inputs/InputPosts.vue b/@fiction/ui/inputs/InputPosts.vue new file mode 100644 index 000000000..c11a56863 --- /dev/null +++ b/@fiction/ui/inputs/InputPosts.vue @@ -0,0 +1,206 @@ + + + diff --git a/@fiction/ui/inputs/index.ts b/@fiction/ui/inputs/index.ts index e4f7f9055..3c91b116f 100644 --- a/@fiction/ui/inputs/index.ts +++ b/@fiction/ui/inputs/index.ts @@ -34,11 +34,11 @@ export const inputs = { InputTextarea: { el: def(async () => import('./InputTextarea.vue')) }, InputWeight: { el: def(async () => import('./InputWeight.vue')) }, InputNumber: { el: def(async () => import('./InputNumber.vue')) }, + InputPosts: { el: def(async () => import('./InputPosts.vue')), shape: [] }, InputLogo: { el: def(async () => import('./InputLogo.vue')), shape: ['url', 'format', 'html', 'el', 'typography.*', 'class', 'iconId'] }, InputIcon: { el: def(async () => import('./InputIcon.vue')), shape: ['url', 'format', 'html', 'iconId', 'el', 'class'] }, InputMedia: { el: def(async () => import('./InputMedia.vue')), shape: ['url', 'format', 'html', 'el', 'modify.*', 'iconId', 'class'] }, InputMediaUpload: { el: def(async () => import('./InputMediaUpload.vue')), shape: ['url'] }, - InputMediaDisplay: { el: def(async () => import('./InputMediaDisplay.vue')), shape: ['url', 'format', 'html', 'el', 'modify', 'modify.flip'] }, InputRanking: { el: def(async () => import('./InputRanking.vue')) }, InputMultipleChoice: { el: def(async () => import('./InputMultipleChoice.vue')) }, InputRating: { el: def(async () => import('./InputRating.vue')) }, diff --git a/@fiction/ui/inputs/test/TestInputsAll.vue b/@fiction/ui/inputs/test/TestInputsAll.vue index 5fb3e270b..f5183f56a 100644 --- a/@fiction/ui/inputs/test/TestInputsAll.vue +++ b/@fiction/ui/inputs/test/TestInputsAll.vue @@ -104,8 +104,8 @@ function toggleDarkMode() { :service="service" :options="[ new InputOption({ label: 'Text', input: 'InputText', key: 'text' }), - new InputOption({ label: 'Media Display', input: 'InputMediaDisplay', key: 'media' }), - new InputOption({ label: 'Overlays', input: 'InputList', key: 'overlays', options: [new InputOption({ label: 'Media Display', input: 'InputMediaDisplay', key: 'media' })] })]" + new InputOption({ label: 'Media Display', input: 'InputMedia', key: 'media' }), + new InputOption({ label: 'Overlays', input: 'InputList', key: 'overlays', options: [new InputOption({ label: 'Media Display', input: 'InputMedia', key: 'media' })] })]" />