diff --git a/CHANGELOG.en-US.md b/CHANGELOG.en-US.md
index b3b5c2f0164..09bafe2017a 100644
--- a/CHANGELOG.en-US.md
+++ b/CHANGELOG.en-US.md
@@ -11,6 +11,7 @@
- `n-config-provider` add global config of the `Empty` component, closes [#1092](https://github.com/TuSimple/naive-ui/issues/1092).
- `n-select` add `on-update:show` prop.
- `n-auto-complete` exports `AutoCompleteOption` and `AutoCompleteGroupOption` types.
+- `n-page-header` add `RTL` support.
### Fixes
diff --git a/CHANGELOG.zh-CN.md b/CHANGELOG.zh-CN.md
index f940559acb8..8405f52a4a8 100644
--- a/CHANGELOG.zh-CN.md
+++ b/CHANGELOG.zh-CN.md
@@ -11,6 +11,7 @@
- `n-config-provider` 新增 `Empty` 组件的全局配置,关闭 [#1092](https://github.com/TuSimple/naive-ui/issues/1092)
- `n-select` 新增 `on-update:show` 属性
- `n-auto-complete` 导出 `AutoCompleteOption` 以及 `AutoCompleteGroupOption` 类型
+- `n-page-header` 添加 `RTL` 支持
### Fixes
diff --git a/src/page-header/demos/zhCN/index.demo-entry.md b/src/page-header/demos/zhCN/index.demo-entry.md
index 454f418f637..b700ca8dd77 100644
--- a/src/page-header/demos/zhCN/index.demo-entry.md
+++ b/src/page-header/demos/zhCN/index.demo-entry.md
@@ -8,6 +8,7 @@
```demo
basic
+rtl-debug
```
## Props
diff --git a/src/page-header/demos/zhCN/rtl-debug.demo.md b/src/page-header/demos/zhCN/rtl-debug.demo.md
new file mode 100644
index 00000000000..c546c853d6d
--- /dev/null
+++ b/src/page-header/demos/zhCN/rtl-debug.demo.md
@@ -0,0 +1,93 @@
+# Rtl Debug
+
+```html
+
+ Rtl
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Anyway.FM
+
+
+
+ 播客
+ 精选
+ 超级精选
+ Anyway.FM
+
+
+
+
+
+
+
+ 催更
+
+ ···
+
+
+
+ 截止到 2021 年 4 月 3 日
+
+
+
+```
+
+```js
+import { EllipsisHorizontal } from '@vicons/ionicons5'
+import { defineComponent, ref } from 'vue'
+import { unstablePageHeaderRtl, useMessage } from 'naive-ui'
+
+export default defineComponent({
+ components: {
+ EllipsisHorizontal
+ },
+ setup () {
+ const message = useMessage()
+ return {
+ rtlEnabled: ref(false),
+ rtlStyles: [unstablePageHeaderRtl],
+ handleBack () {
+ message.info('[onBack]')
+ },
+ options: [
+ {
+ label: '催更',
+ key: '1'
+ },
+ {
+ label: '催更',
+ key: '2'
+ },
+ {
+ label: '催更',
+ key: '3'
+ }
+ ]
+ }
+ }
+})
+```
diff --git a/src/page-header/src/PageHeader.tsx b/src/page-header/src/PageHeader.tsx
index f0a58ea8e89..4d6651ab80e 100644
--- a/src/page-header/src/PageHeader.tsx
+++ b/src/page-header/src/PageHeader.tsx
@@ -8,6 +8,7 @@ import style from './styles/index.cssr'
import { ArrowBackIcon } from '../../_internal/icons'
import { NBaseIcon } from '../../_internal'
import type { ExtractPublicPropTypes } from '../../_utils'
+import useRtl from '../../_mixins/use-rtl'
const pageHeaderProps = {
...(useTheme.props as ThemeProps),
@@ -23,7 +24,7 @@ export default defineComponent({
name: 'PageHeader',
props: pageHeaderProps,
setup (props) {
- const { mergedClsPrefixRef } = useConfig(props)
+ const { mergedClsPrefixRef, NConfigProvider } = useConfig(props)
const themeRef = useTheme(
'PageHeader',
'PageHeader',
@@ -32,7 +33,14 @@ export default defineComponent({
props,
mergedClsPrefixRef
)
+ const rtlEnabledRef = useRtl(
+ 'PageHeader',
+ NConfigProvider?.mergedRtlRef,
+ mergedClsPrefixRef
+ )
+
return {
+ rtlEnabled: rtlEnabledRef,
mergedClsPrefix: mergedClsPrefixRef,
cssVars: computed(() => {
const {
@@ -65,15 +73,8 @@ export default defineComponent({
}
},
render () {
- const {
- onBack,
- title,
- subtitle,
- extra,
- mergedClsPrefix,
- cssVars,
- $slots
- } = this
+ const { onBack, title, subtitle, extra, mergedClsPrefix, cssVars, $slots } =
+ this
const {
title: titleSlot,
subtitle: subtitleSlot,
@@ -88,7 +89,13 @@ export default defineComponent({
const showSubtitle = subtitle || subtitleSlot
const showExtra = extra || extraSlot
return (
-