@ajaxjs/ui 1.0.7 → 1.1.2

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 (66) hide show
  1. package/dist/components/form/FileUploader/FileUploader.js +104 -0
  2. package/dist/components/form/FileUploader/FileUploader.js.map +1 -0
  3. package/dist/components/form/FileUploader/FileUploader.less +55 -0
  4. package/dist/components/form/FileUploader/FileUploader.ts +121 -0
  5. package/dist/components/form/FileUploader/FileUploader.vue +26 -0
  6. package/dist/components/form/HtmlEditor/HtmlEditor.js +11 -4
  7. package/dist/components/form/HtmlEditor/HtmlEditor.js.map +1 -1
  8. package/dist/components/form/HtmlEditor/HtmlEditor.less +185 -5
  9. package/dist/components/form/HtmlEditor/HtmlEditor.ts +12 -4
  10. package/dist/components/form/HtmlEditor/HtmlEditor.vue +19 -19
  11. package/dist/components/widgets/ImageEnlarger.vue +77 -20
  12. package/package.json +7 -10
  13. package/.browserslistrc +0 -3
  14. package/.eslintrc.js +0 -25
  15. package/babel.config.js +0 -5
  16. package/dist/components/list/attachment-picture-list.js +0 -57
  17. package/dist/components/list/attachment-picture-list.js.map +0 -1
  18. package/dist/components/list/attachment-picture-list.ts +0 -57
  19. package/dist/components/list/list.js +0 -227
  20. package/dist/components/list/list.js.map +0 -1
  21. package/dist/components/list/list.ts +0 -261
  22. package/dist/components/widgets/AjAvatar.vue +0 -42
  23. package/public/favicon.ico +0 -0
  24. package/public/index.html +0 -24
  25. package/src/App.vue +0 -32
  26. package/src/assets/logo.png +0 -0
  27. package/src/components/form/AjSelect.vue +0 -33
  28. package/src/components/form/HtmlEditor/HtmlEditor.less +0 -165
  29. package/src/components/form/HtmlEditor/HtmlEditor.ts +0 -329
  30. package/src/components/form/HtmlEditor/HtmlEditor.vue +0 -70
  31. package/src/components/form/HtmlEditor/html-editor-HtmlSanitizer.js +0 -103
  32. package/src/components/form/TreeLikeSelect.vue +0 -125
  33. package/src/components/list/attachment-picture-list.ts +0 -57
  34. package/src/components/list/list.js +0 -227
  35. package/src/components/list/list.ts +0 -261
  36. package/src/components/widgets/AccordionMenu.vue +0 -138
  37. package/src/components/widgets/AdjustFontSize.vue +0 -66
  38. package/src/components/widgets/AjAvatar.vue +0 -42
  39. package/src/components/widgets/Article.vue +0 -49
  40. package/src/components/widgets/BaiduSearch.vue +0 -50
  41. package/src/components/widgets/Expander.vue +0 -65
  42. package/src/components/widgets/ImageEnlarger.vue +0 -42
  43. package/src/components/widgets/OpacityBanner.vue +0 -124
  44. package/src/components/widgets/ProcessLine.vue +0 -133
  45. package/src/globalDeclare/shims.d.ts +0 -4
  46. package/src/index.ts +0 -8
  47. package/src/main.ts +0 -12
  48. package/src/pages/Nav.vue +0 -23
  49. package/src/pages/common.less +0 -10
  50. package/src/pages/demo/Article.vue +0 -30
  51. package/src/pages/demo/Form.vue +0 -46
  52. package/src/pages/demo/Wdigets.vue +0 -168
  53. package/src/router/index.js +0 -39
  54. package/src/router/index.js.map +0 -1
  55. package/src/router/index.ts +0 -39
  56. package/src/shims-tsx.d.ts +0 -13
  57. package/src/shims-vue.d.ts +0 -4
  58. package/src/style/common-functions.less +0 -171
  59. package/src/style/reset.less +0 -18
  60. package/src/views/About.vue +0 -5
  61. package/src/views/Home.vue +0 -49
  62. package/src/views/desktop/Desktop.vue +0 -251
  63. package/src/views/desktop/Window.vue +0 -62
  64. package/src/views/desktop/desktop.md +0 -14
  65. package/tsconfig.json +0 -30
  66. package/vue.config.js +0 -17
@@ -1,261 +0,0 @@
1
-
2
-
3
- // namespace aj.list {
4
- // /**
5
- // * 分页列表专用的结果数据
6
- // */
7
- // interface PageListRepsonseResult extends RepsonseResult {
8
- // /**
9
- // * 结果总数
10
- // */
11
- // total: number;
12
- // }
13
-
14
- // /**
15
- // * 列表数据
16
- // */
17
- // interface DataStore extends Ajax {
18
- // /**
19
- // * 是否分页,false=读取所有数据
20
- // */
21
- // isPage: boolean;
22
-
23
- // pageStart: number;
24
-
25
- // pageSize: number;
26
-
27
- // initPageSize: number;
28
-
29
- // total: number;
30
-
31
- // /**
32
- // * 请求结果
33
- // */
34
- // result: BaseObject[];
35
-
36
- // totalPage: number;
37
-
38
- // currentPage: number;
39
-
40
- // /**
41
- // * 默认的分页参数其名字
42
- // */
43
- // pageParamNames: string[];
44
-
45
- // /**
46
- // * 计算分页
47
- // */
48
- // count(): void;
49
- // }
50
-
51
- // /**
52
- // * 本地数据仓库
53
- // * 一般情况下不会单独使用这个组件
54
- // */
55
- // export var datastore = {
56
- // props: {
57
- // apiUrl: { type: String, required: true }, // JSON 接口地址
58
- // isPage: { type: Boolean, default: true },
59
- // initPageSize: { type: Number, required: false, default: 9 },
60
- // isAutoLoad: { type: Boolean, default: true },
61
- // baseParam: { type: Object, default() { return {}; } },
62
- // pageParamNames: { type: Array, default() { return ['start', 'limit']; } }, // 默认的分页参数其名字
63
- // onLoad: Function
64
- // },
65
- // data(this: DataStore) {
66
- // return {
67
- // result: [],
68
- // extraParam: {}, // 与 baseParam 合并后每次请求可发送的,可以修改的
69
- // pageSize: this.initPageSize,
70
- // total: 0,
71
- // totalPage: 0,
72
- // pageStart: 0,
73
- // currentPage: 0
74
- // };
75
- // },
76
-
77
- // methods: {
78
- // /**
79
- // * 分页,跳到第几页,下拉控件传入指定的页码
80
- // *
81
- // * @param this
82
- // * @param ev
83
- // */
84
- // jumpPageBySelect(this: DataStore, ev: Event): void {
85
- // let selectEl: HTMLSelectElement = <HTMLSelectElement>ev.target;
86
- // let currentPage: string = selectEl.options[selectEl.selectedIndex].value;
87
-
88
- // this.pageStart = (Number(currentPage) - 1) * this.pageSize;
89
- // this.getData();
90
- // },
91
-
92
- // /**
93
- // * PageSize 改变时候重新分页
94
- // *
95
- // * @param this
96
- // * @param ev
97
- // */
98
- // onPageSizeChange(this: DataStore, ev: Event): void {
99
- // this.pageSize = Number((<HTMLInputElement>ev.target).value);
100
- // this.count();
101
- // this.getData();
102
- // },
103
-
104
- // count(this: DataStore): void {
105
- // let totalPage: number = this.total / this.pageSize, yushu: number = this.total % this.pageSize;
106
- // this.totalPage = parseInt(String(yushu == 0 ? totalPage : totalPage + 1));
107
- // //@ts-ignore
108
- // this.currentPage = parseInt((this.pageStart / this.pageSize) + 1);
109
- // },
110
-
111
- // /**
112
- // * 前一页
113
- // *
114
- // * @param this
115
- // */
116
- // previousPage(this: DataStore): void {
117
- // this.pageStart -= this.pageSize;
118
- // //@ts-ignore
119
- // this.currentPage = parseInt((this.pageStart / this.pageSize) + 1);
120
-
121
- // this.getData();
122
- // },
123
-
124
- // /**
125
- // * 下一页
126
- // *
127
- // * @param this
128
- // */
129
- // nextPage(this: DataStore): void {
130
- // this.pageStart += this.pageSize;
131
- // this.currentPage = (this.pageStart / this.pageSize) + 1;
132
-
133
- // this.getData();
134
- // }
135
- // }
136
- // };
137
-
138
- // /**
139
- // * 列表控件
140
- // */
141
- // interface List extends DataStore, Vue {
142
- // /**
143
- // * 数据分页是否追加模式,默认不追加 = false。 App 一般采用追加模式
144
- // */
145
- // isDataAppend: boolean;
146
-
147
- // /**
148
- // * 到达底部是否自动加载下一页,通常在 移动端使用,这个应该是元素的 CSS Selector
149
- // */
150
- // autoLoadWhenReachedBottom: boolean;
151
- // }
152
-
153
- // Vue.component('aj-list', {
154
- // mixins: [datastore],
155
- // template: html`
156
- // <div class="aj-list">
157
- // <slot name="header" v-if="total != 0"></slot>
158
- // <ul v-if="showDefaultUi && (total != 0)">
159
- // <li v-for="(item, index) in result">
160
- // <slot v-bind="item">
161
- // <a href="#" @click="show(item.id, index, $event)" :id="item.id">{{item.name}}</a>
162
- // </slot>
163
- // </li>
164
- // </ul>
165
- // <div class="no-data" v-show="isPage && total == 0">未有任何数据</div>
166
- // <footer v-if="isPage" class="pager">
167
- // <a v-if="pageStart > 0" href="#" @click="previousPage">上一页</a>
168
- // <a v-if="(pageStart > 0 ) && (pageStart + pageSize < total)" style="text-decoration: none;">&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;</a>
169
- // <a v-if="pageStart + pageSize < total" href="#" @click="nextPage">下一页</a>
170
- // <a href="javascript:;" @click="getData"><i class="fa fa-refresh" aria-hidden="true"></i> 刷新</a>
171
- // <input type="hidden" name="start" :value="pageStart" />
172
- // 页数:{{currentPage}}/{{totalPage}} 记录数:{{pageStart}}/{{total}}
173
- // 每页记录数: <input size="2" title="输入一个数字确定每页记录数" type="text" :value="pageSize" @change="onPageSizeChange" />
174
- // 跳转:
175
- // <select @change="jumpPageBySelect">
176
- // <option :value="n" v-for="n in totalPage">{{n}}</option>
177
- // </select>
178
- // </footer>
179
- // <div v-show="!!autoLoadWhenReachedBottom" class="buttom"></div>
180
- // </div>
181
- // `,
182
- // props: {
183
- // showDefaultUi: { type: Boolean, default: true }, // 如果只是单纯作为分页组件,那么则不需要 UI
184
- // isShowFooter: { type: Boolean, default: true }, // 是否显示分页 UI
185
- // hrefStr: { type: String, required: false },
186
- // autoLoadWhenReachedBottom: { type: String, default: '' },
187
- // isDataAppend: { type: Boolean, default: false }
188
- // },
189
- // mounted(this: List): void {
190
- // this.isAutoLoad && this.getData();
191
-
192
- // // this.BUS.$on('base-param-change', this.onExtraParamChange.bind(this));
193
- // if (!!this.autoLoadWhenReachedBottom) {
194
- // // var scrollSpy = new aj.scrollSpy({ scrollInElement: aj(this.autoLoadWhenReachedBottom), spyOn: thish.$el.$('.buttom') });
195
- // // scrollSpy.onScrollSpyBackInSight = e => this.nextPage();
196
- // }
197
- // },
198
- // methods: {
199
- // getData(this: List): void {
200
- // this.lastRequestParam = {};
201
- // aj.apply(this.lastRequestParam, this.baseParam);
202
- // aj.apply(this.lastRequestParam, this.extraParam);
203
- // initPageParams.call(this);
204
-
205
- // xhr.get(this.apiUrl, this.onLoad || ((j: PageListRepsonseResult) => {
206
- // if (j.result) {
207
- // if (this.isPage && j.total === undefined)
208
- // aj.alert('JSON 缺少 total 字段');
209
-
210
- // if (j.total == 0 || j.result.length == 0)
211
- // aj.alert('没有找到任何记录');
212
-
213
- // this.result = j.result;
214
-
215
- // if (this.isPage) {
216
- // this.total = j.total;
217
- // this.count();
218
- // }
219
- // }
220
-
221
- // this.$emit('pager-result', this.result);
222
- // }), this.lastRequestParam);
223
- // },
224
-
225
- // /**
226
- // * 复位
227
- // *
228
- // * @param this
229
- // */
230
- // reset(this: List): void {
231
- // this.total = this.totalPage = this.pageStart = this.currentPage = 0;
232
- // this.pageSize = this.initPageSize;
233
- // },
234
-
235
- // onExtraParamChange(this: List, params: JsonParam): void {
236
- // aj.apply(this.extraParam, params);
237
-
238
- // this.pageStart = 0; // 每次 extraParam 被改变,都是从第一笔开始
239
- // this.getData();
240
- // }
241
- // },
242
- // watch: {
243
- // extraParam(this: List): void {
244
- // this.getData();
245
- // }
246
- // }
247
- // });
248
-
249
- // /**
250
- // * 生成分页参数的名字
251
- // *
252
- // * @param this
253
- // */
254
- // function initPageParams(this: List) {
255
- // let params: { [key: string]: number } = {};
256
- // params[this.pageParamNames[0]] = this.pageStart;
257
- // params[this.pageParamNames[1]] = this.pageSize;
258
-
259
- // this.isPage && aj.apply(this.lastRequestParam, params);
260
- // }
261
- // }
@@ -1,42 +0,0 @@
1
- <template>
2
- <a :href="avatar" target="_blank">
3
- <img :src="avatar" style="max-width:50px;max-height:60px;vertical-align: middle;" @mouseenter="mouseEnter" @mouseleave="mouseLeave" />
4
- </a>
5
- </template>
6
-
7
- <script lang="ts">
8
- /**
9
- * 显示头像
10
- */
11
- export default {
12
- props: {
13
- avatar: {
14
- // 头像图片地址
15
- type: String,
16
- required: true,
17
- },
18
- },
19
- methods: {
20
- mouseEnter(): void {
21
- // @ts-ignore
22
- if (window.aj_avatar_imgUrl)
23
- // @ts-ignore
24
- window.aj_avatar_imgUrl = this.avatar;
25
- },
26
- mouseLeave(): void {
27
- // @ts-ignore
28
- if (window.aj_avatar_imgUrl)
29
- // @ts-ignore
30
- window.aj_avatar_imgUrl = null;
31
- },
32
- },
33
- };
34
- </script>
35
-
36
- <style lang="less" scoped>
37
- .aj-img-thumb img {
38
- max-width: 50px;
39
- max-height: 60px;
40
- vertical-align: middle;
41
- }
42
- </style>
Binary file
package/public/index.html DELETED
@@ -1,24 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="">
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
- <link rel="icon" href="<%= BASE_URL %>favicon.ico">
8
-
9
- <!-- <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script>
10
- <script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script> -->
11
-
12
- <!-- <link href="https://cdn.bootcdn.net/ajax/libs/ionicons/3.0.0/css/ionicons-core.min.css" rel="stylesheet">
13
- <link href="https://cdn.bootcdn.net/ajax/libs/ionicons/3.0.0/css/ionicons.min.css" rel="stylesheet"> -->
14
- <!-- <link href="//netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" /> -->
15
- <title><%= htmlWebpackPlugin.options.title %></title>
16
- </head>
17
- <body>
18
- <noscript>
19
- <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
20
- </noscript>
21
- <div id="app"></div>
22
- <!-- built files will be auto injected -->
23
- </body>
24
- </html>
package/src/App.vue DELETED
@@ -1,32 +0,0 @@
1
- <template>
2
- <div id="app">
3
- <div id="nav">
4
- <router-link to="/">Home</router-link> |
5
- <router-link to="/about">About</router-link>
6
- </div>
7
- <router-view />
8
- </div>
9
- </template>
10
-
11
- <style lang="less">
12
- #app {
13
- font-family: Avenir, Helvetica, Arial, sans-serif;
14
- -webkit-font-smoothing: antialiased;
15
- -moz-osx-font-smoothing: grayscale;
16
- text-align: center;
17
- color: #2c3e50;
18
- }
19
-
20
- #nav {
21
- padding: 30px;
22
-
23
- a {
24
- font-weight: bold;
25
- color: #2c3e50;
26
-
27
- &.router-link-exact-active {
28
- color: #42b983;
29
- }
30
- }
31
- }
32
- </style>
Binary file
@@ -1,33 +0,0 @@
1
- <template>
2
- <select :name="name" class="aj-form-select">
3
- <template v-for="value, key, index in options">
4
- <option v-if="index === selectedIndex" selected :value="value" :key="index">{{key}}</option>
5
- <option v-else :value="value" :key="index">{{key}}</option>
6
- </template>
7
- </select>
8
- </template>
9
-
10
- <script>
11
- /**
12
- * 最简单的下拉列表
13
- */
14
- export default {
15
- props: {
16
- name: { type: String, required: true }, // name for form
17
- options: { type: Object, required: true }, // JSON input data
18
- selectedIndex: { type: Number }, // starts form 0
19
- },
20
- };
21
- </script>
22
-
23
- <style lang="less" scoped>
24
- .aj-form-select {
25
- padding: 1px 4px;
26
- -moz-appearance: none;
27
- -webkit-appearance: none;
28
- border-color: #abadb3;
29
- background: white
30
- url("data:image/gif;base64,R0lGODlhCwAGAIABAGBgYP///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0MzQyLCAyMDEwLzAxLzEwLTE4OjA2OjQzICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjc1MEE0M0UzRTU5RDExRTVBNjNDRDVBNzRBRkUxMjYxIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjc1MEE0M0U0RTU5RDExRTVBNjNDRDVBNzRBRkUxMjYxIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzUwQTQzRTFFNTlEMTFFNUE2M0NENUE3NEFGRTEyNjEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzUwQTQzRTJFNTlEMTFFNUE2M0NENUE3NEFGRTEyNjEiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKempaSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdGRURDQkFAPz49PDs6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcWFRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQBAAABACwAAAAACwAGAAACD0R+hqDB6B5radL1ILynAAA7")
31
- no-repeat right;
32
- }
33
- </style>
@@ -1,165 +0,0 @@
1
- @import 'https://netdna.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css';
2
-
3
- .aj-form-html-editor {
4
- ul.toolbar {
5
- border : 1px solid #C5C5C5;
6
- border-radius : 4px 4px 0 0;
7
- border-bottom : 0;
8
- background-color: #E8E7E4;
9
- width : 100%;
10
- height : 30px;
11
- margin : 0;
12
- box-sizing : border-box;
13
- padding : 3px 4px;
14
-
15
- &>li {
16
- list-style: none;
17
- float : left;
18
- cursor : pointer;
19
-
20
- &>i {
21
- border : 1px solid transparent;
22
- min-width : 25px;
23
- height : 20px;
24
- line-height: 20px;
25
- text-align : center;
26
- display : block;
27
- padding-top: 2px;
28
- font : normal normal normal 18px/1 FontAwesome;
29
-
30
- &:hover {
31
- border-right-color : #aaa;
32
- border-bottom-color: #aaa;
33
- border-top-color : #fff;
34
- border-left-color : #fff;
35
- }
36
-
37
- &:active {
38
- border-right-color : #f3f8fc;
39
- border-bottom-color: #f3f8fc;
40
- border-top-color : #ccc;
41
- border-left-color : #ccc;
42
- }
43
- }
44
-
45
- ul li {
46
- padding: 3px;
47
- cursor : pointer;
48
-
49
- &:hover {
50
- background-color: lightgray;
51
- }
52
- }
53
-
54
- .cleanHTML {
55
- background-size: 16px 16px;
56
- }
57
-
58
- .noBg {
59
- background-image: none;
60
- }
61
- }
62
- }
63
-
64
- .editorBody {
65
- iframe,
66
- textarea {
67
- border : 1px solid #C5C5C5;
68
- border-radius : 0 0 4px 4px;
69
- border-top-width: 0;
70
- box-sizing : border-box;
71
- background-color: white;
72
- min-height : 300px;
73
- width : 100%;
74
- }
75
-
76
- textarea {
77
- resize: none;
78
- display: none;
79
- &.show{
80
- display: block;
81
- }
82
- }
83
- }
84
-
85
- .colorPicker {
86
- width : 210px;
87
- border : 1px solid #D3D3D3;
88
- position: absolute;
89
-
90
- table {
91
- border-collapse: collapse;
92
- }
93
-
94
- .colorhead {
95
- height : 23px;
96
- line-height: 23px;
97
- font-weight: bold;
98
- width : 100%;
99
- }
100
-
101
- .colortitle {
102
- margin-left: 6px;
103
- font-size : 12px;
104
- }
105
-
106
- .colorpanel td {
107
- border : 1px solid #000;
108
- height : 10px;
109
- width : 10px;
110
- overflow : hidden;
111
- font-size: 1px;
112
- cursor : pointer;
113
- }
114
- }
115
-
116
- // 字体演示
117
- .fontfamilyChoser,
118
- .fontsizeChoser {
119
- a {
120
- padding-right : 2px;
121
- display : block;
122
- padding-left : 2px;
123
- padding-bottom : 2px;
124
- color : #000;
125
- line-height : 120%;
126
- padding-top : 2px;
127
- text-decoration: none;
128
-
129
- &:hover {
130
- background: #e5e5e5
131
- }
132
- }
133
- }
134
-
135
- // 登录面板 和忘记密码
136
- .dorpdown {
137
- position: relative;
138
-
139
- &:hover .fontfamilyChoser,
140
- .fontfamilyChoser:hover,
141
- &:hover .fontsizeChoser,
142
- .fontsizeChoser:hover,
143
- &:hover .colorPicker,
144
- .colorPicker:hover {
145
- display: block;
146
- }
147
-
148
- &>div {
149
- display : none;
150
- position : absolute;
151
- top : 22px;
152
- left : 0;
153
- background-color: #f5f5f5;
154
- border : 1px solid lightgray;
155
- border-top : 0;
156
- padding : 5px;
157
- width : 230px;
158
- }
159
-
160
- .fontsizeChoser {
161
- top : inherit;
162
- right: 0;
163
- }
164
- }
165
- }