btxui 1.0.2 → 1.0.5

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 (194) hide show
  1. package/favicon.png +0 -0
  2. package/index.js +3289 -0
  3. package/index.js.gz +0 -0
  4. package/index.umd.cjs +1 -0
  5. package/package.json +11 -23
  6. package/README.md +0 -42
  7. package/app.vue +0 -162
  8. package/assets/css/_main.js +0 -73
  9. package/assets/css/btx.min.css +0 -1
  10. package/assets/css/btx.mob.min.css +0 -1
  11. package/assets/css/btx.pad.min.css +0 -1
  12. package/assets/css/btx.webapp.min.css +0 -1
  13. package/assets/css/custom_fonts/iconfont.css +0 -37
  14. package/assets/css/custom_fonts/iconfont.eot +0 -0
  15. package/assets/css/custom_fonts/iconfont.svg +0 -47
  16. package/assets/css/custom_fonts/iconfont.ttf +0 -0
  17. package/assets/css/custom_fonts/iconfont.woff +0 -0
  18. package/assets/css/custom_fonts/iconfont.woff2 +0 -0
  19. package/assets/css/res-l.css +0 -47
  20. package/assets/css/res-m.css +0 -47
  21. package/assets/css/res-s.css +0 -61
  22. package/assets/custom_fonts/iconfont.css +0 -37
  23. package/assets/custom_fonts/iconfont.eot +0 -0
  24. package/assets/custom_fonts/iconfont.svg +0 -47
  25. package/assets/custom_fonts/iconfont.ttf +0 -0
  26. package/assets/custom_fonts/iconfont.woff +0 -0
  27. package/assets/custom_fonts/iconfont.woff2 +0 -0
  28. package/assets/js/Btx.js +0 -196
  29. package/assets/js/Utils.js +0 -421
  30. package/assets/js/fastclick.js +0 -802
  31. package/assets/js/lazy.min.js +0 -2
  32. package/assets/js/touchwipe.js +0 -111
  33. package/assets/server.js +0 -8
  34. package/assets/start_site_code_str.js +0 -119
  35. package/cdn/css/btx.min.css +0 -1
  36. package/cdn/css/btx.min.css.map +0 -1
  37. package/cdn/fonts/iconfont.ttf +0 -0
  38. package/cdn/fonts/iconfont.woff +0 -0
  39. package/cdn/fonts/iconfont.woff2 +0 -0
  40. package/components/BTXUI/app/app-wid.vue +0 -182
  41. package/components/BTXUI/btn/btn-wid.vue +0 -128
  42. package/components/BTXUI/carousel/carousel-wid.vue +0 -138
  43. package/components/BTXUI/checkbox/checkbox-wid.vue +0 -72
  44. package/components/BTXUI/confirm/confirm-wid.vue +0 -279
  45. package/components/BTXUI/content/content-checkbox-wid.vue +0 -44
  46. package/components/BTXUI/content/content-node-wid.vue +0 -114
  47. package/components/BTXUI/content/content-tag-wid.vue +0 -25
  48. package/components/BTXUI/content/content-wid.vue +0 -254
  49. package/components/BTXUI/core/anis/ani-fail.vue +0 -46
  50. package/components/BTXUI/core/anis/ani-loading.vue +0 -32
  51. package/components/BTXUI/core/anis/ani-notic.vue +0 -47
  52. package/components/BTXUI/core/anis/ani-success.vue +0 -48
  53. package/components/BTXUI/core/b-drag.vue +0 -258
  54. package/components/BTXUI/core/b-grid.vue +0 -84
  55. package/components/BTXUI/core/b-hot.vue +0 -171
  56. package/components/BTXUI/core/b-icon.vue +0 -76
  57. package/components/BTXUI/core/b-img.vue +0 -84
  58. package/components/BTXUI/core/b-input.vue +0 -198
  59. package/components/BTXUI/core/b-list.vue +0 -276
  60. package/components/BTXUI/core/b-text/doc.ts +0 -9
  61. package/components/BTXUI/core/b-text/index.vue +0 -16
  62. package/components/BTXUI/core/b-textarea.vue +0 -58
  63. package/components/BTXUI/core/b-video.vue +0 -35
  64. package/components/BTXUI/core/b-view/doc.ts +0 -10
  65. package/components/BTXUI/core/b-view/index.vue +0 -20
  66. package/components/BTXUI/core/b-webview.vue +0 -20
  67. package/components/BTXUI/core/lib/ChapterLink.js +0 -49
  68. package/components/BTXUI/core/lib/Search.vue +0 -60
  69. package/components/BTXUI/core/styles/doc.ts +0 -55
  70. package/components/BTXUI/core/styles/index.vue +0 -98
  71. package/components/BTXUI/core/styles/prestyles.ts +0 -471
  72. package/components/BTXUI/core/styles/theme.ts +0 -29
  73. package/components/BTXUI/drawer/drawer-wid.vue +0 -165
  74. package/components/BTXUI/drawer/title-tag-wid.vue +0 -114
  75. package/components/BTXUI/form/form-select-wid.vue +0 -57
  76. package/components/BTXUI/form/form-wid.vue +0 -324
  77. package/components/BTXUI/formPannel/form-pannel-wid.vue +0 -133
  78. package/components/BTXUI/imgsUpload/imgs-upload-wid.vue +0 -149
  79. package/components/BTXUI/index.js +0 -83
  80. package/components/BTXUI/pageFlip/page-flip-wid.vue +0 -206
  81. package/components/BTXUI/pannel/pannel-wid.vue +0 -167
  82. package/components/BTXUI/range/range-wid.vue +0 -134
  83. package/components/BTXUI/search/search-wid.vue +0 -80
  84. package/components/BTXUI/select/select-wid.vue +0 -186
  85. package/components/BTXUI/slider/slider-wid.vue +0 -444
  86. package/components/BTXUI/tab/tab-wid.vue +0 -109
  87. package/components/BTXUI/table/table-wid.vue +0 -324
  88. package/components/BTXUI/tag/tag-wid.vue +0 -183
  89. package/components/BTXUI/tags/tags-wid.vue +0 -121
  90. package/components/BTXUI/tooltip/tooltip-wid.vue +0 -146
  91. package/components/BTXUI/upload/upload-wid.vue +0 -215
  92. package/components/BTXUI/waterfall/waterfall-wid.vue +0 -166
  93. package/components/header-info.vue +0 -167
  94. package/composables/@types.ts +0 -4
  95. package/composables/api.ts +0 -18
  96. package/env.d.ts +0 -5
  97. package/main.js +0 -16
  98. package/nuxt.config.ts +0 -51
  99. package/pages/article.vue +0 -16
  100. package/pages/download.vue +0 -50
  101. package/pages/example/app_wid/app/data_demo.vue +0 -9
  102. package/pages/example/app_wid/app/download_demo.vue +0 -9
  103. package/pages/example/app_wid/app/list_demo.vue +0 -11
  104. package/pages/example/app_wid/app/system_demo.vue +0 -9
  105. package/pages/example/app_wid/app_wid_demo.vue +0 -198
  106. package/pages/example/app_wid/btn_wid_demo.vue +0 -179
  107. package/pages/example/app_wid/carousel_wid_demo.vue +0 -152
  108. package/pages/example/app_wid/checkbox_wid_demo.vue +0 -65
  109. package/pages/example/app_wid/confirm_wid_demo.vue +0 -197
  110. package/pages/example/app_wid/content_wid_demo.vue +0 -369
  111. package/pages/example/app_wid/drawer_wid_demo.vue +0 -155
  112. package/pages/example/app_wid/form_pannel_wid_demo.vue +0 -338
  113. package/pages/example/app_wid/form_wid_demo.vue +0 -550
  114. package/pages/example/app_wid/imgs_upload_wid_demo.vue +0 -159
  115. package/pages/example/app_wid/index.js +0 -158
  116. package/pages/example/app_wid/page_flip_wid_demo.vue +0 -99
  117. package/pages/example/app_wid/pannel_wid_demo.vue +0 -177
  118. package/pages/example/app_wid/range_wid_demo.vue +0 -101
  119. package/pages/example/app_wid/search_wid_demo.vue +0 -75
  120. package/pages/example/app_wid/select_wid_demo.vue +0 -217
  121. package/pages/example/app_wid/slider_wid_demo.vue +0 -143
  122. package/pages/example/app_wid/tab_wid_demo.vue +0 -170
  123. package/pages/example/app_wid/table_wid_demo.vue +0 -377
  124. package/pages/example/app_wid/tag_wid_demo.vue +0 -133
  125. package/pages/example/app_wid/tags_wid_demo.vue +0 -143
  126. package/pages/example/app_wid/tooltip_wid_demo.vue +0 -117
  127. package/pages/example/app_wid/upload_wid_demo.vue +0 -123
  128. package/pages/example/base_wid/b_drag_demo.vue +0 -159
  129. package/pages/example/base_wid/b_grid_demo.vue +0 -225
  130. package/pages/example/base_wid/b_hot_demo.vue +0 -135
  131. package/pages/example/base_wid/b_icon_demo.vue +0 -80
  132. package/pages/example/base_wid/b_img_demo.vue +0 -95
  133. package/pages/example/base_wid/b_input_demo.vue +0 -171
  134. package/pages/example/base_wid/b_list_demo.vue +0 -241
  135. package/pages/example/base_wid/b_style_demo.vue +0 -928
  136. package/pages/example/base_wid/b_text_demo.vue +0 -36
  137. package/pages/example/base_wid/b_textarea_demo.vue +0 -64
  138. package/pages/example/base_wid/b_video_demo.vue +0 -42
  139. package/pages/example/base_wid/b_view_demo.vue +0 -36
  140. package/pages/example/base_wid/index.js +0 -76
  141. package/pages/example/content.js +0 -49
  142. package/pages/example/global_style/animation.vue +0 -197
  143. package/pages/example/global_style/color.vue +0 -134
  144. package/pages/example/global_style/decoration.vue +0 -546
  145. package/pages/example/global_style/icon.vue +0 -345
  146. package/pages/example/global_style/index.js +0 -52
  147. package/pages/example/global_style/layout.vue +0 -846
  148. package/pages/example/global_style/special.vue +0 -37
  149. package/pages/example/global_style/table.vue +0 -298
  150. package/pages/example/global_style/text.vue +0 -159
  151. package/pages/index.vue +0 -43
  152. package/pages/level_widget.vue +0 -11
  153. package/pages/start.vue +0 -200
  154. package/plugins/index.ts +0 -2
  155. package/public/favicon.gif +0 -0
  156. package/public/fonts/iconfont.ttf +0 -0
  157. package/public/fonts/iconfont.woff +0 -0
  158. package/public/fonts/iconfont.woff2 +0 -0
  159. package/public/img/banner.jpg +0 -0
  160. package/public/img/banner2.jpg +0 -0
  161. package/public/img/bg_pattern.png +0 -0
  162. package/public/img/btx.jpg +0 -0
  163. package/public/img/btx_ui.jpg +0 -0
  164. package/public/img/dir.png +0 -0
  165. package/public/img/f.png +0 -0
  166. package/public/img/head.jpg +0 -0
  167. package/public/img/head2.jpg +0 -0
  168. package/public/img/home_ico.png +0 -0
  169. package/public/img/icons.svg +0 -164
  170. package/public/img/mechanism/b-style.png +0 -0
  171. package/public/img/mechanism/slider-wid.png +0 -0
  172. package/public/img/mechanism/upload-wid.png +0 -0
  173. package/public/img/transform_origin.png +0 -0
  174. package/sass/animation.scss +0 -400
  175. package/sass/btx.mob.scss +0 -10
  176. package/sass/btx.pad.scss +0 -3
  177. package/sass/btx.scss +0 -22
  178. package/sass/btx.webapp.scss +0 -22
  179. package/sass/colors.scss +0 -65
  180. package/sass/decoration.scss +0 -220
  181. package/sass/flex.scss +0 -29
  182. package/sass/icons.scss +0 -100
  183. package/sass/layout.scss +0 -88
  184. package/sass/reset.scss +0 -111
  185. package/sass/response/flex_mixin.scss +0 -91
  186. package/sass/response/layout_mixin.scss +0 -227
  187. package/sass/response/main.scss +0 -59
  188. package/sass/response/text_mixin.scss +0 -65
  189. package/sass/scroll.scss +0 -100
  190. package/sass/special.scss +0 -13
  191. package/sass/table.scss +0 -103
  192. package/sass/text.scss +0 -86
  193. package/sass/webpack.config.js +0 -31
  194. package/tsconfig.json +0 -4
@@ -1,133 +0,0 @@
1
- <template>
2
- <pannel-wid v-bind="pannel_prams" v-model="pannelInfo.visible">
3
- <b-view :styles="pannel_styles">
4
- <b-view v-if="pannelTitle" styles="pad-l-2">
5
- <b-view styles="line-b thick-1 pad-v-.7 line-neutral">{{pannelTitle}}</b-view>
6
- </b-view>
7
- <b-list styles="pad-2">
8
- <form-wid ref="former" v-bind="formData" v-model="pannelInfo.selected" />
9
- </b-list>
10
- </b-view>
11
- </pannel-wid>
12
- </template>
13
-
14
- <script>
15
- import BView from "@/components/BTXUI/core/b-view";
16
- import BList from "@/components/BTXUI/core/b-list";
17
- import PannelWid from "@/components/BTXUI/pannel/pannel-wid";
18
- import FormWid from "@/components/BTXUI/form/form-wid";
19
-
20
- const desc = ["该组件用于自定义弹窗交互操作。"],
21
- extend = [],
22
- dependent = ["form-wid", "pannel-wid", "b-list", "b-view"],
23
- api = {
24
- methods: [
25
- {
26
- name: "set_only_read",
27
- ef: "设置表单项只读",
28
- params: "name",
29
- return: "-"
30
- },
31
- {
32
- name: "set_write",
33
- ef: "设置表单项可写",
34
- params: "name",
35
- return: "-"
36
- }
37
- ]
38
- },
39
- init_data = `{
40
- pannelInfo: "(model){
41
- visible: "面板显示状态",
42
- selected: {
43
- name(所选表单元素键名): value(所选表单元素键值),...
44
- }
45
- }",
46
- formData: "(参照:form-wid 组件入参)",
47
- /* pannelTitle: "面板标题" */,
48
- /* pannelStyles: "面板样式" */,
49
- /* pannelData: "(参照:pannel-wid 组件入参)" */,
50
- }`;
51
-
52
- export default {
53
- name: "form-pannel-wid",
54
- introduce: { desc, extend, dependent, api, init_data },
55
- components: {
56
- BView,
57
- BList,
58
- PannelWid,
59
- FormWid
60
- },
61
- model: {
62
- prop: "pannelInfo"
63
- },
64
- props: {
65
- pannelInfo: {
66
- type: Object,
67
- required: true
68
- },
69
- formData: {
70
- type: Object,
71
- required: true
72
- },
73
- pannelTitle: {
74
- type: String,
75
- required: false,
76
- },
77
- pannelStyles: {
78
- type: String,
79
- required: false,
80
- default: ""
81
- },
82
- pannelData: {
83
- type: Object,
84
- required: false
85
- }
86
- },
87
- data(){
88
- return {
89
-
90
- //面板初始化样式
91
- pannel_styles: `flex-column bg-color-light w-30 round-sm ${this.pannelStyles}`,
92
-
93
- //面板初始化配置
94
- pannel_prams: {
95
- matte: true,
96
- matteColor: "rgba(40,40,40,.7)",
97
- matteClose: "click",
98
- ...this.pannelData,
99
- },
100
-
101
- }
102
- },
103
- computed: {
104
-
105
- //表单对象
106
- former(){
107
- return this.$refs.former;
108
- }
109
-
110
- },
111
- methods: {
112
-
113
- //设置表单项只读
114
- set_only_read(name){
115
- this.former.set_only_read(name);
116
- },
117
-
118
- //设置表单项可写
119
- set_write(name){
120
- this.former.set_write(name);
121
- },
122
-
123
- },
124
- watch: {
125
-
126
- //监听面板显示状态入参
127
- "pannelInfo.visible"(val){
128
- val === false && this.former.reset();
129
- }
130
-
131
- }
132
- }
133
- </script>
@@ -1,149 +0,0 @@
1
- <template>
2
- <b-view styles="flex">
3
-
4
- <!--单图上传预览-->
5
- <b-hot v-if="solo_cover" :styles="`flex bg-color-dgray alpha-.9 ${round}`"
6
- key="solo"
7
- hover="alpha-1"
8
- @on_click="$_upload">
9
- <b-img :styles="`w-${width} h-${height} ${round}`"
10
- :img="solo_cover" />
11
- </b-hot>
12
-
13
- <!--上传按钮-->
14
- <b-hot v-else :styles="`flex-5 pcenter pad-2 bg-color-neutral alpha-.8 ${round} w-${width} h-${height}`"
15
- hover="alpha-1"
16
- @on_click="$_upload" >
17
- <b-view>
18
- <b-icon icon="add" styles="scale-1.5" />
19
- <b-view v-if="notic" styles="alpha-.4 mrg-t-.7 fsize-.9">{{notic}}</b-view>
20
- </b-view>
21
- </b-hot>
22
-
23
- <!--多图上传预览-->
24
- <template v-if="previews.length > 1">
25
- <b-img v-for="(img,index) of previews" :key="index"
26
- :styles="`mrg-l-1 w-${width} h-${height} ${round}`"
27
- :img="img" />
28
- </template>
29
-
30
- <input type="file" style="display: none" ref="uploader" @change="$_exe_upload" :multiple="multiple"/>
31
- </b-view>
32
- </template>
33
-
34
- <script>
35
- import UploadWid from "@/components/BTXUI/upload/upload-wid"
36
- import BView from "@/components/BTXUI/core/b-view"
37
- import BHot from "@/components/BTXUI/core/b-hot"
38
- import BImg from "@/components/BTXUI/core/b-img"
39
- import BIcon from "@/components/BTXUI/core/b-icon"
40
-
41
- const desc = ["该组件用于图片上传操作,支持预览功能。"],
42
- extend = ["upload-wid"],
43
- dependent = ["b-icon", "b-img", "b-hot", "b-view"],
44
- api = {
45
- extend: "继承自:<code>upload-wid</code> 组件",
46
- methods: [
47
- {
48
- name: "clear_preview",
49
- ef: "清除预览图",
50
- params: "-",
51
- return: "-"
52
- }
53
- ]
54
- },
55
- init_data = `{
56
- "继承自:upload-wid 组件入参。type、btnData 入参无效",
57
- /* notic: "提示文字" */,
58
- /* height: "热点区域高度" */,
59
- /* width: "热点区域宽度" */,
60
- /* round: "热点区域圆角" */
61
- }`;
62
-
63
- export default {
64
- extends: UploadWid,
65
- name: "imgs-upload-wid",
66
- introduce: { desc, extend, dependent, api, init_data },
67
- components: {
68
- BView,
69
- BHot,
70
- BImg,
71
- BIcon
72
- },
73
- props: {
74
- notic: {
75
- type: String,
76
- required: false
77
- },
78
- width: {
79
- type: [Number, String],
80
- required: false,
81
- default: 8
82
- },
83
- height: {
84
- type: [Number, String],
85
- required: false,
86
- default: 5
87
- },
88
- round: {
89
- type: String,
90
- required: false,
91
- default: "round-sm"
92
- },
93
- type: {
94
- type: Array,
95
- required: false,
96
- default: ()=>["png", "jpg", "jpeg", "gif", "svg"]
97
- }
98
- },
99
- data(){
100
- return {
101
-
102
- //预览图源
103
- img_res: null
104
-
105
- }
106
- },
107
- computed: {
108
-
109
- //预览图
110
- previews(){
111
- const img_res = this.img_res,
112
- remote_files = this.remote_files;
113
- return img_res? img_res: (remote_files || []);
114
- },
115
-
116
- //单预览图
117
- solo_cover(){
118
- return this.multiple? false: this.previews[0];
119
- },
120
-
121
- },
122
- watch: {
123
-
124
- //监听上传文件进行预览
125
- "upload_file.files"(){
126
- if(!this.uploadApi){
127
- this.img_res = [];
128
- [].forEach.call(this.upload_file.files, file=>{
129
- const file_reader = new FileReader();
130
- file_reader.onload = (res)=>{
131
- this.img_res.push(res.target.result);
132
- }
133
- file_reader.readAsDataURL(file);
134
- })
135
- }
136
- },
137
-
138
- },
139
- methods: {
140
-
141
- //清除预览图
142
- clear_preview(){
143
- this.img_res = null;
144
- this.uploader.value = "";
145
- }
146
-
147
- }
148
- }
149
- </script>
@@ -1,83 +0,0 @@
1
- import Vue from "vue"
2
-
3
- //基础组件
4
- import BGrid from "./core/b-grid"
5
- import BHot from "./core/b-hot"
6
- import BDrag from "./core/b-drag"
7
- import BIcon from "./core/b-icon"
8
- import BImg from "./core/b-img"
9
- import BInput from "./core/b-input"
10
- import BList from "./core/b-list"
11
- import BText from "./core/b-text"
12
- import BTextarea from "./core/b-textarea"
13
- import BView from "./core/b-view"
14
- import BVideo from "./core/b-video"
15
- import BWebview from "./core/b-webview"
16
-
17
- //应用组件
18
- import BtnWid from "./btn/btn-wid"
19
- import CheckboxWid from "./checkbox/checkbox-wid"
20
- import ContentWid from "./content/content-wid"
21
- import CarouselWid from "./carousel/carousel-wid"
22
- import DrawerWid from "./drawer/drawer-wid"
23
- import FormWid from "./form/form-wid"
24
- import FormPannelWid from "./formPannel/form-pannel-wid"
25
- import ImgsUploadWid from "./imgsUpload/imgs-upload-wid"
26
- import PageFlipWid from "./pageFlip/page-flip-wid"
27
- import PannelWid from "./pannel/pannel-wid"
28
- import SelectWid from "./select/select-wid"
29
- import SliderWid from "./slider/slider-wid"
30
- import RangeWid from "./range/range-wid"
31
- import SearchWid from "./search/search-wid"
32
- import TabWid from "./tab/tab-wid"
33
- import TableWid from "./table/table-wid"
34
- import TagWid from "./tag/tag-wid"
35
- import TagsWid from "./tags/tags-wid"
36
- import TooltipWid from "./tooltip/tooltip-wid"
37
- import UploadWid from "./upload/upload-wid"
38
- import AppWid from "./app/app-wid"
39
-
40
- const components = {
41
- core: [
42
- BGrid,
43
- BHot,
44
- BDrag,
45
- BIcon,
46
- BImg,
47
- BInput,
48
- BList,
49
- BText,
50
- BTextarea,
51
- BView,
52
- BVideo,
53
- BWebview
54
- ],
55
- wids: [
56
- BtnWid,
57
- CheckboxWid,
58
- ContentWid,
59
- CarouselWid,
60
- DrawerWid,
61
- FormWid,
62
- FormPannelWid,
63
- ImgsUploadWid,
64
- PageFlipWid,
65
- PannelWid,
66
- SelectWid,
67
- SliderWid,
68
- RangeWid,
69
- SearchWid,
70
- TabWid,
71
- TableWid,
72
- TagWid,
73
- TagsWid,
74
- TooltipWid,
75
- UploadWid,
76
- AppWid,
77
- ]
78
- };
79
-
80
- //加载核心组件
81
- [...components.core, ...components.wids].forEach((wid)=>{
82
- Vue.component(wid.name, wid);
83
- })
@@ -1,206 +0,0 @@
1
- <template>
2
- <b-view :styles="`flex-${align_style}`">
3
- <b-hot :styles="`round w-4 h-4 flex-5 fsize-1.4 mrg-r-1.4 bg-color-${colors.bg} color-${colors.text}`"
4
- :hover="`bg-color-${colors.hover}`"
5
- @on_click="prev">
6
- <b-icon icon="arrow-left" />
7
- </b-hot>
8
-
9
- <!--页码-->
10
- <b-text styles="alpha-.5" v-show="pages[0] > 1">...</b-text>
11
- <b-hot v-for="page of pages"
12
- :styles="`pad-h-.6 fsize-1.3 color-${colors.text}`"
13
- :states="{
14
- act: {
15
- state: page === cur_page,
16
- style: `color-${colors.act}`
17
- }
18
- }"
19
- :hover="`color-${colors.hover}`"
20
- @on_click="flip(page)"
21
- :key="page">
22
- {{page}}
23
- </b-hot>
24
- <b-text styles="alpha-.5" v-show="pages[pages.length - 1] < total">...</b-text>
25
-
26
- <b-hot :styles="`round w-4 h-4 flex-5 fsize-1.4 mrg-l-1.4 bg-color-${colors.bg} color-${colors.text}`"
27
- :hover="`bg-color-${colors.hover}`"
28
- @on_click="next">
29
- <b-icon icon="arrow-right" />
30
- </b-hot>
31
- </b-view>
32
- </template>
33
-
34
- <script>
35
- import BView from "@/components/BTXUI/core/b-view";
36
- import BHot from "@/components/BTXUI/core/b-hot";
37
- import BText from "@/components/BTXUI/core/b-text";
38
- import BIcon from "@/components/BTXUI/core/b-icon";
39
-
40
- const desc = ["该组件用于实现分页导航按钮。"],
41
- extend = [],
42
- dependent = ["b-icon", "b-hot", "b-view", "b-text"],
43
- api = {
44
- methods: [
45
- {
46
- name: "next",
47
- ef: "向后翻页",
48
- params: "-",
49
- return: "-"
50
- },
51
- {
52
- name: "prev",
53
- ef: "向前翻页",
54
- params: "-",
55
- return: "-"
56
- },
57
- {
58
- name: "flip",
59
- ef: "指定页码翻页",
60
- params: "page",
61
- return: "-"
62
- }
63
- ],
64
- event: [
65
- {
66
- name: "on_flip",
67
- ef: "点击分页",
68
- params: "cur_page"
69
- }
70
- ]
71
- },
72
- init_data = `{
73
- total: "总页数",
74
- /* curPage: "当前页,默认为 1" */,
75
- /* limit: "页码显示限制,默认为 4" */,
76
- /* colors: {
77
- bg: "按钮颜色",
78
- text: "文字及图标颜色",
79
- hover: "悬停状态按钮颜色及文字、图标颜色",
80
- act: "页码激活颜色"
81
- } */,
82
- /* align: "水平对齐方式,默认 center" */,
83
- }`;
84
-
85
- export default {
86
- name: "page-flip-wid",
87
- introduce: { desc, extend, dependent, api, init_data },
88
- components: {
89
- BView,
90
- BText,
91
- BIcon,
92
- BHot
93
- },
94
- props: {
95
- total: {
96
- type: Number,
97
- required: true
98
- },
99
- curPage: {
100
- type: Number,
101
- required: false,
102
- default: 1
103
- },
104
- limit: {
105
- type: Number,
106
- required: false,
107
- default: 4
108
- },
109
- colors: {
110
- type: Object,
111
- required: false,
112
- default: ()=>{
113
- return {
114
- bg: "neutral",
115
- text: "dgray",
116
- hover: "mgray",
117
- act: "blue",
118
- }
119
- }
120
- },
121
- align: {
122
- type: String,
123
- required: false,
124
- default: "center"
125
- },
126
- },
127
- data(){
128
- return {
129
-
130
- //当前页
131
- cur_page: this.$_set_page(this.curPage),
132
-
133
- }
134
- },
135
- computed: {
136
-
137
- //显示页码
138
- pages(){
139
- //场景:1.不足 limit;2.等于 limit;3.超过 limit,后续;4.超过 limit,前续;5.超过 limit,前后续
140
- const pages = [];
141
- if(this.total !== Infinity){
142
- const cur_page = this.cur_page,
143
- limit = this.limit,
144
- rem = cur_page % limit,
145
- pos = rem > 0? rem: limit,
146
- before = Math.max(1, cur_page - pos + 1),
147
- after = Math.min(cur_page + limit - pos, this.total);
148
- for(let i=before; i<=after; i++) pages.push(i)
149
- }
150
- return pages;
151
- },
152
-
153
- //对齐样式
154
- align_style(){
155
- let val;
156
- switch(this.align){
157
- case "left": val = 4;
158
- break;
159
- case "right": val = 6;
160
- break;
161
- default: val = 5;
162
- }
163
- return val
164
- }
165
-
166
- },
167
- methods: {
168
-
169
- //向后翻页
170
- next(){
171
- this.flip(this.cur_page + 1);
172
- },
173
-
174
- //向前翻页
175
- prev(){
176
- this.flip(this.cur_page - 1);
177
- },
178
-
179
- //翻页
180
- flip(page){
181
- const cur_page = this.$_set_page(page);
182
- if(cur_page !== this.cur_page){
183
- this.cur_page = cur_page;
184
- this.$emit("on_flip", this.cur_page)
185
- }
186
- },
187
-
188
- //设置当前页
189
- $_set_page(page){
190
- return Math.min(Math.max(1, isNaN(page)? 1: page), this.total);
191
- }
192
-
193
- },
194
- watch: {
195
-
196
- total(){
197
- this.cur_page = this.$_set_page(this.curPage)
198
- },
199
-
200
- curPage(){
201
- this.cur_page = this.$_set_page(this.curPage)
202
- }
203
-
204
- }
205
- }
206
- </script>