{{ product.name }}
19 |{{ product.description }}
20 |${{ product.price }}
24 |FREE
25 |├── src
├── public
│ ├── images
│ │ ├── sponsors
│ │ │ ├── .gitkeep
│ │ │ ├── hbuilder.png
│ │ │ └── hbuilder.avif
│ │ ├── logo.png
│ │ ├── paypal.png
│ │ ├── partners
│ │ │ ├── curotec.png
│ │ │ ├── devsquad.png
│ │ │ ├── redberry.png
│ │ │ ├── monterail.png
│ │ │ ├── vehikl-hero.jpg
│ │ │ ├── webreinvent.png
│ │ │ ├── 64robots-hero.jpg
│ │ │ ├── curotec-hero.jpg
│ │ │ ├── devsquad-hero.jpg
│ │ │ ├── redberry-hero.jpg
│ │ │ ├── tighten-hero.jpg
│ │ │ ├── monterail-hero.jpg
│ │ │ ├── passionatepeople.png
│ │ │ ├── webreinvent-hero.jpg
│ │ │ ├── passionatepeople-dark.png
│ │ │ ├── passionatepeople-hero.jpg
│ │ │ └── vehikl.svg
│ │ └── vueschool
│ │ │ ├── vs-close.svg
│ │ │ └── vs-iso.svg
│ ├── _headers
│ ├── logo.svg
│ └── service-worker.js
├── guide
│ ├── extras
│ │ ├── custom-renderer.md
│ │ ├── images
│ │ │ ├── options-api.png
│ │ │ ├── render-pipeline.png
│ │ │ └── composition-api-after.png
│ │ └── demos
│ │ │ ├── Colors.vue
│ │ │ ├── AnimateWatcher.vue
│ │ │ ├── SpreadSheet.vue
│ │ │ ├── DisabledButton.vue
│ │ │ ├── spreadSheetStore.js
│ │ │ └── SpreadSheetCell.vue
│ ├── components
│ │ └── images
│ │ │ ├── slots.png
│ │ │ ├── named-slots.png
│ │ │ ├── prop-drilling.png
│ │ │ └── provide-inject.png
│ ├── essentials
│ │ └── images
│ │ │ ├── components.png
│ │ │ ├── directive.png
│ │ │ └── lifecycle.png
│ ├── scaling-up
│ │ └── images
│ │ │ └── state-flow.png
│ ├── typescript
│ │ └── images
│ │ │ └── takeover-mode.png
│ ├── built-ins
│ │ ├── images
│ │ │ └── transition-classes.png
│ │ ├── keep-alive-demos
│ │ │ ├── CompB.vue
│ │ │ ├── CompA.vue
│ │ │ └── SwitchComponent.vue
│ │ └── transition-demos
│ │ │ ├── Basic.vue
│ │ │ ├── BetweenComponents.vue
│ │ │ ├── SlideFade.vue
│ │ │ ├── CssAnimation.vue
│ │ │ ├── ListBasic.vue
│ │ │ ├── JsHooks.vue
│ │ │ ├── ListStagger.vue
│ │ │ ├── BetweenElements.vue
│ │ │ ├── ListMove.vue
│ │ │ └── NestedTransitions.vue
│ ├── best-practices
│ │ └── images
│ │ │ ├── AccessiblePlaceholder.png
│ │ │ ├── AccessibleARIAdescribedby.png
│ │ │ ├── AccessibleARIAlabelDevTools.png
│ │ │ ├── AccessibleLabelChromeDevTools.png
│ │ │ ├── AccessibilityChromeDeveloperTools.png
│ │ │ └── AccessibleARIAlabelledbyDevTools.png
│ └── reusability
│ │ └── mouse.js
├── examples
│ ├── src
│ │ ├── svg
│ │ │ ├── description.txt
│ │ │ ├── AxisLabel
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── PolyGraph
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── util.js
│ │ │ └── App
│ │ │ │ ├── style.css
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── hello-world
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ └── description.txt
│ │ ├── markdown
│ │ │ ├── description.txt
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ ├── composition.js
│ │ │ │ └── style.css
│ │ │ └── import-map.json
│ │ ├── attribute-bindings
│ │ │ ├── App
│ │ │ │ ├── style.css
│ │ │ │ ├── options.js
│ │ │ │ ├── composition.js
│ │ │ │ └── template.html
│ │ │ └── description.txt
│ │ ├── crud
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ │ ├── style.css
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── simple-component
│ │ │ ├── TodoItem
│ │ │ │ ├── template.html
│ │ │ │ ├── composition.js
│ │ │ │ └── options.js
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ │ ├── options.js
│ │ │ │ ├── template.html
│ │ │ │ └── composition.js
│ │ ├── cells
│ │ │ ├── description.txt
│ │ │ ├── Cell
│ │ │ │ ├── style.css
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── App
│ │ │ │ ├── options.js
│ │ │ │ ├── composition.js
│ │ │ │ ├── template.html
│ │ │ │ └── style.css
│ │ │ └── store.js
│ │ ├── counter
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── timer
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ │ ├── style.css
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── circle-drawer
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ │ ├── style.css
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── flight-booker
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ │ ├── style.css
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── modal
│ │ │ ├── description.txt
│ │ │ ├── Modal
│ │ │ │ ├── options.js
│ │ │ │ ├── composition.js
│ │ │ │ ├── template.html
│ │ │ │ └── style.css
│ │ │ └── App
│ │ │ │ ├── options.js
│ │ │ │ ├── composition.js
│ │ │ │ └── template.html
│ │ ├── todomvc
│ │ │ ├── App
│ │ │ │ ├── style.css
│ │ │ │ └── template.html
│ │ │ └── description.txt
│ │ ├── temperature-converter
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── handling-input
│ │ │ ├── App
│ │ │ │ ├── style.css
│ │ │ │ ├── options.js
│ │ │ │ ├── composition.js
│ │ │ │ └── template.html
│ │ │ └── description.txt
│ │ ├── grid
│ │ │ ├── description.txt
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ └── Grid
│ │ │ │ ├── template.html
│ │ │ │ ├── style.css
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── tree
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── style.css
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── description.txt
│ │ │ └── TreeItem
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── form-bindings
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ │ ├── options.js
│ │ │ │ ├── composition.js
│ │ │ │ └── template.html
│ │ ├── conditionals-and-loops
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ │ ├── options.js
│ │ │ │ ├── composition.js
│ │ │ │ └── template.html
│ │ ├── list-transition
│ │ │ ├── import-map.json
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ ├── style.css
│ │ │ │ └── composition.js
│ │ └── fetching-data
│ │ │ ├── description.txt
│ │ │ └── App
│ │ │ ├── style.css
│ │ │ ├── template.html
│ │ │ ├── options.js
│ │ │ └── composition.js
│ ├── index.md
│ └── ExampleRepl.vue
├── tutorial
│ ├── src
│ │ ├── step-12
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ └── template.html
│ │ │ ├── ChildComp
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ └── description.md
│ │ ├── step-1
│ │ │ ├── App
│ │ │ │ └── template.html
│ │ │ └── description.md
│ │ ├── step-11
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ ├── template.html
│ │ │ │ │ ├── options.js
│ │ │ │ │ └── composition.js
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── composition.js
│ │ │ │ └── options.js
│ │ │ ├── ChildComp
│ │ │ │ └── template.html
│ │ │ └── description.md
│ │ ├── step-2
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ └── _hint
│ │ │ │ └── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── step-9
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ └── _hint
│ │ │ │ └── App
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── step-14
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── ChildComp
│ │ │ │ └── template.html
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ └── template.html
│ │ │ └── description.md
│ │ ├── step-13
│ │ │ ├── ChildComp
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ └── template.html
│ │ │ └── description.md
│ │ ├── step-3
│ │ │ ├── App
│ │ │ │ ├── style.css
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ └── template.html
│ │ │ └── description.md
│ │ ├── step-8
│ │ │ ├── App
│ │ │ │ ├── style.css
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ └── _hint
│ │ │ │ └── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── step-15
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── style.css
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── import-map.json
│ │ │ └── description.md
│ │ ├── step-4
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ ├── template.html
│ │ │ │ │ ├── options.js
│ │ │ │ │ └── composition.js
│ │ │ └── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── step-5
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ ├── template.html
│ │ │ │ │ ├── options.js
│ │ │ │ │ └── composition.js
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ └── description.md
│ │ ├── step-6
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ ├── template.html
│ │ │ │ │ ├── options.js
│ │ │ │ │ └── composition.js
│ │ │ └── description.md
│ │ ├── step-10
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ ├── options.js
│ │ │ │ │ └── composition.js
│ │ │ └── description.md
│ │ └── step-7
│ │ │ ├── App
│ │ │ ├── template.html
│ │ │ ├── options.js
│ │ │ └── composition.js
│ │ │ ├── _hint
│ │ │ └── App
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ └── description.md
│ ├── index.md
│ └── tutorial.data.ts
├── about
│ ├── images
│ │ ├── ben-hong.jpeg
│ │ └── evan-you.jpeg
│ ├── team.md
│ └── team
│ │ ├── Member.ts
│ │ └── TeamHero.vue
├── ecosystem
│ ├── themes.md
│ └── themes
│ │ ├── ThemePage.vue
│ │ ├── ThemeList.vue
│ │ ├── ThemeHero.vue
│ │ ├── ThemeContact.vue
│ │ └── ThemeProduct.vue
├── partners
│ ├── all.md
│ ├── vehikl.md
│ ├── 64robots.md
│ ├── curotec.md
│ ├── devsquad.md
│ ├── index.md
│ ├── monterail.md
│ ├── redberry.md
│ ├── tighten.md
│ ├── webreinvent.md
│ ├── passionatepeople.md
│ └── components
│ │ ├── type.ts
│ │ ├── utils.ts
│ │ ├── PartnerLocation.vue
│ │ ├── PartnerList.vue
│ │ ├── PartnerAll.vue
│ │ ├── PartnerHero.vue
│ │ ├── PartnerJoin.vue
│ │ └── PartnerLanding.vue
├── index.md
├── api
│ ├── index.md
│ └── api.data.ts
└── translations
│ └── index.md
├── .github
├── contributing
│ └── oxford-comma.jpg
├── pull_request_template.md
├── dependabot.yml
├── workflows
│ └── automerge.yml
└── scripts
│ └── tag-alert-blocks.js
├── .prettierrc
├── .vitepress
├── theme
│ ├── styles
│ │ ├── index.css
│ │ ├── utilities.css
│ │ ├── pages.css
│ │ ├── badges.css
│ │ ├── options-boxes.css
│ │ ├── style-guide.css
│ │ ├── vue-mastery.css
│ │ └── inline-demo.css
│ ├── components
│ │ ├── SponsorsAside.vue
│ │ ├── preferences.ts
│ │ ├── ReplLoading.vue
│ │ ├── VueSchoolLink.vue
│ │ └── Banner.vue
│ └── index.ts
├── inlined-scripts
│ └── restorePreference.js
└── headerMdPlugin.ts
├── .editorconfig
├── netlify.toml
├── env.d.ts
├── tsconfig.json
├── package.json
├── LICENSE
├── README.md
└── .gitignore
/src/public/images/sponsors/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/guide/extras/custom-renderer.md:
--------------------------------------------------------------------------------
1 | # Custom Renderers
--------------------------------------------------------------------------------
/src/examples/src/svg/description.txt:
--------------------------------------------------------------------------------
1 | Say Hello World with Vue!
--------------------------------------------------------------------------------
/src/tutorial/src/step-12/App/template.html:
--------------------------------------------------------------------------------
1 |
hello
2 | -------------------------------------------------------------------------------- /src/examples/src/hello-world/description.txt: -------------------------------------------------------------------------------- 1 | Say Hello World with Vue! -------------------------------------------------------------------------------- /src/tutorial/src/step-14/App/template.html: -------------------------------------------------------------------------------- 1 |{{ childMsg }}
3 | -------------------------------------------------------------------------------- /src/examples/src/circle-drawer/description.txt: -------------------------------------------------------------------------------- 1 | https://eugenkiss.github.io/7guis/tasks/#circle -------------------------------------------------------------------------------- /src/examples/src/flight-booker/description.txt: -------------------------------------------------------------------------------- 1 | https://eugenkiss.github.io/7guis/tasks/#flight -------------------------------------------------------------------------------- /src/tutorial/src/step-2/App/options.js: -------------------------------------------------------------------------------- 1 | export default { 2 | // component options 3 | } 4 | -------------------------------------------------------------------------------- /src/tutorial/src/step-3/_hint/App/template.html: -------------------------------------------------------------------------------- 1 |Count is: {{ counter.count }}
3 | -------------------------------------------------------------------------------- /.github/contributing/oxford-comma.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/.github/contributing/oxford-comma.jpg -------------------------------------------------------------------------------- /src/guide/components/images/slots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/guide/components/images/slots.png -------------------------------------------------------------------------------- /src/tutorial/src/step-12/ChildComp/composition.js: -------------------------------------------------------------------------------- 1 | export default { 2 | props: { 3 | msg: String 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/tutorial/src/step-4/App/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/tutorial/src/step-5/_hint/App/template.html: -------------------------------------------------------------------------------- 1 | 2 |{{ text }}
3 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## Description of Problem 2 | 3 | ## Proposed Solution 4 | 5 | ## Additional Information 6 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 75 6 | } 7 | -------------------------------------------------------------------------------- /src/examples/src/simple-component/TodoItem/composition.js: -------------------------------------------------------------------------------- 1 | export default { 2 | props: { 3 | todo: Object 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/examples/src/simple-component/TodoItem/options.js: -------------------------------------------------------------------------------- 1 | export default { 2 | props: { 3 | todo: Object 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/guide/extras/images/options-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/guide/extras/images/options-api.png -------------------------------------------------------------------------------- /src/public/images/partners/curotec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/curotec.png -------------------------------------------------------------------------------- /src/public/images/partners/devsquad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/devsquad.png -------------------------------------------------------------------------------- /src/public/images/partners/redberry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/redberry.png -------------------------------------------------------------------------------- /src/public/images/sponsors/hbuilder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/sponsors/hbuilder.png -------------------------------------------------------------------------------- /src/tutorial/src/step-13/_hint/App/template.html: -------------------------------------------------------------------------------- 1 |{{ childMsg }}
3 | -------------------------------------------------------------------------------- /src/tutorial/src/step-15/App/style.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | text-align: center; 3 | cursor: pointer; 4 | margin-top: 3em; 5 | } 6 | -------------------------------------------------------------------------------- /src/examples/src/counter/App/options.js: -------------------------------------------------------------------------------- 1 | export default { 2 | data() { 3 | return { 4 | count: 0 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/guide/essentials/images/components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/guide/essentials/images/components.png -------------------------------------------------------------------------------- /src/guide/essentials/images/directive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/guide/essentials/images/directive.png -------------------------------------------------------------------------------- /src/guide/essentials/images/lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/guide/essentials/images/lifecycle.png -------------------------------------------------------------------------------- /src/guide/scaling-up/images/state-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/guide/scaling-up/images/state-flow.png -------------------------------------------------------------------------------- /src/public/images/partners/monterail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/monterail.png -------------------------------------------------------------------------------- /src/public/images/partners/vehikl-hero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/vehikl-hero.jpg -------------------------------------------------------------------------------- /src/public/images/partners/webreinvent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/webreinvent.png -------------------------------------------------------------------------------- /src/public/images/sponsors/hbuilder.avif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/sponsors/hbuilder.avif -------------------------------------------------------------------------------- /src/tutorial/src/step-5/App/template.html: -------------------------------------------------------------------------------- 1 | 2 |{{ text }}
3 | -------------------------------------------------------------------------------- /src/examples/src/form-bindings/description.txt: -------------------------------------------------------------------------------- 1 | We can create two-way bindings between state and form inputs using the v-model directive. -------------------------------------------------------------------------------- /src/examples/src/tree/App/style.css: -------------------------------------------------------------------------------- 1 | .item { 2 | cursor: pointer; 3 | line-height: 1.5; 4 | } 5 | .bold { 6 | font-weight: bold; 7 | } -------------------------------------------------------------------------------- /src/guide/components/images/named-slots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/guide/components/images/named-slots.png -------------------------------------------------------------------------------- /src/guide/extras/images/render-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/guide/extras/images/render-pipeline.png -------------------------------------------------------------------------------- /src/public/images/partners/64robots-hero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/64robots-hero.jpg -------------------------------------------------------------------------------- /src/public/images/partners/curotec-hero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/curotec-hero.jpg -------------------------------------------------------------------------------- /src/public/images/partners/devsquad-hero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/devsquad-hero.jpg -------------------------------------------------------------------------------- /src/public/images/partners/redberry-hero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/redberry-hero.jpg -------------------------------------------------------------------------------- /src/public/images/partners/tighten-hero.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fi3ework/docs/HEAD/src/public/images/partners/tighten-hero.jpg -------------------------------------------------------------------------------- /src/tutorial/src/step-4/App/options.js: -------------------------------------------------------------------------------- 1 | export default { 2 | data() { 3 | return { 4 | count: 0 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/tutorial/src/step-6/App/template.html: -------------------------------------------------------------------------------- 1 | 2 |Todo id: {{ todoId }}
2 | 3 |Loading...
4 |{{ todoData }}
5 |
--------------------------------------------------------------------------------
/src/tutorial/src/step-13/ChildComp/composition.js:
--------------------------------------------------------------------------------
1 | export default {
2 | emits: ['response'],
3 | setup(props, { emit }) {
4 | emit('response', 'hello from child')
5 | return {}
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/src/examples/src/markdown/import-map.json:
--------------------------------------------------------------------------------
1 | {
2 | "imports": {
3 | "marked": "https://cdn.jsdelivr.net/npm/marked/+esm",
4 | "lodash-es": "https://cdn.jsdelivr.net/npm/lodash-es/+esm"
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/src/partners/64robots.md:
--------------------------------------------------------------------------------
1 | ---
2 | page: true
3 | footer: false
4 | ---
5 |
6 |
9 |
10 | Current component: B
7 | Message is: {{ msg }} 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/examples/src/conditionals-and-loops/App/composition.js: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue' 2 | 3 | export default { 4 | setup() { 5 | const show = ref(true) 6 | const list = ref([1, 2, 3]) 7 | 8 | return { 9 | show, 10 | list 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/guide/built-ins/keep-alive-demos/CompA.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 |Current component: A
7 | count: {{ count }} 8 | 9 | 10 | -------------------------------------------------------------------------------- /.vitepress/theme/styles/utilities.css: -------------------------------------------------------------------------------- 1 | .nowrap { 2 | white-space: nowrap; 3 | } 4 | 5 | .sr-only { 6 | position: absolute; 7 | width: 1px; 8 | height: 1px; 9 | padding: 0; 10 | margin: -1px; 11 | overflow: hidden; 12 | clip: rect(0, 0, 0, 0); 13 | border: 0; 14 | } 15 | -------------------------------------------------------------------------------- /src/examples/src/form-bindings/App/options.js: -------------------------------------------------------------------------------- 1 | export default { 2 | data() { 3 | return { 4 | text: 'Edit me', 5 | checked: true, 6 | checkedNames: ['Jack'], 7 | picked: 'One', 8 | selected: 'A', 9 | multiSelected: ['A'] 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /src/tutorial/src/step-6/App/composition.js: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue' 2 | 3 | export default { 4 | setup() { 5 | const awesome = ref(true) 6 | 7 | function toggle() { 8 | // ... 9 | } 10 | 11 | return { 12 | awesome, 13 | toggle 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/examples/src/modal/App/composition.js: -------------------------------------------------------------------------------- 1 | import Modal from './Modal.vue' 2 | import { ref } from 'vue' 3 | 4 | export default { 5 | components: { 6 | Modal 7 | }, 8 | setup() { 9 | const showModal = ref(false) 10 | 11 | return { 12 | showModal 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/tutorial/src/step-15/App/options.js: -------------------------------------------------------------------------------- 1 | import JSConfetti from 'js-confetti' 2 | 3 | const confetti = new JSConfetti() 4 | 5 | export default { 6 | mounted() { 7 | this.showConfetti() 8 | }, 9 | methods: { 10 | showConfetti() { 11 | confetti.addConfetti() 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/tutorial/src/step-2/_hint/App/composition.js: -------------------------------------------------------------------------------- 1 | import { reactive, ref } from 'vue' 2 | 3 | export default { 4 | setup() { 5 | const counter = reactive({ count: 0 }) 6 | const message = ref('Hello World!') 7 | 8 | return { 9 | counter, 10 | message 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/tutorial/src/step-9/_hint/App/composition.js: -------------------------------------------------------------------------------- 1 | import { ref, onMounted } from 'vue' 2 | 3 | export default { 4 | setup() { 5 | const p = ref(null) 6 | 7 | onMounted(() => { 8 | p.value.textContent = 'mounted!' 9 | }) 10 | 11 | return { 12 | p 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/tutorial/src/step-14/App/composition.js: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue' 2 | import ChildComp from './ChildComp.vue' 3 | 4 | export default { 5 | components: { 6 | ChildComp 7 | }, 8 | setup() { 9 | const msg = ref('from parent') 10 | 11 | return { 12 | msg 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/tutorial/src/step-4/_hint/App/composition.js: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue' 2 | 3 | export default { 4 | setup() { 5 | const count = ref(0) 6 | 7 | function increment() { 8 | count.value++ 9 | } 10 | 11 | return { 12 | count, 13 | increment 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/tutorial/src/step-5/App/composition.js: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue' 2 | 3 | export default { 4 | setup() { 5 | const text = ref('') 6 | 7 | function onInput(e) { 8 | text.value = e.target.value 9 | } 10 | 11 | return { 12 | text, 13 | onInput 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/examples/src/svg/PolyGraph/template.html: -------------------------------------------------------------------------------- 1 || 5 | | {{ c }} | 6 |
|---|---|
| {{ i - 1 }} | 11 |
12 | |
14 |
{{ canBook ? '' : 'Return date must be after departure date.' }}
12 | -------------------------------------------------------------------------------- /src/examples/src/conditionals-and-loops/App/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |List is not empty, but hidden.
10 |List is empty.
11 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "outDir": "dist", 4 | "target": "esnext", 5 | "module": "esnext", 6 | "moduleResolution": "node", 7 | "esModuleInterop": true, 8 | "resolveJsonModule": true, 9 | "allowJs": true, 10 | "strict": true, 11 | "jsx": "preserve", 12 | "baseUrl": ".", 13 | "paths": { 14 | "/@theme/*": [".vitepress/theme/*"] 15 | } 16 | }, 17 | "include": ["env.d.ts", "src/**/*", ".vitepress/**/*"] 18 | } 19 | -------------------------------------------------------------------------------- /src/examples/src/crud/App/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 15 | -------------------------------------------------------------------------------- /src/examples/src/hello-world/App/composition.js: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue' 2 | 3 | export default { 4 | setup() { 5 | // A "ref" is a reactive data source that stores a value. 6 | // Technically, we don't need to wrap the string with ref() 7 | // in order to display it, but we will see in the next 8 | // example why it is needed if we ever intend to change 9 | // the value. 10 | const message = ref('Hello World!') 11 | 12 | return { 13 | message 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/examples/src/markdown/App/composition.js: -------------------------------------------------------------------------------- 1 | import { marked } from 'marked' 2 | import { debounce } from 'lodash-es' 3 | import { ref, computed } from 'vue' 4 | 5 | export default { 6 | setup() { 7 | const input = ref('# hello') 8 | 9 | const output = computed(() => marked(input.value)) 10 | 11 | const update = debounce((e) => { 12 | input.value = e.target.value 13 | }, 100) 14 | 15 | return { 16 | input, 17 | output, 18 | update 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/examples/src/form-bindings/App/composition.js: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue' 2 | 3 | export default { 4 | setup() { 5 | const text = ref('Edit me') 6 | const checked = ref(true) 7 | const checkedNames = ref(['Jack']) 8 | const picked = ref('One') 9 | const selected = ref('A') 10 | const multiSelected = ref(['A']) 11 | 12 | return { 13 | text, 14 | checked, 15 | checkedNames, 16 | picked, 17 | selected, 18 | multiSelected 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/examples/src/cells/Cell/composition.js: -------------------------------------------------------------------------------- 1 | import { ref } from 'vue' 2 | import { cells, evalCell } from './store.js' 3 | 4 | export default { 5 | props: { 6 | c: Number, 7 | r: Number 8 | }, 9 | setup(props) { 10 | const editing = ref(false) 11 | 12 | function update(e) { 13 | editing.value = false 14 | cells[props.c][props.r] = e.target.value.trim() 15 | } 16 | 17 | return { 18 | cells, 19 | editing, 20 | evalCell, 21 | update 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.vitepress/inlined-scripts/restorePreference.js: -------------------------------------------------------------------------------- 1 | ;(() => { 2 | const restore = (key, cls, def = false) => { 3 | const saved = localStorage.getItem(key) 4 | if (saved ? saved !== 'false' : def) { 5 | document.documentElement.classList.add(cls) 6 | } 7 | } 8 | restore('vue-docs-prefer-composition', 'prefer-composition') 9 | restore('vue-docs-prefer-sfc', 'prefer-sfc', true) 10 | 11 | window.__VUE_BANNER_ID__ = 'wip' 12 | restore(`vue-docs-banner-${__VUE_BANNER_ID__}`, 'banner-dismissed') 13 | })() 14 | -------------------------------------------------------------------------------- /src/tutorial/src/step-7/App/options.js: -------------------------------------------------------------------------------- 1 | // give each todo a unique id 2 | let id = 0 3 | 4 | export default { 5 | data() { 6 | return { 7 | newTodo: '', 8 | todos: [ 9 | { id: id++, text: 'Learn HTML' }, 10 | { id: id++, text: 'Learn JavaScript' }, 11 | { id: id++, text: 'Learn Vue' } 12 | ] 13 | } 14 | }, 15 | methods: { 16 | addTodo() { 17 | // ... 18 | this.newTodo = '' 19 | }, 20 | removeTodo(todo) { 21 | // ... 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/tutorial/src/step-8/App/template.html: -------------------------------------------------------------------------------- 1 | 5 |hello
10 |Move your mouse across this div...
15 |x: {{ x }}
16 |{{ stats }}
19 |
--------------------------------------------------------------------------------
/src/tutorial/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | page: true
3 | title: Tutorial
4 | sidebar: false
5 | aside: false
6 | footer: false
7 | returnToTop: false
8 | ---
9 |
10 |
23 |
24 | | 7 | {{ capitalize(key) }} 8 | 9 | 10 | | 11 |
|---|
| 16 | {{entry[key]}} 17 | | 18 |
No matches found.
-------------------------------------------------------------------------------- /src/tutorial/src/step-7/_hint/App/options.js: -------------------------------------------------------------------------------- 1 | // give each todo a unique id 2 | let id = 0 3 | 4 | export default { 5 | data() { 6 | return { 7 | newTodo: '', 8 | todos: [ 9 | { id: id++, text: 'Learn HTML' }, 10 | { id: id++, text: 'Learn JavaScript' }, 11 | { id: id++, text: 'Learn Vue' } 12 | ] 13 | } 14 | }, 15 | methods: { 16 | addTodo() { 17 | this.todos.push({ id: id++, text: this.newTodo }) 18 | this.newTodo = '' 19 | }, 20 | removeTodo(todo) { 21 | this.todos = this.todos.filter((t) => t !== todo) 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/examples/src/grid/App/composition.js: -------------------------------------------------------------------------------- 1 | import DemoGrid from './Grid.vue' 2 | import { ref } from 'vue' 3 | 4 | export default { 5 | components: { 6 | DemoGrid 7 | }, 8 | setup() { 9 | const searchQuery = ref('') 10 | const gridColumns = ['name', 'power'] 11 | const gridData = [ 12 | { name: 'Chuck Norris', power: Infinity }, 13 | { name: 'Bruce Lee', power: 9000 }, 14 | { name: 'Jackie Chan', power: 7000 }, 15 | { name: 'Jet Li', power: 8000 } 16 | ] 17 | 18 | return { 19 | searchQuery, 20 | gridColumns, 21 | gridData 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/examples/src/attribute-bindings/App/template.html: -------------------------------------------------------------------------------- 1 |2 | 3 | Hover your mouse over me for a few seconds to see my dynamically bound title! 4 | 5 |
6 | 7 | 11 |12 | This should be red... but click me to toggle it. 13 |
14 | 15 | 16 |17 | This should be green, and should toggle between green and blue on click. 18 |
19 | -------------------------------------------------------------------------------- /src/examples/src/tree/TreeItem/template.html: -------------------------------------------------------------------------------- 1 |{{ tweened.number.toFixed(0) }}
22 |hello
10 |10 | Hello here is some bouncy text! 11 |
12 |vuejs/vue@{{ currentBranch }}
11 |
8 |
Adjust radius of circle at ({{ selected.cx }}, {{ selected.cy }})
26 | 27 || 13 | | {{ c }} | 14 |
|---|---|
| {{ i - 1 }} | 19 |
20 | |
22 |
` updating as you type.
36 |
37 | To simplify two-way bindings, Vue provides a directive, `v-model`, which is essentially a syntax sugar for the above:
38 |
39 | ```vue-html
40 |
41 | ```
42 |
43 | `v-model` automatically syncs the ``'s value with the bound state, so we no longer need to use an event handler for that.
44 |
45 | `v-model` works not only on text inputs, but also other input types such as checkboxes, radio buttons, and select dropdowns. We cover more details in Guide - Form Bindings.
46 |
47 | Now, try to refactor the code to use `v-model` instead.
48 |
--------------------------------------------------------------------------------
/.vitepress/theme/components/VueSchoolLink.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
21 |
60 |
--------------------------------------------------------------------------------
/src/about/team/TeamHero.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
11 |
5 |
7 |
Checked names:
{{ checkedNames }}
20 |
21 | 9 | Vue Partners are Vue-team endorsed angencies that provide first-class 10 | Vue consulting and development services. If your company is 11 | interested in being listed as a partner, please 12 | register your interest here. 15 |
16 |6 | Generate leads for new projects, boost your credibility to your 7 | clients, and support the long term sustainability of Vue.js and its 8 | ecosystem. 9 |
10 | Become a partner 16 |{{ product.description }}
20 |${{ product.price }}
24 |FREE
25 |