|
@@ -1,36 +1,34 @@
|
|
## Cascader
|
|
## Cascader
|
|
|
|
|
|
-Si las opciones tienen una estructura jerárquica clara, Cascader puede utilizarse para visualizarlas y seleccionarlas.
|
|
|
|
|
|
+If the options have a clear hierarchical structure, Cascader can be used to view and select them.
|
|
|
|
|
|
-### Uso básico
|
|
|
|
|
|
+### Basic usage
|
|
|
|
|
|
-Existen dos maneras de expandir los elementos hijo de la opción.
|
|
|
|
-
|
|
|
|
-:::demo Al asignar al atributo `options` un array de opciones, se genera un Cascader. El atributo `expand-trigger` define cómo se expanden las opciones hijo. Este ejemplo también muestra el evento `change` , cuyo parámetro es el valor de Cascader, un array formado por los valores de cada nivel seleccionado.
|
|
|
|
|
|
+There are two ways to expand child option items.
|
|
|
|
|
|
|
|
+:::demo Assigning the `options` attribute to an array of options renders a Cascader. The `props.expandTrigger` attribute defines how child options are expanded.
|
|
```html
|
|
```html
|
|
<div class="block">
|
|
<div class="block">
|
|
<span class="demonstration">Child options expand when clicked (default)</span>
|
|
<span class="demonstration">Child options expand when clicked (default)</span>
|
|
<el-cascader
|
|
<el-cascader
|
|
|
|
+ v-model="value"
|
|
:options="options"
|
|
:options="options"
|
|
- v-model="selectedOptions"
|
|
|
|
- @change="handleChange">
|
|
|
|
- </el-cascader>
|
|
|
|
|
|
+ @change="handleChange"></el-cascader>
|
|
</div>
|
|
</div>
|
|
<div class="block">
|
|
<div class="block">
|
|
<span class="demonstration">Child options expand when hovered</span>
|
|
<span class="demonstration">Child options expand when hovered</span>
|
|
<el-cascader
|
|
<el-cascader
|
|
- expand-trigger="hover"
|
|
|
|
|
|
+ v-model="value"
|
|
:options="options"
|
|
:options="options"
|
|
- v-model="selectedOptions2"
|
|
|
|
- @change="handleChange">
|
|
|
|
- </el-cascader>
|
|
|
|
|
|
+ :props="{ expandTrigger: 'hover' }"
|
|
|
|
+ @change="handleChange"></el-cascader>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
|
|
+ value: [],
|
|
options: [{
|
|
options: [{
|
|
value: 'guide',
|
|
value: 'guide',
|
|
label: 'Guide',
|
|
label: 'Guide',
|
|
@@ -225,9 +223,7 @@ Existen dos maneras de expandir los elementos hijo de la opción.
|
|
value: 'docs',
|
|
value: 'docs',
|
|
label: 'Design Documentation'
|
|
label: 'Design Documentation'
|
|
}]
|
|
}]
|
|
- }],
|
|
|
|
- selectedOptions: [],
|
|
|
|
- selectedOptions2: []
|
|
|
|
|
|
+ }]
|
|
};
|
|
};
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
@@ -240,21 +236,19 @@ Existen dos maneras de expandir los elementos hijo de la opción.
|
|
```
|
|
```
|
|
:::
|
|
:::
|
|
|
|
|
|
-### Opcion Disabled
|
|
|
|
|
|
+### Disabled option
|
|
|
|
|
|
-Para desactivar una opción configure un campo `disabled` en el objeto de opción.
|
|
|
|
-
|
|
|
|
-:::demo En este ejemplo, el primer elemento del array `options` tiene un campo `disabled: true` , por lo que está desactivado. Por defecto, Cascader verifica el campo `disabled` en cada objeto de opción; si está utilizando otro nombre de campo para indicar si una opción está deshabilitada, puede asignarla en el atributo `props` (consulte la tabla API a continuación para obtener más detalles). Y por supuesto, el valor de `value`, `label` y `children` también se pueden personalizar de la misma manera.
|
|
|
|
|
|
+Disable an option by setting a `disabled` field in the option object.
|
|
|
|
|
|
|
|
+:::demo In this example, the first item in `options` array has a `disabled: true` field, so it is disabled. By default, Cascader checks the `disabled` field in each option object; if you are using another field name to indicate whether an option is disabled, you can assign it in the `props.disabled` attribute (see the API table below for details). And of course, field name `value`, `label` and `children` can also be customized in the same way.
|
|
```html
|
|
```html
|
|
-<el-cascader
|
|
|
|
- :options="optionsWithDisabled"
|
|
|
|
-></el-cascader>
|
|
|
|
|
|
+<el-cascader :options="options"></el-cascader>
|
|
|
|
+
|
|
<script>
|
|
<script>
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
- optionsWithDisabled: [{
|
|
|
|
|
|
+ options: [{
|
|
value: 'guide',
|
|
value: 'guide',
|
|
label: 'Guide',
|
|
label: 'Guide',
|
|
disabled: true,
|
|
disabled: true,
|
|
@@ -457,17 +451,14 @@ Para desactivar una opción configure un campo `disabled` en el objeto de opció
|
|
```
|
|
```
|
|
:::
|
|
:::
|
|
|
|
|
|
-### Mostrar sólo el último nivel
|
|
|
|
-
|
|
|
|
-Puede mostrar sólo el último nivel en lugar de todos los niveles.
|
|
|
|
|
|
+### Clearable
|
|
|
|
|
|
-:::demo El atributo `show-all-levels` define si se visualizan todos los niveles. Si es `false`, sólo se muestra el último nivel.
|
|
|
|
|
|
+Set `clearable` attribute for `el-cascader` and a clear icon will appear when selected and hovered
|
|
|
|
|
|
|
|
+:::demo
|
|
```html
|
|
```html
|
|
-<el-cascader
|
|
|
|
- :options="options"
|
|
|
|
- :show-all-levels="false"
|
|
|
|
-></el-cascader>
|
|
|
|
|
|
+<el-cascader :options="options" clearable></el-cascader>
|
|
|
|
+
|
|
<script>
|
|
<script>
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
@@ -667,21 +658,20 @@ Puede mostrar sólo el último nivel en lugar de todos los niveles.
|
|
label: 'Design Documentation'
|
|
label: 'Design Documentation'
|
|
}]
|
|
}]
|
|
}]
|
|
}]
|
|
- };
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- };
|
|
|
|
|
|
+ }
|
|
</script>
|
|
</script>
|
|
```
|
|
```
|
|
:::
|
|
:::
|
|
|
|
|
|
-### Con valor por defecto
|
|
|
|
|
|
+### Display only the last level
|
|
|
|
+
|
|
|
|
+The input can display only the last level instead of all levels.
|
|
|
|
|
|
-:::demo El valor por defecto se puede definir con un array.
|
|
|
|
|
|
+:::demo The `show-all-levels` attribute defines if all levels are displayed. If it is `false`, only the last level is displayed.
|
|
```html
|
|
```html
|
|
-<el-cascader
|
|
|
|
- :options="options"
|
|
|
|
- v-model="selectedOptions"
|
|
|
|
-></el-cascader>
|
|
|
|
|
|
+<el-cascader :options="options" :show-all-levels="false"></el-cascader>
|
|
<script>
|
|
<script>
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
@@ -880,8 +870,110 @@ Puede mostrar sólo el último nivel en lugar de todos los niveles.
|
|
value: 'docs',
|
|
value: 'docs',
|
|
label: 'Design Documentation'
|
|
label: 'Design Documentation'
|
|
}]
|
|
}]
|
|
- }],
|
|
|
|
- selectedOptions: ['component', 'data', 'tag']
|
|
|
|
|
|
+ }]
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+</script>
|
|
|
|
+```
|
|
|
|
+:::
|
|
|
|
+
|
|
|
|
+### Multiple Selection
|
|
|
|
+
|
|
|
|
+Set `props.multiple = true` to use multiple selection.
|
|
|
|
+
|
|
|
|
+:::demo When using multiple selection, all selected tags will display by default, You can set `collapse-tags = true` to fold selected tags.
|
|
|
|
+```html
|
|
|
|
+<div class="block">
|
|
|
|
+ <span class="demonstration">Display all tags (default)</span>
|
|
|
|
+ <el-cascader
|
|
|
|
+ :options="options"
|
|
|
|
+ :props="props"
|
|
|
|
+ clearable></el-cascader>
|
|
|
|
+</div>
|
|
|
|
+<div class="block">
|
|
|
|
+ <span class="demonstration">Collapse tags</span>
|
|
|
|
+ <el-cascader
|
|
|
|
+ :options="options"
|
|
|
|
+ :props="props"
|
|
|
|
+ collapse-tags
|
|
|
|
+ clearable></el-cascader>
|
|
|
|
+</div>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+ export default {
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ props: { multiple: true },
|
|
|
|
+ options: [{
|
|
|
|
+ value: 1,
|
|
|
|
+ label: 'Asia',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 2,
|
|
|
|
+ label: 'China',
|
|
|
|
+ children: [
|
|
|
|
+ { value: 3, label: 'Beijing' },
|
|
|
|
+ { value: 4, label: 'Shanghai' },
|
|
|
|
+ { value: 5, label: 'Hangzhou' }
|
|
|
|
+ ]
|
|
|
|
+ }, {
|
|
|
|
+ value: 6,
|
|
|
|
+ label: 'Japan',
|
|
|
|
+ children: [
|
|
|
|
+ { value: 7, label: 'Tokyo' },
|
|
|
|
+ { value: 8, label: 'Osaka' },
|
|
|
|
+ { value: 9, label: 'Kyoto' }
|
|
|
|
+ ]
|
|
|
|
+ }, {
|
|
|
|
+ value: 10,
|
|
|
|
+ label: 'Korea',
|
|
|
|
+ children: [
|
|
|
|
+ { value: 11, label: 'Seoul' },
|
|
|
|
+ { value: 12, label: 'Busan' },
|
|
|
|
+ { value: 13, label: 'Taegu' }
|
|
|
|
+ ]
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 14,
|
|
|
|
+ label: 'Europe',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 15,
|
|
|
|
+ label: 'France',
|
|
|
|
+ children: [
|
|
|
|
+ { value: 16, label: 'Paris' },
|
|
|
|
+ { value: 17, label: 'Marseille' },
|
|
|
|
+ { value: 18, label: 'Lyon' }
|
|
|
|
+ ]
|
|
|
|
+ }, {
|
|
|
|
+ value: 19,
|
|
|
|
+ label: 'UK',
|
|
|
|
+ children: [
|
|
|
|
+ { value: 20, label: 'London' },
|
|
|
|
+ { value: 21, label: 'Birmingham' },
|
|
|
|
+ { value: 22, label: 'Manchester' }
|
|
|
|
+ ]
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 23,
|
|
|
|
+ label: 'North America',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 24,
|
|
|
|
+ label: 'US',
|
|
|
|
+ children: [
|
|
|
|
+ { value: 25, label: 'New York' },
|
|
|
|
+ { value: 26, label: 'Los Angeles' },
|
|
|
|
+ { value: 27, label: 'Washington' }
|
|
|
|
+ ]
|
|
|
|
+ }, {
|
|
|
|
+ value: 28,
|
|
|
|
+ label: 'Canada',
|
|
|
|
+ children: [
|
|
|
|
+ { value: 29, label: 'Toronto' },
|
|
|
|
+ { value: 30, label: 'Montreal' },
|
|
|
|
+ { value: 31, label: 'Ottawa' }
|
|
|
|
+ ]
|
|
|
|
+ }]
|
|
|
|
+ }]
|
|
};
|
|
};
|
|
}
|
|
}
|
|
};
|
|
};
|
|
@@ -889,17 +981,28 @@ Puede mostrar sólo el último nivel en lugar de todos los niveles.
|
|
```
|
|
```
|
|
:::
|
|
:::
|
|
|
|
|
|
-### Change on select
|
|
|
|
|
|
|
|
-También se pueden seleccionar las opciones del elemento padre.
|
|
|
|
|
|
+### Select any level of options
|
|
|
|
|
|
-:::demo Por defecto sólo se pueden seleccionar las opciones del último nivel. Al asignar `change-on-select` a `true`, también se pueden seleccionar opciones en los niveles superiores.
|
|
|
|
|
|
+In single selection, only the leaf nodes can be checked, and in multiple selection, check parent nodes will lead to leaf nodes be checked eventually. When enable this feature, it can make parent and child nodes unlinked and you can select any level of options.
|
|
|
|
|
|
|
|
+:::demo Set `props.checkStrictly = true` to make checked state of a node not affects its parent nodes and child nodes, and then you can select any level of options.
|
|
```html
|
|
```html
|
|
-<el-cascader
|
|
|
|
- :options="options"
|
|
|
|
- change-on-select
|
|
|
|
-></el-cascader>
|
|
|
|
|
|
+<div class="block">
|
|
|
|
+ <span class="demonstration">Select any level of options (Single selection)</span>
|
|
|
|
+ <el-cascader
|
|
|
|
+ :options="options"
|
|
|
|
+ :props="{ checkStrictly: true }"
|
|
|
|
+ clearable></el-cascader>
|
|
|
|
+</div>
|
|
|
|
+<div class="block">
|
|
|
|
+ <span class="demonstration">Select any level of options (Multiple selection)</span>
|
|
|
|
+ <el-cascader
|
|
|
|
+ :options="options"
|
|
|
|
+ :props="{ multiple: true, checkStrictly: true }"
|
|
|
|
+ clearable></el-cascader>
|
|
|
|
+</div>
|
|
|
|
+
|
|
<script>
|
|
<script>
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
@@ -1106,81 +1209,63 @@ También se pueden seleccionar las opciones del elemento padre.
|
|
```
|
|
```
|
|
:::
|
|
:::
|
|
|
|
|
|
-### Carga dinamica de elementos hijos
|
|
|
|
|
|
+### Dynamic loading
|
|
|
|
|
|
-Se puede hacer una carga dinamica de elementos hijos cuando se hace clic en el elemento padre o se pasa el ratón sobre el.
|
|
|
|
-
|
|
|
|
-:::demo En este ejemplo, el array de opciones no tiene datos de ciudades cuando se inicializa. Con el evento `active-item-change`, puede cargar dinámicamente las ciudades de un estado específico. Además, este ejemplo también demuestra cómo se utilizan los`props`.
|
|
|
|
|
|
+Dynamic load its child nodes when checked a node.
|
|
|
|
|
|
|
|
+:::demo Set `lazy = true` to use dynamic loading, and you have to specify how to load the data source by `lazyload`. There are two parameters of `lazyload`,the first parameter `node` is the node currently clicked, and the `resolve` is a callback that indicate loading is finished which must invoke. To display the status of node more accurately, you can add a `leaf` field (can be modified by `props.leaf`) to indicate whether it is a leaf node. Otherwise, it will be inferred by if has any child nodes.
|
|
```html
|
|
```html
|
|
-<el-cascader
|
|
|
|
- :options="options"
|
|
|
|
- @active-item-change="handleItemChange"
|
|
|
|
- :props="props"
|
|
|
|
-></el-cascader>
|
|
|
|
|
|
+<el-cascader :props="props"></el-cascader>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
|
|
+ let id = 0;
|
|
|
|
+
|
|
export default {
|
|
export default {
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
- options: [{
|
|
|
|
- label: 'California',
|
|
|
|
- cities: []
|
|
|
|
- }, {
|
|
|
|
- label: 'Florida',
|
|
|
|
- cities: []
|
|
|
|
- }],
|
|
|
|
props: {
|
|
props: {
|
|
- value: 'label',
|
|
|
|
- children: 'cities'
|
|
|
|
|
|
+ lazy: true,
|
|
|
|
+ lazyLoad (node, resolve) {
|
|
|
|
+ const { level } = node;
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ const nodes = Array.from({ length: level + 1 })
|
|
|
|
+ .map(item => ({
|
|
|
|
+ value: ++id,
|
|
|
|
+ label: `Option - ${id}`,
|
|
|
|
+ leaf: level >= 2
|
|
|
|
+ }));
|
|
|
|
+ // Invoke `resolve` callback to return the child nodes data and indicate the loading is finished.
|
|
|
|
+ resolve(nodes);
|
|
|
|
+ }, 1000);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
};
|
|
};
|
|
- },
|
|
|
|
-
|
|
|
|
- methods: {
|
|
|
|
- handleItemChange(val) {
|
|
|
|
- console.log('active item:', val);
|
|
|
|
- setTimeout(_ => {
|
|
|
|
- if (val.indexOf('California') > -1 && !this.options[0].cities.length) {
|
|
|
|
- this.options[0].cities = [{
|
|
|
|
- label: 'Los Angeles'
|
|
|
|
- }];
|
|
|
|
- } else if (val.indexOf('Florida') > -1 && !this.options[1].cities.length) {
|
|
|
|
- this.options[1].cities = [{
|
|
|
|
- label: 'Orlando'
|
|
|
|
- }];
|
|
|
|
- }
|
|
|
|
- }, 300);
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
};
|
|
};
|
|
</script>
|
|
</script>
|
|
```
|
|
```
|
|
:::
|
|
:::
|
|
|
|
|
|
-### Filtrable
|
|
|
|
-
|
|
|
|
-Buscar y seleccionar opciones con una palabra clave.
|
|
|
|
|
|
+### Filterable
|
|
|
|
|
|
-:::demo Añadir `filterable` a `el-cascader` permite filtrar
|
|
|
|
|
|
+Search and select options with a keyword.
|
|
|
|
|
|
|
|
+:::demo Adding `filterable` to `el-cascader` enables filtering. Cascader will match nodes whose label or parent's label (according to `show-all-levels`) includes input keyword. Of course, you can customize search logic by `filter-method` which accepts a function, the first parameter is `node`, the second is `keyword`, and need return a boolean value indicating whether it hits.
|
|
```html
|
|
```html
|
|
<div class="block">
|
|
<div class="block">
|
|
- <span class="demonstration">Only options of the last level can be selected</span>
|
|
|
|
|
|
+ <span class="demonstration">Filterable (Single selection)</span>
|
|
<el-cascader
|
|
<el-cascader
|
|
- placeholder="Try searching: Guide"
|
|
|
|
|
|
+ placeholder="Try searchingL Guide"
|
|
:options="options"
|
|
:options="options"
|
|
- filterable
|
|
|
|
- ></el-cascader>
|
|
|
|
|
|
+ filterable></el-cascader>
|
|
</div>
|
|
</div>
|
|
<div class="block">
|
|
<div class="block">
|
|
- <span class="demonstration">Options of all levels can be selected</span>
|
|
|
|
|
|
+ <span class="demonstration">Filterable (Multiple selection)</span>
|
|
<el-cascader
|
|
<el-cascader
|
|
- placeholder="Try searching: Guide"
|
|
|
|
|
|
+ placeholder="Try searchingL Guide"
|
|
:options="options"
|
|
:options="options"
|
|
- filterable
|
|
|
|
- change-on-select
|
|
|
|
- ></el-cascader>
|
|
|
|
|
|
+ :props="{ multiple: true }"
|
|
|
|
+ filterable></el-cascader>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
@@ -1389,38 +1474,503 @@ Buscar y seleccionar opciones con una palabra clave.
|
|
```
|
|
```
|
|
:::
|
|
:::
|
|
|
|
|
|
-### Atributos
|
|
|
|
-| Atributo | Descripción | Tipo | Opciones | Por defecto |
|
|
|
|
-| ---------------- | ---------------------------------------- | --------------- | --------------------- | ----------- |
|
|
|
|
-| value / v-model | valor seleccionado | array | — | — |
|
|
|
|
-| options | datos de las opciones | array | — | — |
|
|
|
|
-| props | opciones de configuracion, mire la tabla siguiente | object | — | — |
|
|
|
|
-| popper-class | nombre de clase para el Cascader's dropdown | string | — | — |
|
|
|
|
-| placeholder | input placeholder | string | — | Select |
|
|
|
|
-| disabled | si Cascader esta disabled | boolean | — | false |
|
|
|
|
-| clearable | si se puede borrar el valor seleccionado | boolean | — | false |
|
|
|
|
-| expand-trigger | evento del elemento actual para expandirse. | string | click / hover | click |
|
|
|
|
-| show-all-levels | si mostrar todos los niveles del valor seleccionado en la entrada | boolean | — | true |
|
|
|
|
-| filterable | si se pueden buscar las opciones | boolean | — | — |
|
|
|
|
-| debounce | retardo al escribir la palabra clave del filtro, en milisegundos | number | — | 300 |
|
|
|
|
-| change-on-select | si se permite seleccionar una opción de cualquier nivel | boolean | — | false |
|
|
|
|
-| size | tamaño del input | string | medium / small / mini | — |
|
|
|
|
-| before-filter | funcion antes de filtrar con el valor a filtrar como parámetro. Si se devuelve `false` o se devuelve una `Promise` y luego es rechazada, el filtrado será abortado. | function(value) | — | — |
|
|
|
|
|
|
+### Custom option content
|
|
|
|
+
|
|
|
|
+You can customize the content of cascader node.
|
|
|
|
+
|
|
|
|
+:::demo You can customize the content of cascader node by `scoped slot`. You'll have access to `node` and `data` in the scope, standing for the Node object and node data of the current node respectively。
|
|
|
|
+```html
|
|
|
|
+<el-cascader :options="options">
|
|
|
|
+ <template slot-scope="{ node, data }">
|
|
|
|
+ <span>{{ data.label }}</span>
|
|
|
|
+ <span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
|
|
|
|
+ </template>
|
|
|
|
+</el-cascader>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+ export default {
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ options: [{
|
|
|
|
+ value: 'guide',
|
|
|
|
+ label: 'Guide',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'disciplines',
|
|
|
|
+ label: 'Disciplines',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'consistency',
|
|
|
|
+ label: 'Consistency'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'feedback',
|
|
|
|
+ label: 'Feedback'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'efficiency',
|
|
|
|
+ label: 'Efficiency'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'controllability',
|
|
|
|
+ label: 'Controllability'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'navigation',
|
|
|
|
+ label: 'Navigation',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'side nav',
|
|
|
|
+ label: 'Side Navigation'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'top nav',
|
|
|
|
+ label: 'Top Navigation'
|
|
|
|
+ }]
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'component',
|
|
|
|
+ label: 'Component',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'basic',
|
|
|
|
+ label: 'Basic',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'layout',
|
|
|
|
+ label: 'Layout'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'color',
|
|
|
|
+ label: 'Color'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'typography',
|
|
|
|
+ label: 'Typography'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'icon',
|
|
|
|
+ label: 'Icon'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'button',
|
|
|
|
+ label: 'Button'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'form',
|
|
|
|
+ label: 'Form',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'radio',
|
|
|
|
+ label: 'Radio'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'checkbox',
|
|
|
|
+ label: 'Checkbox'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'input',
|
|
|
|
+ label: 'Input'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'input-number',
|
|
|
|
+ label: 'InputNumber'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'select',
|
|
|
|
+ label: 'Select'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'cascader',
|
|
|
|
+ label: 'Cascader'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'switch',
|
|
|
|
+ label: 'Switch'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'slider',
|
|
|
|
+ label: 'Slider'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'time-picker',
|
|
|
|
+ label: 'TimePicker'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'date-picker',
|
|
|
|
+ label: 'DatePicker'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'datetime-picker',
|
|
|
|
+ label: 'DateTimePicker'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'upload',
|
|
|
|
+ label: 'Upload'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'rate',
|
|
|
|
+ label: 'Rate'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'form',
|
|
|
|
+ label: 'Form'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'data',
|
|
|
|
+ label: 'Data',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'table',
|
|
|
|
+ label: 'Table'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'tag',
|
|
|
|
+ label: 'Tag'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'progress',
|
|
|
|
+ label: 'Progress'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'tree',
|
|
|
|
+ label: 'Tree'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'pagination',
|
|
|
|
+ label: 'Pagination'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'badge',
|
|
|
|
+ label: 'Badge'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'notice',
|
|
|
|
+ label: 'Notice',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'alert',
|
|
|
|
+ label: 'Alert'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'loading',
|
|
|
|
+ label: 'Loading'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'message',
|
|
|
|
+ label: 'Message'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'message-box',
|
|
|
|
+ label: 'MessageBox'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'notification',
|
|
|
|
+ label: 'Notification'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'navigation',
|
|
|
|
+ label: 'Navigation',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'menu',
|
|
|
|
+ label: 'NavMenu'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'tabs',
|
|
|
|
+ label: 'Tabs'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'breadcrumb',
|
|
|
|
+ label: 'Breadcrumb'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'dropdown',
|
|
|
|
+ label: 'Dropdown'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'steps',
|
|
|
|
+ label: 'Steps'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'others',
|
|
|
|
+ label: 'Others',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'dialog',
|
|
|
|
+ label: 'Dialog'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'tooltip',
|
|
|
|
+ label: 'Tooltip'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'popover',
|
|
|
|
+ label: 'Popover'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'card',
|
|
|
|
+ label: 'Card'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'carousel',
|
|
|
|
+ label: 'Carousel'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'collapse',
|
|
|
|
+ label: 'Collapse'
|
|
|
|
+ }]
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'resource',
|
|
|
|
+ label: 'Resource',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'axure',
|
|
|
|
+ label: 'Axure Components'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'sketch',
|
|
|
|
+ label: 'Sketch Templates'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'docs',
|
|
|
|
+ label: 'Design Documentation'
|
|
|
|
+ }]
|
|
|
|
+ }]
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+</script>
|
|
|
|
+```
|
|
|
|
+:::
|
|
|
|
+
|
|
|
|
+### Cascader panel
|
|
|
|
+
|
|
|
|
+`CascaderPanel` is the core component of `Cascader` which has various of features such as single selection, multiple selection, dynamic loading and so on.
|
|
|
|
+
|
|
|
|
+:::demo Just like `el-cascader`, you can set alternative options by `options`, and enable other features by `props`, see the API form below for details.
|
|
|
|
+```html
|
|
|
|
+<el-cascader-panel :options="options"></el-cascader-panel>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+ export default {
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ options: [{
|
|
|
|
+ value: 'guide',
|
|
|
|
+ label: 'Guide',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'disciplines',
|
|
|
|
+ label: 'Disciplines',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'consistency',
|
|
|
|
+ label: 'Consistency'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'feedback',
|
|
|
|
+ label: 'Feedback'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'efficiency',
|
|
|
|
+ label: 'Efficiency'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'controllability',
|
|
|
|
+ label: 'Controllability'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'navigation',
|
|
|
|
+ label: 'Navigation',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'side nav',
|
|
|
|
+ label: 'Side Navigation'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'top nav',
|
|
|
|
+ label: 'Top Navigation'
|
|
|
|
+ }]
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'component',
|
|
|
|
+ label: 'Component',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'basic',
|
|
|
|
+ label: 'Basic',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'layout',
|
|
|
|
+ label: 'Layout'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'color',
|
|
|
|
+ label: 'Color'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'typography',
|
|
|
|
+ label: 'Typography'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'icon',
|
|
|
|
+ label: 'Icon'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'button',
|
|
|
|
+ label: 'Button'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'form',
|
|
|
|
+ label: 'Form',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'radio',
|
|
|
|
+ label: 'Radio'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'checkbox',
|
|
|
|
+ label: 'Checkbox'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'input',
|
|
|
|
+ label: 'Input'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'input-number',
|
|
|
|
+ label: 'InputNumber'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'select',
|
|
|
|
+ label: 'Select'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'cascader',
|
|
|
|
+ label: 'Cascader'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'switch',
|
|
|
|
+ label: 'Switch'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'slider',
|
|
|
|
+ label: 'Slider'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'time-picker',
|
|
|
|
+ label: 'TimePicker'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'date-picker',
|
|
|
|
+ label: 'DatePicker'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'datetime-picker',
|
|
|
|
+ label: 'DateTimePicker'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'upload',
|
|
|
|
+ label: 'Upload'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'rate',
|
|
|
|
+ label: 'Rate'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'form',
|
|
|
|
+ label: 'Form'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'data',
|
|
|
|
+ label: 'Data',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'table',
|
|
|
|
+ label: 'Table'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'tag',
|
|
|
|
+ label: 'Tag'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'progress',
|
|
|
|
+ label: 'Progress'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'tree',
|
|
|
|
+ label: 'Tree'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'pagination',
|
|
|
|
+ label: 'Pagination'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'badge',
|
|
|
|
+ label: 'Badge'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'notice',
|
|
|
|
+ label: 'Notice',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'alert',
|
|
|
|
+ label: 'Alert'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'loading',
|
|
|
|
+ label: 'Loading'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'message',
|
|
|
|
+ label: 'Message'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'message-box',
|
|
|
|
+ label: 'MessageBox'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'notification',
|
|
|
|
+ label: 'Notification'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'navigation',
|
|
|
|
+ label: 'Navigation',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'menu',
|
|
|
|
+ label: 'NavMenu'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'tabs',
|
|
|
|
+ label: 'Tabs'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'breadcrumb',
|
|
|
|
+ label: 'Breadcrumb'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'dropdown',
|
|
|
|
+ label: 'Dropdown'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'steps',
|
|
|
|
+ label: 'Steps'
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'others',
|
|
|
|
+ label: 'Others',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'dialog',
|
|
|
|
+ label: 'Dialog'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'tooltip',
|
|
|
|
+ label: 'Tooltip'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'popover',
|
|
|
|
+ label: 'Popover'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'card',
|
|
|
|
+ label: 'Card'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'carousel',
|
|
|
|
+ label: 'Carousel'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'collapse',
|
|
|
|
+ label: 'Collapse'
|
|
|
|
+ }]
|
|
|
|
+ }]
|
|
|
|
+ }, {
|
|
|
|
+ value: 'resource',
|
|
|
|
+ label: 'Resource',
|
|
|
|
+ children: [{
|
|
|
|
+ value: 'axure',
|
|
|
|
+ label: 'Axure Components'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'sketch',
|
|
|
|
+ label: 'Sketch Templates'
|
|
|
|
+ }, {
|
|
|
|
+ value: 'docs',
|
|
|
|
+ label: 'Design Documentation'
|
|
|
|
+ }]
|
|
|
|
+ }]
|
|
|
|
+ };
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+</script>
|
|
|
|
+```
|
|
|
|
+:::
|
|
|
|
+
|
|
|
|
+### Cascader Attributes
|
|
|
|
+| Attribute | Description | Type | Accepted Values | Default |
|
|
|
|
+|---------- |-------- |---------- |------------- |-------- |
|
|
|
|
+| value / v-model | binding value | - | — | — |
|
|
|
|
+| options | data of the options,the key of `value` and `label` can be customize by `Props`.| array | — | — |
|
|
|
|
+| props | configuration options, see the following table. | object | — | — |
|
|
|
|
+| size | size of input | string | medium / small / mini | — |
|
|
|
|
+| placeholder | placeholder of input | string | — | Select |
|
|
|
|
+| disabled | whether Cascader is disabled | boolean | — | false |
|
|
|
|
+| clearable | whether selected value can be cleared | boolean | — | false |
|
|
|
|
+| show-all-levels | whether to display all levels of the selected value in the input | boolean | — | true |
|
|
|
|
+| collapse-tags | whether to collapse tags in multiple selection mode | boolean | - | false |
|
|
|
|
+| separator | option label separator | string | — | ' / ' |
|
|
|
|
+| filterable | whether the options can be searched | boolean | — | — |
|
|
|
|
+| filter-method | customize search logic, the first parameter is `node`, the second is `keyword`, and need return a boolean value indicating whether it hits. | function(node, keyword) | - | - |
|
|
|
|
+| debounce | debounce delay when typing filter keyword, in milliseconds | number | — | 300 |
|
|
|
|
+| before-filter | hook function before filtering with the value to be filtered as its parameter. If `false` is returned or a `Promise` is returned and then is rejected, filtering will be aborted | function(value) | — | — |
|
|
|
|
+| popper-class | custom class name for Cascader's dropdown | string | — | — |
|
|
|
|
+
|
|
|
|
+### Cascader Events
|
|
|
|
+| Event Name | Description | Parameters |
|
|
|
|
+|---------- |-------- |---------- |
|
|
|
|
+| change | triggers when the binding value changes | value |
|
|
|
|
+| expand-change | triggers when expand option changes | an array of the expanding node's parent nodes |
|
|
|
|
+| blur | triggers when Cascader blurs | (event: Event) |
|
|
|
|
+| focus | triggers when Cascader focuses | (event: Event) |
|
|
|
|
+| visible-change | triggers when the dropdown appears/disappears | true when it appears, and false otherwise |
|
|
|
|
+| remove-tag | triggers when remove tag in multiple selection mode | the value of the tag which is removed |
|
|
|
|
+
|
|
|
|
+### Cascader Slots
|
|
|
|
+| Slot Name | Description |
|
|
|
|
+|---------|-------------|
|
|
|
|
+| - | the custom content of cascader node, the parameter is { node, data }, which are current Node object and node data respectively. |
|
|
|
|
+| empty | content when there is no matched options. |
|
|
|
|
+
|
|
|
|
+### CascaderPanel Attributes
|
|
|
|
+| Attribute | Description | Type | Accepted Values | Default |
|
|
|
|
+|---------- |-------- |---------- |------------- |-------- |
|
|
|
|
+| value / v-model | binding value | - | — | — |
|
|
|
|
+| options | data of the options,the key of `value` and `label` can be customize by `Props`.| array | — | — |
|
|
|
|
+| props | configuration options, see the following table. | object | — | — |
|
|
|
|
|
|
-### props
|
|
|
|
-| Atributo | Descripción | Tipo | Valores aceptados | Por defecto |
|
|
|
|
-| -------- | ---------------------------------------- | ------ | ----------------- | ----------- |
|
|
|
|
-| label | especifica qué clave del elemento de la opción se utiliza como etiqueta | string | — | — |
|
|
|
|
-| value | especifica qué clave del elemento de la opción se utiliza como valor | string | — | — |
|
|
|
|
-| children | especifica qué clave del elemento de la opción se utiliza como hijo | string | — | — |
|
|
|
|
-| disabled | especifica qué clave del elemento de la opción indica si está deshabilitada | string | — | — |
|
|
|
|
|
|
+### CascaderPanel Events
|
|
|
|
+| Event Name | Description | Parameters |
|
|
|
|
+|---------- |-------- |---------- |
|
|
|
|
+| change | triggers when the binding value changes | value |
|
|
|
|
+| expand-change | triggers when expand option changes | an array of the expanding node's parent nodes |
|
|
|
|
|
|
-### Eventos
|
|
|
|
-| Nombre | Descripción | Parametros |
|
|
|
|
-| ------------------ | ------------------------------------------------------------ | ------------------------- |
|
|
|
|
-| change | se dispara cuando el valor cambia | valor |
|
|
|
|
-| active-item-change | se dispara cuando la opcion activa del parent cambia, sólo funciona cuando `change-on-select` es `false`. | array de opciones activas |
|
|
|
|
-| blur | se dispara cuando Cascader pierde el foco | (event: Event) |
|
|
|
|
-| focus | se dispara cuando Cascader obtiene el foco | (event: Event) |
|
|
|
|
-| visible-change | se dispara cuando el menu desplegable aparece o desaparece | true cuando aparece, y false en otro caso |
|
|
|
|
|
|
+### CascaderPanel Slots
|
|
|
|
+| Slot Name | Description |
|
|
|
|
+|---------|-------------|
|
|
|
|
+| - | the custom content of cascader node, the parameter is { node, data }, which are current Node object and node data respectively. |
|
|
|
|
|
|
|
|
+### Props
|
|
|
|
+| Attribute | Description | Type | Accepted Values | Default |
|
|
|
|
+| -------- | ----------------- | ------ | ------ | ------ |
|
|
|
|
+| expandTrigger | trigger mode of expanding options | string | click / hover | 'click' |
|
|
|
|
+| multiple | whether multiple selection is enabled | boolean | - | false |
|
|
|
|
+| checkStrictly | whether checked state of a node not affects its parent and child nodes | boolean | - | false |
|
|
|
|
+| emitPath | when checked nodes change, whether to emit an array of node's path, if false, only emit the value of node. | boolean | - | true |
|
|
|
|
+| lazy | whether to dynamic load child nodes, use with `lazyload` attribute | boolean | - | false |
|
|
|
|
+| lazyLoad | method for loading child nodes data, only works when `lazy` is true | function(node, resolve) | - | - |
|
|
|
|
+| value | specify which key of node object is used as the node's value | string | — | 'value' |
|
|
|
|
+| label | specify which key of node object is used as the node's label | string | — | 'label' |
|
|
|
|
+| children | specify which key of node object is used as the node's children | string | — | 'children' |
|
|
|
|
+| disabled | specify which key of node object is used as the node's disabled | string | — | 'disabled' |
|
|
|
|
+| leaf | specify which key of node object is used as the node's leaf field | string | — | 'leaf' |
|