{{ product.name }}
19 |{{ product.description }}
20 |${{ product.price }}
24 |FREE
25 |├── src
├── 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
├── 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
│ │ ├── step-11
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ ├── template.html
│ │ │ │ │ ├── options.js
│ │ │ │ │ └── composition.js
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── composition.js
│ │ │ │ └── options.js
│ │ │ ├── ChildComp
│ │ │ │ └── template.html
│ │ │ └── description.md
│ │ ├── step-14
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ ├── ChildComp
│ │ │ │ └── template.html
│ │ │ ├── _hint
│ │ │ │ └── App
│ │ │ │ │ └── template.html
│ │ │ └── description.md
│ │ ├── step-2
│ │ │ ├── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ │ └── _hint
│ │ │ │ └── App
│ │ │ │ ├── template.html
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── 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-9
│ │ │ ├── App
│ │ │ │ ├── options.js
│ │ │ │ ├── template.html
│ │ │ │ └── composition.js
│ │ │ └── _hint
│ │ │ │ └── App
│ │ │ │ ├── options.js
│ │ │ │ └── composition.js
│ │ ├── 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
├── public
│ ├── images
│ │ ├── logo.png
│ │ ├── paypal.png
│ │ └── partners
│ │ │ ├── curotec.png
│ │ │ ├── epicmax.png
│ │ │ ├── herodevs.png
│ │ │ ├── redberry.png
│ │ │ ├── monterail.png
│ │ │ ├── 64robots-hero.jpg
│ │ │ ├── curotec-hero.jpg
│ │ │ ├── herodevs-dark.png
│ │ │ ├── herodevs-hero.png
│ │ │ ├── jump24-hero.jpg
│ │ │ ├── redberry-hero.jpg
│ │ │ ├── tighten-hero.jpg
│ │ │ ├── vehikl-hero.jpg
│ │ │ ├── webreinvent.png
│ │ │ ├── monterail-dark.png
│ │ │ ├── monterail-hero.png
│ │ │ ├── passionatepeople.png
│ │ │ ├── webreinvent-hero.jpg
│ │ │ ├── passionatepeople-dark.png
│ │ │ ├── passionatepeople-hero.jpg
│ │ │ ├── jump24.svg
│ │ │ └── jump24-dark.svg
│ ├── logo.svg
│ ├── service-worker.js
│ └── _headers
├── about
│ ├── images
│ │ ├── ben-hong.jpeg
│ │ └── evan-you.jpeg
│ ├── team.md
│ └── team
│ │ ├── Member.ts
│ │ └── TeamHero.vue
├── guide
│ ├── components
│ │ └── images
│ │ │ ├── slots.png
│ │ │ ├── named-slots.png
│ │ │ ├── prop-drilling.png
│ │ │ └── provide-inject.png
│ ├── extras
│ │ ├── images
│ │ │ ├── options-api.png
│ │ │ ├── render-pipeline.png
│ │ │ └── composition-api-after.png
│ │ └── demos
│ │ │ ├── Colors.vue
│ │ │ ├── AnimateWatcher.vue
│ │ │ ├── SpreadSheet.vue
│ │ │ ├── spreadSheetStore.js
│ │ │ ├── DisabledButton.vue
│ │ │ └── SpreadSheetCell.vue
│ ├── essentials
│ │ └── images
│ │ │ ├── directive.png
│ │ │ ├── lifecycle.png
│ │ │ └── components.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
├── ecosystem
│ ├── themes.md
│ ├── themes
│ │ ├── ThemePage.vue
│ │ ├── ThemeList.vue
│ │ ├── ThemeHero.vue
│ │ ├── ThemeContact.vue
│ │ └── ThemeProduct.vue
│ └── newsletters.md
├── partners
│ ├── all.md
│ ├── index.md
│ ├── [partnerId].md
│ ├── [partnerId].paths.ts
│ └── components
│ │ ├── type.ts
│ │ ├── utils.ts
│ │ ├── PartnerLocation.vue
│ │ ├── PartnerAll.vue
│ │ ├── PartnerHero.vue
│ │ ├── PartnerJoin.vue
│ │ └── PartnerLanding.vue
├── index.md
├── api
│ └── index.md
├── error-reference
│ ├── errors.data.ts
│ ├── ErrorsTable.vue
│ └── index.md
└── translations
│ └── index.md
├── .github
├── pull_request_template.md
├── contributing
│ └── oxford-comma.jpg
├── dependabot.yml
├── workflows
│ └── automerge.yml
└── scripts
│ └── tag-alert-blocks.js
├── .prettierrc
├── netlify.toml
├── .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
│ │ ├── sponsors.ts
│ │ ├── TextAd.vue
│ │ ├── ReplLoading.vue
│ │ ├── VueSchoolLink.vue
│ │ └── SiteMap.vue
│ └── index.ts
├── inlined-scripts
│ └── restorePreference.js
├── textAdMdPlugin.ts
└── headerMdPlugin.ts
├── .editorconfig
├── env.d.ts
├── tsconfig.json
├── vercel.json
├── package.json
├── LICENSE
├── README.md
└── .gitignore
/src/examples/src/svg/description.txt:
--------------------------------------------------------------------------------
1 | An SVG graph
2 |
--------------------------------------------------------------------------------
/src/tutorial/src/step-12/App/template.html:
--------------------------------------------------------------------------------
1 |
hello
2 | -------------------------------------------------------------------------------- /src/examples/src/attribute-bindings/App/style.css: -------------------------------------------------------------------------------- 1 | .red { 2 | color: red; 3 | } -------------------------------------------------------------------------------- /src/examples/src/crud/description.txt: -------------------------------------------------------------------------------- 1 | https://eugenkiss.github.io/7guis/tasks/#crud -------------------------------------------------------------------------------- /src/examples/src/simple-component/TodoItem/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-3/_hint/App/template.html: -------------------------------------------------------------------------------- 1 |Count is: {{ counter.count }}
3 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /.github/contributing/oxford-comma.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abdelaziz18003/docs/main/.github/contributing/oxford-comma.jpg -------------------------------------------------------------------------------- /src/examples/src/counter/App/options.js: -------------------------------------------------------------------------------- 1 | export default { 2 | data() { 3 | return { 4 | count: 0 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /src/guide/components/images/slots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abdelaziz18003/docs/main/src/guide/components/images/slots.png -------------------------------------------------------------------------------- /src/guide/extras/images/options-api.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abdelaziz18003/docs/main/src/guide/extras/images/options-api.png -------------------------------------------------------------------------------- /src/public/images/partners/curotec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abdelaziz18003/docs/main/src/public/images/partners/curotec.png -------------------------------------------------------------------------------- /src/public/images/partners/epicmax.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abdelaziz18003/docs/main/src/public/images/partners/epicmax.png -------------------------------------------------------------------------------- /src/public/images/partners/herodevs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abdelaziz18003/docs/main/src/public/images/partners/herodevs.png -------------------------------------------------------------------------------- /src/public/images/partners/redberry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abdelaziz18003/docs/main/src/public/images/partners/redberry.png -------------------------------------------------------------------------------- /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/essentials/images/directive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abdelaziz18003/docs/main/src/guide/essentials/images/directive.png -------------------------------------------------------------------------------- /src/guide/essentials/images/lifecycle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abdelaziz18003/docs/main/src/guide/essentials/images/lifecycle.png -------------------------------------------------------------------------------- /src/public/images/partners/monterail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Abdelaziz18003/docs/main/src/public/images/partners/monterail.png -------------------------------------------------------------------------------- /src/tutorial/src/step-2/App/options.js: -------------------------------------------------------------------------------- 1 | export default { 2 | // component options 3 | // declare some reactive state here. 4 | } 5 | -------------------------------------------------------------------------------- /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-6/App/options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | data() {
3 | return {
4 | awesome: true
5 | }
6 | },
7 | methods: {
8 | toggle() {
9 | // ...
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/tutorial/src/step-3/App/composition.js:
--------------------------------------------------------------------------------
1 | import { ref } from 'vue'
2 |
3 | export default {
4 | setup() {
5 | const titleClass = ref('title')
6 |
7 | return {
8 | titleClass
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/tutorial/src/step-9/App/composition.js:
--------------------------------------------------------------------------------
1 | import { ref } from 'vue'
2 |
3 | export default {
4 | setup() {
5 | const pElementRef = ref(null)
6 |
7 | return {
8 | pElementRef
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/examples/src/modal/App/options.js:
--------------------------------------------------------------------------------
1 | import Modal from './Modal.vue'
2 |
3 | export default {
4 | components: {
5 | Modal
6 | },
7 | data() {
8 | return {
9 | showModal: false
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/src/tutorial/src/step-4/_hint/App/options.js:
--------------------------------------------------------------------------------
1 | export default {
2 | data() {
3 | return {
4 | count: 0
5 | }
6 | },
7 | methods: {
8 | increment() {
9 | this.count++
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*]
2 | charset = utf-8
3 | indent_style = space
4 | indent_size = 2
5 | end_of_line = lf
6 | insert_final_newline = true
7 | trim_trailing_whitespace = true
8 |
9 | [*.md]
10 | trim_trailing_whitespace = false
11 |
--------------------------------------------------------------------------------
/src/examples/src/grid/App/template.html:
--------------------------------------------------------------------------------
1 |
4 | Current component: B
8 | Message is: {{ msg }} 9 | 10 | 11 | -------------------------------------------------------------------------------- /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/guide/built-ins/keep-alive-demos/CompA.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 |Current component: A
8 | count: {{ count }} 9 | 10 | 11 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /src/examples/src/crud/App/template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | 9 | 10 | 15 | -------------------------------------------------------------------------------- /src/public/_headers: -------------------------------------------------------------------------------- 1 | /* 2 | X-Frame-Options: ALLOW-FROM https://staging.certification.vuejs.org https://certification.vuejs.org https://certificates.dev https://staging.certificates.dev https://alemira.com https://*.alemira.com 3 | Content-Security-Policy: frame-ancestors https://staging.certification.vuejs.org https://certification.vuejs.org https://certificates.dev https://staging.certificates.dev https://alemira.com https://*.alemira.com 4 | 5 | /assets/* 6 | cache-control: max-age=31536000 7 | cache-control: immutable 8 | -------------------------------------------------------------------------------- /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 |{{ 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 | hello
11 |Move your mouse across this div...
18 |x: {{ x }}
19 || 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
11 || Code | 14 |Message | 15 |
|---|---|
| 23 | | 24 | |
vuejs/vue@{{ currentBranch }}
11 |11 | Hello here is some bouncy text! 12 |
13 |
8 |
Adjust radius of circle at ({{ selected.cx }}, {{ selected.cy }})
26 | 27 || 13 | | {{ c }} | 14 |
|---|---|
| {{ i - 1 }} | 19 |
20 | |
22 |
8 |
11 |
` updating as you type.
36 |
37 | To simplify two-way bindings, Vue provides a directive, `v-model`, which is essentially syntactic 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 on 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 |
--------------------------------------------------------------------------------
/src/examples/src/grid/Grid/composition.js:
--------------------------------------------------------------------------------
1 | import { ref, computed } from 'vue'
2 |
3 | export default {
4 | props: {
5 | data: Array,
6 | columns: Array,
7 | filterKey: String
8 | },
9 | setup(props) {
10 | const sortKey = ref('')
11 | const sortOrders = ref(
12 | props.columns.reduce((o, key) => ((o[key] = 1), o), {})
13 | )
14 |
15 | const filteredData = computed(() => {
16 | let { data, filterKey } = props
17 | if (filterKey) {
18 | filterKey = filterKey.toLowerCase()
19 | data = data.filter((row) => {
20 | return Object.keys(row).some((key) => {
21 | return String(row[key]).toLowerCase().indexOf(filterKey) > -1
22 | })
23 | })
24 | }
25 | const key = sortKey.value
26 | if (key) {
27 | const order = sortOrders.value[key]
28 | data = data.slice().sort((a, b) => {
29 | a = a[key]
30 | b = b[key]
31 | return (a === b ? 0 : a > b ? 1 : -1) * order
32 | })
33 | }
34 | return data
35 | })
36 |
37 | function sortBy(key) {
38 | sortKey.value = key
39 | sortOrders.value[key] *= -1
40 | }
41 |
42 | function capitalize(str) {
43 | return str.charAt(0).toUpperCase() + str.slice(1)
44 | }
45 |
46 | return {
47 | sortKey,
48 | sortOrders,
49 | filteredData,
50 | sortBy,
51 | capitalize
52 | }
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/src/partners/components/PartnerAll.vue:
--------------------------------------------------------------------------------
1 |
22 |
23 |
24 |
Checked names:
{{ checkedNames }}
20 |
21 | 9 | Vue Partners are Vue-team endorsed agencies 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 |