@ajaxjs/ui 1.0.5 → 1.1.0

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 (53) hide show
  1. package/dist/components/form/HtmlEditor/HtmlEditor.js +69 -76
  2. package/dist/components/form/HtmlEditor/HtmlEditor.js.map +1 -1
  3. package/dist/components/form/HtmlEditor/HtmlEditor.less +5 -1
  4. package/dist/components/form/HtmlEditor/HtmlEditor.ts +78 -84
  5. package/dist/components/form/HtmlEditor/HtmlEditor.vue +19 -19
  6. package/package.json +7 -3
  7. package/.browserslistrc +0 -3
  8. package/.eslintrc.js +0 -25
  9. package/babel.config.js +0 -5
  10. package/public/favicon.ico +0 -0
  11. package/public/index.html +0 -24
  12. package/src/App.vue +0 -32
  13. package/src/assets/logo.png +0 -0
  14. package/src/components/form/AjSelect.vue +0 -33
  15. package/src/components/form/HtmlEditor/HtmlEditor.less +0 -161
  16. package/src/components/form/HtmlEditor/HtmlEditor.ts +0 -339
  17. package/src/components/form/HtmlEditor/HtmlEditor.vue +0 -70
  18. package/src/components/form/HtmlEditor/html-editor-HtmlSanitizer.js +0 -103
  19. package/src/components/form/TreeLikeSelect.vue +0 -125
  20. package/src/components/list/attachment-picture-list.ts +0 -57
  21. package/src/components/list/list.js +0 -227
  22. package/src/components/list/list.ts +0 -261
  23. package/src/components/widgets/AccordionMenu.vue +0 -138
  24. package/src/components/widgets/AdjustFontSize.vue +0 -66
  25. package/src/components/widgets/AjAvatar.vue +0 -42
  26. package/src/components/widgets/Article.vue +0 -49
  27. package/src/components/widgets/BaiduSearch.vue +0 -50
  28. package/src/components/widgets/Expander.vue +0 -65
  29. package/src/components/widgets/ImageEnlarger.vue +0 -42
  30. package/src/components/widgets/OpacityBanner.vue +0 -124
  31. package/src/components/widgets/ProcessLine.vue +0 -133
  32. package/src/globalDeclare/shims.d.ts +0 -4
  33. package/src/index.ts +0 -8
  34. package/src/main.ts +0 -12
  35. package/src/pages/Nav.vue +0 -23
  36. package/src/pages/common.less +0 -10
  37. package/src/pages/demo/Article.vue +0 -30
  38. package/src/pages/demo/Form.vue +0 -35
  39. package/src/pages/demo/Wdigets.vue +0 -168
  40. package/src/router/index.js +0 -39
  41. package/src/router/index.js.map +0 -1
  42. package/src/router/index.ts +0 -39
  43. package/src/shims-tsx.d.ts +0 -13
  44. package/src/shims-vue.d.ts +0 -4
  45. package/src/style/common-functions.less +0 -171
  46. package/src/style/reset.less +0 -18
  47. package/src/views/About.vue +0 -5
  48. package/src/views/Home.vue +0 -49
  49. package/src/views/desktop/Desktop.vue +0 -251
  50. package/src/views/desktop/Window.vue +0 -62
  51. package/src/views/desktop/desktop.md +0 -14
  52. package/tsconfig.json +0 -31
  53. package/vue.config.js +0 -17
@@ -1,40 +1,38 @@
1
1
  export default {
2
2
  props: {
3
- fieldName: { type: String, required: true },
3
+ vModel: String,
4
4
  uploadImageActionUrl: String // 图片上传路径
5
5
  },
6
6
  data() {
7
7
  return {
8
- mode: 'iframe',
9
- toolbarEl: null,
10
- sourceEditor: null,
8
+ isShowCode: false,
11
9
  iframeEl: null,
10
+ sourceEditor: null,
12
11
  };
13
12
  },
14
13
  mounted() {
15
- const el = this.$el;
16
- this.toolbarEl = el.querySelector('.toolbar');
17
- this.iframeEl = el.querySelector('iframe');
18
- // 这个方法只能写在 onload 事件里面, 不写 onload 里还不执行
14
+ this.iframeEl = this.$el.querySelector('iframe');
15
+ this.sourceEditor = this.$el.querySelector('textarea');
19
16
  this.iframeEl.contentWindow.onload = (ev) => {
20
- const iframeDoc = this.iframeEl.contentWindow.document;
21
- iframeDoc.designMode = 'on';
22
- iframeDoc.addEventListener('paste', onImagePaste.bind(this)); // 直接剪切板粘贴上传图片
23
- this.iframeDoc = iframeDoc;
17
+ this.iframeDoc = this.iframeEl.contentWindow.document;
18
+ this.iframeDoc.designMode = 'on';
19
+ this.iframeDoc.addEventListener('paste', onImagePaste.bind(this)); // 直接剪切板粘贴上传图片
24
20
  new MutationObserver((mutationsList, observer) => {
25
- if (this.mode === 'iframe')
21
+ if (!this.isShowCode) {
26
22
  this.sourceEditor.value = this.iframeDoc.body.innerHTML;
27
- }).observe(iframeDoc.body, { attributes: true, childList: true, subtree: true, characterData: true });
28
- this.sourceEditor.value && this.setIframeBody(this.sourceEditor.value); // 有内容
23
+ this.$emit('on-change', this.sourceEditor.value);
24
+ }
25
+ }).observe(this.iframeDoc.body, { attributes: true, childList: true, subtree: true, characterData: true });
26
+ this.vModel && this.setIframeBody(this.vModel);
27
+ // this.sourceEditor.value && this.setIframeBody(this.sourceEditor.value);// 有内容
29
28
  };
30
- this.sourceEditor = el.querySelector('textarea');
31
- this.sourceEditor.classList.add("hide");
32
- this.sourceEditor.name = this.fieldName;
33
29
  this.sourceEditor.oninput = (ev) => {
34
- if (this.mode === 'textarea')
30
+ if (this.isShowCode && this.sourceEditor.value) {
35
31
  this.setIframeBody(this.sourceEditor.value);
32
+ this.$emit('on-change', this.sourceEditor.value);
33
+ }
36
34
  };
37
- this.uploadImgMgr = this.$refs.uploadLayer;
35
+ // this.uploadImgMgr = this.$refs.uploadLayer;
38
36
  },
39
37
  methods: {
40
38
  /**
@@ -48,8 +46,8 @@ export default {
48
46
  /**
49
47
  * 获取内容的 HTML
50
48
  *
51
- * @param cleanWord
52
- * @param encode
49
+ * @param cleanWord 是否清理冗余标签
50
+ * @param encode 是否 URL 编码
53
51
  */
54
52
  getValue(cleanWord, encode) {
55
53
  let result = this.iframeDoc.body.innerHTML;
@@ -59,61 +57,40 @@ export default {
59
57
  result = encodeURIComponent(result);
60
58
  return result;
61
59
  },
62
- /**
63
- * 切換 HTML 編輯 or 可視化編輯
64
- *
65
- */
66
- setMode() {
67
- if (this.mode == 'iframe') {
68
- this.iframeEl.classList.add('hide');
69
- this.sourceEditor.classList.remove('hide');
70
- this.mode = 'textarea';
71
- grayImg.call(this, true);
72
- }
60
+ createLink() {
61
+ let result = prompt("请输入 URL 地址");
62
+ if (result)
63
+ this.format("createLink", result);
64
+ },
65
+ insertImage() {
66
+ // @ts-ignore
67
+ if (window.isCreate)
68
+ alert('请保存记录后再上传图片。');
73
69
  else {
74
- this.iframeEl.classList.remove('hide');
75
- this.sourceEditor.classList.add('hide');
76
- this.mode = 'iframe';
77
- grayImg.call(this, false);
70
+ this.uploadImgMgr.show((json) => {
71
+ if (json && json.isOk)
72
+ this.format("insertImage", json.fullUrl);
73
+ });
78
74
  }
79
75
  },
76
+ /**
77
+ * 清理冗余 HTML
78
+ */
79
+ cleanHTML() {
80
+ // @ts-ignore
81
+ this.setIframeBody(HtmlSanitizer.SanitizeHtml(this.iframeDoc.body.innerHTML));
82
+ },
83
+ saveRemoteImage2Local() {
84
+ saveRemoteImage2Local.call(this);
85
+ },
80
86
  /**
81
87
  * 当工具条点击的时候触发
82
88
  *
83
89
  * @param ev
84
90
  */
85
- onToolBarClk(ev) {
91
+ onCmdClk(ev) {
86
92
  let el = ev.target, clsName = el.className.split(' ').shift();
87
- switch (clsName) {
88
- case 'createLink':
89
- // let result: string = prompt("请输入 URL 地址");
90
- // if (result)
91
- // this.format("createLink", result);
92
- break;
93
- case 'insertImage':
94
- // @ts-ignore
95
- if (window.isCreate)
96
- alert('请保存记录后再上传图片。');
97
- else {
98
- this.uploadImgMgr.show((json) => {
99
- if (json && json.isOk)
100
- this.format("insertImage", json.fullUrl);
101
- });
102
- }
103
- break;
104
- case 'switchMode':
105
- this.setMode();
106
- break;
107
- case 'cleanHTML':
108
- // @ts-ignore
109
- this.setIframeBody(HtmlSanitizer.SanitizeHtml(this.iframeDoc.body.innerHTML)); // 清理冗余 HTML
110
- break;
111
- case 'saveRemoteImage2Local':
112
- saveRemoteImage2Local.call(this);
113
- break;
114
- default:
115
- this.format(clsName);
116
- }
93
+ this.format(clsName);
117
94
  },
118
95
  /**
119
96
  * 通过 document.execCommand() 来操纵可编辑内容区域的元素
@@ -141,12 +118,6 @@ export default {
141
118
  break;
142
119
  this.format('fontsize', i + "");
143
120
  },
144
- onFontColorPicker(ev) {
145
- this.format('foreColor', ev.target.title);
146
- },
147
- onFontBgColorPicker(ev) {
148
- this.format('backColor', ev.target.title);
149
- },
150
121
  /**
151
122
  * 选择字体
152
123
  *
@@ -187,6 +158,28 @@ export default {
187
158
  h.push('</tr></table></div>');
188
159
  return h.join('');
189
160
  }
161
+ },
162
+ watch: {
163
+ vModel(n) {
164
+ this.setIframeBody(n);
165
+ },
166
+ /**
167
+ * 切換 HTML 編輯 or 可視化編輯
168
+ *
169
+ * @param n
170
+ */
171
+ isShowCode(n) {
172
+ if (n) {
173
+ this.iframeEl.classList.add('hide');
174
+ this.sourceEditor.classList.add('show');
175
+ grayImg.call(this, true);
176
+ }
177
+ else {
178
+ this.iframeEl.classList.remove('hide');
179
+ this.sourceEditor.classList.remove('show');
180
+ grayImg.call(this, false);
181
+ }
182
+ },
190
183
  }
191
184
  };
192
185
  /**
@@ -264,8 +257,8 @@ function saveRemoteImage2Local() {
264
257
  * @param isGray
265
258
  */
266
259
  function grayImg(isGray) {
267
- this.toolbarEl.querySelectorAll('i').forEach((item) => {
268
- if (item.className.indexOf('switchMode') != -1)
260
+ this.$el.querySelectorAll('.toolbar i').forEach((item) => {
261
+ if (item.className.indexOf('switchMode') != -1) // 这个按钮永远可按,不受影响
269
262
  return;
270
263
  item.style.color = isGray ? 'lightgray' : '';
271
264
  });
@@ -1 +1 @@
1
- {"version":3,"file":"HtmlEditor.js","sourceRoot":"","sources":["../../../../src/components/form/HtmlEditor/HtmlEditor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HtmlEditor.js","sourceRoot":"","sources":["../../../../src/components/form/HtmlEditor/HtmlEditor.ts"],"names":[],"mappings":"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"}
@@ -69,12 +69,16 @@
69
69
  border-top-width: 0;
70
70
  box-sizing : border-box;
71
71
  background-color: white;
72
- height : 600px;
72
+ min-height : 300px;
73
73
  width : 100%;
74
74
  }
75
75
 
76
76
  textarea {
77
77
  resize: none;
78
+ display: none;
79
+ &.show{
80
+ display: block;
81
+ }
78
82
  }
79
83
  }
80
84
 
@@ -1,46 +1,44 @@
1
1
  export default {
2
2
  props: {
3
- fieldName: { type: String, required: true }, // 表单 name,字段名
4
- uploadImageActionUrl: String // 图片上传路径
3
+ vModel: String,
4
+ uploadImageActionUrl: String // 图片上传路径
5
5
  },
6
- data() {
6
+ data(): any {
7
7
  return {
8
- mode: 'iframe',
9
- toolbarEl: null,
10
- sourceEditor: null,
8
+ isShowCode: false, // 是否显示 HTML 源码
11
9
  iframeEl: null,
10
+ sourceEditor: null,
12
11
  };
13
12
  },
14
13
  mounted(): void {
15
- const el = this.$el;
16
- this.toolbarEl = <HTMLElement>el.querySelector('.toolbar');
17
- this.iframeEl = <HTMLIFrameElement>el.querySelector('iframe');
18
-
19
- // 这个方法只能写在 onload 事件里面, 不写 onload 里还不执行
20
- (<Window>this.iframeEl.contentWindow).onload = (ev: Event) => {
21
- const iframeDoc = (<Window>this.iframeEl.contentWindow).document;
22
- iframeDoc.designMode = 'on';
23
- iframeDoc.addEventListener('paste', onImagePaste.bind(this));// 直接剪切板粘贴上传图片
14
+ this.iframeEl = <HTMLIFrameElement>this.$el.querySelector('iframe');
15
+ this.sourceEditor = <HTMLTextAreaElement>this.$el.querySelector('textarea');
24
16
 
25
- this.iframeDoc = iframeDoc;
17
+ (<Window>this.iframeEl.contentWindow).onload = (ev: Event) => { // 这个方法只能写在 onload 事件里面, 不写 onload 里还不执行
18
+ this.iframeDoc = (<Window>this.iframeEl.contentWindow).document;
19
+ this.iframeDoc.designMode = 'on';
20
+ this.iframeDoc.addEventListener('paste', onImagePaste.bind(this));// 直接剪切板粘贴上传图片
26
21
 
27
- new MutationObserver((mutationsList: MutationRecord[], observer: MutationObserver) => {
28
- if (this.mode === 'iframe')
22
+ new MutationObserver((mutationsList: MutationRecord[], observer: MutationObserver) => {// 监听DOM树变化
23
+ if (!this.isShowCode) {
29
24
  this.sourceEditor.value = this.iframeDoc.body.innerHTML;
30
- }).observe(iframeDoc.body, { attributes: true, childList: true, subtree: true, characterData: true });
25
+ this.$emit('on-change', this.sourceEditor.value)
26
+ }
27
+
28
+ }).observe(this.iframeDoc.body, { attributes: true, childList: true, subtree: true, characterData: true });
31
29
 
32
- this.sourceEditor.value && this.setIframeBody(this.sourceEditor.value);// 有内容
30
+ this.vModel && this.setIframeBody(this.vModel);
31
+ // this.sourceEditor.value && this.setIframeBody(this.sourceEditor.value);// 有内容
33
32
  }
34
33
 
35
- this.sourceEditor = <HTMLTextAreaElement>el.querySelector('textarea');
36
- this.sourceEditor.classList.add("hide");
37
- this.sourceEditor.name = this.fieldName;
38
34
  this.sourceEditor.oninput = (ev: Event) => {
39
- if (this.mode === 'textarea')
35
+ if (this.isShowCode && this.sourceEditor.value) {
40
36
  this.setIframeBody(this.sourceEditor.value);
37
+ this.$emit('on-change', this.sourceEditor.value)
38
+ }
41
39
  }
42
40
 
43
- this.uploadImgMgr = this.$refs.uploadLayer;
41
+ // this.uploadImgMgr = this.$refs.uploadLayer;
44
42
  },
45
43
  methods: {
46
44
  /**
@@ -55,8 +53,8 @@ export default {
55
53
  /**
56
54
  * 获取内容的 HTML
57
55
  *
58
- * @param cleanWord
59
- * @param encode
56
+ * @param cleanWord 是否清理冗余标签
57
+ * @param encode 是否 URL 编码
60
58
  */
61
59
  getValue(cleanWord: boolean, encode: boolean): string {
62
60
  let result: string = this.iframeDoc.body.innerHTML;
@@ -70,22 +68,34 @@ export default {
70
68
  return result;
71
69
  },
72
70
 
71
+ createLink(): void {
72
+ let result: string = prompt("请输入 URL 地址");
73
+ if (result)
74
+ this.format("createLink", result);
75
+ },
76
+
77
+ insertImage(): void {
78
+ // @ts-ignore
79
+ if (window.isCreate)
80
+ alert('请保存记录后再上传图片。');
81
+ else {
82
+ this.uploadImgMgr.show((json: any) => {
83
+ if (json && json.isOk)
84
+ this.format("insertImage", json.fullUrl);
85
+ });
86
+ }
87
+ },
88
+
73
89
  /**
74
- * 切換 HTML 編輯 or 可視化編輯
75
- *
90
+ * 清理冗余 HTML
76
91
  */
77
- setMode(): void {
78
- if (this.mode == 'iframe') {
79
- this.iframeEl.classList.add('hide');
80
- this.sourceEditor.classList.remove('hide');
81
- this.mode = 'textarea';
82
- grayImg.call(this, true);
83
- } else {
84
- this.iframeEl.classList.remove('hide');
85
- this.sourceEditor.classList.add('hide');
86
- this.mode = 'iframe';
87
- grayImg.call(this, false);
88
- }
92
+ cleanHTML(): void {
93
+ // @ts-ignore
94
+ this.setIframeBody(HtmlSanitizer.SanitizeHtml(this.iframeDoc.body.innerHTML));
95
+ },
96
+
97
+ saveRemoteImage2Local(): void {
98
+ saveRemoteImage2Local.call(this);
89
99
  },
90
100
 
91
101
  /**
@@ -93,41 +103,11 @@ export default {
93
103
  *
94
104
  * @param ev
95
105
  */
96
- onToolBarClk(ev: Event): void {
106
+ onCmdClk(ev: Event): void {
97
107
  let el: HTMLElement = <HTMLElement>ev.target,
98
108
  clsName = <string>el.className.split(' ').shift();
99
109
 
100
- switch (clsName) {
101
- case 'createLink':
102
- // let result: string = prompt("请输入 URL 地址");
103
- // if (result)
104
- // this.format("createLink", result);
105
- break;
106
- case 'insertImage':
107
- // @ts-ignore
108
- if (window.isCreate)
109
- alert('请保存记录后再上传图片。');
110
- else {
111
- this.uploadImgMgr.show((json: any) => {
112
- if (json && json.isOk)
113
- this.format("insertImage", json.fullUrl);
114
- });
115
- }
116
-
117
- break;
118
- case 'switchMode':
119
- this.setMode();
120
- break;
121
- case 'cleanHTML':
122
- // @ts-ignore
123
- this.setIframeBody(HtmlSanitizer.SanitizeHtml(this.iframeDoc.body.innerHTML)); // 清理冗余 HTML
124
- break;
125
- case 'saveRemoteImage2Local':
126
- saveRemoteImage2Local.call(this);
127
- break;
128
- default:
129
- this.format(clsName);
130
- }
110
+ this.format(clsName);
131
111
  },
132
112
 
133
113
  /**
@@ -154,7 +134,7 @@ export default {
154
134
  let el: HTMLElement = <HTMLElement>ev.target,
155
135
  els = (<HTMLElement>ev.currentTarget).children;
156
136
 
157
- let i, j;
137
+ let i: number, j: number;
158
138
  for (i = 0, j = els.length; i < j; i++)
159
139
  if (el == els[i])
160
140
  break;
@@ -162,14 +142,6 @@ export default {
162
142
  this.format('fontsize', i + "");
163
143
  },
164
144
 
165
- onFontColorPicker(ev: Event): void {
166
- this.format('foreColor', (<HTMLElement>ev.target).title);
167
- },
168
-
169
- onFontBgColorPicker(ev: Event): void {
170
- this.format('backColor', (<HTMLElement>ev.target).title);
171
- },
172
-
173
145
  /**
174
146
  * 选择字体
175
147
  *
@@ -222,6 +194,28 @@ export default {
222
194
 
223
195
  return h.join('');
224
196
  }
197
+ },
198
+ watch: {
199
+ vModel(n: string): void {
200
+ this.setIframeBody(n);
201
+ },
202
+
203
+ /**
204
+ * 切換 HTML 編輯 or 可視化編輯
205
+ *
206
+ * @param n
207
+ */
208
+ isShowCode(n: boolean): void {
209
+ if (n) {
210
+ this.iframeEl.classList.add('hide');
211
+ this.sourceEditor.classList.add('show');
212
+ grayImg.call(this, true);
213
+ } else {
214
+ this.iframeEl.classList.remove('hide');
215
+ this.sourceEditor.classList.remove('show');
216
+ grayImg.call(this, false);
217
+ }
218
+ },
225
219
  }
226
220
  };
227
221
 
@@ -315,8 +309,8 @@ function saveRemoteImage2Local(): void {
315
309
  * @param isGray
316
310
  */
317
311
  function grayImg(isGray: boolean): void {
318
- this.toolbarEl.querySelectorAll('i').forEach((item: HTMLElement) => {
319
- if (item.className.indexOf('switchMode') != -1)
312
+ this.$el.querySelectorAll('.toolbar i').forEach((item: HTMLElement) => {
313
+ if (item.className.indexOf('switchMode') != -1) // 这个按钮永远可按,不受影响
320
314
  return;
321
315
  item.style.color = isGray ? 'lightgray' : '';
322
316
  });
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="aj-form-html-editor">
3
- <ul class="toolbar" @click="onToolBarClk">
3
+ <ul class="toolbar">
4
4
  <li class="dorpdown">
5
5
  <i title="字体" class="fa-font"></i>
6
6
  <div class="fontfamilyChoser" @click="onFontfamilyChoserClk">
@@ -32,34 +32,34 @@
32
32
  <a style="font-size: xx-large; line-height: 140%">极大</a>
33
33
  </div>
34
34
  </li>
35
- <li><i title="加粗" class="bold fa-bold"></i></li>
36
- <li><i title="斜体" class="italic fa-italic"></i></li>
37
- <li><i title="下划线" class="underline fa-underline"></i></li>
38
- <li><i title="左对齐" class="justifyleft fa-align-left"></i></li>
39
- <li><i title="中间对齐" class="justifycenter fa-align-center"></i></li>
40
- <li><i title="右对齐" class="justifyright fa-align-right"></i></li>
41
- <li><i title="数字编号" class="insertorderedlist fa-list-ol"></i></li>
42
- <li><i title="项目编号" class="insertunorderedlist fa-list-ul"></i></li>
43
- <li><i title="增加缩进" class="outdent fa-outdent"></i></li>
44
- <li><i title="减少缩进" class="indent fa-indent"></i></li>
35
+ <li @click="onCmdClk"><i title="加粗" class="bold fa-bold"></i></li>
36
+ <li @click="onCmdClk"><i title="斜体" class="italic fa-italic"></i></li>
37
+ <li @click="onCmdClk"><i title="下划线" class="underline fa-underline"></i></li>
38
+ <li @click="onCmdClk"><i title="左对齐" class="justifyleft fa-align-left"></i></li>
39
+ <li @click="onCmdClk"><i title="中间对齐" class="justifycenter fa-align-center"></i></li>
40
+ <li @click="onCmdClk"><i title="右对齐" class="justifyright fa-align-right"></i></li>
41
+ <li @click="onCmdClk"><i title="数字编号" class="insertorderedlist fa-list-ol"></i></li>
42
+ <li @click="onCmdClk"><i title="项目编号" class="insertunorderedlist fa-list-ul"></i></li>
43
+ <li @click="onCmdClk"><i title="增加缩进" class="outdent fa-outdent"></i></li>
44
+ <li @click="onCmdClk"><i title="减少缩进" class="indent fa-indent"></i></li>
45
45
  <li class="dorpdown">
46
46
  <i title="字体颜色" class="fa-paint-brush"></i>
47
- <div class="fontColor colorPicker" v-html="createColorPickerHTML()" @click="onFontColorPicker"></div>
47
+ <div class="colorPicker" v-html="createColorPickerHTML()" @click="format('foreColor', $event.target.title)"></div>
48
48
  </li>
49
49
  <li class="dorpdown">
50
50
  <i title="背景颜色" class="fa-pencil"></i>
51
- <div class="bgColor colorPicker" v-html="createColorPickerHTML()" @click="onFontBgColorPicker"></div>
51
+ <div class="colorPicker" v-html="createColorPickerHTML()" @click="format('backColor', $event.target.title)"></div>
52
52
  </li>
53
- <li><i title="增加链接" class="createLink fa-link"></i></li>
54
- <li><i title="增加图片" class="insertImage fa-file-image-o"></i></li>
55
- <li><i title="一键存图" class="saveRemoteImage2Local fa-hdd-o"></i></li>
56
- <li><i title="清理 HTML" class="cleanHTML fa-eraser"></i></li>
57
- <li><i title="切换到代码" class="switchMode fa-code"></i></li>
53
+ <li @click="createLink"><i title="增加链接" class="fa-link"></i></li>
54
+ <li @click="insertImage"><i title="增加图片" class="fa-file-image-o"></i></li>
55
+ <li @click="saveRemoteImage2Local"><i title="一键存图" class="saveRemoteImage2Local fa-hdd-o"></i></li>
56
+ <li @click="cleanHTML"><i title="清理 HTML" class="fa-eraser"></i></li>
57
+ <li @click="isShowCode = !isShowCode"><i title="切换到代码" class="switchMode fa-code"></i></li>
58
58
  </ul>
59
59
 
60
60
  <div class="editorBody">
61
61
  <iframe srcdoc="<html><body></body></html>"></iframe>
62
- <slot></slot>
62
+ <textarea></textarea>
63
63
  </div>
64
64
  <!-- <aj-form-popup-upload ref="uploadLayer" :upload-url="uploadImageActionUrl"></aj-form-popup-upload> -->
65
65
  </div>
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@ajaxjs/ui",
3
- "version": "1.0.5",
4
- "main": "dist/src/index.js",
5
- "types": "dist/src/index.d.ts",
3
+ "version": "1.1.0",
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
6
  "private": false,
7
7
  "scripts": {
8
8
  "dev": "vue-cli-service serve",
@@ -10,11 +10,15 @@
10
10
  "release": "tsc && xcopy src\\components dist\\components /s /y /d && npm publish --access public",
11
11
  "lint": "vue-cli-service lint"
12
12
  },
13
+ "files": [
14
+ "dist/"
15
+ ],
13
16
  "dependencies": {
14
17
  "core-js": "^3.6.5",
15
18
  "vue": "^2.6.11",
16
19
  "vue-router": "^3.2.0"
17
20
  },
21
+
18
22
  "devDependencies": {
19
23
  "@typescript-eslint/eslint-plugin": "^4.18.0",
20
24
  "@typescript-eslint/parser": "^4.18.0",
package/.browserslistrc DELETED
@@ -1,3 +0,0 @@
1
- > 1%
2
- last 2 versions
3
- not dead
package/.eslintrc.js DELETED
@@ -1,25 +0,0 @@
1
- module.exports = {
2
- root: true,
3
- env: {
4
- node: true,
5
- },
6
- extends: [
7
- "plugin:vue/essential",
8
- "eslint:recommended",
9
- "@vue/typescript/recommended",
10
- ],
11
- parserOptions: {
12
- ecmaVersion: 2020,
13
- },
14
- rules: {
15
- "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
16
- "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
17
- "no-unused-vars": "off",
18
- "prefer-const": "off",
19
- "@typescript-eslint/prefer-const": ["off"],
20
- "@typescript-eslint/no-unused-vars": ["off"],
21
- "@typescript-eslint/ban-ts-comment": "off",
22
- "@typescript-eslint/explicit-function-return-type": "off",
23
- "@typescript-eslint/no-explicit-any": ["off"]
24
- },
25
- };
package/babel.config.js DELETED
@@ -1,5 +0,0 @@
1
- module.exports = {
2
- presets: [
3
- '@vue/cli-plugin-babel/preset'
4
- ]
5
- }
Binary file