ranui 0.1.0-alpha → 0.1.1-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/.vitepress/theme/index.ts +0 -9
- package/assets/image/failImage.ts +0 -4
- package/assets/svgs/check-circle.svg +0 -4
- package/assets/svgs/close-circle.svg +0 -4
- package/assets/svgs/eye-close.svg +0 -4
- package/assets/svgs/eye.svg +0 -4
- package/assets/svgs/info-circle.svg +0 -5
- package/assets/svgs/lock.svg +0 -4
- package/assets/svgs/unlock.svg +0 -4
- package/assets/svgs/user.svg +0 -3
- package/components/button/index.less +0 -95
- package/components/button/index.ts +0 -64
- package/components/form/index.less +0 -0
- package/components/form/index.ts +0 -36
- package/components/image/index.less +0 -0
- package/components/image/index.ts +0 -62
- package/components/input/index.less +0 -114
- package/components/input/index.ts +0 -367
- package/components/modal/index.less +0 -0
- package/components/modal/index.ts +0 -118
- package/components/tabPane/index.less +0 -0
- package/components/tabPane/index.ts +0 -71
- package/components/tabs/index.less +0 -47
- package/components/tabs/index.ts +0 -207
- package/dist/assets/image/failImage.d.ts +0 -2
- package/dist/components/button/index.d.ts +0 -2
- package/dist/components/image/index.d.ts +0 -2
- package/dist/components/input/index.d.ts +0 -2
- package/dist/components/modal/index.d.ts +0 -2
- package/dist/components/tabPane/index.d.ts +0 -2
- package/dist/components/tabs/index.d.ts +0 -2
- package/dist/typings.d.ts +0 -4
- package/dist/utils/index.d.ts +0 -7
- package/docs/button/index.md +0 -25
- package/docs/image/index.md +0 -9
- package/docs/input/index.md +0 -146
- package/docs/tabs/index.md +0 -121
- package/index.html +0 -67
- package/index.ts +0 -6
- package/plugins/auto-import-file.ts +0 -59
- package/plugins/load-style.ts +0 -31
- package/tsconfig.json +0 -31
- package/typings.d.ts +0 -4
- package/utils/index.ts +0 -12
- package/vite.config.ts +0 -58
package/components/tabs/index.ts
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
import { isDisabled } from '@/utils/index'
|
|
2
|
-
class Tabs extends HTMLElement {
|
|
3
|
-
static get observedAttributes() {
|
|
4
|
-
return ["active", 'forceRender'];
|
|
5
|
-
}
|
|
6
|
-
_container: HTMLDivElement;
|
|
7
|
-
_header: HTMLDivElement;
|
|
8
|
-
_nav: HTMLDivElement;
|
|
9
|
-
_line: HTMLDivElement;
|
|
10
|
-
_content: HTMLDivElement;
|
|
11
|
-
_wrap: HTMLDivElement;
|
|
12
|
-
_slot: HTMLSlotElement;
|
|
13
|
-
tabHeaderKeyMapIndex: Record<string, number>;
|
|
14
|
-
constructor() {
|
|
15
|
-
super();
|
|
16
|
-
/**
|
|
17
|
-
* <div class="tab">
|
|
18
|
-
* <div class="tab-header">
|
|
19
|
-
* <div class="tab-header_nav">...</div>
|
|
20
|
-
* <div class="tab-header_line"></div>
|
|
21
|
-
* </div>
|
|
22
|
-
* <div class="tab-content">
|
|
23
|
-
* <div class="tab-content_wrap">
|
|
24
|
-
* <slot></slot>
|
|
25
|
-
* </div>
|
|
26
|
-
* </div>
|
|
27
|
-
* </div>
|
|
28
|
-
*/
|
|
29
|
-
this._container = document.createElement("div");
|
|
30
|
-
this._container.setAttribute("class", "tab");
|
|
31
|
-
this._header = document.createElement("div");
|
|
32
|
-
this._header.setAttribute("class", "tab-header");
|
|
33
|
-
this._nav = document.createElement("div");
|
|
34
|
-
this._nav.setAttribute("class", "tab-header_nav");
|
|
35
|
-
this._line = document.createElement("div");
|
|
36
|
-
this._line.setAttribute("class", "tab-header_line");
|
|
37
|
-
this._content = document.createElement("div");
|
|
38
|
-
this._content.setAttribute("class", "tab-content");
|
|
39
|
-
this._wrap = document.createElement("div");
|
|
40
|
-
this._wrap.setAttribute("class", "tab-content_wrap");
|
|
41
|
-
this._slot = document.createElement("slot");
|
|
42
|
-
this._wrap.appendChild(this._slot);
|
|
43
|
-
this._content.appendChild(this._wrap);
|
|
44
|
-
this._header.appendChild(this._nav);
|
|
45
|
-
this._header.appendChild(this._line);
|
|
46
|
-
this._container.appendChild(this._header);
|
|
47
|
-
this._container.appendChild(this._content);
|
|
48
|
-
|
|
49
|
-
this.tabHeaderKeyMapIndex = {}
|
|
50
|
-
|
|
51
|
-
const shadowRoot = this.attachShadow({ mode: "closed" });
|
|
52
|
-
shadowRoot.appendChild(this._container);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
get align() {
|
|
56
|
-
return this.getAttribute("align") || "start";
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
set align(value) {
|
|
60
|
-
this.setAttribute("align", value);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
get type() {
|
|
64
|
-
return this.getAttribute("type") || "flat";
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
get active() {
|
|
68
|
-
return this.getAttribute("active");
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
set active(value) {
|
|
72
|
-
if (value) {
|
|
73
|
-
this.setAttribute("active", value);
|
|
74
|
-
this.setTabLine(value)
|
|
75
|
-
this.setTabContent(value)
|
|
76
|
-
} else {
|
|
77
|
-
this.removeAttribute("active");
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
set type(value) {
|
|
82
|
-
this.setAttribute("type", value);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* @description: 构建tabPane组件key值和index的映射,同时判断一个tabs下的tabPane key值不能重复
|
|
86
|
-
* @param {string} key
|
|
87
|
-
* @param {number} index
|
|
88
|
-
*/
|
|
89
|
-
initTabHeaderKeyMapIndex = (key: string, index: number) => {
|
|
90
|
-
const value = this.tabHeaderKeyMapIndex[key]
|
|
91
|
-
if (value) {
|
|
92
|
-
throw new Error('tab 组件的 key 值存在重复, 或者某个 tab 组件缺少 key 属性')
|
|
93
|
-
} else {
|
|
94
|
-
this.tabHeaderKeyMapIndex[key] = index
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* @description: 根据传入的tabPane生成tabs的头部
|
|
99
|
-
* @param {Element} tabPane
|
|
100
|
-
* @param {number} index
|
|
101
|
-
* @return {Element}
|
|
102
|
-
*/
|
|
103
|
-
createTabHeader(tabPane: Element, index: number) {
|
|
104
|
-
const label = tabPane.getAttribute("label") || '';
|
|
105
|
-
const key = tabPane.getAttribute('key') || `${index}`
|
|
106
|
-
const type = tabPane.getAttribute('type') || 'text'
|
|
107
|
-
this.initTabHeaderKeyMapIndex(key, index)
|
|
108
|
-
const tabHeader = document.createElement('r-button')
|
|
109
|
-
tabHeader.setAttribute('class', 'tab-header_nav__item')
|
|
110
|
-
tabHeader.setAttribute('type', type)
|
|
111
|
-
isDisabled(tabPane) && tabHeader.setAttribute('disabled', '')
|
|
112
|
-
tabHeader.setAttribute('ran-key', key)
|
|
113
|
-
tabHeader.innerHTML = label
|
|
114
|
-
return tabHeader
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* @description: 通过key值设置tabLine的位置
|
|
118
|
-
* @param {string} key
|
|
119
|
-
*/
|
|
120
|
-
setTabLine = (key: string) => {
|
|
121
|
-
if (key) {
|
|
122
|
-
const index = this.tabHeaderKeyMapIndex[key]
|
|
123
|
-
this._line.style.setProperty('transform', `translateX(${100 * index}%)`)
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* @description: 通过传入的key值设置tabContent
|
|
128
|
-
*/
|
|
129
|
-
setTabContent = (key: string) => {
|
|
130
|
-
if (key) {
|
|
131
|
-
const index = this.tabHeaderKeyMapIndex[key]
|
|
132
|
-
this._wrap.style.setProperty('transform', `translateX(${index * -100}%)`)
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* @description: 根据点击设置tabLine的位置
|
|
137
|
-
* @param {Event} e
|
|
138
|
-
* @param {number} index
|
|
139
|
-
* @param {number} width
|
|
140
|
-
*/
|
|
141
|
-
clickTabHead = (e: Event) => {
|
|
142
|
-
const tabHeader = e.target as Element
|
|
143
|
-
const key = tabHeader.getAttribute('ran-key')
|
|
144
|
-
const disabled = isDisabled(tabHeader)
|
|
145
|
-
if (!disabled && key) {
|
|
146
|
-
this.setAttribute('active', key)
|
|
147
|
-
this.setTabLine(key)
|
|
148
|
-
this.setTabContent(key)
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* @description: 初始化tabs的active属性和tabLine,tabContent
|
|
153
|
-
*/
|
|
154
|
-
initActive = () => {
|
|
155
|
-
const tabHeaderList = [...this._nav.children]
|
|
156
|
-
const initTabHeader = tabHeaderList.filter(item => !isDisabled(item)).shift()
|
|
157
|
-
if (!initTabHeader) return
|
|
158
|
-
const index = tabHeaderList.findIndex(item => item === initTabHeader)
|
|
159
|
-
const key = initTabHeader?.getAttribute('ran-key') || `${index}`
|
|
160
|
-
if (this.active === null && key !== null) {
|
|
161
|
-
this.setAttribute('active', `${key}`)
|
|
162
|
-
const { width = 0 } = initTabHeader.getBoundingClientRect()
|
|
163
|
-
this._line.style.setProperty("width", `${width}px`);
|
|
164
|
-
this.setTabLine(key)
|
|
165
|
-
this.setTabContent(key)
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* @description: 监听slot组件的添加/删除/替换操作,进行tabs初始化
|
|
170
|
-
* @return {*}
|
|
171
|
-
*/
|
|
172
|
-
listenSlotChange = () => {
|
|
173
|
-
const slots = this._slot.assignedElements();
|
|
174
|
-
slots.forEach((item, index) => {
|
|
175
|
-
const tabPane = this.createTabHeader(item, index)
|
|
176
|
-
this._nav.appendChild(tabPane)
|
|
177
|
-
tabPane.addEventListener('click', this.clickTabHead)
|
|
178
|
-
});
|
|
179
|
-
this.initActive()
|
|
180
|
-
};
|
|
181
|
-
|
|
182
|
-
connectedCallback() {
|
|
183
|
-
this._slot.addEventListener("slotchange", this.listenSlotChange);
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
disconnectCallback() {
|
|
187
|
-
this._slot.removeEventListener("slotchange", this.listenSlotChange);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
attributeChangedCallback(name: string, oldValue: string, newValue: string) {
|
|
191
|
-
if (oldValue !== newValue) {
|
|
192
|
-
this.dispatchEvent(new CustomEvent('change', {
|
|
193
|
-
detail: {
|
|
194
|
-
active: this.active,
|
|
195
|
-
}
|
|
196
|
-
}));
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
function CustomElement() {
|
|
202
|
-
if (!customElements.get("r-tabs")) {
|
|
203
|
-
customElements.define("r-tabs", Tabs);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
export default CustomElement();
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
declare const failImage = "\n data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8LH4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg==\n";
|
|
2
|
-
export default failImage;
|
package/dist/typings.d.ts
DELETED
package/dist/utils/index.d.ts
DELETED
package/docs/button/index.md
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Button 按钮
|
|
2
|
-
按钮用于开始一个即时操作。
|
|
3
|
-
|
|
4
|
-
## 代码演示
|
|
5
|
-
|
|
6
|
-
<div style="display:inline-block;margin-right: 8px;margin-bottom: 12px;">
|
|
7
|
-
<r-button type="primary"><span slot="r-btn_content">主要按钮</span></r-button>
|
|
8
|
-
</div>
|
|
9
|
-
<div style="display:inline-block;margin-right: 8px;margin-bottom: 12px;">
|
|
10
|
-
<r-button type="warning"><span slot="r-btn_content">警告按钮</span></r-button>
|
|
11
|
-
</div>
|
|
12
|
-
<div style="display:inline-block;margin-right: 8px;margin-bottom: 12px;">
|
|
13
|
-
<r-button><span slot="r-btn_content">默认按钮</span></r-button>
|
|
14
|
-
</div>
|
|
15
|
-
<div style="display:inline-block;margin-right: 8px;margin-bottom: 12px;">
|
|
16
|
-
<r-button type="text"><span slot="r-btn_content">文本按钮</span></r-button>
|
|
17
|
-
</div>
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
```xml
|
|
21
|
-
<r-button type="primary"><span slot="r-btn_content">主要按钮</span></r-button>
|
|
22
|
-
<r-button type="warning"><span slot="r-btn_content">警告按钮</span></r-button>
|
|
23
|
-
<r-button type="text"><span slot="r-btn_content">文本按钮</span></r-button>
|
|
24
|
-
<r-button><span slot="r-btn_content">默认按钮</span></r-button>
|
|
25
|
-
```
|
package/docs/image/index.md
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
# Image 图片
|
|
2
|
-
|
|
3
|
-
## 代码演示
|
|
4
|
-
|
|
5
|
-
```xml
|
|
6
|
-
<r-img src="" fallback=""></r-img>
|
|
7
|
-
```
|
|
8
|
-
|
|
9
|
-
<r-img fallback="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMIAAADDCAYAAADQvc6UAAABRWlDQ1BJQ0MgUHJvZmlsZQAAKJFjYGASSSwoyGFhYGDIzSspCnJ3UoiIjFJgf8LAwSDCIMogwMCcmFxc4BgQ4ANUwgCjUcG3awyMIPqyLsis7PPOq3QdDFcvjV3jOD1boQVTPQrgSkktTgbSf4A4LbmgqISBgTEFyFYuLykAsTuAbJEioKOA7DkgdjqEvQHEToKwj4DVhAQ5A9k3gGyB5IxEoBmML4BsnSQk8XQkNtReEOBxcfXxUQg1Mjc0dyHgXNJBSWpFCYh2zi+oLMpMzyhRcASGUqqCZ16yno6CkYGRAQMDKMwhqj/fAIcloxgHQqxAjIHBEugw5sUIsSQpBobtQPdLciLEVJYzMPBHMDBsayhILEqEO4DxG0txmrERhM29nYGBddr//5/DGRjYNRkY/l7////39v///y4Dmn+LgeHANwDrkl1AuO+pmgAAADhlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAAqACAAQAAAABAAAAwqADAAQAAAABAAAAwwAAAAD9b/HnAAAHlklEQVR4Ae3dP3PTWBSGcbGzM6GCKqlIBRV0dHRJFarQ0eUT8LH4BnRU0NHR0UEFVdIlFRV7TzRksomPY8uykTk/zewQfKw/9znv4yvJynLv4uLiV2dBoDiBf4qP3/ARuCRABEFAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghggQAQZQKAnYEaQBAQaASKIAQJEkAEEegJmBElAoBEgghgg0Aj8i0JO4OzsrPv69Wv+hi2qPHr0qNvf39+iI97soRIh4f3z58/u7du3SXX7Xt7Z2enevHmzfQe+oSN2apSAPj09TSrb+XKI/f379+08+A0cNRE2ANkupk+ACNPvkSPcAAEibACyXUyfABGm3yNHuAECRNgAZLuYPgEirKlHu7u7XdyytGwHAd8jjNyng4OD7vnz51dbPT8/7z58+NB9+/bt6jU/TI+AGWHEnrx48eJ/EsSmHzx40L18+fLyzxF3ZVMjEyDCiEDjMYZZS5wiPXnyZFbJaxMhQIQRGzHvWR7XCyOCXsOmiDAi1HmPMMQjDpbpEiDCiL358eNHurW/5SnWdIBbXiDCiA38/Pnzrce2YyZ4//59F3ePLNMl4PbpiL2J0L979+7yDtHDhw8vtzzvdGnEXdvUigSIsCLAWavHp/+qM0BcXMd/q25n1vF57TYBp0a3mUzilePj4+7k5KSLb6gt6ydAhPUzXnoPR0dHl79WGTNCfBnn1uvSCJdegQhLI1vvCk+fPu2ePXt2tZOYEV6/fn31dz+shwAR1sP1cqvLntbEN9MxA9xcYjsxS1jWR4AIa2Ibzx0tc44fYX/16lV6NDFLXH+YL32jwiACRBiEbf5KcXoTIsQSpzXx4N28Ja4BQoK7rgXiydbHjx/P25TaQAJEGAguWy0+2Q8PD6/Ki4R8EVl+bzBOnZY95fq9rj9zAkTI2SxdidBHqG9+skdw43borCXO/ZcJdraPWdv22uIEiLA4q7nvvCug8WTqzQveOH26fodo7g6uFe/a17W3+nFBAkRYENRdb1vkkz1CH9cPsVy/jrhr27PqMYvENYNlHAIesRiBYwRy0V+8iXP8+/fvX11Mr7L7ECueb/r48eMqm7FuI2BGWDEG8cm+7G3NEOfmdcTQw4h9/55lhm7DekRYKQPZF2ArbXTAyu4kDYB2YxUzwg0gi/41ztHnfQG26HbGel/crVrm7tNY+/1btkOEAZ2M05r4FB7r9GbAIdxaZYrHdOsgJ/wCEQY0J74TmOKnbxxT9n3FgGGWWsVdowHtjt9Nnvf7yQM2aZU/TIAIAxrw6dOnAWtZZcoEnBpNuTuObWMEiLAx1HY0ZQJEmHJ3HNvGCBBhY6jtaMoEiJB0Z29vL6ls58vxPcO8/zfrdo5qvKO+d3Fx8Wu8zf1dW4p/cPzLly/dtv9Ts/EbcvGAHhHyfBIhZ6NSiIBTo0LNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiECRCjUbEPNCRAhZ6NSiAARCjXbUHMCRMjZqBQiQIRCzTbUnAARcjYqhQgQoVCzDTUnQIScjUohAkQo1GxDzQkQIWejUogAEQo121BzAkTI2agUIkCEQs021JwAEXI2KoUIEKFQsw01J0CEnI1KIQJEKNRsQ80JECFno1KIABEKNdtQcwJEyNmoFCJAhELNNtScABFyNiqFCBChULMNNSdAhJyNSiEC/wGgKKC4YMA4TAAAAABJRU5ErkJggg=="></r-img>
|
package/docs/input/index.md
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
# Input 输入框
|
|
2
|
-
通过鼠标或键盘输入内容,是最基础的表单域的包装。
|
|
3
|
-
|
|
4
|
-
## 代码演示
|
|
5
|
-
|
|
6
|
-
<div style="width:300px;">
|
|
7
|
-
输入框:<r-input></r-input>
|
|
8
|
-
</div>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
```xml
|
|
12
|
-
<r-input></r-input>
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## 属性
|
|
16
|
-
### 标签`label`
|
|
17
|
-
|
|
18
|
-
提供类似于Metiral Design的输入体验。
|
|
19
|
-
|
|
20
|
-
<r-input label="user"></r-input>
|
|
21
|
-
|
|
22
|
-
```html
|
|
23
|
-
<r-input label="user"></r-input>
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### 占位`placeholder`
|
|
27
|
-
|
|
28
|
-
与原生`placeholder`一致。
|
|
29
|
-
|
|
30
|
-
<r-input placeholder="user"></r-input>
|
|
31
|
-
|
|
32
|
-
```html
|
|
33
|
-
<r-input placeholder="user"></r-input>
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
### 禁用`disabled`
|
|
37
|
-
|
|
38
|
-
通过`disabled`可以禁用输入框,禁用后该按钮上的事件失效。
|
|
39
|
-
|
|
40
|
-
<r-input label="user" disabled></r-input>
|
|
41
|
-
|
|
42
|
-
```html
|
|
43
|
-
<r-input label="user" disabled></r-input>
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### 值`value`
|
|
47
|
-
|
|
48
|
-
设置或返回输入框的`value`属性值。
|
|
49
|
-
|
|
50
|
-
<r-input value="1234"></r-input>
|
|
51
|
-
|
|
52
|
-
### 类型`type`
|
|
53
|
-
|
|
54
|
-
目前支持`password`、`number`这几种类型,设置后会出现额外的`ui`控件。
|
|
55
|
-
|
|
56
|
-
#### 密码输入框
|
|
57
|
-
|
|
58
|
-
支持密码明文和密文切换。
|
|
59
|
-
|
|
60
|
-
<r-input icon="lock" type="password"></r-input>
|
|
61
|
-
|
|
62
|
-
```html
|
|
63
|
-
<r-input icon="lock" type="password"></r-input>
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
### 图标`icon`
|
|
67
|
-
|
|
68
|
-
可以设置一个`icon`来表示标签标识。
|
|
69
|
-
|
|
70
|
-
<r-input icon="user"></r-input>
|
|
71
|
-
|
|
72
|
-
```html
|
|
73
|
-
<r-input icon="user"></r-input>
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
#### 数字输入框
|
|
77
|
-
|
|
78
|
-
数字输入框,类似于原生`input[type=number]`,支持`min`、`max`、`step`属性,支持键盘上下键切换数字。
|
|
79
|
-
|
|
80
|
-
<r-input type="number" min="-10" max="10" step="0.5" ></r-input>
|
|
81
|
-
|
|
82
|
-
```html
|
|
83
|
-
<r-input type="number" min="-10" max="10" step="0.5" ></r-input>
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
### 必填项`required`
|
|
87
|
-
|
|
88
|
-
<r-input icon="user" required placeholder="required"></r-input>
|
|
89
|
-
|
|
90
|
-
```html
|
|
91
|
-
<r-input icon="user" required placeholder="required"></r-input>
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### 正则校验pattern
|
|
95
|
-
|
|
96
|
-
设置`pattern`属性,这是一个正则。
|
|
97
|
-
|
|
98
|
-
<r-input icon="phone" pattern="^1(3|4|5|6|7|8|9)\d{9}$" placeholder="请输入手机号"></r-input>
|
|
99
|
-
|
|
100
|
-
```html
|
|
101
|
-
<r-input icon="phone" pattern="^1(3|4|5|6|7|8|9)\d{9}$" placeholder="请输入手机号"></r-input>
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### 自定义错误提示
|
|
105
|
-
可以自定义提示信息`warning`
|
|
106
|
-
|
|
107
|
-
<r-input icon="phone" pattern="^1(3|4|5|6|7|8|9)\d{9}$" placeholder="请输入手机号" warning="手机号格式有误"></r-input>
|
|
108
|
-
|
|
109
|
-
```html
|
|
110
|
-
<r-input icon="phone" pattern="^1(3|4|5|6|7|8|9)\d{9}$" placeholder="请输入手机号" warning="手机号格式有误"></r-input>
|
|
111
|
-
```
|
|
112
|
-
### name属性名
|
|
113
|
-
跟form组件联动的时候有效,form提交时收集的字段名字
|
|
114
|
-
|
|
115
|
-
## 事件`event`
|
|
116
|
-
|
|
117
|
-
常见的回调事件。
|
|
118
|
-
|
|
119
|
-
### onchange
|
|
120
|
-
|
|
121
|
-
文本改变的时候触发(失焦后)。
|
|
122
|
-
|
|
123
|
-
<r-input onchange="XyMessage.info(this.value)"></r-input>
|
|
124
|
-
|
|
125
|
-
```html
|
|
126
|
-
<r-input onchange="fn(event)"></r-input>
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### oninput
|
|
130
|
-
|
|
131
|
-
输入时触发。
|
|
132
|
-
<r-input oninput="XyMessage.info(this.value)"></r-input>
|
|
133
|
-
|
|
134
|
-
```html
|
|
135
|
-
<r-input oninput="fn(event)"></r-input>
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### checkout
|
|
139
|
-
|
|
140
|
-
主动校验,弹出提示信息。
|
|
141
|
-
|
|
142
|
-
<r-input required placeholder="required"></r-input>
|
|
143
|
-
|
|
144
|
-
```js
|
|
145
|
-
input.checkout();
|
|
146
|
-
```
|
package/docs/tabs/index.md
DELETED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
# Tab
|
|
2
|
-
|
|
3
|
-
## 代码展示
|
|
4
|
-
|
|
5
|
-
<r-tabs>
|
|
6
|
-
<r-tab label="tab1">tab1</r-tab>
|
|
7
|
-
<r-tab label="tab2">tab2</r-tab>
|
|
8
|
-
<r-tab label="tab3">tab3</r-tab>
|
|
9
|
-
</r-tabs>
|
|
10
|
-
|
|
11
|
-
```xml
|
|
12
|
-
<r-tabs>
|
|
13
|
-
<r-tab label="tab1">tab1</r-tab>
|
|
14
|
-
<r-tab label="tab2">tab2</r-tab>
|
|
15
|
-
<r-tab label="tab3">tab3</r-tab>
|
|
16
|
-
</r-tabs>
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
## 属性
|
|
20
|
-
|
|
21
|
-
### 名称`label`
|
|
22
|
-
|
|
23
|
-
每个`r-tab`需要指定一个名称`label`,用于显示标签头。
|
|
24
|
-
|
|
25
|
-
<r-tabs>
|
|
26
|
-
<r-tab label="tab1">tab1</r-tab>
|
|
27
|
-
<r-tab label="tab2">tab2</r-tab>
|
|
28
|
-
<r-tab label="tab3">tab3</r-tab>
|
|
29
|
-
</r-tabs>
|
|
30
|
-
|
|
31
|
-
```xml
|
|
32
|
-
<r-tabs>
|
|
33
|
-
<r-tab label="tab1">tab1</r-tab>
|
|
34
|
-
<r-tab label="tab2">tab2</r-tab>
|
|
35
|
-
<r-tab label="tab3">tab3</r-tab>
|
|
36
|
-
</r-tabs>
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### 禁用`disabled`
|
|
40
|
-
|
|
41
|
-
每个`r-tab`可以指定`disabled`属性,用来禁用该标签页。
|
|
42
|
-
|
|
43
|
-
<r-tabs>
|
|
44
|
-
<r-tab label="tab1">tab1</r-tab>
|
|
45
|
-
<r-tab id="tab-content-disabled" label="tab2" disabled>tab2</r-tab>
|
|
46
|
-
<r-tab label="tab3">tab3</r-tab>
|
|
47
|
-
</r-tabs>
|
|
48
|
-
|
|
49
|
-
```xml
|
|
50
|
-
<r-tabs>
|
|
51
|
-
<r-tab label="tab1">tab1</r-tab>
|
|
52
|
-
<r-tab label="tab2" disabled>tab2</r-tab>
|
|
53
|
-
<r-tab label="tab3">tab3</r-tab>
|
|
54
|
-
</r-tabs>
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### 标识`key`,`active`
|
|
58
|
-
|
|
59
|
-
每个`r-tab`需要指定一个标识`key`,没有会默认以序列号为`key`,
|
|
60
|
-
|
|
61
|
-
`active`作用在`r-tabs`上,可以指定切换到具体标签页,也可以指定初始值。
|
|
62
|
-
|
|
63
|
-
<r-tabs active="B">
|
|
64
|
-
<r-tab label="tab1" key="A">tab1</r-tab>
|
|
65
|
-
<r-tab label="tab2" key="B">tab2</r-tab>
|
|
66
|
-
<r-tab label="tab3" key="C">tab3</r-tab>
|
|
67
|
-
</r-tabs>
|
|
68
|
-
|
|
69
|
-
```html
|
|
70
|
-
<r-tabs active="B">
|
|
71
|
-
<r-tab label="tab1" key="A">tab1</r-tab>
|
|
72
|
-
<r-tab label="tab2" key="B">tab2</r-tab>
|
|
73
|
-
<r-tab label="tab3" key="C">tab3</r-tab>
|
|
74
|
-
</r-tabs>
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### 图标`icon`
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
每个`r-tab`可以指定`icon`,配合`label`实现图标加文字的效果。
|
|
81
|
-
|
|
82
|
-
<r-tabs>
|
|
83
|
-
<r-tab label="home" icon="home">tab1</r-tab>
|
|
84
|
-
<r-tab label="message" icon="message">tab2</r-tab>
|
|
85
|
-
<r-tab label="user" icon="user">tab3</r-tab>
|
|
86
|
-
</r-tabs>
|
|
87
|
-
|
|
88
|
-
```html
|
|
89
|
-
<r-tabs>
|
|
90
|
-
<r-tab label="home" icon="home">tab1</r-tab>
|
|
91
|
-
<r-tab label="message" icon="message">tab2</r-tab>
|
|
92
|
-
<r-tab label="user" icon="user">tab3</r-tab>
|
|
93
|
-
</r-tabs>
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
也可以单独指定`icon`,不使用`label`。
|
|
97
|
-
|
|
98
|
-
<r-tabs>
|
|
99
|
-
<r-tab icon="home">tab1</r-tab>
|
|
100
|
-
<r-tab icon="message">tab2</r-tab>
|
|
101
|
-
<r-tab icon="user">tab3</r-tab>
|
|
102
|
-
</r-tabs>
|
|
103
|
-
|
|
104
|
-
```html
|
|
105
|
-
<r-tabs>
|
|
106
|
-
<r-tab icon="home">tab1</r-tab>
|
|
107
|
-
<r-tab icon="message">tab2</r-tab>
|
|
108
|
-
<r-tab icon="user">tab3</r-tab>
|
|
109
|
-
</r-tabs>
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### 风格`type`
|
|
113
|
-
|
|
114
|
-
### 对齐`align`
|
|
115
|
-
|
|
116
|
-
## 事件`event`
|
|
117
|
-
|
|
118
|
-
### onchange
|
|
119
|
-
|
|
120
|
-
切换完成时触发。
|
|
121
|
-
|
package/index.html
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
6
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
-
<title>Document</title>
|
|
8
|
-
<script src="./index.ts" type="module"></script>
|
|
9
|
-
</head>
|
|
10
|
-
|
|
11
|
-
<body>
|
|
12
|
-
<!-- <h1>Hello RanUI</h1> -->
|
|
13
|
-
<div style="margin: 20px">
|
|
14
|
-
<!-- <div>按钮</div>
|
|
15
|
-
<r-button type="primary">主要按钮</r-button>
|
|
16
|
-
<r-button type="warning">警告按钮</r-button>
|
|
17
|
-
<r-button type="default">默认按钮</r-button>
|
|
18
|
-
<r-button type="primary" disabled="true">disable按钮</r-button>
|
|
19
|
-
<div style="margin:20px">输入框</div>
|
|
20
|
-
<r-input label="user" type="password"></r-input>
|
|
21
|
-
<div>图片</div> -->
|
|
22
|
-
<!-- <r-button type="text" disabled>默认按钮</r-button> -->
|
|
23
|
-
<span>加载失败</span>
|
|
24
|
-
<r-img fallback=""></r-img>
|
|
25
|
-
<div>表单</div>
|
|
26
|
-
<r-tabs>
|
|
27
|
-
<r-tab label="tab1" >11111</r-tab>
|
|
28
|
-
<r-tab label="tab2" type="line">22222</r-tab>
|
|
29
|
-
<r-tab label="tab3" >33333</r-tab>
|
|
30
|
-
</r-tabs>
|
|
31
|
-
<!-- <iframe name="hidden" style="display:none;"></iframe> -->
|
|
32
|
-
<form id="form">
|
|
33
|
-
<fieldset>
|
|
34
|
-
<legend>Choose your favorite monster</legend>
|
|
35
|
-
|
|
36
|
-
<input type="radio" id="kraken" name="monster" value="K">
|
|
37
|
-
<label for="kraken">Kraken</label><br>
|
|
38
|
-
|
|
39
|
-
<input type="radio" id="sasquatch" name="monster" value="S">
|
|
40
|
-
<label for="sasquatch">Sasquatch</label><br>
|
|
41
|
-
|
|
42
|
-
<input type="radio" id="mothman" name="monster" value="M" />
|
|
43
|
-
<label for="mothman">Mothman</label>
|
|
44
|
-
<button type="submit">提交按钮</button>
|
|
45
|
-
</fieldset>
|
|
46
|
-
</form>
|
|
47
|
-
</div>
|
|
48
|
-
<script>
|
|
49
|
-
const form = document.getElementById("form");
|
|
50
|
-
const onFinish = (e) => {
|
|
51
|
-
e.preventDefault();
|
|
52
|
-
const jsonData = {};
|
|
53
|
-
const formData = new FormData(form);
|
|
54
|
-
formData.forEach((value, key) => {
|
|
55
|
-
if (!jsonData[key]) {
|
|
56
|
-
jsonData[key] =
|
|
57
|
-
formData.getAll(key).length > 1
|
|
58
|
-
? formData.getAll(key)
|
|
59
|
-
: formData.get(key);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
console.log("e---->", jsonData);
|
|
63
|
-
};
|
|
64
|
-
form.addEventListener("submit", onFinish);
|
|
65
|
-
</script>
|
|
66
|
-
</body>
|
|
67
|
-
</html>
|