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.
Files changed (46) hide show
  1. package/package.json +1 -1
  2. package/.vitepress/theme/index.ts +0 -9
  3. package/assets/image/failImage.ts +0 -4
  4. package/assets/svgs/check-circle.svg +0 -4
  5. package/assets/svgs/close-circle.svg +0 -4
  6. package/assets/svgs/eye-close.svg +0 -4
  7. package/assets/svgs/eye.svg +0 -4
  8. package/assets/svgs/info-circle.svg +0 -5
  9. package/assets/svgs/lock.svg +0 -4
  10. package/assets/svgs/unlock.svg +0 -4
  11. package/assets/svgs/user.svg +0 -3
  12. package/components/button/index.less +0 -95
  13. package/components/button/index.ts +0 -64
  14. package/components/form/index.less +0 -0
  15. package/components/form/index.ts +0 -36
  16. package/components/image/index.less +0 -0
  17. package/components/image/index.ts +0 -62
  18. package/components/input/index.less +0 -114
  19. package/components/input/index.ts +0 -367
  20. package/components/modal/index.less +0 -0
  21. package/components/modal/index.ts +0 -118
  22. package/components/tabPane/index.less +0 -0
  23. package/components/tabPane/index.ts +0 -71
  24. package/components/tabs/index.less +0 -47
  25. package/components/tabs/index.ts +0 -207
  26. package/dist/assets/image/failImage.d.ts +0 -2
  27. package/dist/components/button/index.d.ts +0 -2
  28. package/dist/components/image/index.d.ts +0 -2
  29. package/dist/components/input/index.d.ts +0 -2
  30. package/dist/components/modal/index.d.ts +0 -2
  31. package/dist/components/tabPane/index.d.ts +0 -2
  32. package/dist/components/tabs/index.d.ts +0 -2
  33. package/dist/typings.d.ts +0 -4
  34. package/dist/utils/index.d.ts +0 -7
  35. package/docs/button/index.md +0 -25
  36. package/docs/image/index.md +0 -9
  37. package/docs/input/index.md +0 -146
  38. package/docs/tabs/index.md +0 -121
  39. package/index.html +0 -67
  40. package/index.ts +0 -6
  41. package/plugins/auto-import-file.ts +0 -59
  42. package/plugins/load-style.ts +0 -31
  43. package/tsconfig.json +0 -31
  44. package/typings.d.ts +0 -4
  45. package/utils/index.ts +0 -12
  46. package/vite.config.ts +0 -58
@@ -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;
@@ -1,2 +0,0 @@
1
- declare const _default: void;
2
- export default _default;
@@ -1,2 +0,0 @@
1
- declare const _default: void;
2
- export default _default;
@@ -1,2 +0,0 @@
1
- declare const _default: void;
2
- export default _default;
@@ -1,2 +0,0 @@
1
- declare const _default: void;
2
- export default _default;
@@ -1,2 +0,0 @@
1
- declare const _default: void;
2
- export default _default;
@@ -1,2 +0,0 @@
1
- declare const _default: void;
2
- export default _default;
package/dist/typings.d.ts DELETED
@@ -1,4 +0,0 @@
1
- declare module "*.less"
2
- declare module '@/assets'
3
- declare module '@/components'
4
- declare module '@/plugins'
@@ -1,7 +0,0 @@
1
- export declare const falseList: (string | boolean | null | undefined)[];
2
- /**
3
- * @description: 判断这个元素上是否有disabled属性
4
- * @param {Element} element
5
- * @return {*}
6
- */
7
- export declare const isDisabled: (element: Element) => boolean;
@@ -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
- ```
@@ -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,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"></r-img>
@@ -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
- ```
@@ -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>
package/index.ts DELETED
@@ -1,6 +0,0 @@
1
- import './components/button/index.ts';
2
- import './components/image/index.ts';
3
- import './components/input/index.ts';
4
- import './components/modal/index.ts';
5
- import './components/tabPane/index.ts';
6
- import './components/tabs/index.ts';