Added General fields
This commit is contained in:
5
.idea/.gitignore
generated
vendored
Normal file
5
.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# Editor-based HTTP Client requests
|
||||||
|
/httpRequests/
|
||||||
75
.idea/codeStyles/Project.xml
generated
Normal file
75
.idea/codeStyles/Project.xml
generated
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<code_scheme name="Project" version="173">
|
||||||
|
<option name="LINE_SEPARATOR" value=" " />
|
||||||
|
<HTMLCodeStyleSettings>
|
||||||
|
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
||||||
|
</HTMLCodeStyleSettings>
|
||||||
|
<JSCodeStyleSettings version="0">
|
||||||
|
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
||||||
|
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
||||||
|
<option name="USE_DOUBLE_QUOTES" value="false" />
|
||||||
|
<option name="FORCE_QUOTE_STYlE" value="true" />
|
||||||
|
<option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
|
||||||
|
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
|
||||||
|
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
||||||
|
</JSCodeStyleSettings>
|
||||||
|
<TypeScriptCodeStyleSettings version="0">
|
||||||
|
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
||||||
|
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
||||||
|
<option name="USE_DOUBLE_QUOTES" value="false" />
|
||||||
|
<option name="FORCE_QUOTE_STYlE" value="true" />
|
||||||
|
<option name="ENFORCE_TRAILING_COMMA" value="WhenMultiline" />
|
||||||
|
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
|
||||||
|
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
||||||
|
</TypeScriptCodeStyleSettings>
|
||||||
|
<VueCodeStyleSettings>
|
||||||
|
<option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
|
||||||
|
<option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
|
||||||
|
</VueCodeStyleSettings>
|
||||||
|
<editorconfig>
|
||||||
|
<option name="ENABLED" value="false" />
|
||||||
|
</editorconfig>
|
||||||
|
<codeStyleSettings language="CSS">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="HTML">
|
||||||
|
<option name="SOFT_MARGINS" value="80" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="JavaScript">
|
||||||
|
<option name="SOFT_MARGINS" value="80" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="Markdown">
|
||||||
|
<indentOptions>
|
||||||
|
<option name="USE_TAB_CHARACTER" value="true" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="TypeScript">
|
||||||
|
<option name="SOFT_MARGINS" value="80" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="INDENT_SIZE" value="2" />
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
<option name="TAB_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
<codeStyleSettings language="Vue">
|
||||||
|
<option name="SOFT_MARGINS" value="80" />
|
||||||
|
<indentOptions>
|
||||||
|
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||||
|
</indentOptions>
|
||||||
|
</codeStyleSettings>
|
||||||
|
</code_scheme>
|
||||||
|
</component>
|
||||||
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<component name="ProjectCodeStyleConfiguration">
|
||||||
|
<state>
|
||||||
|
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||||
|
</state>
|
||||||
|
</component>
|
||||||
12
.idea/dave-dmg.iml
generated
Normal file
12
.idea/dave-dmg.iml
generated
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="WEB_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager">
|
||||||
|
<content url="file://$MODULE_DIR$">
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/temp" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/tmp" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="inheritedJdk" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
||||||
6
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
6
.idea/inspectionProfiles/Project_Default.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<component name="InspectionProjectProfileManager">
|
||||||
|
<profile version="1.0">
|
||||||
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
|
</profile>
|
||||||
|
</component>
|
||||||
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/.idea/dave-dmg.iml" filepath="$PROJECT_DIR$/.idea/dave-dmg.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/prettier.xml
generated
Normal file
6
.idea/prettier.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="PrettierConfiguration">
|
||||||
|
<option name="myConfigurationMode" value="AUTOMATIC" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/vcs.xml
generated
Normal file
6
.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
1
src/keystatic/components/general/index.ts
Normal file
1
src/keystatic/components/general/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export const generalComponents = {};
|
||||||
35
src/keystatic/fields/general/article.ts
Normal file
35
src/keystatic/fields/general/article.ts
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
import { ComponentSchema, fields } from '@keystatic/core';
|
||||||
|
|
||||||
|
import { createContentField } from './content';
|
||||||
|
import { createPathField } from './path';
|
||||||
|
import { createMetaField } from './meta';
|
||||||
|
|
||||||
|
export const createArticleField = (
|
||||||
|
imageSubfolder: string,
|
||||||
|
defaultPath: string = ''
|
||||||
|
) => ({
|
||||||
|
title: fields.slug({ name: { label: 'Title' } }),
|
||||||
|
summary: fields.text({
|
||||||
|
label: 'Summary',
|
||||||
|
multiline: true,
|
||||||
|
}),
|
||||||
|
path: createPathField(defaultPath),
|
||||||
|
cover: fields.object({
|
||||||
|
src: fields.image({
|
||||||
|
label: 'Cover Image',
|
||||||
|
directory: `public/images/covers/${imageSubfolder}`,
|
||||||
|
publicPath: `/image/covers/${imageSubfolder}`,
|
||||||
|
}),
|
||||||
|
alt: fields.text({ label: 'Alt' }),
|
||||||
|
caption: fields.text({
|
||||||
|
label: 'Caption',
|
||||||
|
multiline: true,
|
||||||
|
}),
|
||||||
|
showInHeader: fields.checkbox({
|
||||||
|
label: 'Show in Header',
|
||||||
|
defaultValue: false,
|
||||||
|
}),
|
||||||
|
}),
|
||||||
|
meta: createMetaField(),
|
||||||
|
content: createContentField(imageSubfolder),
|
||||||
|
});
|
||||||
22
src/keystatic/fields/general/content.ts
Normal file
22
src/keystatic/fields/general/content.ts
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import { fields } from '@keystatic/core';
|
||||||
|
import { ContentComponent } from '@keystatic/core/content-components';
|
||||||
|
|
||||||
|
import { generalComponents } from '@/keystatic/components/general';
|
||||||
|
|
||||||
|
export const createContentField = (
|
||||||
|
imageSubfolder: string,
|
||||||
|
additionalComponents?: Record<string, ContentComponent>
|
||||||
|
) =>
|
||||||
|
fields.markdoc({
|
||||||
|
label: 'Content',
|
||||||
|
options: {
|
||||||
|
image: {
|
||||||
|
directory: `public/images/content/${imageSubfolder}`,
|
||||||
|
publicPath: `/images/content/${imageSubfolder}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
...generalComponents,
|
||||||
|
...additionalComponents,
|
||||||
|
},
|
||||||
|
});
|
||||||
31
src/keystatic/fields/general/meta.ts
Normal file
31
src/keystatic/fields/general/meta.ts
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import { ComponentSchema, fields } from '@keystatic/core';
|
||||||
|
|
||||||
|
export const createMetaField = (): ComponentSchema =>
|
||||||
|
fields.object(
|
||||||
|
{
|
||||||
|
publicationDate: fields.datetime({
|
||||||
|
label: 'Publication Date',
|
||||||
|
defaultValue: { kind: 'now' },
|
||||||
|
}),
|
||||||
|
updateDate: fields.datetime({
|
||||||
|
label: 'Update Date',
|
||||||
|
}),
|
||||||
|
tags: fields.array(
|
||||||
|
fields.relationship({
|
||||||
|
label: 'Tags',
|
||||||
|
collection: 'tags',
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
label: 'Tags',
|
||||||
|
itemLabel: (props): string => props.value || 'Select Tag',
|
||||||
|
}
|
||||||
|
),
|
||||||
|
author: fields.relationship({
|
||||||
|
label: 'Author',
|
||||||
|
collection: 'authors',
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Meta Information',
|
||||||
|
}
|
||||||
|
);
|
||||||
29
src/keystatic/fields/general/operators.ts
Normal file
29
src/keystatic/fields/general/operators.ts
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import { ComponentSchema, fields } from '@keystatic/core';
|
||||||
|
|
||||||
|
export const createNumOperatorField = (): ComponentSchema =>
|
||||||
|
fields.select({
|
||||||
|
label: 'Operator',
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
label: '>=',
|
||||||
|
value: 'gte',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '>',
|
||||||
|
value: 'gt',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '=',
|
||||||
|
value: 'eq',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '<',
|
||||||
|
value: 'lt',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '<=',
|
||||||
|
value: 'lte',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
defaultValue: 'eq',
|
||||||
|
});
|
||||||
8
src/keystatic/fields/general/path.ts
Normal file
8
src/keystatic/fields/general/path.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import { ComponentSchema, fields } from '@keystatic/core';
|
||||||
|
|
||||||
|
export const createPathField = (defaultValue: string): ComponentSchema =>
|
||||||
|
fields.text({
|
||||||
|
label: 'Path',
|
||||||
|
description: 'Path on the Website',
|
||||||
|
defaultValue: defaultValue,
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user