@next-bricks/presentational 1.21.9 → 1.21.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +9 -9
- package/dist/chunks/5045.b0f85f6b.js.map +1 -1
- package/dist/chunks/code-wrapper.40655769.js.map +1 -1
- package/dist/chunks/eo-card-item.fbff6f7e.js.map +1 -1
- package/dist/chunks/eo-carousel-text.d8e8c2c9.js.map +1 -1
- package/dist/chunks/eo-code-block.7efe5647.js.map +1 -1
- package/dist/chunks/eo-code-display.ffd79558.js.map +1 -1
- package/dist/chunks/eo-current-time.7cbef918.js.map +1 -1
- package/dist/chunks/eo-descriptions.b8320ca9.js.map +1 -1
- package/dist/chunks/eo-humanize-time.2397ce6e.js.map +1 -1
- package/dist/chunks/eo-info-card-item.0d15cb28.js.map +1 -1
- package/dist/chunks/eo-loading-step.834e0aa3.js.map +1 -1
- package/dist/chunks/eo-pagination.16fd816a.js.map +1 -1
- package/dist/chunks/eo-statistics-card.410b5416.js.map +1 -1
- package/dist/examples.json +15 -15
- package/dist/{index.db5144bf.js → index.3d30863f.js} +2 -2
- package/dist/{index.db5144bf.js.map → index.3d30863f.js.map} +1 -1
- package/dist/manifest.json +108 -98
- package/dist/types.json +110 -110
- package/dist-types/card-item/index.d.ts +8 -4
- package/dist-types/carousel-text/index.d.ts +1 -1
- package/dist-types/code-block/index.d.ts +12 -3
- package/dist-types/code-display/index.d.ts +0 -1
- package/dist-types/code-wrapper/index.d.ts +7 -2
- package/dist-types/current-time/index.d.ts +1 -1
- package/dist-types/descriptions/index.d.ts +2 -1
- package/dist-types/humanize-time/index.d.ts +8 -8
- package/dist-types/info-card-item/index.d.ts +8 -7
- package/dist-types/loading-step/index.d.ts +8 -8
- package/dist-types/pagination/index.d.ts +7 -0
- package/dist-types/statistics-card/index.d.ts +2 -2
- package/docs/eo-alert.md +65 -1
- package/docs/eo-alert.react.md +127 -0
- package/docs/eo-card-item.md +179 -210
- package/docs/eo-card-item.react.md +578 -0
- package/docs/eo-carousel-text.md +49 -2
- package/docs/eo-carousel-text.react.md +62 -0
- package/docs/eo-code-block.md +135 -4
- package/docs/eo-code-block.react.md +146 -0
- package/docs/eo-code-display.md +97 -1
- package/docs/eo-code-display.react.md +116 -0
- package/docs/eo-code-wrapper.md +108 -0
- package/docs/eo-code-wrapper.react.md +100 -0
- package/docs/eo-current-time.md +40 -1
- package/docs/eo-current-time.react.md +53 -0
- package/docs/eo-descriptions.md +74 -4
- package/docs/eo-descriptions.react.md +329 -0
- package/docs/eo-divider.md +105 -17
- package/docs/eo-divider.react.md +129 -0
- package/docs/eo-humanize-time.md +89 -42
- package/docs/eo-humanize-time.react.md +109 -0
- package/docs/eo-info-card-item.md +129 -183
- package/docs/eo-info-card-item.react.md +188 -0
- package/docs/eo-loading-step.md +96 -1
- package/docs/eo-loading-step.react.md +102 -0
- package/docs/eo-pagination.md +74 -1
- package/docs/eo-pagination.react.md +93 -0
- package/docs/eo-statistics-card.md +175 -456
- package/docs/eo-statistics-card.react.md +376 -0
- package/package.json +2 -2
package/docs/eo-code-block.md
CHANGED
|
@@ -1,15 +1,146 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
tagName: eo-code-block
|
|
3
|
+
displayName: WrappedEoCodeBlock
|
|
4
|
+
description: 代码块展示构件,基于 Shiki 进行语法高亮,支持多种编程语言、亮色/暗色主题自动切换及复制功能。
|
|
5
|
+
category: presentational
|
|
6
|
+
source: "@next-bricks/presentational"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# eo-code-block
|
|
10
|
+
|
|
11
|
+
> 代码块展示构件,基于 Shiki 进行语法高亮,支持多种编程语言、亮色/暗色主题自动切换及复制功能。
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
16
|
+
| -------------- | --------------------------------------- | ---- | -------- | -------------------------------------------------------------- |
|
|
17
|
+
| language | `string` | 否 | - | 代码语言,用于语法高亮,例如 `javascript`、`python`、`yaml` 等 |
|
|
18
|
+
| source | `string` | 否 | - | 代码内容字符串 |
|
|
19
|
+
| theme | `"auto" \| "light-plus" \| "dark-plus"` | 否 | `"auto"` | 代码高亮主题。`auto` 跟随系统主题自动切换亮色/暗色 |
|
|
20
|
+
| themeVariant | `"default" \| "elevo"` | 否 | - | 主题变体,影响代码块的整体样式风格 |
|
|
21
|
+
| showCopyButton | `boolean` | 否 | `true` | 是否展示复制按钮 |
|
|
22
|
+
|
|
23
|
+
## CSS Parts
|
|
24
|
+
|
|
25
|
+
| 名称 | 说明 |
|
|
26
|
+
| ------- | --------------------------- |
|
|
27
|
+
| pre | 包裹代码内容的 `<pre>` 元素 |
|
|
28
|
+
| copy | 复制按钮 |
|
|
29
|
+
| mermaid | Mermaid 图表 |
|
|
30
|
+
| wrapper | code-wrapper 构件 |
|
|
2
31
|
|
|
3
32
|
## Examples
|
|
4
33
|
|
|
5
34
|
### Basic
|
|
6
35
|
|
|
36
|
+
展示代码块的基本用法,通过 `language` 和 `source` 属性渲染带语法高亮的代码。
|
|
37
|
+
|
|
7
38
|
```yaml preview
|
|
8
39
|
brick: eo-code-block
|
|
9
40
|
properties:
|
|
10
|
-
language:
|
|
41
|
+
language: javascript
|
|
11
42
|
source: |
|
|
12
|
-
function
|
|
13
|
-
console.log("Hello,
|
|
43
|
+
function greet(name) {
|
|
44
|
+
console.log("Hello, " + name + "!");
|
|
14
45
|
}
|
|
46
|
+
greet("world");
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Multiple Languages
|
|
50
|
+
|
|
51
|
+
展示对不同编程语言的语法高亮支持,包括 Python、YAML 和 Shell。
|
|
52
|
+
|
|
53
|
+
```yaml preview
|
|
54
|
+
- brick: eo-code-block
|
|
55
|
+
properties:
|
|
56
|
+
language: python
|
|
57
|
+
source: |
|
|
58
|
+
def greet(name):
|
|
59
|
+
print(f"Hello, {name}!")
|
|
60
|
+
|
|
61
|
+
greet("world")
|
|
62
|
+
- brick: eo-code-block
|
|
63
|
+
properties:
|
|
64
|
+
language: yaml
|
|
65
|
+
source: |
|
|
66
|
+
name: Alice
|
|
67
|
+
age: 30
|
|
68
|
+
hobbies:
|
|
69
|
+
- reading
|
|
70
|
+
- coding
|
|
71
|
+
- brick: eo-code-block
|
|
72
|
+
properties:
|
|
73
|
+
language: shell
|
|
74
|
+
source: |
|
|
75
|
+
echo "Hello, world!"
|
|
76
|
+
ls -la /tmp
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Theme
|
|
80
|
+
|
|
81
|
+
通过 `theme` 属性指定代码高亮主题,支持 `light-plus`(亮色)、`dark-plus`(暗色)和 `auto`(跟随系统)。
|
|
82
|
+
|
|
83
|
+
```yaml preview
|
|
84
|
+
- brick: eo-code-block
|
|
85
|
+
properties:
|
|
86
|
+
language: javascript
|
|
87
|
+
theme: light-plus
|
|
88
|
+
source: |
|
|
89
|
+
const x = 42;
|
|
90
|
+
console.log(x);
|
|
91
|
+
- brick: eo-code-block
|
|
92
|
+
properties:
|
|
93
|
+
language: javascript
|
|
94
|
+
theme: dark-plus
|
|
95
|
+
source: |
|
|
96
|
+
const x = 42;
|
|
97
|
+
console.log(x);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Theme Variant Elevo
|
|
101
|
+
|
|
102
|
+
设置 `themeVariant` 为 `elevo` 以使用 Elevo 风格的代码块样式。
|
|
103
|
+
|
|
104
|
+
```yaml preview
|
|
105
|
+
brick: eo-code-block
|
|
106
|
+
properties:
|
|
107
|
+
language: javascript
|
|
108
|
+
themeVariant: elevo
|
|
109
|
+
source: |
|
|
110
|
+
const greet = (name) => {
|
|
111
|
+
return `Hello, ${name}!`;
|
|
112
|
+
};
|
|
113
|
+
console.log(greet("world"));
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Hide Copy Button
|
|
117
|
+
|
|
118
|
+
设置 `showCopyButton` 为 `false` 隐藏复制按钮。
|
|
119
|
+
|
|
120
|
+
```yaml preview
|
|
121
|
+
brick: eo-code-block
|
|
122
|
+
properties:
|
|
123
|
+
language: python
|
|
124
|
+
showCopyButton: false
|
|
125
|
+
source: |
|
|
126
|
+
for i in range(10):
|
|
127
|
+
print(i)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### CSS Parts
|
|
131
|
+
|
|
132
|
+
通过 CSS Parts 自定义代码块样式,例如为 `pre` 部分设置圆角和边框,为 `copy` 按钮设置颜色。
|
|
133
|
+
|
|
134
|
+
```yaml preview
|
|
135
|
+
- brick: eo-code-block
|
|
136
|
+
properties:
|
|
137
|
+
style:
|
|
138
|
+
"--part-pre-border-radius": "8px"
|
|
139
|
+
language: typescript
|
|
140
|
+
source: |
|
|
141
|
+
interface User {
|
|
142
|
+
name: string;
|
|
143
|
+
age: number;
|
|
144
|
+
}
|
|
145
|
+
const user: User = { name: "Alice", age: 30 };
|
|
15
146
|
```
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
---
|
|
2
|
+
tagName: eo-code-block
|
|
3
|
+
displayName: WrappedEoCodeBlock
|
|
4
|
+
description: 代码块展示构件,基于 Shiki 进行语法高亮,支持多种编程语言、亮色/暗色主题自动切换及复制功能。
|
|
5
|
+
category: presentational
|
|
6
|
+
source: "@next-bricks/presentational"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# WrappedEoCodeBlock
|
|
10
|
+
|
|
11
|
+
> 代码块展示构件,基于 Shiki 进行语法高亮,支持多种编程语言、亮色/暗色主题自动切换及复制功能。
|
|
12
|
+
|
|
13
|
+
## 导入
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { WrappedEoCodeBlock } from "@easyops/wrapped-components";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
22
|
+
| -------------- | --------------------------------------- | ---- | -------- | -------------------------------------------------------------- |
|
|
23
|
+
| language | `string` | 否 | - | 代码语言,用于语法高亮,例如 `javascript`、`python`、`yaml` 等 |
|
|
24
|
+
| source | `string` | 否 | - | 代码内容字符串 |
|
|
25
|
+
| theme | `"auto" \| "light-plus" \| "dark-plus"` | 否 | `"auto"` | 代码高亮主题。`auto` 跟随系统主题自动切换亮色/暗色 |
|
|
26
|
+
| themeVariant | `"default" \| "elevo"` | 否 | - | 主题变体,影响代码块的整体样式风格 |
|
|
27
|
+
| showCopyButton | `boolean` | 否 | `true` | 是否展示复制按钮 |
|
|
28
|
+
|
|
29
|
+
## CSS Parts
|
|
30
|
+
|
|
31
|
+
| 名称 | 说明 |
|
|
32
|
+
| ------- | --------------------------- |
|
|
33
|
+
| pre | 包裹代码内容的 `<pre>` 元素 |
|
|
34
|
+
| copy | 复制按钮 |
|
|
35
|
+
| mermaid | Mermaid 图表 |
|
|
36
|
+
| wrapper | code-wrapper 构件 |
|
|
37
|
+
|
|
38
|
+
## Examples
|
|
39
|
+
|
|
40
|
+
### Basic
|
|
41
|
+
|
|
42
|
+
展示代码块的基本用法,通过 `language` 和 `source` 属性渲染带语法高亮的代码。
|
|
43
|
+
|
|
44
|
+
```tsx
|
|
45
|
+
<WrappedEoCodeBlock
|
|
46
|
+
language="javascript"
|
|
47
|
+
source={`function greet(name) {
|
|
48
|
+
console.log("Hello, " + name + "!");
|
|
49
|
+
}
|
|
50
|
+
greet("world");`}
|
|
51
|
+
/>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Multiple Languages
|
|
55
|
+
|
|
56
|
+
展示对不同编程语言的语法高亮支持,包括 Python、YAML 和 Shell。
|
|
57
|
+
|
|
58
|
+
```tsx
|
|
59
|
+
<>
|
|
60
|
+
<WrappedEoCodeBlock
|
|
61
|
+
language="python"
|
|
62
|
+
source={`def greet(name):
|
|
63
|
+
print(f"Hello, {name}!")
|
|
64
|
+
|
|
65
|
+
greet("world")`}
|
|
66
|
+
/>
|
|
67
|
+
<WrappedEoCodeBlock
|
|
68
|
+
language="yaml"
|
|
69
|
+
source={`name: Alice
|
|
70
|
+
age: 30
|
|
71
|
+
hobbies:
|
|
72
|
+
- reading
|
|
73
|
+
- coding`}
|
|
74
|
+
/>
|
|
75
|
+
<WrappedEoCodeBlock
|
|
76
|
+
language="shell"
|
|
77
|
+
source={`echo "Hello, world!"
|
|
78
|
+
ls -la /tmp`}
|
|
79
|
+
/>
|
|
80
|
+
</>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Theme
|
|
84
|
+
|
|
85
|
+
通过 `theme` 属性指定代码高亮主题,支持 `light-plus`(亮色)、`dark-plus`(暗色)和 `auto`(跟随系统)。
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
<>
|
|
89
|
+
<WrappedEoCodeBlock
|
|
90
|
+
language="javascript"
|
|
91
|
+
theme="light-plus"
|
|
92
|
+
source={`const x = 42;
|
|
93
|
+
console.log(x);`}
|
|
94
|
+
/>
|
|
95
|
+
<WrappedEoCodeBlock
|
|
96
|
+
language="javascript"
|
|
97
|
+
theme="dark-plus"
|
|
98
|
+
source={`const x = 42;
|
|
99
|
+
console.log(x);`}
|
|
100
|
+
/>
|
|
101
|
+
</>
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Theme Variant Elevo
|
|
105
|
+
|
|
106
|
+
设置 `themeVariant` 为 `elevo` 以使用 Elevo 风格的代码块样式。
|
|
107
|
+
|
|
108
|
+
```tsx
|
|
109
|
+
<WrappedEoCodeBlock
|
|
110
|
+
language="javascript"
|
|
111
|
+
themeVariant="elevo"
|
|
112
|
+
source={`const greet = (name) => {
|
|
113
|
+
return \`Hello, \${name}!\`;
|
|
114
|
+
};
|
|
115
|
+
console.log(greet("world"));`}
|
|
116
|
+
/>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Hide Copy Button
|
|
120
|
+
|
|
121
|
+
设置 `showCopyButton` 为 `false` 隐藏复制按钮。
|
|
122
|
+
|
|
123
|
+
```tsx
|
|
124
|
+
<WrappedEoCodeBlock
|
|
125
|
+
language="python"
|
|
126
|
+
showCopyButton={false}
|
|
127
|
+
source={`for i in range(10):
|
|
128
|
+
print(i)`}
|
|
129
|
+
/>
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### CSS Parts
|
|
133
|
+
|
|
134
|
+
通过 CSS Parts 自定义代码块样式,例如为 `pre` 部分设置圆角和边框,为 `copy` 按钮设置颜色。
|
|
135
|
+
|
|
136
|
+
```tsx
|
|
137
|
+
<WrappedEoCodeBlock
|
|
138
|
+
language="typescript"
|
|
139
|
+
style={{ "--part-pre-border-radius": "8px" } as React.CSSProperties}
|
|
140
|
+
source={`interface User {
|
|
141
|
+
name: string;
|
|
142
|
+
age: number;
|
|
143
|
+
}
|
|
144
|
+
const user: User = { name: "Alice", age: 30 };`}
|
|
145
|
+
/>
|
|
146
|
+
```
|
package/docs/eo-code-display.md
CHANGED
|
@@ -1,9 +1,34 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
tagName: eo-code-display
|
|
3
|
+
displayName: WrappedEoCodeDisplay
|
|
4
|
+
description: 代码展示
|
|
5
|
+
category: display-component
|
|
6
|
+
source: "@next-bricks/presentational"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# eo-code-display
|
|
10
|
+
|
|
11
|
+
> 代码展示
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
16
|
+
| ---------------- | --------- | ---- | ------ | ------------------------------------------------------------------------------ |
|
|
17
|
+
| value | `string` | - | `""` | 代码内容 |
|
|
18
|
+
| language | `string` | - | - | 语言,具体查阅 [Supported languages](https://prismjs.com/#supported-languages) |
|
|
19
|
+
| hideLineNumber | `boolean` | - | - | 是否隐藏行号 |
|
|
20
|
+
| maxLines | `number` | - | - | 最大行数 |
|
|
21
|
+
| minLines | `number` | - | - | 最小行数 |
|
|
22
|
+
| showCopyButton | `boolean` | - | `true` | 是否显示复制按钮 |
|
|
23
|
+
| showExportButton | `boolean` | - | - | 是否显示导出按钮 |
|
|
24
|
+
| exportFileName | `string` | - | - | 导出的文件名 |
|
|
2
25
|
|
|
3
26
|
## Examples
|
|
4
27
|
|
|
5
28
|
### Basic
|
|
6
29
|
|
|
30
|
+
基本用法,展示一段 JavaScript 代码并显示行号。
|
|
31
|
+
|
|
7
32
|
```yaml preview
|
|
8
33
|
- brick: eo-code-display
|
|
9
34
|
properties:
|
|
@@ -17,3 +42,74 @@
|
|
|
17
42
|
};
|
|
18
43
|
}
|
|
19
44
|
```
|
|
45
|
+
|
|
46
|
+
### 隐藏行号
|
|
47
|
+
|
|
48
|
+
隐藏代码行号显示。
|
|
49
|
+
|
|
50
|
+
```yaml preview
|
|
51
|
+
- brick: eo-code-display
|
|
52
|
+
properties:
|
|
53
|
+
language: javascript
|
|
54
|
+
hideLineNumber: true
|
|
55
|
+
value: |
|
|
56
|
+
const greeting = "Hello, World!";
|
|
57
|
+
console.log(greeting);
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 限制行数
|
|
61
|
+
|
|
62
|
+
通过 maxLines 和 minLines 控制代码展示区域的行数范围。
|
|
63
|
+
|
|
64
|
+
```yaml preview
|
|
65
|
+
- brick: eo-code-display
|
|
66
|
+
properties:
|
|
67
|
+
language: javascript
|
|
68
|
+
maxLines: 5
|
|
69
|
+
minLines: 3
|
|
70
|
+
value: |
|
|
71
|
+
const a = 1;
|
|
72
|
+
const b = 2;
|
|
73
|
+
const c = 3;
|
|
74
|
+
const d = 4;
|
|
75
|
+
const e = 5;
|
|
76
|
+
const f = 6;
|
|
77
|
+
const g = 7;
|
|
78
|
+
const h = 8;
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### 工具栏按钮
|
|
82
|
+
|
|
83
|
+
显示复制和导出按钮,支持将代码复制到剪贴板或导出为文件。
|
|
84
|
+
|
|
85
|
+
```yaml preview
|
|
86
|
+
- brick: eo-code-display
|
|
87
|
+
properties:
|
|
88
|
+
language: json
|
|
89
|
+
showCopyButton: true
|
|
90
|
+
showExportButton: true
|
|
91
|
+
exportFileName: config.json
|
|
92
|
+
value: |
|
|
93
|
+
{
|
|
94
|
+
"name": "my-app",
|
|
95
|
+
"version": "1.0.0",
|
|
96
|
+
"description": "A sample application"
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 隐藏复制按钮
|
|
101
|
+
|
|
102
|
+
将 showCopyButton 设置为 false 隐藏默认的复制按钮。
|
|
103
|
+
|
|
104
|
+
```yaml preview
|
|
105
|
+
- brick: eo-code-display
|
|
106
|
+
properties:
|
|
107
|
+
language: css
|
|
108
|
+
showCopyButton: false
|
|
109
|
+
value: |
|
|
110
|
+
.container {
|
|
111
|
+
display: flex;
|
|
112
|
+
justify-content: center;
|
|
113
|
+
align-items: center;
|
|
114
|
+
}
|
|
115
|
+
```
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
tagName: eo-code-display
|
|
3
|
+
displayName: WrappedEoCodeDisplay
|
|
4
|
+
description: 代码展示
|
|
5
|
+
category: display-component
|
|
6
|
+
source: "@next-bricks/presentational"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# WrappedEoCodeDisplay
|
|
10
|
+
|
|
11
|
+
> 代码展示
|
|
12
|
+
|
|
13
|
+
## 导入
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { WrappedEoCodeDisplay } from "@easyops/wrapped-components";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
22
|
+
| ---------------- | --------- | ---- | ------ | ------------------------------------------------------------------------------ |
|
|
23
|
+
| value | `string` | - | `""` | 代码内容 |
|
|
24
|
+
| language | `string` | - | - | 语言,具体查阅 [Supported languages](https://prismjs.com/#supported-languages) |
|
|
25
|
+
| hideLineNumber | `boolean` | - | - | 是否隐藏行号 |
|
|
26
|
+
| maxLines | `number` | - | - | 最大行数 |
|
|
27
|
+
| minLines | `number` | - | - | 最小行数 |
|
|
28
|
+
| showCopyButton | `boolean` | - | `true` | 是否显示复制按钮 |
|
|
29
|
+
| showExportButton | `boolean` | - | - | 是否显示导出按钮 |
|
|
30
|
+
| exportFileName | `string` | - | - | 导出的文件名 |
|
|
31
|
+
|
|
32
|
+
## Examples
|
|
33
|
+
|
|
34
|
+
### Basic
|
|
35
|
+
|
|
36
|
+
基本用法,展示一段 JavaScript 代码并显示行号。
|
|
37
|
+
|
|
38
|
+
```tsx
|
|
39
|
+
<WrappedEoCodeDisplay
|
|
40
|
+
language="javascript"
|
|
41
|
+
value={`function onSubmit (e) {
|
|
42
|
+
const fn = () => 123;
|
|
43
|
+
const job = {
|
|
44
|
+
title: 'Developer',
|
|
45
|
+
company: 'Facebook'
|
|
46
|
+
};
|
|
47
|
+
}`}
|
|
48
|
+
/>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 隐藏行号
|
|
52
|
+
|
|
53
|
+
隐藏代码行号显示。
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
<WrappedEoCodeDisplay
|
|
57
|
+
language="javascript"
|
|
58
|
+
hideLineNumber={true}
|
|
59
|
+
value={`const greeting = "Hello, World!";
|
|
60
|
+
console.log(greeting);`}
|
|
61
|
+
/>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 限制行数
|
|
65
|
+
|
|
66
|
+
通过 maxLines 和 minLines 控制代码展示区域的行数范围。
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
<WrappedEoCodeDisplay
|
|
70
|
+
language="javascript"
|
|
71
|
+
maxLines={5}
|
|
72
|
+
minLines={3}
|
|
73
|
+
value={`const a = 1;
|
|
74
|
+
const b = 2;
|
|
75
|
+
const c = 3;
|
|
76
|
+
const d = 4;
|
|
77
|
+
const e = 5;
|
|
78
|
+
const f = 6;
|
|
79
|
+
const g = 7;
|
|
80
|
+
const h = 8;`}
|
|
81
|
+
/>
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 工具栏按钮
|
|
85
|
+
|
|
86
|
+
显示复制和导出按钮,支持将代码复制到剪贴板或导出为文件。
|
|
87
|
+
|
|
88
|
+
```tsx
|
|
89
|
+
<WrappedEoCodeDisplay
|
|
90
|
+
language="json"
|
|
91
|
+
showCopyButton={true}
|
|
92
|
+
showExportButton={true}
|
|
93
|
+
exportFileName="config.json"
|
|
94
|
+
value={`{
|
|
95
|
+
"name": "my-app",
|
|
96
|
+
"version": "1.0.0",
|
|
97
|
+
"description": "A sample application"
|
|
98
|
+
}`}
|
|
99
|
+
/>
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 隐藏复制按钮
|
|
103
|
+
|
|
104
|
+
将 showCopyButton 设置为 false 隐藏默认的复制按钮。
|
|
105
|
+
|
|
106
|
+
```tsx
|
|
107
|
+
<WrappedEoCodeDisplay
|
|
108
|
+
language="css"
|
|
109
|
+
showCopyButton={false}
|
|
110
|
+
value={`.container {
|
|
111
|
+
display: flex;
|
|
112
|
+
justify-content: center;
|
|
113
|
+
align-items: center;
|
|
114
|
+
}`}
|
|
115
|
+
/>
|
|
116
|
+
```
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
tagName: presentational.code-wrapper
|
|
3
|
+
displayName: WrappedPresentationalCodeWrapper
|
|
4
|
+
description: 代码内容包裹容器,提供统一的代码展示结构并支持一键复制功能。
|
|
5
|
+
category: ""
|
|
6
|
+
source: "@next-bricks/presentational"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# presentational.code-wrapper
|
|
10
|
+
|
|
11
|
+
> 代码内容包裹容器,提供统一的代码展示结构并支持一键复制功能。
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
16
|
+
| -------------- | ------------------------------------------------------- | ---- | ------ | ----------------------------------------------------------------- |
|
|
17
|
+
| preProps | `React.PropsWithChildren<JSX.IntrinsicElements["pre"]>` | 否 | - | 传递给 `<pre>` 元素的额外属性,例如 `className`、`style` 等 |
|
|
18
|
+
| showCopyButton | `boolean` | 否 | `true` | 是否展示复制按钮 |
|
|
19
|
+
| themeVariant | `"default" \| "elevo"` | 否 | - | 主题变体,影响复制按钮等内部元素的样式风格。`elevo` 为 Elevo 风格 |
|
|
20
|
+
|
|
21
|
+
## CSS Parts
|
|
22
|
+
|
|
23
|
+
| 名称 | 说明 |
|
|
24
|
+
| ---- | --------------------------- |
|
|
25
|
+
| pre | 包裹代码内容的 `<pre>` 元素 |
|
|
26
|
+
| copy | 复制按钮 |
|
|
27
|
+
|
|
28
|
+
## Examples
|
|
29
|
+
|
|
30
|
+
### Basic
|
|
31
|
+
|
|
32
|
+
展示代码包裹容器的基本用法,将代码内容放入 `<code>` 子节点,默认展示复制按钮。
|
|
33
|
+
|
|
34
|
+
```yaml preview
|
|
35
|
+
brick: presentational.code-wrapper
|
|
36
|
+
properties:
|
|
37
|
+
preProps:
|
|
38
|
+
children:
|
|
39
|
+
- brick: code
|
|
40
|
+
properties:
|
|
41
|
+
textContent: "const greeting = 'Hello, World!';"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 隐藏复制按钮
|
|
45
|
+
|
|
46
|
+
设置 `showCopyButton` 为 `false` 可隐藏右上角的复制按钮。
|
|
47
|
+
|
|
48
|
+
```yaml preview
|
|
49
|
+
brick: presentational.code-wrapper
|
|
50
|
+
properties:
|
|
51
|
+
showCopyButton: false
|
|
52
|
+
preProps:
|
|
53
|
+
children:
|
|
54
|
+
- brick: code
|
|
55
|
+
properties:
|
|
56
|
+
textContent: "const greeting = 'Hello, World!';"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Elevo 主题变体
|
|
60
|
+
|
|
61
|
+
设置 `themeVariant` 为 `"elevo"` 使复制按钮采用 Elevo 主题样式。
|
|
62
|
+
|
|
63
|
+
```yaml preview
|
|
64
|
+
brick: presentational.code-wrapper
|
|
65
|
+
properties:
|
|
66
|
+
themeVariant: elevo
|
|
67
|
+
preProps:
|
|
68
|
+
children:
|
|
69
|
+
- brick: code
|
|
70
|
+
properties:
|
|
71
|
+
textContent: "const greeting = 'Hello, World!';"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 自定义 pre 元素样式
|
|
75
|
+
|
|
76
|
+
通过 `preProps` 的 `style` 字段为 `<pre>` 元素设置自定义内联样式。
|
|
77
|
+
|
|
78
|
+
```yaml preview
|
|
79
|
+
brick: presentational.code-wrapper
|
|
80
|
+
properties:
|
|
81
|
+
preProps:
|
|
82
|
+
style:
|
|
83
|
+
background: "#1e1e1e"
|
|
84
|
+
color: "#d4d4d4"
|
|
85
|
+
padding: 16px
|
|
86
|
+
borderRadius: 8px
|
|
87
|
+
children:
|
|
88
|
+
- brick: code
|
|
89
|
+
properties:
|
|
90
|
+
textContent: "const greeting = 'Hello, World!';"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 自定义 CSS Parts
|
|
94
|
+
|
|
95
|
+
通过 `pre` 和 `copy` CSS Parts 对内部元素进行样式定制,例如修改 `<pre>` 背景色和圆角、调整复制按钮颜色。
|
|
96
|
+
|
|
97
|
+
```yaml preview
|
|
98
|
+
brick: presentational.code-wrapper
|
|
99
|
+
properties:
|
|
100
|
+
style:
|
|
101
|
+
"--part-pre-border-radius": "8px"
|
|
102
|
+
"--part-copy-color": "var(--color-brand)"
|
|
103
|
+
preProps:
|
|
104
|
+
children:
|
|
105
|
+
- brick: code
|
|
106
|
+
properties:
|
|
107
|
+
textContent: "const greeting = 'Hello, World!';"
|
|
108
|
+
```
|