【8.3.0】更新8.3.0前端代码

master
stylefeng 2024-11-09 16:50:28 +08:00
parent 98bbf0eb4f
commit ec47565636
156 changed files with 9272 additions and 14632 deletions

View File

@ -11,25 +11,28 @@
"format": "prettier --write src/"
},
"dependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"@ant-design/icons-vue": "^7.0.1",
"ant-design-vue": "^3.2.17",
"axios": "^1.6.0",
"cropperjs": "^1.5.12",
"dayjs": "^1.11.10",
"echarts": "^5.4.2",
"gm-crypto": "^0.1.12",
"js-base64": "^3.7.7",
"jsencrypt": "^3.3.2",
"less": "^4.2.0",
"lodash-es": "^4.17.21",
"moment": "^2.30.1",
"nprogress": "^0.2.0",
"pinia": "^2.1.7",
"tinymce": "^5.10.7",
"vue": "^3.3.4",
"vue": "3.3.4",
"vue-clipboard3": "^2.0.0",
"vue-echarts": "^6.5.4",
"vue-i18n": "^9.1.9",
"vue-router": "^4.2.5",
"vuedraggable": "^4.1.0",
"vxe-table": "^4.4.2",
"vxe-table": "4.6.17",
"xe-utils": "^3.5.14",
"xlsx": "^0.18.5"
},
@ -49,8 +52,12 @@
"unplugin-vue-components": "^0.24.1",
"vite": "^4.4.11",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-imagemin": "^0.6.1",
"vite-plugin-style-import": "^2.0.0",
"vitest": "^0.34.6",
"vue-eslint-parser": "^9.1.1"
},
"resolutions": {
"bin-wrapper": "npm:bin-wrapper-china"
}
}

View File

@ -1,462 +0,0 @@
tinymce.addI18n('zh_CN',{
"Redo": "\u91cd\u505a",
"Undo": "\u64a4\u9500",
"Cut": "\u526a\u5207",
"Copy": "\u590d\u5236",
"Paste": "\u7c98\u8d34",
"Select all": "\u5168\u9009",
"New document": "\u65b0\u6587\u4ef6",
"Ok": "\u786e\u5b9a",
"Cancel": "\u53d6\u6d88",
"Visual aids": "\u7f51\u683c\u7ebf",
"Bold": "\u7c97\u4f53",
"Italic": "\u659c\u4f53",
"Underline": "\u4e0b\u5212\u7ebf",
"Strikethrough": "\u5220\u9664\u7ebf",
"Superscript": "\u4e0a\u6807",
"Subscript": "\u4e0b\u6807",
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
"Align left": "\u5de6\u8fb9\u5bf9\u9f50",
"Align center": "\u4e2d\u95f4\u5bf9\u9f50",
"Align right": "\u53f3\u8fb9\u5bf9\u9f50",
"Justify": "\u4e24\u7aef\u5bf9\u9f50",
"Bullet list": "\u9879\u76ee\u7b26\u53f7",
"Numbered list": "\u7f16\u53f7\u5217\u8868",
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
"Close": "\u5173\u95ed",
"Formats": "\u683c\u5f0f",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u7b49\u5feb\u6377\u952e\u3002",
"Headers": "\u6807\u9898",
"Header 1": "\u6807\u98981",
"Header 2": "\u6807\u98982",
"Header 3": "\u6807\u98983",
"Header 4": "\u6807\u98984",
"Header 5": "\u6807\u98985",
"Header 6": "\u6807\u98986",
"Headings": "\u6807\u9898",
"Heading 1": "\u6807\u98981",
"Heading 2": "\u6807\u98982",
"Heading 3": "\u6807\u98983",
"Heading 4": "\u6807\u98984",
"Heading 5": "\u6807\u98985",
"Heading 6": "\u6807\u98986",
"Preformatted": "\u9884\u5148\u683c\u5f0f\u5316\u7684",
"Div": "Div",
"Pre": "Pre",
"Code": "\u4ee3\u7801",
"Paragraph": "\u6bb5\u843d",
"Blockquote": "\u5f15\u6587\u533a\u5757",
"Inline": "\u6587\u672c",
"Blocks": "\u57fa\u5757",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
"Fonts": "\u5b57\u4f53",
"Font Sizes": "\u5b57\u53f7",
"Class": "\u7c7b\u578b",
"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf",
"OR": "\u6216",
"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64",
"Upload": "\u4e0a\u4f20",
"Block": "\u5757",
"Align": "\u5bf9\u9f50",
"Default": "\u9ed8\u8ba4",
"Circle": "\u7a7a\u5fc3\u5706",
"Disc": "\u5b9e\u5fc3\u5706",
"Square": "\u65b9\u5757",
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
"Anchor...": "\u951a\u70b9...",
"Name": "\u540d\u79f0",
"Id": "\u6807\u8bc6\u7b26",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
"Special character...": "\u7279\u6b8a\u5b57\u7b26...",
"Source code": "\u6e90\u4ee3\u7801",
"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
"Language": "\u8bed\u8a00",
"Code sample...": "\u793a\u4f8b\u4ee3\u7801...",
"Color Picker": "\u9009\u8272\u5668",
"R": "R",
"G": "G",
"B": "B",
"Left to right": "\u4ece\u5de6\u5230\u53f3",
"Right to left": "\u4ece\u53f3\u5230\u5de6",
"Emoticons": "\u8868\u60c5",
"Emoticons...": "\u8868\u60c5\u7b26\u53f7...",
"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027",
"Title": "\u6807\u9898",
"Keywords": "\u5173\u952e\u8bcd",
"Description": "\u63cf\u8ff0",
"Robots": "\u673a\u5668\u4eba",
"Author": "\u4f5c\u8005",
"Encoding": "\u7f16\u7801",
"Fullscreen": "\u5168\u5c4f",
"Action": "\u64cd\u4f5c",
"Shortcut": "\u5feb\u6377\u952e",
"Help": "\u5e2e\u52a9",
"Address": "\u5730\u5740",
"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f",
"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f",
"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84",
"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355",
"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):",
"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a",
"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}",
"Plugins": "\u63d2\u4ef6",
"Handy Shortcuts": "\u5feb\u6377\u952e",
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
"Alternative description": "\u66ff\u4ee3\u63cf\u8ff0",
"Accessibility": "\u8f85\u52a9\u529f\u80fd",
"Image is decorative": "\u56fe\u50cf\u662f\u88c5\u9970\u6027\u7684",
"Source": "\u5730\u5740",
"Dimensions": "\u5927\u5c0f",
"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
"General": "\u666e\u901a",
"Advanced": "\u9ad8\u7ea7",
"Style": "\u6837\u5f0f",
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
"Border": "\u8fb9\u6846",
"Insert image": "\u63d2\u5165\u56fe\u7247",
"Image...": "\u56fe\u7247...",
"Image list": "\u56fe\u7247\u5217\u8868",
"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
"Edit image": "\u7f16\u8f91\u56fe\u7247",
"Image options": "\u56fe\u7247\u9009\u9879",
"Zoom in": "\u653e\u5927",
"Zoom out": "\u7f29\u5c0f",
"Crop": "\u88c1\u526a",
"Resize": "\u8c03\u6574\u5927\u5c0f",
"Orientation": "\u65b9\u5411",
"Brightness": "\u4eae\u5ea6",
"Sharpen": "\u9510\u5316",
"Contrast": "\u5bf9\u6bd4\u5ea6",
"Color levels": "\u989c\u8272\u5c42\u6b21",
"Gamma": "\u4f3d\u9a6c\u503c",
"Invert": "\u53cd\u8f6c",
"Apply": "\u5e94\u7528",
"Back": "\u540e\u9000",
"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
"Text to display": "\u663e\u793a\u6587\u5b57",
"Url": "\u5730\u5740",
"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...",
"Current window": "\u5f53\u524d\u7a97\u53e3",
"None": "\u65e0",
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
"Open link": "\u6253\u5f00\u94fe\u63a5",
"Remove link": "\u5220\u9664\u94fe\u63a5",
"Anchors": "\u951a\u70b9",
"Link...": "\u94fe\u63a5...",
"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
"The URL you entered seems to be an external link. Do you want to add the required https:\/\/ prefix?": "\u60a8\u8f93\u5165\u7684 URL \u4f3c\u4e4e\u662f\u4e00\u4e2a\u5916\u90e8\u94fe\u63a5\u3002\u60a8\u60f3\u6dfb\u52a0\u6240\u9700\u7684 https:\/\/ \u524d\u7f00\u5417\uff1f",
"Link list": "\u94fe\u63a5\u5217\u8868",
"Insert video": "\u63d2\u5165\u89c6\u9891",
"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
"Alternative source": "\u955c\u50cf",
"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740",
"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)",
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
"Embed": "\u5185\u5d4c",
"Media...": "\u591a\u5a92\u4f53...",
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
"Page break": "\u5206\u9875\u7b26",
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
"Preview": "\u9884\u89c8",
"Print...": "\u6253\u5370...",
"Save": "\u4fdd\u5b58",
"Find": "\u67e5\u627e",
"Replace with": "\u66ff\u6362\u4e3a",
"Replace": "\u66ff\u6362",
"Replace all": "\u5168\u90e8\u66ff\u6362",
"Previous": "\u4e0a\u4e00\u4e2a",
"Next": "\u4e0b\u4e00\u4e2a",
"Find and Replace": "\u67e5\u627e\u548c\u66ff\u6362",
"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...",
"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
"Find whole words only": "\u5168\u5b57\u5339\u914d",
"Find in selection": "\u5728\u9009\u533a\u4e2d\u67e5\u627e",
"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
"Spellcheck Language": "\u62fc\u5199\u68c0\u67e5\u8bed\u8a00",
"No misspellings found.": "\u6ca1\u6709\u53d1\u73b0\u62fc\u5199\u9519\u8bef",
"Ignore": "\u5ffd\u7565",
"Ignore all": "\u5168\u90e8\u5ffd\u7565",
"Finish": "\u5b8c\u6210",
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
"Insert table": "\u63d2\u5165\u8868\u683c",
"Table properties": "\u8868\u683c\u5c5e\u6027",
"Delete table": "\u5220\u9664\u8868\u683c",
"Cell": "\u5355\u5143\u683c",
"Row": "\u884c",
"Column": "\u5217",
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
"Delete row": "\u5220\u9664\u884c",
"Row properties": "\u884c\u5c5e\u6027",
"Cut row": "\u526a\u5207\u884c",
"Copy row": "\u590d\u5236\u884c",
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
"Delete column": "\u5220\u9664\u5217",
"Cols": "\u5217",
"Rows": "\u884c",
"Width": "\u5bbd",
"Height": "\u9ad8",
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
"Caption": "\u6807\u9898",
"Show caption": "\u663e\u793a\u6807\u9898",
"Left": "\u5de6\u5bf9\u9f50",
"Center": "\u5c45\u4e2d",
"Right": "\u53f3\u5bf9\u9f50",
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
"Scope": "\u8303\u56f4",
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
"H Align": "\u6c34\u5e73\u5bf9\u9f50",
"V Align": "\u5782\u76f4\u5bf9\u9f50",
"Top": "\u9876\u90e8\u5bf9\u9f50",
"Middle": "\u5782\u76f4\u5c45\u4e2d",
"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
"Header cell": "\u8868\u5934\u5355\u5143\u683c",
"Row group": "\u884c\u7ec4",
"Column group": "\u5217\u7ec4",
"Row type": "\u884c\u7c7b\u578b",
"Header": "\u8868\u5934",
"Body": "\u8868\u4f53",
"Footer": "\u8868\u5c3e",
"Border color": "\u8fb9\u6846\u989c\u8272",
"Insert template...": "\u63d2\u5165\u6a21\u677f...",
"Templates": "\u6a21\u677f",
"Template": "\u6a21\u677f",
"Text color": "\u6587\u5b57\u989c\u8272",
"Background color": "\u80cc\u666f\u8272",
"Custom...": "\u81ea\u5b9a\u4e49...",
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
"No color": "\u65e0",
"Remove color": "\u79fb\u9664\u989c\u8272",
"Table of Contents": "\u5185\u5bb9\u5217\u8868",
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
"Word count": "\u5b57\u6570",
"Count": "\u8ba1\u6570",
"Document": "\u6587\u6863",
"Selection": "\u9009\u62e9",
"Words": "\u5355\u8bcd",
"Words: {0}": "\u5b57\u6570\uff1a{0}",
"{0} words": "{0} \u5b57",
"File": "\u6587\u4ef6",
"Edit": "\u7f16\u8f91",
"Insert": "\u63d2\u5165",
"View": "\u89c6\u56fe",
"Format": "\u683c\u5f0f",
"Table": "\u8868\u683c",
"Tools": "\u5de5\u5177",
"Powered by {0}": "\u7531{0}\u9a71\u52a8",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
"Image title": "\u56fe\u7247\u6807\u9898",
"Border width": "\u8fb9\u6846\u5bbd\u5ea6",
"Border style": "\u8fb9\u6846\u6837\u5f0f",
"Error": "\u9519\u8bef",
"Warn": "\u8b66\u544a",
"Valid": "\u6709\u6548",
"To open the popup, press Shift+Enter": "\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846",
"Rich Text Area. Press ALT-0 for help.": "\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002",
"System Font": "\u7cfb\u7edf\u5b57\u4f53",
"Failed to upload image: {0}": "\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}",
"Failed to load plugin: {0} from url {1}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}",
"Failed to load plugin url: {0}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}",
"Failed to initialize plugin: {0}": "\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}",
"example": "\u793a\u4f8b",
"Search": "\u641c\u7d22",
"All": "\u5168\u90e8",
"Currency": "\u8d27\u5e01",
"Text": "\u6587\u5b57",
"Quotations": "\u5f15\u7528",
"Mathematical": "\u6570\u5b66",
"Extended Latin": "\u62c9\u4e01\u8bed\u6269\u5145",
"Symbols": "\u7b26\u53f7",
"Arrows": "\u7bad\u5934",
"User Defined": "\u81ea\u5b9a\u4e49",
"dollar sign": "\u7f8e\u5143\u7b26\u53f7",
"currency sign": "\u8d27\u5e01\u7b26\u53f7",
"euro-currency sign": "\u6b27\u5143\u7b26\u53f7",
"colon sign": "\u5192\u53f7",
"cruzeiro sign": "\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7",
"french franc sign": "\u6cd5\u90ce\u7b26\u53f7",
"lira sign": "\u91cc\u62c9\u7b26\u53f7",
"mill sign": "\u5bc6\u5c14\u7b26\u53f7",
"naira sign": "\u5948\u62c9\u7b26\u53f7",
"peseta sign": "\u6bd4\u585e\u5854\u7b26\u53f7",
"rupee sign": "\u5362\u6bd4\u7b26\u53f7",
"won sign": "\u97e9\u5143\u7b26\u53f7",
"new sheqel sign": "\u65b0\u8c22\u514b\u5c14\u7b26\u53f7",
"dong sign": "\u8d8a\u5357\u76fe\u7b26\u53f7",
"kip sign": "\u8001\u631d\u57fa\u666e\u7b26\u53f7",
"tugrik sign": "\u56fe\u683c\u91cc\u514b\u7b26\u53f7",
"drachma sign": "\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7",
"german penny symbol": "\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7",
"peso sign": "\u6bd4\u7d22\u7b26\u53f7",
"guarani sign": "\u74dc\u62c9\u5c3c\u7b26\u53f7",
"austral sign": "\u6fb3\u5143\u7b26\u53f7",
"hryvnia sign": "\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7",
"cedi sign": "\u585e\u5730\u7b26\u53f7",
"livre tournois sign": "\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7",
"spesmilo sign": "spesmilo\u7b26\u53f7",
"tenge sign": "\u575a\u6208\u7b26\u53f7",
"indian rupee sign": "\u5370\u5ea6\u5362\u6bd4",
"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9",
"nordic mark sign": "\u5317\u6b27\u9a6c\u514b",
"manat sign": "\u9a6c\u7eb3\u7279\u7b26\u53f7",
"ruble sign": "\u5362\u5e03\u7b26\u53f7",
"yen character": "\u65e5\u5143\u5b57\u6837",
"yuan character": "\u4eba\u6c11\u5e01\u5143\u5b57\u6837",
"yuan character, in hong kong and taiwan": "\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09",
"yen\/yuan character variant one": "\u5143\u5b57\u6837\uff08\u5927\u5199\uff09",
"Loading emoticons...": "\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7...",
"Could not load emoticons": "\u4e0d\u80fd\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7",
"People": "\u4eba\u7c7b",
"Animals and Nature": "\u52a8\u7269\u548c\u81ea\u7136",
"Food and Drink": "\u98df\u7269\u548c\u996e\u54c1",
"Activity": "\u6d3b\u52a8",
"Travel and Places": "\u65c5\u6e38\u548c\u5730\u70b9",
"Objects": "\u7269\u4ef6",
"Flags": "\u65d7\u5e1c",
"Characters": "\u5b57\u7b26",
"Characters (no spaces)": "\u5b57\u7b26(\u65e0\u7a7a\u683c)",
"{0} characters": "{0} \u4e2a\u5b57\u7b26",
"Error: Form submit field collision.": "\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002",
"Error: No form element found.": "\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002",
"Update": "\u66f4\u65b0",
"Color swatch": "\u989c\u8272\u6837\u672c",
"Turquoise": "\u9752\u7eff\u8272",
"Green": "\u7eff\u8272",
"Blue": "\u84dd\u8272",
"Purple": "\u7d2b\u8272",
"Navy Blue": "\u6d77\u519b\u84dd",
"Dark Turquoise": "\u6df1\u84dd\u7eff\u8272",
"Dark Green": "\u6df1\u7eff\u8272",
"Medium Blue": "\u4e2d\u84dd\u8272",
"Medium Purple": "\u4e2d\u7d2b\u8272",
"Midnight Blue": "\u6df1\u84dd\u8272",
"Yellow": "\u9ec4\u8272",
"Orange": "\u6a59\u8272",
"Red": "\u7ea2\u8272",
"Light Gray": "\u6d45\u7070\u8272",
"Gray": "\u7070\u8272",
"Dark Yellow": "\u6697\u9ec4\u8272",
"Dark Orange": "\u6df1\u6a59\u8272",
"Dark Red": "\u6df1\u7ea2\u8272",
"Medium Gray": "\u4e2d\u7070\u8272",
"Dark Gray": "\u6df1\u7070\u8272",
"Light Green": "\u6d45\u7eff\u8272",
"Light Yellow": "\u6d45\u9ec4\u8272",
"Light Red": "\u6d45\u7ea2\u8272",
"Light Purple": "\u6d45\u7d2b\u8272",
"Light Blue": "\u6d45\u84dd\u8272",
"Dark Purple": "\u6df1\u7d2b\u8272",
"Dark Blue": "\u6df1\u84dd\u8272",
"Black": "\u9ed1\u8272",
"White": "\u767d\u8272",
"Switch to or from fullscreen mode": "\u5207\u6362\u5168\u5c4f\u6a21\u5f0f",
"Open help dialog": "\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846",
"history": "\u5386\u53f2",
"styles": "\u6837\u5f0f",
"formatting": "\u683c\u5f0f\u5316",
"alignment": "\u5bf9\u9f50",
"indentation": "\u7f29\u8fdb",
"Font": "\u5b57\u4f53",
"Size": "\u5b57\u53f7",
"More...": "\u66f4\u591a...",
"Select...": "\u9009\u62e9...",
"Preferences": "\u9996\u9009\u9879",
"Yes": "\u662f",
"No": "\u5426",
"Keyboard Navigation": "\u952e\u76d8\u6307\u5f15",
"Version": "\u7248\u672c",
"Code view": "\u4ee3\u7801\u89c6\u56fe",
"Open popup menu for split buttons": "\u6253\u5f00\u5f39\u51fa\u5f0f\u83dc\u5355\uff0c\u7528\u4e8e\u62c6\u5206\u6309\u94ae",
"List Properties": "\u5217\u8868\u5c5e\u6027",
"List properties...": "\u6807\u9898\u5b57\u4f53\u5c5e\u6027",
"Start list at number": "\u4ee5\u6570\u5b57\u5f00\u59cb\u5217\u8868",
"Line height": "\u884c\u9ad8",
"comments": "\u5907\u6ce8",
"Format Painter": "\u683c\u5f0f\u5237",
"Insert\/edit iframe": "\u63d2\u5165\/\u7f16\u8f91\u6846\u67b6",
"Capitalization": "\u5927\u5199",
"lowercase": "\u5c0f\u5199",
"UPPERCASE": "\u5927\u5199",
"Title Case": "\u9996\u5b57\u6bcd\u5927\u5199",
"permanent pen": "\u8bb0\u53f7\u7b14",
"Permanent Pen Properties": "\u6c38\u4e45\u7b14\u5c5e\u6027",
"Permanent pen properties...": "\u6c38\u4e45\u7b14\u5c5e\u6027...",
"case change": "\u6848\u4f8b\u66f4\u6539",
"page embed": "\u9875\u9762\u5d4c\u5165",
"Advanced sort...": "\u9ad8\u7ea7\u6392\u5e8f...",
"Advanced Sort": "\u9ad8\u7ea7\u6392\u5e8f",
"Sort table by column ascending": "\u6309\u5217\u5347\u5e8f\u8868",
"Sort table by column descending": "\u6309\u5217\u964d\u5e8f\u8868",
"Sort": "\u6392\u5e8f",
"Order": "\u6392\u5e8f",
"Sort by": "\u6392\u5e8f\u65b9\u5f0f",
"Ascending": "\u5347\u5e8f",
"Descending": "\u964d\u5e8f",
"Column {0}": "\u5217{0}",
"Row {0}": "\u884c{0}",
"Spellcheck...": "\u62fc\u5199\u68c0\u67e5...",
"Misspelled word": "\u62fc\u5199\u9519\u8bef\u7684\u5355\u8bcd",
"Suggestions": "\u5efa\u8bae",
"Change": "\u66f4\u6539",
"Finding word suggestions": "\u67e5\u627e\u5355\u8bcd\u5efa\u8bae",
"Success": "\u6210\u529f",
"Repair": "\u4fee\u590d",
"Issue {0} of {1}": "\u5171\u8ba1{1}\u95ee\u9898{0}",
"Images must be marked as decorative or have an alternative text description": "\u56fe\u50cf\u5fc5\u987b\u6807\u8bb0\u4e3a\u88c5\u9970\u6027\u6216\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0",
"Images must have an alternative text description. Decorative images are not allowed.": "\u56fe\u50cf\u5fc5\u987b\u5177\u6709\u66ff\u4ee3\u6587\u672c\u63cf\u8ff0\u3002\u4e0d\u5141\u8bb8\u4f7f\u7528\u88c5\u9970\u56fe\u50cf\u3002",
"Or provide alternative text:": "\u6216\u63d0\u4f9b\u5907\u9009\u6587\u672c\uff1a",
"Make image decorative:": "\u4f7f\u56fe\u50cf\u88c5\u9970\uff1a",
"ID attribute must be unique": "ID \u5c5e\u6027\u5fc5\u987b\u662f\u552f\u4e00\u7684",
"Make ID unique": "\u4f7f ID \u72ec\u4e00\u65e0\u4e8c",
"Keep this ID and remove all others": "\u4fdd\u7559\u6b64 ID \u5e76\u5220\u9664\u6240\u6709\u5176\u4ed6",
"Remove this ID": "\u5220\u9664\u6b64 ID",
"Remove all IDs": "\u6e05\u9664\u5168\u90e8IDs",
"Checklist": "\u6e05\u5355",
"Anchor": "\u951a\u70b9",
"Special character": "\u7279\u6b8a\u7b26\u53f7",
"Code sample": "\u4ee3\u7801\u793a\u4f8b",
"Color": "\u989c\u8272",
"Document properties": "\u6587\u6863\u5c5e\u6027",
"Image description": "\u56fe\u7247\u63cf\u8ff0",
"Image": "\u56fe\u7247",
"Insert link": "\u63d2\u5165\u94fe\u63a5",
"Target": "\u6253\u5f00\u65b9\u5f0f",
"Link": "\u94fe\u63a5",
"Poster": "\u5c01\u9762",
"Media": "\u5a92\u4f53",
"Print": "\u6253\u5370",
"Prev": "\u4e0a\u4e00\u4e2a",
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
"Whole words": "\u5168\u5b57\u5339\u914d",
"Insert template": "\u63d2\u5165\u6a21\u677f"
});

View File

@ -1,419 +0,0 @@
tinymce.addI18n('zh_TW',{
"Redo": "\u91cd\u505a",
"Undo": "\u64a4\u92b7",
"Cut": "\u526a\u4e0b",
"Copy": "\u8907\u88fd",
"Paste": "\u8cbc\u4e0a",
"Select all": "\u5168\u9078",
"New document": "\u65b0\u6587\u4ef6",
"Ok": "\u78ba\u5b9a",
"Cancel": "\u53d6\u6d88",
"Visual aids": "\u5c0f\u5e6b\u624b",
"Bold": "\u7c97\u9ad4",
"Italic": "\u659c\u9ad4",
"Underline": "\u4e0b\u5283\u7dda",
"Strikethrough": "\u522a\u9664\u7dda",
"Superscript": "\u4e0a\u6a19",
"Subscript": "\u4e0b\u6a19",
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
"Align left": "\u5de6\u908a\u5c0d\u9f4a",
"Align center": "\u4e2d\u9593\u5c0d\u9f4a",
"Align right": "\u53f3\u908a\u5c0d\u9f4a",
"Justify": "\u5de6\u53f3\u5c0d\u9f4a",
"Bullet list": "\u9805\u76ee\u6e05\u55ae",
"Numbered list": "\u6578\u5b57\u6e05\u55ae",
"Decrease indent": "\u6e1b\u5c11\u7e2e\u6392",
"Increase indent": "\u589e\u52a0\u7e2e\u6392",
"Close": "\u95dc\u9589",
"Formats": "\u683c\u5f0f",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u5b58\u53d6\u526a\u8cbc\u7c3f\uff0c\u53ef\u4ee5\u4f7f\u7528\u5feb\u901f\u9375 Ctrl + X\/C\/V \u4ee3\u66ff\u526a\u4e0b\u3001\u8907\u88fd\u8207\u8cbc\u4e0a\u3002",
"Headers": "\u6a19\u984c",
"Header 1": "\u6a19\u984c 1",
"Header 2": "\u6a19\u984c 2",
"Header 3": "\u6a19\u984c 3",
"Header 4": "\u6a19\u984c 4",
"Header 5": "\u6a19\u984c 5",
"Header 6": "\u6a19\u984c 6",
"Headings": "\u6a19\u984c",
"Heading 1": "\u6a19\u984c1",
"Heading 2": "\u6a19\u984c2",
"Heading 3": "\u6a19\u984c3",
"Heading 4": "\u6a19\u984c4",
"Heading 5": "\u6a19\u984c5",
"Heading 6": "\u6a19\u984c6",
"Preformatted": "\u9810\u5148\u683c\u5f0f\u5316\u7684",
"Div": "Div",
"Pre": "Pre",
"Code": "\u4ee3\u78bc",
"Paragraph": "\u6bb5\u843d",
"Blockquote": "\u5f15\u6587\u5340\u584a",
"Inline": "\u5167\u806f",
"Blocks": "\u57fa\u584a",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u76ee\u524d\u5c07\u4ee5\u7d14\u6587\u5b57\u7684\u6a21\u5f0f\u8cbc\u4e0a\uff0c\u60a8\u53ef\u4ee5\u518d\u9ede\u9078\u4e00\u6b21\u53d6\u6d88\u3002",
"Fonts": "\u5b57\u578b",
"Font Sizes": "\u5b57\u578b\u5927\u5c0f",
"Class": "\u985e\u578b",
"Browse for an image": "\u5f9e\u5716\u7247\u4e2d\u700f\u89bd",
"OR": "\u6216",
"Drop an image here": "\u62d6\u66f3\u5716\u7247\u81f3\u6b64",
"Upload": "\u4e0a\u50b3",
"Block": "\u5340\u584a",
"Align": "\u5c0d\u9f4a",
"Default": "\u9810\u8a2d",
"Circle": "\u7a7a\u5fc3\u5713",
"Disc": "\u5be6\u5fc3\u5713",
"Square": "\u6b63\u65b9\u5f62",
"Lower Alpha": "\u5c0f\u5beb\u82f1\u6587\u5b57\u6bcd",
"Lower Greek": "\u5e0c\u81d8\u5b57\u6bcd",
"Lower Roman": "\u5c0f\u5beb\u7f85\u99ac\u6578\u5b57",
"Upper Alpha": "\u5927\u5beb\u82f1\u6587\u5b57\u6bcd",
"Upper Roman": "\u5927\u5beb\u7f85\u99ac\u6578\u5b57",
"Anchor...": "\u9328\u9ede...",
"Name": "\u540d\u7a31",
"Id": "Id",
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "Id\u61c9\u4ee5\u5b57\u6bcd\u958b\u982d\uff0c\u5f8c\u9762\u63a5\u8457\u5b57\u6bcd\uff0c\u6578\u5b57\uff0c\u7834\u6298\u865f\uff0c\u9ede\u6578\uff0c\u5192\u865f\u6216\u4e0b\u5283\u7dda\u3002",
"You have unsaved changes are you sure you want to navigate away?": "\u7de8\u8f2f\u5c1a\u672a\u88ab\u5132\u5b58\uff0c\u4f60\u78ba\u5b9a\u8981\u96e2\u958b\uff1f",
"Restore last draft": "\u8f09\u5165\u4e0a\u4e00\u6b21\u7de8\u8f2f\u7684\u8349\u7a3f",
"Special character...": "\u7279\u6b8a\u5b57\u5143......",
"Source code": "\u539f\u59cb\u78bc",
"Insert\/Edit code sample": "\u63d2\u5165\/\u7de8\u8f2f \u7a0b\u5f0f\u78bc\u7bc4\u4f8b",
"Language": "\u8a9e\u8a00",
"Code sample...": "\u7a0b\u5f0f\u78bc\u7bc4\u4f8b...",
"Color Picker": "\u9078\u8272\u5668",
"R": "\u7d05",
"G": "\u7da0",
"B": "\u85cd",
"Left to right": "\u5f9e\u5de6\u5230\u53f3",
"Right to left": "\u5f9e\u53f3\u5230\u5de6",
"Emoticons...": "\u8868\u60c5\u7b26\u865f\u2026",
"Metadata and Document Properties": "\u5f8c\u8a2d\u8cc7\u6599\u8207\u6587\u4ef6\u5c6c\u6027",
"Title": "\u6a19\u984c",
"Keywords": "\u95dc\u9375\u5b57",
"Description": "\u63cf\u8ff0",
"Robots": "\u6a5f\u5668\u4eba",
"Author": "\u4f5c\u8005",
"Encoding": "\u7de8\u78bc",
"Fullscreen": "\u5168\u87a2\u5e55",
"Action": "\u52d5\u4f5c",
"Shortcut": "\u5feb\u901f\u9375",
"Help": "\u5e6b\u52a9",
"Address": "\u5730\u5740",
"Focus to menubar": "\u8df3\u81f3\u9078\u55ae\u5217",
"Focus to toolbar": "\u8df3\u81f3\u5de5\u5177\u5217",
"Focus to element path": "\u8df3\u81f3HTML\u5143\u7d20\u5217",
"Focus to contextual toolbar": "\u8df3\u81f3\u5feb\u6377\u9078\u55ae",
"Insert link (if link plugin activated)": "\u65b0\u589e\u6377\u5f91 (\u6377\u5f91\u5916\u639b\u555f\u7528\u6642)",
"Save (if save plugin activated)": "\u5132\u5b58 (\u5132\u5b58\u5916\u639b\u555f\u7528\u6642)",
"Find (if searchreplace plugin activated)": "\u5c0b\u627e (\u5c0b\u627e\u53d6\u4ee3\u5916\u639b\u555f\u7528\u6642)",
"Plugins installed ({0}):": "({0}) \u500b\u5916\u639b\u5df2\u5b89\u88dd\uff1a",
"Premium plugins:": "\u52a0\u503c\u5916\u639b\uff1a",
"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
"You are using {0}": "\u60a8\u6b63\u5728\u4f7f\u7528 {0}",
"Plugins": "\u5916\u639b",
"Handy Shortcuts": "\u5feb\u901f\u9375",
"Horizontal line": "\u6c34\u5e73\u7dda",
"Insert\/edit image": "\u63d2\u5165\/\u7de8\u8f2f \u5716\u7247",
"Image description": "\u5716\u7247\u63cf\u8ff0",
"Source": "\u5716\u7247\u7db2\u5740",
"Dimensions": "\u5c3a\u5bf8",
"Constrain proportions": "\u7b49\u6bd4\u4f8b\u7e2e\u653e",
"General": "\u4e00\u822c",
"Advanced": "\u9032\u968e",
"Style": "\u6a23\u5f0f",
"Vertical space": "\u9ad8\u5ea6",
"Horizontal space": "\u5bec\u5ea6",
"Border": "\u908a\u6846",
"Insert image": "\u63d2\u5165\u5716\u7247",
"Image...": "\u5716\u7247......",
"Image list": "\u5716\u7247\u6e05\u55ae",
"Rotate counterclockwise": "\u9006\u6642\u91dd\u65cb\u8f49",
"Rotate clockwise": "\u9806\u6642\u91dd\u65cb\u8f49",
"Flip vertically": "\u5782\u76f4\u7ffb\u8f49",
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f49",
"Edit image": "\u7de8\u8f2f\u5716\u7247",
"Image options": "\u5716\u7247\u9078\u9805",
"Zoom in": "\u653e\u5927",
"Zoom out": "\u7e2e\u5c0f",
"Crop": "\u88c1\u526a",
"Resize": "\u8abf\u6574\u5927\u5c0f",
"Orientation": "\u65b9\u5411",
"Brightness": "\u4eae\u5ea6",
"Sharpen": "\u92b3\u5316",
"Contrast": "\u5c0d\u6bd4",
"Color levels": "\u984f\u8272\u5c64\u6b21",
"Gamma": "\u4f3d\u99ac\u503c",
"Invert": "\u53cd\u8f49",
"Apply": "\u61c9\u7528",
"Back": "\u5f8c\u9000",
"Insert date\/time": "\u63d2\u5165 \u65e5\u671f\/\u6642\u9593",
"Date\/time": "\u65e5\u671f\/\u6642\u9593",
"Insert\/Edit Link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50",
"Insert\/edit link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50",
"Text to display": "\u986f\u793a\u6587\u5b57",
"Url": "\u7db2\u5740",
"Open link in...": "\u958b\u555f\u9023\u7d50\u65bc...",
"Current window": "\u76ee\u524d\u8996\u7a97",
"None": "\u7121",
"New window": "\u53e6\u958b\u8996\u7a97",
"Remove link": "\u79fb\u9664\u9023\u7d50",
"Anchors": "\u52a0\u5165\u9328\u9ede",
"Link...": "\u9023\u7d50...",
"Paste or type a link": "\u8cbc\u4e0a\u6216\u8f38\u5165\u9023\u7d50",
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u70ba\u96fb\u5b50\u90f5\u4ef6\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7db4\u55ce\uff1f",
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u5c6c\u65bc\u5916\u90e8\u93c8\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7db4\u55ce\uff1f",
"Link list": "\u9023\u7d50\u6e05\u55ae",
"Insert video": "\u63d2\u5165\u5f71\u97f3",
"Insert\/edit video": "\u63d2\u4ef6\/\u7de8\u8f2f \u5f71\u97f3",
"Insert\/edit media": "\u63d2\u5165\/\u7de8\u8f2f \u5a92\u9ad4",
"Alternative source": "\u66ff\u4ee3\u5f71\u97f3",
"Alternative source URL": "\u66ff\u4ee3\u4f86\u6e90URL",
"Media poster (Image URL)": "\u5a92\u9ad4\u6d77\u5831\uff08\u5f71\u50cfImage URL\uff09",
"Paste your embed code below:": "\u8acb\u5c07\u60a8\u7684\u5d4c\u5165\u5f0f\u7a0b\u5f0f\u78bc\u8cbc\u5728\u4e0b\u9762:",
"Embed": "\u5d4c\u5165\u78bc",
"Media...": "\u5a92\u9ad4...",
"Nonbreaking space": "\u4e0d\u5206\u884c\u7684\u7a7a\u683c",
"Page break": "\u5206\u9801",
"Paste as text": "\u4ee5\u7d14\u6587\u5b57\u8cbc\u4e0a",
"Preview": "\u9810\u89bd",
"Print...": "\u5217\u5370...",
"Save": "\u5132\u5b58",
"Find": "\u641c\u5c0b",
"Replace with": "\u66f4\u63db",
"Replace": "\u66ff\u63db",
"Replace all": "\u66ff\u63db\u5168\u90e8",
"Previous": "\u4e0a\u4e00\u500b",
"Next": "\u4e0b\u4e00\u500b",
"Find and replace...": "\u5c0b\u627e\u53ca\u53d6\u4ee3...",
"Could not find the specified string.": "\u7121\u6cd5\u67e5\u8a62\u5230\u6b64\u7279\u5b9a\u5b57\u4e32",
"Match case": "\u76f8\u5339\u914d\u6848\u4ef6",
"Find whole words only": "\u50c5\u627e\u51fa\u5b8c\u6574\u5b57\u532f",
"Spell check": "\u62fc\u5beb\u6aa2\u67e5",
"Ignore": "\u5ffd\u7565",
"Ignore all": "\u5ffd\u7565\u6240\u6709",
"Finish": "\u5b8c\u6210",
"Add to Dictionary": "\u52a0\u5165\u5b57\u5178\u4e2d",
"Insert table": "\u63d2\u5165\u8868\u683c",
"Table properties": "\u8868\u683c\u5c6c\u6027",
"Delete table": "\u522a\u9664\u8868\u683c",
"Cell": "\u5132\u5b58\u683c",
"Row": "\u5217",
"Column": "\u884c",
"Cell properties": "\u5132\u5b58\u683c\u5c6c\u6027",
"Merge cells": "\u5408\u4f75\u5132\u5b58\u683c",
"Split cell": "\u5206\u5272\u5132\u5b58\u683c",
"Insert row before": "\u63d2\u5165\u5217\u5728...\u4e4b\u524d",
"Insert row after": "\u63d2\u5165\u5217\u5728...\u4e4b\u5f8c",
"Delete row": "\u522a\u9664\u5217",
"Row properties": "\u5217\u5c6c\u6027",
"Cut row": "\u526a\u4e0b\u5217",
"Copy row": "\u8907\u88fd\u5217",
"Paste row before": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u524d",
"Paste row after": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u5f8c",
"Insert column before": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u524d",
"Insert column after": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u5f8c",
"Delete column": "\u522a\u9664\u884c",
"Cols": "\u6b04\u4f4d\u6bb5",
"Rows": "\u5217",
"Width": "\u5bec\u5ea6",
"Height": "\u9ad8\u5ea6",
"Cell spacing": "\u5132\u5b58\u683c\u5f97\u9593\u8ddd",
"Cell padding": "\u5132\u5b58\u683c\u7684\u908a\u8ddd",
"Show caption": "\u986f\u793a\u6a19\u984c",
"Left": "\u5de6\u908a",
"Center": "\u4e2d\u9593",
"Right": "\u53f3\u908a",
"Cell type": "\u5132\u5b58\u683c\u7684\u985e\u578b",
"Scope": "\u7bc4\u570d",
"Alignment": "\u5c0d\u9f4a",
"H Align": "\u6c34\u5e73\u4f4d\u7f6e",
"V Align": "\u5782\u76f4\u4f4d\u7f6e",
"Top": "\u7f6e\u9802",
"Middle": "\u7f6e\u4e2d",
"Bottom": "\u7f6e\u5e95",
"Header cell": "\u6a19\u982d\u5132\u5b58\u683c",
"Row group": "\u5217\u7fa4\u7d44",
"Column group": "\u6b04\u4f4d\u7fa4\u7d44",
"Row type": "\u884c\u7684\u985e\u578b",
"Header": "\u6a19\u982d",
"Body": "\u4e3b\u9ad4",
"Footer": "\u9801\u5c3e",
"Border color": "\u908a\u6846\u984f\u8272",
"Insert template...": "\u63d2\u5165\u6a23\u7248...",
"Templates": "\u6a23\u7248",
"Template": "\u6a23\u677f",
"Text color": "\u6587\u5b57\u984f\u8272",
"Background color": "\u80cc\u666f\u984f\u8272",
"Custom...": "\u81ea\u8a02",
"Custom color": "\u81ea\u8a02\u984f\u8272",
"No color": "No color",
"Remove color": "\u79fb\u9664\u984f\u8272",
"Table of Contents": "\u76ee\u9304",
"Show blocks": "\u986f\u793a\u5340\u584a\u8cc7\u8a0a",
"Show invisible characters": "\u986f\u793a\u96b1\u85cf\u5b57\u5143",
"Word count": "\u8a08\u7b97\u5b57\u6578",
"Count": "\u8a08\u7b97",
"Document": "\u6587\u4ef6",
"Selection": "\u9078\u9805",
"Words": "\u5b57\u6578",
"Words: {0}": "\u5b57\u6578\uff1a{0}",
"{0} words": "{0} \u5b57\u5143",
"File": "\u6a94\u6848",
"Edit": "\u7de8\u8f2f",
"Insert": "\u63d2\u5165",
"View": "\u6aa2\u8996",
"Format": "\u683c\u5f0f",
"Table": "\u8868\u683c",
"Tools": "\u5de5\u5177",
"Powered by {0}": "\u7531 {0} \u63d0\u4f9b",
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u8c50\u5bcc\u7684\u6587\u672c\u5340\u57df\u3002\u6309ALT-F9\u524d\u5f80\u4e3b\u9078\u55ae\u3002\u6309ALT-F10\u547c\u53eb\u5de5\u5177\u6b04\u3002\u6309ALT-0\u5c0b\u6c42\u5e6b\u52a9",
"Image title": "\u5716\u7247\u6a19\u984c",
"Border width": "\u6846\u7dda\u5bec\u5ea6",
"Border style": "\u6846\u7dda\u6a23\u5f0f",
"Error": "\u932f\u8aa4",
"Warn": "\u8b66\u544a",
"Valid": "\u6709\u6548",
"To open the popup, press Shift+Enter": "\u8981\u958b\u555f\u5f48\u51fa\u8996\u7a97\uff0c\u8acb\u6309Shift+Enter",
"Rich Text Area. Press ALT-0 for help.": "\u5bcc\u6587\u672c\u5340\u57df\u3002\u8acb\u6309ALT-0\u5c0b\u6c42\u5354\u52a9\u3002",
"System Font": "\u7cfb\u7d71\u5b57\u578b",
"Failed to upload image: {0}": "\u7121\u6cd5\u4e0a\u50b3\u5f71\u50cf\uff1a{0}",
"Failed to load plugin: {0} from url {1}": "\u7121\u6cd5\u4e0a\u50b3\u63d2\u4ef6\uff1a{0}\u81eaurl{1}",
"Failed to load plugin url: {0}": "\u7121\u6cd5\u4e0a\u50b3\u63d2\u4ef6\uff1a{0}",
"Failed to initialize plugin: {0}": "\u7121\u6cd5\u555f\u52d5\u63d2\u4ef6\uff1a{0}",
"example": "\u7bc4\u4f8b",
"Search": "\u641c\u7d22",
"All": "\u5168\u90e8",
"Currency": "\u8ca8\u5e63",
"Text": "\u6587\u672c",
"Quotations": "\u5f15\u7528",
"Mathematical": "\u6578\u5b78",
"Extended Latin": "\u62c9\u4e01\u5b57\u6bcd\u64f4\u5145",
"Symbols": "\u7b26\u865f",
"Arrows": "\u7bad\u982d",
"User Defined": "\u4f7f\u7528\u8005\u5df2\u5b9a\u7fa9",
"dollar sign": "\u7f8e\u5143\u7b26\u865f",
"currency sign": "\u8ca8\u5e63\u7b26\u865f",
"euro-currency sign": "\u6b50\u5143\u7b26\u865f",
"colon sign": "\u79d1\u6717\u7b26\u865f",
"cruzeiro sign": "\u514b\u9b6f\u8cfd\u7f85\u7b26\u865f",
"french franc sign": "\u6cd5\u6717\u7b26\u865f",
"lira sign": "\u91cc\u62c9\u7b26\u865f",
"mill sign": "\u6587\u7b26\u865f",
"naira sign": "\u5948\u62c9\u7b26\u865f",
"peseta sign": "\u6bd4\u585e\u5854\u7b26\u865f",
"rupee sign": "\u76e7\u6bd4\u7b26\u865f",
"won sign": "\u97d3\u571c\u7b26\u865f",
"new sheqel sign": "\u65b0\u8b1d\u514b\u723e\u7b26\u865f",
"dong sign": "\u8d8a\u5357\u76fe\u7b26\u865f",
"kip sign": "\u8001\u64be\u5e63\u7b26\u865f",
"tugrik sign": "\u8499\u53e4\u5e63\u7b26\u865f",
"drachma sign": "\u5fb7\u514b\u62c9\u99ac\u7b26\u865f",
"german penny symbol": "\u5fb7\u570b\u5206\u7b26\u865f",
"peso sign": "\u62ab\u7d22\u7b26\u865f",
"guarani sign": "\u5df4\u62c9\u572d\u5e63\u7b26\u865f",
"austral sign": "\u963f\u6839\u5ef7\u5e63\u7b26\u865f",
"hryvnia sign": "\u70cf\u514b\u862d\u5e63\u7b26\u865f",
"cedi sign": "\u8fe6\u7d0d\u5e63\u7b26\u865f",
"livre tournois sign": "\u91cc\u5f17\u723e\u7b26\u865f",
"spesmilo sign": "\u570b\u969b\u5e63\u7b26\u865f",
"tenge sign": "\u54c8\u85a9\u514b\u5e63\u7b26\u865f",
"indian rupee sign": "\u5370\u5ea6\u76e7\u6bd4\u7b26\u865f",
"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9\u7b26\u865f",
"nordic mark sign": "\u5317\u6b50\u99ac\u514b\u7b26\u865f",
"manat sign": "\u4e9e\u585e\u62dc\u7136\u5e63\u7b26\u865f",
"ruble sign": "\u76e7\u5e03\u7b26\u865f",
"yen character": "\u65e5\u5713\u7b26\u865f",
"yuan character": "\u4eba\u6c11\u5e63\u7b26\u865f",
"yuan character, in hong kong and taiwan": "\u6e2f\u5143\u8207\u53f0\u5e63\u7b26\u865f",
"yen\/yuan character variant one": "\u65e5\u5713\/\u4eba\u6c11\u5e63\u7b26\u865f\u8b8a\u5316\u578b",
"Loading emoticons...": "\u8f09\u5165\u8868\u60c5\u7b26\u865f\u2026",
"Could not load emoticons": "\u7121\u6cd5\u8f09\u5165\u8868\u60c5\u7b26\u865f",
"People": "\u4eba",
"Animals and Nature": "\u52d5\u7269\u8207\u81ea\u7136",
"Food and Drink": "\u98f2\u98df",
"Activity": "\u6d3b\u52d5",
"Travel and Places": "\u65c5\u884c\u8207\u5730\u9ede",
"Objects": "\u7269\u4ef6",
"Flags": "\u65d7\u6a19",
"Characters": "\u5b57\u5143",
"Characters (no spaces)": "\u5b57\u5143\uff08\u7121\u7a7a\u683c\uff09",
"{0} characters": "{0}\u5b57\u5143",
"Error: Form submit field collision.": "\u932f\u8aa4\uff1a\u8868\u683c\u905e\u4ea4\u6b04\u4f4d\u885d\u7a81\u3002",
"Error: No form element found.": "\u932f\u8aa4\uff1a\u627e\u4e0d\u5230\u8868\u683c\u5143\u7d20\u3002",
"Update": "\u66f4\u65b0",
"Color swatch": "\u8272\u5f69\u6a23\u672c",
"Turquoise": "\u571f\u8033\u5176\u85cd",
"Green": "\u7da0\u8272",
"Blue": "\u85cd\u8272",
"Purple": "\u7d2b\u8272",
"Navy Blue": "\u6df1\u85cd\u8272",
"Dark Turquoise": "\u6df1\u571f\u8033\u5176\u85cd",
"Dark Green": "\u6df1\u7da0\u8272",
"Medium Blue": "\u4e2d\u85cd\u8272",
"Medium Purple": "\u4e2d\u7d2b\u8272",
"Midnight Blue": "\u9ed1\u85cd\u8272",
"Yellow": "\u9ec3\u8272",
"Orange": "\u6a59\u8272",
"Red": "\u7d05\u8272",
"Light Gray": "\u6dfa\u7070\u8272",
"Gray": "\u7070\u8272",
"Dark Yellow": "\u6df1\u9ec3\u8272",
"Dark Orange": "\u6df1\u6a59\u8272",
"Dark Red": "\u6697\u7d05\u8272",
"Medium Gray": "\u4e2d\u7070\u8272",
"Dark Gray": "\u6df1\u7070\u8272",
"Light Green": "\u6de1\u7da0\u8272",
"Light Yellow": "\u6dfa\u9ec3\u8272",
"Light Red": "\u6dfa\u7d05\u8272",
"Light Purple": "\u6dfa\u7d2b\u8272",
"Light Blue": "\u6dfa\u85cd\u8272",
"Dark Purple": "\u6df1\u7d2b\u8272",
"Dark Blue": "\u6df1\u85cd\u8272",
"Black": "\u9ed1\u8272",
"White": "\u767d\u8272",
"Switch to or from fullscreen mode": "\u8f49\u63db\u81ea\/\u81f3\u5168\u87a2\u5e55\u6a21\u5f0f",
"Open help dialog": "\u958b\u555f\u5354\u52a9\u5c0d\u8a71",
"history": "\u6b77\u53f2",
"styles": "\u6a23\u5f0f",
"formatting": "\u683c\u5f0f",
"alignment": "\u5c0d\u9f4a",
"indentation": "\u7e2e\u6392",
"permanent pen": "\u6c38\u4e45\u6027\u7b46",
"comments": "\u8a3b\u89e3",
"Format Painter": "\u8907\u88fd\u683c\u5f0f",
"Insert\/edit iframe": "\u63d2\u5165\/\u7de8\u8f2fiframe",
"Capitalization": "\u5927\u5beb",
"lowercase": "\u5c0f\u5beb",
"UPPERCASE": "\u5927\u5beb",
"Title Case": "\u5b57\u9996\u5927\u5beb",
"Permanent Pen Properties": "\u6c38\u4e45\u6a19\u8a18\u5c6c\u6027",
"Permanent pen properties...": "\u6c38\u4e45\u6a19\u8a18\u5c6c\u6027......",
"Font": "\u5b57\u578b",
"Size": "\u5b57\u5f62\u5927\u5c0f",
"More...": "\u66f4\u591a\u8cc7\u8a0a......",
"Spellcheck Language": "\u62fc\u5beb\u8a9e\u8a00",
"Select...": "\u9078\u64c7......",
"Preferences": "\u9996\u9078\u9805",
"Yes": "\u662f",
"No": "\u5426",
"Keyboard Navigation": "\u9375\u76e4\u5c0e\u822a",
"Version": "\u7248\u672c",
"Anchor": "\u52a0\u5165\u9328\u9ede",
"Special character": "\u7279\u6b8a\u5b57\u5143",
"Code sample": "\u7a0b\u5f0f\u78bc\u7bc4\u4f8b",
"Color": "\u984f\u8272",
"Emoticons": "\u8868\u60c5",
"Document properties": "\u6587\u4ef6\u7684\u5c6c\u6027",
"Image": "\u5716\u7247",
"Insert link": "\u63d2\u5165\u9023\u7d50",
"Target": "\u958b\u555f\u65b9\u5f0f",
"Link": "\u9023\u7d50",
"Poster": "\u9810\u89bd\u5716\u7247",
"Media": "\u5a92\u9ad4",
"Print": "\u5217\u5370",
"Prev": "\u4e0a\u4e00\u500b",
"Find and replace": "\u5c0b\u627e\u53ca\u53d6\u4ee3",
"Whole words": "\u6574\u500b\u55ae\u5b57",
"Spellcheck": "\u62fc\u5b57\u6aa2\u67e5",
"Caption": "\u8868\u683c\u6a19\u984c",
"Insert template": "\u63d2\u5165\u6a23\u7248"
});

View File

@ -1,72 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body {
background-color: #2f3742;
color: #dfe0e4;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
line-height: 1.4;
margin: 1rem;
}
a {
color: #4099ff;
}
table {
border-collapse: collapse;
}
/* Apply a default padding if legacy cellpadding attribute is missing */
table:not([cellpadding]) th,
table:not([cellpadding]) td {
padding: 0.4rem;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-width"]) th,
table[border]:not([border="0"]):not([style*="border-width"]) td {
border-width: 1px;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-style"]) th,
table[border]:not([border="0"]):not([style*="border-style"]) td {
border-style: solid;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-color"]) th,
table[border]:not([border="0"]):not([style*="border-color"]) td {
border-color: #6d737b;
}
figure {
display: table;
margin: 1rem auto;
}
figure figcaption {
color: #8a8f97;
display: block;
margin-top: 0.25rem;
text-align: center;
}
hr {
border-color: #6d737b;
border-style: solid;
border-width: 1px 0 0 0;
}
code {
background-color: #6d737b;
border-radius: 3px;
padding: 0.1rem 0.2rem;
}
.mce-content-body:not([dir=rtl]) blockquote {
border-left: 2px solid #6d737b;
margin-left: 1.5rem;
padding-left: 1rem;
}
.mce-content-body[dir=rtl] blockquote {
border-right: 2px solid #6d737b;
margin-right: 1.5rem;
padding-right: 1rem;
}

View File

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}

View File

@ -1,67 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
line-height: 1.4;
margin: 1rem;
}
table {
border-collapse: collapse;
}
/* Apply a default padding if legacy cellpadding attribute is missing */
table:not([cellpadding]) th,
table:not([cellpadding]) td {
padding: 0.4rem;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-width"]) th,
table[border]:not([border="0"]):not([style*="border-width"]) td {
border-width: 1px;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-style"]) th,
table[border]:not([border="0"]):not([style*="border-style"]) td {
border-style: solid;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-color"]) th,
table[border]:not([border="0"]):not([style*="border-color"]) td {
border-color: #ccc;
}
figure {
display: table;
margin: 1rem auto;
}
figure figcaption {
color: #999;
display: block;
margin-top: 0.25rem;
text-align: center;
}
hr {
border-color: #ccc;
border-style: solid;
border-width: 1px 0 0 0;
}
code {
background-color: #e8e8e8;
border-radius: 3px;
padding: 0.1rem 0.2rem;
}
.mce-content-body:not([dir=rtl]) blockquote {
border-left: 2px solid #ccc;
margin-left: 1.5rem;
padding-left: 1rem;
}
.mce-content-body[dir=rtl] blockquote {
border-right: 2px solid #ccc;
margin-right: 1.5rem;
padding-right: 1rem;
}

View File

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

View File

@ -1,72 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
@media screen {
html {
background: #f4f4f4;
min-height: 100%;
}
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
}
@media screen {
body {
background-color: #fff;
box-shadow: 0 0 4px rgba(0, 0, 0, 0.15);
box-sizing: border-box;
margin: 1rem auto 0;
max-width: 820px;
min-height: calc(100vh - 1rem);
padding: 4rem 6rem 6rem 6rem;
}
}
table {
border-collapse: collapse;
}
/* Apply a default padding if legacy cellpadding attribute is missing */
table:not([cellpadding]) th,
table:not([cellpadding]) td {
padding: 0.4rem;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-width"]) th,
table[border]:not([border="0"]):not([style*="border-width"]) td {
border-width: 1px;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-style"]) th,
table[border]:not([border="0"]):not([style*="border-style"]) td {
border-style: solid;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-color"]) th,
table[border]:not([border="0"]):not([style*="border-color"]) td {
border-color: #ccc;
}
figure figcaption {
color: #999;
margin-top: 0.25rem;
text-align: center;
}
hr {
border-color: #ccc;
border-style: solid;
border-width: 1px 0 0 0;
}
.mce-content-body:not([dir=rtl]) blockquote {
border-left: 2px solid #ccc;
margin-left: 1.5rem;
padding-left: 1rem;
}
.mce-content-body[dir=rtl] blockquote {
border-right: 2px solid #ccc;
margin-right: 1.5rem;
padding-right: 1rem;
}

View File

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

View File

@ -1,68 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
line-height: 1.4;
margin: 1rem auto;
max-width: 900px;
}
table {
border-collapse: collapse;
}
/* Apply a default padding if legacy cellpadding attribute is missing */
table:not([cellpadding]) th,
table:not([cellpadding]) td {
padding: 0.4rem;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-width"]) th,
table[border]:not([border="0"]):not([style*="border-width"]) td {
border-width: 1px;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-style"]) th,
table[border]:not([border="0"]):not([style*="border-style"]) td {
border-style: solid;
}
/* Set default table styles if a table has a positive border attribute
and no inline css */
table[border]:not([border="0"]):not([style*="border-color"]) th,
table[border]:not([border="0"]):not([style*="border-color"]) td {
border-color: #ccc;
}
figure {
display: table;
margin: 1rem auto;
}
figure figcaption {
color: #999;
display: block;
margin-top: 0.25rem;
text-align: center;
}
hr {
border-color: #ccc;
border-style: solid;
border-width: 1px 0 0 0;
}
code {
background-color: #e8e8e8;
border-radius: 3px;
padding: 0.1rem 0.2rem;
}
.mce-content-body:not([dir=rtl]) blockquote {
border-left: 2px solid #ccc;
margin-left: 1.5rem;
padding-left: 1rem;
}
.mce-content-body[dir=rtl] blockquote {
border-right: 2px solid #ccc;
margin-right: 1.5rem;
padding-right: 1rem;
}

View File

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}

View File

@ -1,714 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.mce-content-body .mce-item-anchor {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
cursor: default;
display: inline-block;
height: 12px !important;
padding: 0 2px;
-webkit-user-modify: read-only;
-moz-user-modify: read-only;
-webkit-user-select: all;
-moz-user-select: all;
-ms-user-select: all;
user-select: all;
width: 8px !important;
}
.mce-content-body .mce-item-anchor[data-mce-selected] {
outline-offset: 1px;
}
.tox-comments-visible .tox-comment {
background-color: #fff0b7;
}
.tox-comments-visible .tox-comment--active {
background-color: #ffe168;
}
.tox-checklist > li:not(.tox-checklist--hidden) {
list-style: none;
margin: 0.25em 0;
}
.tox-checklist > li:not(.tox-checklist--hidden)::before {
content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
cursor: pointer;
height: 1em;
margin-left: -1.5em;
margin-top: 0.125em;
position: absolute;
width: 1em;
}
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
}
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
margin-left: 0;
margin-right: -1.5em;
}
/* stylelint-disable */
/* http://prismjs.com/ */
/**
* Dracula Theme originally by Zeno Rocha [@zenorocha]
* https://draculatheme.com/
*
* Ported for PrismJS by Albert Vallverdu [@byverdu]
*/
code[class*="language-"],
pre[class*="language-"] {
color: #f8f8f2;
background: none;
text-shadow: 0 1px rgba(0, 0, 0, 0.3);
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
border-radius: 0.3em;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #282a36;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #6272a4;
}
.token.punctuation {
color: #f8f8f2;
}
.namespace {
opacity: 0.7;
}
.token.property,
.token.tag,
.token.constant,
.token.symbol,
.token.deleted {
color: #ff79c6;
}
.token.boolean,
.token.number {
color: #bd93f9;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #50fa7b;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string,
.token.variable {
color: #f8f8f2;
}
.token.atrule,
.token.attr-value,
.token.function,
.token.class-name {
color: #f1fa8c;
}
.token.keyword {
color: #8be9fd;
}
.token.regex,
.token.important {
color: #ffb86c;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
/* stylelint-enable */
.mce-content-body {
overflow-wrap: break-word;
word-wrap: break-word;
}
.mce-content-body .mce-visual-caret {
background-color: black;
background-color: currentColor;
position: absolute;
}
.mce-content-body .mce-visual-caret-hidden {
display: none;
}
.mce-content-body *[data-mce-caret] {
left: -1000px;
margin: 0;
padding: 0;
position: absolute;
right: auto;
top: 0;
}
.mce-content-body .mce-offscreen-selection {
left: -2000000px;
max-width: 1000000px;
position: absolute;
}
.mce-content-body *[contentEditable=false] {
cursor: default;
}
.mce-content-body *[contentEditable=true] {
cursor: text;
}
.tox-cursor-format-painter {
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
}
.mce-content-body figure.align-left {
float: left;
}
.mce-content-body figure.align-right {
float: right;
}
.mce-content-body figure.image.align-center {
display: table;
margin-left: auto;
margin-right: auto;
}
.mce-preview-object {
border: 1px solid gray;
display: inline-block;
line-height: 0;
margin: 0 2px 0 2px;
position: relative;
}
.mce-preview-object .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-preview-object[data-mce-selected="2"] .mce-shim {
display: none;
}
.mce-object {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
border: 1px dashed #aaa;
}
.mce-pagebreak {
border: 1px dashed #aaa;
cursor: default;
display: block;
height: 5px;
margin-top: 15px;
page-break-before: always;
width: 100%;
}
@media print {
.mce-pagebreak {
border: 0;
}
}
.tiny-pageembed .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.tiny-pageembed[data-mce-selected="2"] .mce-shim {
display: none;
}
.tiny-pageembed {
display: inline-block;
position: relative;
}
.tiny-pageembed--21by9,
.tiny-pageembed--16by9,
.tiny-pageembed--4by3,
.tiny-pageembed--1by1 {
display: block;
overflow: hidden;
padding: 0;
position: relative;
width: 100%;
}
.tiny-pageembed--21by9 {
padding-top: 42.857143%;
}
.tiny-pageembed--16by9 {
padding-top: 56.25%;
}
.tiny-pageembed--4by3 {
padding-top: 75%;
}
.tiny-pageembed--1by1 {
padding-top: 100%;
}
.tiny-pageembed--21by9 iframe,
.tiny-pageembed--16by9 iframe,
.tiny-pageembed--4by3 iframe,
.tiny-pageembed--1by1 iframe {
border: 0;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-content-body[data-mce-placeholder] {
position: relative;
}
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
color: rgba(34, 47, 62, 0.7);
content: attr(data-mce-placeholder);
position: absolute;
}
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
left: 1px;
}
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
right: 1px;
}
.mce-content-body div.mce-resizehandle {
background-color: #4099ff;
border-color: #4099ff;
border-style: solid;
border-width: 1px;
box-sizing: border-box;
height: 10px;
position: absolute;
width: 10px;
z-index: 1298;
}
.mce-content-body div.mce-resizehandle:hover {
background-color: #4099ff;
}
.mce-content-body div.mce-resizehandle:nth-of-type(1) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(2) {
cursor: nesw-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(3) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(4) {
cursor: nesw-resize;
}
.mce-content-body .mce-resize-backdrop {
z-index: 10000;
}
.mce-content-body .mce-clonedresizable {
cursor: default;
opacity: 0.5;
outline: 1px dashed black;
position: absolute;
z-index: 10001;
}
.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
border: 0;
}
.mce-content-body .mce-resize-helper {
background: #555;
background: rgba(0, 0, 0, 0.75);
border: 1px;
border-radius: 3px;
color: white;
display: none;
font-family: sans-serif;
font-size: 12px;
line-height: 14px;
margin: 5px 10px;
padding: 5px;
position: absolute;
white-space: nowrap;
z-index: 10002;
}
.tox-rtc-user-selection {
position: relative;
}
.tox-rtc-user-cursor {
bottom: 0;
cursor: default;
position: absolute;
top: 0;
width: 2px;
}
.tox-rtc-user-cursor::before {
background-color: inherit;
border-radius: 50%;
content: '';
display: block;
height: 8px;
position: absolute;
right: -3px;
top: -3px;
width: 8px;
}
.tox-rtc-user-cursor:hover::after {
background-color: inherit;
border-radius: 100px;
box-sizing: border-box;
color: #fff;
content: attr(data-user);
display: block;
font-size: 12px;
font-weight: bold;
left: -5px;
min-height: 8px;
min-width: 8px;
padding: 0 12px;
position: absolute;
top: -11px;
white-space: nowrap;
z-index: 1000;
}
.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
background-color: #2dc26b;
}
.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
background-color: #e03e2d;
}
.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
background-color: #f1c40f;
}
.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
background-color: #3598db;
}
.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
background-color: #b96ad9;
}
.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
background-color: #e67e23;
}
.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
background-color: #aaa69d;
}
.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
background-color: #f368e0;
}
.tox-rtc-remote-image {
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
border: 1px solid #ccc;
min-height: 240px;
min-width: 320px;
}
.mce-match-marker {
background: #aaa;
color: #fff;
}
.mce-match-marker-selected {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::-moz-selection {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::selection {
background: #39f;
color: #fff;
}
.mce-content-body img[data-mce-selected],
.mce-content-body video[data-mce-selected],
.mce-content-body audio[data-mce-selected],
.mce-content-body object[data-mce-selected],
.mce-content-body embed[data-mce-selected],
.mce-content-body table[data-mce-selected] {
outline: 3px solid #4099ff;
}
.mce-content-body hr[data-mce-selected] {
outline: 3px solid #4099ff;
outline-offset: 1px;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
outline: 3px solid #4099ff;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
outline: 3px solid #4099ff;
}
.mce-content-body *[contentEditable=false][data-mce-selected] {
cursor: not-allowed;
outline: 3px solid #4099ff;
}
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
outline: none;
}
.mce-content-body *[data-mce-selected="inline-boundary"] {
background-color: #4099ff;
}
.mce-content-body .mce-edit-focus {
outline: 3px solid #4099ff;
}
.mce-content-body td[data-mce-selected],
.mce-content-body th[data-mce-selected] {
position: relative;
}
.mce-content-body td[data-mce-selected]::-moz-selection,
.mce-content-body th[data-mce-selected]::-moz-selection {
background: none;
}
.mce-content-body td[data-mce-selected]::selection,
.mce-content-body th[data-mce-selected]::selection {
background: none;
}
.mce-content-body td[data-mce-selected] *,
.mce-content-body th[data-mce-selected] * {
outline: none;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mce-content-body td[data-mce-selected]::after,
.mce-content-body th[data-mce-selected]::after {
background-color: rgba(180, 215, 255, 0.7);
border: 1px solid transparent;
bottom: -1px;
content: '';
left: -1px;
mix-blend-mode: lighten;
position: absolute;
right: -1px;
top: -1px;
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
.mce-content-body td[data-mce-selected]::after,
.mce-content-body th[data-mce-selected]::after {
border-color: rgba(0, 84, 180, 0.7);
}
}
.mce-content-body img::-moz-selection {
background: none;
}
.mce-content-body img::selection {
background: none;
}
.ephox-snooker-resizer-bar {
background-color: #4099ff;
opacity: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.ephox-snooker-resizer-cols {
cursor: col-resize;
}
.ephox-snooker-resizer-rows {
cursor: row-resize;
}
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
opacity: 1;
}
.mce-spellchecker-word {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
height: 2rem;
}
.mce-spellchecker-grammar {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
}
.mce-toc {
border: 1px solid gray;
}
.mce-toc h2 {
margin: 4px;
}
.mce-toc li {
list-style-type: none;
}
table[style*="border-width: 0px"],
.mce-item-table:not([border]),
.mce-item-table[border="0"],
table[style*="border-width: 0px"] td,
.mce-item-table:not([border]) td,
.mce-item-table[border="0"] td,
table[style*="border-width: 0px"] th,
.mce-item-table:not([border]) th,
.mce-item-table[border="0"] th,
table[style*="border-width: 0px"] caption,
.mce-item-table:not([border]) caption,
.mce-item-table[border="0"] caption {
border: 1px dashed #bbb;
}
.mce-visualblocks p,
.mce-visualblocks h1,
.mce-visualblocks h2,
.mce-visualblocks h3,
.mce-visualblocks h4,
.mce-visualblocks h5,
.mce-visualblocks h6,
.mce-visualblocks div:not([data-mce-bogus]),
.mce-visualblocks section,
.mce-visualblocks article,
.mce-visualblocks blockquote,
.mce-visualblocks address,
.mce-visualblocks pre,
.mce-visualblocks figure,
.mce-visualblocks figcaption,
.mce-visualblocks hgroup,
.mce-visualblocks aside,
.mce-visualblocks ul,
.mce-visualblocks ol,
.mce-visualblocks dl {
background-repeat: no-repeat;
border: 1px dashed #bbb;
margin-left: 3px;
padding-top: 10px;
}
.mce-visualblocks p {
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
}
.mce-visualblocks h1 {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
}
.mce-visualblocks h2 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
}
.mce-visualblocks h3 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
}
.mce-visualblocks h4 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
}
.mce-visualblocks h5 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
}
.mce-visualblocks h6 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
}
.mce-visualblocks div:not([data-mce-bogus]) {
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
}
.mce-visualblocks section {
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
}
.mce-visualblocks article {
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
}
.mce-visualblocks blockquote {
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
}
.mce-visualblocks address {
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
}
.mce-visualblocks pre {
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
}
.mce-visualblocks figure {
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
}
.mce-visualblocks figcaption {
border: 1px dashed #bbb;
}
.mce-visualblocks hgroup {
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
}
.mce-visualblocks aside {
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
}
.mce-visualblocks ul {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
}
.mce-visualblocks ol {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
}
.mce-visualblocks dl {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
}
.mce-visualblocks:not([dir=rtl]) p,
.mce-visualblocks:not([dir=rtl]) h1,
.mce-visualblocks:not([dir=rtl]) h2,
.mce-visualblocks:not([dir=rtl]) h3,
.mce-visualblocks:not([dir=rtl]) h4,
.mce-visualblocks:not([dir=rtl]) h5,
.mce-visualblocks:not([dir=rtl]) h6,
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
.mce-visualblocks:not([dir=rtl]) section,
.mce-visualblocks:not([dir=rtl]) article,
.mce-visualblocks:not([dir=rtl]) blockquote,
.mce-visualblocks:not([dir=rtl]) address,
.mce-visualblocks:not([dir=rtl]) pre,
.mce-visualblocks:not([dir=rtl]) figure,
.mce-visualblocks:not([dir=rtl]) figcaption,
.mce-visualblocks:not([dir=rtl]) hgroup,
.mce-visualblocks:not([dir=rtl]) aside,
.mce-visualblocks:not([dir=rtl]) ul,
.mce-visualblocks:not([dir=rtl]) ol,
.mce-visualblocks:not([dir=rtl]) dl {
margin-left: 3px;
}
.mce-visualblocks[dir=rtl] p,
.mce-visualblocks[dir=rtl] h1,
.mce-visualblocks[dir=rtl] h2,
.mce-visualblocks[dir=rtl] h3,
.mce-visualblocks[dir=rtl] h4,
.mce-visualblocks[dir=rtl] h5,
.mce-visualblocks[dir=rtl] h6,
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
.mce-visualblocks[dir=rtl] section,
.mce-visualblocks[dir=rtl] article,
.mce-visualblocks[dir=rtl] blockquote,
.mce-visualblocks[dir=rtl] address,
.mce-visualblocks[dir=rtl] pre,
.mce-visualblocks[dir=rtl] figure,
.mce-visualblocks[dir=rtl] figcaption,
.mce-visualblocks[dir=rtl] hgroup,
.mce-visualblocks[dir=rtl] aside,
.mce-visualblocks[dir=rtl] ul,
.mce-visualblocks[dir=rtl] ol,
.mce-visualblocks[dir=rtl] dl {
background-position-x: right;
margin-right: 3px;
}
.mce-nbsp,
.mce-shy {
background: #aaa;
}
.mce-shy::after {
content: '-';
}
body {
font-family: sans-serif;
}
table {
border-collapse: collapse;
}

View File

@ -1,726 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.mce-content-body .mce-item-anchor {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
cursor: default;
display: inline-block;
height: 12px !important;
padding: 0 2px;
-webkit-user-modify: read-only;
-moz-user-modify: read-only;
-webkit-user-select: all;
-moz-user-select: all;
-ms-user-select: all;
user-select: all;
width: 8px !important;
}
.mce-content-body .mce-item-anchor[data-mce-selected] {
outline-offset: 1px;
}
.tox-comments-visible .tox-comment {
background-color: #fff0b7;
}
.tox-comments-visible .tox-comment--active {
background-color: #ffe168;
}
.tox-checklist > li:not(.tox-checklist--hidden) {
list-style: none;
margin: 0.25em 0;
}
.tox-checklist > li:not(.tox-checklist--hidden)::before {
content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
cursor: pointer;
height: 1em;
margin-left: -1.5em;
margin-top: 0.125em;
position: absolute;
width: 1em;
}
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
}
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
margin-left: 0;
margin-right: -1.5em;
}
/* stylelint-disable */
/* http://prismjs.com/ */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: 0.7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, 0.5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
/* stylelint-enable */
.mce-content-body {
overflow-wrap: break-word;
word-wrap: break-word;
}
.mce-content-body .mce-visual-caret {
background-color: black;
background-color: currentColor;
position: absolute;
}
.mce-content-body .mce-visual-caret-hidden {
display: none;
}
.mce-content-body *[data-mce-caret] {
left: -1000px;
margin: 0;
padding: 0;
position: absolute;
right: auto;
top: 0;
}
.mce-content-body .mce-offscreen-selection {
left: -2000000px;
max-width: 1000000px;
position: absolute;
}
.mce-content-body *[contentEditable=false] {
cursor: default;
}
.mce-content-body *[contentEditable=true] {
cursor: text;
}
.tox-cursor-format-painter {
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
}
.mce-content-body figure.align-left {
float: left;
}
.mce-content-body figure.align-right {
float: right;
}
.mce-content-body figure.image.align-center {
display: table;
margin-left: auto;
margin-right: auto;
}
.mce-preview-object {
border: 1px solid gray;
display: inline-block;
line-height: 0;
margin: 0 2px 0 2px;
position: relative;
}
.mce-preview-object .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-preview-object[data-mce-selected="2"] .mce-shim {
display: none;
}
.mce-object {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
border: 1px dashed #aaa;
}
.mce-pagebreak {
border: 1px dashed #aaa;
cursor: default;
display: block;
height: 5px;
margin-top: 15px;
page-break-before: always;
width: 100%;
}
@media print {
.mce-pagebreak {
border: 0;
}
}
.tiny-pageembed .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.tiny-pageembed[data-mce-selected="2"] .mce-shim {
display: none;
}
.tiny-pageembed {
display: inline-block;
position: relative;
}
.tiny-pageembed--21by9,
.tiny-pageembed--16by9,
.tiny-pageembed--4by3,
.tiny-pageembed--1by1 {
display: block;
overflow: hidden;
padding: 0;
position: relative;
width: 100%;
}
.tiny-pageembed--21by9 {
padding-top: 42.857143%;
}
.tiny-pageembed--16by9 {
padding-top: 56.25%;
}
.tiny-pageembed--4by3 {
padding-top: 75%;
}
.tiny-pageembed--1by1 {
padding-top: 100%;
}
.tiny-pageembed--21by9 iframe,
.tiny-pageembed--16by9 iframe,
.tiny-pageembed--4by3 iframe,
.tiny-pageembed--1by1 iframe {
border: 0;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-content-body[data-mce-placeholder] {
position: relative;
}
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
color: rgba(34, 47, 62, 0.7);
content: attr(data-mce-placeholder);
position: absolute;
}
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
left: 1px;
}
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
right: 1px;
}
.mce-content-body div.mce-resizehandle {
background-color: #4099ff;
border-color: #4099ff;
border-style: solid;
border-width: 1px;
box-sizing: border-box;
height: 10px;
position: absolute;
width: 10px;
z-index: 1298;
}
.mce-content-body div.mce-resizehandle:hover {
background-color: #4099ff;
}
.mce-content-body div.mce-resizehandle:nth-of-type(1) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(2) {
cursor: nesw-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(3) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(4) {
cursor: nesw-resize;
}
.mce-content-body .mce-resize-backdrop {
z-index: 10000;
}
.mce-content-body .mce-clonedresizable {
cursor: default;
opacity: 0.5;
outline: 1px dashed black;
position: absolute;
z-index: 10001;
}
.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
border: 0;
}
.mce-content-body .mce-resize-helper {
background: #555;
background: rgba(0, 0, 0, 0.75);
border: 1px;
border-radius: 3px;
color: white;
display: none;
font-family: sans-serif;
font-size: 12px;
line-height: 14px;
margin: 5px 10px;
padding: 5px;
position: absolute;
white-space: nowrap;
z-index: 10002;
}
.tox-rtc-user-selection {
position: relative;
}
.tox-rtc-user-cursor {
bottom: 0;
cursor: default;
position: absolute;
top: 0;
width: 2px;
}
.tox-rtc-user-cursor::before {
background-color: inherit;
border-radius: 50%;
content: '';
display: block;
height: 8px;
position: absolute;
right: -3px;
top: -3px;
width: 8px;
}
.tox-rtc-user-cursor:hover::after {
background-color: inherit;
border-radius: 100px;
box-sizing: border-box;
color: #fff;
content: attr(data-user);
display: block;
font-size: 12px;
font-weight: bold;
left: -5px;
min-height: 8px;
min-width: 8px;
padding: 0 12px;
position: absolute;
top: -11px;
white-space: nowrap;
z-index: 1000;
}
.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
background-color: #2dc26b;
}
.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
background-color: #e03e2d;
}
.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
background-color: #f1c40f;
}
.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
background-color: #3598db;
}
.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
background-color: #b96ad9;
}
.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
background-color: #e67e23;
}
.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
background-color: #aaa69d;
}
.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
background-color: #f368e0;
}
.tox-rtc-remote-image {
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
border: 1px solid #ccc;
min-height: 240px;
min-width: 320px;
}
.mce-match-marker {
background: #aaa;
color: #fff;
}
.mce-match-marker-selected {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::-moz-selection {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::selection {
background: #39f;
color: #fff;
}
.mce-content-body img[data-mce-selected],
.mce-content-body video[data-mce-selected],
.mce-content-body audio[data-mce-selected],
.mce-content-body object[data-mce-selected],
.mce-content-body embed[data-mce-selected],
.mce-content-body table[data-mce-selected] {
outline: 3px solid #b4d7ff;
}
.mce-content-body hr[data-mce-selected] {
outline: 3px solid #b4d7ff;
outline-offset: 1px;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false][data-mce-selected] {
cursor: not-allowed;
outline: 3px solid #b4d7ff;
}
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
outline: none;
}
.mce-content-body *[data-mce-selected="inline-boundary"] {
background-color: #b4d7ff;
}
.mce-content-body .mce-edit-focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body td[data-mce-selected],
.mce-content-body th[data-mce-selected] {
position: relative;
}
.mce-content-body td[data-mce-selected]::-moz-selection,
.mce-content-body th[data-mce-selected]::-moz-selection {
background: none;
}
.mce-content-body td[data-mce-selected]::selection,
.mce-content-body th[data-mce-selected]::selection {
background: none;
}
.mce-content-body td[data-mce-selected] *,
.mce-content-body th[data-mce-selected] * {
outline: none;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mce-content-body td[data-mce-selected]::after,
.mce-content-body th[data-mce-selected]::after {
background-color: rgba(180, 215, 255, 0.7);
border: 1px solid rgba(180, 215, 255, 0.7);
bottom: -1px;
content: '';
left: -1px;
mix-blend-mode: multiply;
position: absolute;
right: -1px;
top: -1px;
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
.mce-content-body td[data-mce-selected]::after,
.mce-content-body th[data-mce-selected]::after {
border-color: rgba(0, 84, 180, 0.7);
}
}
.mce-content-body img::-moz-selection {
background: none;
}
.mce-content-body img::selection {
background: none;
}
.ephox-snooker-resizer-bar {
background-color: #b4d7ff;
opacity: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.ephox-snooker-resizer-cols {
cursor: col-resize;
}
.ephox-snooker-resizer-rows {
cursor: row-resize;
}
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
opacity: 1;
}
.mce-spellchecker-word {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
height: 2rem;
}
.mce-spellchecker-grammar {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
}
.mce-toc {
border: 1px solid gray;
}
.mce-toc h2 {
margin: 4px;
}
.mce-toc li {
list-style-type: none;
}
table[style*="border-width: 0px"],
.mce-item-table:not([border]),
.mce-item-table[border="0"],
table[style*="border-width: 0px"] td,
.mce-item-table:not([border]) td,
.mce-item-table[border="0"] td,
table[style*="border-width: 0px"] th,
.mce-item-table:not([border]) th,
.mce-item-table[border="0"] th,
table[style*="border-width: 0px"] caption,
.mce-item-table:not([border]) caption,
.mce-item-table[border="0"] caption {
border: 1px dashed #bbb;
}
.mce-visualblocks p,
.mce-visualblocks h1,
.mce-visualblocks h2,
.mce-visualblocks h3,
.mce-visualblocks h4,
.mce-visualblocks h5,
.mce-visualblocks h6,
.mce-visualblocks div:not([data-mce-bogus]),
.mce-visualblocks section,
.mce-visualblocks article,
.mce-visualblocks blockquote,
.mce-visualblocks address,
.mce-visualblocks pre,
.mce-visualblocks figure,
.mce-visualblocks figcaption,
.mce-visualblocks hgroup,
.mce-visualblocks aside,
.mce-visualblocks ul,
.mce-visualblocks ol,
.mce-visualblocks dl {
background-repeat: no-repeat;
border: 1px dashed #bbb;
margin-left: 3px;
padding-top: 10px;
}
.mce-visualblocks p {
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
}
.mce-visualblocks h1 {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
}
.mce-visualblocks h2 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
}
.mce-visualblocks h3 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
}
.mce-visualblocks h4 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
}
.mce-visualblocks h5 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
}
.mce-visualblocks h6 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
}
.mce-visualblocks div:not([data-mce-bogus]) {
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
}
.mce-visualblocks section {
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
}
.mce-visualblocks article {
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
}
.mce-visualblocks blockquote {
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
}
.mce-visualblocks address {
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
}
.mce-visualblocks pre {
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
}
.mce-visualblocks figure {
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
}
.mce-visualblocks figcaption {
border: 1px dashed #bbb;
}
.mce-visualblocks hgroup {
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
}
.mce-visualblocks aside {
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
}
.mce-visualblocks ul {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
}
.mce-visualblocks ol {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
}
.mce-visualblocks dl {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
}
.mce-visualblocks:not([dir=rtl]) p,
.mce-visualblocks:not([dir=rtl]) h1,
.mce-visualblocks:not([dir=rtl]) h2,
.mce-visualblocks:not([dir=rtl]) h3,
.mce-visualblocks:not([dir=rtl]) h4,
.mce-visualblocks:not([dir=rtl]) h5,
.mce-visualblocks:not([dir=rtl]) h6,
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
.mce-visualblocks:not([dir=rtl]) section,
.mce-visualblocks:not([dir=rtl]) article,
.mce-visualblocks:not([dir=rtl]) blockquote,
.mce-visualblocks:not([dir=rtl]) address,
.mce-visualblocks:not([dir=rtl]) pre,
.mce-visualblocks:not([dir=rtl]) figure,
.mce-visualblocks:not([dir=rtl]) figcaption,
.mce-visualblocks:not([dir=rtl]) hgroup,
.mce-visualblocks:not([dir=rtl]) aside,
.mce-visualblocks:not([dir=rtl]) ul,
.mce-visualblocks:not([dir=rtl]) ol,
.mce-visualblocks:not([dir=rtl]) dl {
margin-left: 3px;
}
.mce-visualblocks[dir=rtl] p,
.mce-visualblocks[dir=rtl] h1,
.mce-visualblocks[dir=rtl] h2,
.mce-visualblocks[dir=rtl] h3,
.mce-visualblocks[dir=rtl] h4,
.mce-visualblocks[dir=rtl] h5,
.mce-visualblocks[dir=rtl] h6,
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
.mce-visualblocks[dir=rtl] section,
.mce-visualblocks[dir=rtl] article,
.mce-visualblocks[dir=rtl] blockquote,
.mce-visualblocks[dir=rtl] address,
.mce-visualblocks[dir=rtl] pre,
.mce-visualblocks[dir=rtl] figure,
.mce-visualblocks[dir=rtl] figcaption,
.mce-visualblocks[dir=rtl] hgroup,
.mce-visualblocks[dir=rtl] aside,
.mce-visualblocks[dir=rtl] ul,
.mce-visualblocks[dir=rtl] ol,
.mce-visualblocks[dir=rtl] dl {
background-position-x: right;
margin-right: 3px;
}
.mce-nbsp,
.mce-shy {
background: #aaa;
}
.mce-shy::after {
content: '-';
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,29 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {
/* Note: this file is used inside the content, so isn't part of theming */
background-color: green;
display: inline-block;
opacity: 0.5;
position: absolute;
}
body {
-webkit-text-size-adjust: none;
}
body img {
/* this is related to the content margin */
max-width: 96vw;
}
body table img {
max-width: 95%;
}
body {
font-family: sans-serif;
}
table {
border-collapse: collapse;
}

View File

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,673 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
/* RESET all the things! */
.tinymce-mobile-outer-container {
all: initial;
display: block;
}
.tinymce-mobile-outer-container * {
border: 0;
box-sizing: initial;
cursor: inherit;
float: none;
line-height: 1;
margin: 0;
outline: 0;
padding: 0;
-webkit-tap-highlight-color: transparent;
/* TBIO-3691, stop the gray flicker on touch. */
text-shadow: none;
white-space: nowrap;
}
.tinymce-mobile-icon-arrow-back::before {
content: "\e5cd";
}
.tinymce-mobile-icon-image::before {
content: "\e412";
}
.tinymce-mobile-icon-cancel-circle::before {
content: "\e5c9";
}
.tinymce-mobile-icon-full-dot::before {
content: "\e061";
}
.tinymce-mobile-icon-align-center::before {
content: "\e234";
}
.tinymce-mobile-icon-align-left::before {
content: "\e236";
}
.tinymce-mobile-icon-align-right::before {
content: "\e237";
}
.tinymce-mobile-icon-bold::before {
content: "\e238";
}
.tinymce-mobile-icon-italic::before {
content: "\e23f";
}
.tinymce-mobile-icon-unordered-list::before {
content: "\e241";
}
.tinymce-mobile-icon-ordered-list::before {
content: "\e242";
}
.tinymce-mobile-icon-font-size::before {
content: "\e245";
}
.tinymce-mobile-icon-underline::before {
content: "\e249";
}
.tinymce-mobile-icon-link::before {
content: "\e157";
}
.tinymce-mobile-icon-unlink::before {
content: "\eca2";
}
.tinymce-mobile-icon-color::before {
content: "\e891";
}
.tinymce-mobile-icon-previous::before {
content: "\e314";
}
.tinymce-mobile-icon-next::before {
content: "\e315";
}
.tinymce-mobile-icon-large-font::before,
.tinymce-mobile-icon-style-formats::before {
content: "\e264";
}
.tinymce-mobile-icon-undo::before {
content: "\e166";
}
.tinymce-mobile-icon-redo::before {
content: "\e15a";
}
.tinymce-mobile-icon-removeformat::before {
content: "\e239";
}
.tinymce-mobile-icon-small-font::before {
content: "\e906";
}
.tinymce-mobile-icon-readonly-back::before,
.tinymce-mobile-format-matches::after {
content: "\e5ca";
}
.tinymce-mobile-icon-small-heading::before {
content: "small";
}
.tinymce-mobile-icon-large-heading::before {
content: "large";
}
.tinymce-mobile-icon-small-heading::before,
.tinymce-mobile-icon-large-heading::before {
font-family: sans-serif;
font-size: 80%;
}
.tinymce-mobile-mask-edit-icon::before {
content: "\e254";
}
.tinymce-mobile-icon-back::before {
content: "\e5c4";
}
.tinymce-mobile-icon-heading::before {
/* TODO: Translate */
content: "Headings";
font-family: sans-serif;
font-size: 80%;
font-weight: bold;
}
.tinymce-mobile-icon-h1::before {
content: "H1";
font-weight: bold;
}
.tinymce-mobile-icon-h2::before {
content: "H2";
font-weight: bold;
}
.tinymce-mobile-icon-h3::before {
content: "H3";
font-weight: bold;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {
align-items: center;
display: flex;
justify-content: center;
background: rgba(51, 51, 51, 0.5);
height: 100%;
position: absolute;
top: 0;
width: 100%;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {
align-items: center;
border-radius: 50%;
display: flex;
flex-direction: column;
font-family: sans-serif;
font-size: 1em;
justify-content: space-between;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {
align-items: center;
display: flex;
justify-content: center;
border-radius: 50%;
height: 2.1em;
width: 2.1em;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
align-items: center;
display: flex;
justify-content: center;
flex-direction: column;
font-size: 1em;
}
@media only screen and (min-device-width:700px) {
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
font-size: 1.2em;
}
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {
align-items: center;
display: flex;
justify-content: center;
border-radius: 50%;
height: 2.1em;
width: 2.1em;
background-color: white;
color: #207ab7;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {
content: "\e900";
font-family: 'tinymce-mobile', sans-serif;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {
z-index: 2;
}
.tinymce-mobile-android-container.tinymce-mobile-android-maximized {
background: #ffffff;
border: none;
bottom: 0;
display: flex;
flex-direction: column;
left: 0;
position: fixed;
right: 0;
top: 0;
}
.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {
position: relative;
}
.tinymce-mobile-android-container .tinymce-mobile-editor-socket {
display: flex;
flex-grow: 1;
}
.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {
display: flex !important;
flex-grow: 1;
height: auto !important;
}
.tinymce-mobile-android-scroll-reload {
overflow: hidden;
}
:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {
margin-top: 23px;
}
.tinymce-mobile-toolstrip {
background: #fff;
display: flex;
flex: 0 0 auto;
z-index: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {
align-items: center;
background-color: #fff;
border-bottom: 1px solid #cccccc;
display: flex;
flex: 1;
height: 2.5em;
width: 100%;
/* Make it no larger than the toolstrip, so that it needs to scroll */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {
align-items: center;
display: flex;
height: 100%;
flex-shrink: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {
align-items: center;
display: flex;
height: 100%;
flex: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {
background: #f44336;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {
flex-grow: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
padding-left: 0.5em;
padding-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {
align-items: center;
display: flex;
height: 80%;
margin-left: 2px;
margin-right: 2px;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {
background: #c8cbcf;
color: #cccccc;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {
background: #207ab7;
color: #eceff1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {
/* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {
align-items: center;
display: flex;
height: 100%;
flex: 1;
padding-bottom: 0.4em;
padding-top: 0.4em;
/* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */
/* For widgets like the colour picker, use the whole height */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {
display: flex;
min-height: 1.5em;
overflow: hidden;
padding-left: 0;
padding-right: 0;
position: relative;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {
display: flex;
height: 100%;
transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {
display: flex;
flex: 0 0 auto;
justify-content: space-between;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {
font-family: Sans-serif;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {
display: flex;
flex-grow: 1;
position: relative;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {
-ms-grid-row-align: center;
align-self: center;
background: inherit;
border: none;
border-radius: 50%;
color: #888;
font-size: 0.6em;
font-weight: bold;
height: 100%;
padding-right: 2px;
position: absolute;
right: 0;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {
display: none;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {
align-items: center;
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {
align-items: center;
display: flex;
font-weight: bold;
height: 100%;
padding-left: 0.5em;
padding-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {
visibility: hidden;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {
color: #cccccc;
font-size: 10px;
line-height: 10px;
margin: 0 2px;
padding-top: 3px;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {
color: #c8cbcf;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {
margin-left: 0.5em;
margin-right: 0.9em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {
margin-left: 0.9em;
margin-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {
display: flex;
flex: 1;
margin-left: 0;
margin-right: 0;
padding: 0.28em 0;
position: relative;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {
align-items: center;
display: flex;
flex-grow: 1;
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {
background: #cccccc;
display: flex;
flex: 1;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {
padding-left: 2em;
padding-right: 2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {
align-items: center;
display: flex;
flex-grow: 1;
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {
background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);
display: flex;
flex: 1;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {
/* Not part of theming */
background: black;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
width: 1.2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {
/* Not part of theming */
background: white;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
width: 1.2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {
/* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave
* out these values, then it shows the thumb at the top of the spectrum. This is probably because it is
* absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without
* this approach.
*/
align-items: center;
background-clip: padding-box;
background-color: #455a64;
border: 0.5em solid rgba(136, 136, 136, 0);
border-radius: 3em;
bottom: 0;
color: #fff;
display: flex;
height: 0.5em;
justify-content: center;
left: -10px;
margin: auto;
position: absolute;
top: 0;
transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);
width: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {
border: 0.5em solid rgba(136, 136, 136, 0.39);
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {
align-items: center;
display: flex;
height: 100%;
flex: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {
flex-direction: column;
justify-content: center;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
align-items: center;
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {
background: #ffffff;
border: none;
border-radius: 0;
color: #455a64;
flex-grow: 1;
font-size: 0.85em;
padding-bottom: 0.1em;
padding-left: 5px;
padding-top: 0.1em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {
/* WebKit, Blink, Edge */
color: #888;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {
/* WebKit, Blink, Edge */
color: #888;
}
/* dropup */
.tinymce-mobile-dropup {
background: white;
display: flex;
overflow: hidden;
width: 100%;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {
transition: height 0.3s ease-out;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {
transition: height 0.3s ease-in;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {
flex-grow: 0;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {
flex-grow: 1;
}
/* TODO min-height for device size and orientation */
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 200px;
}
@media only screen and (orientation: landscape) {
.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 200px;
}
}
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 150px;
}
}
/* styles menu */
.tinymce-mobile-styles-menu {
font-family: sans-serif;
outline: 4px solid black;
overflow: hidden;
position: relative;
width: 100%;
}
.tinymce-mobile-styles-menu [role="menu"] {
display: flex;
flex-direction: column;
height: 100%;
position: absolute;
width: 100%;
}
.tinymce-mobile-styles-menu [role="menu"].transitioning {
transition: transform 0.5s ease-in-out;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {
border-bottom: 1px solid #ddd;
color: #455a64;
cursor: pointer;
display: flex;
padding: 1em 1em;
position: relative;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {
color: #455a64;
content: "\e314";
font-family: 'tinymce-mobile', sans-serif;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {
color: #455a64;
content: "\e315";
font-family: 'tinymce-mobile', sans-serif;
padding-left: 1em;
padding-right: 1em;
position: absolute;
right: 0;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {
font-family: 'tinymce-mobile', sans-serif;
padding-left: 1em;
padding-right: 1em;
position: absolute;
right: 0;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {
align-items: center;
background: #fff;
border-top: #455a64;
color: #455a64;
display: flex;
min-height: 2.5em;
padding-left: 1em;
padding-right: 1em;
}
.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="before"] {
transform: translate(-100%);
}
.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="current"] {
transform: translate(0%);
}
.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="after"] {
transform: translate(100%);
}
@font-face {
font-family: 'tinymce-mobile';
font-style: normal;
font-weight: normal;
src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');
}
@media (min-device-width: 700px) {
.tinymce-mobile-outer-container,
.tinymce-mobile-outer-container input {
font-size: 25px;
}
}
@media (max-device-width: 700px) {
.tinymce-mobile-outer-container,
.tinymce-mobile-outer-container input {
font-size: 18px;
}
}
.tinymce-mobile-icon {
font-family: 'tinymce-mobile', sans-serif;
}
.mixin-flex-and-centre {
align-items: center;
display: flex;
justify-content: center;
}
.mixin-flex-bar {
align-items: center;
display: flex;
height: 100%;
}
.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {
background-color: #fff;
width: 100%;
}
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
/* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */
background-color: #207ab7;
border-radius: 50%;
bottom: 1em;
color: white;
font-size: 1em;
height: 2.1em;
position: fixed;
right: 2em;
width: 2.1em;
align-items: center;
display: flex;
justify-content: center;
}
@media only screen and (min-device-width:700px) {
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
font-size: 1.2em;
}
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {
height: 300px;
overflow: hidden;
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {
height: 100%;
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {
display: none;
}
/*
Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets
increased and the whole body becomes scrollable. It's important!
*/
input[type="file"]::-webkit-file-upload-button {
display: none;
}
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
bottom: 50%;
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,37 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body.tox-dialog__disable-scroll {
overflow: hidden;
}
.tox-fullscreen {
border: 0;
height: 100%;
margin: 0;
overflow: hidden;
-ms-scroll-chaining: none;
overscroll-behavior: none;
padding: 0;
touch-action: pinch-zoom;
width: 100%;
}
.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
display: none;
}
.tox.tox-tinymce.tox-fullscreen,
.tox-shadowhost.tox-fullscreen {
left: 0;
position: fixed;
top: 0;
z-index: 1200;
}
.tox.tox-tinymce.tox-fullscreen {
background-color: transparent;
}
.tox-fullscreen .tox.tox-tinymce-aux,
.tox-fullscreen ~ .tox.tox-tinymce-aux {
z-index: 1201;
}

View File

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}

View File

@ -1,732 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.mce-content-body .mce-item-anchor {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
cursor: default;
display: inline-block;
height: 12px !important;
padding: 0 2px;
-webkit-user-modify: read-only;
-moz-user-modify: read-only;
-webkit-user-select: all;
-moz-user-select: all;
-ms-user-select: all;
user-select: all;
width: 8px !important;
}
.mce-content-body .mce-item-anchor[data-mce-selected] {
outline-offset: 1px;
}
.tox-comments-visible .tox-comment {
background-color: #fff0b7;
}
.tox-comments-visible .tox-comment--active {
background-color: #ffe168;
}
.tox-checklist > li:not(.tox-checklist--hidden) {
list-style: none;
margin: 0.25em 0;
}
.tox-checklist > li:not(.tox-checklist--hidden)::before {
content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
cursor: pointer;
height: 1em;
margin-left: -1.5em;
margin-top: 0.125em;
position: absolute;
width: 1em;
}
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
}
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
margin-left: 0;
margin-right: -1.5em;
}
/* stylelint-disable */
/* http://prismjs.com/ */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: 0.7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, 0.5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
/* stylelint-enable */
.mce-content-body {
overflow-wrap: break-word;
word-wrap: break-word;
}
.mce-content-body .mce-visual-caret {
background-color: black;
background-color: currentColor;
position: absolute;
}
.mce-content-body .mce-visual-caret-hidden {
display: none;
}
.mce-content-body *[data-mce-caret] {
left: -1000px;
margin: 0;
padding: 0;
position: absolute;
right: auto;
top: 0;
}
.mce-content-body .mce-offscreen-selection {
left: -2000000px;
max-width: 1000000px;
position: absolute;
}
.mce-content-body *[contentEditable=false] {
cursor: default;
}
.mce-content-body *[contentEditable=true] {
cursor: text;
}
.tox-cursor-format-painter {
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
}
.mce-content-body figure.align-left {
float: left;
}
.mce-content-body figure.align-right {
float: right;
}
.mce-content-body figure.image.align-center {
display: table;
margin-left: auto;
margin-right: auto;
}
.mce-preview-object {
border: 1px solid gray;
display: inline-block;
line-height: 0;
margin: 0 2px 0 2px;
position: relative;
}
.mce-preview-object .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-preview-object[data-mce-selected="2"] .mce-shim {
display: none;
}
.mce-object {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
border: 1px dashed #aaa;
}
.mce-pagebreak {
border: 1px dashed #aaa;
cursor: default;
display: block;
height: 5px;
margin-top: 15px;
page-break-before: always;
width: 100%;
}
@media print {
.mce-pagebreak {
border: 0;
}
}
.tiny-pageembed .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.tiny-pageembed[data-mce-selected="2"] .mce-shim {
display: none;
}
.tiny-pageembed {
display: inline-block;
position: relative;
}
.tiny-pageembed--21by9,
.tiny-pageembed--16by9,
.tiny-pageembed--4by3,
.tiny-pageembed--1by1 {
display: block;
overflow: hidden;
padding: 0;
position: relative;
width: 100%;
}
.tiny-pageembed--21by9 {
padding-top: 42.857143%;
}
.tiny-pageembed--16by9 {
padding-top: 56.25%;
}
.tiny-pageembed--4by3 {
padding-top: 75%;
}
.tiny-pageembed--1by1 {
padding-top: 100%;
}
.tiny-pageembed--21by9 iframe,
.tiny-pageembed--16by9 iframe,
.tiny-pageembed--4by3 iframe,
.tiny-pageembed--1by1 iframe {
border: 0;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-content-body[data-mce-placeholder] {
position: relative;
}
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
color: rgba(34, 47, 62, 0.7);
content: attr(data-mce-placeholder);
position: absolute;
}
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
left: 1px;
}
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
right: 1px;
}
.mce-content-body div.mce-resizehandle {
background-color: #4099ff;
border-color: #4099ff;
border-style: solid;
border-width: 1px;
box-sizing: border-box;
height: 10px;
position: absolute;
width: 10px;
z-index: 1298;
}
.mce-content-body div.mce-resizehandle:hover {
background-color: #4099ff;
}
.mce-content-body div.mce-resizehandle:nth-of-type(1) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(2) {
cursor: nesw-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(3) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(4) {
cursor: nesw-resize;
}
.mce-content-body .mce-resize-backdrop {
z-index: 10000;
}
.mce-content-body .mce-clonedresizable {
cursor: default;
opacity: 0.5;
outline: 1px dashed black;
position: absolute;
z-index: 10001;
}
.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
border: 0;
}
.mce-content-body .mce-resize-helper {
background: #555;
background: rgba(0, 0, 0, 0.75);
border: 1px;
border-radius: 3px;
color: white;
display: none;
font-family: sans-serif;
font-size: 12px;
line-height: 14px;
margin: 5px 10px;
padding: 5px;
position: absolute;
white-space: nowrap;
z-index: 10002;
}
.tox-rtc-user-selection {
position: relative;
}
.tox-rtc-user-cursor {
bottom: 0;
cursor: default;
position: absolute;
top: 0;
width: 2px;
}
.tox-rtc-user-cursor::before {
background-color: inherit;
border-radius: 50%;
content: '';
display: block;
height: 8px;
position: absolute;
right: -3px;
top: -3px;
width: 8px;
}
.tox-rtc-user-cursor:hover::after {
background-color: inherit;
border-radius: 100px;
box-sizing: border-box;
color: #fff;
content: attr(data-user);
display: block;
font-size: 12px;
font-weight: bold;
left: -5px;
min-height: 8px;
min-width: 8px;
padding: 0 12px;
position: absolute;
top: -11px;
white-space: nowrap;
z-index: 1000;
}
.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
background-color: #2dc26b;
}
.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
background-color: #e03e2d;
}
.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
background-color: #f1c40f;
}
.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
background-color: #3598db;
}
.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
background-color: #b96ad9;
}
.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
background-color: #e67e23;
}
.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
background-color: #aaa69d;
}
.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
background-color: #f368e0;
}
.tox-rtc-remote-image {
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
border: 1px solid #ccc;
min-height: 240px;
min-width: 320px;
}
.mce-match-marker {
background: #aaa;
color: #fff;
}
.mce-match-marker-selected {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::-moz-selection {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::selection {
background: #39f;
color: #fff;
}
.mce-content-body img[data-mce-selected],
.mce-content-body video[data-mce-selected],
.mce-content-body audio[data-mce-selected],
.mce-content-body object[data-mce-selected],
.mce-content-body embed[data-mce-selected],
.mce-content-body table[data-mce-selected] {
outline: 3px solid #b4d7ff;
}
.mce-content-body hr[data-mce-selected] {
outline: 3px solid #b4d7ff;
outline-offset: 1px;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false][data-mce-selected] {
cursor: not-allowed;
outline: 3px solid #b4d7ff;
}
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
outline: none;
}
.mce-content-body *[data-mce-selected="inline-boundary"] {
background-color: #b4d7ff;
}
.mce-content-body .mce-edit-focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body td[data-mce-selected],
.mce-content-body th[data-mce-selected] {
position: relative;
}
.mce-content-body td[data-mce-selected]::-moz-selection,
.mce-content-body th[data-mce-selected]::-moz-selection {
background: none;
}
.mce-content-body td[data-mce-selected]::selection,
.mce-content-body th[data-mce-selected]::selection {
background: none;
}
.mce-content-body td[data-mce-selected] *,
.mce-content-body th[data-mce-selected] * {
outline: none;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mce-content-body td[data-mce-selected]::after,
.mce-content-body th[data-mce-selected]::after {
background-color: rgba(180, 215, 255, 0.7);
border: 1px solid rgba(180, 215, 255, 0.7);
bottom: -1px;
content: '';
left: -1px;
mix-blend-mode: multiply;
position: absolute;
right: -1px;
top: -1px;
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
.mce-content-body td[data-mce-selected]::after,
.mce-content-body th[data-mce-selected]::after {
border-color: rgba(0, 84, 180, 0.7);
}
}
.mce-content-body img::-moz-selection {
background: none;
}
.mce-content-body img::selection {
background: none;
}
.ephox-snooker-resizer-bar {
background-color: #b4d7ff;
opacity: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.ephox-snooker-resizer-cols {
cursor: col-resize;
}
.ephox-snooker-resizer-rows {
cursor: row-resize;
}
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
opacity: 1;
}
.mce-spellchecker-word {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
height: 2rem;
}
.mce-spellchecker-grammar {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
}
.mce-toc {
border: 1px solid gray;
}
.mce-toc h2 {
margin: 4px;
}
.mce-toc li {
list-style-type: none;
}
table[style*="border-width: 0px"],
.mce-item-table:not([border]),
.mce-item-table[border="0"],
table[style*="border-width: 0px"] td,
.mce-item-table:not([border]) td,
.mce-item-table[border="0"] td,
table[style*="border-width: 0px"] th,
.mce-item-table:not([border]) th,
.mce-item-table[border="0"] th,
table[style*="border-width: 0px"] caption,
.mce-item-table:not([border]) caption,
.mce-item-table[border="0"] caption {
border: 1px dashed #bbb;
}
.mce-visualblocks p,
.mce-visualblocks h1,
.mce-visualblocks h2,
.mce-visualblocks h3,
.mce-visualblocks h4,
.mce-visualblocks h5,
.mce-visualblocks h6,
.mce-visualblocks div:not([data-mce-bogus]),
.mce-visualblocks section,
.mce-visualblocks article,
.mce-visualblocks blockquote,
.mce-visualblocks address,
.mce-visualblocks pre,
.mce-visualblocks figure,
.mce-visualblocks figcaption,
.mce-visualblocks hgroup,
.mce-visualblocks aside,
.mce-visualblocks ul,
.mce-visualblocks ol,
.mce-visualblocks dl {
background-repeat: no-repeat;
border: 1px dashed #bbb;
margin-left: 3px;
padding-top: 10px;
}
.mce-visualblocks p {
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
}
.mce-visualblocks h1 {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
}
.mce-visualblocks h2 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
}
.mce-visualblocks h3 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
}
.mce-visualblocks h4 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
}
.mce-visualblocks h5 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
}
.mce-visualblocks h6 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
}
.mce-visualblocks div:not([data-mce-bogus]) {
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
}
.mce-visualblocks section {
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
}
.mce-visualblocks article {
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
}
.mce-visualblocks blockquote {
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
}
.mce-visualblocks address {
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
}
.mce-visualblocks pre {
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
}
.mce-visualblocks figure {
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
}
.mce-visualblocks figcaption {
border: 1px dashed #bbb;
}
.mce-visualblocks hgroup {
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
}
.mce-visualblocks aside {
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
}
.mce-visualblocks ul {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
}
.mce-visualblocks ol {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
}
.mce-visualblocks dl {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
}
.mce-visualblocks:not([dir=rtl]) p,
.mce-visualblocks:not([dir=rtl]) h1,
.mce-visualblocks:not([dir=rtl]) h2,
.mce-visualblocks:not([dir=rtl]) h3,
.mce-visualblocks:not([dir=rtl]) h4,
.mce-visualblocks:not([dir=rtl]) h5,
.mce-visualblocks:not([dir=rtl]) h6,
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
.mce-visualblocks:not([dir=rtl]) section,
.mce-visualblocks:not([dir=rtl]) article,
.mce-visualblocks:not([dir=rtl]) blockquote,
.mce-visualblocks:not([dir=rtl]) address,
.mce-visualblocks:not([dir=rtl]) pre,
.mce-visualblocks:not([dir=rtl]) figure,
.mce-visualblocks:not([dir=rtl]) figcaption,
.mce-visualblocks:not([dir=rtl]) hgroup,
.mce-visualblocks:not([dir=rtl]) aside,
.mce-visualblocks:not([dir=rtl]) ul,
.mce-visualblocks:not([dir=rtl]) ol,
.mce-visualblocks:not([dir=rtl]) dl {
margin-left: 3px;
}
.mce-visualblocks[dir=rtl] p,
.mce-visualblocks[dir=rtl] h1,
.mce-visualblocks[dir=rtl] h2,
.mce-visualblocks[dir=rtl] h3,
.mce-visualblocks[dir=rtl] h4,
.mce-visualblocks[dir=rtl] h5,
.mce-visualblocks[dir=rtl] h6,
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
.mce-visualblocks[dir=rtl] section,
.mce-visualblocks[dir=rtl] article,
.mce-visualblocks[dir=rtl] blockquote,
.mce-visualblocks[dir=rtl] address,
.mce-visualblocks[dir=rtl] pre,
.mce-visualblocks[dir=rtl] figure,
.mce-visualblocks[dir=rtl] figcaption,
.mce-visualblocks[dir=rtl] hgroup,
.mce-visualblocks[dir=rtl] aside,
.mce-visualblocks[dir=rtl] ul,
.mce-visualblocks[dir=rtl] ol,
.mce-visualblocks[dir=rtl] dl {
background-position-x: right;
margin-right: 3px;
}
.mce-nbsp,
.mce-shy {
background: #aaa;
}
.mce-shy::after {
content: '-';
}
body {
font-family: sans-serif;
}
table {
border-collapse: collapse;
}

View File

@ -1,726 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.mce-content-body .mce-item-anchor {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
cursor: default;
display: inline-block;
height: 12px !important;
padding: 0 2px;
-webkit-user-modify: read-only;
-moz-user-modify: read-only;
-webkit-user-select: all;
-moz-user-select: all;
-ms-user-select: all;
user-select: all;
width: 8px !important;
}
.mce-content-body .mce-item-anchor[data-mce-selected] {
outline-offset: 1px;
}
.tox-comments-visible .tox-comment {
background-color: #fff0b7;
}
.tox-comments-visible .tox-comment--active {
background-color: #ffe168;
}
.tox-checklist > li:not(.tox-checklist--hidden) {
list-style: none;
margin: 0.25em 0;
}
.tox-checklist > li:not(.tox-checklist--hidden)::before {
content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
cursor: pointer;
height: 1em;
margin-left: -1.5em;
margin-top: 0.125em;
position: absolute;
width: 1em;
}
.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
}
[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
margin-left: 0;
margin-right: -1.5em;
}
/* stylelint-disable */
/* http://prismjs.com/ */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: 0.7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, 0.5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
/* stylelint-enable */
.mce-content-body {
overflow-wrap: break-word;
word-wrap: break-word;
}
.mce-content-body .mce-visual-caret {
background-color: black;
background-color: currentColor;
position: absolute;
}
.mce-content-body .mce-visual-caret-hidden {
display: none;
}
.mce-content-body *[data-mce-caret] {
left: -1000px;
margin: 0;
padding: 0;
position: absolute;
right: auto;
top: 0;
}
.mce-content-body .mce-offscreen-selection {
left: -2000000px;
max-width: 1000000px;
position: absolute;
}
.mce-content-body *[contentEditable=false] {
cursor: default;
}
.mce-content-body *[contentEditable=true] {
cursor: text;
}
.tox-cursor-format-painter {
cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
}
.mce-content-body figure.align-left {
float: left;
}
.mce-content-body figure.align-right {
float: right;
}
.mce-content-body figure.image.align-center {
display: table;
margin-left: auto;
margin-right: auto;
}
.mce-preview-object {
border: 1px solid gray;
display: inline-block;
line-height: 0;
margin: 0 2px 0 2px;
position: relative;
}
.mce-preview-object .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-preview-object[data-mce-selected="2"] .mce-shim {
display: none;
}
.mce-object {
background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
border: 1px dashed #aaa;
}
.mce-pagebreak {
border: 1px dashed #aaa;
cursor: default;
display: block;
height: 5px;
margin-top: 15px;
page-break-before: always;
width: 100%;
}
@media print {
.mce-pagebreak {
border: 0;
}
}
.tiny-pageembed .mce-shim {
background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.tiny-pageembed[data-mce-selected="2"] .mce-shim {
display: none;
}
.tiny-pageembed {
display: inline-block;
position: relative;
}
.tiny-pageembed--21by9,
.tiny-pageembed--16by9,
.tiny-pageembed--4by3,
.tiny-pageembed--1by1 {
display: block;
overflow: hidden;
padding: 0;
position: relative;
width: 100%;
}
.tiny-pageembed--21by9 {
padding-top: 42.857143%;
}
.tiny-pageembed--16by9 {
padding-top: 56.25%;
}
.tiny-pageembed--4by3 {
padding-top: 75%;
}
.tiny-pageembed--1by1 {
padding-top: 100%;
}
.tiny-pageembed--21by9 iframe,
.tiny-pageembed--16by9 iframe,
.tiny-pageembed--4by3 iframe,
.tiny-pageembed--1by1 iframe {
border: 0;
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.mce-content-body[data-mce-placeholder] {
position: relative;
}
.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
color: rgba(34, 47, 62, 0.7);
content: attr(data-mce-placeholder);
position: absolute;
}
.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
left: 1px;
}
.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
right: 1px;
}
.mce-content-body div.mce-resizehandle {
background-color: #4099ff;
border-color: #4099ff;
border-style: solid;
border-width: 1px;
box-sizing: border-box;
height: 10px;
position: absolute;
width: 10px;
z-index: 1298;
}
.mce-content-body div.mce-resizehandle:hover {
background-color: #4099ff;
}
.mce-content-body div.mce-resizehandle:nth-of-type(1) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(2) {
cursor: nesw-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(3) {
cursor: nwse-resize;
}
.mce-content-body div.mce-resizehandle:nth-of-type(4) {
cursor: nesw-resize;
}
.mce-content-body .mce-resize-backdrop {
z-index: 10000;
}
.mce-content-body .mce-clonedresizable {
cursor: default;
opacity: 0.5;
outline: 1px dashed black;
position: absolute;
z-index: 10001;
}
.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
border: 0;
}
.mce-content-body .mce-resize-helper {
background: #555;
background: rgba(0, 0, 0, 0.75);
border: 1px;
border-radius: 3px;
color: white;
display: none;
font-family: sans-serif;
font-size: 12px;
line-height: 14px;
margin: 5px 10px;
padding: 5px;
position: absolute;
white-space: nowrap;
z-index: 10002;
}
.tox-rtc-user-selection {
position: relative;
}
.tox-rtc-user-cursor {
bottom: 0;
cursor: default;
position: absolute;
top: 0;
width: 2px;
}
.tox-rtc-user-cursor::before {
background-color: inherit;
border-radius: 50%;
content: '';
display: block;
height: 8px;
position: absolute;
right: -3px;
top: -3px;
width: 8px;
}
.tox-rtc-user-cursor:hover::after {
background-color: inherit;
border-radius: 100px;
box-sizing: border-box;
color: #fff;
content: attr(data-user);
display: block;
font-size: 12px;
font-weight: bold;
left: -5px;
min-height: 8px;
min-width: 8px;
padding: 0 12px;
position: absolute;
top: -11px;
white-space: nowrap;
z-index: 1000;
}
.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
background-color: #2dc26b;
}
.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
background-color: #e03e2d;
}
.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
background-color: #f1c40f;
}
.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
background-color: #3598db;
}
.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
background-color: #b96ad9;
}
.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
background-color: #e67e23;
}
.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
background-color: #aaa69d;
}
.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
background-color: #f368e0;
}
.tox-rtc-remote-image {
background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
border: 1px solid #ccc;
min-height: 240px;
min-width: 320px;
}
.mce-match-marker {
background: #aaa;
color: #fff;
}
.mce-match-marker-selected {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::-moz-selection {
background: #39f;
color: #fff;
}
.mce-match-marker-selected::selection {
background: #39f;
color: #fff;
}
.mce-content-body img[data-mce-selected],
.mce-content-body video[data-mce-selected],
.mce-content-body audio[data-mce-selected],
.mce-content-body object[data-mce-selected],
.mce-content-body embed[data-mce-selected],
.mce-content-body table[data-mce-selected] {
outline: 3px solid #b4d7ff;
}
.mce-content-body hr[data-mce-selected] {
outline: 3px solid #b4d7ff;
outline-offset: 1px;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
outline: 3px solid #b4d7ff;
}
.mce-content-body *[contentEditable=false][data-mce-selected] {
cursor: not-allowed;
outline: 3px solid #b4d7ff;
}
.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
outline: none;
}
.mce-content-body *[data-mce-selected="inline-boundary"] {
background-color: #b4d7ff;
}
.mce-content-body .mce-edit-focus {
outline: 3px solid #b4d7ff;
}
.mce-content-body td[data-mce-selected],
.mce-content-body th[data-mce-selected] {
position: relative;
}
.mce-content-body td[data-mce-selected]::-moz-selection,
.mce-content-body th[data-mce-selected]::-moz-selection {
background: none;
}
.mce-content-body td[data-mce-selected]::selection,
.mce-content-body th[data-mce-selected]::selection {
background: none;
}
.mce-content-body td[data-mce-selected] *,
.mce-content-body th[data-mce-selected] * {
outline: none;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.mce-content-body td[data-mce-selected]::after,
.mce-content-body th[data-mce-selected]::after {
background-color: rgba(180, 215, 255, 0.7);
border: 1px solid rgba(180, 215, 255, 0.7);
bottom: -1px;
content: '';
left: -1px;
mix-blend-mode: multiply;
position: absolute;
right: -1px;
top: -1px;
}
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
.mce-content-body td[data-mce-selected]::after,
.mce-content-body th[data-mce-selected]::after {
border-color: rgba(0, 84, 180, 0.7);
}
}
.mce-content-body img::-moz-selection {
background: none;
}
.mce-content-body img::selection {
background: none;
}
.ephox-snooker-resizer-bar {
background-color: #b4d7ff;
opacity: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.ephox-snooker-resizer-cols {
cursor: col-resize;
}
.ephox-snooker-resizer-rows {
cursor: row-resize;
}
.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
opacity: 1;
}
.mce-spellchecker-word {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
height: 2rem;
}
.mce-spellchecker-grammar {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
background-position: 0 calc(100% + 1px);
background-repeat: repeat-x;
background-size: auto 6px;
cursor: default;
}
.mce-toc {
border: 1px solid gray;
}
.mce-toc h2 {
margin: 4px;
}
.mce-toc li {
list-style-type: none;
}
table[style*="border-width: 0px"],
.mce-item-table:not([border]),
.mce-item-table[border="0"],
table[style*="border-width: 0px"] td,
.mce-item-table:not([border]) td,
.mce-item-table[border="0"] td,
table[style*="border-width: 0px"] th,
.mce-item-table:not([border]) th,
.mce-item-table[border="0"] th,
table[style*="border-width: 0px"] caption,
.mce-item-table:not([border]) caption,
.mce-item-table[border="0"] caption {
border: 1px dashed #bbb;
}
.mce-visualblocks p,
.mce-visualblocks h1,
.mce-visualblocks h2,
.mce-visualblocks h3,
.mce-visualblocks h4,
.mce-visualblocks h5,
.mce-visualblocks h6,
.mce-visualblocks div:not([data-mce-bogus]),
.mce-visualblocks section,
.mce-visualblocks article,
.mce-visualblocks blockquote,
.mce-visualblocks address,
.mce-visualblocks pre,
.mce-visualblocks figure,
.mce-visualblocks figcaption,
.mce-visualblocks hgroup,
.mce-visualblocks aside,
.mce-visualblocks ul,
.mce-visualblocks ol,
.mce-visualblocks dl {
background-repeat: no-repeat;
border: 1px dashed #bbb;
margin-left: 3px;
padding-top: 10px;
}
.mce-visualblocks p {
background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
}
.mce-visualblocks h1 {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
}
.mce-visualblocks h2 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
}
.mce-visualblocks h3 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
}
.mce-visualblocks h4 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
}
.mce-visualblocks h5 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
}
.mce-visualblocks h6 {
background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
}
.mce-visualblocks div:not([data-mce-bogus]) {
background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
}
.mce-visualblocks section {
background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
}
.mce-visualblocks article {
background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
}
.mce-visualblocks blockquote {
background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
}
.mce-visualblocks address {
background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
}
.mce-visualblocks pre {
background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
}
.mce-visualblocks figure {
background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
}
.mce-visualblocks figcaption {
border: 1px dashed #bbb;
}
.mce-visualblocks hgroup {
background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
}
.mce-visualblocks aside {
background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
}
.mce-visualblocks ul {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
}
.mce-visualblocks ol {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
}
.mce-visualblocks dl {
background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
}
.mce-visualblocks:not([dir=rtl]) p,
.mce-visualblocks:not([dir=rtl]) h1,
.mce-visualblocks:not([dir=rtl]) h2,
.mce-visualblocks:not([dir=rtl]) h3,
.mce-visualblocks:not([dir=rtl]) h4,
.mce-visualblocks:not([dir=rtl]) h5,
.mce-visualblocks:not([dir=rtl]) h6,
.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
.mce-visualblocks:not([dir=rtl]) section,
.mce-visualblocks:not([dir=rtl]) article,
.mce-visualblocks:not([dir=rtl]) blockquote,
.mce-visualblocks:not([dir=rtl]) address,
.mce-visualblocks:not([dir=rtl]) pre,
.mce-visualblocks:not([dir=rtl]) figure,
.mce-visualblocks:not([dir=rtl]) figcaption,
.mce-visualblocks:not([dir=rtl]) hgroup,
.mce-visualblocks:not([dir=rtl]) aside,
.mce-visualblocks:not([dir=rtl]) ul,
.mce-visualblocks:not([dir=rtl]) ol,
.mce-visualblocks:not([dir=rtl]) dl {
margin-left: 3px;
}
.mce-visualblocks[dir=rtl] p,
.mce-visualblocks[dir=rtl] h1,
.mce-visualblocks[dir=rtl] h2,
.mce-visualblocks[dir=rtl] h3,
.mce-visualblocks[dir=rtl] h4,
.mce-visualblocks[dir=rtl] h5,
.mce-visualblocks[dir=rtl] h6,
.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
.mce-visualblocks[dir=rtl] section,
.mce-visualblocks[dir=rtl] article,
.mce-visualblocks[dir=rtl] blockquote,
.mce-visualblocks[dir=rtl] address,
.mce-visualblocks[dir=rtl] pre,
.mce-visualblocks[dir=rtl] figure,
.mce-visualblocks[dir=rtl] figcaption,
.mce-visualblocks[dir=rtl] hgroup,
.mce-visualblocks[dir=rtl] aside,
.mce-visualblocks[dir=rtl] ul,
.mce-visualblocks[dir=rtl] ol,
.mce-visualblocks[dir=rtl] dl {
background-position-x: right;
margin-right: 3px;
}
.mce-nbsp,
.mce-shy {
background: #aaa;
}
.mce-shy::after {
content: '-';
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,29 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {
/* Note: this file is used inside the content, so isn't part of theming */
background-color: green;
display: inline-block;
opacity: 0.5;
position: absolute;
}
body {
-webkit-text-size-adjust: none;
}
body img {
/* this is related to the content margin */
max-width: 96vw;
}
body table img {
max-width: 95%;
}
body {
font-family: sans-serif;
}
table {
border-collapse: collapse;
}

View File

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,673 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
/* RESET all the things! */
.tinymce-mobile-outer-container {
all: initial;
display: block;
}
.tinymce-mobile-outer-container * {
border: 0;
box-sizing: initial;
cursor: inherit;
float: none;
line-height: 1;
margin: 0;
outline: 0;
padding: 0;
-webkit-tap-highlight-color: transparent;
/* TBIO-3691, stop the gray flicker on touch. */
text-shadow: none;
white-space: nowrap;
}
.tinymce-mobile-icon-arrow-back::before {
content: "\e5cd";
}
.tinymce-mobile-icon-image::before {
content: "\e412";
}
.tinymce-mobile-icon-cancel-circle::before {
content: "\e5c9";
}
.tinymce-mobile-icon-full-dot::before {
content: "\e061";
}
.tinymce-mobile-icon-align-center::before {
content: "\e234";
}
.tinymce-mobile-icon-align-left::before {
content: "\e236";
}
.tinymce-mobile-icon-align-right::before {
content: "\e237";
}
.tinymce-mobile-icon-bold::before {
content: "\e238";
}
.tinymce-mobile-icon-italic::before {
content: "\e23f";
}
.tinymce-mobile-icon-unordered-list::before {
content: "\e241";
}
.tinymce-mobile-icon-ordered-list::before {
content: "\e242";
}
.tinymce-mobile-icon-font-size::before {
content: "\e245";
}
.tinymce-mobile-icon-underline::before {
content: "\e249";
}
.tinymce-mobile-icon-link::before {
content: "\e157";
}
.tinymce-mobile-icon-unlink::before {
content: "\eca2";
}
.tinymce-mobile-icon-color::before {
content: "\e891";
}
.tinymce-mobile-icon-previous::before {
content: "\e314";
}
.tinymce-mobile-icon-next::before {
content: "\e315";
}
.tinymce-mobile-icon-large-font::before,
.tinymce-mobile-icon-style-formats::before {
content: "\e264";
}
.tinymce-mobile-icon-undo::before {
content: "\e166";
}
.tinymce-mobile-icon-redo::before {
content: "\e15a";
}
.tinymce-mobile-icon-removeformat::before {
content: "\e239";
}
.tinymce-mobile-icon-small-font::before {
content: "\e906";
}
.tinymce-mobile-icon-readonly-back::before,
.tinymce-mobile-format-matches::after {
content: "\e5ca";
}
.tinymce-mobile-icon-small-heading::before {
content: "small";
}
.tinymce-mobile-icon-large-heading::before {
content: "large";
}
.tinymce-mobile-icon-small-heading::before,
.tinymce-mobile-icon-large-heading::before {
font-family: sans-serif;
font-size: 80%;
}
.tinymce-mobile-mask-edit-icon::before {
content: "\e254";
}
.tinymce-mobile-icon-back::before {
content: "\e5c4";
}
.tinymce-mobile-icon-heading::before {
/* TODO: Translate */
content: "Headings";
font-family: sans-serif;
font-size: 80%;
font-weight: bold;
}
.tinymce-mobile-icon-h1::before {
content: "H1";
font-weight: bold;
}
.tinymce-mobile-icon-h2::before {
content: "H2";
font-weight: bold;
}
.tinymce-mobile-icon-h3::before {
content: "H3";
font-weight: bold;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {
align-items: center;
display: flex;
justify-content: center;
background: rgba(51, 51, 51, 0.5);
height: 100%;
position: absolute;
top: 0;
width: 100%;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {
align-items: center;
border-radius: 50%;
display: flex;
flex-direction: column;
font-family: sans-serif;
font-size: 1em;
justify-content: space-between;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {
align-items: center;
display: flex;
justify-content: center;
border-radius: 50%;
height: 2.1em;
width: 2.1em;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
align-items: center;
display: flex;
justify-content: center;
flex-direction: column;
font-size: 1em;
}
@media only screen and (min-device-width:700px) {
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
font-size: 1.2em;
}
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {
align-items: center;
display: flex;
justify-content: center;
border-radius: 50%;
height: 2.1em;
width: 2.1em;
background-color: white;
color: #207ab7;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {
content: "\e900";
font-family: 'tinymce-mobile', sans-serif;
}
.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {
z-index: 2;
}
.tinymce-mobile-android-container.tinymce-mobile-android-maximized {
background: #ffffff;
border: none;
bottom: 0;
display: flex;
flex-direction: column;
left: 0;
position: fixed;
right: 0;
top: 0;
}
.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {
position: relative;
}
.tinymce-mobile-android-container .tinymce-mobile-editor-socket {
display: flex;
flex-grow: 1;
}
.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {
display: flex !important;
flex-grow: 1;
height: auto !important;
}
.tinymce-mobile-android-scroll-reload {
overflow: hidden;
}
:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {
margin-top: 23px;
}
.tinymce-mobile-toolstrip {
background: #fff;
display: flex;
flex: 0 0 auto;
z-index: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {
align-items: center;
background-color: #fff;
border-bottom: 1px solid #cccccc;
display: flex;
flex: 1;
height: 2.5em;
width: 100%;
/* Make it no larger than the toolstrip, so that it needs to scroll */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {
align-items: center;
display: flex;
height: 100%;
flex-shrink: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {
align-items: center;
display: flex;
height: 100%;
flex: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {
background: #f44336;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {
flex-grow: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
padding-left: 0.5em;
padding-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {
align-items: center;
display: flex;
height: 80%;
margin-left: 2px;
margin-right: 2px;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {
background: #c8cbcf;
color: #cccccc;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {
background: #207ab7;
color: #eceff1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {
/* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {
align-items: center;
display: flex;
height: 100%;
flex: 1;
padding-bottom: 0.4em;
padding-top: 0.4em;
/* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */
/* For widgets like the colour picker, use the whole height */
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {
display: flex;
min-height: 1.5em;
overflow: hidden;
padding-left: 0;
padding-right: 0;
position: relative;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {
display: flex;
height: 100%;
transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {
display: flex;
flex: 0 0 auto;
justify-content: space-between;
width: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {
font-family: Sans-serif;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {
display: flex;
flex-grow: 1;
position: relative;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {
-ms-grid-row-align: center;
align-self: center;
background: inherit;
border: none;
border-radius: 50%;
color: #888;
font-size: 0.6em;
font-weight: bold;
height: 100%;
padding-right: 2px;
position: absolute;
right: 0;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {
display: none;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {
align-items: center;
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {
align-items: center;
display: flex;
font-weight: bold;
height: 100%;
padding-left: 0.5em;
padding-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {
visibility: hidden;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {
color: #cccccc;
font-size: 10px;
line-height: 10px;
margin: 0 2px;
padding-top: 3px;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {
color: #c8cbcf;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {
margin-left: 0.5em;
margin-right: 0.9em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {
margin-left: 0.9em;
margin-right: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {
display: flex;
flex: 1;
margin-left: 0;
margin-right: 0;
padding: 0.28em 0;
position: relative;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {
align-items: center;
display: flex;
flex-grow: 1;
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {
background: #cccccc;
display: flex;
flex: 1;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {
padding-left: 2em;
padding-right: 2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {
align-items: center;
display: flex;
flex-grow: 1;
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {
background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);
display: flex;
flex: 1;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {
/* Not part of theming */
background: black;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
width: 1.2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {
/* Not part of theming */
background: white;
height: 0.2em;
margin-bottom: 0.3em;
margin-top: 0.3em;
width: 1.2em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {
/* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave
* out these values, then it shows the thumb at the top of the spectrum. This is probably because it is
* absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without
* this approach.
*/
align-items: center;
background-clip: padding-box;
background-color: #455a64;
border: 0.5em solid rgba(136, 136, 136, 0);
border-radius: 3em;
bottom: 0;
color: #fff;
display: flex;
height: 0.5em;
justify-content: center;
left: -10px;
margin: auto;
position: absolute;
top: 0;
transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);
width: 0.5em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {
border: 0.5em solid rgba(136, 136, 136, 0.39);
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {
align-items: center;
display: flex;
height: 100%;
flex: 1;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {
flex-direction: column;
justify-content: center;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
align-items: center;
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {
height: 100%;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {
display: flex;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {
background: #ffffff;
border: none;
border-radius: 0;
color: #455a64;
flex-grow: 1;
font-size: 0.85em;
padding-bottom: 0.1em;
padding-left: 5px;
padding-top: 0.1em;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {
/* WebKit, Blink, Edge */
color: #888;
}
.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {
/* WebKit, Blink, Edge */
color: #888;
}
/* dropup */
.tinymce-mobile-dropup {
background: white;
display: flex;
overflow: hidden;
width: 100%;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {
transition: height 0.3s ease-out;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {
transition: height 0.3s ease-in;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {
flex-grow: 0;
}
.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {
flex-grow: 1;
}
/* TODO min-height for device size and orientation */
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 200px;
}
@media only screen and (orientation: landscape) {
.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 200px;
}
}
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
min-height: 150px;
}
}
/* styles menu */
.tinymce-mobile-styles-menu {
font-family: sans-serif;
outline: 4px solid black;
overflow: hidden;
position: relative;
width: 100%;
}
.tinymce-mobile-styles-menu [role="menu"] {
display: flex;
flex-direction: column;
height: 100%;
position: absolute;
width: 100%;
}
.tinymce-mobile-styles-menu [role="menu"].transitioning {
transition: transform 0.5s ease-in-out;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {
border-bottom: 1px solid #ddd;
color: #455a64;
cursor: pointer;
display: flex;
padding: 1em 1em;
position: relative;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {
color: #455a64;
content: "\e314";
font-family: 'tinymce-mobile', sans-serif;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {
color: #455a64;
content: "\e315";
font-family: 'tinymce-mobile', sans-serif;
padding-left: 1em;
padding-right: 1em;
position: absolute;
right: 0;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {
font-family: 'tinymce-mobile', sans-serif;
padding-left: 1em;
padding-right: 1em;
position: absolute;
right: 0;
}
.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,
.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {
align-items: center;
background: #fff;
border-top: #455a64;
color: #455a64;
display: flex;
min-height: 2.5em;
padding-left: 1em;
padding-right: 1em;
}
.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="before"] {
transform: translate(-100%);
}
.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="current"] {
transform: translate(0%);
}
.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],
.tinymce-mobile-styles-menu [data-transitioning-state="after"] {
transform: translate(100%);
}
@font-face {
font-family: 'tinymce-mobile';
font-style: normal;
font-weight: normal;
src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');
}
@media (min-device-width: 700px) {
.tinymce-mobile-outer-container,
.tinymce-mobile-outer-container input {
font-size: 25px;
}
}
@media (max-device-width: 700px) {
.tinymce-mobile-outer-container,
.tinymce-mobile-outer-container input {
font-size: 18px;
}
}
.tinymce-mobile-icon {
font-family: 'tinymce-mobile', sans-serif;
}
.mixin-flex-and-centre {
align-items: center;
display: flex;
justify-content: center;
}
.mixin-flex-bar {
align-items: center;
display: flex;
height: 100%;
}
.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {
background-color: #fff;
width: 100%;
}
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
/* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */
background-color: #207ab7;
border-radius: 50%;
bottom: 1em;
color: white;
font-size: 1em;
height: 2.1em;
position: fixed;
right: 2em;
width: 2.1em;
align-items: center;
display: flex;
justify-content: center;
}
@media only screen and (min-device-width:700px) {
.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
font-size: 1.2em;
}
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {
height: 300px;
overflow: hidden;
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {
height: 100%;
}
.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {
display: none;
}
/*
Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets
increased and the whole body becomes scrollable. It's important!
*/
input[type="file"]::-webkit-file-upload-button {
display: none;
}
@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
bottom: 50%;
}
}

File diff suppressed because one or more lines are too long

View File

@ -1,37 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body.tox-dialog__disable-scroll {
overflow: hidden;
}
.tox-fullscreen {
border: 0;
height: 100%;
margin: 0;
overflow: hidden;
-ms-scroll-chaining: none;
overscroll-behavior: none;
padding: 0;
touch-action: pinch-zoom;
width: 100%;
}
.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
display: none;
}
.tox.tox-tinymce.tox-fullscreen,
.tox-shadowhost.tox-fullscreen {
left: 0;
position: fixed;
top: 0;
z-index: 1200;
}
.tox.tox-tinymce.tox-fullscreen {
background-color: transparent;
}
.tox-fullscreen .tox.tox-tinymce-aux,
.tox-fullscreen ~ .tox.tox-tinymce-aux {
z-index: 1201;
}

View File

@ -1,7 +0,0 @@
/**
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
* Licensed under the LGPL or a commercial license.
* For LGPL see License.txt in the project root for license information.
* For commercial licenses see https://www.tiny.cloud/
*/
body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}

View File

@ -13,4 +13,44 @@ export class CommonApi {
static getSystemCode(params) {
return Request.get('/devops/getSystemCode', params);
}
/**
*
* @returns userId
*/
static getUserName(params) {
return Request.get('/bizFormComponentProvider/getUserName', params);
}
/**
*
* @returns orgId
*/
static getOrgName(params) {
return Request.get('/bizFormComponentProvider/getOrgName', params);
}
/**
*
* @returns roleId
*/
static getRoleName(params) {
return Request.get('/bizFormComponentProvider/getRoleName', params);
}
/**
*
* @returns positionId
*/
static getPositionName(params) {
return Request.get('/bizFormComponentProvider/getPositionName', params);
}
/**
*
* @returns dictId
*/
static getDictName(params) {
return Request.get('/bizFormComponentProvider/getDictName', params);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

View File

@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 4453133 */
src: url('iconfont.woff2?t=1710569016438') format('woff2'),
url('iconfont.woff?t=1710569016438') format('woff'),
url('iconfont.ttf?t=1710569016438') format('truetype');
src: url('iconfont.woff2?t=1722595070279') format('woff2'),
url('iconfont.woff?t=1722595070279') format('woff'),
url('iconfont.ttf?t=1722595070279') format('truetype');
}
.iconfont {
@ -13,6 +13,46 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-icon-menu-project:before {
content: "\e758";
}
.icon-icon-menu-project-p:before {
content: "\e759";
}
.icon-daibanxiangmu1:before {
content: "\e750";
}
.icon-quanbuxiangmu1:before {
content: "\e751";
}
.icon-renwu:before {
content: "\e752";
}
.icon-wenti:before {
content: "\e753";
}
.icon-wocanyude:before {
content: "\e754";
}
.icon-woshoucangde1:before {
content: "\e755";
}
.icon-xuqiu:before {
content: "\e756";
}
.icon-wofuzede:before {
content: "\e757";
}
.icon-menu-anquancaozuo-p:before {
content: "\e748";
}

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,76 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "41324355",
"name": "项目管理-菜单",
"font_class": "icon-menu-project",
"unicode": "e758",
"unicode_decimal": 59224
},
{
"icon_id": "41324356",
"name": "项目管理-菜单",
"font_class": "icon-menu-project-p",
"unicode": "e759",
"unicode_decimal": 59225
},
{
"icon_id": "41260383",
"name": "待办项目",
"font_class": "daibanxiangmu1",
"unicode": "e750",
"unicode_decimal": 59216
},
{
"icon_id": "41260384",
"name": "全部项目",
"font_class": "quanbuxiangmu1",
"unicode": "e751",
"unicode_decimal": 59217
},
{
"icon_id": "41260385",
"name": "任务",
"font_class": "renwu",
"unicode": "e752",
"unicode_decimal": 59218
},
{
"icon_id": "41260386",
"name": "问题",
"font_class": "wenti",
"unicode": "e753",
"unicode_decimal": 59219
},
{
"icon_id": "41260387",
"name": "我参与的",
"font_class": "wocanyude",
"unicode": "e754",
"unicode_decimal": 59220
},
{
"icon_id": "41260388",
"name": "我收藏的",
"font_class": "woshoucangde1",
"unicode": "e755",
"unicode_decimal": 59221
},
{
"icon_id": "41260389",
"name": "需求",
"font_class": "xuqiu",
"unicode": "e756",
"unicode_decimal": 59222
},
{
"icon_id": "41260390",
"name": "我负责的",
"font_class": "wofuzede",
"unicode": "e757",
"unicode_decimal": 59223
},
{
"icon_id": "39574651",
"name": "菜单-安全操作",

View File

@ -31,8 +31,9 @@ export default {
},
//
value: {
type: [String, Array],
required: true,
default: []
default: ''
},
// id
valueType: {
@ -44,6 +45,11 @@ export default {
type: Boolean,
required: false,
default: false
},
// json
normal: {
type: Boolean,
default: true
}
},
setup(props, context) {
@ -53,11 +59,7 @@ export default {
});
onMounted(async () => {
if (props.value) {
data.modelValue = props.value;
} else {
data.modelValue = [];
}
setModeValue();
//
if (props.dictTypeCode) {
data.dictList = await SysDictTypeApi.getDictListByParams({ dictTypeCode: props.dictTypeCode });
@ -70,14 +72,24 @@ export default {
});
const changeOption = value => {
context.emit('update:value', value);
context.emit('change', value);
let valueData = props.normal ? value : JSON.stringify(value);
context.emit('update:value', valueData);
context.emit('change', valueData);
};
//
const setModeValue = () => {
if (props.value) {
data.modelValue = props.normal ? props.value : JSON.parse(props.value);
} else {
data.modelValue = [];
}
};
watch(
() => props.value,
val => {
data.modelValue = val;
setModeValue();
},
{ deep: true }
);
@ -105,7 +117,8 @@ export default {
return {
...toRefs(data),
changeOption
changeOption,
setModeValue
};
}
};

View File

@ -49,7 +49,9 @@ export default {
},
//
value: {
required: true
type: [String, Array],
required: true,
default: ''
},
// id
valueType: {
@ -72,6 +74,11 @@ export default {
type: String,
required: true,
default: '请选择'
},
// json
normal: {
type: Boolean,
default: true
}
},
setup(props, context) {
@ -81,7 +88,7 @@ export default {
});
onMounted(async () => {
data.modelValue = props.value;
setModelValue();
//
if (props.dictTypeCode) {
data.dictList = await SysDictTypeApi.getDictListByParams({ dictTypeCode: props.dictTypeCode });
@ -93,20 +100,27 @@ export default {
}
});
//
const setModelValue = () => {
data.modelValue = props.normal ? props.value : props.multiple && props.value ? JSON.parse(props.value) : props.value || [];
};
const selectOption = value => {
context.emit('update:value', value);
context.emit('change', value);
let valueData = props.normal ? value : props.multiple ? JSON.stringify(value) : value;
context.emit('update:value', valueData);
context.emit('change', valueData);
};
const changeOption = value => {
context.emit('update:value', value);
context.emit('change', value);
let valueData = props.normal ? value : props.multiple ? JSON.stringify(value) : value;
context.emit('update:value', valueData);
context.emit('change', valueData);
};
watch(
() => props.value,
val => {
data.modelValue = val;
setModelValue();
},
{ deep: true }
);
@ -135,7 +149,8 @@ export default {
return {
...toRefs(data),
selectOption,
changeOption
changeOption,
setModelValue
};
}
};

View File

@ -10,16 +10,16 @@
</template>
<script>
import { storeToRefs } from 'pinia';
import { useThemeStore } from '@/store/modules/theme';
import { storeToRefs } from 'pinia';
import { useThemeStore } from '@/store/modules/theme';
export default {
name: 'RouterLayout',
setup() {
const themeStore = useThemeStore();
const { keepAliveInclude, transitionName } = storeToRefs(themeStore);
export default {
name: 'RouterLayout',
setup() {
const themeStore = useThemeStore();
const { keepAliveInclude, transitionName } = storeToRefs(themeStore);
return { keepAliveInclude, transitionName };
}
};
return { keepAliveInclude, transitionName };
}
};
</script>

View File

@ -1,238 +0,0 @@
<!-- 富文本编辑器 -->
<template>
<component v-if="inlineEditor" :is="tagName" :id="elementId" />
<textarea v-else :id="elementId"></textarea>
</template>
<script setup>
import {
watch,
onMounted,
onBeforeUnmount,
onActivated,
onDeactivated,
nextTick,
useAttrs
} from 'vue';
import tinymce from 'tinymce/tinymce';
import 'tinymce/themes/silver';
import 'tinymce/icons/default';
import 'tinymce/plugins/code';
import 'tinymce/plugins/preview';
import 'tinymce/plugins/fullscreen';
import 'tinymce/plugins/paste';
import 'tinymce/plugins/searchreplace';
import 'tinymce/plugins/save';
import 'tinymce/plugins/autosave';
import 'tinymce/plugins/link';
import 'tinymce/plugins/autolink';
import 'tinymce/plugins/image';
import 'tinymce/plugins/media';
import 'tinymce/plugins/table';
import 'tinymce/plugins/codesample';
import 'tinymce/plugins/lists';
import 'tinymce/plugins/advlist';
import 'tinymce/plugins/hr';
import 'tinymce/plugins/charmap';
import 'tinymce/plugins/emoticons';
import 'tinymce/plugins/anchor';
import 'tinymce/plugins/directionality';
import 'tinymce/plugins/pagebreak';
import 'tinymce/plugins/quickbars';
import 'tinymce/plugins/nonbreaking';
import 'tinymce/plugins/visualblocks';
import 'tinymce/plugins/visualchars';
import 'tinymce/plugins/wordcount';
import 'tinymce/plugins/emoticons/js/emojis';
import { storeToRefs } from 'pinia';
import { useThemeStore } from '@/store/modules/theme';
import {
DEFAULT_CONFIG,
DARK_CONFIG,
uuid,
bindHandlers,
openAlert
} from './util';
const props = defineProps({
// id
id: String,
// v-model
value: String,
//
init: Object,
//
inline: {
type: Boolean,
default: false
},
// model events
modelEvents: {
type: String,
default: 'change input undo redo'
},
//
tagName: {
type: String,
default: 'div'
},
//
disabled: Boolean,
//
autoTheme: {
type: Boolean,
default: true
},
// 使
darkTheme: Boolean
});
const emit = defineEmits(['update:value']);
const attrs = useAttrs();
const themeStore = useThemeStore();
const { darkMode } = storeToRefs(themeStore);
// id
const elementId = props.id || uuid('tiny-vue');
//
let editorIns = null;
//
const inlineEditor = props.init?.inline || props.inline;
/* 更新 value */
const updateValue = (value) => {
emit('update:value', value);
};
/* 修改内容 */
const setContent = (value) => {
if (
editorIns &&
typeof value === 'string' &&
value !== editorIns.getContent()
) {
editorIns.setContent(value);
}
};
/* 渲染编辑器 */
const render = () => {
const isDark = props.autoTheme ? darkMode.value : props.darkTheme;
tinymce.init({
...DEFAULT_CONFIG,
...(isDark ? DARK_CONFIG : {}),
...props.init,
selector: `#${elementId}`,
readonly: props.disabled,
inline: inlineEditor,
setup: (editor) => {
editorIns = editor;
editor.on('init', (e) => {
//
if (props.value) {
setContent(props.value);
}
// v-model
editor.on(props.modelEvents, () => {
updateValue(editor.getContent());
});
// valid events
bindHandlers(e, attrs, editor);
});
if (typeof props.init?.setup === 'function') {
props.init.setup(editor);
}
}
});
};
/* 销毁编辑器 */
const destory = () => {
if (tinymce != null && editorIns != null) {
tinymce.remove(editorIns);
editorIns = null;
}
};
/* 弹出提示框 */
const alert = (option) => {
openAlert(editorIns, option);
};
defineExpose({ editorIns, alert });
watch(
() => props.value,
(val, prevVal) => {
if (val !== prevVal) {
setContent(val);
}
}
);
watch(
() => props.disabled,
(disable) => {
if (editorIns !== null) {
if (typeof editorIns.mode?.set === 'function') {
editorIns.mode.set(disable ? 'readonly' : 'design');
} else {
editorIns.setMode(disable ? 'readonly' : 'design');
}
}
}
);
watch(
() => props.tagName,
() => {
destory();
nextTick(() => {
render();
});
}
);
watch(darkMode, () => {
if (props.autoTheme) {
destory();
nextTick(() => {
render();
});
}
});
onMounted(() => {
render();
});
onBeforeUnmount(() => {
destory();
});
onActivated(() => {
render();
});
onDeactivated(() => {
destory();
});
</script>
<style>
body .tox-tinymce-aux {
z-index: 19990000;
}
textarea[id^='tiny-vue'] {
width: 0;
height: 0;
margin: 0;
padding: 0;
opacity: 0;
box-sizing: border-box;
}
</style>

View File

@ -1,229 +0,0 @@
const BASE_URL = import.meta.env.BASE_URL;
// 默认加载插件
const PLUGINS = [
'code',
'preview',
'fullscreen',
'paste',
'searchreplace',
'save',
'autosave',
'link',
'autolink',
'image',
'media',
'table',
'codesample',
'lists',
'advlist',
'hr',
'charmap',
'emoticons',
'anchor',
'directionality',
'pagebreak',
'quickbars',
'nonbreaking',
'visualblocks',
'visualchars',
'wordcount'
].join(' ');
// 默认工具栏布局
const TOOLBAR = [
'fullscreen',
'preview',
'code',
'|',
'undo',
'redo',
'|',
'forecolor',
'backcolor',
'|',
'bold',
'italic',
'underline',
'strikethrough',
'|',
'alignleft',
'aligncenter',
'alignright',
'alignjustify',
'|',
'outdent',
'indent',
'|',
'numlist',
'bullist',
'|',
'formatselect',
'fontselect',
'fontsizeselect',
'|',
'link',
'image',
'media',
'emoticons',
'charmap',
'anchor',
'pagebreak',
'codesample',
'|',
'ltr',
'rtl'
].join(' ');
// 默认配置
export const DEFAULT_CONFIG = {
height: 300,
branding: false,
skin_url: BASE_URL + 'tinymce/skins/ui/oxide',
content_css: BASE_URL + 'tinymce/skins/content/default/content.min.css',
language_url: BASE_URL + 'tinymce/langs/zh_CN.js',
language: 'zh_CN',
plugins: PLUGINS,
toolbar: TOOLBAR,
draggable_modal: true,
toolbar_mode: 'sliding',
quickbars_insert_toolbar: '',
images_upload_handler: (blobInfo, success, error) => {
if (blobInfo.blob().size / 1024 > 400) {
error(' 400KB');
return;
}
success('data:image/jpeg;base64,' + blobInfo.base64());
},
file_picker_types: 'media',
file_picker_callback: () => {}
};
// 暗黑主题配置
export const DARK_CONFIG = {
skin_url: BASE_URL + 'tinymce/skins/ui/oxide-dark',
content_css: BASE_URL + 'tinymce/skins/content/dark/content.min.css'
};
// 支持监听的事件
export const VALID_EVENTS = [
'onActivate',
'onAddUndo',
'onBeforeAddUndo',
'onBeforeExecCommand',
'onBeforeGetContent',
'onBeforeRenderUI',
'onBeforeSetContent',
'onBeforePaste',
'onBlur',
'onChange',
'onClearUndos',
'onClick',
'onContextMenu',
'onCopy',
'onCut',
'onDblclick',
'onDeactivate',
'onDirty',
'onDrag',
'onDragDrop',
'onDragEnd',
'onDragGesture',
'onDragOver',
'onDrop',
'onExecCommand',
'onFocus',
'onFocusIn',
'onFocusOut',
'onGetContent',
'onHide',
'onInit',
'onKeyDown',
'onKeyPress',
'onKeyUp',
'onLoadContent',
'onMouseDown',
'onMouseEnter',
'onMouseLeave',
'onMouseMove',
'onMouseOut',
'onMouseOver',
'onMouseUp',
'onNodeChange',
'onObjectResizeStart',
'onObjectResized',
'onObjectSelected',
'onPaste',
'onPostProcess',
'onPostRender',
'onPreProcess',
'onProgressState',
'onRedo',
'onRemove',
'onReset',
'onSaveContent',
'onSelectionChange',
'onSetAttrib',
'onSetContent',
'onShow',
'onSubmit',
'onUndo',
'onVisualAid'
];
let unique = 0;
/**
* id
*/
export function uuid(prefix) {
const time = Date.now();
const random = Math.floor(Math.random() * 1000000000);
unique++;
return prefix + '_' + random + unique + String(time);
}
/**
*
*/
export function bindHandlers(initEvent, listeners, editor) {
const validEvents = VALID_EVENTS.map((event) => event.toLowerCase());
Object.keys(listeners)
.filter((key) => validEvents.includes(key.toLowerCase()))
.forEach((key) => {
const handler = listeners[key];
if (typeof handler === 'function') {
if (key === 'onInit') {
handler(initEvent, editor);
} else {
editor.on(key.substring(2), (e) => handler(e, editor));
}
}
});
}
/**
*
*/
export function openAlert(editor, option = {}) {
editor?.windowManager?.open({
title: option.title ?? '',
body: {
type: 'panel',
items: [
{
type: 'htmlpanel',
html: `<p>${option.content ?? ''}</p>`
}
]
},
buttons: [
{
type: 'cancel',
name: 'closeButton',
text: '',
primary: true
}
]
});
}

View File

@ -1,5 +1,5 @@
<template>
<a-drawer v-bind="props" @close="close" @afterVisibleChange="afterVisibleChange">
<a-drawer v-bind="props" @close="close" @afterVisibleChange="afterVisibleChange" :width="isMobile ? 340 : props.width">
<!-- 抽屉右上角的操作区域 -->
<template #extra v-if="slots.extra">
<slot name="extra"></slot>
@ -31,14 +31,14 @@
</a-tabs>
<!-- 内容 -->
<slot></slot>
<!-- 关闭按钮 -->
<div class="close-button" @click="close" v-if="visible"><close-outlined /></div>
</a-drawer>
</template>
<script setup name="CommonDrawer">
import { useSlots, watch, ref } from 'vue';
import { useSlots, watch, ref, inject } from 'vue';
import { LAYOUT_KEY, screenWidth } from '../../layout/util';
const slots = useSlots();
const props = defineProps({
@ -176,6 +176,20 @@ const props = defineProps({
const emit = defineEmits(['close', 'afterVisibleChange', 'tabChange']);
//
const currentActive = ref('1');
//
const layoutProvide = inject(LAYOUT_KEY, ref({ isMobile: screenWidth() < 768 }));
const isMobile = ref(false);
watch(
() => layoutProvide.value,
val => {
isMobile.value = val.isMobile;
},
{ deep: true, immediate: true }
);
//
const close = e => {
emit('close', e);
@ -210,11 +224,14 @@ watch(
width: 40px;
height: 40px;
font-size: 22px;
background: #7127de;
background: #6F9AE7;
text-align: center;
line-height: 40px;
cursor: pointer;
color: #fff;
border-top-left-radius: 4px;
border-bottom-left-radius: 4px;
box-shadow: -2px 0px 4px 3px #0000001F;
}
:deep(.ant-drawer-content) {
overflow: visible;

View File

@ -0,0 +1,386 @@
<script>
/** 弹窗组件 */
import { defineComponent, ref, unref, computed, watch, onActivated, onDeactivated, nextTick, inject, h } from 'vue';
import { Modal as AModal } from 'ant-design-vue/es';
import ExpandOutlined from '@ant-design/icons-vue/es/icons/ExpandOutlined';
import CompressOutlined from '@ant-design/icons-vue/es/icons/CompressOutlined';
import { LAYOUT_KEY, screenWidth } from '../../layout/util';
import {
closedClass,
movableClass,
moveOutClass,
moveOutPositiveClass,
resizableClass,
multipleClass,
fullscreenClass,
innerClass,
hideClass,
noResponsiveClass,
collapseClass,
navCollapseClass,
bodyFullscreenClass,
showTabsClass,
sideMixClass,
sideMixSingleClass,
layoutTopClass,
contentFullscreenClass,
mobileClass,
useModalMovable,
useModalResizable,
useModalAutoSetTop,
getStyleString,
getModalContainer,
setModalTop,
resetModalStyle,
setInitPosition
} from './util';
import props from './props';
export default defineComponent({
name: 'CommonModal',
props,
emits: ['update:visible', 'cancel', 'ok', 'change', 'update:fullscreen'],
setup(props, { emit, slots }) {
//
const layoutProvide = inject(LAYOUT_KEY, ref({ isMobile: screenWidth() < 768 }));
// ref
const titleRef = ref(null);
//
const isFullscreen = ref(props.fullscreen ?? false);
// keep-alive
const isActivated = ref(true);
//
const modalContainer = ref();
// class
const modalInnerClass = computed(() => {
const layoutState = unref(layoutProvide);
const classes = [];
if (props.inner) {
classes.push(innerClass);
//
if (layoutState.collapse && !layoutState.isTopMenu) {
classes.push(collapseClass);
}
if (layoutState.sideNavCollapse && layoutState.isMixSideMenu && !layoutState.isTopMenu) {
classes.push(navCollapseClass);
}
if (layoutState.bodyFullscreen) {
classes.push(bodyFullscreenClass);
}
if (layoutState.showTabs) {
classes.push(showTabsClass);
}
if (layoutState.isMixSideMenu && !layoutState.isTopMenu) {
classes.push(sideMixClass);
if (!layoutState.haveSideMenuData) {
classes.push(sideMixSingleClass);
}
}
if (layoutState.isTopMenu) {
classes.push(layoutTopClass);
}
if (layoutState.bodyFullscreen && layoutState.contentFullscreen) {
classes.push(contentFullscreenClass);
}
if (layoutState.isMobile) {
classes.push(mobileClass);
}
}
return classes.join(' ');
});
// wrap class
const modalWrapClass = computed(() => {
const classes = [];
if (!unref(layoutProvide).isMobile) {
//
if (props.movable) {
classes.push(movableClass);
}
//
if (props.moveOut) {
classes.push(moveOutClass);
}
//
if (props.moveOutPositive) {
classes.push(moveOutPositiveClass);
}
//
if (props.resizable) {
classes.push(resizableClass);
//
if (typeof props.resizable === 'string') {
classes.push(resizableClass + '-' + props.resizable);
}
}
}
//
if (props.multiple) {
classes.push(multipleClass);
}
//
if (isFullscreen.value) {
classes.push(fullscreenClass);
}
//
if (!props.visible) {
classes.push(closedClass);
}
// keep-alive
if (!isActivated.value && props.visible) {
classes.push(hideClass);
}
//
if (modalInnerClass.value) {
classes.push(modalInnerClass.value);
}
//
if (unref(layoutProvide)?.styleResponsive === false) {
classes.push(noResponsiveClass);
}
// class
if (props.wrapClassName) {
classes.push(props.wrapClassName);
}
return classes.join(' ');
});
// style
const dialogStyle = computed(() => {
if (!props.centered || unref(layoutProvide).isMobile) {
return props.style;
}
const width = typeof props.width === 'number' ? `${props.width / 2}px` : `calc(${props.width} / 2)`;
const styleObj = {
'--modal-centered-left': `calc(50% - ${width})`
};
if (typeof props.style === 'string') {
return getStyleString(styleObj) + props.style;
} else if (typeof props.style === 'object' && props.style !== null) {
return { ...styleObj, ...props.style };
}
return styleObj;
});
//
const modalMaskProps = computed(() => {
const classes = ['ant-modal-mask'];
//
if (modalInnerClass.value) {
classes.push(modalInnerClass.value);
}
// keep-alive
if (!isActivated.value && props.visible) {
classes.push(hideClass);
}
// class
if (props.maskClass) {
classes.push(props.maskClass);
}
return { class: classes.join(' ') };
});
//
const modalMask = computed(() => (props.multiple ? false : props.mask));
// visible
const updateVisible = visible => {
emit('update:visible', visible);
};
// visible
const onChange = visible => {
emit('change', visible);
};
//
const onCancel = e => {
emit('cancel', e);
};
//
const onOk = e => {
emit('ok', e);
};
//
const toggleFullscreen = fullscreen => {
if (typeof fullscreen === 'undefined') {
isFullscreen.value = !isFullscreen.value;
} else {
isFullscreen.value = fullscreen;
}
emit('update:fullscreen', isFullscreen.value);
};
//
const updateModalContainer = () => {
if (props.multiple) {
modalContainer.value = () => {
return getModalContainer();
};
} else {
modalContainer.value = props.getContainer;
}
};
//
watch(
() => props.movable,
movable => {
if (movable) {
useModalMovable();
}
},
{
immediate: true
}
);
//
watch(
() => props.resizable,
movable => {
if (movable) {
useModalResizable();
}
},
{
immediate: true
}
);
//
watch(
() => props.multiple,
multiple => {
if (multiple) {
useModalAutoSetTop();
}
},
{
immediate: true
}
);
//
watch(
() => props.fullscreen,
fullscreen => {
if (isFullscreen.value !== fullscreen) {
isFullscreen.value = fullscreen;
}
}
);
//
watch(
() => props.visible,
visible => {
if (visible) {
nextTick(() => {
const modalEl = titleRef.value?.parentNode?.parentNode?.parentNode?.parentNode;
if (props.resetOnClose) {
resetModalStyle(modalEl, props.width);
}
if (props.position) {
setInitPosition(modalEl, props.position, props.moveOut, props.resetOnClose);
}
setModalTop(modalEl);
});
if (props.resetOnClose || props.destroyOnClose) {
isFullscreen.value = props.fullscreen;
}
}
}
);
//
watch(
() => props.getContainer,
() => {
updateModalContainer();
}
);
onDeactivated(() => {
isActivated.value = false;
});
onActivated(() => {
isActivated.value = true;
});
updateModalContainer();
return () => {
return h(
AModal,
{
afterClose: props.afterClose,
bodyStyle: props.bodyStyle,
cancelText: props.cancelText,
centered: props.centered,
closable: props.closable,
closeIcon: props.closeIcon,
confirmLoading: props.confirmLoading,
destroyOnClose: props.destroyOnClose,
footer: props.footer,
forceRender: props.forceRender,
keyboard: props.keyboard,
maskClosable: props.maskClosable,
maskStyle: props.maskStyle,
okText: props.okText,
okType: props.okType,
okButtonProps: props.okButtonProps,
cancelButtonProps: props.cancelButtonProps,
visible: props.visible,
width: props.width,
zIndex: props.zIndex,
dialogClass: props.dialogClass,
getContainer: modalContainer.value,
mask: modalMask.value,
wrapClassName: modalWrapClass.value,
style: dialogStyle.value,
maskProps: modalMaskProps.value,
'onUpdate:visible': updateVisible,
onChange,
onCancel,
onOk
},
{
...slots,
title: () => {
const titleNode = slots.title ? slots.title() : props.title;
const nodes = [h('div', { class: 'guns-modal-title-label' }, titleNode)];
if (props.maxable) {
const maxIconNode = slots.maxIcon
? slots.maxIcon({ fullscreen: isFullscreen.value })
: h(isFullscreen.value ? CompressOutlined : ExpandOutlined);
nodes.push(
h(
'div',
{
class: 'guns-modal-icon-fullscreen',
onClick: () => toggleFullscreen()
},
maxIconNode
)
);
}
return h('div', { ref: titleRef, class: 'guns-modal-title-group' }, nodes);
}
}
);
};
}
});
</script>
<style lang="less">
@import url('./style/index.less');
</style>

View File

@ -0,0 +1,107 @@
export const proProps = {
// 是否可以拖动
movable: {
type: Boolean,
default: true
},
// 是否可以拖出边界
moveOut: Boolean,
// 如果可以拖出边界是否只允许下右拖出
moveOutPositive: Boolean,
// 是否可以拉伸
resizable: [Boolean, String],
// 是否显示最大化切换按钮
maxable: Boolean,
// 是否支持打开多个
multiple: Boolean,
// 是否默认全屏
fullscreen: Boolean,
// 是否限制在主体内部
inner: Boolean,
// 是否在弹窗关闭后重置位置和大小
resetOnClose: {
type: Boolean,
default: true
},
// 遮罩的类名
maskClass: String,
// 初始位置
position: [String, Object]
};
export const antCommonProps = {
// Modal 是否垂直居中
centered: Boolean,
// Modal 是否显示关闭按钮
closable: {
type: Boolean,
default: true
},
// 关闭时销毁 Modal 里的子元素
destroyOnClose: Boolean,
// 强制渲染 Modal
forceRender: Boolean,
// 是否支持键盘 esc 关闭
keyboard: {
type: Boolean,
default: false
},
// 是否展示遮罩
mask: {
type: Boolean,
default: true
},
// 点击蒙层是否允许关闭
maskClosable: {
type: Boolean,
default: true
},
// 遮罩样式
maskStyle: Object,
// 对话框外层容器的类名
wrapClassName: String,
// 设置 Modal 的 z-index
zIndex: {
type: Number,
default: 1000
},
// 可用于设置浮层的类名
dialogClass: String
};
export const antProps = {
...antCommonProps,
afterClose: Function,
bodyStyle: Object,
cancelText: String,
closeIcon: Object,
confirmLoading: Boolean,
footer: String,
getContainer: [
Boolean,
String,
Object,
Function
],
okText: String,
okType: String,
okButtonProps: Object,
cancelButtonProps: Object,
title: String,
visible: Boolean,
width: {
type: [String, Number],
default: 520
},
style: Object
};
export const commonProps = {
...antCommonProps,
...proProps
};
export default {
...antProps,
...proProps
};

View File

@ -0,0 +1,259 @@
@import '../../../layout/style/themes/default.less';
/* 支持拖拽 */
.ant-modal-wrap.guns-modal-movable > .ant-modal {
padding-bottom: 0;
& > .ant-modal-content > .ant-modal-header {
cursor: move;
user-select: none;
}
}
/* 支持拉伸 */
.ant-modal-wrap.guns-modal-resizable > .ant-modal > .ant-modal-content:after {
content: '';
position: absolute;
right: 0;
bottom: 0;
width: 12px;
height: 12px;
cursor: se-resize;
background-image: linear-gradient(
135deg,
transparent 45%,
@input-placeholder-color 0,
@input-placeholder-color 55%,
transparent 0,
transparent 75%,
@input-placeholder-color 0,
@input-placeholder-color 85%,
transparent 0
);
background-size: 10px 10px;
background-position: 0 0;
background-repeat: no-repeat;
}
.ant-modal-wrap.guns-modal-resizable-horizontal
> .ant-modal
> .ant-modal-content:after {
cursor: e-resize;
}
.ant-modal-wrap.guns-modal-resizable-vertical
> .ant-modal
> .ant-modal-content:after {
cursor: s-resize;
}
.ant-modal-wrap.guns-modal-resizable > .ant-modal,
.ant-modal-wrap.guns-modal-wrap-fullscreen > .ant-modal {
padding-bottom: 0;
& > .ant-modal-content {
height: 100%;
display: flex;
flex-direction: column;
& > .ant-modal-body {
flex: auto;
overflow: auto;
}
}
}
/* 全屏 */
.ant-modal-wrap.guns-modal-wrap-fullscreen {
overflow: hidden;
& > .ant-modal {
top: 0 !important;
left: 0 !important;
width: 100% !important;
height: 100% !important;
max-width: inherit !important;
min-width: inherit !important;
max-height: inherit !important;
min-height: inherit !important;
margin: 0 !important;
transform-origin: center !important;
border: 1px solid @border-color-split;
& > .ant-modal-content {
border-radius: 0;
& > .ant-modal-header {
cursor: default !important;
}
&:after {
display: none;
}
}
}
}
.ant-modal .guns-modal-icon-fullscreen {
cursor: pointer;
font-size: @font-size-base;
color: @text-color-secondary;
&:hover {
color: @icon-color-hover;
}
}
.ant-modal .guns-modal-title-group {
display: flex;
align-items: center;
& > .guns-modal-title-label {
flex: 1;
box-sizing: border-box;
}
}
/* 支持打开多个 */
.guns-modal-container {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
pointer-events: none;
z-index: @zindex-modal;
--modal-multiple-z-index: @zindex-modal;
}
.ant-modal-wrap.guns-modal-multiple {
pointer-events: none;
overflow: hidden;
z-index: var(--modal-multiple-z-index) !important;
}
/* 关闭响应式 */
.ant-modal-wrap.guns-modal-no-responsive {
position: absolute;
.ant-modal {
max-width: none;
}
}
/* 限制在内部区域, 适配各种布局状态 */
.guns-modal-hide {
display: none !important;
}
.ant-modal-wrap.guns-modal-inner,
.ant-modal-mask.guns-modal-inner {
top: @header-height;
left: @sidebar-width;
transition: @sidebar-transition;
}
.guns-state-show-tabs.guns-modal-inner {
top: calc(@header-height + @tabs-height);
}
.guns-state-collapse.guns-modal-inner {
left: @sidebar-collapse-width;
}
.guns-state-side-mix.guns-modal-inner {
left: calc(@sidebar-nav-width + @sidebar-width - @sidebar-collapse-width);
&.guns-state-collapse {
left: @sidebar-nav-width;
}
&.guns-state-side-mix-single {
left: @sidebar-nav-width;
}
}
.guns-state-nav-collapse.guns-modal-inner {
left: @sidebar-width;
&.guns-state-side-mix-single {
left: @sidebar-collapse-width;
}
&.guns-state-collapse {
left: @sidebar-collapse-width;
}
}
.guns-state-layout-top.guns-modal-inner {
left: 0;
}
.guns-state-body-fullscreen.guns-modal-inner {
top: @tabs-height;
left: 0 !important;
}
.guns-state-content-fullscreen.guns-modal-inner {
top: 0 !important;
}
.guns-state-mobile.guns-modal-inner {
left: 0 !important;
}
/* 适配垂直居中 */
.guns-modal-movable.ant-modal-centered,
.guns-modal-resizable.ant-modal-centered {
text-align: left;
--modal-centered-left: auto;
& > .ant-modal {
left: var(--modal-centered-left);
}
}
.project-modal {
.ant-modal-content {
border-radius: 8px;
}
.ant-modal-title {
color: #262626;
font-size: 18px !important;
font-style: normal;
font-weight: 500;
}
.ant-modal-close-icon {
width: 20px;
height: 20px;
svg {
width: 20px;
height: 20px;
}
}
.guns-modal-icon-fullscreen {
font-size: 17px;
}
.ant-modal-close-x {
margin-top: 10px;
}
.ant-modal-header {
border-radius: 8px 8px 0 0;
border-bottom: 0px !important;
padding: 24px 24px 0px 24px !important;
}
.ant-modal-footer {
padding: 6px 16px !important;
border-top: 0px !important;
border-radius: 0 0 8px 8px;
}
.ant-modal-footer .ant-btn + .ant-btn:not(.ant-dropdown-trigger) {
margin-bottom: 20px;
}
}
.project-modal:not(.guns-modal-wrap-fullscreen) {
.ant-modal-body {
max-height: 70vh;
overflow-y: auto;
}
}

View File

@ -0,0 +1,485 @@
export const containerClass = 'guns-modal-container';
export const closedClass = 'guns-modal-closed';
export const movableClass = 'guns-modal-movable';
export const moveOutClass = 'guns-modal-move-out';
export const moveOutPositiveClass = 'guns-modal-move-out-positive';
export const resizableClass = 'guns-modal-resizable';
export const resizableHorizontalClass = 'guns-modal-resizable-horizontal';
export const resizableVerticalClass = 'guns-modal-resizable-vertical';
export const multipleClass = 'guns-modal-multiple';
export const fullscreenClass = 'guns-modal-wrap-fullscreen';
export const innerClass = 'guns-modal-inner';
export const hideClass = 'guns-modal-hide';
export const closedResetClass = 'guns-modal-closed-reset';
//
export const noResponsiveClass = 'guns-modal-no-responsive';
export const collapseClass = 'guns-state-collapse';
export const navCollapseClass = 'guns-state-nav-collapse';
export const bodyFullscreenClass = 'guns-state-body-fullscreen';
export const showTabsClass = 'guns-state-show-tabs';
export const sideMixClass = 'guns-state-side-mix';
export const sideMixSingleClass = 'guns-state-side-mix-single';
export const layoutTopClass = 'guns-state-layout-top';
export const contentFullscreenClass = 'guns-state-content-fullscreen';
export const mobileClass = 'guns-state-mobile';
//
const wrapClass = 'ant-modal-wrap';
const modalClass = 'ant-modal';
const headerClass = 'ant-modal-header';
const modalDefaultZIndex = 1000;
const defaultMinWidth = 260;
const defaultMinHeight = 160;
let movableIsUse = false;
let resizableIsUse = false;
let setTopIsUse = false;
/**
* modal
*/
function initModalStyle(modalEl) {
modalEl.style.top = modalEl.offsetTop + 'px';
modalEl.style.left = modalEl.offsetLeft + 'px';
modalEl.style.bottom = 'auto';
modalEl.style.right = 'auto';
modalEl.style.margin = '0';
modalEl.style.position = 'relative';
modalEl.style.display = 'inline-block';
modalEl.style.verticalAlign = 'top';
}
/**
*
* @param el
* @param parentClass class
*/
export function queryParentByClass(
el,
parentClass,
stopHandle
) {
if (el == null || el === document) {
return;
}
if (el.classList?.contains(parentClass)) {
return el;
}
if (stopHandle && stopHandle(el) === true) {
return;
}
return queryParentByClass(el.parentNode, parentClass);
}
/**
* dom
* @param el
*/
function getCurrentStyle(el) {
return el['currentStyle'] || window.getComputedStyle(el, null) || {};
}
/**
*
*/
export function getStyleString(obj) {
const keys = Object.keys(obj);
if (!keys.length) {
return '';
}
return keys.map((key) => key + ':' + obj[key]).join(';') + ';';
}
/**
*
*/
export function getModalContainer() {
const elem = document.querySelector('.' + containerClass);
if (elem) {
return elem;
}
const el = document.createElement('div');
el.classList.add(containerClass);
document.body.appendChild(el);
return el;
}
/**
*
*/
function getVisibleModalWrap() {
return getModalContainer().querySelectorAll(
`.${wrapClass}:not(.${closedClass})`
);
}
/**
* zIndex
*/
function getModalMaxIndex(el) {
const wrapEl = getVisibleModalWrap();
let maxIndex = 0;
if (wrapEl) {
for (let i = 0; i < wrapEl.length; i++) {
const index = Number(
getCurrentStyle(wrapEl[i]).zIndex || modalDefaultZIndex
);
if (index >= maxIndex) {
if (el) {
if (wrapEl[i] !== el) {
maxIndex = index + 1;
}
} else {
maxIndex = index + 1;
}
}
}
}
return maxIndex || modalDefaultZIndex;
}
/**
*
*/
const modalMovableListener = function (event) {
const headerEl = queryParentByClass(event.target, headerClass);
if (!headerEl) {
return;
}
const modalEl = headerEl.parentNode?.parentNode;
const wrapEl = modalEl?.parentNode;
const wrapClass = wrapEl?.classList;
if (wrapClass?.contains(fullscreenClass)) {
return;
}
const moveOut = wrapClass?.contains(moveOutClass);
const moveOutPositive = wrapClass?.contains(moveOutPositiveClass);
const multiple = wrapClass?.contains(multipleClass);
if (!wrapClass?.contains(movableClass) && !moveOut) {
return;
}
modalEl.style.userSelect = 'none';
initModalStyle(modalEl);
// 获取原始位置
const downX = event.clientX;
const downY = event.clientY;
const downOL = modalEl.offsetLeft;
const downOT = modalEl.offsetTop;
// 鼠标移动事件
const mousemoveFn = function (e) {
let l = e.clientX - downX + downOL;
let t = e.clientY - downY + downOT;
// 边界判断
if (!moveOut) {
const limitL = wrapEl.clientWidth - modalEl.clientWidth - 1;
if (l < 0) {
l = 0;
} else if (l > limitL) {
l = limitL;
}
const limitT = wrapEl.clientHeight - modalEl.clientHeight - 1;
if (t > limitT) {
t = limitT;
}
if (t < 0) {
t = 0;
}
} else if (moveOutPositive) {
const limitL = wrapEl.clientWidth - 50;
if (l < 0) {
l = 0;
} else if (multiple && l > limitL) {
l = limitL;
}
const limitT = wrapEl.clientHeight - 50;
if (multiple && t > limitT) {
t = limitT;
}
if (t < 0) {
t = 0;
}
}
// 移动 dialog
modalEl.style.left = l + 'px';
modalEl.style.top = t + 'px';
modalEl.style.transformOrigin = 'center';
};
// 鼠标抬起事件
const mouseupFn = function () {
modalEl.style.userSelect = '';
document.removeEventListener('mousemove', mousemoveFn);
document.removeEventListener('mouseup', mouseupFn);
};
// 添加鼠标事件监听
document.addEventListener('mousemove', mousemoveFn);
document.addEventListener('mouseup', mouseupFn);
};
/**
*
*/
const modalResizableListener = function (event) {
const modalEl = queryParentByClass(event.target, modalClass);
if (!modalEl) {
return;
}
const wrapEl = modalEl.parentNode;
const wrapClass = wrapEl?.classList;
if (!wrapClass?.contains(resizableClass)) {
return;
}
if (wrapClass?.contains(fullscreenClass)) {
return;
}
const moveOut = wrapClass?.contains(moveOutClass);
const canSetWidth = !wrapClass?.contains(resizableVerticalClass);
const canSetHeight = !wrapClass?.contains(resizableHorizontalClass);
const limitX =
modalEl.clientWidth +
modalEl.offsetLeft -
wrapEl.scrollLeft +
wrapEl.offsetLeft;
const limitY =
modalEl.clientHeight +
modalEl.offsetTop -
wrapEl.scrollTop +
wrapEl.offsetTop;
if (
event.clientX > limitX ||
limitX - event.clientX > 10 ||
event.clientY > limitY ||
limitY - event.clientY > 10
) {
return;
}
modalEl.style.userSelect = 'none';
initModalStyle(modalEl);
// 获取原始位置
const downX = event.clientX;
const downY = event.clientY;
const downW = modalEl.clientWidth;
const downH = modalEl.clientHeight;
// 鼠标移动事件
const mousemoveFn = function (e) {
if (canSetWidth) {
const w = e.clientX - downX + downW;
const maxW = wrapEl.clientWidth - modalEl.offsetLeft - 1;
const nw =
(w < defaultMinWidth
? defaultMinWidth
: !moveOut && w > maxW
? maxW
: w) + 'px';
modalEl.style.width = nw;
modalEl.style.maxWidth = nw;
modalEl.style.minWidth = nw;
}
if (canSetHeight) {
const h = e.clientY - downY + downH;
const maxH = wrapEl.clientHeight - modalEl.offsetTop - 1;
const nh =
(h < defaultMinHeight
? defaultMinHeight
: !moveOut && h > maxH
? maxH
: h) + 'px';
modalEl.style.height = nh;
modalEl.style.maxHeight = nh;
modalEl.style.minHeight = nh;
}
modalEl.style.transformOrigin = 'center';
};
// 鼠标抬起事件
const mouseupFn = function () {
modalEl.style.userSelect = '';
document.removeEventListener('mousemove', mousemoveFn);
document.removeEventListener('mouseup', mouseupFn);
};
// 添加鼠标事件监听
document.addEventListener('mousemove', mousemoveFn);
document.addEventListener('mouseup', mouseupFn);
};
/**
*
*/
const modalAutoSetTopListener = function (event) {
const modalEl = queryParentByClass(event.target, modalClass);
setModalTop(modalEl);
};
/**
*
*/
export function useModalMovable() {
if (movableIsUse) {
return;
}
movableIsUse = true;
document.removeEventListener('mousedown', modalMovableListener);
document.addEventListener('mousedown', modalMovableListener);
}
/**
*
*/
export function useModalResizable() {
if (resizableIsUse) {
return;
}
resizableIsUse = true;
document.removeEventListener('mousedown', modalResizableListener);
document.addEventListener('mousedown', modalResizableListener);
}
/**
*
*/
export function useModalAutoSetTop() {
if (setTopIsUse) {
return;
}
setTopIsUse = true;
document.removeEventListener('mousedown', modalAutoSetTopListener);
document.addEventListener('mousedown', modalAutoSetTopListener);
}
/**
*
* @param modalEl
*/
export function setModalTop(modalEl) {
const wrapEl = modalEl?.parentNode;
if (!wrapEl?.classList?.contains(multipleClass)) {
return;
}
const zIndex = Number(getCurrentStyle(wrapEl).zIndex || modalDefaultZIndex);
const maxIndex = getModalMaxIndex(wrapEl);
if (maxIndex > zIndex) {
wrapEl.style.zIndex = String(maxIndex);
const rootEl = wrapEl.parentNode;
if (rootEl) {
rootEl.style.setProperty('--modal-multiple-z-index', String(maxIndex));
}
}
}
/**
*
* @param selector
* @param width
*/
export function resetModalStyle(
modalEl,
width
) {
if (!modalEl) {
return;
}
modalEl.style.top = '';
modalEl.style.left = '';
modalEl.style.bottom = '';
modalEl.style.right = '';
modalEl.style.margin = '';
modalEl.style.position = '';
modalEl.style.display = '';
modalEl.style.verticalAlign = '';
modalEl.style.height = '';
modalEl.style.maxHeight = '';
modalEl.style.minHeight = '';
if (width != null) {
modalEl.style.width = typeof width === 'number' ? width + 'px' : width;
}
modalEl.style.maxWidth = '';
modalEl.style.minWidth = '';
}
/**
*
* @param modalEl el
* @param position
* @param moveOut
*/
export function setModalPosition(
modalEl,
position,
moveOut
) {
const wrapEl = modalEl.parentNode;
if (!wrapEl) {
return;
}
initModalStyle(modalEl);
const maxTop = wrapEl.clientHeight - modalEl.clientHeight - (moveOut ? 0 : 2);
const maxLeft = wrapEl.clientWidth - modalEl.clientWidth - (moveOut ? 0 : 1);
if (position === 'top') {
modalEl.style.top = '0px';
modalEl.style.left = `${maxLeft / 2}px`;
} else if (position === 'bottom') {
modalEl.style.top = `${maxTop}px`;
modalEl.style.left = `${maxLeft / 2}px`;
} else if (position === 'left') {
modalEl.style.top = `${maxTop / 2}px`;
modalEl.style.left = '0px';
} else if (position === 'right') {
modalEl.style.top = `${maxTop / 2}px`;
modalEl.style.left = `${maxLeft}px`;
} else if (position === 'leftTop') {
modalEl.style.top = '0px';
modalEl.style.left = '0px';
} else if (position === 'leftBottom') {
modalEl.style.top = `${maxTop}px`;
modalEl.style.left = '0px';
} else if (position === 'rightTop') {
modalEl.style.top = '0px';
modalEl.style.left = `${maxLeft}px`;
} else if (position === 'rightBottom') {
modalEl.style.top = `${maxTop}px`;
modalEl.style.left = `${maxLeft}px`;
} else if (position === 'center') {
modalEl.style.top = `${maxTop / 2}px`;
modalEl.style.left = `${maxLeft / 2}px`;
} else if (typeof position === 'object') {
if (position.top != null) {
modalEl.style.top =
typeof position.top === 'number' ? `${position.top}px` : position.top;
} else if (position.left != null) {
modalEl.style.top = `${maxTop / 2}px`;
}
if (position.left != null) {
modalEl.style.left =
typeof position.left === 'number'
? `${position.left}px`
: position.left;
} else if (position.top != null) {
modalEl.style.left = `${maxLeft / 2}px`;
}
}
}
/**
*
* @param modalEl el
* @param position
* @param moveOut
* @param force
*/
export function setInitPosition(
modalEl,
position,
moveOut,
force
) {
if (
modalEl &&
position &&
(force || !modalEl.getAttribute('init-position'))
) {
modalEl.setAttribute('init-position', '1');
setModalPosition(modalEl, position, moveOut);
}
}

View File

@ -0,0 +1,125 @@
<template>
<a-space :size="16">
<template v-for="(tool, index) in tools">
<!-- 刷新 -->
<CommonToolItem v-if="tool === 'reload'" :key="'reload' + index" :placement="tipsPlacement" title="刷新" @click="reload">
<ReloadOutlined />
</CommonToolItem>
<!-- 密度设置 -->
<CommonToolItem v-if="tool === 'size'" :key="'size' + index" :placement="tipsPlacement" title="密度">
<a-dropdown :trigger="['click']" :overlay-style="{ minWidth: '80px' }" placement="bottomRight">
<ColumnHeightOutlined />
<template #overlay>
<a-menu :selected-keys="selectedKeys" @click="updateSize">
<a-menu-item key="default">默认</a-menu-item>
<a-menu-item key="middle">中等</a-menu-item>
<a-menu-item key="small">紧凑</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</CommonToolItem>
<!-- 列设置 -->
<CommonToolItem v-if="tool === 'columns'" :key="'columns' + index" :placement="tipsPlacement" title="列设置" @click="columnConfig">
<SettingOutlined />
</CommonToolItem>
<!-- 全屏切换 -->
<CommonToolItem
v-if="tool === 'fullscreen'"
:key="'fullscreen' + index"
:placement="tipsPlacement"
:title="props.fullscreen ? '取消全屏' : '全屏'"
@click="toggleFullscreen"
>
<FullscreenExitOutlined v-if="props.fullscreen" />
<FullscreenOutlined v-else />
</CommonToolItem>
</template>
<!-- 自定义列 -->
<Custom
v-model:visible="isShowCustom"
v-if="isShowCustom"
:data="props.columns"
@done="updateColumns"
:fieldBusinessCode="fieldBusinessCode"
/>
</a-space>
</template>
<script setup name="TableTool">
import { computed, ref } from 'vue';
import { getSizeCacheKey } from '../util';
const props = defineProps({
//
tools: {
type: Array,
default: () => {
return ['reload', 'size', 'columns', 'fullscreen'];
}
},
//
size: {
type: String,
default: 'small'
},
//
columns: {
type: Array,
default: () => {
return [];
}
},
//
fieldBusinessCode: String,
//
fullscreen: Boolean,
// key
cacheKey: String
});
const emits = defineEmits(['reload', 'update:size', 'update:columns', 'update:fullscreen']);
//
const isShowCustom = ref(false);
// tooltip
const tipsPlacement = computed(() => {
return props.fullscreen ? 'bottom' : 'top';
});
//
const selectedKeys = computed(() => {
return [props.size];
});
/* 刷新表格 */
const reload = () => {
emits('reload');
};
/* 修改表格尺寸 */
const updateSize = ({ key }) => {
if (props.cacheKey) {
localStorage.setItem(getSizeCacheKey(props.cacheKey), JSON.stringify(key));
}
emits('update:size', key);
};
//
const columnConfig = () => {
isShowCustom.value = true;
};
//
const updateColumns = columns => {
emits('update:columns', columns);
};
/* 全屏切换 */
const toggleFullscreen = () => {
emits('update:fullscreen', !props.fullscreen);
};
</script>
<style scoped lang="less"></style>

View File

@ -1,20 +1,55 @@
<template>
<a-row class="table-top">
<div :class="['table-top', { 'table-fullscreen': tableFullscreen }, { 'table-height-100': props.height100 }]">
<div class="table-tool" v-if="props.showTool">
<div class="table-tool-top">
<div class="table-tool-top-left">
<a-space :size="16" class="table-tool-top-left-space">
<span class="total-num" v-if="showToolTotal"> {{ props.isPage ? pagination.total : list?.length }} </span>
<slot name="toolLeft"></slot>
</a-space>
</div>
<div class="table-tool-top-right">
<a-space :size="16">
<slot name="toolRight"></slot>
<!-- 工具栏 -->
<TableTool
v-if="props.showTableTool"
:tools="props.tools"
:size="tableSize"
:cacheKey="cacheKey"
:fullscreen="tableFullscreen"
@reload="reload"
:columns="tableColumn"
:fieldBusinessCode="props.fieldBusinessCode"
@update:size="onTableSizeChange"
@update:columns="onColumnsChange"
@update:fullscreen="onFullscreenChange"
/>
</a-space>
</div>
</div>
<div class="table-tool-bottom">
<slot name="toolBottom"></slot>
</div>
</div>
<a-table
:data-source="list"
:row-key="rowId"
:size="size"
:size="tableSize"
class="table"
:bordered="bordered"
style="width: 100%"
:columns="
columns.filter((col, num) => {
if (col.isShow) return col;
tableColumn.filter((col, num) => {
if (col?.checked) return col;
})
"
:loading="tableLoading"
:defaultExpandedRowKeys="props.defaultExpandedRowKeys"
v-model:expandedRowKeys="expandedRowKeys"
:expandIconColumnIndex="props.expandIconColumnIndex"
:pagination="isPage ? pagination : false"
@change="tableChange"
@expand="expand"
:row-selection="
rowSelection
? {
@ -29,11 +64,12 @@
"
:scroll="list?.length > 0 ? scroll : { y: '100%' }"
:customRow="customRow"
:childrenColumnName="props.childrenColumnName"
>
<template v-slot:[item]="scope" v-for="item in renderArr">
<template v-slot:[item]="scope" v-for="item in renderArr" :key="item + 'slot'">
<template v-if="item == 'bodyCell'">
<slot :name="item" :scope="scope" v-bind="scope || {}">
<template v-if="scope.column.title == '序号'">{{ scope.index + 1 }}</template>
<template v-if="scope.column?.title == '序号'">{{ scope.index + 1 }}</template>
</slot>
</template>
<template v-else>
@ -41,12 +77,21 @@
</template>
</template>
</a-table>
</a-row>
</div>
</template>
<script setup name="CommonTable">
import { onMounted, reactive, ref, useSlots, watch } from 'vue';
<script setup>
import { getCacheSize, getInitColumnsAndCache } from './util';
import { onMounted, reactive, ref, useSlots, watch, nextTick, defineAsyncComponent } from 'vue';
import Request from '@/utils/request/request-util';
import { camelToUnderline } from '@/utils/common/util';
import { CustomApi } from '@/components/common/Custom/api/CustomApi';
const TableTool = defineAsyncComponent(() => import('./components/table-tool.vue'));
defineOptions({
name: 'GunsTable'
});
const props = defineProps({
//
@ -136,10 +181,85 @@ const props = defineProps({
dataSource: {
type: Array,
default: []
},
expandIconColumnIndex: {
type: Number,
default: 0
},
isLoad: {
type: Function,
default: () => {
return true;
}
},
// , v-model
selection: Array,
//
loading: {
type: Boolean,
default: false
},
//
defaultExpandedRowKeys: Array,
//
expandedRowKeys: Array,
//
showTool: {
type: Boolean,
default: true
},
//
showTableTool: {
type: Boolean,
default: false
},
//
tools: {
type: Array,
default: () => {
return ['reload', 'size', 'columns', 'fullscreen'];
}
},
// key
cacheKey: String,
//
fieldBusinessCode: {
type: String,
default: ''
},
//
showToolTotal: {
type: Boolean,
default: true
},
// children
childrenColumnName: {
type: String,
default: 'children'
},
// url
montageParams: {
type: Boolean,
default: false
},
height100: {
type: Boolean,
default: true
}
});
const emits = defineEmits(['tableListChange', 'onSelect', 'onSelectAll']);
const emits = defineEmits([
'tableListChange',
'onSelect',
'onSelectAll',
'customRowClick',
'getTotal',
'update:selection',
'expand',
'size-change',
'columns-change',
'fullscreen-change'
]);
//
const list = ref([]);
//
@ -167,15 +287,46 @@ const currentSelectedRows = ref([]);
const slots = useSlots();
const renderArr = Object.keys(slots);
//
const expandedRowKeys = ref([]);
//
const tableSize = ref('small');
//
const tableFullscreen = ref(false);
//
const tableColumn = ref([]);
onMounted(() => {
getColumnConfig(true);
if (props.isInit) {
getTableList();
}
});
//
const getColumnConfig = async (init = false) => {
let newColumns = props.columns;
if (props.fieldBusinessCode && init) {
const res = await CustomApi.getUserConfig({ fieldBusinessCode: props.fieldBusinessCode });
if (res.tableWidthJson) {
newColumns = JSON.parse(res.tableWidthJson);
}
}
if (newColumns) {
tableColumn.value = getInitColumnsAndCache(newColumns, props.cacheKey, true);
} else {
tableColumn.value = [];
}
};
//
const getTableList = () => {
if (props.url) {
expandedRowKeys.value = [];
if (props.url && props.isLoad()) {
tableLoading.value = true;
let params = {
...props.where
@ -183,7 +334,7 @@ const getTableList = () => {
//
if (props.isSort) {
params.sortBy = sortBy.value;
params.orderBy = orderBy.value;
params.orderBy = camelToUnderline(orderBy.value);
}
//
@ -192,7 +343,24 @@ const getTableList = () => {
params.pageSize = pagination.pageSize || 20;
}
Request[props.methods](props.url, params)
// posturl
let requestUrl = '';
if (props.montageParams) {
if (params === undefined) {
params = {};
}
let paramUrl = '?';
for (let field in params) {
if (params[field]) {
paramUrl = paramUrl + field + '=' + params[field] + '&';
}
}
paramUrl = paramUrl.substring(0, paramUrl.length - 1);
requestUrl = `${props.url}${paramUrl}`;
} else {
requestUrl = props.url;
}
Request[props.methods](requestUrl, props.montageParams ? {} : params)
.then(res => {
//
if (props.isPage) {
@ -201,14 +369,16 @@ const getTableList = () => {
}
list.value = res.data.rows;
pagination.total = res.data.totalRows;
emits('getTotal', res.data.totalRows);
} else {
if (props.customData) {
list.value = props.customData(res);
}
list.value = res.data;
emits('getTotal', list.value?.length ?? 0);
}
emits('tableListChange', list.value);
// emits('tableListChange', list.value);
})
.finally(() => (tableLoading.value = false));
}
@ -221,8 +391,40 @@ const onSizeChange = (current, pageSize) => {
};
//
const onSelectChange = selectedRowKeys => {
const onSelectChange = (selectedRowKeys, rows) => {
selectedRowList.value = selectedRowKeys;
const selectedRows = selectedRowKeys
.map(k => {
const temp = rows.find(d => getFieldValue(d, props.rowId) === k);
if (temp != null) {
return temp;
}
if (props.selection == null || !props.selection.length) {
return null;
}
return props.selection.find(t => getFieldValue(t, props.rowId) === k);
})
.filter(d => d != null);
emits('update:selection', selectedRows);
};
/**
* 获取任意数据任意字段的值, 支持多层 *.*
* @param data 数据
* @param field 字段
*/
const getFieldValue = (data, field) => {
if (typeof field === 'function') {
return field(data);
}
if (field) {
let value = data;
field.split('.').forEach(f => {
value = value ? value[f] : null;
});
return value;
}
};
// /
@ -261,8 +463,10 @@ const tableChange = (pagination, filters, sorter) => {
* 重置
*/
const reload = () => {
pagination.current = 1;
getTableList();
nextTick(() => {
pagination.current = 1;
getTableList();
});
};
//
@ -293,10 +497,40 @@ const customRow = (record, index) => {
}
}
}
emits('customRowClick', record, index);
}
};
};
//
const expand = (expanded, record) => {
emits('expand', expanded, record);
};
const setList = data => {
setTimeout(() => {
list.value = [...data];
}, 500);
};
/* 表格大小事件 */
const onTableSizeChange = value => {
tableSize.value = value;
emits('size-change', value);
};
/* 表格列改变事件 */
const onColumnsChange = value => {
tableColumn.value = value;
emits('columns-change', value);
};
/* 表格全屏切换切换事件 */
const onFullscreenChange = value => {
tableFullscreen.value = value;
emits('fullscreen-change', value);
};
watch(
() => props.dataSource,
val => {
@ -304,11 +538,75 @@ watch(
list.value = val;
}
},
{ deep: true, immediate: true }
);
watch(
() => props.columns,
columns => {
onColumnsChange(columns);
},
{
deep: true
}
);
watch(
() => props.selection,
selection => {
if (props.isRadio) {
return;
}
if (selection?.length) {
const keys = selection.map(d => getFieldValue(d, props.rowId));
if (keys.length !== selectedRowList.value.length) {
selectedRowList.value = keys;
} else {
for (let i = 0; i < keys.length; i++) {
if (!selectedRowList.value.includes(keys[i])) {
selectedRowList.value = keys;
return;
}
}
}
} else if (selectedRowList.value.length) {
selectedRowList.value = [];
}
},
{
immediate: true,
deep: true
}
);
watch(
() => props.loading,
val => {
tableLoading.value = val;
}
);
watch(
() => props.expandedRowKeys,
val => {
expandedRowKeys.value = val;
},
{ deep: true }
);
watch(
() => props.size,
val => {
tableSize.value = getCacheSize(props.cacheKey) ?? props.size ?? 'small';
},
{ deep: true, immediate: true }
);
defineExpose({
reload,
list,
setList,
expandedRowKeys,
tableLoading,
selectedRowList
});
@ -318,44 +616,116 @@ defineExpose({
.table-top {
position: relative;
height: 100%;
display: flex;
flex-direction: column;
.table-bottom {
position: absolute;
bottom: 15px;
left: -20px;
}
}
.table-tool {
min-height: 50px;
padding: 8px 16px;
display: flex;
height: auto;
flex-direction: column;
align-items: center;
border: 1px solid rgba(197, 207, 209, 0.4);
border-top-right-radius: 8px;
border-top-left-radius: 8px;
.table-tool-top {
width: 100%;
height: auto;
flex: auto;
display: flex;
flex-direction: row;
align-items: center;
.table-tool-top-left,
.table-tool-top-right {
display: flex;
flex: auto;
align-items: center;
}
.table-tool-top-left {
margin-right: 10px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.table-tool-top-right {
white-space: nowrap;
justify-content: end;
}
.table-tool-top-left-space {
width: 100%;
:deep(.ant-space-item:last-child) {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
}
}
.table-tool-bottom {
width: 100%;
height: auto;
display: flex;
flex-direction: row;
align-items: center;
}
}
.total-num {
font-size: 16px;
color: #60666b;
}
:deep(.ant-table) {
border-left: 1px solid rgba(197, 207, 209, 0.4);
border-right: 1px solid rgba(197, 207, 209, 0.4);
border-bottom: 1px solid rgba(197, 207, 209, 0.4);
border-top: v-bind('props.showTool ? 0 : "1px solid rgba(197, 207, 209, 0.4)"');
}
:deep(.table) {
width: 100%;
flex: auto;
::-webkit-scrollbar {
width: 10px !important;
}
}
:deep(.ant-spin-nested-loading) {
height: 100%;
.ant-spin-container {
.table-height-100 {
:deep(.ant-spin-nested-loading) {
height: 100%;
display: flex;
flex-direction: column;
}
.ant-table-container {
height: 100%;
display: flex;
flex-direction: column;
.ant-table-body {
position: relative;
flex: 1;
table {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
.ant-spin-container {
height: 100%;
display: flex;
flex-direction: column;
}
.ant-table-container {
height: 100%;
display: flex;
flex-direction: column;
.ant-table-body {
position: relative;
flex: 1;
table {
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
}
}
}
}
.ant-table {
flex: 1;
.ant-table {
flex: 1;
}
}
}
:deep(.ant-table-body) {
overflow-y: auto;
}
@ -366,4 +736,43 @@ defineExpose({
:deep(.ant-table-bordered div.ant-table-body:before) {
background: transparent;
}
.table-fullscreen {
z-index: 999;
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
overflow: auto;
padding: 0 0 16px 0;
box-sizing: border-box;
background: #fff;
.ant-table-pagination {
margin-bottom: 0;
padding: 0 16px;
}
}
@media screen and (max-width: 768px) {
.table-tool {
justify-content: left;
min-height: 50px;
height: auto !important;
flex-wrap: wrap;
}
.table-tool-top-left,
.table-tool-top-right {
flex: none !important;
}
.table-tool-top-left {
margin-right: 10px;
}
:deep(.ant-table-thead .ant-table-cell-fix-right-first) {
right: 1px !important;
}
}
</style>

View File

@ -0,0 +1,220 @@
import { eachTreeData } from '@/utils/common/menu-util'
/**
* key
*/
export function getSizeCacheKey(cacheKey) {
return `${cacheKey}Size`;
}
/**
*
* @param cacheKey key
*/
export function getCacheSize(cacheKey) {
if (cacheKey) {
const size = localStorage.getItem(getSizeCacheKey(cacheKey));
if (size) {
return JSON.parse(size);
}
}
}
/**
*
* @param columns
*/
export function getInitColumns(columns) {
const data = [];
columns.forEach((d) => {
if (d.children?.length) {
const children = getInitColumns(d.children);
if (children.length) {
data.push({ ...d, checked: true, children });
}
} else {
data.push({ ...d, checked: d.hideInTable ? false : true, });
}
});
return data;
}
/**
*
* @param columns
* @param cacheKey key
* @param sortable
*/
export function getInitColumnsAndCache(
columns,
cacheKey,
sortable
) {
const cacheSetting = getCacheCols(cacheKey);
if (!cacheSetting) {
return getInitColumns(columns);
}
return getCheckedColumns(
columns,
cacheSetting.data,
cacheSetting.checkedIds,
sortable
);
}
/**
*
* @param columns
* @param cols
* @param checkedIds id
* @param sortable
*/
export function getCheckedColumns(
columns,
cols,
checkedIds,
sortable
) {
const data = [];
if (columns) {
columns.forEach((d) => {
const key = getColKey(d);
const temp = cols.find((c) => c.id === key);
const fixed = temp?.fixed ?? d.fixed;
const checked = temp?.checked ?? true;
if (d.children) {
const children = getCheckedColumns(
d.children,
cols,
checkedIds,
sortable
);
if (children.length) {
data.push({ ...d, fixed, checked, children });
}
} else {
data.push({ ...d, fixed, checked });
}
});
}
// 排序
if (sortable && data.length) {
data.sort((a, b) => {
const aId = getColKey(a);
const bId = getColKey(b);
let ai = cols.findIndex((c) => c.id === aId);
let bi = cols.findIndex((c) => c.id === bId);
// 父级列处理
if (ai === -1 && a.children?.length) {
const id = getColKey(a.children[0]);
ai = cols.findIndex((c) => c.id === id);
}
if (bi === -1 && b.children?.length) {
const id = getColKey(b.children[0]);
bi = cols.findIndex((c) => c.id === id);
}
// 固定列处理
if (ai === -1 && a.hideInSetting && a.fixed === 'right') {
ai = cols.length;
}
if (a.fixed === true || a.fixed === 'left') {
ai -= cols.length;
} else if (a.fixed === 'right' || (a.hideInSetting && !a.fixed)) {
ai += cols.length;
}
if (bi === -1 && b.hideInSetting && b.fixed === 'right') {
bi = cols.length;
}
if (b.fixed === true || b.fixed === 'left') {
bi -= cols.length;
} else if (b.fixed === 'right' || (b.hideInSetting && !b.fixed)) {
bi += cols.length;
}
return ai - bi;
});
}
return data;
}
/**
*
* @param cacheKey key
*/
export function getCacheCols(cacheKey) {
if (cacheKey) {
try {
const temp = localStorage.getItem(getColsCacheKey(cacheKey));
if (temp) {
const data = JSON.parse(temp);
if (Array.isArray(data)) {
const checkedIds = data.filter((d) => d.checked).map((d) => d.id);
return {
data,
checkedIds,
isAllChecked: data.length > 0 && data.length === checkedIds.length,
isIndeterminate:
checkedIds.length !== 0 && data.length !== checkedIds.length
};
}
}
} catch (e) {
}
}
}
/**
* key
*/
export function getColsCacheKey(cacheKey) {
return `${cacheKey}Cols`;
}
/**
* key
*/
export function getColKey(column) {
const key = column.key || column.dataIndex;
return (Array.isArray(key) ? key : [key]).join('.');
}
/**
*
* @param columns
* @param untitledText
*/
export function getSettingCols(
columns,
untitledText,
cacheKey
) {
const cacheSetting = getCacheCols(cacheKey);
if (cacheSetting) {
return cacheSetting;
}
const data = [];
if (columns) {
eachTreeData(columns, (d) => {
const id = getColKey(d);
if (id && !d.children?.length && !d.hideInSetting) {
data.push({
id,
key: d.key,
width: d.width || 120,
dataIndex: d.dataIndex,
title: d.title || untitledText,
checked: d.checked,
fixed: d.fixed,
...d
});
}
});
}
const checkedIds = data.filter((d) => d.checked).map((d) => d.id);
return {
data,
checkedIds,
isAllChecked: data.length > 0 && data.length === checkedIds.length,
isIndeterminate:
checkedIds.length !== 0 && data.length !== checkedIds.length
};
}

View File

@ -0,0 +1,47 @@
<!-- 表头工具栏按钮 -->
<template>
<div class="guns-tool-item" @click="onClick">
<ATooltip :title="title" :visible="visible" :placement="placement" @update:visible="updateVisible">
<slot></slot>
</ATooltip>
</div>
</template>
<script setup>
import { ref, watch } from 'vue';
import { Tooltip as ATooltip } from 'ant-design-vue/es';
const props = defineProps({
title: String,
placement: String,
disabled: Boolean
});
const emits = defineEmits(['click']);
const visible = ref(false);
const updateVisible = value => {
if (!props.disabled) {
visible.value = value;
}
};
const onClick = e => {
visible.value = false;
emits('click', e);
};
watch(
() => props.disabled,
value => {
if (!value) {
visible.value = false;
}
}
);
</script>
<style scoped>
.guns-tool-item {
font-size: 16px;
}
</style>

View File

@ -1,12 +1,12 @@
<template>
<a-modal
:width="526"
<common-modal
:width="600"
:visible="props.visible"
:confirm-loading="loading"
:title="'自定义显示列'"
:body-style="{ padding: '16px 24px' }"
@ok="save"
wrapClassName="custom-modal"
wrapClassName="project-modal"
:maskClosable="false"
@cancel="cancel"
>
@ -27,44 +27,65 @@
<icon-font iconClass="icon-opt-zidingyilie" color="#60666b" fontSize="20px"></icon-font>
</td>
<!-- 名称 -->
<td style="text-align: left; width: 260px" class="">
<td style="text-align: left; width: 260px">
{{ element.title }}
</td>
<!-- 是否显示 -->
<td style="text-align: center; padding: 8px" class="">
<a-switch v-model:checked="element.isShow" :disabled="element.title == '序号'" />
<td style="text-align: center; padding: 8px">
<a-switch
:checked="checkedIds.includes(element.id)"
:disabled="element.title == '序号'"
@change="showChange($event, element)"
/>
</td>
<!-- 是否显示 -->
<td style="text-align: center; padding: 8px 8px 8px 32px" class="">
<td style="text-align: center; padding: 8px 8px 8px 32px; width: 150px">
<a-input v-model:value="element.width"></a-input>
</td>
<td
:class="[
'table-tool-fixed-item',
{
active: element.fixed === true || element.fixed === 'left'
}
]"
@click="onItemFixedLeft(element)"
>
<ATooltip title="固定在左侧">
<VerticalRightOutlined />
</ATooltip>
</td>
<td
:class="[
'table-tool-fixed-item',
{
active: element.fixed === 'right'
}
]"
@click="onItemFixedRight(element)"
>
<ATooltip title="固定在右侧">
<VerticalLeftOutlined />
</ATooltip>
</td>
</tr>
</template>
</draggable>
</div>
<template #footer>
<div class="footer">
<div>
<vxe-switch v-model="fieldType" :open-value="1" :close-value="2" :disabled="isDisabled"></vxe-switch>是否同步全体员工
<a-tooltip>
<template #title>只有管理员才能操作</template>
<question-circle-outlined />
</a-tooltip>
</div>
<a-space>
<a-button @click="cancel" :loading="loading">取消</a-button>
<a-button type="primary" @click="save" :loading="loading">确定</a-button>
</a-space>
</div>
<a-space>
<a-button @click="cancel" class="border-radius grey" type="link" :loading="loading">取消</a-button>
<a-button type="primary" @click="save" class="border-radius" :loading="loading">确定</a-button>
</a-space>
</template>
</a-modal>
</common-modal>
</template>
<script setup name="Custom">
import draggable from 'vuedraggable';
import { CustomApi } from './api/CustomApi';
import { computed, onMounted, ref } from 'vue';
import { useUserStore } from '@/store/modules/user';
import { onMounted, ref } from 'vue';
import { getSettingCols, getCheckedColumns, getInitColumnsAndCache } from '@/components/common/CommonTable/util';
const props = defineProps({
//
@ -76,51 +97,66 @@ const props = defineProps({
//
fieldBusinessCode: {
type: String,
default: 'PROJECT_TABLE'
}
default: ''
},
cacheKey: String,
untitledText: String
});
const emits = defineEmits(['update:visible', 'done']);
// store
const userStore = useUserStore();
//
const isDisabled = computed(() => {
if (userStore.authorities && userStore.authorities.find(item => item == 'SYS_CONFIG')) {
return false;
}
return true;
});
//
const loading = ref(false);
//
const columns = ref([]);
//
const fieldType = ref(2);
//
const checkedIds = ref([]);
onMounted(() => {
if (props.data) {
columns.value = deepClone(props.data);
let arr = props.data;
const hasCheckedField = props.data.some(item => 'checked' in item);
if (!hasCheckedField) {
arr = getInitColumnsAndCache(props.data, props.cacheKey, true);
}
const result = getSettingCols(arr, props.untitledText, props.cacheKey);
columns.value = result.data;
checkedIds.value = result.checkedIds;
}
});
const deepClone = obj => {
let result;
if (Array.isArray(obj)) {
result = [];
} else if (typeof obj === 'object' && obj !== null) {
result = {};
const showChange = (e, element) => {
if (e) {
checkedIds.value.push(element.id);
} else {
return obj;
checkedIds.value.splice(
checkedIds.value.findIndex(c => c === element.id),
1
);
}
Object.keys(obj).forEach(key => {
if (typeof obj[key] === 'object' && obj[key] !== null) {
result[key] = deepClone(obj[key]);
} else {
result[key] = obj[key];
}
columns.value.forEach(d => {
d.checked = checkedIds.value.includes(d.id);
});
return result;
};
/* 固定列左侧 */
const onItemFixedLeft = col => {
col.fixed = col.fixed === true || col.fixed === 'left' ? false : 'left';
onColumnSortChange();
};
/* 固定列右侧 */
const onItemFixedRight = col => {
col.fixed = col.fixed === 'right' ? false : 'right';
onColumnSortChange();
};
/* 列配置拖动改变顺序 */
const onColumnSortChange = () => {
const newColumns = getCheckedColumns(columns.value, columns.value, checkedIds.value, true);
columns.value = newColumns;
};
/**
@ -136,24 +172,27 @@ const save = () => {
if (item.width) item.width = Number(item.width);
});
let params = {
fieldBusinessCode: props.fieldBusinessCode,
fieldType: fieldType.value,
tableWidthJson: JSON.stringify(columns.value)
};
CustomApi.setTableWidth(params)
.then(res => {
//
loading.value = false;
const newColumns = getCheckedColumns(columns.value, columns.value, checkedIds.value, false);
// visible
updateVisible(false);
// done
emits('done', columns.value);
})
.catch(() => {
loading.value = false;
});
if (props.fieldBusinessCode) {
let params = {
fieldBusinessCode: props.fieldBusinessCode,
fieldType: fieldType.value,
tableWidthJson: JSON.stringify(newColumns)
};
CustomApi.setTableWidth(params)
.then(res => {
loading.value = false;
updateVisible(false);
emits('done', columns.value);
})
.catch(() => {
loading.value = false;
});
} else {
updateVisible(false);
emits('done', newColumns);
}
};
const updateVisible = value => {
@ -179,47 +218,31 @@ const cancel = () => {
border-radius: 5px;
}
}
.footer {
display: flex;
justify-content: space-between;
}
:deep(.ant-input) {
background: rgba(197, 207, 209, 0.2) !important;
}
</style>
<style lang="less">
.custom-modal {
.ant-modal-title {
color: #262626;
font-size: 18px !important;
font-style: normal;
font-weight: 500;
.table-tool-fixed-item {
text-align: center;
padding: 8px;
font-size: 13px;
margin-left: 4px;
color: var(--text-color-secondary);
transition: color 0.2s;
cursor: pointer;
&:hover {
color: var(--text-color);
}
.ant-modal-close-icon {
width: 20px;
height: 20px;
svg {
width: 20px;
height: 20px;
}
}
.ant-modal-header {
border-bottom: 0px !important;
padding: 16px 24px 0px 24px !important;
}
.ant-modal-footer {
padding: 0px 16px 16px 16px !important;
border-top: 0px !important;
&.active {
color: var(--primary-color);
}
}
</style>
<style lang="less">
.outlined {
.iconfont {
cursor: move !important;
}
}
</style>
<style scoped>
.ant-btn {
border-radius: 4px !important;
}
</style>

View File

@ -55,7 +55,7 @@ export default defineComponent({
//
const dropClick = ({ key }) => {
data.downName = props.list.filter(item => item[props.keyValue] == key)[0].name;
data.downName = props.list.filter(item => item[props.keyValue] == key)[0][props.keyName];
context.emit('dropClick', key);
};
@ -92,6 +92,7 @@ export default defineComponent({
border-radius: 4px;
color: #60666B;
font-size: 16px;
font-weight: normal;
border: 1px solid rgba(197, 207, 209, 0.60);
}
:deep(.ant-dropdown-content) {

View File

@ -79,7 +79,9 @@ const getOrgTreeData = () => {
apiLoading.value = true;
OrgApi.tree({ searchText: searchText.value, companySearchFlag: props.companySearchFlag })
.then(res => {
expandedKeys.value = res.data.expandOrgIdList;
if (searchText.value) {
expandedKeys.value = res.data.expandOrgIdList;
}
const arr = setIsLeaf(res.data.orgTreeList);
treeData.value = arr;
})

View File

@ -2,12 +2,12 @@
<template>
<a-row class="user-select" :gutter="16">
<!-- 公司选择 -->
<a-col :span="12" class="height100">
<a-col :xs='24' :sm='24' :md='12' class="height100">
<SelectionOrgTree @treeSelect="treeSelect" :company-search-flag="true" ref="selectionOrgTreeRef"></SelectionOrgTree>
</a-col>
<!-- 已选列表 -->
<a-col :span="12" class="common-height paddingTop10">
<a-col :xs='24' :sm='24' :md='12' class="common-height paddingTop10">
<selected-list v-model:list="companyList" @delete="deleteCompany" @deleteAll="deleteAll" />
</a-col>
</a-row>

View File

@ -1,11 +1,11 @@
<template>
<a-row class="user-select" :gutter="16">
<!-- 公司部门选择 -->
<a-col :span="6" class="height100">
<a-col :xs='24' :sm='24' :md='6' class="height100">
<SelectionOrgTree @treeSelect="treeSelect"></SelectionOrgTree>
</a-col>
<!-- 人员表格 -->
<a-col :span="12" class="height100">
<a-col :xs='24' :sm='24' :md='12' class="height100">
<a-card :bordered="false" style="height: 100%">
<!-- 搜索 -->
<div class="search">
@ -45,7 +45,7 @@
</a-card>
</a-col>
<!-- 已选列表 -->
<a-col :span="6" class="height100">
<a-col :xs='24' :sm='24' :md='6' class="height100">
<selected-list v-model:list="deptList" @delete="deleteUser" @deleteAll="deleteAll" />
</a-col>
</a-row>

View File

@ -1,6 +1,6 @@
<template>
<a-row class="user-select" :gutter="16">
<a-col :span="6" class="height100">
<a-col :xs='24' :sm='24' :md='6' class="height100">
<common-table
:columns="typeColumns"
bordered
@ -15,7 +15,7 @@
></common-table>
</a-col>
<!-- 字典选择 -->
<a-col :span="12" class="height100">
<a-col :xs='24' :sm='24' :md='12' class="height100">
<common-table
:columns="columns"
:where="where"
@ -33,7 +33,7 @@
></common-table>
</a-col>
<!-- 已选列表 -->
<a-col :span="6" class="height100">
<a-col :xs='24' :sm='24' :md='6' class="height100">
<selected-list v-model:list="dictList" @delete="deleteRelation" @deleteAll="deleteAll"></selected-list>
</a-col>
</a-row>

View File

@ -1,6 +1,6 @@
<template>
<a-row class="user-select" :gutter="16">
<a-col :span="12" class="height100">
<a-col :xs='24' :sm='24' :md='12' class="height100">
<a-card :bordered="false" style="height: 100%">
<!-- 搜索 -->
<div class="search">
@ -36,7 +36,7 @@
</a-card>
</a-col>
<!-- 已选列表 -->
<a-col :span="12" class="height100">
<a-col :xs='24' :sm='24' :md='12' class="height100">
<selected-list v-model:list="positionList" @delete="deleteUser" @deleteAll="deleteAll" />
</a-col>
</a-row>

View File

@ -1,6 +1,6 @@
<template>
<a-row class="user-select" :gutter="16">
<a-col :span="12" class="height100">
<a-col :xs='24' :sm='24' :md='12' class="height100">
<a-card :bordered="false" style="height: 100%">
<!-- 搜索 -->
<div class="search">
@ -34,7 +34,7 @@
</a-card>
</a-col>
<!-- 已选列表 -->
<a-col :span="12" class="height100">
<a-col :xs='24' :sm='24' :md='12' class="height100">
<selected-list v-model:list="roleList" @delete="deleteUser" @deleteAll="deleteAll" />
</a-col>
</a-row>

View File

@ -1,11 +1,11 @@
<template>
<a-row class="user-select" :gutter="16">
<!-- 公司部门选择 -->
<a-col :span="6" class="height100">
<a-col :xs='24' :sm='24' :md='6' class="height100">
<SelectionOrgTree @treeSelect="treeSelect"></SelectionOrgTree>
</a-col>
<!-- 人员表格 -->
<a-col :span="12" class="height100">
<a-col :xs='24' :sm='24' :md='12' class="height100">
<a-card :bordered="false" style="height: 100%">
<!-- 搜索 -->
<div class="search">
@ -58,7 +58,7 @@
</a-card>
</a-col>
<!-- 已选列表 -->
<a-col :span="6" class="height100">
<a-col :xs='24' :sm='24' :md='6' class="height100">
<selected-list v-model:list="userList" @delete="deleteUser" @deleteAll="deleteAll" />
</a-col>
</a-row>

View File

@ -9,6 +9,7 @@
@cancel="updateVisible(false)"
:footer="footer"
:maskClosable="false"
wrapClassName="selection-modal"
v-if="visible"
>
<div class="box">
@ -404,3 +405,17 @@ watch(
}
}
</style>
<style lang="less">
@media screen and (max-width: 768px) {
.selection-modal {
.ant-modal {
width: 100% !important;
top: 20px;
}
.user-select {
overflow-y: auto !important;
}
}
}
</style>

View File

@ -8,14 +8,15 @@
</div>
<!-- 左侧功能区 -->
<div class="guns-admin-header-tool" v-if="showLeftTool">
<div v-if="showCollapse && !collapse" class="guns-admin-header-tool-item" @click="toggleCollapse">
<MenuFoldOutlined v-if="!collapse" />
<div v-if="showCollapse" class="guns-admin-header-tool-item" @click="toggleCollapse">
<MenuUnfoldOutlined v-if="collapse" />
<MenuFoldOutlined v-else />
</div>
<div v-if="showRefresh" class="guns-admin-header-tool-item" @click="reloadPage">
<ReloadOutlined />
</div>
<!-- 自定义左侧功能 -->
<slot name="left"></slot>
<slot name="left" v-if="!isMobile"></slot>
</div>
<!-- 面包屑导航 -->
<div v-if="showBreadcrumb" class="guns-admin-breadcrumb">
@ -48,7 +49,7 @@
</LayoutMenus>
</div>
<!-- 右侧功能区 -->
<slot name="right"></slot>
<slot name="right" :isMobile="isMobile"></slot>
</div>
</template>
@ -56,6 +57,7 @@
import { defineComponent, computed } from 'vue';
import { Breadcrumb as ABreadcrumb, BreadcrumbItem as ABreadcrumbItem, message } from 'ant-design-vue/es';
import LayoutMenus from './layout-menus';
import props from '../props';
export default defineComponent({
name: 'LayoutHeader',
@ -95,7 +97,8 @@ export default defineComponent({
//
showBreadcrumb: Boolean,
//
breadcrumbSeparator: String
breadcrumbSeparator: String,
isMobile: Boolean,
},
emits: ['logo-click', 'reload-page', 'toggle-collapse', 'title-click'],
setup(props, { emit }) {

View File

@ -18,14 +18,6 @@
</template>
</LayoutMenus>
</div>
<div
v-if="showCollapse && collapse"
class="guns-admin-sidebar-tool-item"
@click="toggleCollapse"
>
<MenuUnfoldOutlined v-if="collapse" class="guns-admin-sidebar-tool-item-icon"/>
<!-- <MenuFoldOutlined v-else class="guns-admin-sidebar-tool-item-icon"/> -->
</div>
<slot name="bottom"></slot>
</div>
</template>
@ -58,8 +50,6 @@ export default defineComponent({
theme: String,
//
collapse: Boolean,
//
showCollapse: Boolean,
//
uniqueOpen: Boolean,
//

View File

@ -0,0 +1,93 @@
/** 页签 */
import { defineComponent, h } from 'vue';
import {
Dropdown as ADropdown,
Menu as AMenu,
MenuItem as AMenuItem
} from 'ant-design-vue/es';
import ReloadOutlined from '@ant-design/icons-vue/es/icons/ReloadOutlined';
import ArrowLeftOutlined from '@ant-design/icons-vue/es/icons/ArrowLeftOutlined';
import ArrowRightOutlined from '@ant-design/icons-vue/es/icons/ArrowRightOutlined';
import CloseOutlined from '@ant-design/icons-vue/es/icons/CloseOutlined';
import MinusCircleOutlined from '@ant-design/icons-vue/es/icons/MinusCircleOutlined';
import { useLocale } from '@/utils/common/iframe-component';
export default defineComponent({
name: 'LayoutTabItem',
props: {
active: String,
tabKey: String,
title: String,
item: Object
},
emits: ['menu-click'],
setup(props, { emit, slots }) {
const { locale } = useLocale({ name: 'tabs' });
/* 菜单 item 点击事件 */
const onClick = ({ key }) => {
emit('menu-click', {
key,
tabKey: props.tabKey,
item: props.item,
active: props.active
});
};
/* 渲染菜单 item */
const hMI = (
key,
label,
icon,
scale
) => {
return h(AMenuItem, { key }, () => {
return h('div', { class: 'guns-dropdown-item' }, [
h(icon, {
style: { transform: scale ? `scale(${scale})` : void 0 }
}),
h('div', { class: 'guns-dropdown-item-label' }, label)
]);
});
};
return () => {
return h(
ADropdown,
{
trigger: ['contextmenu'],
overlayClassName: 'guns-admin-tab-context-menu'
},
{
default: () => {
const tSlot = slots['tab-title'];
const option = { title: props.title, item: props.item };
return h(
'div',
{ class: 'guns-admin-tab-title' },
tSlot ? tSlot(option) : props.title
);
},
overlay: () => {
const ctxSlot = slots['context-menu'];
if (ctxSlot) {
return ctxSlot({
tabKey: props.tabKey,
item: props.item,
active: props.active
});
}
const items = [
hMI('reload', locale.value.reload, ReloadOutlined),
hMI('close', locale.value.close, CloseOutlined, 1.04),
hMI('left', locale.value.closeLeft, ArrowLeftOutlined),
hMI('right', locale.value.closeRight, ArrowRightOutlined),
hMI('other', locale.value.closeOther, MinusCircleOutlined, 1.02)
];
return h(AMenu, { selectable: false, onClick }, () => items);
}
}
);
};
}
});

View File

@ -0,0 +1,266 @@
<!-- 页签栏 -->
<template>
<div ref="tabRef" :class="['guns-admin-tabs', { 'is-show-arrow': tabArrow }]">
<TabTool :tab="true" :active="active === homePath" @click="onTabClick(homePath)">
<LayoutTabItem :title="homeTitle" :tabKey="homePath" :active="active" @menu-click="onContextMenuClick">
<template #tab-title="slotProps">
<slot name="tab-title" v-bind="slotProps || {}">
<HomeOutlined style="font-size: 14px" />
</slot>
</template>
<template v-if="$slots['context-menu']" #context-menu="slotProps">
<slot name="context-menu" v-bind="slotProps || {}"></slot>
</template>
</LayoutTabItem>
</TabTool>
<ATabs :hideAdd="true" :animated="false" type="editable-card" :activeKey="tabActive" @edit="onTabEdit" @tabClick="onTabClick">
<ATabPane v-for="(item, index) in tabs" :key="index + '-' + item.key" :closable="item.closable">
<template #tab>
<LayoutTabItem :item="item" :title="item.title" :tabKey="item.key" :active="active" @menu-click="onContextMenuClick">
<template v-if="$slots['tab-title']" #tab-title="slotProps">
<slot name="tab-title" v-bind="slotProps || {}"></slot>
</template>
<template v-if="$slots['context-menu']" #context-menu="slotProps">
<slot name="context-menu" v-bind="slotProps || {}"></slot>
</template>
</LayoutTabItem>
</template>
</ATabPane>
<template #leftExtra>
<TabTool v-if="tabArrow" class="guns-tab-arrow" @click="scrollLeft">
<LeftOutlined />
</TabTool>
</template>
<template #rightExtra>
<TabTool v-if="tabArrow" class="guns-tab-arrow" @click="scrollRight">
<RightOutlined />
</TabTool>
<TabTool>
<TabDropdown :active="active" :showRefresh="showRefresh" :bodyFullscreen="bodyFullscreen" @menu-click="onDropMenuClick">
<template v-if="$slots.dropdown" #dropdown="slotProps">
<slot name="dropdown" v-bind="slotProps || {}"></slot>
</template>
</TabDropdown>
</TabTool>
</template>
</ATabs>
</div>
</template>
<script>
import { defineComponent, ref, computed, onMounted, onBeforeUnmount } from 'vue';
import LeftOutlined from '@ant-design/icons-vue/es/icons/LeftOutlined';
import RightOutlined from '@ant-design/icons-vue/es/icons/RightOutlined';
import HomeOutlined from '@ant-design/icons-vue/es/icons/HomeOutlined';
import { Tabs as ATabs, TabPane as ATabPane } from 'ant-design-vue/es';
import SortableJs from 'sortablejs';
import TabTool from './tab-tool.vue';
import TabDropdown from './tab-dropdown';
import LayoutTabItem from './layout-tab-item';
export default defineComponent({
name: 'LayoutTabs',
components: {
LeftOutlined,
RightOutlined,
HomeOutlined,
ATabs,
ATabPane,
TabTool,
LayoutTabItem,
TabDropdown
},
props: {
//
tabs: {
type: Array,
required: true
},
//
active: {
type: String,
required: true
},
//
homePath: {
type: String,
required: true
},
//
homeTitle: {
type: String,
required: true
},
//
showRefresh: Boolean,
// tab
clickReload: Boolean,
//
bodyFullscreen: Boolean,
//
tabContextMenu: Boolean,
//
tabSortable: Boolean,
//
tabArrow: Boolean
},
emits: [
'tab-change',
'tab-remove',
'tab-remove-all',
'tab-remove-left',
'tab-remove-right',
'tab-remove-other',
'fullscreen-body',
'context-menu',
'reload-page',
'tabSortChange'
],
setup(props, { emit }) {
//
const current = { sortIns: null };
//
const tabRef = ref(null);
//
const tabActive = computed(() => {
const i = props.tabs.findIndex(d => d.key === props.active);
if (i !== -1) {
return i + '-' + props.active;
}
return props.active;
});
/* 刷新页面 */
const reloadPage = () => {
emit('reload-page');
};
/* 处理页签点击 */
const onTabClick = k => {
const tab = props.tabs.find((d, i) => i + '-' + d.key === k);
const key = tab?.key ?? k;
if (props.active === key) {
if (props.clickReload) {
reloadPage();
}
return;
}
emit('tab-change', tab ? tab : { key });
};
/* 处理页签删除 */
const onTabEdit = (k, action) => {
if (action === 'remove') {
const tab = props.tabs.find((d, i) => i + '-' + d.key === k);
const key = tab?.key ?? k;
emit('tab-remove', { key, active: props.active });
}
};
/* 下拉菜单点击 */
const onDropMenuClick = command => {
const key = props.active;
const option = { key, active: key };
switch (command) {
case 'left': //
emit('tab-remove-left', option);
break;
case 'right': //
emit('tab-remove-right', option);
break;
case 'other': //
emit('tab-remove-other', option);
break;
case 'all': //
emit('tab-remove-all', key);
break;
case 'reload': //
reloadPage();
break;
case 'fullscreen': //
emit('fullscreen-body', !props.bodyFullscreen);
break;
}
};
/* 右键菜单点击 */
const onContextMenuClick = option => {
emit('context-menu', option);
};
/* 获取页签栏 DOM */
const getTabWrapEl = () => {
const el = tabRef.value;
return el ? el.querySelector('.ant-tabs-nav-wrap') : void 0;
};
/* 左滚动页签栏 */
const scrollLeft = e => {
const el = getTabWrapEl();
if (!el) {
return;
}
e.preventDefault();
el.dispatchEvent(new WheelEvent('wheel', { deltaX: 0, deltaY: -100 }));
};
/* 右滚动页签栏 */
const scrollRight = e => {
const el = getTabWrapEl();
if (!el) {
return;
}
e.preventDefault();
el.dispatchEvent(new WheelEvent('wheel', { deltaX: 0, deltaY: 100 }));
};
/* 页签拖动排序 */
const bindDragSort = () => {
unbindDragSort();
const tabEl = getTabWrapEl();
const el = tabEl ? tabEl.querySelector('.ant-tabs-nav-list') : void 0;
if (!props.tabSortable || !el) {
return;
}
current.sortIns = new SortableJs(el, {
animation: 300,
draggable: '.ant-tabs-tab',
onUpdate: ({ oldDraggableIndex, newDraggableIndex }) => {
if (typeof oldDraggableIndex === 'number' && typeof newDraggableIndex === 'number') {
const temp = [...props.tabs];
temp.splice(newDraggableIndex, 0, temp.splice(oldDraggableIndex, 1)[0]);
emit('tabSortChange', temp);
}
},
setData: () => {}
});
};
/* 销毁页签拖动排序 */
const unbindDragSort = () => {
current.sortIns && current.sortIns.destroy();
};
onMounted(() => {
bindDragSort();
});
onBeforeUnmount(() => {
unbindDragSort();
});
return {
tabRef,
tabActive,
onTabEdit,
onTabClick,
onContextMenuClick,
onDropMenuClick,
scrollLeft,
scrollRight
};
}
});
</script>

View File

@ -13,7 +13,7 @@ import CloseCircleOutlined from '@ant-design/icons-vue/es/icons/CloseCircleOutli
import ExpandOutlined from '@ant-design/icons-vue/es/icons/ExpandOutlined';
import CompressOutlined from '@ant-design/icons-vue/es/icons/CompressOutlined';
import MinusCircleOutlined from '@ant-design/icons-vue/es/icons/MinusCircleOutlined';
import { useLocale } from '@/i18n/use-locale';
import { useLocale } from '@/utils/common/iframe-component';
export default defineComponent({
name: 'LayoutTabDropdown',

View File

@ -3,6 +3,7 @@
<div :class="layoutClass">
<!-- 顶栏 -->
<LayoutHeader
:is-mobile="isMobile"
:levels="levelData"
:collapse="collapse"
:menus="headMenuData"
@ -44,6 +45,34 @@
</LayoutSidebar>
<!-- 主体 -->
<div class="guns-admin-body">
<!-- 页签栏 -->
<LayoutTabs
v-if="showTabs"
:tabs="tabData"
:active="tabActive"
:home-path="homePath"
:home-title="homeRouteTitle"
:click-reload="clickReload"
:show-refresh="showTabRefresh"
:body-fullscreen="bodyFullscreen"
:tab-context-menu="tabContextMenu"
:tabArrow="tabArrow"
:tabSortable="tabSortable"
@tab-change="onTabChange"
@tab-remove="onTabRemove"
@tab-remove-all="onTabRemoveAll"
@tab-remove-left="onTabRemoveLeft"
@tab-remove-right="onTabRemoveRight"
@tab-remove-other="onTabRemoveOther"
@fullscreen-body="updateBodyFullscreen"
@context-menu="onTabContextMenu"
@tabSortChange="onTabSortChange"
@reload-page="reloadPage"
>
<template v-for="name in Object.keys($slots)" #[name]="props">
<slot :name="name" v-bind="props || {}"></slot>
</template>
</LayoutTabs>
<!-- 内容区域 -->
<div ref="contentRef" class="guns-admin-content">
<div class="guns-admin-content-view">
@ -81,6 +110,7 @@ import {
import { LAYOUT_KEY } from './util';
import LayoutHeader from './components/layout-header.vue';
import LayoutSidebar from './components/layout-sidebar.vue';
import LayoutTabs from './components/layout-tabs.vue';
import props from './props';
export default defineComponent({
@ -88,6 +118,7 @@ export default defineComponent({
components: {
LayoutHeader,
LayoutSidebar,
LayoutTabs
},
props,
emits: [
@ -119,6 +150,8 @@ export default defineComponent({
return props.styleResponsive ? screenWidth() < 768 : false;
};
const isInit = ref(true);
// ref
const contentRef = ref(null);
@ -195,6 +228,14 @@ export default defineComponent({
{
'guns-admin-logo-auto': (props.logoAutoSize || !showSidebar.value) && !isMobile.value
},
//
{ 'guns-admin-show-tabs': props.showTabs },
//
{ 'guns-admin-tab-default': props.tabStyle === 'default' },
//
{ 'guns-admin-tab-dot': props.tabStyle === 'dot' },
//
{ 'guns-admin-tab-card': props.tabStyle === 'card' },
//
{ 'guns-admin-body-fullscreen': props.bodyFullscreen },
//
@ -208,7 +249,7 @@ export default defineComponent({
//
const sideMenuCollapse = computed(() => {
return isMobile.value || props.collapse;
return isMobile.value ? false : props.collapse;
});
//
@ -445,6 +486,9 @@ export default defineComponent({
sideMenuActive.value = [active].concat(openKeys);
}
if (isMobile.value) {
sideMenuActive.value = [active].concat(openKeys);
}
if (props.sideUniqueOpen) {
sideMenuOpen.value = openKeys;
} else {
@ -621,7 +665,10 @@ export default defineComponent({
watch(
() => props.sideDefaultOpeneds,
openeds => {
sideMenuOpen.value = openeds ? openeds.slice() : [];
if (isInit.value && props.sideInitOpenAll) {
sideMenuOpen.value = openeds ? openeds.slice() : [];
}
isInit.value = false;
},
{
deep: true,
@ -676,7 +723,7 @@ export default defineComponent({
isMixSideMenu: false,
bodyFullscreen: props.bodyFullscreen,
contentFullscreen: props.contentFullscreen,
showTabs: false,
showTabs: props.showTabs,
haveSideMenuData: !!sideMenuData.value.length,
styleResponsive: props.styleResponsive
};
@ -684,7 +731,9 @@ export default defineComponent({
provide(LAYOUT_KEY, layoutProvide);
return {
isMobile,
tabData,
isInit,
levelData,
sideNavData,
sideMenuData,

View File

@ -0,0 +1,83 @@
/** 简体中文 */
const localeValues = {
// 多页签
tabs: {
reload: '',
fullscreen: '',
fullscreenExit: '退',
closeLeft: '',
closeRight: '',
closeOther: '',
closeAll: '',
close: ''
},
// table工具按钮
tableTools: {
refresh: '',
size: '',
sizeOption: {
medium: '',
small: '',
mini: ''
},
columns: '',
columnsOption: {
columns: '',
reset: '',
untitled: '',
fixedLeft: '',
fixedRight: ''
},
fullscreen: ''
},
// 文件列表
fileList: {
selectAll: '',
selectTips: ' {total} /',
fileName: '',
fileSize: '',
fileTimestamp: ''
},
// 图片裁剪
cropper: {
zoomIn: '',
zoomOut: '',
rotateLeft: '',
rotateRight: '',
moveLeft: '',
moveRight: '',
moveUp: '',
moveDown: '',
flipX: '',
flipY: '',
reset: '',
upload: '',
ok: '',
title: ''
},
// 地图选择
map: {
title: '',
placeholder: '',
message: '',
ok: ''
},
// 颜色选择
colorPicker: {
cancelText: '',
okText: ''
},
upload: {
uploading: '',
exception: '',
retry: ''
},
tour: {
skip: '',
prev: '',
next: '',
finish: ''
}
};
export default localeValues;

View File

@ -24,6 +24,11 @@ export default {
type: Boolean,
default: true
},
// 是否开启页签栏
showTabs: {
type: Boolean,
default: true
},
// 是否显示刷新按钮
showRefresh: {
type: Boolean,
@ -45,7 +50,7 @@ export default {
headStyle: {
type: String,
default: 'light',
validator: (value) => {
validator: value => {
return ['light', 'dark', 'primary'].includes(value);
}
},
@ -53,7 +58,7 @@ export default {
sideStyle: {
type: String,
default: 'dark',
validator: (value) => {
validator: value => {
return ['light', 'dark'].includes(value);
}
},
@ -61,7 +66,7 @@ export default {
layoutStyle: {
type: String,
default: 'side',
validator: (value) => {
validator: value => {
return ['side', 'top', 'mix'].includes(value);
}
},
@ -69,10 +74,18 @@ export default {
sideMenuStyle: {
type: String,
default: 'default',
validator: (value) => {
validator: value => {
return ['default', 'mix'].includes(value);
}
},
// 标签页风格, default | dot | card
tabStyle: {
type: String,
default: 'default',
validator: (value) => {
return ['default', 'dot', 'card'].includes(value);
}
},
// 是否固定主体
fixedBody: Boolean,
// 内容区域宽度是否铺满
@ -87,6 +100,11 @@ export default {
type: Boolean,
default: true
},
// 默认展开所有侧栏
sideInitOpenAll: {
type: Boolean,
default: true
},
// 菜单缩进量
inlineIndent: {
type: Number,

View File

@ -70,6 +70,7 @@
}
.ant-menu-vertical > .ant-menu-item {
display: flex;
height: 48px;
line-height: 48px;
}

View File

@ -1,5 +1,81 @@
@import './themes/default.less';
/* 页签默认风格 */
.guns-admin-tab-default,
.guns-admin-tab-dot {
.guns-admin-tabs {
.ant-tabs-tab-active,
.is-active {
border-radius: 8px 8px 0 0 !important;
position: relative;
&::before {
content: '';
width: 10px;
height: 10px;
display: block;
transition: all 0.2s;
pointer-events: none;
position: absolute;
bottom: -2px;
left: -7px;
background: radial-gradient(circle at left top, transparent 50%, var(--primary-1) 0);
}
&::after {
content: '';
left: auto !important;
bottom: -2px !important;
right: -7px !important;
width: 10px !important;
height: 10px !important;
display: block !important;
position: absolute;
background: radial-gradient(circle at right top, transparent 50%, var(--primary-1) 0) !important;
}
}
.ant-tabs-tab:not(.ant-tabs-tab-active):hover,
.is-tab:not(.is-active):hover {
border-radius: 8px 8px 0 0 !important;
position: relative;
background-color: #eeeeee63 !important;
&::before {
content: '';
width: 10px;
height: 10px;
display: block;
transition: all 0.2s;
pointer-events: none;
position: absolute;
bottom: -2px;
left: -7px;
background: radial-gradient(circle at left top, transparent 50%, #eeeeee63 0);
}
&::after {
content: '';
left: auto !important;
bottom: -2px !important;
right: -7px !important;
width: 10px !important;
height: 10px !important;
display: block !important;
position: absolute;
background: radial-gradient(circle at right top, transparent 50%, #eeeeee63 0) !important;
}
}
.ant-tabs-nav-wrap {
padding: 0 10px;
}
.is-tab {
margin-right: -10px;
}
.ant-tabs-tab-remove {
margin-left: 10px !important;
}
}
}
/* 页签圆点风格 */
.guns-admin-tab-dot .guns-admin-tabs {
& > .ant-tabs > .ant-tabs-nav .ant-tabs-tab {
@ -56,7 +132,7 @@
}
.ant-tabs-tab + .ant-tabs-tab {
margin-left: @tabs-card-padding;
margin-left: @tabs-card-padding !important;
}
}
@ -69,6 +145,10 @@
background: none;
}
.ant-tabs-tab-remove {
margin-left: 10px !important;
}
& + .guns-admin-content {
margin-top: @tabs-card-padding;

View File

@ -15,6 +15,10 @@ export const SHOW_I18n = true;
// 是否使用图形验证码
export const DRAW_CAPTCHA_FLAG = false;
// 是否开启自定义登录背景
export const CUSTOM_LOGIN_BACKGROUND_ENABLE = false;
// SQL监控地址
export const SQL_MONITOR_URL = 'http://localhost:8080/druid';
@ -101,5 +105,6 @@ export const WEBSOCKET_MESSAGE_TYPE = {
// 登录接口-是否需要rsa加密
export const IS_NEED_RSA = false;
// 是否显示新的流程设计
export const SHOW_NEW_FLOW_DESIGN = false;
// 需要加密的接口
export const NEED_ENCRYPT_API = [];

View File

@ -17,8 +17,8 @@
<img :src="logo" alt="logo" />
</template>
<!-- 顶栏右侧区域 -->
<template #right>
<header-tools />
<template #right="rightProp">
<header-tools :is-mobile="rightProp.isMobile"/>
</template>
<!-- 全局页脚 -->
<template #footer>

View File

@ -55,9 +55,11 @@ export default {
styleResponsive: 'Responsive',
colorfulIcon: 'Colorful Icon',
sideUniqueOpen: 'Menu Unique Open',
sideInitOpenAll: 'Menu Default Open All',
weakMode: 'Weak Mode',
showFooter: 'Show Footer',
showTabs: 'Show Tabs',
tabsConfig: 'Tabs Config',
tabStyle: 'Tab Style',
tabStyles: {
default: 'Default',

View File

@ -55,9 +55,11 @@ export default {
styleResponsive: '',
colorfulIcon: '',
sideUniqueOpen: '',
sideInitOpenAll: '',
weakMode: '',
showFooter: '',
showTabs: '',
tabsConfig: '',
tabStyle: '',
tabStyles: {
default: '',

View File

@ -55,9 +55,11 @@ export default {
styleResponsive: '',
colorfulIcon: '',
sideUniqueOpen: '',
sideInitOpenAll: '',
weakMode: '',
showFooter: '',
showTabs: '',
tabsConfig: '',
tabStyle: '',
tabStyles: {
default: '',

View File

@ -70,10 +70,16 @@ const changeApp = item => {
if (item.menuList && item.menuList.length) {
setPath(item.menuList);
if (isNewTab.value) {
window.open(path.value, '_blank');
const { href } = router.resolve({
path: path.value
});
window.open(href, '_blank');
} else {
if (isExternalLink(path.value)) {
window.open(path.value, '_blank');
const { href } = router.resolve({
path: path.value
});
window.open(href, '_blank');
} else {
router.push(path.value);
}
@ -149,10 +155,10 @@ onUnmounted(() => {
.app-item-name {
font-size: 18px;
font-weight: bold;
color: #1B2C45;
color: #1b2c45;
}
.app-item-remark {
color: #898E91;
color: #898e91;
font-size: 16px;
font-weight: 400;
width: 100%;

View File

@ -2,7 +2,7 @@
<template>
<div class="guns-admin-header-tool">
<!-- 公司切换 -->
<div class="guns-admin-header-tool-item" v-if="companyData?.companyName" @click="switchCompany">
<div class="guns-admin-header-tool-item" v-if="companyData?.companyName && !isMobile" @click="switchCompany">
<i class="iconfont icon-nav-gongsi f-s-24"></i>
<span class="company-name">{{ companyData?.companyName }}</span>
</div>
@ -93,6 +93,13 @@ import AppSwitchModal from './app-switch-modal.vue';
import SwitchCompany from '@/views/index/components/switch-company.vue';
import { Modal } from 'ant-design-vue';
const props = defineProps({
isMobile: {
type: Boolean,
default: false
}
});
const { push, resolve } = useRouter();
const { t } = useI18n();
const userStore = useUserStore();
@ -144,13 +151,11 @@ const onUserDropClick = ({ key }) => {
removeToken();
// sso退
SsoUtil.ssoLogoutRedirect();
clearLocalStorage();
} else {
// 退
await LoginApi.logout();
// token退
logout();
clearLocalStorage();
}
}
});
@ -180,15 +185,6 @@ const setName = realName => {
}
return name;
};
//
const clearLocalStorage = () => {
const collapse = localStorage.getItem('collapse');
localStorage.clear();
//
if (collapse) {
localStorage.setItem('collapse', collapse);
}
};
</script>
<style scoped lang="less">

View File

@ -88,6 +88,49 @@
<a-switch size="small" :checked="weakMode" @change="updateWeakMode" />
</div>
</div>
<!-- 侧栏排他展开 -->
<div class="guns-setting-item">
<div class="setting-item-title">{{ t('layout.setting.sideUniqueOpen') }}</div>
<div class="setting-item-control">
<a-switch size="small" :checked="sideUniqueOpen" @change="updateSideUniqueOpen" />
</div>
</div>
<!-- 默认展开所有侧栏 -->
<div class="guns-setting-item">
<div class="setting-item-title">{{ t('layout.setting.sideInitOpenAll') }}</div>
<div class="setting-item-control">
<a-switch size="small" :checked="sideInitOpenAll" :disabled="sideUniqueOpen" @change="updateSideInitOpenAll" />
</div>
</div>
<a-divider class="hidden-xs-only" />
<div class="guns-setting-title guns-text-secondary">
{{ t('layout.setting.tabsConfig') }}
</div>
<!-- 页签 -->
<div class="guns-setting-item">
<div class="setting-item-title">{{ t('layout.setting.showTabs') }}</div>
<div class="setting-item-control">
<a-switch size="small" :checked="showTabs" @change="updateShowTabs" />
</div>
</div>
<!-- 页签风格 -->
<div v-if="showTabs" class="guns-setting-item">
<div class="setting-item-title">{{ t('layout.setting.tabStyle') }}</div>
<div class="setting-item-control">
<a-select size="small" :value="tabStyle" style="width: 80px" @change="updateTabStyle">
<a-select-option value="default">
{{ t('layout.setting.tabStyles.default') }}
</a-select-option>
<a-select-option value="dot">
{{ t('layout.setting.tabStyles.dot') }}
</a-select-option>
<a-select-option value="card">
{{ t('layout.setting.tabStyles.card') }}
</a-select-option>
</a-select>
</div>
</div>
<!-- 提示 -->
<a-divider />
<a-alert show-icon type="warning" :message="t('layout.setting.tips')">
@ -122,7 +165,8 @@ const emit = defineEmits(['update:visible']);
const { t } = useI18n();
const themeStore = useThemeStore();
const { showFooter, sideStyle, layoutStyle, weakMode, darkMode, color } = storeToRefs(themeStore);
const { showTabs, tabStyle, showFooter, sideStyle, layoutStyle, weakMode, darkMode, color, sideUniqueOpen, sideInitOpenAll } =
storeToRefs(themeStore);
//
const themes = ref([
@ -166,6 +210,10 @@ const updateVisible = value => {
emit('update:visible', value);
};
const updateShowTabs = value => {
themeStore.setShowTabs(value);
};
const updateShowFooter = value => {
themeStore.setShowFooter(value);
};
@ -178,9 +226,25 @@ const updateLayoutStyle = value => {
themeStore.setLayoutStyle(value);
};
const updateTabStyle = value => {
themeStore.setTabStyle(value);
};
const updateWeakMode = value => {
themeStore.setWeakMode(value);
};
const updateSideUniqueOpen = value => {
themeStore.setSideUniqueOpen(value);
if (value) {
themeStore.setSideInitOpenAll(false);
}
};
const updateSideInitOpenAll = value => {
themeStore.setSideInitOpenAll(value);
};
const updateColor = value => {
doWithLoading(() => themeStore.setColor(value));
};

View File

@ -5,15 +5,18 @@
:collapse="collapse"
:side-nav-collapse="sideNavCollapse"
:body-fullscreen="bodyFullscreen"
:show-tabs="showTabs"
:show-footer="showFooter"
:head-style="headStyle"
:side-style="sideStyle"
:layout-style="layoutStyle"
:side-menu-style="sideMenuStyle"
:tab-style="tabStyle"
:fixed-body="fixedBody"
:body-full="bodyFull"
:logo-auto-size="logoAutoSize"
:side-unique-open="sideUniqueOpen"
:side-init-open-all="sideInitOpenAll"
:project-name="projectName"
:hide-footers="HIDE_FOOTERS"
:hide-sidebars="HIDE_SIDEBARS"
@ -56,8 +59,8 @@
</div>
</template>
<!-- 顶栏右侧区域 -->
<template #right>
<header-tools />
<template #right="rightProp">
<header-tools :is-mobile="rightProp.isMobile"/>
</template>
<!-- 全局页脚 -->
<template #footer>
@ -142,13 +145,16 @@ const {
bodyFullscreen,
showFooter,
headStyle,
showTabs,
sideStyle,
layoutStyle,
sideMenuStyle,
tabStyle,
fixedBody,
bodyFull,
logoAutoSize,
sideUniqueOpen
sideUniqueOpen,
sideInitOpenAll
} = storeToRefs(themeStore);
//

View File

@ -83,8 +83,8 @@ router.beforeEach(async (to, from) => {
// 需要左侧菜单
if (needMenus) {
router.addRoute(getMenuRoutes(needMenus, homePath));
return { ...to, replace: true };
}
return { ...to, replace: true };
} else {
let currentApp = {};
userStore.appList.forEach(item => {

View File

@ -57,7 +57,7 @@ export function getMenuRoutes(menus, homePath, isNeedMenuTree = true) {
];
// 路由铺平处理
eachTreeData(menuToRoutes(menus, getComponent), (route) => {
routes.push({ ...route, children: void 0 });
routes.push(Object.assign({}, route, { children: void 0 }));
});
return {
path: LAYOUT_PATH,

View File

@ -24,6 +24,10 @@ const DEFAULT_STATE = Object.freeze({
collapse: localStorage.getItem('collapse') !== 'false',
// 是否开启页脚
showFooter: false,
// 是否开启页签栏
showTabs: true,
// 内容区域是否全屏
bodyFullscreen: false,
// 顶栏风格: light(亮色), dark(暗色), primary(主色)
headStyle: 'light',
// 侧栏风格: light(亮色), dark(暗色)
@ -32,14 +36,20 @@ const DEFAULT_STATE = Object.freeze({
layoutStyle: 'mix',
// 侧栏菜单风格: default(默认), mix(双排侧栏)
sideMenuStyle: 'default',
// 页签风格: default(默认), dot(圆点), card(卡片)
tabStyle: 'default',
// 是否固定主体
fixedBody: true,
// 侧栏是否只保持一个子菜单展开
sideUniqueOpen: false,
// 侧栏初始时,是否展开全部
sideInitOpenAll: true,
// 是否是色弱模式
weakMode: false,
// 主题色
color: null,
// 暗黑模式
darkMode: false,
// 主页的组件名称
homeComponents: [],
// 刷新路由时的参数
@ -142,7 +152,7 @@ export const useThemeStore = defineStore({
getters: {
// 需要 keep-alive 的组件
keepAliveInclude() {
if (!TAB_KEEP_ALIVE) {
if (!TAB_KEEP_ALIVE || !this.showTabs) {
return [];
}
const components = new Set();
@ -183,6 +193,11 @@ export const useThemeStore = defineStore({
cacheSetting('showFooter', value);
this.delayUpdateContentSize();
},
setShowTabs(value) {
this.showTabs = value;
cacheSetting('showTabs', value);
this.delayUpdateContentSize();
},
setHeadStyle(value) {
this.headStyle = value;
cacheSetting('headStyle', value);
@ -203,6 +218,15 @@ export const useThemeStore = defineStore({
cacheSetting('sideMenuStyle', value);
this.delayUpdateContentSize();
},
setTabStyle(value) {
this.tabStyle = value;
cacheSetting('tabStyle', value);
},
setBodyFullscreen(value) {
disableTransition();
this.bodyFullscreen = value;
this.delayUpdateContentSize(800);
},
setFixedBody(value) {
disableTransition();
this.fixedBody = value;
@ -212,6 +236,10 @@ export const useThemeStore = defineStore({
this.sideUniqueOpen = value;
cacheSetting('sideUniqueOpen', value);
},
setSideInitOpenAll(value) {
this.sideInitOpenAll = value;
cacheSetting('sideInitOpenAll', value);
},
setStyleResponsive(value) {
changeStyleResponsive(value);
this.styleResponsive = value;
@ -291,6 +319,7 @@ export const useThemeStore = defineStore({
resetSetting() {
return new Promise((resolve, reject) => {
disableTransition();
this.showTabs = DEFAULT_STATE.showTabs;
this.showFooter = DEFAULT_STATE.showFooter;
this.headStyle = DEFAULT_STATE.headStyle;
this.sideStyle = DEFAULT_STATE.sideStyle;
@ -298,6 +327,7 @@ export const useThemeStore = defineStore({
this.sideMenuStyle = DEFAULT_STATE.sideMenuStyle;
this.fixedBody = DEFAULT_STATE.fixedBody;
this.sideUniqueOpen = DEFAULT_STATE.sideUniqueOpen;
this.sideInitOpenAll = DEFAULT_STATE.sideInitOpenAll;
this.styleResponsive = DEFAULT_STATE.styleResponsive;
this.weakMode = DEFAULT_STATE.weakMode;
this.color = DEFAULT_STATE.color;

View File

@ -0,0 +1,93 @@
@border-radius: 4px;
@input-disabled-color: #60666b;
@input-disabled-border-color: transparent;
@input-disabled-background: #f5f7f9;
.ant-input {
border-radius: @border-radius;
}
// input
.ant-input-affix-wrapper {
border-radius: @border-radius;
}
.ant-input[disabled] {
color: @input-disabled-color !important;
}
.ant-input-affix-wrapper-disabled {
background-color: @input-disabled-background !important;
}
// number
.ant-input-number {
border-radius: @border-radius !important;
}
.ant-input-number-disabled {
color: @input-disabled-color !important;
background-color: @input-disabled-background !important;
}
// select
.ant-select-selector {
border-radius: @border-radius !important;
}
.ant-select-disabled .ant-select-selector {
color: @input-disabled-color !important;
}
.ant-select-disabled.ant-select-multiple .ant-select-selection-item {
color: @input-disabled-color !important;
}
.border-background-disabled {
// border-color: @input-disabled-border-color;
background-color: @input-disabled-background;
}
// date
.ant-picker-input > input[disabled] {
color: @input-disabled-color !important;
}
.ant-picker.ant-picker-disabled {
border-radius: @border-radius;
background-color: @input-disabled-background !important;
&:extend(.border-background-disabled);
&:hover {
border-color: @input-disabled-border-color;
}
}
.ant-radio-disabled .ant-radio-inner {
&:extend(.border-background-disabled);
&:hover {
border-color: @input-disabled-border-color;
}
}
.ant-radio-disabled + span {
color: @input-disabled-color;
}
.ant-radio-disabled .ant-radio-inner::after {
background-color: var(--primary-color);
}
.ant-checkbox-disabled .ant-checkbox-inner {
&:extend(.border-background-disabled);
&:hover {
border-color: @input-disabled-border-color;
}
}
.ant-checkbox-disabled + span {
color: @input-disabled-color;
}
.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after {
border-color: var(--primary-color);
}
.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector {
&:extend(.border-background-disabled);
color: @input-disabled-color;
}
.guns-modal-title-label {
font-weight: bold;
}
.ant-modal-title {
font-weight: bold;
}
.ant-drawer-title {
font-weight: bold !important;
}

View File

@ -1,59 +1,63 @@
:deep(.ant-menu-inline) {
border-right: 0;
}
:deep(.ant-menu) {
--component-background: #fbfbfb;
}
:deep(.ant-menu-inline .ant-menu-item::after) {
border-right: 0;
}
:deep(.ant-menu-submenu-selected) {
color: #999;
}
:deep(.ant-menu-submenu-title) {
font-size: 14px;
padding-left: 10px !important;
color: #60666b;
&:hover {
.sidebar-content {
.ant-menu-inline {
border-right: 0;
}
.ant-menu {
--component-background: #fff !important;
--background-color-light: #fff !important;
}
.ant-menu-inline .ant-menu-item::after {
border-right: 0;
}
.ant-menu-submenu-selected {
color: #999;
}
.ant-menu-submenu-title {
font-size: 14px;
padding-left: 10px !important;
color: #60666b;
&:hover {
color: #60666b;
}
}
}
:deep(.ant-menu-item-selected) {
color: #0f56d7 !important;
border-radius: 4px;
font-weight: 500 !important;
background: rgba(207, 221, 247, 0.35) !important;
.iconfont {
.ant-menu-item-selected {
color: #0f56d7 !important;
border-radius: 4px;
font-weight: 700 !important;
background: rgba(207, 221, 247, 0.35) !important;
.iconfont {
color: #0f56d7 !important;
font-weight: normal !important;
}
}
}
:deep(.ant-menu-item:active) {
color: #0f56d7 !important;
border-radius: 4px;
font-weight: 500 !important;
background: rgba(207, 221, 247, 0.35) !important;
.iconfont {
.ant-menu-item:active {
color: #0f56d7 !important;
border-radius: 4px;
font-weight: 500 !important;
background: rgba(207, 221, 247, 0.35) !important;
.iconfont {
color: #0f56d7 !important;
}
}
.ant-menu-item:hover {
background: #f3f3f3;
border-radius: 4px;
}
.ant-menu-item {
font-weight: 400;
color: #43505e;
padding-left: 20px !important;
}
.ant-menu-submenu {
border-top: 1px solid #eee;
}
.ant-menu-submenu:first-child {
border-top: 1px solid #fbfbfb;
}
.ant-menu-submenu-title:active {
background: #fbfbfb !important;
}
.ant-menu-submenu-arrow {
display: none;
}
}
:deep(.ant-menu-item:hover) {
background: #f3f3f3;
border-radius: 4px;
}
:deep(.ant-menu-item) {
font-weight: 400;
color: #43505e;
padding-left: 20px !important;
}
:deep(.ant-menu-submenu) {
border-top: 1px solid #eee;
}
:deep(.ant-menu-submenu:first-child) {
border-top: 1px solid #fbfbfb;
}
:deep(.ant-menu-submenu-title:active) {
background: #fbfbfb !important;
}
:deep(.ant-menu-submenu-arrow) {
display: none;
}

View File

@ -5,10 +5,12 @@
flex: auto;
height: 100%;
min-height: 0px;
position: relative;
}
@collapse-transition: cubic-bezier(0.4, 0, 0.2, 1);
.guns-layout-sidebar {
padding: 0 12px 12px 12px;
background: #fbfbfb;
background: #fff;
flex: 0 0 auto;
position: relative;
transition: width 0.2s;
@ -18,6 +20,7 @@
display: flex;
flex-direction: column;
box-sizing: border-box;
position: relative;
.sidebar-content {
width: 100%;
flex: auto;
@ -27,6 +30,7 @@
}
}
.guns-layout-content {
position: relative;
min-width: 0px;
flex: auto;
display: flex;
@ -55,7 +59,8 @@
justify-content: space-between;
height: 30px;
margin-bottom: 16px;
span {
&:nth-child(1) {
font-weight: 600;
}
}
@ -71,26 +76,63 @@
.content-mian {
flex: auto;
display: flex;
width: 100%;
flex-direction: column;
overflow-y: auto;
.content-mian-header {
display: flex;
flex-direction: row;
width: 100%;
.search-input {
width: 324px;
border-radius: 4px;
}
.search-date {
width: 100%;
height: 36px;
border-radius: 4px;
}
.search-select {
width: 100%;
border-radius: 4px;
.ant-select-selector {
height: 36px !important;
input {
height: 36px;
}
}
.ant-select-selection-item {
line-height: 34px;
}
.ant-select-selection-placeholder {
line-height: 36px;
}
}
.header-content {
display: flex;
width: 100%;
flex-direction: row;
align-items: center;
margin-bottom: 16px;
.search-input {
width: 324px;
border-radius: 4px;
}
margin-bottom: 10px;
.header-content-left {
display: flex;
flex-wrap: wrap;
width: 70%;
overflow: hidden;
.fold-btn {
position: relative;
&::before {
content: '';
position: absolute;
bottom: -20px;
left: 50%;
transform: translateX(-50%); /* 让三角形水平居中 */
width: 0;
height: 0;
border-left: 8px solid transparent; /* 左边透明 */
border-right: 8px solid transparent; /* 右边透明 */
border-bottom: 14px solid #f8f8f8; /* 顶部为红色,可以调整高度和颜色 */
}
}
}
.header-content-right {
width: 30%;
@ -103,13 +145,16 @@
flex-direction: column;
flex: auto;
.table-content {
height: calc(100% - 10px);
height: 100%;
}
}
}
}
}
}
.width-100 {
width: 100% !important;
}
.ant-btn {
height: 36px;
line-height: 18px;
@ -134,3 +179,159 @@
.surely-table-header-cell {
--surely-table-background-color: #fff;
}
.super-search-right {
width: 100%;
overflow: hidden;
display: flex;
align-items: center;
.super-search-right-tags {
max-width: calc(100% - 40px);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
display: flex;
.super-search-right-tags-item {
display: flex;
align-items: center;
display: flex;
padding: 4px 16px;
border-radius: 4px;
background: #f7f7f9;
color: #60666b;
margin-right: 16px;
.close-btn {
cursor: pointer;
}
}
}
.super-search-right-btns {
text-align: right;
width: 40px;
}
}
.super-search {
background-color: #f8f8f8;
border-radius: 4px;
padding: 16px 16px 0 16px;
box-sizing: border-box;
width: 100%;
margin-bottom: 10px;
.ant-btn {
height: 32px;
line-height: 10px;
font-size: 16px !important;
padding: 4px 16px !important;
font-weight: 500 !important;
}
.ant-form-item {
margin-bottom: 16px;
}
.not-label {
.ant-form-item-label > label::after {
content: '';
}
}
}
.collapse-btn {
height: 40px;
line-height: 40px;
width: 12px;
text-align: center;
position: absolute;
top: 50%;
margin-top: -20px;
font-size: 12px;
color: @text-color-secondary;
background: @border-color-split;
border-radius: 0 4px 4px 0;
transition:
left 0.3s @collapse-transition,
background-color @collapse-transition;
cursor: pointer;
z-index: 3;
right: -12px;
&:hover {
background: @border-color-base;
}
}
.collapse-mask {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 2;
background: transparent;
transition: background-color 0.3s @collapse-transition;
pointer-events: none;
display: none;
}
@media screen and (max-width: 768px) {
.guns-layout-sidebar {
position: absolute;
top: 0;
left: 0;
bottom: 0;
z-index: 3;
}
.guns-layout {
.collapse-mask {
display: block;
}
}
.content-mian {
display: block !important;
}
.content-mian-body {
height: 400px;
}
.guns-collapse {
.collapse-mask {
background: @modal-mask-bg;
pointer-events: all;
}
}
.header-content {
height: auto;
justify-content: flex-start;
flex-wrap: wrap;
}
.header-content-left,
.header-content-right {
width: 100% !important;
.ant-space {
flex-wrap: wrap;
}
}
.fold-btn::before {
display: none;
}
.header-content-right {
margin-top: 16px;
text-align: left !important;
}
}
.ant-table-pagination.ant-pagination {
margin: 12px 0 !important;
}

View File

@ -4,6 +4,7 @@
@import '../components/layout/style/themes/dynamic.less';
@import './gunsLayout.less';
@import './shortcut.less';
@import './antDesignVue.less';
@import '../assets/iconfont/iconfont.css';
/** 全局样式 */
@import 'ant-design-vue/es/message/style/index.less';

View File

@ -12,6 +12,7 @@ import {
nextTick
} from 'vue';
import { PROVIDE_KEY } from '@/components/layout/util'
import defaultLocale from '@/components/layout/lang/zh_CN';
/**
* iframe
@ -98,3 +99,18 @@ export function createIframeComponent(name, url) {
export function useReceiver() {
return inject(PROVIDE_KEY, {});
}
/**
* hook
*/
export function useLocale(options, props) {
const globalConfig = useReceiver();
const locale = computed(() => {
const temp = globalConfig.locale ?? defaultLocale;
if (options.name) {
return Object.assign(temp[options.name] ?? {}, props?.locale);
}
return temp;
});
return { locale, globalConfig };
}

View File

@ -7,6 +7,13 @@
import request from '@/utils/request/request';
import axios from 'axios';
import { getToken } from '@/utils/token-util';
import { API_BASE_PREFIX, NEED_ENCRYPT_API } from '@/config/setting';
import { SM2, SM4 } from 'gm-crypto'
import { getRandomNumber, deepClone } from '@/utils/common/util';
import { message } from 'ant-design-vue';
// 定义公钥
const publicKey = `048f630f53fad962ecf00f3b9d005690a4d56298e70148ce7b709af5d9ac7277aea5fa3b7cbebc1f27c2b798d60ec9c17a74f73e8dfcf4fddfdccdcb08235acc32`
export default class RequestUtil {
/**
@ -34,6 +41,65 @@ export default class RequestUtil {
return result.data;
}
/**
* post
*
* @author fengshuonan
* @date 2022/4/8 10:50
*/
static async postEncryption(url, params) {
// 获取16为随机数
const random16 = getRandomNumber(16);
// 转成16进制
const base16 = strToHexCharCode(random16);
if (params) {
// 将data转为json字符串
params = JSON.stringify(params);
// 加密的随机数
const random16Encryption = SM2.encrypt(random16, publicKey, {
inputEncoding: 'utf8',
outputEncoding: 'base64' //以base64格式输出
});
// 加密参数
const encryptionParams = SM4.encrypt(params, base16, {
inputEncoding: 'utf8',
outputEncoding: 'base64'
});
params = {
passedKey: random16Encryption,
passedData: encryptionParams
}
}
// 发送post请求
let result = await request.post(url, params);
let resultData = deepClone(result.data);
if (resultData.success) {
try {
// 解密
let decryptData = SM4.decrypt(resultData.data, base16, {
inputEncoding: 'base64',
outputEncoding: 'utf8'
});
resultData.data = JSON.parse(decryptData);
} catch (e) {
console.error(e)
}
}
return resultData;
function strToHexCharCode(str) {
if (str === "")
return "";
var hexCharCode = [];
for (var i = 0; i < str.length; i++) {
hexCharCode.push((str.charCodeAt(i)).toString(16));
}
return hexCharCode.join("");
}
}
/**
* post
*
@ -41,11 +107,15 @@ export default class RequestUtil {
* @date 2022/4/8 10:50
*/
static async post(url, params) {
if (params === undefined) {
params = {};
if (NEED_ENCRYPT_API.find(item => item == url)) {
return this.postEncryption(url, params);
} else {
if (params === undefined) {
params = {};
}
let result = await request.post(url, params);
return result.data;
}
let result = await request.post(url, params);
return result.data;
}
/**
@ -76,7 +146,7 @@ export default class RequestUtil {
}
}
paramUrl = paramUrl.substring(0, paramUrl.length - 1);
if (!paramUrl) {
paramUrl = `?token=${getToken()}`;
} else {
@ -84,7 +154,7 @@ export default class RequestUtil {
paramUrl = `${paramUrl}&token=${getToken()}`;
}
}
window.location.href = `${url}${paramUrl}`;
window.location.href = `${API_BASE_PREFIX}${url}${paramUrl}`;
}
// post下载文件封装
@ -92,14 +162,26 @@ export default class RequestUtil {
return axios({
method: 'post',
responseType: 'blob',
url: url,
url: `${API_BASE_PREFIX}${url}`,
data: params,
headers: {
"Authorization": getToken()
}
}).then(res => {
return res
}).catch(error => {
}).catch(err => {
const data = err.response.data;
const reader = new FileReader();
reader.onload = evt => {
try {
const resultObj = JSON.parse(evt.target.result);
message.error(resultObj.message);
// resultOb是解码后的数据然后再进行提示处理
} catch (error) {
console.log(error)
}
};
reader.readAsText(data);
});
}
}

View File

@ -32,7 +32,7 @@
<!--弹窗 选择常用功能-->
<a-modal
width="50%"
:width="760"
v-model:visible="showVisible"
title="选择常用功能"
@cancel="updateShowVisible(false)"
@ -44,10 +44,9 @@
<a-radio-group
class="common-function-header-left"
v-model:value="tabClickAppId"
:style="{ marginBottom: '8px' }"
@change="tabAppIdChange"
>
<a-radio-button v-for="item in userAppInfoList" :key="item.appId" :value="item.appId">{{ item.appName }} </a-radio-button>
<a-radio-button style="min-width: 120px; text-align: center;" v-for="item in userAppInfoList" :key="item.appId" :value="item.appId">{{ item.appName }} </a-radio-button>
</a-radio-group>
<a-input v-model:value="keyword" class="common-function-header-right" allow-clear placeholder="菜单名称(回车搜索)">
@ -377,7 +376,7 @@ watch(
.app-list-item {
cursor: pointer;
width: calc((100% - 80px) / 10);
min-width: 80px;
height: calc(100% / 2);
display: flex;
flex-direction: column;
@ -411,7 +410,7 @@ watch(
}
.common-function-header-right {
width: 280px;
width: 220px;
line-height: 40px;
height: 40px;
}

View File

@ -16,16 +16,7 @@
</a-space>
</div>
<div class="my-notice-body">
<common-table
:columns="columns"
:rowSelection="false"
:scroll="{ y: '100%' }"
:where="where"
bordered
rowId="noticeId"
ref="tableRef"
url="/sysMessage/page"
>
<common-table :columns="columns" :rowSelection="false" :where="where" bordered rowId="noticeId" ref="tableRef" url="/sysMessage/page">
<template #bodyCell="{ column, record }">
<!-- 姓名 -->
<template v-if="column.dataIndex == 'messageTitle'">
@ -262,10 +253,25 @@ const readAll = () => {
justify-content: space-between;
}
.my-notice-body {
flex: auto;
width: 100%;
height: calc(100% - 46px);
overflow: hidden;
}
.check-outlined {
cursor: pointer;
color: var(--primary-color);
}
@media screen and (max-width: 768px) {
.my-notice-header {
height: auto;
justify-content: flex-start;
flex-wrap: wrap;
:deep(.ant-space) {
flex-wrap: wrap;
margin-bottom: 10px;
}
}
}
</style>

View File

@ -1,6 +1,6 @@
<template>
<!-- 新增编辑 -->
<a-modal
<common-modal
:width="1000"
:maskClosable="false"
:visible="props.visible"
@ -16,12 +16,12 @@
<a-form ref="formRef" :model="form" layout="vertical">
<!-- 通知内容 -->
<a-row :gutter="20">
<a-col :span="12">
<a-col :xs='24' :sm='24' :md='12'>
<a-form-item label="通知标题:" name="messageTitle">
<a-input v-model:value="form.messageTitle" allow-clear placeholder="请输入通知标题" :disabled="true" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-col :xs='24' :sm='24' :md='12'>
<a-form-item label="优先级" name="priorityLevel">
<a-radio-group v-model:value="form.priorityLevel" name="sex" :disabled="true">
<a-radio value="high"></a-radio>
@ -32,18 +32,17 @@
</a-col>
<a-col :span="24">
<a-form-item label="通知内容" name="messageContent">
<tinymce v-model:value="form.messageContent" :disabled="true" />
<a-textarea v-model:value="form.messageContent" :rows="4" disabled></a-textarea>
</a-form-item>
</a-col>
</a-row>
</a-form>
</a-modal>
</common-modal>
</template>
<script setup name="NoticeDetail">
import { ref, onMounted } from 'vue';
import { MyNoticeApi } from '../api/MyNoticeApi';
import Tinymce from '@/components/TinymceEditor/index.vue';
const props = defineProps({
visible: Boolean,

Some files were not shown because too many files have changed in this diff Show More