Compare commits

...

4 Commits

Author SHA1 Message Date
Pierre Rousseau fcd6b2ab8b [IMP] types: correctly support Set type for props-validation
Previously, having a Set as a type in the static props description
of a component would would lead to a type error.

This commit adds Set to the list of supported types in the Schema
2024-03-26 13:01:33 +01:00
Mohamed Alkobrosli 33dfeb1b41 Update reactivity.md
of a of a repeatition, it is fixed by removing "of a"
2024-03-21 23:33:00 +01:00
Arnaud Baes dd292472b9 [IMP] owl-vision: Better snippets
- Adds a basic XML owl template
- Make use of `$TM_FILENAME_BASE` and `$RELATIVE_FILEPATH` and attempt
  to predict the component and template names.

See: https://code.visualstudio.com/docs/editor/userdefinedsnippets#_variables
2024-03-14 12:40:37 +01:00
Trịnh Đức Độ 9b18b57fdf [FIX] docs: code in example cannot run 2024-03-14 08:10:42 +01:00
3 changed files with 32 additions and 6 deletions
+2 -2
View File
@@ -152,7 +152,7 @@ This may seem counter-intuitive, but it makes perfect sense in the context of co
```js ```js
class DoubleCounter extends Component { class DoubleCounter extends Component {
static template = xml` static template = xml`
<t t-esc="state.selected + ': ' + state[state.selected].value"/> <t t-esc="'selected: ' + state.selected + ', value: ' + state[state.selected]"/>
<button t-on-click="() => this.state.count1++">increment count 1</button> <button t-on-click="() => this.state.count1++">increment count 1</button>
<button t-on-click="() => this.state.count2++">increment count 2</button> <button t-on-click="() => this.state.count2++">increment count 2</button>
<button t-on-click="changeCounter">Switch counter</button> <button t-on-click="changeCounter">Switch counter</button>
@@ -193,7 +193,7 @@ to be able to opt out of creating them in the first place. This is the purpose o
### `markRaw` ### `markRaw`
Marks an object so that it is ignored by the reactivity system, meaning that if this object is ever Marks an object so that it is ignored by the reactivity system, meaning that if this object is ever
part of a of a reactive object, it will be returned as is, and no keys in that object will be part of a reactive object, it will be returned as is, and no keys in that object will be
observed. observed.
```js ```js
+1
View File
@@ -9,6 +9,7 @@ type BaseType =
| typeof Object | typeof Object
| typeof Array | typeof Array
| typeof Function | typeof Function
| typeof Set
| true | true
| "*"; | "*";
+29 -4
View File
@@ -1,18 +1,43 @@
{ {
"Basic owl component": { "Basic OWL Component": {
"prefix": "owlcomponent", "prefix": "owlcomponent",
"scope": "javascript,typescript",
"body": [ "body": [
"export class ${1:component-name} extends Component {", "import { Component } from \"@odoo/owl\";",
" static template = \"${2:template-name}\";", "",
"class ${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}} extends ${2:Component} {",
"",
" static template = \"${3:${RELATIVE_FILEPATH/(.*[\\|\\/])??([a-zA-Z_]+)([\\|\\/]static[\\|\\/].*)/${2}/g}}.${4:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}\";",
" static components = {};", " static components = {};",
" static props = {};", " static props = {};",
"", "",
" setup() {", " setup() {",
"", " ${5:super.setup();}",
" }", " }",
"",
" ${6:// Do Something}",
"}", "}",
"" ""
], ],
"description": "The starting base for an owl component" "description": "The starting base for an owl component"
},
"Basic OWL Template": {
"prefix": "owltemplate",
"scope": "xml",
"body": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>",
"",
"<templates xml:space=\"preserve\">",
"",
" <t t-name=\"${2:${RELATIVE_FILEPATH/(.*[\\|\\/])??([a-zA-Z_]+)([\\|\\/]static[\\|\\/].*)/${2}/g}}.${3:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/g}}\">",
" ${3:<h1>Hello World</h1>}",
" </t>",
"",
"</templates>",
""
],
"description": "Generate a basic OWL template XML file"
} }
} }