1 | import { ComponentType } from 'react'
|
2 | import { CommonEventFunction, StandardProps } from './common'
|
3 | interface RichTextProps extends StandardProps {
|
4 | /** 文本是否可选,该属性会使节点显示为 block
|
5 | * @default false
|
6 | * @supported weapp, h5, harmony_hybrid
|
7 | */
|
8 | userSelect?: boolean
|
9 | /** 节点列表/ HTML String
|
10 | * @supported weapp, alipay, swan, tt, qq, h5, rn, harmony, harmony_hybrid
|
11 | */
|
12 | nodes?: Nodes
|
13 | /** 显示连续空格
|
14 | * @supported weapp, alipay, tt, qq, h5, rn, harmony_hybrid
|
15 | */
|
16 | space?: keyof RichTextProps.TSpace
|
17 | /** 富文本是否可以长按选中,可用于复制,粘贴,长按搜索等场景
|
18 | * @default false(基础库 3.150.1 以前版本)true(基础库 3.150.1 及以后版本)
|
19 | * @supported swan, h5, harmony_hybrid
|
20 | */
|
21 | selectable?: string
|
22 | /** 阻止长按图片时弹起默认菜单(将该属性设置为image-menu-prevent或image-menu-prevent="true"),只在初始化时有效,不能动态变更;若不想阻止弹起默认菜单,则不需要设置此属性
|
23 | * @default false
|
24 | * @supported swan
|
25 | */
|
26 | imageMenuPrevent?: string
|
27 | /** 富文本中的图片是否可点击预览。在不设置的情况下,若 rich-text 未监听点击事件,则默认开启。未显示设置 preview 时会进行点击默认预览判断,建议显示设置 preview
|
28 | * @supported swan
|
29 | */
|
30 | preview?: string
|
31 | /** 触摸。
|
32 | * @supported alipay
|
33 | */
|
34 | onTap?: CommonEventFunction
|
35 | /** 触摸动作开始。
|
36 | * @supported alipay
|
37 | */
|
38 | onTouchstart?: CommonEventFunction
|
39 | /** 触摸移动事件。
|
40 | * @supported alipay
|
41 | */
|
42 | onTouchmove?: CommonEventFunction
|
43 | /** 触摸动作被打断。
|
44 | * @supported alipay
|
45 | */
|
46 | onTouchcancel?: CommonEventFunction
|
47 | /** 触摸动作结束。
|
48 | * @supported alipay
|
49 | */
|
50 | onTouchend?: CommonEventFunction
|
51 | /** 触摸后,超过 500ms 再离开。
|
52 | * @supported alipay
|
53 | */
|
54 | onLongtap?: CommonEventFunction
|
55 | }
|
56 | /** 节点类型
|
57 | * > 现支持两种节点,通过type来区分,分别是元素节点和文本节点,默认是元素节点,在富文本区域里显示的HTML节点 元素节点:type = node*
|
58 | */
|
59 | type Nodes = Array<RichTextProps.Text | RichTextProps.HTMLElement> | string
|
60 | declare namespace RichTextProps {
|
61 | /** space 的合法值 */
|
62 | interface TSpace {
|
63 | /** 中文字符空格一半大小 */
|
64 | ensp
|
65 | /** 中文字符空格大小 */
|
66 | emsp
|
67 | /** 根据字体设置的空格大小 */
|
68 | nbsp
|
69 | }
|
70 | /** 文本节点 */
|
71 | interface Text {
|
72 | /** 文本类型 */
|
73 | type: 'text'
|
74 | /** 文本字符串
|
75 | * @remarks 支持 entities
|
76 | * @default ""
|
77 | */
|
78 | text: string
|
79 | }
|
80 | /** 元素节点,默认为元素节点
|
81 | * 全局支持class和style属性,不支持 id 属性。
|
82 | */
|
83 | interface HTMLElement {
|
84 | /** HTML 类型 */
|
85 | type?: 'node'
|
86 | /** 标签名
|
87 | * @remarks 支持部分受信任的 HTML 节点
|
88 | */
|
89 | name: string
|
90 | /** 属性
|
91 | * @remarks 支持部分受信任的属性,遵循 Pascal 命名法
|
92 | */
|
93 | attrs?: Object
|
94 | /** 子节点列表
|
95 | * @remarks 结构和 nodes 一致
|
96 | */
|
97 | children?: Nodes
|
98 | }
|
99 | }
|
100 | /** 富文本
|
101 | * @classification base
|
102 | * @supported weapp, swan, alipay, tt, h5, rn, harmony, harmony_hybrid
|
103 | * @example_react
|
104 | * ```tsx
|
105 | * class App extends Components {
|
106 | * state = {
|
107 | * nodes: [{
|
108 | * name: 'div',
|
109 | * attrs: {
|
110 | * class: 'div_class',
|
111 | * style: 'line-height: 60px; color: red;'
|
112 | * },
|
113 | * children: [{
|
114 | * type: 'text',
|
115 | * text: 'Hello World!'
|
116 | * }]
|
117 | * }]
|
118 | * }
|
119 | * render () {
|
120 | * return (
|
121 | * <RichText nodes={this.state.nodes} />
|
122 | * )
|
123 | * }
|
124 | * }
|
125 | * ```
|
126 | * @example_vue
|
127 | * ```html
|
128 | * <template>
|
129 | * <view class="components-page">
|
130 | * <rich-text :nodes="nodes"></rich-text>
|
131 | * </view>
|
132 | * </template>
|
133 | *
|
134 | * <script>
|
135 | * export default {
|
136 | * name: 'Index',
|
137 | * data() {
|
138 | * return {
|
139 | * nodes: [{
|
140 | * name: 'div',
|
141 | * attrs: {
|
142 | * class: 'div_class',
|
143 | * style: 'line-height: 60px; color: red;'
|
144 | * },
|
145 | * children: [{
|
146 | * type: 'text',
|
147 | * text: 'Hello World!'
|
148 | * }]
|
149 | * }]
|
150 | * }
|
151 | * },
|
152 | * onReady () {
|
153 | * console.log('onReady')
|
154 | * }
|
155 | * }
|
156 | * </script>
|
157 | * ```
|
158 | * @see https://developers.weixin.qq.com/miniprogram/dev/component/rich-text.html
|
159 | */
|
160 | declare const RichText: ComponentType<RichTextProps>
|
161 | export { RichText, RichTextProps }
|