├── .gitignore ├── README.md ├── babel.config.js ├── dist ├── common.css ├── css │ └── app.2553981a.css ├── favicon.ico ├── img │ └── logo.82b9c7a5.png ├── imgs │ ├── avatar_mini.png │ ├── icons │ │ ├── icon-cancel.png │ │ ├── icon-clear.png │ │ ├── icon-delete.png │ │ ├── icon-done.svg │ │ ├── icon-dropdown.png │ │ ├── icon-edit.png │ │ ├── icon-redo.png │ │ ├── icon-save.png │ │ ├── icon-search.png │ │ └── icon-undo.png │ ├── pixels.png │ ├── pixels2.png │ ├── the-winds-of-winter.png │ └── vue-logo.png ├── index.html └── js │ ├── app.8c85c331.js │ ├── app.8c85c331.js.map │ ├── chunk-vendors.45fdb867.js │ └── chunk-vendors.45fdb867.js.map ├── package-lock.json ├── package.json ├── public ├── common.css ├── favicon.ico ├── imgs │ ├── avatar_mini.png │ ├── icons │ │ ├── icon-cancel.png │ │ ├── icon-clear.png │ │ ├── icon-delete.png │ │ ├── icon-done.svg │ │ ├── icon-dropdown.png │ │ ├── icon-edit.png │ │ ├── icon-redo.png │ │ ├── icon-save.png │ │ ├── icon-search.png │ │ └── icon-undo.png │ ├── pixels.png │ ├── pixels2.png │ ├── the-winds-of-winter.png │ └── vue-logo.png └── index.html ├── src ├── App.vue ├── assets │ └── logo.png ├── components │ ├── ItemList.vue │ ├── MemoEditor.vue │ ├── MemoItem.vue │ └── MenuBar.vue ├── main.ts ├── model │ ├── CateEnum.ts │ └── ItemData.ts ├── shims-tsx.d.ts ├── shims-vue.d.ts └── store │ ├── ActionHelper.ts │ ├── DataHelper.ts │ └── index.ts ├── tsconfig.json └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | 4 | # local env files 5 | .env.local 6 | .env.*.local 7 | 8 | # Log files 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | 13 | # Editor directories and files 14 | .idea 15 | .vscode 16 | *.suo 17 | *.ntvs* 18 | *.njsproj 19 | *.sln 20 | *.sw? 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # memo 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Lints and fixes files 19 | ``` 20 | npm run lint 21 | ``` 22 | 23 | ### Customize configuration 24 | See [Configuration Reference](https://cli.vuejs.org/config/). 25 | -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /dist/common.css: -------------------------------------------------------------------------------- 1 | [v-cloak] { 2 | display: none; 3 | } 4 | 5 | * { 6 | padding: 0; 7 | margin: 0; 8 | border: 0; 9 | list-style: none; 10 | text-decoration: none; 11 | } 12 | 13 | body { 14 | padding-top: 50px; 15 | background: url(./imgs/pixels.png); 16 | } 17 | 18 | blockquote p { 19 | font-size: 14px; 20 | } 21 | 22 | .dropdown-menu a { 23 | cursor: pointer !important; 24 | } 25 | 26 | #vue-memo { 27 | border: 1px solid #e1e1e1; 28 | box-shadow: 0 0 4px 0 #e1e1e1; 29 | padding: 0; 30 | z-index: 1; 31 | } 32 | 33 | .navbar { 34 | border-radius: 0; 35 | margin-bottom: 0; 36 | z-index: 1; 37 | cursor: default; 38 | user-select: none; 39 | -moz-user-select: none; 40 | -ms-user-select: none; 41 | -webkit-user-select: none; 42 | } 43 | 44 | .navbar .navbar-right a { 45 | cursor: pointer; 46 | } 47 | 48 | .navbar .navbar-right .search-box { 49 | width: calc(100% - 24px); 50 | min-width: 180px; 51 | margin: 6px 12px; 52 | } 53 | 54 | .navbar .dropdown-toggle { 55 | position: relative; 56 | padding-right: 45px !important; 57 | transition: 0.2s ease-in-out; 58 | } 59 | 60 | .navbar .dropdown-toggle:hover { 61 | background: #e7e7e7 !important; 62 | } 63 | 64 | .navbar .dropdown-toggle:after { 65 | position: absolute; 66 | width: 24px; 67 | height: 24px; 68 | top: 8px; 69 | right: 18px; 70 | background: url(./imgs/icons/icon-dropdown.png) 0 0 no-repeat; 71 | content: " "; 72 | opacity: 0.6; 73 | } 74 | 75 | @media (min-width: 768px) { 76 | .navbar .dropdown-toggle:after { 77 | top: 13px; 78 | } 79 | } 80 | 81 | .navbar .count { 82 | border-radius: 5px; 83 | float: right; 84 | margin-top: 3px; 85 | } 86 | 87 | .navbar-brand{ 88 | padding-top:5px; 89 | } 90 | 91 | .navbar .current-category .count { 92 | float: none; 93 | margin: -2px 6px 0 9px; 94 | } 95 | 96 | #memos { 97 | min-height: 800px; 98 | margin-top: 6px; 99 | padding: 0; 100 | } 101 | 102 | .memo-container { 103 | padding: 6px; 104 | float: left; 105 | } 106 | 107 | .memo { 108 | position: relative; 109 | border: 1px solid #bdbdbd; 110 | border-radius: 5px; 111 | padding: 9px; 112 | background-color: #fff; 113 | transition: all 0.15s ease-in-out; 114 | } 115 | 116 | .memo:hover { 117 | box-shadow: 0 0 6px 0 #757575; 118 | } 119 | 120 | .memo:hover .mark { 121 | display: block; 122 | } 123 | 124 | .memo[data-completed="true"] { 125 | border-color: #4dabf5; 126 | } 127 | 128 | .memo[data-completed="true"] .mark { 129 | display: block; 130 | } 131 | 132 | .memo .mark { 133 | display: none; 134 | position: absolute; 135 | width: 24px; 136 | height: 24px; 137 | top: -8px; 138 | left: -8px; 139 | border-radius: 50%; 140 | background:#0094ff no-repeat 3px 3px; /* url(./imgs/icons/icon-done.svg) */ 141 | background-size: 18px 18px; 142 | transition: all 0.2s ease-in-out; 143 | cursor: pointer; 144 | } 145 | 146 | .memo .mark:hover { 147 | -webkit-transform: scale(1.2); 148 | transform: scale(1.2); 149 | } 150 | 151 | .memo .memo-heading { 152 | position: relative; 153 | width: 100%; 154 | } 155 | 156 | .memo .memo-heading .tools { 157 | float: right; 158 | margin-top: 6px; 159 | } 160 | 161 | .memo .memo-heading .tools > li { 162 | width: 20px; 163 | height: 20px; 164 | float: left; 165 | margin-left: 10px; 166 | opacity: 0.5; 167 | transition: opacity 0.2s ease-in-out; 168 | } 169 | 170 | .memo .memo-heading .tools > li:hover { 171 | cursor: pointer; 172 | opacity: 1; 173 | } 174 | 175 | .memo .memo-heading .tools > li.edit { 176 | background: url(./imgs/icons/icon-edit.png) no-repeat 0 0; 177 | } 178 | 179 | .memo .memo-heading .tools > li.delete { 180 | background: url(./imgs/icons/icon-delete.png) no-repeat 0 0; 181 | } 182 | 183 | .memo .memo-heading .title { 184 | display: inline-block; 185 | margin-top: 6px; 186 | margin-bottom: 6px; 187 | padding-bottom: 6px; 188 | border-bottom: 1px solid #bdbdbd; 189 | text-overflow: ellipsis; 190 | white-space: nowrap; 191 | overflow: hidden; 192 | max-width: calc(100% - 60px); 193 | } 194 | 195 | .memo .memo-info { 196 | margin: 0 auto 12px; 197 | color: #757575; 198 | font-weight: 300; 199 | } 200 | 201 | .memo .memo-info .category { 202 | float: right; 203 | } 204 | 205 | .memo .content { 206 | border: 1px solid #f8f8f8; 207 | bottom: 12px; 208 | overflow-y: auto; 209 | text-overflow: ellipsis; 210 | height: 180px; 211 | } 212 | 213 | .memo .content[data-type="doodle"] { 214 | overflow: hidden; 215 | } 216 | 217 | .cover-layer, 218 | .memo .content img { 219 | width: 100%; 220 | height: 100%; 221 | } 222 | 223 | .cover-layer { 224 | top: 0; 225 | left: 0; 226 | background-color: #222; 227 | opacity: 0.5; 228 | z-index: 2; 229 | } 230 | 231 | .cover-layer, 232 | .editor-layer { 233 | display: block; 234 | position: absolute; 235 | } 236 | 237 | .editor-layer { 238 | background-color: #fff; 239 | top: 50%; 240 | left: 50%; 241 | transform: translate(-50%,-50%); 242 | padding: 10px; 243 | border: 1px solid #f8f8f8; 244 | border-radius: 3px; 245 | box-shadow: 0 0 6px 0 #f8f8f8; 246 | z-index: 3; 247 | } 248 | 249 | .editor-layer{ 250 | margin-bottom: 10px; 251 | width: 500px; 252 | } 253 | .editor-top{ 254 | position: relative; 255 | margin-bottom: 10px; 256 | width: 100%; 257 | } 258 | 259 | .editor-layer .editor-top .tools { 260 | position: absolute; 261 | top: 6px; 262 | right: 0; 263 | } 264 | 265 | .editor-layer .editor-top .tools > li { 266 | width: 20px; 267 | height: 20px; 268 | float: left; 269 | margin-left: 10px; 270 | opacity: 0.5; 271 | transition: opacity 0.2s ease-in-out; 272 | } 273 | 274 | .editor-layer .editor-top .tools > li:hover { 275 | cursor: pointer; 276 | opacity: 1; 277 | } 278 | 279 | .editor-layer .editor-top .tools > li.save { 280 | background: url(./imgs/icons/icon-save.png) no-repeat 0 0; 281 | } 282 | 283 | .editor-layer .editor-top .tools > li.cancel { 284 | background: url(./imgs/icons/icon-cancel.png) no-repeat 0 0; 285 | } 286 | 287 | .editor-layer .editor-top .editor-title { 288 | width: calc(100% - 140px); 289 | } 290 | 291 | html #edit-doodle .editor-title, 292 | html #edit-markdown .editor-title { 293 | width: calc(100% - 60px); 294 | } 295 | 296 | .editor-layer .editor-top .select-category { 297 | position: absolute; 298 | right: 62px; 299 | top: 0; 300 | transition: all 0.2s ease-in-out; 301 | } 302 | 303 | .editor-layer .editor-top .select-category .dropdown-menu { 304 | min-width: 0; 305 | } 306 | 307 | .editor-layer .text-content { 308 | width: 100%; 309 | height: 350px; 310 | font-size: 12px; 311 | resize: none; 312 | } 313 | 314 | @media (max-width: 768px) { 315 | #memos { 316 | padding: 0 5px; 317 | } 318 | 319 | .memo-container { 320 | padding: 2px; 321 | margin-top: 0; 322 | width: 50%; 323 | } 324 | .editor-layer{ 325 | width: 300px; 326 | transform: translate(-50%,-50%); 327 | } 328 | 329 | 330 | } 331 | 332 | @media (min-width: 768px) and (max-width: 992px) { 333 | .memo-container { 334 | width: 33.3%; 335 | } 336 | } 337 | 338 | @media (min-width: 992px) and (max-width: 1200px) { 339 | .memo-container { 340 | width: 25%; 341 | } 342 | } 343 | 344 | @media (min-width: 1200px) { 345 | .memo-container { 346 | width: 25%; 347 | } 348 | } -------------------------------------------------------------------------------- /dist/css/app.2553981a.css: -------------------------------------------------------------------------------- 1 | .navbar-brand>img[data-v-2e8bd812]{display:inline-block} -------------------------------------------------------------------------------- /dist/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/favicon.ico -------------------------------------------------------------------------------- /dist/img/logo.82b9c7a5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/img/logo.82b9c7a5.png -------------------------------------------------------------------------------- /dist/imgs/avatar_mini.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/avatar_mini.png -------------------------------------------------------------------------------- /dist/imgs/icons/icon-cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/icons/icon-cancel.png -------------------------------------------------------------------------------- /dist/imgs/icons/icon-clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/icons/icon-clear.png -------------------------------------------------------------------------------- /dist/imgs/icons/icon-delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/icons/icon-delete.png -------------------------------------------------------------------------------- /dist/imgs/icons/icon-done.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /dist/imgs/icons/icon-dropdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/icons/icon-dropdown.png -------------------------------------------------------------------------------- /dist/imgs/icons/icon-edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/icons/icon-edit.png -------------------------------------------------------------------------------- /dist/imgs/icons/icon-redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/icons/icon-redo.png -------------------------------------------------------------------------------- /dist/imgs/icons/icon-save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/icons/icon-save.png -------------------------------------------------------------------------------- /dist/imgs/icons/icon-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/icons/icon-search.png -------------------------------------------------------------------------------- /dist/imgs/icons/icon-undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/icons/icon-undo.png -------------------------------------------------------------------------------- /dist/imgs/pixels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/pixels.png -------------------------------------------------------------------------------- /dist/imgs/pixels2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/pixels2.png -------------------------------------------------------------------------------- /dist/imgs/the-winds-of-winter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/the-winds-of-winter.png -------------------------------------------------------------------------------- /dist/imgs/vue-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jinyang79/vue-ts-memo/fc6a277f5274701ba38c2e02c27ee9dd06ff5b43/dist/imgs/vue-logo.png -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 |