(info)
+ const { name, type, required, optional, default: defaultValue } = attrs
+ const props = stringifyAttrs({ name, required, optional })
+ return ``
+ },
+ after: () => '',
+ })
+
+ createContainerPlugin(md, 'field-group', {
+ before: () => '',
+ })
+}
diff --git a/plugins/plugin-md-power/src/node/container/index.ts b/plugins/plugin-md-power/src/node/container/index.ts
index 4f6fdc0b..4a3bd13f 100644
--- a/plugins/plugin-md-power/src/node/container/index.ts
+++ b/plugins/plugin-md-power/src/node/container/index.ts
@@ -8,6 +8,7 @@ import { chatPlugin } from './chat.js'
import { codeTabs } from './codeTabs.js'
import { collapsePlugin } from './collapse.js'
import { demoWrapperPlugin } from './demoWrapper.js'
+import { fieldPlugin } from './field.js'
import { fileTreePlugin } from './fileTree.js'
import { langReplPlugin } from './langRepl.js'
import { npmToPlugins } from './npmTo.js'
@@ -58,4 +59,7 @@ export async function containerPlugin(
if (options.chat)
chatPlugin(md)
+
+ if (options.field)
+ fieldPlugin(md)
}
diff --git a/plugins/plugin-md-power/src/node/prepareConfigFile.ts b/plugins/plugin-md-power/src/node/prepareConfigFile.ts
index d4c6ac66..f95e097d 100644
--- a/plugins/plugin-md-power/src/node/prepareConfigFile.ts
+++ b/plugins/plugin-md-power/src/node/prepareConfigFile.ts
@@ -120,6 +120,11 @@ export async function prepareConfigFile(app: App, options: MarkdownPowerPluginOp
imports.add(`import '${CLIENT_FOLDER}styles/chat.css'`)
}
+ if (options.field) {
+ imports.add(`import VPField from '${CLIENT_FOLDER}components/VPField.vue'`)
+ enhances.add(`app.component('VPField', VPField)`)
+ }
+
return app.writeTemp(
'md-power/config.js',
`\
diff --git a/plugins/plugin-md-power/src/shared/plugin.ts b/plugins/plugin-md-power/src/shared/plugin.ts
index 1a004cc5..4bbceb68 100644
--- a/plugins/plugin-md-power/src/shared/plugin.ts
+++ b/plugins/plugin-md-power/src/shared/plugin.ts
@@ -109,6 +109,12 @@ export interface MarkdownPowerPluginOptions {
*/
chat?: boolean
+ /**
+ * 是否启用 field / field-group 容器
+ *
+ * @default false
+ */
+ field?: boolean
// video embed
/**
* 是否启用 bilibili 视频嵌入
diff --git a/theme/src/node/detector/fields.ts b/theme/src/node/detector/fields.ts
index 697788eb..d51d8662 100644
--- a/theme/src/node/detector/fields.ts
+++ b/theme/src/node/detector/fields.ts
@@ -50,6 +50,7 @@ export const MARKDOWN_POWER_FIELDS: (keyof MarkdownPowerPluginOptions)[] = [
'codepen',
'demo',
'fileTree',
+ 'field',
'icons',
'imageSize',
'jsfiddle',