diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md
index 6d6fe602935..887ece39d95 100644
--- a/CHANGELOG.en-US.md
+++ b/CHANGELOG.en-US.md
@@ -29,6 +29,8 @@
### Fixes
- Fix `n-form`'s rules and `n-form-item`'s rule about `validator` and `asyncValidator`'s `rule` type is not `FormItemRule`, closes [#2299](https://github.com/TuSimple/naive-ui/issues/2299).
+- Fix `n-log` doesn't break line when line is too long, closes [#2298](https://github.com/TuSimple/naive-ui/issues/2298).
+- Fix `n-log` doesn't export `LogInst` type.
## 2.24.7 (2022-01-28)
diff --git a/CHANGELOG.zh-CN.md b/CHANGELOG.zh-CN.md
index 55bd9a8bcab..24b92dbdbe4 100644
--- a/CHANGELOG.zh-CN.md
+++ b/CHANGELOG.zh-CN.md
@@ -29,6 +29,8 @@
### Fixes
- 修复 `n-form` 的 rules 和 `n-form-item` 的 rule 中的 `validator` 与 `asyncValidator` 函数的 `rule` 类型不为 `FormItemRule` 类型, 关闭 [#2299](https://github.com/TuSimple/naive-ui/issues/2299)
+- 修复 `n-log` 在内容过长时不折行,关闭 [#2298](https://github.com/TuSimple/naive-ui/issues/2298)
+- 修复 `n-log` 未导出 `LogInst` 类型
## 2.24.7 (2022-01-28)
diff --git a/package.json b/package.json
index 196b86b5423..6a088b118e0 100644
--- a/package.json
+++ b/package.json
@@ -29,7 +29,7 @@
"release-changelog": "node scripts/release-changelog",
"build:site:ts": "./scripts/pre-build-site/pre-build-site.sh && cross-env TUSIMPLE=true NODE_ENV=production NODE_OPTIONS=--max-old-space-size=4096 vite build && ./scripts/post-build-site/post-build-site.sh",
"prepare": "husky install",
- "transpile-docs": "node scripts/md-to-vue popover",
+ "transpile-docs": "node scripts/md-to-vue log",
"typecheck": "vue-tsc --noEmit src/**/*.vue"
},
"author": "07akioni",
diff --git a/src/log/demos/enUS/auto-bottom.demo.md b/src/log/demos/enUS/auto-bottom.demo.vue
similarity index 63%
rename from src/log/demos/enUS/auto-bottom.demo.md
rename to src/log/demos/enUS/auto-bottom.demo.vue
index 8ed1108737b..a69379be25b 100644
--- a/src/log/demos/enUS/auto-bottom.demo.md
+++ b/src/log/demos/enUS/auto-bottom.demo.vue
@@ -1,19 +1,24 @@
+
# Scroll to latest
Scroll to the latest when log is gradually increasing.
+
-```html
-
- Add Data
-
-
-```
+
+
+
+ Add Data
+
+
+
+
-```js
+
diff --git a/src/log/demos/enUS/debug.demo.md b/src/log/demos/enUS/debug.demo.md
deleted file mode 100644
index d06cdc90684..00000000000
--- a/src/log/demos/enUS/debug.demo.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# Debug
-
-```html
-
-
-
- Clear
-
-
-```
-
-```js
-import { defineComponent, ref } from 'vue'
-
-function log () {
- const l = []
- for (let i = 0; i < 40; ++i) {
- l.push(Math.random().toString(16))
- }
- return l.join('\n') + '\n'
-}
-
-export default defineComponent({
- setup () {
- const loadingRef = ref(false)
- const logRef = ref(log())
- return {
- loading: loadingRef,
- log: logRef,
- clear () {
- logRef.value = ''
- },
- handleRequireMore (from) {
- if (loadingRef.value) return
- loadingRef.value = true
- setTimeout(() => {
- if (from === 'top') {
- logRef.value = log() + logRef.value
- } else if (from === 'bottom') {
- logRef.value = logRef.value + log()
- }
- loadingRef.value = false
- }, 1000)
- }
- }
- }
-})
-```
diff --git a/src/log/demos/enUS/event.demo.md b/src/log/demos/enUS/event.demo.vue
similarity index 83%
rename from src/log/demos/enUS/event.demo.md
rename to src/log/demos/enUS/event.demo.vue
index 7341a80bb42..a066f286521 100644
--- a/src/log/demos/enUS/event.demo.md
+++ b/src/log/demos/enUS/event.demo.vue
@@ -1,24 +1,26 @@
+
# Event
Log has `require-more`, `reach-top` and `reach-bottom` event. Note that even if logs are scrolled to top or bottom, when you wheel to the same direction, `require-more` will still be triggered while `reach-xxx` will not. If you don't want to trigger handler when logs are at top or bottom. Use `reach-top` or `reach-bottom` instead.
+
-```html
-
-```
+
+
+
-```js
+
diff --git a/src/log/demos/enUS/highlight.demo.md b/src/log/demos/enUS/highlight.demo.vue
similarity index 78%
rename from src/log/demos/enUS/highlight.demo.md
rename to src/log/demos/enUS/highlight.demo.vue
index d52a7692a1d..2ee7f714021 100644
--- a/src/log/demos/enUS/highlight.demo.md
+++ b/src/log/demos/enUS/highlight.demo.vue
@@ -1,23 +1,25 @@
+
# Highlight
Before you use highlight, see Note section of the page to make sure you won't miss messages that are important to make it work.
+
-```html
-
-```
+
+
+
-```js
+
diff --git a/src/log/demos/enUS/index.demo-entry.md b/src/log/demos/enUS/index.demo-entry.md
index 0711849ae2d..3c1d0a12c7f 100644
--- a/src/log/demos/enUS/index.demo-entry.md
+++ b/src/log/demos/enUS/index.demo-entry.md
@@ -5,7 +5,7 @@
If you have some logs to show, use log.
- Due to package size, Naive UI doesn't include highlight.js. If you want highlight logs, make sure you have set highlightjs before using it.
+ Due to package size.vue, Naive UI doesn't include highlight.vue.js. If you want highlight logs, make sure you have set highlightjs before using it.
In highlight demo, we defined a language called `naive-log` which will highlight all the numbers of line. The following code shows how we defined it. If you want to know more about highlight.js, see highlight.js and highlight.js developer documentation
@@ -44,11 +44,11 @@ In highlight demo, we defined a language called `naive-log` which will highlight
```demo
size
-event
-scroll
-highlight
-loading
-auto-bottom
+event.vue
+scroll.vue
+highlight.vue
+loading.vue
+auto-bottom.vue
```
## API
diff --git a/src/log/demos/enUS/loading.demo.md b/src/log/demos/enUS/loading.demo.vue
similarity index 62%
rename from src/log/demos/enUS/loading.demo.md
rename to src/log/demos/enUS/loading.demo.vue
index 5555886f7b8..0b68628cf18 100644
--- a/src/log/demos/enUS/loading.demo.md
+++ b/src/log/demos/enUS/loading.demo.vue
@@ -1,14 +1,16 @@
+
# Loading
+
-```html
-
-```
+
+
+
-```js
+
diff --git a/src/log/demos/enUS/scroll.demo.md b/src/log/demos/enUS/scroll.demo.vue
similarity index 51%
rename from src/log/demos/enUS/scroll.demo.md
rename to src/log/demos/enUS/scroll.demo.vue
index 31361b96ecb..a177d5c514f 100644
--- a/src/log/demos/enUS/scroll.demo.md
+++ b/src/log/demos/enUS/scroll.demo.vue
@@ -1,41 +1,41 @@
+
# Scroll
You can easily make log scroll to top or bottom. Also you can make the scroll action silent (don't trigger events of Log in this scroll action).
-
-```html
-
-
- Scroll To Bottom
- Scroll To Bottom (silent)
- Scroll To Top
- Scroll To Top (silent)
-
-
-
-```
-
-```js
+
+
+
+
+
+ Scroll To Bottom
+
+
+ Scroll To Bottom (silent)
+
+
+ Scroll To Top
+
+
+ Scroll To Top (silent)
+
+
+
+
+
+
diff --git a/src/log/demos/enUS/size.demo.md b/src/log/demos/enUS/size.demo.md
deleted file mode 100644
index f9b3bbd700a..00000000000
--- a/src/log/demos/enUS/size.demo.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# Rows
-
-Use `rows` to change the size of log.
-
-```html
-
-```
diff --git a/src/log/demos/enUS/size.demo.vue b/src/log/demos/enUS/size.demo.vue
new file mode 100644
index 00000000000..b1f8137c882
--- /dev/null
+++ b/src/log/demos/enUS/size.demo.vue
@@ -0,0 +1,17 @@
+
+# Rows
+
+Use `rows` to change the size of log.
+
+
+
+
+
diff --git a/src/log/demos/zhCN/auto-bottom.demo.md b/src/log/demos/zhCN/auto-bottom.demo.vue
similarity index 62%
rename from src/log/demos/zhCN/auto-bottom.demo.md
rename to src/log/demos/zhCN/auto-bottom.demo.vue
index 6c62a0c4934..a116a21a54a 100644
--- a/src/log/demos/zhCN/auto-bottom.demo.md
+++ b/src/log/demos/zhCN/auto-bottom.demo.vue
@@ -1,19 +1,24 @@
+
# 滚动到最新
当日志不断增加是总是滚动到最新。
+
-```html
-
- 添加数据
-
-
-```
+
+
+
+ 添加数据
+
+
+
+
-```js
+
diff --git a/src/log/demos/zhCN/debug.demo.md b/src/log/demos/zhCN/debug.demo.vue
similarity index 62%
rename from src/log/demos/zhCN/debug.demo.md
rename to src/log/demos/zhCN/debug.demo.vue
index d06cdc90684..b98622ec33a 100644
--- a/src/log/demos/zhCN/debug.demo.md
+++ b/src/log/demos/zhCN/debug.demo.vue
@@ -1,31 +1,33 @@
+
# Debug
+
-```html
-
-
-
- Clear
-
-
-```
-
-```js
+
+
+
+
+
+ Clear
+
+
+
+
+
diff --git a/src/log/demos/zhCN/event.demo.md b/src/log/demos/zhCN/event.demo.vue
similarity index 82%
rename from src/log/demos/zhCN/event.demo.md
rename to src/log/demos/zhCN/event.demo.vue
index 58f78b8437d..fdc2aebc061 100644
--- a/src/log/demos/zhCN/event.demo.md
+++ b/src/log/demos/zhCN/event.demo.vue
@@ -1,24 +1,26 @@
+
# 事件
Log 有 `require-more`、`reach-top` 和 `reach-bottom` 事件。需要注意的是即使 Log 已经滚到了头或者尾,你继续滚动鼠标的时候,`require-more` 还是会被触发,而 `reach-xxx` 并不会。如果你不需要这种特性,可以使用 `reach-top` 或者 `reach-bottom`。
+
-```html
-
-```
+
+
+
-```js
+
diff --git a/src/log/demos/zhCN/highlight.demo.md b/src/log/demos/zhCN/highlight.demo.vue
similarity index 78%
rename from src/log/demos/zhCN/highlight.demo.md
rename to src/log/demos/zhCN/highlight.demo.vue
index 3dd2c691fcb..7d0990ffa20 100644
--- a/src/log/demos/zhCN/highlight.demo.md
+++ b/src/log/demos/zhCN/highlight.demo.vue
@@ -1,23 +1,25 @@
+
# 高亮
在你使用高亮之前,请看本页开始的注意事项,那些对于确保这个例子按预期展示是很重要的。
+
-```html
-
-```
+
+
+
-```js
+
diff --git a/src/log/demos/zhCN/index.demo-entry.md b/src/log/demos/zhCN/index.demo-entry.md
index 3fa10c8f5ca..c04f2e0c562 100644
--- a/src/log/demos/zhCN/index.demo-entry.md
+++ b/src/log/demos/zhCN/index.demo-entry.md
@@ -5,7 +5,7 @@
如果你有一些日志要展示,可以使用 Log。
- 由于尺寸原因,Naive UI 并不把 highlight.js 内置。如果你需要高亮日志,请确保你在使用之前已经设定了 highlight.js。
+ 由于尺寸原因,Naive UI 并不把 highlight.vue.js 内置。如果你需要高亮日志,请确保你在使用之前已经设定了 highlight.js。
在本页如何高亮的演示中,我们定义了一个叫做 `naive-log` 的语言来高亮全部的数字。下面的代码是我们怎么定义的。如果你想了解 highlight.js,可以参考 highlight.js 和 highlight.js developer documentation
@@ -43,12 +43,12 @@
## 演示
```demo
-size
-event
-scroll
-highlight
-loading
-auto-bottom
+size.vue
+event.vue
+scroll.vue
+highlight.vue
+loading.vue
+auto-bottom.vue
```
## API
diff --git a/src/log/demos/zhCN/loading.demo.md b/src/log/demos/zhCN/loading.demo.vue
similarity index 60%
rename from src/log/demos/zhCN/loading.demo.md
rename to src/log/demos/zhCN/loading.demo.vue
index 7eb10824c0f..142fbfcd9ed 100644
--- a/src/log/demos/zhCN/loading.demo.md
+++ b/src/log/demos/zhCN/loading.demo.vue
@@ -1,14 +1,16 @@
-# 加载中
+
+# 加载
+
-```html
-
-```
+
+
+
-```js
+
diff --git a/src/log/demos/zhCN/scroll.demo.md b/src/log/demos/zhCN/scroll.demo.vue
similarity index 50%
rename from src/log/demos/zhCN/scroll.demo.md
rename to src/log/demos/zhCN/scroll.demo.vue
index 3ed7bb35fbc..a4e16d1676e 100644
--- a/src/log/demos/zhCN/scroll.demo.md
+++ b/src/log/demos/zhCN/scroll.demo.vue
@@ -1,41 +1,41 @@
+
# 滚动
你可以很简单的让 Log 滚到顶部或者底部。同时你可以控制这个滚动操作是否发出事件。
-
-```html
-
-
- 滚动到底部
- 滚动到底部(无事件)
- 滚动到顶部
- 滚动到顶部(无事件)
-
-
-
-```
-
-```js
+
+
+
+
+
+ 滚动到底部
+
+
+ 滚动到底部(无事件)
+
+
+ 滚动到顶部
+
+
+ 滚动到顶部(无事件)
+
+
+
+
+
+
diff --git a/src/log/demos/zhCN/size.demo.md b/src/log/demos/zhCN/size.demo.md
deleted file mode 100644
index b8292534702..00000000000
--- a/src/log/demos/zhCN/size.demo.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# 行数
-
-使用 `rows` 来设定 Log 的尺寸。
-
-```html
-
-```
diff --git a/src/log/demos/zhCN/size.demo.vue b/src/log/demos/zhCN/size.demo.vue
new file mode 100644
index 00000000000..9808027afad
--- /dev/null
+++ b/src/log/demos/zhCN/size.demo.vue
@@ -0,0 +1,17 @@
+
+# 行数
+
+使用 `rows` 来设定 Log 的尺寸。
+
+
+
+
+
diff --git a/src/log/index.ts b/src/log/index.ts
index 9ed79770e04..f6121f1cc85 100644
--- a/src/log/index.ts
+++ b/src/log/index.ts
@@ -1,2 +1,2 @@
export { default as NLog } from './src/Log'
-export type { LogProps } from './src/Log'
+export type { LogProps, LogInst } from './src/Log'
diff --git a/src/log/src/Log.tsx b/src/log/src/Log.tsx
index 23a2ed731fe..57a07d54301 100644
--- a/src/log/src/Log.tsx
+++ b/src/log/src/Log.tsx
@@ -13,15 +13,17 @@ import {
import { throttle } from 'lodash-es'
import { useTheme, useHljs, ThemeProps, useConfig } from '../../_mixins'
import type { Hljs } from '../../_mixins'
-import { ExtractPublicPropTypes, warn } from '../../_utils'
+import type { ExtractPublicPropTypes } from '../../_utils'
+import { warn } from '../../_utils'
import { NScrollbar } from '../../_internal'
import type { ScrollbarInst } from '../../_internal'
import { NCode } from '../../code'
-import { logLight, LogTheme } from '../styles'
+import type { LogTheme } from '../styles'
+import { logLight } from '../styles'
import NLogLoader from './LogLoader'
import NLogLine from './LogLine'
-import style from './styles/index.cssr'
import { logInjectionKey } from './context'
+import style from './styles/index.cssr'
export interface LogInjection {
trimRef: Ref
@@ -30,6 +32,14 @@ export interface LogInjection {
mergedHljsRef: Ref
}
+export interface LogInst {
+ scrollTo: ((options: {
+ slient?: boolean
+ position: 'top' | 'bottom'
+ }) => void) &
+ ((options: { slient?: boolean, top: number }) => void)
+}
+
const logProps = {
...(useTheme.props as ThemeProps),
loading: Boolean,
@@ -78,8 +88,9 @@ export default defineComponent({
return props.language !== undefined
})
const styleHeightRef = computed(() => {
- const lineHeight = Math.floor(props.fontSize * props.lineHeight)
- return `calc(${props.rows * lineHeight}px)`
+ return `calc(${Math.round(
+ props.rows * props.lineHeight * props.fontSize
+ )}px)`
})
const mergedLinesRef = computed(() => {
const { log } = props
@@ -200,13 +211,18 @@ export default defineComponent({
trimRef: toRef(props, 'trim'),
highlightRef
})
+
+ const exportedMethods: LogInst = {
+ scrollTo
+ }
+
return {
+ ...exportedMethods,
mergedClsPrefix: mergedClsPrefixRef,
scrollbarRef,
mergedTheme: themeRef,
styleHeight: styleHeightRef,
mergedLines: mergedLinesRef,
- scrollTo,
scrollToTop,
scrollToBottom,
handleWheel,
diff --git a/src/log/src/styles/index.cssr.ts b/src/log/src/styles/index.cssr.ts
index f445e4c1e0f..84c25bc6b8d 100644
--- a/src/log/src/styles/index.cssr.ts
+++ b/src/log/src/styles/index.cssr.ts
@@ -14,11 +14,9 @@ export default cB('log', `
box-sizing: border-box;
transition: border-color .3s var(--n-bezier);
`, [
- cE('lines', `
- margin: 0;
- white-space: pre-wrap;
- `),
c('pre', `
+ white-space: pre-wrap;
+ word-break: break-word;
margin: 0;
`),
cB('log-loader', `