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 - - -``` + -```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 - - - - -``` - -```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 + + + 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 - - - - -``` - -```js + + 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.jshighlight.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', `