From aff13ab76d2d41e04fe214e516dc10df78ee417a Mon Sep 17 00:00:00 2001 From: midfar Date: Mon, 13 Mar 2023 16:55:51 +0800 Subject: [PATCH] added example --- components.d.ts | 9 + src/components/ErrorLog/index.vue | 2 +- src/components/MDinput/index.vue | 361 ++++++++++++++++++ src/components/Screenfull/index.vue | 1 + src/components/SizeSelect/index.vue | 5 +- src/components/Sticky/index.vue | 93 +++++ .../Tinymce/components/EditorImage.vue | 116 ++++++ src/components/Tinymce/dynamicLoadScript.js | 60 +++ src/components/Tinymce/index.vue | 255 +++++++++++++ src/components/Tinymce/plugins.js | 7 + src/components/Tinymce/toolbar.js | 6 + src/components/Upload/SingleImage.vue | 136 +++++++ src/components/Upload/SingleImage2.vue | 132 +++++++ src/components/Upload/SingleImage3.vue | 159 ++++++++ src/router/index.ts | 61 ++- .../example/components/ArticleDetail.vue | 297 ++++++++++++++ .../example/components/Dropdown/Comment.vue | 45 +++ .../example/components/Dropdown/Platform.vue | 50 +++ .../example/components/Dropdown/SourceUrl.vue | 42 ++ .../example/components/Dropdown/index.js | 3 + src/views/example/components/Warning.vue | 13 + src/views/example/create.vue | 14 + src/views/example/edit.vue | 14 + src/views/example/list.vue | 113 ++++++ src/views/table/complex-table.vue | 7 +- tsconfig.json | 3 +- 26 files changed, 1965 insertions(+), 39 deletions(-) create mode 100644 src/components/MDinput/index.vue create mode 100644 src/components/Sticky/index.vue create mode 100644 src/components/Tinymce/components/EditorImage.vue create mode 100644 src/components/Tinymce/dynamicLoadScript.js create mode 100644 src/components/Tinymce/index.vue create mode 100644 src/components/Tinymce/plugins.js create mode 100644 src/components/Tinymce/toolbar.js create mode 100644 src/components/Upload/SingleImage.vue create mode 100644 src/components/Upload/SingleImage2.vue create mode 100644 src/components/Upload/SingleImage3.vue create mode 100644 src/views/example/components/ArticleDetail.vue create mode 100644 src/views/example/components/Dropdown/Comment.vue create mode 100644 src/views/example/components/Dropdown/Platform.vue create mode 100644 src/views/example/components/Dropdown/SourceUrl.vue create mode 100644 src/views/example/components/Dropdown/index.js create mode 100644 src/views/example/components/Warning.vue create mode 100644 src/views/example/create.vue create mode 100644 src/views/example/edit.vue create mode 100644 src/views/example/list.vue diff --git a/components.d.ts b/components.d.ts index e1d549c..f6c18da 100644 --- a/components.d.ts +++ b/components.d.ts @@ -9,6 +9,7 @@ declare module '@vue/runtime-core' { export interface GlobalComponents { Breadcrumb: typeof import('./src/components/Breadcrumb/index.vue')['default'] DropdownMenu: typeof import('./src/components/Share/DropdownMenu.vue')['default'] + EditorImage: typeof import('./src/components/Tinymce/components/EditorImage.vue')['default'] ElAlert: typeof import('element-plus/es')['ElAlert'] ElBadge: typeof import('element-plus/es')['ElBadge'] ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb'] @@ -35,6 +36,7 @@ declare module '@vue/runtime-core' { ElOption: typeof import('element-plus/es')['ElOption'] ElPagination: typeof import('element-plus/es')['ElPagination'] ElProgress: typeof import('element-plus/es')['ElProgress'] + ElRadio: typeof import('element-plus/es')['ElRadio'] ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] ElRate: typeof import('element-plus/es')['ElRate'] @@ -52,6 +54,7 @@ declare module '@vue/runtime-core' { ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTree: typeof import('element-plus/es')['ElTree'] + ElUpload: typeof import('element-plus/es')['ElUpload'] ErrorLog: typeof import('./src/components/ErrorLog/index.vue')['default'] GithubCorner: typeof import('./src/components/GithubCorner/index.vue')['default'] Hamburger: typeof import('./src/components/Hamburger/index.vue')['default'] @@ -59,6 +62,7 @@ declare module '@vue/runtime-core' { Keyboard: typeof import('./src/components/Charts/Keyboard.vue')['default'] LineMarker: typeof import('./src/components/Charts/LineMarker.vue')['default'] Mallki: typeof import('./src/components/TextHoverEffect/Mallki.vue')['default'] + MDinput: typeof import('./src/components/MDinput/index.vue')['default'] MixChart: typeof import('./src/components/Charts/MixChart.vue')['default'] Pagination: typeof import('./src/components/Pagination/index.vue')['default'] PanThumb: typeof import('./src/components/PanThumb/index.vue')['default'] @@ -66,8 +70,13 @@ declare module '@vue/runtime-core' { RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] Screenfull: typeof import('./src/components/Screenfull/index.vue')['default'] + SingleImage: typeof import('./src/components/Upload/SingleImage.vue')['default'] + SingleImage2: typeof import('./src/components/Upload/SingleImage2.vue')['default'] + SingleImage3: typeof import('./src/components/Upload/SingleImage3.vue')['default'] SizeSelect: typeof import('./src/components/SizeSelect/index.vue')['default'] + Sticky: typeof import('./src/components/Sticky/index.vue')['default'] SvgIcon: typeof import('./src/components/SvgIcon/index.vue')['default'] + Tinymce: typeof import('./src/components/Tinymce/index.vue')['default'] VueCountTo: typeof import('./src/components/vue-count-to/vue-countTo.vue')['default'] } export interface ComponentCustomProperties { diff --git a/src/components/ErrorLog/index.vue b/src/components/ErrorLog/index.vue index 12b56a2..b8dcb0b 100644 --- a/src/components/ErrorLog/index.vue +++ b/src/components/ErrorLog/index.vue @@ -10,7 +10,7 @@ diff --git a/src/components/MDinput/index.vue b/src/components/MDinput/index.vue new file mode 100644 index 0000000..38b6cdf --- /dev/null +++ b/src/components/MDinput/index.vue @@ -0,0 +1,361 @@ + + + + + diff --git a/src/components/Screenfull/index.vue b/src/components/Screenfull/index.vue index c7f173b..42f2249 100644 --- a/src/components/Screenfull/index.vue +++ b/src/components/Screenfull/index.vue @@ -7,6 +7,7 @@ diff --git a/src/components/Tinymce/components/EditorImage.vue b/src/components/Tinymce/components/EditorImage.vue new file mode 100644 index 0000000..fbce456 --- /dev/null +++ b/src/components/Tinymce/components/EditorImage.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/src/components/Tinymce/dynamicLoadScript.js b/src/components/Tinymce/dynamicLoadScript.js new file mode 100644 index 0000000..cff97df --- /dev/null +++ b/src/components/Tinymce/dynamicLoadScript.js @@ -0,0 +1,60 @@ +let callbacks = []; + +function loadedTinymce() { + // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2144 + // check is successfully downloaded script + return window.tinymce; +} + +const dynamicLoadScript = (src, callback) => { + const existingScript = document.getElementById(src); + // eslint-disable-next-line @typescript-eslint/no-empty-function + const cb = callback || function() {}; + + if (!existingScript) { + const script = document.createElement('script'); + script.src = src; // src url for the third-party library being loaded. + script.id = src; + document.body.appendChild(script); + callbacks.push(cb); + const onEnd = 'onload' in script ? stdOnEnd : ieOnEnd; + onEnd(script); + } + + if (existingScript && cb) { + if (loadedTinymce()) { + cb(null, existingScript); + } else { + callbacks.push(cb); + } + } + + function stdOnEnd(script) { + script.onload = function() { + // this.onload = null here is necessary + // because even IE9 works not like others + this.onerror = this.onload = null; + for (const cb of callbacks) { + cb(null, script); + } + callbacks = null; + }; + script.onerror = function() { + this.onerror = this.onload = null; + cb(new Error('Failed to load ' + src), script); + }; + } + + function ieOnEnd(script) { + script.onreadystatechange = function() { + if (this.readyState !== 'complete' && this.readyState !== 'loaded') return; + this.onreadystatechange = null; + for (const cb of callbacks) { + cb(null, script); // there is no way to catch loading errors in IE8 + } + callbacks = null; + }; + } +}; + +export default dynamicLoadScript; diff --git a/src/components/Tinymce/index.vue b/src/components/Tinymce/index.vue new file mode 100644 index 0000000..1abcc15 --- /dev/null +++ b/src/components/Tinymce/index.vue @@ -0,0 +1,255 @@ +