From 25485cf6e4aa92a6680286014e378b8769f701a6 Mon Sep 17 00:00:00 2001 From: Bao D <30614076+baocancode@users.noreply.github.com> Date: Fri, 5 Apr 2019 22:57:55 +1100 Subject: [PATCH] dev: refactor components to tsx files (#47) Some benefits: - Better editor and tooling support - No need for `h: CreateElement` in any `render()` - Can format/lint the code - In the future, can remove usage of `components` if https://github.com/vuejs/vue/pull/9379 is merged - Use single css classes (copied from tachyons) to style components, since most of the styling can be done with Vuetify, also remove `sass` and `sass-loader` --- package-lock.json | 86 ------------------- packages/web/nuxt.config.ts | 9 +- packages/web/package.json | 5 +- packages/web/src/assets/common.css | 3 + .../common/{datetime.vue => datetime.tsx} | 7 +- .../{external-link.vue => external-link.tsx} | 15 +--- .../common/{form-card.vue => form-card.tsx} | 12 +-- packages/web/src/components/common/index.ts | 4 + .../{section-block.vue => section-block.tsx} | 7 +- packages/web/src/components/page/index.ts | 4 + ...lete-button.vue => page-delete-button.tsx} | 29 +++---- .../{page-details.vue => page-details.tsx} | 11 +-- ...{page-edit-form.vue => page-edit-form.tsx} | 11 +-- .../{page-new-form.vue => page-new-form.tsx} | 11 +-- .../src/layouts/{default.vue => default.tsx} | 5 +- .../web/src/pages/{index.vue => index.tsx} | 5 +- .../src/pages/pages/{demo.vue => demo.tsx} | 12 +-- 17 files changed, 54 insertions(+), 182 deletions(-) create mode 100644 packages/web/src/assets/common.css rename packages/web/src/components/common/{datetime.vue => datetime.tsx} (83%) rename packages/web/src/components/common/{external-link.vue => external-link.tsx} (64%) rename packages/web/src/components/common/{form-card.vue => form-card.tsx} (69%) create mode 100644 packages/web/src/components/common/index.ts rename packages/web/src/components/common/{section-block.vue => section-block.tsx} (66%) create mode 100644 packages/web/src/components/page/index.ts rename packages/web/src/components/page/{page-delete-button.vue => page-delete-button.tsx} (70%) rename packages/web/src/components/page/{page-details.vue => page-details.tsx} (69%) rename packages/web/src/components/page/{page-edit-form.vue => page-edit-form.tsx} (88%) rename packages/web/src/components/page/{page-new-form.vue => page-new-form.tsx} (81%) rename packages/web/src/layouts/{default.vue => default.tsx} (66%) rename packages/web/src/pages/{index.vue => index.tsx} (84%) rename packages/web/src/pages/pages/{demo.vue => demo.tsx} (83%) diff --git a/package-lock.json b/package-lock.json index 33b2210..14971bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2597,14 +2597,6 @@ "resolved": "https://registry.npmjs.org/@types/relateurl/-/relateurl-0.2.28.tgz", "integrity": "sha1-a9p9uGU/piZD9e5p6facEaOS46Y=" }, - "@types/sass": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/@types/sass/-/sass-1.16.0.tgz", - "integrity": "sha512-2XZovu4NwcqmtZtsBR5XYLw18T8cBCnU2USFHTnYLLHz9fkhnoEMoDsqShJIOFsFhn5aJHjweiUUdTrDGujegA==", - "requires": { - "@types/node": "*" - } - }, "@types/serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", @@ -4553,17 +4545,6 @@ "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", "dev": true }, - "clone-deep": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", - "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", - "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.0", - "shallow-clone": "^1.0.0" - } - }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -6807,14 +6788,6 @@ "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" }, - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "requires": { - "for-in": "^1.0.1" - } - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -9818,11 +9791,6 @@ "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, - "lodash.tail": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", - "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=" - }, "lodash.template": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", @@ -10248,22 +10216,6 @@ } } }, - "mixin-object": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", - "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, - "dependencies": { - "for-in": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", - "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=" - } - } - }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -13169,27 +13121,6 @@ "walker": "~1.0.5" } }, - "sass": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.17.3.tgz", - "integrity": "sha512-S4vJawbrNUxJUBiHLXPYUKZCoO6cvq3/3ZFBV66a+PafTxcDEFJB+FHLDFl0P+rUfha/703ajEXMuGTYhJESkQ==", - "requires": { - "chokidar": "^2.0.0" - } - }, - "sass-loader": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", - "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", - "requires": { - "clone-deep": "^2.0.1", - "loader-utils": "^1.0.1", - "lodash.tail": "^4.1.1", - "neo-async": "^2.5.0", - "pify": "^3.0.0", - "semver": "^5.5.0" - } - }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", @@ -13311,23 +13242,6 @@ "safe-buffer": "^5.0.1" } }, - "shallow-clone": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", - "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^5.0.0", - "mixin-object": "^2.0.1" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", diff --git a/packages/web/nuxt.config.ts b/packages/web/nuxt.config.ts index 34127f5..4e32d98 100644 --- a/packages/web/nuxt.config.ts +++ b/packages/web/nuxt.config.ts @@ -1,5 +1,4 @@ import path from 'path' -import sass from 'sass' export const rootDir = __dirname @@ -11,7 +10,7 @@ export const server = { export const plugins = [path.join(__dirname, 'src/plugins/vuetify.ts')] -export const css = ['vuetify/dist/vuetify.css'] +export const css = ['vuetify/dist/vuetify.css', path.join(__dirname, 'src/assets/common.css')] export const head = { titleTemplate: (title: string): string => { @@ -38,11 +37,7 @@ export const head = { } export const build = { - loaders: { - scss: { - implementation: sass, - }, - }, + extractCSS: true, extend (config: any) { // Allow to mock dependencies config.resolve.modules.unshift(path.join(__dirname, 'mock_dependencies')) diff --git a/packages/web/package.json b/packages/web/package.json index 9b3a737..5bdf123 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -26,10 +26,7 @@ "devDependencies": { "@nuxt/typescript": "^2.5.1", "@types/luxon": "^1.11.1", - "@types/sass": "^1.16.0", "@webok/dev": "^0.0.0", - "nuxt": "^2.5.1", - "sass": "^1.17.3", - "sass-loader": "^7.1.0" + "nuxt": "^2.5.1" } } diff --git a/packages/web/src/assets/common.css b/packages/web/src/assets/common.css new file mode 100644 index 0000000..40c049a --- /dev/null +++ b/packages/web/src/assets/common.css @@ -0,0 +1,3 @@ +/* https://tachyons.io/docs/typography/text-decoration/ */ + +.no-underline { text-decoration: none; } diff --git a/packages/web/src/components/common/datetime.vue b/packages/web/src/components/common/datetime.tsx similarity index 83% rename from packages/web/src/components/common/datetime.vue rename to packages/web/src/components/common/datetime.tsx index fb74e01..8642cc8 100644 --- a/packages/web/src/components/common/datetime.vue +++ b/packages/web/src/components/common/datetime.tsx @@ -1,10 +1,8 @@ - diff --git a/packages/web/src/components/common/external-link.vue b/packages/web/src/components/common/external-link.tsx similarity index 64% rename from packages/web/src/components/common/external-link.vue rename to packages/web/src/components/common/external-link.tsx index d4d90a6..fa17634 100644 --- a/packages/web/src/components/common/external-link.vue +++ b/packages/web/src/components/common/external-link.tsx @@ -1,20 +1,18 @@ - - - diff --git a/packages/web/src/components/common/form-card.vue b/packages/web/src/components/common/form-card.tsx similarity index 69% rename from packages/web/src/components/common/form-card.vue rename to packages/web/src/components/common/form-card.tsx index 04928db..03d5c63 100644 --- a/packages/web/src/components/common/form-card.vue +++ b/packages/web/src/components/common/form-card.tsx @@ -1,15 +1,10 @@ - diff --git a/packages/web/src/components/common/index.ts b/packages/web/src/components/common/index.ts new file mode 100644 index 0000000..8a1017c --- /dev/null +++ b/packages/web/src/components/common/index.ts @@ -0,0 +1,4 @@ +export * from './form-card' +export * from './section-block' +export * from './external-link' +export * from './datetime' diff --git a/packages/web/src/components/common/section-block.vue b/packages/web/src/components/common/section-block.tsx similarity index 66% rename from packages/web/src/components/common/section-block.vue rename to packages/web/src/components/common/section-block.tsx index 35b4f9c..ee22656 100644 --- a/packages/web/src/components/common/section-block.vue +++ b/packages/web/src/components/common/section-block.tsx @@ -1,13 +1,11 @@ - diff --git a/packages/web/src/components/page/index.ts b/packages/web/src/components/page/index.ts new file mode 100644 index 0000000..6bb049b --- /dev/null +++ b/packages/web/src/components/page/index.ts @@ -0,0 +1,4 @@ +export * from './page-new-form' +export * from './page-details' +export * from './page-edit-form' +export * from './page-delete-button' diff --git a/packages/web/src/components/page/page-delete-button.vue b/packages/web/src/components/page/page-delete-button.tsx similarity index 70% rename from packages/web/src/components/page/page-delete-button.vue rename to packages/web/src/components/page/page-delete-button.tsx index 9a3f0c9..0f88008 100644 --- a/packages/web/src/components/page/page-delete-button.vue +++ b/packages/web/src/components/page/page-delete-button.tsx @@ -1,15 +1,13 @@ - diff --git a/packages/web/src/components/page/page-details.vue b/packages/web/src/components/page/page-details.tsx similarity index 69% rename from packages/web/src/components/page/page-details.vue rename to packages/web/src/components/page/page-details.tsx index 0ec834b..da34bc0 100644 --- a/packages/web/src/components/page/page-details.vue +++ b/packages/web/src/components/page/page-details.tsx @@ -1,10 +1,6 @@ - diff --git a/packages/web/src/components/page/page-edit-form.vue b/packages/web/src/components/page/page-edit-form.tsx similarity index 88% rename from packages/web/src/components/page/page-edit-form.vue rename to packages/web/src/components/page/page-edit-form.tsx index 1dd7efd..353a0fd 100644 --- a/packages/web/src/components/page/page-edit-form.vue +++ b/packages/web/src/components/page/page-edit-form.tsx @@ -1,8 +1,6 @@ - diff --git a/packages/web/src/components/page/page-new-form.vue b/packages/web/src/components/page/page-new-form.tsx similarity index 81% rename from packages/web/src/components/page/page-new-form.vue rename to packages/web/src/components/page/page-new-form.tsx index 90ae7f4..6442c30 100644 --- a/packages/web/src/components/page/page-new-form.vue +++ b/packages/web/src/components/page/page-new-form.tsx @@ -1,15 +1,13 @@ - diff --git a/packages/web/src/layouts/default.vue b/packages/web/src/layouts/default.tsx similarity index 66% rename from packages/web/src/layouts/default.vue rename to packages/web/src/layouts/default.tsx index b505954..2f8fc6f 100644 --- a/packages/web/src/layouts/default.vue +++ b/packages/web/src/layouts/default.tsx @@ -1,10 +1,8 @@ - diff --git a/packages/web/src/pages/index.vue b/packages/web/src/pages/index.tsx similarity index 84% rename from packages/web/src/pages/index.vue rename to packages/web/src/pages/index.tsx index 383e37a..8ffd6f6 100644 --- a/packages/web/src/pages/index.vue +++ b/packages/web/src/pages/index.tsx @@ -1,6 +1,4 @@ - diff --git a/packages/web/src/pages/pages/demo.vue b/packages/web/src/pages/pages/demo.tsx similarity index 83% rename from packages/web/src/pages/pages/demo.vue rename to packages/web/src/pages/pages/demo.tsx index 46013e4..65ae093 100644 --- a/packages/web/src/pages/pages/demo.vue +++ b/packages/web/src/pages/pages/demo.tsx @@ -1,12 +1,7 @@ -