Browse Source

Merge pull request #2418 from Nathon2Y/feat/KeyboardShortCut

feat: keyboard short cut
代强 1 year ago
parent
commit
4af3032a01
100 changed files with 510 additions and 102 deletions
  1. 6 6
      .github/workflows/cypress.yml
  2. 1 1
      .vscode/launch.json
  3. 1 1
      content/feedback/banner/index-en-US.md
  4. 1 1
      content/feedback/banner/index.md
  5. 1 1
      content/feedback/notification/index-en-US.md
  6. 1 1
      content/feedback/notification/index.md
  7. 1 1
      content/feedback/popconfirm/index-en-US.md
  8. 1 1
      content/feedback/popconfirm/index.md
  9. 1 1
      content/feedback/progress/index-en-US.md
  10. 1 1
      content/feedback/progress/index.md
  11. 1 1
      content/feedback/skeleton/index-en-US.md
  12. 1 1
      content/feedback/skeleton/index.md
  13. 1 1
      content/feedback/spin/index-en-US.md
  14. 1 1
      content/feedback/spin/index.md
  15. 1 1
      content/feedback/toast/index-en-US.md
  16. 1 1
      content/feedback/toast/index.md
  17. 202 0
      content/input/hotkeys/index-en-US.md
  18. 205 0
      content/input/hotkeys/index.md
  19. 1 1
      content/input/input/index-en-US.md
  20. 1 1
      content/input/input/index.md
  21. 1 1
      content/input/inputnumber/index-en-US.md
  22. 1 1
      content/input/inputnumber/index.md
  23. 1 1
      content/input/pincode/index-en-US.md
  24. 1 1
      content/input/pincode/index.md
  25. 1 1
      content/input/radio/index-en-US.md
  26. 1 1
      content/input/radio/index.md
  27. 1 1
      content/input/rating/index-en-US.md
  28. 1 1
      content/input/rating/index.md
  29. 1 1
      content/input/select/index-en-US.md
  30. 1 1
      content/input/select/index.md
  31. 1 1
      content/input/slider/index-en-US.md
  32. 1 1
      content/input/slider/index.md
  33. 1 1
      content/input/switch/index-en-US.md
  34. 1 1
      content/input/switch/index.md
  35. 1 1
      content/input/taginput/index-en-US.md
  36. 1 1
      content/input/taginput/index.md
  37. 1 1
      content/input/timepicker/index-en-US.md
  38. 1 1
      content/input/timepicker/index.md
  39. 1 1
      content/input/transfer/index-en-US.md
  40. 1 1
      content/input/transfer/index.md
  41. 1 1
      content/input/treeselect/index-en-US.md
  42. 1 1
      content/input/treeselect/index.md
  43. 1 1
      content/input/upload/index-en-US.md
  44. 1 1
      content/input/upload/index.md
  45. 1 1
      content/navigation/anchor/index-en-US.md
  46. 1 1
      content/navigation/anchor/index.md
  47. 1 1
      content/navigation/backtop/index-en-US.md
  48. 1 1
      content/navigation/backtop/index.md
  49. 1 1
      content/navigation/breadcrumb/index-en-US.md
  50. 1 1
      content/navigation/breadcrumb/index.md
  51. 1 1
      content/navigation/navigation/index-en-US.md
  52. 1 1
      content/navigation/navigation/index.md
  53. 1 1
      content/navigation/pagination/index-en-US.md
  54. 1 1
      content/navigation/pagination/index.md
  55. 1 1
      content/navigation/steps/index-en-US.md
  56. 1 1
      content/navigation/steps/index.md
  57. 1 1
      content/navigation/tabs/index-en-US.md
  58. 1 1
      content/navigation/tabs/index.md
  59. 1 1
      content/navigation/tree/index-en-US.md
  60. 1 1
      content/navigation/tree/index.md
  61. 1 0
      content/order.js
  62. 1 1
      content/other/configprovider/index-en-US.md
  63. 1 1
      content/other/configprovider/index.md
  64. 1 1
      content/other/locale/index-en-US.md
  65. 1 1
      content/other/locale/index.md
  66. 1 1
      content/plus/chat/index-en-US.md
  67. 1 1
      content/plus/chat/index.md
  68. 1 1
      content/show/avatar/index-en-US.md
  69. 1 1
      content/show/avatar/index.md
  70. 1 1
      content/show/badge/index-en-US.md
  71. 1 1
      content/show/badge/index.md
  72. 1 1
      content/show/calendar/index-en-US.md
  73. 1 1
      content/show/calendar/index.md
  74. 1 1
      content/show/card/index-en-US.md
  75. 1 1
      content/show/card/index.md
  76. 1 1
      content/show/carousel/index-en-US.md
  77. 1 1
      content/show/carousel/index.md
  78. 1 1
      content/show/chart/index-en-US.md
  79. 1 1
      content/show/chart/index.md
  80. 1 1
      content/show/collapse/index-en-US.md
  81. 1 1
      content/show/collapse/index.md
  82. 1 1
      content/show/collapsible/index-en-US.md
  83. 1 1
      content/show/collapsible/index.md
  84. 1 1
      content/show/descriptions/index-en-US.md
  85. 1 1
      content/show/descriptions/index.md
  86. 1 1
      content/show/dropdown/index-en-US.md
  87. 1 1
      content/show/dropdown/index.md
  88. 1 1
      content/show/empty/index-en-US.md
  89. 1 1
      content/show/empty/index.md
  90. 1 1
      content/show/highlight/index-en-US.md
  91. 1 1
      content/show/highlight/index.md
  92. 1 1
      content/show/image/index-en-US.md
  93. 1 1
      content/show/image/index.md
  94. 1 1
      content/show/list/index-en-US.md
  95. 1 1
      content/show/list/index.md
  96. 1 1
      content/show/modal/index-en-US.md
  97. 1 1
      content/show/modal/index.md
  98. 1 1
      content/show/overflowlist/index-en-US.md
  99. 1 1
      content/show/overflowlist/index.md
  100. 1 1
      content/show/popover/index-en-US.md

+ 6 - 6
.github/workflows/cypress.yml

@@ -23,8 +23,8 @@ jobs:
     install:
         runs-on: ubuntu-latest
         container:
-            # https://github.com/cypress-io/cypress-docker-images/tree/master/browsers
-            image: cypress/browsers:node18.12.0-chrome103-ff107
+            # cypress-docker-images/browsers at master · cypress-io/cypress-docker-images
+            image: cypress/browsers:node-20.14.0-chrome-125.0.6422.141-1-ff-126.0.1-edge-125.0.2535.85-1
         if: ${{ github.repository_owner == 'DouyinFE' }}
         steps:
             - name: Checkout
@@ -47,14 +47,14 @@ jobs:
             - name: Reclaim cache directory
               run: chown -R 1001:1001 /github/home/.cache && echo "pwn dat cache"
             - name: Cypress install
-              uses: cypress-io/github-action@v5
+              uses: cypress-io/github-action@v6
               with:
                   # Disable running of tests within install job
                   runTests: false
     chrome-tests:
         runs-on: ubuntu-latest
         container:
-            image: cypress/browsers:node18.12.0-chrome103-ff107
+            image: cypress/browsers:node-20.14.0-chrome-125.0.6422.141-1-ff-126.0.1-edge-125.0.2535.85-1
             options: --user 1001
         needs: install
         steps:
@@ -66,7 +66,7 @@ jobs:
                   name: storybook-static
                   path: storybook
             - name: 'Cypress Tests - Chrome'
-              uses: cypress-io/github-action@v5
+              uses: cypress-io/github-action@v6
               with:
                   # we have already installed all dependencies above
                   install: true
@@ -114,4 +114,4 @@ jobs:
     #               CYPRESS_RECORD_KEY: ${{ secrets.CYPRESS_RECORD_KEY }}
     #               # Recommended: pass the GitHub token lets this action correctly
     #               # determine the unique run id necessary to re-run the checks
-    #               GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+    #               GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

+ 1 - 1
.vscode/launch.json

@@ -10,7 +10,7 @@
             "runtimeArgs": [
                 "--inspect-brk",
                 "${workspaceRoot}/node_modules/jest/bin/jest",
-                "packages/semi-ui/select/", // Replace with the folder path of the component you want to debug
+                "packages/semi-ui/hotKeys/", // Replace with the folder path of the component you want to debug
                 "--runInBand",
                 "--silent" // ignore warning such as componentWillReceiveProps will be abondon...
             ],

+ 1 - 1
content/feedback/banner/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 74
+order: 75
 category: Feedback
 title:  Banner
 subTitle: Banner

+ 1 - 1
content/feedback/banner/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 74
+order: 75
 category: 反馈类
 title:  Banner 通知横幅
 icon: doc-banner

+ 1 - 1
content/feedback/notification/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 75
+order: 76
 category: Feedback
 title:  Notification
 subTitle: Notification

+ 1 - 1
content/feedback/notification/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 75
+order: 76
 category: 反馈类
 title: Notification 通知
 icon: doc-notification

+ 1 - 1
content/feedback/popconfirm/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 76
+order: 77
 category: Feedback
 title:  Popconfirm
 subTitle: Popconfirm

+ 1 - 1
content/feedback/popconfirm/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 76
+order: 77
 category: 反馈类
 title:  Popconfirm 气泡确认框
 icon: doc-popconfirm

+ 1 - 1
content/feedback/progress/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 77
+order: 78
 category: Feedback
 title: Progress
 subTitle: Progress

+ 1 - 1
content/feedback/progress/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 77
+order: 78
 category: 反馈类
 title: Progress 进度条
 icon: doc-progress

+ 1 - 1
content/feedback/skeleton/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 78
+order: 79
 category: Feedback
 title: Skeleton
 subTitle: Skeleton

+ 1 - 1
content/feedback/skeleton/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 78
+order: 79
 category: 反馈类
 title: Skeleton 骨架屏
 icon: doc-skeleton

+ 1 - 1
content/feedback/spin/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 79
+order: 80
 category: Feedback
 title: Spin
 subTitle: Spin

+ 1 - 1
content/feedback/spin/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 79
+order: 80
 category: 反馈类
 title: Spin 加载器
 icon: doc-spin

+ 1 - 1
content/feedback/toast/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 80
+order: 81
 category: Feedback
 title: Toast
 subTitle: Toast

+ 1 - 1
content/feedback/toast/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 80
+order: 81
 category: 反馈类
 title: Toast 提示
 icon: doc-toast

+ 202 - 0
content/input/hotkeys/index-en-US.md

@@ -0,0 +1,202 @@
+---
+localeCode: en-US
+order: 30
+category: Input
+title:  HotKeys
+icon: doc-input
+width: 60%
+brief: used to facilitate the customization of keyboard shortcut
+---
+
+
+## Demos
+
+### How to import
+
+```jsx import 
+import { HotKeys } from '@douyinfe/semi-ui';
+```
+
+### Explaination
+The hotkeys only support combinations of modifier keys like Shift, Control, Meta, and Alt with other keys.
+
+When a hotkey is set to a common shortcut like Ctrl/Meta + C, it may prevent the default behavior (e.g., copying) from being triggered properly.
+
+### Basic Usage
+
+Pass in key combinations via `hotKeys` and bind a shortcut handler function using `onClick` to respond to the action.
+
+When pressing `Ctrl + Shift + A`, it increments the count by 1. By default, it listens on the body, making it effective globally.
+
+[values reference](https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values)
+
+```jsx live=true
+import React, { useState } from 'react';
+import { HotKeys } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+  return (
+    <div>
+      <HotKeys hotKeys={['Control', 'Shift', 'a']} onClick={onClick} ></HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+### Custom content
+
+Set the characters through `content`
+
+```jsx live=true
+import React, { useState } from 'react';
+import { HotKeys } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+  return (
+    <div>
+      <HotKeys hotKeys={["Control", "b"]} onClick={onClick} content={["Ctrl", "B"]}></HotKeys>
+        <br></br>
+      <HotKeys hotKeys={["Meta","b"]} onClick={onClick} content={["⌘", "B"]}></HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+Replace the element through `render`
+
+When encountering issues caused by different operating system shortcuts, you can similarly use two components and customize the rendering.
+```jsx live=true
+import React, { useState } from 'react';
+import { HotKeys, Tag } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const hotKeys = ["r"]
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+  const newShortCut = () => {
+    return (
+      <div>
+        <Tag>{"Click R / K to add"}</Tag>
+      </div>
+    )
+  }
+  return (
+    <div>
+      <HotKeys hotKeys={hotKeys} onClick={onClick} render={newShortCut}></HotKeys>
+      <HotKeys hotKeys={["k"]} onClick={onClick} render={() => null}></HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+### Clickable
+
+Trigger the function by clicking component
+```jsx live=true
+import React, { useState } from 'react';
+import { HotKeys } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const hotKeys = ["Control", "a"]
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+  return (
+    <div>
+      <HotKeys hotKeys={hotKeys} onClick={onClick} clickable></HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+### change the DOM element the listener is mounted on
+The hotkey is listened to on the body by default, through `getListenerTarget`
+```jsx live=true
+import React, { useState, useRef } from 'react';
+import { HotKeys, Input } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const hotKeys = ["Meta", "s"]
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+
+  const inputRef = useRef(null);
+  return (
+    <div>
+      <Input ref={inputRef} placeholder='test for target'></Input>
+      <HotKeys hotKeys={hotKeys} onClick={onClick} 
+        getListenerTarget={() => inputRef.current}>
+      </HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+### Disabled
+By setting `disabled` as `true`, the component will not listen hotkeys.
+You can use it when only styling is needed.
+
+```jsx live=true
+import React, { useState } from 'react';
+import { HotKeys } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const hotKeys = ["Control", "a"]
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+  return (
+    <div>
+      <HotKeys hotKeys={hotKeys} onClick={onClick} disabled></HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+## API Reference
+
+### HotKeys
+
+
+| Property          | Instructions                                                                                                                                                                                  | type                            | Default   |
+|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------|-----------|
+| hotKeys  | Define keyboard shortcut,[values](https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values)                                          | KeyboardEvent.key[]                          | -         |
+| content | Set the characters                                         | string[]                          | -         |
+| onClick        | function that keyboard shortcut triggers                                                             |   () => void                      |    -       |
+| clickable       | whether the function can be triggered by click                                                              | boolean                       |   false       |
+| render        |    Replace the element                                               | () => ReactNode \| ReactNode                       |           |
+| className         | class name                                                                  | string                          |           |
+| getListenerTarget         | change the DOM element the listener is mounted on            | () => HTMLElement                       |  document.body         |
+| disabled          |                                                   | boolean                         | false     |
+| style             | style                                                                  | CSSProperties                   |           |
+
+## Design Tokens
+<DesignToken/>
+
+<!-- ## Related Material
+```material
+44, 46
+``` -->
+
+## Related Material
+<semi-material-list code="46"></semi-material-list>

+ 205 - 0
content/input/hotkeys/index.md

@@ -0,0 +1,205 @@
+---
+localeCode: zh-CN
+order: 30
+category: 输入类
+title: HotKeys 快捷键
+icon: doc-input
+width: 60%
+brief: 用于方便用户自定义快捷键及相关操作
+---
+
+
+## 代码演示
+
+### 如何引入
+
+```jsx import
+import { HotKeys } from '@douyinfe/semi-ui';
+```
+
+### 说明
+快捷键仅支持修饰键组合`Shift`,`Control`,`Meta`,`Alt`与其他键的组合。
+
+当设定快捷键与常用快捷键如`Ctrl/Meta + C`相同时,会导致默认行为(复制)不会正常触发。
+
+### 基本
+
+基本使用,通过`hotKeys`传入快捷键组合,通过 onClick 绑定快捷键处理函数,作出响应动作。
+
+按下 Ctrl + Shift + A,使得 count + 1。默认在 body 监听,全局生效。
+
+[hotKeys取值参考](https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values)
+
+```jsx live=true
+import React, { useState } from 'react';
+import { HotKeys } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+  return (
+    <div>
+      <HotKeys hotKeys={['Control', 'Shift', 'a']} onClick={onClick} ></HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+### 自定义内容
+
+通过`content`传入渲染的字符
+
+```jsx live=true
+import React, { useState } from 'react';
+import { HotKeys } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+  return (
+    <div>
+      <HotKeys hotKeys={["Control", "b"]} onClick={onClick} content={["Ctrl", "B"]}></HotKeys>
+        <br></br>
+      <HotKeys hotKeys={["Meta","b"]} onClick={onClick} content={["⌘", "B"]}></HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+通过`render`传入代替渲染的元素
+
+当遇到操作系统导致的快捷键不同的问题时,可以类似地使用两个组件且自定义渲染
+```jsx live=true
+import React, { useState } from 'react';
+import { HotKeys, Tag } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const hotKeys = ["r"]
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+  const newShortCut = () => {
+    return (
+      <div>
+        <Tag>{"按下R / K即可加一"}</Tag>
+      </div>
+    )
+  }
+  return (
+    <div>
+      <HotKeys hotKeys={hotKeys} onClick={onClick} render={newShortCut}></HotKeys>
+      <HotKeys hotKeys={["k"]} onClick={onClick} render={() => null}></HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+### 点击触发
+
+设置`clickable`为`true`可以通过点击触发
+```jsx live=true
+import React, { useState } from 'react';
+import { HotKeys } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const hotKeys = ["Control", "a"]
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+  return (
+    <div>
+      <HotKeys hotKeys={hotKeys} onClick={onClick} clickable></HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+### 修改监听挂载DOM
+快捷键默认在 body 监听,通过`getListenerTarget`修改快捷键监听挂载的DOM
+```jsx live=true
+import React, { useState, useRef } from 'react';
+import { HotKeys, Input } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const hotKeys = ["Meta", "s"]
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+
+  const inputRef = useRef(null);
+  return (
+    <div>
+      <Input ref={inputRef} placeholder='test for target'></Input>
+      <HotKeys hotKeys={hotKeys} onClick={onClick} 
+        getListenerTarget={() => inputRef.current}>
+      </HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+### 不可用
+
+设定 `disabled` 属性为 `true`, 不监听 hotKeys。
+
+当仅需要样式时可以使用
+
+```jsx live=true
+import React, { useState } from 'react';
+import { HotKeys } from '@douyinfe/semi-ui';
+
+function Demo() {
+  const hotKeys = ["Control", "a"]
+  const [cnt, setCnt] = useState(0)
+  const onClick = () => {
+    setCnt(cnt+1)
+  }
+  return (
+    <div>
+      <HotKeys hotKeys={hotKeys} onClick={onClick} disabled></HotKeys>
+      <div>{cnt}</div>
+    </div>
+  );
+}
+```
+
+## API 参考
+
+### HotKeys
+
+| 属性              | 说明                                                                  | 类型                            | 默认值    |
+| ----------------- | --------------------------------------------------------------------- | ------------------------------- | --------- |
+| hotKeys  | 设置快捷键组合,[取值参考](https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values)                                          | KeyboardEvent.key[]                          | -         |
+| content | 设置显示内容                                          | string[]                          | -         |
+| onClick        | 快捷键触发函数                                                              |   () => void                      |    -       |
+| clickable       | 设置函数是否可以点击触发                                                              | boolean                       |   false       |
+| render        |    覆盖组件渲染                                               | () => ReactNode \| ReactNode                       |           |
+| className         | 类名                                                                  | string                          |           |
+| getListenerTarget         | 用于设置监听器挂载的DOM            | () => HTMLElement                       |  document.body         |
+| disabled          | 是否禁用,默认为false                                                 | boolean                         | false     |
+| style             | 样式                                                                  | CSSProperties                   |           |
+
+
+## 设计变量
+<DesignToken/>
+
+<!-- ## 相关物料
+```material
+44, 46
+``` -->
+
+## 相关物料
+<semi-material-list code="46"></semi-material-list>
+

+ 1 - 1
content/input/input/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 30
+order: 31
 category: Input
 title:  Input
 subTitle: Input

+ 1 - 1
content/input/input/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 30
+order: 31
 category: 输入类
 title:  Input 输入框
 icon: doc-input

+ 1 - 1
content/input/inputnumber/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 31
+order: 32
 category: Input
 title:  InputNumber
 subTitle: InputNumber

+ 1 - 1
content/input/inputnumber/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 31
+order: 32
 category: 输入类
 title: InputNumber 数字输入框
 icon: doc-inputnumber

+ 1 - 1
content/input/pincode/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 32
+order: 33
 category: Input
 title: PinCode
 icon: doc-pincode

+ 1 - 1
content/input/pincode/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 32
+order: 33
 category: 输入类
 title: PinCode 验证码输入
 icon: doc-pincode

+ 1 - 1
content/input/radio/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 33
+order: 34
 category: Input
 title: Radio
 subTitle: Radio

+ 1 - 1
content/input/radio/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 33
+order: 34
 category: 输入类
 title: Radio 单选框
 icon: doc-radio

+ 1 - 1
content/input/rating/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 34
+order: 35
 category: Input
 title: Rating
 subTitle: Rating

+ 1 - 1
content/input/rating/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 34
+order: 35
 category: 输入类
 title:  Rating 评分
 icon: doc-rating

+ 1 - 1
content/input/select/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 35
+order: 36
 category: Input
 title: Select
 subTitle: Select

+ 1 - 1
content/input/select/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 35
+order: 36
 category: 输入类
 title: Select 选择器
 icon: doc-select

+ 1 - 1
content/input/slider/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 36
+order: 37
 category: Input
 title:  Slider
 subTitle: Slider

+ 1 - 1
content/input/slider/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 36
+order: 37
 category: 输入类
 title:  Slider 滑动选择器
 icon: doc-slider

+ 1 - 1
content/input/switch/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 37
+order: 38
 category: Input
 title: Switch
 subTitle: Switch

+ 1 - 1
content/input/switch/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 37
+order: 38
 category: 输入类
 title: Switch 开关
 icon: doc-switch

+ 1 - 1
content/input/taginput/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 38
+order: 39
 category: Input
 title: TagInput
 subTitle: TagInput

+ 1 - 1
content/input/taginput/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 38
+order: 39
 category: 输入类
 title: TagInput 标签输入框
 icon: doc-tagInput

+ 1 - 1
content/input/timepicker/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 39
+order: 40
 category: Input
 title: TimePicker
 subTitle: TimePicker

+ 1 - 1
content/input/timepicker/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 39
+order: 40
 category: 输入类
 title: TimePicker 时间选择器
 icon: doc-timepicker

+ 1 - 1
content/input/transfer/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 40
+order: 41
 category: Input
 title: Transfer
 icon: doc-transfer

+ 1 - 1
content/input/transfer/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 40
+order: 41
 category: 输入类
 title: Transfer 穿梭框
 icon: doc-transfer

+ 1 - 1
content/input/treeselect/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 41
+order: 42
 category: Input
 title:  TreeSelect
 subTitle: TreeSelect

+ 1 - 1
content/input/treeselect/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 41
+order: 42
 category: 输入类
 title: TreeSelect 树选择器
 icon: doc-treeselect

+ 1 - 1
content/input/upload/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 42
+order: 43
 category: Input
 title: Upload
 icon: doc-upload

+ 1 - 1
content/input/upload/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 42
+order: 43
 category: 输入类
 title: Upload 上传
 icon: doc-upload

+ 1 - 1
content/navigation/anchor/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 43
+order: 44
 category: Navigation
 title:  Anchor
 subTitle: Anchor

+ 1 - 1
content/navigation/anchor/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 43
+order: 44
 category: 导航类
 title:  Anchor 锚点
 icon: doc-anchor

+ 1 - 1
content/navigation/backtop/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 44
+order: 45
 category: Navigation
 title: BackTop
 subTitle: BackTop

+ 1 - 1
content/navigation/backtop/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 44
+order: 45
 category: 导航类
 title: BackTop 回到顶部
 icon: doc-backtop

+ 1 - 1
content/navigation/breadcrumb/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 45
+order: 46
 category: Navigation
 title:  Breadcrumb
 subTitle: Breadcrumb

+ 1 - 1
content/navigation/breadcrumb/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 45
+order: 46
 category: 导航类
 title:  Breadcrumb 面包屑
 icon: doc-breadcrumb

+ 1 - 1
content/navigation/navigation/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 46
+order: 47
 category: Navigation
 title:  Navigation
 subTitle: Navigation

+ 1 - 1
content/navigation/navigation/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 46
+order: 47
 category: 导航类
 title:  Navigation 导航
 icon: doc-navigation

+ 1 - 1
content/navigation/pagination/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 47
+order: 48
 category: Navigation
 title:  Pagination
 subTitle: Pagination

+ 1 - 1
content/navigation/pagination/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 47
+order: 48
 category: 导航类
 title:  Pagination 翻页器
 icon: doc-pagination

+ 1 - 1
content/navigation/steps/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 48
+order: 49
 category: Navigation
 title: Steps
 subTitle: Steps

+ 1 - 1
content/navigation/steps/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 48
+order: 49
 category: 导航类
 title:  Steps 步骤
 icon: doc-steps

+ 1 - 1
content/navigation/tabs/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 49
+order: 50
 category: Navigation
 title: Tabs
 subTitle: Tabs

+ 1 - 1
content/navigation/tabs/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 49
+order: 50
 category: 导航类
 title: Tabs 标签栏
 icon: doc-tabs

+ 1 - 1
content/navigation/tree/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 50
+order: 51
 category: Navigation
 title:  Tree
 subTitle: Tree

+ 1 - 1
content/navigation/tree/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 50
+order: 51
 category: 导航类
 title:  Tree 树形控件
 icon: doc-tree

+ 1 - 0
content/order.js

@@ -28,6 +28,7 @@ const order = [
     'colorpicker',
     'datepicker',
     'form',
+    'hotkeys',
     'input',
     'inputnumber',
     'pincode',

+ 1 - 1
content/other/configprovider/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 81
+order: 82
 category: Other
 title: ConfigProvider
 icon: doc-configprovider

+ 1 - 1
content/other/configprovider/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 81
+order: 82
 category: 其他
 title:  ConfigProvider 全局配置
 icon: doc-configprovider

+ 1 - 1
content/other/locale/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 82
+order: 83
 category: Other
 title: LocaleProvider
 subTitle: LocaleProvider

+ 1 - 1
content/other/locale/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 82
+order: 83
 category: 其他
 title:  LocaleProvider 多语言
 icon: doc-i18n

+ 1 - 1
content/plus/chat/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 83
+order: 84
 category: Plus
 title:  Chat
 icon: doc-chat

+ 1 - 1
content/plus/chat/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 83
+order: 84
 category: Plus
 title:  Chat 对话
 icon: doc-chat

+ 1 - 1
content/show/avatar/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 51
+order: 52
 category: Show
 title:  Avatar
 subTitle: avatar

+ 1 - 1
content/show/avatar/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 51
+order: 52
 category: 展示类
 title: Avatar 头像
 icon: doc-avatar

+ 1 - 1
content/show/badge/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 52
+order: 53
 category: Show
 title:  Badge
 subTitle: Badge

+ 1 - 1
content/show/badge/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 52
+order: 53
 category: 展示类
 title:  Badge 徽章
 icon: doc-badge

+ 1 - 1
content/show/calendar/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 53
+order: 54
 category: Show
 title:  Calendar
 subTitle: Calendar

+ 1 - 1
content/show/calendar/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 53
+order: 54
 category: 展示类
 title: Calendar 日历
 icon: doc-calendar

+ 1 - 1
content/show/card/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 54
+order: 55
 category: Show
 title:  Card
 subTitle: Card

+ 1 - 1
content/show/card/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 54
+order: 55
 category: 展示类
 title:  Card 卡片
 subTitle: 卡片

+ 1 - 1
content/show/carousel/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 55
+order: 56
 category: Show
 title: Carousel
 subTitle: Carousel

+ 1 - 1
content/show/carousel/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 55
+order: 56
 category: 展示类
 title: Carousel 轮播图
 icon: doc-carousel

+ 1 - 1
content/show/chart/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 73
+order: 74
 category: Show
 title: Data Visualization
 icon: doc-vchart

+ 1 - 1
content/show/chart/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 73
+order: 74
 category: 展示类
 title:  Data Visualization 数据可视化
 icon: doc-vchart

+ 1 - 1
content/show/collapse/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 56
+order: 57
 category: Show
 title: Collapse
 subTitle: Collapse

+ 1 - 1
content/show/collapse/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 56
+order: 57
 category: 展示类
 title: Collapse 折叠面板
 icon: doc-accordion

+ 1 - 1
content/show/collapsible/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 57
+order: 58
 category: Show
 title: Collapsible
 subTitle: Collapsible

+ 1 - 1
content/show/collapsible/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 57
+order: 58
 category: 展示类
 title: Collapsible 折叠
 icon: doc-collapsible

+ 1 - 1
content/show/descriptions/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 58
+order: 59
 category: Show
 title: Description
 subTitle: Descriptions

+ 1 - 1
content/show/descriptions/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 58
+order: 59
 category: 展示类
 title: Descriptions 描述列表
 icon: doc-descriptions

+ 1 - 1
content/show/dropdown/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 59
+order: 60
 category: Show
 title: Dropdown
 subTitle: Dropdown

+ 1 - 1
content/show/dropdown/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 59
+order: 60
 category: 展示类
 title: Dropdown 下拉框
 icon: doc-dropdown

+ 1 - 1
content/show/empty/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 60
+order: 61
 category: Show
 title: Empty
 subTitle: Empty

+ 1 - 1
content/show/empty/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 60
+order: 61
 category: 展示类
 title: Empty 空状态
 icon: doc-empty

+ 1 - 1
content/show/highlight/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 61
+order: 62
 category: Show
 title: Highlight 
 icon: doc-highlight

+ 1 - 1
content/show/highlight/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 61
+order: 62
 category: 展示类
 title: Highlight 高亮文本
 icon: doc-highlight

+ 1 - 1
content/show/image/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 62
+order: 63
 category: Show
 title: Image
 icon: doc-image

+ 1 - 1
content/show/image/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 62
+order: 63
 category: 展示类
 title: Image 图片
 icon: doc-image

+ 1 - 1
content/show/list/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 63
+order: 64
 category: Show
 title: List
 subTitle: List

+ 1 - 1
content/show/list/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 63
+order: 64
 category: 展示类
 title: List 列表
 icon: doc-list

+ 1 - 1
content/show/modal/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 64
+order: 65
 category: Show
 title:  Modal
 subTitle: Modal

+ 1 - 1
content/show/modal/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 64
+order: 65
 category: 展示类
 title: Modal 模态对话框
 icon: doc-modal

+ 1 - 1
content/show/overflowlist/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 65
+order: 66
 category: Show
 title: OverflowList
 subTitle: OverflowList

+ 1 - 1
content/show/overflowlist/index.md

@@ -1,6 +1,6 @@
 ---
 localeCode: zh-CN
-order: 65
+order: 66
 category: 展示类
 title: OverflowList 折叠列表
 icon: doc-overflowList

+ 1 - 1
content/show/popover/index-en-US.md

@@ -1,6 +1,6 @@
 ---
 localeCode: en-US
-order: 66
+order: 67
 category: Show
 title: Popover
 subTitle: Popover

Some files were not shown because too many files changed in this diff