├── .gitignore ├── LICENSE ├── README.md ├── chapter-01 ├── 1_3 │ ├── README.md │ ├── render.html │ └── template.html ├── 1_4 │ ├── README.md │ └── component.html ├── 1_5 │ ├── README.md │ └── reactivity.html ├── 1_6 │ ├── README.md │ └── composeAPI.html └── README.md ├── chapter-02 ├── 2_1 │ ├── .gitignore │ ├── README.md │ ├── index.js │ ├── index.ts │ ├── package.json │ └── tsconfig.json ├── 2_10 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── classComponentsHooks │ │ │ └── vue-router.js │ │ ├── components │ │ │ └── HelloWorld.vue │ │ ├── main.js │ │ ├── main.ts │ │ ├── router.ts │ │ ├── shims-tsx.d.ts │ │ ├── shims-vue.d.ts │ │ └── views │ │ │ ├── About.vue │ │ │ ├── Home.vue │ │ │ └── Secure.vue │ └── tsconfig.json ├── 2_11 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ ├── Counter.vue │ │ │ └── CounterByTen.vue │ │ ├── main.ts │ │ ├── mixins │ │ │ ├── defaultNumber.ts │ │ │ └── numberWatcher.ts │ │ ├── shims-tsx.d.ts │ │ └── shims-vue.d.ts │ └── tsconfig.json ├── 2_3 │ ├── .gitignore │ ├── Animal.ts │ ├── Dog.ts │ ├── README.md │ ├── package.json │ └── tsconfig.json ├── 2_4 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ └── main.js ├── 2_5 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ ├── main.js │ │ ├── router │ │ └── index.js │ │ ├── store │ │ └── index.js │ │ └── views │ │ ├── About.vue │ │ └── Home.vue ├── 2_6 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── HelloWorld.vue │ │ ├── main.ts │ │ ├── shims-tsx.d.ts │ │ └── shims-vue.d.ts │ └── tsconfig.json ├── 2_7 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── Counter.vue │ │ ├── main.ts │ │ ├── shims-tsx.d.ts │ │ └── shims-vue.d.ts │ └── tsconfig.json ├── 2_8 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ ├── Counter.vue │ │ │ └── CounterByTen.vue │ │ ├── main.ts │ │ ├── mixins │ │ │ └── defaultNumber.ts │ │ ├── shims-tsx.d.ts │ │ └── shims-vue.d.ts │ └── tsconfig.json ├── 2_9 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── Counter.vue │ │ ├── decorators │ │ │ ├── componentLogger.js │ │ │ └── componentMount.js │ │ ├── main.ts │ │ ├── shims-tsx.d.ts │ │ └── shims-vue.d.ts │ └── tsconfig.json └── README.md ├── chapter-03 ├── 3_1 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── CurrentTime.vue │ │ ├── main.js │ │ └── style.css ├── 3_10 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CurrentTime.vue │ │ └── TaskInput.vue │ │ ├── main.js │ │ └── style.css ├── 3_11 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CurrentTime.vue │ │ └── TaskInput.vue │ │ ├── main.js │ │ └── style.css ├── 3_2 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CurrentTime.vue │ │ └── TaskInput.vue │ │ ├── main.js │ │ └── style.css ├── 3_3 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CurrentTime.vue │ │ └── TaskInput.vue │ │ ├── main.js │ │ └── style.css ├── 3_4 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CurrentTime.vue │ │ └── TaskInput.vue │ │ ├── main.js │ │ └── style.css ├── 3_5 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CurrentTime.vue │ │ └── TaskInput.vue │ │ ├── main.js │ │ └── style.css ├── 3_6 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CurrentTime.vue │ │ └── TaskInput.vue │ │ ├── main.js │ │ └── style.css ├── 3_7 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CurrentTime.vue │ │ └── TaskInput.vue │ │ ├── main.js │ │ └── style.css ├── 3_8 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CurrentTime.vue │ │ └── TaskInput.vue │ │ ├── main.js │ │ └── style.css ├── 3_9 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CurrentTime.vue │ │ └── TaskInput.vue │ │ ├── main.js │ │ └── style.css └── README.md ├── chapter-04 ├── 4_1 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── MaterialCardBox.vue │ │ ├── main.js │ │ └── style │ │ └── elevation.css ├── 4_2 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── MaterialCardBox.vue │ │ ├── main.js │ │ └── style │ │ ├── cardStyles.css │ │ └── elevation.css ├── 4_3 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── MaterialCardBox.vue │ │ ├── main.js │ │ └── style │ │ ├── cardStyles.css │ │ └── elevation.css ├── 4_4 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── MaterialButton.vue │ │ └── MaterialCardBox.vue │ │ ├── main.js │ │ └── style │ │ ├── cardStyles.css │ │ └── elevation.css ├── 4_5 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── MaterialButton.vue │ │ ├── MaterialCardBox.vue │ │ ├── StarRating.vue │ │ ├── StarRatingDisplay.vue │ │ └── StarRatingInput.vue │ │ ├── main.js │ │ └── style │ │ ├── cardStyles.css │ │ ├── elevation.css │ │ ├── materialIcons.css │ │ └── starRating.css ├── 4_6 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── MaterialButton.vue │ │ ├── MaterialCardBox.vue │ │ ├── StarRating.vue │ │ ├── StarRatingDisplay.vue │ │ └── StarRatingInput.vue │ │ ├── main.js │ │ └── style │ │ ├── cardStyles.css │ │ ├── elevation.css │ │ ├── materialIcons.css │ │ └── starRating.css ├── 4_7 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── MaterialButton.vue │ │ ├── MaterialCardBox.vue │ │ ├── StarRating.vue │ │ ├── StarRatingDisplay.vue │ │ └── StarRatingInput.vue │ │ ├── main.js │ │ └── style │ │ ├── cardStyles.css │ │ ├── elevation.css │ │ ├── materialIcons.css │ │ └── starRating.css ├── 4_8 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── MaterialButton.vue │ │ ├── MaterialCardBox.vue │ │ ├── StarRating.vue │ │ ├── StarRatingDisplay.vue │ │ └── StarRatingInput.vue │ │ ├── main.js │ │ ├── mixins │ │ ├── starRatingBase.js │ │ ├── starRatingChild.js │ │ ├── starRatingDisplay.js │ │ └── starRatingName.js │ │ └── style │ │ ├── cardStyles.css │ │ ├── elevation.css │ │ ├── materialIcons.css │ │ └── starRating.css ├── 4_9 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── MaterialButton.vue │ │ ├── MaterialCardBox.vue │ │ ├── StarRating.vue │ │ ├── StarRatingDisplay.vue │ │ └── StarRatingInput.vue │ │ ├── main.js │ │ ├── mixins │ │ ├── starRatingBase.js │ │ ├── starRatingChild.js │ │ ├── starRatingDisplay.js │ │ └── starRatingName.js │ │ └── style │ │ ├── cardStyles.css │ │ ├── elevation.css │ │ ├── materialIcons.css │ │ └── starRating.css └── README.md ├── chapter-05 ├── 5_1 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ ├── http │ │ ├── baseFetch.js │ │ └── fetchApi.js │ │ └── main.js ├── 5_2 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── MaterialButton.vue │ │ ├── MaterialCardBox.vue │ │ └── RandomCat.vue │ │ ├── http │ │ ├── baseFetch.js │ │ └── fetchApi.js │ │ ├── main.js │ │ └── style │ │ ├── cardStyles.css │ │ ├── elevation.css │ │ └── materialIcons.css ├── 5_3 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ ├── http │ │ ├── baseFetch.js │ │ └── fetchApi.js │ │ ├── main.js │ │ └── server │ │ ├── db.js │ │ ├── delete.js │ │ ├── get.js │ │ ├── patch.js │ │ ├── post.js │ │ └── server.js ├── 5_4 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ ├── http │ │ ├── baseFetch.js │ │ └── fetchApi.js │ │ ├── main.js │ │ └── server │ │ ├── db.js │ │ ├── delete.js │ │ ├── get.js │ │ ├── patch.js │ │ ├── post.js │ │ └── server.js ├── 5_5 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ ├── http │ │ ├── baseFetch.js │ │ └── fetchApi.js │ │ ├── main.js │ │ └── server │ │ ├── db.js │ │ ├── delete.js │ │ ├── get.js │ │ ├── patch.js │ │ ├── post.js │ │ └── server.js ├── 5_6 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ ├── http │ │ ├── baseFetch.js │ │ ├── fetchApi.js │ │ └── interceptors.js │ │ ├── main.js │ │ └── server │ │ ├── db.js │ │ ├── delete.js │ │ ├── get.js │ │ ├── patch.js │ │ ├── post.js │ │ └── server.js ├── 5_7 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ ├── HelloWorld.vue │ │ │ ├── create.vue │ │ │ ├── list.vue │ │ │ ├── update.vue │ │ │ ├── userForm.vue │ │ │ └── view.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeComponent.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ └── style.css │ └── vue.config.js └── README.md ├── chapter-06 ├── 6.1 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── HelloWorld.vue │ │ └── navigationBar.vue │ │ ├── main.js │ │ ├── router │ │ └── index.js │ │ └── views │ │ ├── About.vue │ │ ├── Home.vue │ │ └── contact.vue ├── 6.2 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── HelloWorld.vue │ │ └── navigationBar.vue │ │ ├── main.js │ │ ├── router │ │ └── index.js │ │ └── views │ │ ├── About.vue │ │ ├── Home.vue │ │ └── contact.vue ├── 6.3 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── userForm.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeRoute.js │ │ ├── router │ │ │ └── index.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── style.css │ │ └── views │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js ├── 6.4 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── userForm.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeRoute.js │ │ ├── router │ │ │ └── index.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── style.css │ │ └── views │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js ├── 6.5 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── userForm.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeRoute.js │ │ ├── router │ │ │ └── index.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── style.css │ │ └── views │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js ├── 6.6 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── userForm.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeRoute.js │ │ ├── router │ │ │ ├── index.js │ │ │ └── user.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── style.css │ │ └── views │ │ │ └── user │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js ├── 6.7 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── userForm.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeRoute.js │ │ ├── router │ │ │ ├── index.js │ │ │ └── user.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── style.css │ │ └── views │ │ │ ├── NotFound.vue │ │ │ └── user │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js ├── 6.8 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── userForm.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeRoute.js │ │ ├── router │ │ │ ├── index.js │ │ │ ├── middleware │ │ │ │ └── authentication.js │ │ │ └── user.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── style.css │ │ └── views │ │ │ ├── Login.vue │ │ │ ├── NotFound.vue │ │ │ └── user │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js └── 6.9 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ ├── favicon.ico │ └── index.html │ ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ └── userForm.vue │ ├── http │ │ ├── baseFetch.js │ │ ├── fetchApi.js │ │ └── interceptors.js │ ├── main.js │ ├── mixin │ │ └── changeRoute.js │ ├── router │ │ ├── index.js │ │ ├── middleware │ │ │ └── authentication.js │ │ └── user.js │ ├── server │ │ ├── db.js │ │ ├── delete.js │ │ ├── get.js │ │ ├── patch.js │ │ ├── post.js │ │ └── server.js │ ├── style.css │ └── views │ │ ├── Login.vue │ │ ├── NotFound.vue │ │ └── user │ │ ├── Create.vue │ │ ├── Edit.vue │ │ ├── Index.vue │ │ ├── List.vue │ │ └── View.vue │ └── vue.config.js ├── chapter-07 ├── 7.1 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ ├── main.js │ │ ├── router │ │ └── index.js │ │ ├── store │ │ └── index.js │ │ └── views │ │ ├── About.vue │ │ └── Home.vue ├── 7.2 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── userForm.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeRoute.js │ │ ├── router │ │ │ ├── index.js │ │ │ ├── middleware │ │ │ │ └── authentication.js │ │ │ └── user.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── store │ │ │ ├── index.js │ │ │ └── user │ │ │ │ ├── index.js │ │ │ │ └── state.js │ │ ├── style.css │ │ └── views │ │ │ ├── Login.vue │ │ │ ├── NotFound.vue │ │ │ └── user │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js ├── 7.3 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── userForm.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeRoute.js │ │ ├── router │ │ │ ├── index.js │ │ │ ├── middleware │ │ │ │ └── authentication.js │ │ │ └── user.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── store │ │ │ ├── index.js │ │ │ └── user │ │ │ │ ├── index.js │ │ │ │ ├── mutations.js │ │ │ │ ├── state.js │ │ │ │ └── types.js │ │ ├── style.css │ │ └── views │ │ │ ├── Login.vue │ │ │ ├── NotFound.vue │ │ │ └── user │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js ├── 7.4 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── userForm.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeRoute.js │ │ ├── router │ │ │ ├── index.js │ │ │ ├── middleware │ │ │ │ └── authentication.js │ │ │ └── user.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── store │ │ │ ├── index.js │ │ │ └── user │ │ │ │ ├── getters.js │ │ │ │ ├── index.js │ │ │ │ ├── mutations.js │ │ │ │ ├── state.js │ │ │ │ └── types.js │ │ ├── style.css │ │ └── views │ │ │ ├── Login.vue │ │ │ ├── NotFound.vue │ │ │ └── user │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js ├── 7.5 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ └── userForm.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ └── changeRoute.js │ │ ├── router │ │ │ ├── index.js │ │ │ ├── middleware │ │ │ │ └── authentication.js │ │ │ └── user.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── store │ │ │ ├── index.js │ │ │ └── user │ │ │ │ ├── actions.js │ │ │ │ ├── getters.js │ │ │ │ ├── index.js │ │ │ │ ├── mutations.js │ │ │ │ ├── state.js │ │ │ │ └── types.js │ │ ├── style.css │ │ └── views │ │ │ ├── Login.vue │ │ │ ├── NotFound.vue │ │ │ └── user │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js ├── 7.6 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ ├── userForm.vue │ │ │ └── userList.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ ├── changeRoute.js │ │ │ └── vuex.js │ │ ├── router │ │ │ ├── index.js │ │ │ ├── middleware │ │ │ │ └── authentication.js │ │ │ └── user.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── store │ │ │ ├── index.js │ │ │ └── user │ │ │ │ ├── actions.js │ │ │ │ ├── getters.js │ │ │ │ ├── index.js │ │ │ │ ├── mutations.js │ │ │ │ ├── state.js │ │ │ │ └── types.js │ │ ├── style.css │ │ └── views │ │ │ ├── Login.vue │ │ │ ├── NotFound.vue │ │ │ └── user │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js ├── 7.7 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ └── logo.png │ │ ├── components │ │ │ ├── userForm.vue │ │ │ └── userList.vue │ │ ├── http │ │ │ ├── baseFetch.js │ │ │ ├── fetchApi.js │ │ │ └── interceptors.js │ │ ├── main.js │ │ ├── mixin │ │ │ ├── changeRoute.js │ │ │ └── vuex.js │ │ ├── router │ │ │ ├── index.js │ │ │ ├── middleware │ │ │ │ └── authentication.js │ │ │ └── user.js │ │ ├── server │ │ │ ├── db.js │ │ │ ├── delete.js │ │ │ ├── get.js │ │ │ ├── patch.js │ │ │ ├── post.js │ │ │ └── server.js │ │ ├── store │ │ │ ├── index.js │ │ │ └── user │ │ │ │ ├── actions.js │ │ │ │ ├── getters.js │ │ │ │ ├── index.js │ │ │ │ ├── mutations.js │ │ │ │ ├── state.js │ │ │ │ └── types.js │ │ ├── style.css │ │ └── views │ │ │ ├── Login.vue │ │ │ ├── NotFound.vue │ │ │ └── user │ │ │ ├── Create.vue │ │ │ ├── Edit.vue │ │ │ ├── Index.vue │ │ │ ├── List.vue │ │ │ └── View.vue │ └── vue.config.js └── 7.8 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── postcss.config.js │ ├── public │ ├── favicon.ico │ └── index.html │ ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ ├── userForm.vue │ │ └── userList.vue │ ├── http │ │ ├── baseFetch.js │ │ ├── fetchApi.js │ │ └── interceptors.js │ ├── main.js │ ├── mixin │ │ ├── changeRoute.js │ │ └── vuex.js │ ├── router │ │ ├── index.js │ │ ├── middleware │ │ │ └── authentication.js │ │ └── user.js │ ├── server │ │ ├── db.js │ │ ├── delete.js │ │ ├── get.js │ │ ├── patch.js │ │ ├── post.js │ │ └── server.js │ ├── store │ │ ├── authentication │ │ │ ├── index.js │ │ │ └── state.js │ │ ├── index.js │ │ └── user │ │ │ ├── actions.js │ │ │ ├── getters.js │ │ │ ├── index.js │ │ │ ├── mutations.js │ │ │ ├── state.js │ │ │ └── types.js │ ├── style.css │ └── views │ │ ├── Login.vue │ │ ├── NotFound.vue │ │ └── user │ │ ├── Create.vue │ │ ├── Edit.vue │ │ ├── Index.vue │ │ ├── List.vue │ │ └── View.vue │ └── vue.config.js ├── chapter-08 ├── 08.1 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ └── main.js ├── 08.2 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ └── main.js ├── 08.3 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ └── main.js ├── 08.4 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ └── main.js ├── 08.5 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ └── main.js ├── 08.6 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ ├── CustomTransition.vue │ │ └── HelloWorld.vue │ │ └── main.js └── 08.7 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ ├── favicon.ico │ └── index.html │ └── src │ ├── App.vue │ ├── assets │ └── logo.png │ ├── components │ └── HelloWorld.vue │ └── main.js ├── chapter-09 ├── 09.1 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ ├── logo.png │ │ └── scss │ │ │ ├── _variables.scss │ │ │ └── app.scss │ │ ├── components │ │ ├── Footer.vue │ │ ├── HeroSection.vue │ │ └── TopMenu.vue │ │ ├── layouts │ │ └── Main.vue │ │ └── main.js ├── 09.2 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ ├── public │ │ ├── favicon.ico │ │ └── index.html │ ├── src │ │ ├── App.vue │ │ ├── assets │ │ │ ├── logo.png │ │ │ └── logo.svg │ │ ├── components │ │ │ ├── DrawerMenu.vue │ │ │ ├── Layout.vue │ │ │ └── TopBar.vue │ │ ├── main.js │ │ └── plugins │ │ │ └── vuetify.js │ └── vue.config.js └── 09.3 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ ├── favicon.ico │ └── index.html │ └── src │ ├── App.vue │ ├── assets │ └── logo.png │ ├── components │ ├── Drawer.vue │ ├── Layout.vue │ └── TopBar.vue │ ├── main.js │ └── plugins │ └── ant-design-vue.js ├── chapter-10 ├── 10.2 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── _redirects │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ ├── main.js │ │ ├── router │ │ └── index.js │ │ ├── store │ │ └── index.js │ │ └── views │ │ ├── About.vue │ │ └── Home.vue ├── 10.5 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── _redirects │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ ├── main.js │ │ ├── router │ │ └── index.js │ │ ├── store │ │ └── index.js │ │ └── views │ │ ├── About.vue │ │ └── Home.vue ├── 10.6 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── package.json │ ├── public │ │ ├── _redirects │ │ ├── favicon.ico │ │ └── index.html │ └── src │ │ ├── App.vue │ │ ├── assets │ │ └── logo.png │ │ ├── components │ │ └── HelloWorld.vue │ │ ├── main.js │ │ ├── router │ │ └── index.js │ │ ├── store │ │ └── index.js │ │ └── views │ │ ├── About.vue │ │ └── Home.vue └── 10.8 │ ├── .browserslistrc │ ├── .editorconfig │ ├── .eslintrc.js │ ├── .firebase │ └── hosting.ZGlzdA.cache │ ├── .firebaserc │ ├── .gitignore │ ├── README.md │ ├── babel.config.js │ ├── firebase.json │ ├── package.json │ ├── public │ ├── _redirects │ ├── favicon.ico │ └── index.html │ └── src │ ├── App.vue │ ├── assets │ └── logo.png │ ├── components │ └── HelloWorld.vue │ ├── main.js │ ├── router │ └── index.js │ ├── store │ └── index.js │ └── views │ ├── About.vue │ └── Home.vue └── chapter-11 ├── 11.1 ├── .browserslistrc ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── package.json ├── public │ ├── favicon.ico │ └── index.html └── src │ ├── App.vue │ ├── assets │ └── logo.png │ ├── components │ └── HelloWorld.vue │ ├── main.js │ ├── router │ ├── index.js │ └── routes │ │ ├── about.js │ │ └── home.js │ └── views │ ├── About.vue │ └── Home.vue ├── 11.2 ├── .browserslistrc ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── package.json ├── public │ ├── favicon.ico │ └── index.html └── src │ ├── App.vue │ ├── assets │ └── logo.png │ ├── components │ └── HelloWorld.vue │ ├── main.js │ └── store │ ├── index.js │ ├── loader.js │ └── modules │ ├── user.js │ └── user │ ├── actions.js │ ├── getters.js │ ├── mutations.js │ ├── state.js │ └── types.js ├── 11.3 ├── .browserslistrc ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── package.json ├── postcss.config.js ├── public │ ├── favicon.ico │ └── index.html └── src │ ├── App.vue │ ├── assets │ └── logo.png │ ├── directives │ ├── formMaskInputDirective.js │ └── tokens.js │ └── main.js ├── 11.4 ├── .browserslistrc ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── package.json ├── postcss.config.js ├── public │ ├── favicon.ico │ └── index.html └── src │ ├── App.vue │ ├── assets │ └── logo.png │ ├── components │ └── HelloWorld.vue │ ├── main.js │ └── plugin │ └── storageManipulator.js ├── 11.5 ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── .vscode │ ├── extensions.json │ └── settings.json ├── README.md ├── babel.config.js ├── jsconfig.json ├── package.json ├── public │ ├── favicon.ico │ └── icons │ │ ├── apple-icon-120x120.png │ │ ├── apple-icon-152x152.png │ │ ├── apple-icon-167x167.png │ │ ├── apple-icon-180x180.png │ │ ├── favicon-128x128.png │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon-96x96.png │ │ ├── icon-128x128.png │ │ ├── icon-192x192.png │ │ ├── icon-256x256.png │ │ ├── icon-384x384.png │ │ ├── icon-512x512.png │ │ ├── ms-icon-144x144.png │ │ └── safari-pinned-tab.svg ├── quasar.conf.js ├── src-cordova │ ├── config.xml │ ├── cordova-flag.d.ts │ ├── hooks │ │ └── README.md │ └── package.json ├── src-electron │ ├── electron-flag.d.ts │ ├── icons │ │ ├── icon.icns │ │ ├── icon.ico │ │ └── linux-512x512.png │ └── main-process │ │ ├── electron-main.dev.js │ │ └── electron-main.js ├── src-pwa │ ├── custom-service-worker.js │ ├── pwa-flag.d.ts │ └── register-service-worker.js ├── src-ssr │ ├── extension.js │ ├── index.js │ └── ssr-flag.d.ts └── src │ ├── App.vue │ ├── assets │ ├── quasar-logo-full.svg │ └── sad.svg │ ├── boot │ └── .gitkeep │ ├── components │ └── EssentialLink.vue │ ├── css │ ├── app.sass │ └── quasar.variables.sass │ ├── index.template.html │ ├── layouts │ └── MainLayout.vue │ ├── pages │ ├── About.vue │ ├── Error404.vue │ └── Index.vue │ └── router │ ├── index.js │ └── routes.js ├── 11.6 ├── .browserslistrc ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── package.json ├── postcss.config.js ├── public │ ├── favicon.ico │ └── index.html └── src │ ├── App.vue │ ├── assets │ └── logo.png │ ├── components │ └── HelloWorld.vue │ ├── main.js │ └── mixins │ ├── deepImmediate.js │ ├── gettersAndSetters.js │ ├── methodsNames.js │ ├── multipleHandlers.js │ └── noCache.js ├── 11.7 ├── .gitignore ├── README.md ├── client │ ├── .eslintrc.js │ ├── .gitignore │ ├── README.md │ ├── assets │ │ └── README.md │ ├── components │ │ ├── README.md │ │ ├── TodoForm.vue │ │ └── TodoList.vue │ ├── layouts │ │ ├── README.md │ │ └── default.vue │ ├── middleware │ │ └── README.md │ ├── nuxt.config.js │ ├── package.json │ ├── pages │ │ ├── README.md │ │ └── index.vue │ ├── plugins │ │ └── README.md │ ├── server │ │ └── index.js │ ├── static │ │ ├── README.md │ │ └── favicon.ico │ └── store │ │ └── README.md └── server │ └── app.py ├── 11.8 ├── .browserslistrc ├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── package.json ├── postcss.config.js ├── public │ ├── favicon.ico │ └── index.html └── src │ ├── App.vue │ ├── assets │ └── logo.png │ ├── components │ └── HelloWorld.vue │ └── main.js └── README.md /chapter-01/1_3/README.md: -------------------------------------------------------------------------------- 1 | # 1.3 - Creating components with multiple root elements 2 | -------------------------------------------------------------------------------- /chapter-01/1_4/README.md: -------------------------------------------------------------------------------- 1 | # 1.4 - Creating components with attribute inheritance 2 | -------------------------------------------------------------------------------- /chapter-01/1_5/README.md: -------------------------------------------------------------------------------- 1 | # 1.5 - Using the reactivity and observable API outside the scope of Vue 2 | -------------------------------------------------------------------------------- /chapter-01/1_6/README.md: -------------------------------------------------------------------------------- 1 | # 1.6 - Creating a component using the composition API 2 | -------------------------------------------------------------------------------- /chapter-02/2_1/README.md: -------------------------------------------------------------------------------- 1 | # 2.1 - Creating a TypeScript Project 2 | 3 | ## Project setup 4 | ``` 5 | yarn install 6 | ``` 7 | 8 | ### Compiles for development 9 | ``` 10 | tsc ./index.ts 11 | ``` -------------------------------------------------------------------------------- /chapter-02/2_1/index.js: -------------------------------------------------------------------------------- 1 | function sum(a, b) { 2 | return a + b; 3 | } 4 | var firstNumber = 10; 5 | var secondNumber = 20; 6 | console.log(sum(firstNumber, secondNumber)); 7 | -------------------------------------------------------------------------------- /chapter-02/2_1/index.ts: -------------------------------------------------------------------------------- 1 | function sum(a: number, b: number): number { 2 | return a + b; 3 | } 4 | 5 | const firstNumber: number = 10; 6 | 7 | const secondNumber: number = 20; 8 | 9 | console.log(sum(firstNumber, secondNumber)); -------------------------------------------------------------------------------- /chapter-02/2_10/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-02/2_10/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-02/2_10/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_10/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_10/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_10/public/favicon.ico -------------------------------------------------------------------------------- /chapter-02/2_10/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_10/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-02/2_10/src/classComponentsHooks/vue-router.js: -------------------------------------------------------------------------------- 1 | import Component from 'vue-class-component'; 2 | 3 | Component.registerHooks([ 4 | 'beforeRouteEnter', 5 | 'beforeRouteLeave', 6 | ]); 7 | -------------------------------------------------------------------------------- /chapter-02/2_10/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: h => h(App), 8 | }).$mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-02/2_10/src/main.ts: -------------------------------------------------------------------------------- 1 | import './classComponentsHooks/vue-router'; 2 | 3 | import Vue from 'vue'; 4 | import App from './App.vue'; 5 | import router from './router'; 6 | 7 | 8 | Vue.config.productionTip = false; 9 | 10 | new Vue({ 11 | router, 12 | render: h => h(App), 13 | }).$mount('#app'); 14 | -------------------------------------------------------------------------------- /chapter-02/2_10/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue'; 3 | 4 | export default Vue; 5 | } 6 | -------------------------------------------------------------------------------- /chapter-02/2_10/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-02/2_11/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-02/2_11/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-02/2_11/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_11/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_11/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_11/public/favicon.ico -------------------------------------------------------------------------------- /chapter-02/2_11/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_11/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-02/2_11/src/main.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: h => h(App), 8 | }).$mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-02/2_11/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue'; 3 | 4 | export default Vue; 5 | } 6 | -------------------------------------------------------------------------------- /chapter-02/2_3/Dog.ts: -------------------------------------------------------------------------------- 1 | import {Animal, FoodChainType} from './Animal'; 2 | 3 | class Dog extends Animal { 4 | constructor() { 5 | super({ 6 | name: 'Dog', 7 | sound: 'Wof!', 8 | family: 'Canidae', 9 | foodChainType: FoodChainType.Carnivorous, 10 | }); 11 | } 12 | } -------------------------------------------------------------------------------- /chapter-02/2_3/README.md: -------------------------------------------------------------------------------- 1 | # 2.3 - Creating your first TypeScript class 2 | 3 | ## Project setup 4 | ``` 5 | yarn install 6 | ``` 7 | 8 | ### Compiles for development 9 | ``` 10 | tsc ./Dog.ts 11 | ``` -------------------------------------------------------------------------------- /chapter-02/2_4/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-02/2_4/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-02/2_4/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_4/public/favicon.ico -------------------------------------------------------------------------------- /chapter-02/2_4/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_4/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-02/2_4/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | 4 | createApp(App).mount('#app'); 5 | -------------------------------------------------------------------------------- /chapter-02/2_5/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-02/2_5/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-02/2_5/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_5/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_5/public/favicon.ico -------------------------------------------------------------------------------- /chapter-02/2_5/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_5/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-02/2_5/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | import store from './store'; 5 | 6 | createApp(App).use(store).use(router).mount('#app'); 7 | -------------------------------------------------------------------------------- /chapter-02/2_5/src/store/index.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'vuex'; 2 | 3 | export default createStore({ 4 | state: { 5 | }, 6 | mutations: { 7 | }, 8 | actions: { 9 | }, 10 | modules: { 11 | }, 12 | }); 13 | -------------------------------------------------------------------------------- /chapter-02/2_5/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-02/2_6/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-02/2_6/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-02/2_6/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_6/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_6/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_6/public/favicon.ico -------------------------------------------------------------------------------- /chapter-02/2_6/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_6/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-02/2_6/src/main.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: h => h(App), 8 | }).$mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-02/2_6/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue'; 3 | 4 | export default Vue; 5 | } 6 | -------------------------------------------------------------------------------- /chapter-02/2_7/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-02/2_7/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-02/2_7/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_7/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_7/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_7/public/favicon.ico -------------------------------------------------------------------------------- /chapter-02/2_7/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_7/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-02/2_7/src/main.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: h => h(App), 8 | }).$mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-02/2_7/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue'; 3 | 4 | export default Vue; 5 | } 6 | -------------------------------------------------------------------------------- /chapter-02/2_8/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-02/2_8/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-02/2_8/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_8/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_8/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_8/public/favicon.ico -------------------------------------------------------------------------------- /chapter-02/2_8/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_8/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-02/2_8/src/main.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: h => h(App), 8 | }).$mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-02/2_8/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue'; 3 | 4 | export default Vue; 5 | } 6 | -------------------------------------------------------------------------------- /chapter-02/2_9/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-02/2_9/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-02/2_9/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_9/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-02/2_9/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_9/public/favicon.ico -------------------------------------------------------------------------------- /chapter-02/2_9/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-02/2_9/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-02/2_9/src/decorators/componentMount.js: -------------------------------------------------------------------------------- 1 | import { createDecorator } from 'vue-class-component'; 2 | import componentMountLogger from './componentLogger'; 3 | 4 | export default createDecorator((options) => { 5 | options.mixins = [...options.mixins, componentMountLogger]; 6 | }); 7 | -------------------------------------------------------------------------------- /chapter-02/2_9/src/main.ts: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: h => h(App), 8 | }).$mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-02/2_9/src/shims-vue.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.vue' { 2 | import Vue from 'vue'; 3 | 4 | export default Vue; 5 | } 6 | -------------------------------------------------------------------------------- /chapter-03/3_1/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_1/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_1/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_1/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_1/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_1/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_1/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_1/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-03/3_10/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_10/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_10/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_10/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_10/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_10/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_10/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_10/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import { VuelidatePlugin } from '@vuelidate/core'; 3 | import App from './App.vue'; 4 | import './style.css'; 5 | 6 | const app = createApp(App); 7 | app.use(VuelidatePlugin); 8 | app.mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-03/3_11/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_11/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_11/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_11/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_11/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_11/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_11/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_11/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import { VuelidatePlugin } from '@vuelidate/core'; 3 | import App from './App.vue'; 4 | import './style.css'; 5 | 6 | const app = createApp(App); 7 | app.use(VuelidatePlugin); 8 | app.mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-03/3_2/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_2/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_2/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_2/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_2/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_2/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_2/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_2/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-03/3_3/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_3/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_3/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_3/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_3/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_3/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_3/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_3/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-03/3_4/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_4/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_4/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_4/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_4/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_4/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_4/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-03/3_5/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_5/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_5/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_5/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_5/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_5/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_5/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_5/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-03/3_6/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_6/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_6/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_6/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_6/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_6/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_6/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_6/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | 4 | createApp(App).mount('#app'); 5 | -------------------------------------------------------------------------------- /chapter-03/3_7/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_7/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_7/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_7/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_7/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_7/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_7/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_7/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-03/3_8/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_8/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_8/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_8/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_8/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_8/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_8/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_8/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import { VuelidatePlugin } from '@vuelidate/core'; 3 | import App from './App.vue'; 4 | import './style.css'; 5 | 6 | const app = createApp(App); 7 | app.use(VuelidatePlugin); 8 | app.mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-03/3_9/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-03/3_9/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-03/3_9/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-03/3_9/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_9/public/favicon.ico -------------------------------------------------------------------------------- /chapter-03/3_9/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-03/3_9/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-03/3_9/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import { VuelidatePlugin } from '@vuelidate/core'; 3 | import App from './App.vue'; 4 | import './style.css'; 5 | 6 | const app = createApp(App); 7 | app.use(VuelidatePlugin); 8 | app.mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-04/4_1/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-04/4_1/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-04/4_1/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-04/4_1/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_1/public/favicon.ico -------------------------------------------------------------------------------- /chapter-04/4_1/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_1/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-04/4_1/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | 4 | createApp(App).mount('#app'); 5 | -------------------------------------------------------------------------------- /chapter-04/4_2/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-04/4_2/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-04/4_2/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-04/4_2/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_2/public/favicon.ico -------------------------------------------------------------------------------- /chapter-04/4_2/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_2/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-04/4_2/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | 4 | createApp(App).mount('#app'); 5 | -------------------------------------------------------------------------------- /chapter-04/4_3/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-04/4_3/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-04/4_3/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-04/4_3/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_3/public/favicon.ico -------------------------------------------------------------------------------- /chapter-04/4_3/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_3/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-04/4_3/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | 4 | createApp(App).mount('#app'); 5 | -------------------------------------------------------------------------------- /chapter-04/4_4/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-04/4_4/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-04/4_4/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-04/4_4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_4/public/favicon.ico -------------------------------------------------------------------------------- /chapter-04/4_4/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_4/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-04/4_4/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | 4 | createApp(App).mount('#app'); 5 | -------------------------------------------------------------------------------- /chapter-04/4_5/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-04/4_5/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-04/4_5/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-04/4_5/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_5/public/favicon.ico -------------------------------------------------------------------------------- /chapter-04/4_5/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_5/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-04/4_5/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style/materialIcons.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-04/4_6/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-04/4_6/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-04/4_6/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-04/4_6/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_6/public/favicon.ico -------------------------------------------------------------------------------- /chapter-04/4_6/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_6/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-04/4_6/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style/materialIcons.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-04/4_7/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-04/4_7/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-04/4_7/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-04/4_7/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_7/public/favicon.ico -------------------------------------------------------------------------------- /chapter-04/4_7/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_7/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-04/4_7/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style/materialIcons.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-04/4_8/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-04/4_8/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-04/4_8/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-04/4_8/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_8/public/favicon.ico -------------------------------------------------------------------------------- /chapter-04/4_8/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_8/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-04/4_8/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style/materialIcons.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-04/4_8/src/mixins/starRatingBase.js: -------------------------------------------------------------------------------- 1 | export default { 2 | props: { 3 | maxRating: { 4 | type: Number, 5 | required: false, 6 | default: 5, 7 | }, 8 | rating: { 9 | type: Number, 10 | required: false, 11 | default: 0, 12 | }, 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /chapter-04/4_8/src/mixins/starRatingChild.js: -------------------------------------------------------------------------------- 1 | export default { 2 | inject: { 3 | starRating: { 4 | default() { 5 | console.error('StarRatingDisplay need to be a child of StartRating'); 6 | }, 7 | }, 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-04/4_9/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-04/4_9/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-04/4_9/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-04/4_9/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_9/public/favicon.ico -------------------------------------------------------------------------------- /chapter-04/4_9/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-04/4_9/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-04/4_9/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style/materialIcons.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-04/4_9/src/mixins/starRatingBase.js: -------------------------------------------------------------------------------- 1 | export default { 2 | props: { 3 | maxRating: { 4 | type: Number, 5 | required: false, 6 | default: 5, 7 | }, 8 | rating: { 9 | type: Number, 10 | required: false, 11 | default: 0, 12 | }, 13 | }, 14 | }; 15 | -------------------------------------------------------------------------------- /chapter-04/4_9/src/mixins/starRatingChild.js: -------------------------------------------------------------------------------- 1 | export default { 2 | inject: { 3 | starRating: { 4 | default() { 5 | console.error('StarRatingDisplay need to be a child of StartRating'); 6 | }, 7 | }, 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-05/5_1/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-05/5_1/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-05/5_1/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_1/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_1/public/favicon.ico -------------------------------------------------------------------------------- /chapter-05/5_1/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_1/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-05/5_1/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | 4 | createApp(App).mount('#app'); 5 | -------------------------------------------------------------------------------- /chapter-05/5_2/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-05/5_2/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-05/5_2/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_2/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_2/public/favicon.ico -------------------------------------------------------------------------------- /chapter-05/5_2/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 15 | -------------------------------------------------------------------------------- /chapter-05/5_2/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_2/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-05/5_2/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue'; 2 | import App from './App.vue'; 3 | import './style/materialIcons.css'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-05/5_3/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-05/5_3/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-05/5_3/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_3/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_3/public/favicon.ico -------------------------------------------------------------------------------- /chapter-05/5_3/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_3/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-05/5_3/src/main.js: -------------------------------------------------------------------------------- 1 | import './server/server'; 2 | import { createApp } from 'vue'; 3 | import App from './App.vue'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-05/5_3/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | age: 31, 7 | country: 'Brazil', 8 | active: true, 9 | }, 10 | ], 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-05/5_3/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_3/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | 3 | export default { 4 | getFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_4/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-05/5_4/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-05/5_4/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_4/public/favicon.ico -------------------------------------------------------------------------------- /chapter-05/5_4/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_4/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-05/5_4/src/http/baseFetch.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | export default async (url, method, options = {}) => axios({ 4 | method: method.toUpperCase(), 5 | url, 6 | ...options, 7 | }); 8 | -------------------------------------------------------------------------------- /chapter-05/5_4/src/main.js: -------------------------------------------------------------------------------- 1 | import './server/server'; 2 | import { createApp } from 'vue'; 3 | import App from './App.vue'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-05/5_4/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | age: 31, 7 | country: 'Brazil', 8 | active: true, 9 | }, 10 | ], 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-05/5_4/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_4/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | 3 | export default { 4 | getFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_5/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-05/5_5/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-05/5_5/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_5/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_5/public/favicon.ico -------------------------------------------------------------------------------- /chapter-05/5_5/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_5/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-05/5_5/src/main.js: -------------------------------------------------------------------------------- 1 | import './server/server'; 2 | import { createApp } from 'vue'; 3 | import App from './App.vue'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-05/5_5/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | age: 31, 7 | country: 'Brazil', 8 | active: true, 9 | }, 10 | ], 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-05/5_5/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_5/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | 3 | export default { 4 | getFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_6/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-05/5_6/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-05/5_6/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_6/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_6/public/favicon.ico -------------------------------------------------------------------------------- /chapter-05/5_6/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_6/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-05/5_6/src/main.js: -------------------------------------------------------------------------------- 1 | import './server/server'; 2 | import { createApp } from 'vue'; 3 | import App from './App.vue'; 4 | 5 | createApp(App).mount('#app'); 6 | -------------------------------------------------------------------------------- /chapter-05/5_6/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | age: 31, 7 | country: 'Brazil', 8 | active: true, 9 | }, 10 | ], 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-05/5_6/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_6/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | 3 | export default { 4 | getFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_7/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-05/5_7/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-05/5_7/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-05/5_7/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-05/5_7/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_7/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_7/public/favicon.ico -------------------------------------------------------------------------------- /chapter-05/5_7/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-05/5_7/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-05/5_7/src/main.js: -------------------------------------------------------------------------------- 1 | import './server/server'; 2 | import Vue from 'vue'; 3 | import App from './App.vue'; 4 | import Vuesax from 'vuesax'; 5 | import './style.css'; 6 | 7 | Vue.use(Vuesax); 8 | 9 | Vue.config.productionTip = false; 10 | 11 | new Vue({ 12 | render: h => h(App), 13 | }).$mount('#app'); 14 | -------------------------------------------------------------------------------- /chapter-05/5_7/src/mixin/changeComponent.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | changeComponent(component, userId = 0) { 4 | this.$emit('change-component', { component, userId }); 5 | }, 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /chapter-05/5_7/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-05/5_7/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-05/5_7/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-05/5_7/src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i&display=swap'); 2 | @import url('~vuesax/dist/vuesax.css'); 3 | @import url('~material-icons/iconfont/material-icons.css'); 4 | 5 | * { 6 | font-family: 'Open Sans', sans-serif; 7 | } 8 | -------------------------------------------------------------------------------- /chapter-05/5_7/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-06/6.1/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-06/6.1/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-06/6.1/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.1/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.1/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.1/public/favicon.ico -------------------------------------------------------------------------------- /chapter-06/6.1/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.1/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-06/6.1/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | router, 9 | render: h => h(App), 10 | }).$mount('#app'); 11 | -------------------------------------------------------------------------------- /chapter-06/6.1/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | 11 | -------------------------------------------------------------------------------- /chapter-06/6.1/src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /chapter-06/6.1/src/views/contact.vue: -------------------------------------------------------------------------------- 1 | 6 | 11 | -------------------------------------------------------------------------------- /chapter-06/6.2/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-06/6.2/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-06/6.2/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.2/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.2/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.2/public/favicon.ico -------------------------------------------------------------------------------- /chapter-06/6.2/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.2/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-06/6.2/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | router, 9 | render: h => h(App), 10 | }).$mount('#app'); 11 | -------------------------------------------------------------------------------- /chapter-06/6.2/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | 11 | -------------------------------------------------------------------------------- /chapter-06/6.2/src/views/Home.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /chapter-06/6.3/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-06/6.3/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-06/6.3/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-06/6.3/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-06/6.3/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.3/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.3/public/favicon.ico -------------------------------------------------------------------------------- /chapter-06/6.3/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-06/6.3/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.3/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-06/6.3/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-06/6.3/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-06/6.3/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.3/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-06/6.3/src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i&display=swap'); 2 | @import url('~vuesax/dist/vuesax.css'); 3 | @import url('~material-icons/iconfont/material-icons.css'); 4 | 5 | * { 6 | font-family: 'Open Sans', sans-serif; 7 | } 8 | -------------------------------------------------------------------------------- /chapter-06/6.3/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-06/6.4/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-06/6.4/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-06/6.4/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-06/6.4/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-06/6.4/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.4/public/favicon.ico -------------------------------------------------------------------------------- /chapter-06/6.4/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-06/6.4/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.4/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-06/6.4/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-06/6.4/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-06/6.4/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.4/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-06/6.4/src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i&display=swap'); 2 | @import url('~vuesax/dist/vuesax.css'); 3 | @import url('~material-icons/iconfont/material-icons.css'); 4 | 5 | * { 6 | font-family: 'Open Sans', sans-serif; 7 | } 8 | -------------------------------------------------------------------------------- /chapter-06/6.4/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-06/6.5/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-06/6.5/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-06/6.5/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-06/6.5/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-06/6.5/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.5/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.5/public/favicon.ico -------------------------------------------------------------------------------- /chapter-06/6.5/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-06/6.5/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.5/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-06/6.5/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-06/6.5/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-06/6.5/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.5/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-06/6.5/src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i&display=swap'); 2 | @import url('~vuesax/dist/vuesax.css'); 3 | @import url('~material-icons/iconfont/material-icons.css'); 4 | 5 | * { 6 | font-family: 'Open Sans', sans-serif; 7 | } 8 | -------------------------------------------------------------------------------- /chapter-06/6.5/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-06/6.6/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-06/6.6/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-06/6.6/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-06/6.6/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-06/6.6/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.6/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.6/public/favicon.ico -------------------------------------------------------------------------------- /chapter-06/6.6/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-06/6.6/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.6/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-06/6.6/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-06/6.6/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-06/6.6/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.6/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-06/6.6/src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i&display=swap'); 2 | @import url('~vuesax/dist/vuesax.css'); 3 | @import url('~material-icons/iconfont/material-icons.css'); 4 | 5 | * { 6 | font-family: 'Open Sans', sans-serif; 7 | } 8 | -------------------------------------------------------------------------------- /chapter-06/6.6/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-06/6.6/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-06/6.7/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-06/6.7/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-06/6.7/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-06/6.7/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-06/6.7/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.7/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.7/public/favicon.ico -------------------------------------------------------------------------------- /chapter-06/6.7/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-06/6.7/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.7/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-06/6.7/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-06/6.7/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-06/6.7/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.7/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-06/6.7/src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i&display=swap'); 2 | @import url('~vuesax/dist/vuesax.css'); 3 | @import url('~material-icons/iconfont/material-icons.css'); 4 | 5 | * { 6 | font-family: 'Open Sans', sans-serif; 7 | } 8 | -------------------------------------------------------------------------------- /chapter-06/6.7/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-06/6.7/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-06/6.8/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-06/6.8/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-06/6.8/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-06/6.8/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-06/6.8/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.8/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.8/public/favicon.ico -------------------------------------------------------------------------------- /chapter-06/6.8/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-06/6.8/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.8/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-06/6.8/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-06/6.8/src/router/middleware/authentication.js: -------------------------------------------------------------------------------- 1 | export default (to, from, next) => { 2 | if (to.meta.authenticated && sessionStorage.getItem('auth')) { 3 | return next(); 4 | } 5 | 6 | if (!to.meta.authenticated) { 7 | return next(); 8 | } 9 | 10 | next('/login'); 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-06/6.8/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-06/6.8/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.8/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-06/6.8/src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i&display=swap'); 2 | @import url('~vuesax/dist/vuesax.css'); 3 | @import url('~material-icons/iconfont/material-icons.css'); 4 | 5 | * { 6 | font-family: 'Open Sans', sans-serif; 7 | } 8 | -------------------------------------------------------------------------------- /chapter-06/6.8/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-06/6.8/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-06/6.9/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-06/6.9/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-06/6.9/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-06/6.9/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-06/6.9/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.9/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.9/public/favicon.ico -------------------------------------------------------------------------------- /chapter-06/6.9/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-06/6.9/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-06/6.9/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-06/6.9/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-06/6.9/src/router/middleware/authentication.js: -------------------------------------------------------------------------------- 1 | export default (to, from, next) => { 2 | if (to.meta.authenticated && sessionStorage.getItem('auth')) { 3 | return next(); 4 | } 5 | 6 | if (!to.meta.authenticated) { 7 | return next(); 8 | } 9 | 10 | next('/login'); 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-06/6.9/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-06/6.9/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-06/6.9/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-06/6.9/src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i&display=swap'); 2 | @import url('~vuesax/dist/vuesax.css'); 3 | @import url('~material-icons/iconfont/material-icons.css'); 4 | 5 | * { 6 | font-family: 'Open Sans', sans-serif; 7 | } 8 | -------------------------------------------------------------------------------- /chapter-06/6.9/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-06/6.9/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-07/7.1/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-07/7.1/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-07/7.1/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.1/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.1/public/favicon.ico -------------------------------------------------------------------------------- /chapter-07/7.1/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.1/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-07/7.1/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | import store from './store'; 5 | 6 | Vue.config.productionTip = false; 7 | 8 | new Vue({ 9 | router, 10 | store, 11 | render: h => h(App), 12 | }).$mount('#app'); 13 | -------------------------------------------------------------------------------- /chapter-07/7.1/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-07/7.2/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-07/7.2/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-07/7.2/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-07/7.2/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-07/7.2/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.2/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.2/public/favicon.ico -------------------------------------------------------------------------------- /chapter-07/7.2/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-07/7.2/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.2/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-07/7.2/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-07/7.2/src/router/middleware/authentication.js: -------------------------------------------------------------------------------- 1 | export default (to, from, next) => { 2 | if (to.meta.authenticated && sessionStorage.getItem('auth')) { 3 | return next(); 4 | } 5 | 6 | if (!to.meta.authenticated) { 7 | return next(); 8 | } 9 | 10 | next('/login'); 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.2/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-07/7.2/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.2/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-07/7.2/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | import UserStore from './user'; 4 | 5 | Vue.use(Vuex) 6 | 7 | export default new Vuex.Store({ 8 | ...UserStore, 9 | }) 10 | -------------------------------------------------------------------------------- /chapter-07/7.2/src/store/user/index.js: -------------------------------------------------------------------------------- 1 | import state from './state'; 2 | 3 | export default { 4 | state, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.2/src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i&display=swap'); 2 | @import url('~vuesax/dist/vuesax.css'); 3 | @import url('~material-icons/iconfont/material-icons.css'); 4 | 5 | * { 6 | font-family: 'Open Sans', sans-serif; 7 | } 8 | -------------------------------------------------------------------------------- /chapter-07/7.2/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-07/7.2/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-07/7.3/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-07/7.3/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-07/7.3/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-07/7.3/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-07/7.3/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.3/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.3/public/favicon.ico -------------------------------------------------------------------------------- /chapter-07/7.3/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-07/7.3/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.3/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-07/7.3/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-07/7.3/src/router/middleware/authentication.js: -------------------------------------------------------------------------------- 1 | export default (to, from, next) => { 2 | if (to.meta.authenticated && sessionStorage.getItem('auth')) { 3 | return next(); 4 | } 5 | 6 | if (!to.meta.authenticated) { 7 | return next(); 8 | } 9 | 10 | next('/login'); 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.3/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-07/7.3/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.3/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-07/7.3/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | import UserStore from './user'; 4 | 5 | Vue.use(Vuex) 6 | 7 | export default new Vuex.Store({ 8 | ...UserStore, 9 | }) 10 | -------------------------------------------------------------------------------- /chapter-07/7.3/src/store/user/index.js: -------------------------------------------------------------------------------- 1 | import state from './state'; 2 | import mutations from './mutations'; 3 | 4 | export default { 5 | state, 6 | mutations, 7 | }; 8 | -------------------------------------------------------------------------------- /chapter-07/7.3/src/store/user/types.js: -------------------------------------------------------------------------------- 1 | export default { 2 | LOADING: 'LOADING', 3 | ERROR: 'ERROR', 4 | SET_USER_LIST: 'SET_USER_LIST', 5 | SET_USER_DATA: 'SET_USER_DATA', 6 | UPDATE_USER: 'UPDATE_USER', 7 | REMOVE_USER: 'REMOVE_USER', 8 | } 9 | -------------------------------------------------------------------------------- /chapter-07/7.3/src/style.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,600,600i,700,700i,800,800i&display=swap'); 2 | @import url('~vuesax/dist/vuesax.css'); 3 | @import url('~material-icons/iconfont/material-icons.css'); 4 | 5 | * { 6 | font-family: 'Open Sans', sans-serif; 7 | } 8 | -------------------------------------------------------------------------------- /chapter-07/7.3/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-07/7.3/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-07/7.4/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-07/7.4/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-07/7.4/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-07/7.4/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-07/7.4/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.4/public/favicon.ico -------------------------------------------------------------------------------- /chapter-07/7.4/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-07/7.4/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.4/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-07/7.4/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-07/7.4/src/router/middleware/authentication.js: -------------------------------------------------------------------------------- 1 | export default (to, from, next) => { 2 | if (to.meta.authenticated && sessionStorage.getItem('auth')) { 3 | return next(); 4 | } 5 | 6 | if (!to.meta.authenticated) { 7 | return next(); 8 | } 9 | 10 | next('/login'); 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.4/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-07/7.4/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.4/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-07/7.4/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | import UserStore from './user'; 4 | 5 | Vue.use(Vuex) 6 | 7 | export default new Vuex.Store({ 8 | ...UserStore, 9 | }) 10 | -------------------------------------------------------------------------------- /chapter-07/7.4/src/store/user/index.js: -------------------------------------------------------------------------------- 1 | import state from './state'; 2 | import mutations from './mutations'; 3 | import getters from './getters'; 4 | 5 | export default { 6 | state, 7 | mutations, 8 | getters, 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-07/7.4/src/store/user/types.js: -------------------------------------------------------------------------------- 1 | export default { 2 | LOADING: 'LOADING', 3 | ERROR: 'ERROR', 4 | SET_USER_LIST: 'SET_USER_LIST', 5 | SET_USER_DATA: 'SET_USER_DATA', 6 | UPDATE_USER: 'UPDATE_USER', 7 | REMOVE_USER: 'REMOVE_USER', 8 | } 9 | -------------------------------------------------------------------------------- /chapter-07/7.4/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-07/7.4/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-07/7.5/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-07/7.5/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-07/7.5/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-07/7.5/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-07/7.5/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.5/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.5/public/favicon.ico -------------------------------------------------------------------------------- /chapter-07/7.5/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-07/7.5/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.5/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-07/7.5/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-07/7.5/src/router/middleware/authentication.js: -------------------------------------------------------------------------------- 1 | export default (to, from, next) => { 2 | if (to.meta.authenticated && sessionStorage.getItem('auth')) { 3 | return next(); 4 | } 5 | 6 | if (!to.meta.authenticated) { 7 | return next(); 8 | } 9 | 10 | next('/login'); 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.5/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-07/7.5/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.5/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-07/7.5/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | import UserStore from './user'; 4 | 5 | Vue.use(Vuex) 6 | 7 | export default new Vuex.Store({ 8 | ...UserStore, 9 | }) 10 | -------------------------------------------------------------------------------- /chapter-07/7.5/src/store/user/index.js: -------------------------------------------------------------------------------- 1 | import state from './state'; 2 | import mutations from './mutations'; 3 | import getters from './getters'; 4 | import actions from './actions'; 5 | 6 | export default { 7 | state, 8 | mutations, 9 | getters, 10 | actions, 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.5/src/store/user/types.js: -------------------------------------------------------------------------------- 1 | export default { 2 | LOADING: 'LOADING', 3 | ERROR: 'ERROR', 4 | SET_USER_LIST: 'SET_USER_LIST', 5 | SET_USER_DATA: 'SET_USER_DATA', 6 | UPDATE_USER: 'UPDATE_USER', 7 | REMOVE_USER: 'REMOVE_USER', 8 | } 9 | -------------------------------------------------------------------------------- /chapter-07/7.5/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-07/7.5/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-07/7.6/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-07/7.6/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-07/7.6/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-07/7.6/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-07/7.6/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.6/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.6/public/favicon.ico -------------------------------------------------------------------------------- /chapter-07/7.6/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-07/7.6/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.6/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-07/7.6/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-07/7.6/src/mixin/vuex.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | loading() { 4 | return this.$store.loading; 5 | }, 6 | error() { 7 | return this.$store.error; 8 | }, 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /chapter-07/7.6/src/router/middleware/authentication.js: -------------------------------------------------------------------------------- 1 | export default (to, from, next) => { 2 | if (to.meta.authenticated && sessionStorage.getItem('auth')) { 3 | return next(); 4 | } 5 | 6 | if (!to.meta.authenticated) { 7 | return next(); 8 | } 9 | 10 | next('/login'); 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.6/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-07/7.6/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.6/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-07/7.6/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | import UserStore from './user'; 4 | 5 | Vue.use(Vuex) 6 | 7 | export default new Vuex.Store({ 8 | ...UserStore, 9 | }) 10 | -------------------------------------------------------------------------------- /chapter-07/7.6/src/store/user/index.js: -------------------------------------------------------------------------------- 1 | import state from './state'; 2 | import mutations from './mutations'; 3 | import getters from './getters'; 4 | import actions from './actions'; 5 | 6 | export default { 7 | state, 8 | mutations, 9 | getters, 10 | actions, 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.6/src/store/user/types.js: -------------------------------------------------------------------------------- 1 | export default { 2 | LOADING: 'LOADING', 3 | ERROR: 'ERROR', 4 | SET_USER_LIST: 'SET_USER_LIST', 5 | SET_USER_DATA: 'SET_USER_DATA', 6 | UPDATE_USER: 'UPDATE_USER', 7 | REMOVE_USER: 'REMOVE_USER', 8 | } 9 | -------------------------------------------------------------------------------- /chapter-07/7.6/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-07/7.6/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-07/7.7/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-07/7.7/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-07/7.7/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-07/7.7/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-07/7.7/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.7/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.7/public/favicon.ico -------------------------------------------------------------------------------- /chapter-07/7.7/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-07/7.7/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.7/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-07/7.7/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-07/7.7/src/mixin/vuex.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | loading() { 4 | return this.$store.loading; 5 | }, 6 | error() { 7 | return this.$store.error; 8 | }, 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /chapter-07/7.7/src/router/middleware/authentication.js: -------------------------------------------------------------------------------- 1 | export default (to, from, next) => { 2 | if (to.meta.authenticated && sessionStorage.getItem('auth')) { 3 | return next(); 4 | } 5 | 6 | if (!to.meta.authenticated) { 7 | return next(); 8 | } 9 | 10 | next('/login'); 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.7/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-07/7.7/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.7/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-07/7.7/src/store/user/index.js: -------------------------------------------------------------------------------- 1 | import state from './state'; 2 | import mutations from './mutations'; 3 | import getters from './getters'; 4 | import actions from './actions'; 5 | 6 | export default { 7 | state, 8 | mutations, 9 | getters, 10 | actions, 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.7/src/store/user/types.js: -------------------------------------------------------------------------------- 1 | export default { 2 | LOADING: 'LOADING', 3 | ERROR: 'ERROR', 4 | SET_USER_LIST: 'SET_USER_LIST', 5 | SET_USER_DATA: 'SET_USER_DATA', 6 | UPDATE_USER: 'UPDATE_USER', 7 | REMOVE_USER: 'REMOVE_USER', 8 | } 9 | -------------------------------------------------------------------------------- /chapter-07/7.7/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-07/7.7/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-07/7.8/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-07/7.8/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-07/7.8/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Editor directories and files 9 | .idea 10 | .vscode 11 | *.suo 12 | *.ntvs* 13 | *.njsproj 14 | *.sln 15 | -------------------------------------------------------------------------------- /chapter-07/7.8/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /chapter-07/7.8/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.8/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.8/public/favicon.ico -------------------------------------------------------------------------------- /chapter-07/7.8/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-07/7.8/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-07/7.8/src/mixin/changeRoute.js: -------------------------------------------------------------------------------- 1 | export default { 2 | methods: { 3 | async changeRoute(name, id = 0) { 4 | await this.$router.push({ 5 | name, 6 | params: { 7 | id, 8 | }, 9 | }); 10 | }, 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/mixin/vuex.js: -------------------------------------------------------------------------------- 1 | export default { 2 | computed: { 3 | loading() { 4 | return this.$store.loading; 5 | }, 6 | error() { 7 | return this.$store.error; 8 | }, 9 | }, 10 | }; 11 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/router/middleware/authentication.js: -------------------------------------------------------------------------------- 1 | export default (to, from, next) => { 2 | if (to.meta.authenticated && sessionStorage.getItem('auth')) { 3 | return next(); 4 | } 5 | 6 | if (!to.meta.authenticated) { 7 | return next(); 8 | } 9 | 10 | next('/login'); 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/server/db.js: -------------------------------------------------------------------------------- 1 | export default { 2 | users: [ 3 | { 4 | name: 'Heitor Ramon Ribeiro', 5 | email: 'heitor@example.com', 6 | birthday: '1988-06-15', 7 | country: 'Brazil', 8 | phone: '+55 00 0000 0000', 9 | active: true, 10 | }, 11 | ], 12 | }; 13 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/server/delete.js: -------------------------------------------------------------------------------- 1 | export const deleteFrom = key => (schema, request) => schema.db[key].remove(request.params.id); 2 | 3 | export default { 4 | deleteFrom, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/server/get.js: -------------------------------------------------------------------------------- 1 | export const getFrom = key => ({ db }) => db[key]; 2 | export const getFromBy = key => ({ db }, request) => { 3 | return db[key].find(Number(request.params.id)); 4 | }; 5 | 6 | export default { 7 | getFrom, 8 | getFromBy 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/store/authentication/index.js: -------------------------------------------------------------------------------- 1 | import state from './state'; 2 | 3 | export default { 4 | namespaced: true, 5 | state, 6 | }; 7 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/store/authentication/state.js: -------------------------------------------------------------------------------- 1 | const generateState = () => ({ 2 | data: { 3 | username: '', 4 | token: '', 5 | expiresAt: null, 6 | }, 7 | loading: false, 8 | error: null, 9 | }); 10 | 11 | export default { ...generateState() }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/store/user/index.js: -------------------------------------------------------------------------------- 1 | import state from './state'; 2 | import mutations from './mutations'; 3 | import getters from './getters'; 4 | import actions from './actions'; 5 | 6 | export default { 7 | state, 8 | mutations, 9 | getters, 10 | actions, 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/store/user/types.js: -------------------------------------------------------------------------------- 1 | export default { 2 | LOADING: 'LOADING', 3 | ERROR: 'ERROR', 4 | SET_USER_LIST: 'SET_USER_LIST', 5 | SET_USER_DATA: 'SET_USER_DATA', 6 | UPDATE_USER: 'UPDATE_USER', 7 | REMOVE_USER: 'REMOVE_USER', 8 | } 9 | -------------------------------------------------------------------------------- /chapter-07/7.8/src/views/user/Index.vue: -------------------------------------------------------------------------------- 1 | 4 | 9 | -------------------------------------------------------------------------------- /chapter-07/7.8/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | configureWebpack: { 3 | resolve: { 4 | alias: { 5 | 'vue$': 'vue/dist/vue.esm.js' 6 | } 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /chapter-08/08.1/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-08/08.1/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-08/08.1/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-08/08.1/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.1/public/favicon.ico -------------------------------------------------------------------------------- /chapter-08/08.1/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.1/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-08/08.1/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: (h) => h(App), 8 | }).$mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-08/08.2/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-08/08.2/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-08/08.2/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-08/08.2/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.2/public/favicon.ico -------------------------------------------------------------------------------- /chapter-08/08.2/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.2/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-08/08.2/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import 'animate.css'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | render: (h) => h(App), 9 | }).$mount('#app'); 10 | -------------------------------------------------------------------------------- /chapter-08/08.3/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-08/08.3/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-08/08.3/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-08/08.3/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.3/public/favicon.ico -------------------------------------------------------------------------------- /chapter-08/08.3/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.3/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-08/08.3/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import 'animate.css'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | render: (h) => h(App), 9 | }).$mount('#app'); 10 | -------------------------------------------------------------------------------- /chapter-08/08.4/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-08/08.4/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-08/08.4/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-08/08.4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.4/public/favicon.ico -------------------------------------------------------------------------------- /chapter-08/08.4/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.4/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-08/08.4/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import 'animate.css'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | render: (h) => h(App), 9 | }).$mount('#app'); 10 | -------------------------------------------------------------------------------- /chapter-08/08.5/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-08/08.5/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-08/08.5/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-08/08.5/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.5/public/favicon.ico -------------------------------------------------------------------------------- /chapter-08/08.5/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.5/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-08/08.5/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import 'animate.css'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | render: (h) => h(App), 9 | }).$mount('#app'); 10 | -------------------------------------------------------------------------------- /chapter-08/08.6/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-08/08.6/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-08/08.6/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-08/08.6/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.6/public/favicon.ico -------------------------------------------------------------------------------- /chapter-08/08.6/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.6/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-08/08.6/src/components/CustomTransition.vue: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /chapter-08/08.6/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import 'animate.css'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | render: (h) => h(App), 9 | }).$mount('#app'); 10 | -------------------------------------------------------------------------------- /chapter-08/08.7/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-08/08.7/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-08/08.7/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-08/08.7/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.7/public/favicon.ico -------------------------------------------------------------------------------- /chapter-08/08.7/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-08/08.7/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-08/08.7/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: (h) => h(App), 8 | }).$mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-09/09.1/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-09/09.1/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-09/09.1/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-09/09.1/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-09/09.1/public/favicon.ico -------------------------------------------------------------------------------- /chapter-09/09.1/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-09/09.1/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-09/09.1/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Buefy from 'buefy'; 3 | import App from './App.vue'; 4 | import './assets/scss/app.scss'; 5 | 6 | Vue.use(Buefy); 7 | 8 | Vue.config.productionTip = false; 9 | 10 | new Vue({ 11 | render: (h) => h(App), 12 | }).$mount('#app'); 13 | -------------------------------------------------------------------------------- /chapter-09/09.2/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-09/09.2/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-09/09.2/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-09/09.2/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-09/09.2/public/favicon.ico -------------------------------------------------------------------------------- /chapter-09/09.2/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-09/09.2/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-09/09.2/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import vuetify from './plugins/vuetify'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | vuetify, 9 | render: (h) => h(App), 10 | }).$mount('#app'); 11 | -------------------------------------------------------------------------------- /chapter-09/09.2/src/plugins/vuetify.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuetify from 'vuetify/lib'; 3 | 4 | Vue.use(Vuetify); 5 | 6 | export default new Vuetify({ 7 | }); 8 | -------------------------------------------------------------------------------- /chapter-09/09.2/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | transpileDependencies: [ 3 | 'vuetify', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-09/09.3/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-09/09.3/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-09/09.3/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-09/09.3/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-09/09.3/public/favicon.ico -------------------------------------------------------------------------------- /chapter-09/09.3/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-09/09.3/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-09/09.3/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import './plugins/ant-design-vue'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | render: (h) => h(App), 9 | }).$mount('#app'); 10 | -------------------------------------------------------------------------------- /chapter-09/09.3/src/plugins/ant-design-vue.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Antd from 'ant-design-vue'; 3 | import 'ant-design-vue/dist/antd.css'; 4 | 5 | Vue.use(Antd); 6 | -------------------------------------------------------------------------------- /chapter-10/10.2/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-10/10.2/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-10/10.2/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-10/10.2/public/_redirects: -------------------------------------------------------------------------------- 1 | # Netlify settings for single-page application 2 | /* /index.html 200 3 | -------------------------------------------------------------------------------- /chapter-10/10.2/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-10/10.2/public/favicon.ico -------------------------------------------------------------------------------- /chapter-10/10.2/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-10/10.2/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-10/10.2/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | import store from './store'; 5 | 6 | Vue.config.productionTip = false; 7 | 8 | new Vue({ 9 | router, 10 | store, 11 | render: (h) => h(App), 12 | }).$mount('#app'); 13 | -------------------------------------------------------------------------------- /chapter-10/10.2/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | 4 | Vue.use(Vuex); 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | }, 9 | mutations: { 10 | }, 11 | actions: { 12 | }, 13 | modules: { 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /chapter-10/10.2/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-10/10.5/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-10/10.5/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-10/10.5/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-10/10.5/public/_redirects: -------------------------------------------------------------------------------- 1 | # Netlify settings for single-page application 2 | /* /index.html 200 3 | -------------------------------------------------------------------------------- /chapter-10/10.5/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-10/10.5/public/favicon.ico -------------------------------------------------------------------------------- /chapter-10/10.5/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-10/10.5/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-10/10.5/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | import store from './store'; 5 | 6 | Vue.config.productionTip = false; 7 | 8 | new Vue({ 9 | router, 10 | store, 11 | render: (h) => h(App), 12 | }).$mount('#app'); 13 | -------------------------------------------------------------------------------- /chapter-10/10.5/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | 4 | Vue.use(Vuex); 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | }, 9 | mutations: { 10 | }, 11 | actions: { 12 | }, 13 | modules: { 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /chapter-10/10.5/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-10/10.6/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-10/10.6/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-10/10.6/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-10/10.6/public/_redirects: -------------------------------------------------------------------------------- 1 | # Netlify settings for single-page application 2 | /* /index.html 200 3 | -------------------------------------------------------------------------------- /chapter-10/10.6/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-10/10.6/public/favicon.ico -------------------------------------------------------------------------------- /chapter-10/10.6/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-10/10.6/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-10/10.6/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | import store from './store'; 5 | 6 | Vue.config.productionTip = false; 7 | 8 | new Vue({ 9 | router, 10 | store, 11 | render: (h) => h(App), 12 | }).$mount('#app'); 13 | -------------------------------------------------------------------------------- /chapter-10/10.6/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | 4 | Vue.use(Vuex); 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | }, 9 | mutations: { 10 | }, 11 | actions: { 12 | }, 13 | modules: { 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /chapter-10/10.6/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-10/10.8/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-10/10.8/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-10/10.8/.firebaserc: -------------------------------------------------------------------------------- 1 | { 2 | "projects": { 3 | "default": "vue-3-cookbook-firebase-18921" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /chapter-10/10.8/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-10/10.8/public/_redirects: -------------------------------------------------------------------------------- 1 | # Netlify settings for single-page application 2 | /* /index.html 200 3 | -------------------------------------------------------------------------------- /chapter-10/10.8/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-10/10.8/public/favicon.ico -------------------------------------------------------------------------------- /chapter-10/10.8/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-10/10.8/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-10/10.8/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | import store from './store'; 5 | 6 | Vue.config.productionTip = false; 7 | 8 | new Vue({ 9 | router, 10 | store, 11 | render: (h) => h(App), 12 | }).$mount('#app'); 13 | -------------------------------------------------------------------------------- /chapter-10/10.8/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | 4 | Vue.use(Vuex); 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | }, 9 | mutations: { 10 | }, 11 | actions: { 12 | }, 13 | modules: { 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /chapter-10/10.8/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-11/11.1/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-11/11.1/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-11/11.1/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.1/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.1/public/favicon.ico -------------------------------------------------------------------------------- /chapter-11/11.1/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.1/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-11/11.1/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import router from './router'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | router, 9 | render: (h) => h(App), 10 | }).$mount('#app'); 11 | -------------------------------------------------------------------------------- /chapter-11/11.1/src/router/routes/home.js: -------------------------------------------------------------------------------- 1 | import Home from '../../views/Home.vue'; 2 | 3 | export default { 4 | path: '/', 5 | name: 'home', 6 | component: Home, 7 | }; 8 | -------------------------------------------------------------------------------- /chapter-11/11.1/src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /chapter-11/11.2/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | not dead 4 | -------------------------------------------------------------------------------- /chapter-11/11.2/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-11/11.2/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.2/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.2/public/favicon.ico -------------------------------------------------------------------------------- /chapter-11/11.2/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.2/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-11/11.2/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | import store from './store'; 4 | 5 | Vue.config.productionTip = false; 6 | 7 | new Vue({ 8 | store, 9 | render: (h) => h(App), 10 | }).$mount('#app'); 11 | -------------------------------------------------------------------------------- /chapter-11/11.2/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | import modules from './loader'; 4 | 5 | Vue.use(Vuex); 6 | 7 | export default new Vuex.Store({ 8 | modules, 9 | }); 10 | -------------------------------------------------------------------------------- /chapter-11/11.2/src/store/modules/user.js: -------------------------------------------------------------------------------- 1 | import state from './user/state'; 2 | import actions from './user/actions'; 3 | import mutations from './user/mutations'; 4 | import getters from './user/getters'; 5 | 6 | export default { 7 | state, 8 | actions, 9 | mutations, 10 | getters, 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-11/11.2/src/store/modules/user/actions.js: -------------------------------------------------------------------------------- 1 | import * as MT from './types'; 2 | 3 | export function saveUser({ 4 | commit, 5 | }, userName) { 6 | commit(MT.SAVE_USER, userName); 7 | } 8 | 9 | export default { 10 | saveUser, 11 | }; 12 | -------------------------------------------------------------------------------- /chapter-11/11.2/src/store/modules/user/getters.js: -------------------------------------------------------------------------------- 1 | export const getUserName = state => state.name; 2 | 3 | export default { 4 | getUserName, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.2/src/store/modules/user/mutations.js: -------------------------------------------------------------------------------- 1 | import * as MT from './types'; 2 | 3 | function saveUserName(state, userName) { 4 | state.name = userName; 5 | } 6 | 7 | export default { 8 | [MT.SAVE_USER]: saveUserName, 9 | }; 10 | -------------------------------------------------------------------------------- /chapter-11/11.2/src/store/modules/user/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | name: '', 3 | }; 4 | -------------------------------------------------------------------------------- /chapter-11/11.2/src/store/modules/user/types.js: -------------------------------------------------------------------------------- 1 | export const SAVE_USER = 'SAVE_USER'; 2 | 3 | export default { 4 | SAVE_USER, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.3/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-11/11.3/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-11/11.3/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.3/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.3/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.3/public/favicon.ico -------------------------------------------------------------------------------- /chapter-11/11.3/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.3/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-11/11.4/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-11/11.4/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-11/11.4/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.4/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.4/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.4/public/favicon.ico -------------------------------------------------------------------------------- /chapter-11/11.4/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.4/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-11/11.5/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /chapter-11/11.5/.eslintignore: -------------------------------------------------------------------------------- 1 | /dist 2 | /src-bex/www 3 | /src-capacitor 4 | /src-cordova 5 | /.quasar 6 | /node_modules 7 | -------------------------------------------------------------------------------- /chapter-11/11.5/.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | plugins: [ 5 | // to edit target browsers: use "browserslist" field in package.json 6 | require('autoprefixer') 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /chapter-11/11.5/.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dbaeumer.vscode-eslint", 4 | 5 | "octref.vetur" 6 | ], 7 | "unwantedRecommendations": [ 8 | "hookyqr.beautify", 9 | "dbaeumer.jshint", 10 | "ms-vscode.vscode-typescript-tslint-plugin" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /chapter-11/11.5/.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "vetur.validation.template": false, 3 | "vetur.format.enable": false, 4 | "eslint.validate": ["javascript", "javascriptreact", "typescript", "vue"], 5 | 6 | "vetur.experimental.templateInterpolationService": true 7 | } 8 | -------------------------------------------------------------------------------- /chapter-11/11.5/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@quasar/babel-preset-app', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.5/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/favicon.ico -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/apple-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/apple-icon-120x120.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/apple-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/apple-icon-152x152.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/apple-icon-167x167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/apple-icon-167x167.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/apple-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/apple-icon-180x180.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/favicon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/favicon-128x128.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/favicon-16x16.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/favicon-32x32.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/favicon-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/favicon-96x96.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/icon-128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/icon-128x128.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/icon-192x192.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/icon-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/icon-256x256.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/icon-384x384.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/icon-384x384.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/icon-512x512.png -------------------------------------------------------------------------------- /chapter-11/11.5/public/icons/ms-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/public/icons/ms-icon-144x144.png -------------------------------------------------------------------------------- /chapter-11/11.5/src-electron/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/src-electron/icons/icon.icns -------------------------------------------------------------------------------- /chapter-11/11.5/src-electron/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/src-electron/icons/icon.ico -------------------------------------------------------------------------------- /chapter-11/11.5/src-electron/icons/linux-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/src-electron/icons/linux-512x512.png -------------------------------------------------------------------------------- /chapter-11/11.5/src-pwa/custom-service-worker.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file (which will be your service worker) 3 | * is picked up by the build system ONLY if 4 | * quasar.conf > pwa > workboxPluginMode is set to "InjectManifest" 5 | */ 6 | -------------------------------------------------------------------------------- /chapter-11/11.5/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 11 | -------------------------------------------------------------------------------- /chapter-11/11.5/src/boot/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.5/src/boot/.gitkeep -------------------------------------------------------------------------------- /chapter-11/11.5/src/css/app.sass: -------------------------------------------------------------------------------- 1 | // app global css in Sass form 2 | -------------------------------------------------------------------------------- /chapter-11/11.6/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-11/11.6/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-11/11.6/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.6/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.6/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.6/public/favicon.ico -------------------------------------------------------------------------------- /chapter-11/11.6/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.6/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-11/11.6/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: h => h(App), 8 | }).$mount('#app'); 9 | -------------------------------------------------------------------------------- /chapter-11/11.6/src/mixins/methodsNames.js: -------------------------------------------------------------------------------- 1 | export default { 2 | watch: { 3 | myField: 'myFunction', 4 | }, 5 | data: () => ({ 6 | myField: '', 7 | }), 8 | methods: { 9 | myFunction() { 10 | console.log('Watcher Using Method Name'); 11 | }, 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /chapter-11/11.6/src/mixins/noCache.js: -------------------------------------------------------------------------------- 1 | export default { 2 | data: () => ({ 3 | noCacheField: '', 4 | }), 5 | computed: { 6 | noCache: { 7 | get() { 8 | return this.noCacheField; 9 | }, 10 | cache: false, 11 | }, 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /chapter-11/11.7/client/components/README.md: -------------------------------------------------------------------------------- 1 | # COMPONENTS 2 | 3 | **This directory is not required, you can delete it if you don't want to use it.** 4 | 5 | The components directory contains your Vue.js Components. 6 | 7 | _Nuxt.js doesn't supercharge these components._ 8 | -------------------------------------------------------------------------------- /chapter-11/11.7/client/layouts/default.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /chapter-11/11.7/client/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.7/client/static/favicon.ico -------------------------------------------------------------------------------- /chapter-11/11.8/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /chapter-11/11.8/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /chapter-11/11.8/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/cli-plugin-babel/preset', 4 | ], 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.8/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {}, 4 | }, 5 | }; 6 | -------------------------------------------------------------------------------- /chapter-11/11.8/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.8/public/favicon.ico -------------------------------------------------------------------------------- /chapter-11/11.8/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Vue.js-3.0-Cookbook/2e1023632e15dd8a6661263e31468c9364e10663/chapter-11/11.8/src/assets/logo.png -------------------------------------------------------------------------------- /chapter-11/11.8/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import App from './App.vue'; 3 | 4 | Vue.config.productionTip = false; 5 | 6 | new Vue({ 7 | render: h => h(App), 8 | }).$mount('#app'); 9 | --------------------------------------------------------------------------------