@alexochihua/exos-library-components 2.24.0 → 2.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -23452,6 +23452,13 @@ module.exports = {}
|
|
|
23452
23452
|
|
|
23453
23453
|
/***/ }),
|
|
23454
23454
|
|
|
23455
|
+
/***/ 11031:
|
|
23456
|
+
/***/ (function(module) {
|
|
23457
|
+
|
|
23458
|
+
module.exports = {}
|
|
23459
|
+
|
|
23460
|
+
/***/ }),
|
|
23461
|
+
|
|
23455
23462
|
/***/ 79306:
|
|
23456
23463
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
23457
23464
|
|
|
@@ -27413,6 +27420,14 @@ const ECheckboxvue_type_script_setup_true_lang_js_hoisted_1 = {
|
|
|
27413
27420
|
type: Boolean,
|
|
27414
27421
|
default: false
|
|
27415
27422
|
},
|
|
27423
|
+
/**
|
|
27424
|
+
* Setea el tamaño del icono.
|
|
27425
|
+
* @values Ver docs de EIcon, para saber los tamaños que se pueden usar
|
|
27426
|
+
*/
|
|
27427
|
+
iconSize: {
|
|
27428
|
+
type: String,
|
|
27429
|
+
default: null
|
|
27430
|
+
},
|
|
27416
27431
|
/**
|
|
27417
27432
|
* Color de fondo cuando está seleccionado
|
|
27418
27433
|
* @values 'bg-primary' - fondo primario, 'bg-success' - fondo de éxito, 'bg-gray-500 dark:bg-white' - fondo responsivo
|
|
@@ -27502,7 +27517,8 @@ const ECheckboxvue_type_script_setup_true_lang_js_hoisted_1 = {
|
|
|
27502
27517
|
return {
|
|
27503
27518
|
name: icon,
|
|
27504
27519
|
textColor,
|
|
27505
|
-
fill
|
|
27520
|
+
fill,
|
|
27521
|
+
size: props.iconSize
|
|
27506
27522
|
};
|
|
27507
27523
|
});
|
|
27508
27524
|
const sizeInnerComputed = use_size(props);
|
|
@@ -27544,8 +27560,9 @@ const ECheckboxvue_type_script_setup_true_lang_js_hoisted_1 = {
|
|
|
27544
27560
|
key: 0,
|
|
27545
27561
|
name: iconInfo.value.name,
|
|
27546
27562
|
color: iconInfo.value.textColor,
|
|
27547
|
-
fill: iconInfo.value.fill
|
|
27548
|
-
|
|
27563
|
+
fill: iconInfo.value.fill,
|
|
27564
|
+
size: iconInfo.value.size
|
|
27565
|
+
}, null, 8, ["name", "color", "fill", "size"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 6), __props.label || (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.unref)(slots).default ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", ECheckboxvue_type_script_setup_true_lang_js_hoisted_1, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, "default", {}, () => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createTextVNode)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)(__props.label), 1)])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 2);
|
|
27549
27566
|
};
|
|
27550
27567
|
}
|
|
27551
27568
|
});
|
|
@@ -54382,6 +54399,605 @@ if (typeof (EStepTrackervue_type_custom_index_0_blockType_docs_lang_md_default()
|
|
|
54382
54399
|
const EStepTracker_exports_ = EStepTrackervue_type_script_setup_true_lang_js;
|
|
54383
54400
|
|
|
54384
54401
|
/* harmony default export */ var EStepTracker = (EStepTracker_exports_);
|
|
54402
|
+
;// CONCATENATED MODULE: ./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/ui/components/tree/ETree.vue?vue&type=script&setup=true&lang=js
|
|
54403
|
+
|
|
54404
|
+
|
|
54405
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_1 = {
|
|
54406
|
+
class: "e-tree",
|
|
54407
|
+
"data-testid": "tree-cy"
|
|
54408
|
+
};
|
|
54409
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_2 = {
|
|
54410
|
+
class: "e-tree__container"
|
|
54411
|
+
};
|
|
54412
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_3 = ["onClick"];
|
|
54413
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_4 = {
|
|
54414
|
+
key: 0,
|
|
54415
|
+
class: "e-tree__horizontal-line",
|
|
54416
|
+
"aria-hidden": "true"
|
|
54417
|
+
};
|
|
54418
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_5 = ["onClick"];
|
|
54419
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_6 = {
|
|
54420
|
+
key: 0,
|
|
54421
|
+
class: "e-tree__checkbox"
|
|
54422
|
+
};
|
|
54423
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_7 = {
|
|
54424
|
+
key: 0,
|
|
54425
|
+
class: "e-tree__node-icon"
|
|
54426
|
+
};
|
|
54427
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_8 = {
|
|
54428
|
+
class: "e-tree__node-label"
|
|
54429
|
+
};
|
|
54430
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_9 = {
|
|
54431
|
+
class: "e-tree__node-label-text"
|
|
54432
|
+
};
|
|
54433
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_10 = {
|
|
54434
|
+
key: 0,
|
|
54435
|
+
class: "e-tree__node-label-description"
|
|
54436
|
+
};
|
|
54437
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_11 = {
|
|
54438
|
+
key: 0,
|
|
54439
|
+
class: "e-tree__node-body"
|
|
54440
|
+
};
|
|
54441
|
+
const ETreevue_type_script_setup_true_lang_js_hoisted_12 = {
|
|
54442
|
+
key: 1,
|
|
54443
|
+
class: "e-tree__children"
|
|
54444
|
+
};
|
|
54445
|
+
|
|
54446
|
+
/* harmony default export */ var ETreevue_type_script_setup_true_lang_js = ({
|
|
54447
|
+
__name: 'ETree',
|
|
54448
|
+
props: {
|
|
54449
|
+
/**
|
|
54450
|
+
* Array de nodos que define la estructura del árbol. Consulta la sección de documentación para ver la estructura y ejemplos detallados.
|
|
54451
|
+
* @values [{ value: string, label: string, children: array, disabled: boolean, expanded: boolean, icon: string, description: string, header: string, body: string }]
|
|
54452
|
+
*/
|
|
54453
|
+
nodes: {
|
|
54454
|
+
type: Array,
|
|
54455
|
+
required: true,
|
|
54456
|
+
default: () => []
|
|
54457
|
+
},
|
|
54458
|
+
/**
|
|
54459
|
+
* Array de valores de nodos seleccionados
|
|
54460
|
+
* @values ['node1', 'node2', 'node3']
|
|
54461
|
+
*/
|
|
54462
|
+
ticked: {
|
|
54463
|
+
type: Array,
|
|
54464
|
+
default: () => []
|
|
54465
|
+
},
|
|
54466
|
+
/**
|
|
54467
|
+
* Estrategia de selección para los checkboxes
|
|
54468
|
+
* @values 'none' - sin checkboxes, 'leaf' - solo hojas, 'leaf-filtered' - hojas filtradas, 'strict' - nodo específico
|
|
54469
|
+
*/
|
|
54470
|
+
tickStrategy: {
|
|
54471
|
+
type: String,
|
|
54472
|
+
default: 'none',
|
|
54473
|
+
validator: value => ['none', 'leaf', 'leaf-filtered', 'strict'].includes(value)
|
|
54474
|
+
},
|
|
54475
|
+
/**
|
|
54476
|
+
* Color de fondo para nodos seleccionados en estrategia leaf
|
|
54477
|
+
* @values 'bg-red-500' - rojo, 'bg-green-500' - verde, 'bg-purple-500' - púrpura
|
|
54478
|
+
*/
|
|
54479
|
+
tickedColor: {
|
|
54480
|
+
type: String,
|
|
54481
|
+
default: null
|
|
54482
|
+
},
|
|
54483
|
+
/**
|
|
54484
|
+
* Color de fondo para nodos con selección parcial (guión medio) en estrategia leaf
|
|
54485
|
+
* @values 'bg-red-500' - rojo, 'bg-green-500' - verde, 'bg-purple-500' - púrpura
|
|
54486
|
+
*/
|
|
54487
|
+
tickedPartialColor: {
|
|
54488
|
+
type: String,
|
|
54489
|
+
default: null
|
|
54490
|
+
},
|
|
54491
|
+
/**
|
|
54492
|
+
* Tamaño del icono de los nodos
|
|
54493
|
+
* @values 'xs' - extra pequeño, 'sm' - pequeño, 'md' - mediano, 'lg' - grande
|
|
54494
|
+
*/
|
|
54495
|
+
iconSize: {
|
|
54496
|
+
type: String,
|
|
54497
|
+
default: null
|
|
54498
|
+
},
|
|
54499
|
+
/**
|
|
54500
|
+
* Color del icono de los nodos
|
|
54501
|
+
* @values 'text-red-500' - rojo, 'text-green-500' - verde, 'text-purple-500' - púrpura
|
|
54502
|
+
*/
|
|
54503
|
+
iconColor: {
|
|
54504
|
+
type: String,
|
|
54505
|
+
default: null
|
|
54506
|
+
},
|
|
54507
|
+
/**
|
|
54508
|
+
* Nodo padre para el contexto de recursión
|
|
54509
|
+
* @ignore
|
|
54510
|
+
*/
|
|
54511
|
+
parentNode: {
|
|
54512
|
+
type: Object,
|
|
54513
|
+
default: null
|
|
54514
|
+
},
|
|
54515
|
+
/**
|
|
54516
|
+
* Array de valores de nodos expandidos
|
|
54517
|
+
* @ignore
|
|
54518
|
+
*/
|
|
54519
|
+
expanded: {
|
|
54520
|
+
type: Array,
|
|
54521
|
+
default: () => []
|
|
54522
|
+
}
|
|
54523
|
+
},
|
|
54524
|
+
emits: [
|
|
54525
|
+
/**
|
|
54526
|
+
* Emitido cuando cambia el estado de expansión de los nodos
|
|
54527
|
+
* @values ['node1', 'node2', 'node3']
|
|
54528
|
+
*/
|
|
54529
|
+
'expanded',
|
|
54530
|
+
/**
|
|
54531
|
+
* Emitido cuando se selecciona un nodo
|
|
54532
|
+
* @values { value: string, label: string, children: array }
|
|
54533
|
+
*/
|
|
54534
|
+
'selected',
|
|
54535
|
+
/**
|
|
54536
|
+
* Emitido cuando cambia el estado de selección de los checkboxes
|
|
54537
|
+
* @values ['node1', 'node2', 'node3']
|
|
54538
|
+
*/
|
|
54539
|
+
'ticked'],
|
|
54540
|
+
setup(__props, {
|
|
54541
|
+
expose: __expose,
|
|
54542
|
+
emit: __emit
|
|
54543
|
+
}) {
|
|
54544
|
+
const props = __props;
|
|
54545
|
+
const emit = __emit;
|
|
54546
|
+
const instance = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.getCurrentInstance)();
|
|
54547
|
+
const $slots = instance?.slots;
|
|
54548
|
+
|
|
54549
|
+
// Estado reactivo
|
|
54550
|
+
const localExpanded = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(props.expanded ? [...props.expanded] : []);
|
|
54551
|
+
const localTicked = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(props.ticked ? [...props.ticked] : []);
|
|
54552
|
+
|
|
54553
|
+
// Computed properties
|
|
54554
|
+
const processedNodes = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
|
|
54555
|
+
return processNodesWithDisabled(props.nodes);
|
|
54556
|
+
});
|
|
54557
|
+
const iconConfig = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
|
|
54558
|
+
return {
|
|
54559
|
+
size: props.iconSize || 'xs',
|
|
54560
|
+
color: props.iconColor || 'e-tree__node-icon'
|
|
54561
|
+
};
|
|
54562
|
+
});
|
|
54563
|
+
|
|
54564
|
+
// Watchers
|
|
54565
|
+
(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.watch)(() => props.expanded, newVal => {
|
|
54566
|
+
localExpanded.value = [...newVal];
|
|
54567
|
+
});
|
|
54568
|
+
(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.watch)(() => props.ticked, newVal => {
|
|
54569
|
+
localTicked.value = [...newVal];
|
|
54570
|
+
});
|
|
54571
|
+
|
|
54572
|
+
// Métodos
|
|
54573
|
+
const processNodesWithDisabled = nodes => {
|
|
54574
|
+
return nodes.map(node => {
|
|
54575
|
+
const processedNode = {
|
|
54576
|
+
...node
|
|
54577
|
+
};
|
|
54578
|
+
|
|
54579
|
+
// Si el nodo padre está deshabilitado, este nodo también debe estar deshabilitado
|
|
54580
|
+
if (props.parentNode && props.parentNode.disabled) {
|
|
54581
|
+
processedNode.disabled = true;
|
|
54582
|
+
}
|
|
54583
|
+
|
|
54584
|
+
// Si el nodo actual está deshabilitado y tiene hijos, propagar disabled a todos los hijos
|
|
54585
|
+
if (processedNode.disabled && hasChildren(processedNode)) {
|
|
54586
|
+
processedNode.children = processNodesWithDisabled(processedNode.children);
|
|
54587
|
+
} else if (hasChildren(processedNode)) {
|
|
54588
|
+
// Si no está deshabilitado pero tiene hijos, procesar recursivamente
|
|
54589
|
+
processedNode.children = processNodesWithDisabled(processedNode.children);
|
|
54590
|
+
}
|
|
54591
|
+
return processedNode;
|
|
54592
|
+
});
|
|
54593
|
+
};
|
|
54594
|
+
const hasChildren = node => {
|
|
54595
|
+
return node?.children && node?.children.length > 0;
|
|
54596
|
+
};
|
|
54597
|
+
const isDisabled = node => {
|
|
54598
|
+
return node?.disabled === true;
|
|
54599
|
+
};
|
|
54600
|
+
const getNodeContentClasses = node => {
|
|
54601
|
+
const disabled = isDisabled(node);
|
|
54602
|
+
const hoverClasses = disabled ? 'e-tree__node-content--hover--disabled' : 'e-tree__node-content--hover--enabled';
|
|
54603
|
+
const disabledClasses = disabled ? 'e-tree__node-content--disabled' : '';
|
|
54604
|
+
return [hoverClasses, disabledClasses];
|
|
54605
|
+
};
|
|
54606
|
+
const handleSelected = node => {
|
|
54607
|
+
if (isDisabled(node)) return;
|
|
54608
|
+
emit('selected', node);
|
|
54609
|
+
};
|
|
54610
|
+
const isExpanded = node => {
|
|
54611
|
+
return localExpanded.value.includes(node?.value);
|
|
54612
|
+
};
|
|
54613
|
+
const isTicked = node => {
|
|
54614
|
+
if (props.tickStrategy === 'none') return false;
|
|
54615
|
+
const nodeValue = node?.value;
|
|
54616
|
+
if (props.tickStrategy === 'strict') {
|
|
54617
|
+
return localTicked.value.includes(nodeValue);
|
|
54618
|
+
} else {
|
|
54619
|
+
if (!hasChildren(node)) {
|
|
54620
|
+
return localTicked.value.includes(nodeValue);
|
|
54621
|
+
} else {
|
|
54622
|
+
const leafNodes = getLeafNodes(node?.children);
|
|
54623
|
+
return leafNodes.length > 0 && leafNodes.every(leaf => localTicked.value.includes(leaf.value));
|
|
54624
|
+
}
|
|
54625
|
+
}
|
|
54626
|
+
};
|
|
54627
|
+
const toggleNode = node => {
|
|
54628
|
+
if (!hasChildren(node) || isDisabled(node)) return;
|
|
54629
|
+
const nodeValue = node?.value;
|
|
54630
|
+
const newExpanded = [...localExpanded.value];
|
|
54631
|
+
if (isExpanded(node)) {
|
|
54632
|
+
// Contraer (ya está en el array)
|
|
54633
|
+
const index = newExpanded.indexOf(nodeValue);
|
|
54634
|
+
if (index !== -1) {
|
|
54635
|
+
newExpanded.splice(index, 1);
|
|
54636
|
+
}
|
|
54637
|
+
} else {
|
|
54638
|
+
// Expandir (no está en el array)
|
|
54639
|
+
newExpanded.push(nodeValue);
|
|
54640
|
+
}
|
|
54641
|
+
localExpanded.value = [...newExpanded];
|
|
54642
|
+
emit('expanded', localExpanded.value);
|
|
54643
|
+
};
|
|
54644
|
+
const toggleTicked = node => {
|
|
54645
|
+
if (props.tickStrategy === 'none' || isDisabled(node)) return;
|
|
54646
|
+
const newTicked = [...localTicked.value];
|
|
54647
|
+
if (isTicked(node)) {
|
|
54648
|
+
// Desmarcar nodo y sus hijos
|
|
54649
|
+
untickNode(node, newTicked);
|
|
54650
|
+
} else {
|
|
54651
|
+
// Marcar nodo y sus hijos según la estrategia
|
|
54652
|
+
tickNode(node, newTicked);
|
|
54653
|
+
}
|
|
54654
|
+
localTicked.value = [...newTicked];
|
|
54655
|
+
emit('ticked', localTicked.value);
|
|
54656
|
+
};
|
|
54657
|
+
const getLeafNodes = nodes => {
|
|
54658
|
+
const leafNodes = [];
|
|
54659
|
+
nodes.forEach(node => {
|
|
54660
|
+
// Si el nodo tiene hijos, obtener los nodos hojas de los hijos
|
|
54661
|
+
if (hasChildren(node)) {
|
|
54662
|
+
// Agregar los nodos hojas de los hijos al array de nodos hojas con el método recursivo
|
|
54663
|
+
leafNodes.push(...getLeafNodes(node?.children));
|
|
54664
|
+
} else {
|
|
54665
|
+
// Si el nodo no tiene hijos, agregar el nodo al array de nodos hojas
|
|
54666
|
+
leafNodes.push(node);
|
|
54667
|
+
}
|
|
54668
|
+
});
|
|
54669
|
+
return leafNodes;
|
|
54670
|
+
};
|
|
54671
|
+
const tickNode = (node, tickedArray) => {
|
|
54672
|
+
const nodeValue = node?.value;
|
|
54673
|
+
if (props.tickStrategy === 'leaf' || props.tickStrategy === 'leaf-filtered') {
|
|
54674
|
+
// Solo marcar hojas
|
|
54675
|
+
if (!hasChildren(node)) {
|
|
54676
|
+
if (!tickedArray.includes(nodeValue)) {
|
|
54677
|
+
tickedArray.push(nodeValue);
|
|
54678
|
+
}
|
|
54679
|
+
} else {
|
|
54680
|
+
// Marcar todas las hojas hijas
|
|
54681
|
+
const leafNodes = getLeafNodes(node?.children);
|
|
54682
|
+
leafNodes.forEach(leaf => {
|
|
54683
|
+
const leafValue = leaf?.value;
|
|
54684
|
+
if (!tickedArray.includes(leafValue)) {
|
|
54685
|
+
tickedArray.push(leafValue);
|
|
54686
|
+
}
|
|
54687
|
+
});
|
|
54688
|
+
}
|
|
54689
|
+
} else if (props.tickStrategy === 'strict') {
|
|
54690
|
+
// Marcar solo el nodo actual (sin propagar a hijos)
|
|
54691
|
+
if (!tickedArray.includes(nodeValue)) {
|
|
54692
|
+
tickedArray.push(nodeValue);
|
|
54693
|
+
}
|
|
54694
|
+
}
|
|
54695
|
+
};
|
|
54696
|
+
const untickNode = (node, tickedArray) => {
|
|
54697
|
+
const nodeValue = node?.value;
|
|
54698
|
+
if (props.tickStrategy === 'strict') {
|
|
54699
|
+
// Desmarcar solo el nodo actual (sin propagar a hijos)
|
|
54700
|
+
const index = tickedArray.indexOf(nodeValue);
|
|
54701
|
+
if (index > -1) {
|
|
54702
|
+
tickedArray.splice(index, 1);
|
|
54703
|
+
}
|
|
54704
|
+
} else {
|
|
54705
|
+
// Para otras estrategias, desmarcar solo hojas
|
|
54706
|
+
if (!hasChildren(node)) {
|
|
54707
|
+
const index = tickedArray.indexOf(nodeValue);
|
|
54708
|
+
if (index > -1) {
|
|
54709
|
+
tickedArray.splice(index, 1);
|
|
54710
|
+
}
|
|
54711
|
+
} else {
|
|
54712
|
+
// Desmarcar todas las hojas hijas
|
|
54713
|
+
const leafNodes = getLeafNodes(node?.children);
|
|
54714
|
+
leafNodes.forEach(leaf => {
|
|
54715
|
+
const leafValue = leaf?.value;
|
|
54716
|
+
const index = tickedArray.indexOf(leafValue);
|
|
54717
|
+
if (index > -1) {
|
|
54718
|
+
tickedArray.splice(index, 1);
|
|
54719
|
+
}
|
|
54720
|
+
});
|
|
54721
|
+
}
|
|
54722
|
+
}
|
|
54723
|
+
};
|
|
54724
|
+
|
|
54725
|
+
// Método para verificar si todos los hijos de un nodo están seleccionados
|
|
54726
|
+
const areAllChildrenSelected = node => {
|
|
54727
|
+
if (!hasChildren(node)) return false;
|
|
54728
|
+
const leafNodes = getLeafNodes(node?.children);
|
|
54729
|
+
return leafNodes.length > 0 && leafNodes.every(leaf => localTicked.value.includes(leaf.value));
|
|
54730
|
+
};
|
|
54731
|
+
|
|
54732
|
+
// Método para verificar si algunos hijos de un nodo están seleccionados
|
|
54733
|
+
const areSomeChildrenSelected = node => {
|
|
54734
|
+
if (!hasChildren(node)) return false;
|
|
54735
|
+
const leafNodes = getLeafNodes(node?.children);
|
|
54736
|
+
return leafNodes.length > 0 && leafNodes.some(leaf => localTicked.value.includes(leaf.value));
|
|
54737
|
+
};
|
|
54738
|
+
|
|
54739
|
+
// Método para obtener el icono de check según la estrategia y estado
|
|
54740
|
+
const getCheckIcon = node => {
|
|
54741
|
+
// Para estrategia strict, usar el icono por defecto
|
|
54742
|
+
if (props.tickStrategy === 'strict') {
|
|
54743
|
+
return null; // Usar el icono por defecto
|
|
54744
|
+
}
|
|
54745
|
+
|
|
54746
|
+
// Para estrategia leaf
|
|
54747
|
+
if (props.tickStrategy === 'leaf' || props.tickStrategy === 'leaf-filtered') {
|
|
54748
|
+
if (hasChildren(node)) {
|
|
54749
|
+
// Es un nodo padre
|
|
54750
|
+
if (isTicked(node)) {
|
|
54751
|
+
// Si está completamente seleccionado, verificar el estado de los hijos
|
|
54752
|
+
if (areAllChildrenSelected(node)) {
|
|
54753
|
+
// Todos los hijos seleccionados - mostrar check
|
|
54754
|
+
return 'sym-check';
|
|
54755
|
+
} else if (areSomeChildrenSelected(node)) {
|
|
54756
|
+
// Algunos hijos seleccionados - mostrar guión medio
|
|
54757
|
+
return 'sym-remove';
|
|
54758
|
+
}
|
|
54759
|
+
} else if (areSomeChildrenSelected(node)) {
|
|
54760
|
+
// Si no está completamente seleccionado pero algunos hijos están seleccionados
|
|
54761
|
+
// Mostrar guión medio para indicar selección parcial
|
|
54762
|
+
return 'sym-remove';
|
|
54763
|
+
}
|
|
54764
|
+
} else {
|
|
54765
|
+
// Es un nodo hoja - usar check normal
|
|
54766
|
+
return 'sym-check';
|
|
54767
|
+
}
|
|
54768
|
+
}
|
|
54769
|
+
return null; // Usar el icono por defecto
|
|
54770
|
+
};
|
|
54771
|
+
|
|
54772
|
+
// Método para obtener el icono cuando no está seleccionado
|
|
54773
|
+
const getUncheckedIcon = node => {
|
|
54774
|
+
// Para estrategia leaf, mostrar guión medio si algunos hijos están seleccionados
|
|
54775
|
+
if ((props.tickStrategy === 'leaf' || props.tickStrategy === 'leaf-filtered') && hasChildren(node) && areSomeChildrenSelected(node) && !isTicked(node)) {
|
|
54776
|
+
return 'sym-remove';
|
|
54777
|
+
}
|
|
54778
|
+
return null; // No mostrar icono por defecto
|
|
54779
|
+
};
|
|
54780
|
+
|
|
54781
|
+
// Método para obtener el color del check según el estado
|
|
54782
|
+
const getCheckColor = node => {
|
|
54783
|
+
// Para estrategia leaf
|
|
54784
|
+
if ((props.tickStrategy === 'leaf' || props.tickStrategy === 'leaf-filtered') && hasChildren(node)) {
|
|
54785
|
+
// Si el nodo padre tiene algunos hijos seleccionados (muestra guión medio)
|
|
54786
|
+
// o si está completamente seleccionado, usar color personalizado o por defecto
|
|
54787
|
+
if (areSomeChildrenSelected(node) || isTicked(node)) {
|
|
54788
|
+
return props.tickedColor || 'exos-bg-primary';
|
|
54789
|
+
}
|
|
54790
|
+
}
|
|
54791
|
+
|
|
54792
|
+
// Para otros casos, usar el color por defecto
|
|
54793
|
+
return null;
|
|
54794
|
+
};
|
|
54795
|
+
|
|
54796
|
+
// Método para obtener el color del uncheck según el estado
|
|
54797
|
+
const getUncheckColor = node => {
|
|
54798
|
+
// Para estrategia leaf
|
|
54799
|
+
if ((props.tickStrategy === 'leaf' || props.tickStrategy === 'leaf-filtered') && hasChildren(node) && areSomeChildrenSelected(node) && !isTicked(node)) {
|
|
54800
|
+
// Si el nodo padre no está completamente seleccionado pero tiene algunos hijos
|
|
54801
|
+
// usar color personalizado o por defecto para el guión medio
|
|
54802
|
+
return props.tickedPartialColor || 'exos-bg-primary';
|
|
54803
|
+
}
|
|
54804
|
+
|
|
54805
|
+
// Para otros casos, usar el color por defecto
|
|
54806
|
+
return null;
|
|
54807
|
+
};
|
|
54808
|
+
|
|
54809
|
+
// Método para recolectar todos los nodos expandidos de forma recursiva
|
|
54810
|
+
const collectExpandedNodes = nodes => {
|
|
54811
|
+
const expandedNodes = [];
|
|
54812
|
+
const stack = [...nodes];
|
|
54813
|
+
while (stack.length > 0) {
|
|
54814
|
+
const node = stack.pop();
|
|
54815
|
+
if (node.expanded) {
|
|
54816
|
+
expandedNodes.push(node.value);
|
|
54817
|
+
}
|
|
54818
|
+
if (hasChildren(node)) {
|
|
54819
|
+
stack.push(...node.children);
|
|
54820
|
+
}
|
|
54821
|
+
}
|
|
54822
|
+
return expandedNodes;
|
|
54823
|
+
};
|
|
54824
|
+
const handleExpanded = expandedNodes => {
|
|
54825
|
+
localExpanded.value = expandedNodes;
|
|
54826
|
+
emit('expanded', expandedNodes);
|
|
54827
|
+
};
|
|
54828
|
+
const handleTicked = tickedNodes => {
|
|
54829
|
+
localTicked.value = tickedNodes;
|
|
54830
|
+
emit('ticked', tickedNodes);
|
|
54831
|
+
};
|
|
54832
|
+
|
|
54833
|
+
// Lifecycle
|
|
54834
|
+
(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.onMounted)(() => {
|
|
54835
|
+
if (localExpanded.value.length == 0) {
|
|
54836
|
+
// Recolectar todos los nodos expandidos de forma recursiva
|
|
54837
|
+
const expandedNodes = collectExpandedNodes(props.nodes);
|
|
54838
|
+
localExpanded.value = expandedNodes;
|
|
54839
|
+
emit('expanded', localExpanded.value);
|
|
54840
|
+
}
|
|
54841
|
+
});
|
|
54842
|
+
|
|
54843
|
+
// Expose methods
|
|
54844
|
+
__expose({
|
|
54845
|
+
/**
|
|
54846
|
+
* Expande un nodo específico por su valor. Parámetro: nodeValue (string)
|
|
54847
|
+
*/
|
|
54848
|
+
expandNode: nodeValue => {
|
|
54849
|
+
if (!localExpanded.value.includes(nodeValue)) {
|
|
54850
|
+
localExpanded.value.push(nodeValue);
|
|
54851
|
+
emit('expanded', localExpanded.value);
|
|
54852
|
+
}
|
|
54853
|
+
},
|
|
54854
|
+
/**
|
|
54855
|
+
* Contrae un nodo específico por su valor. Parámetro: nodeValue (string)
|
|
54856
|
+
*/
|
|
54857
|
+
collapseNode: nodeValue => {
|
|
54858
|
+
const index = localExpanded.value.indexOf(nodeValue);
|
|
54859
|
+
if (index !== -1) {
|
|
54860
|
+
localExpanded.value.splice(index, 1);
|
|
54861
|
+
emit('expanded', localExpanded.value);
|
|
54862
|
+
}
|
|
54863
|
+
},
|
|
54864
|
+
/**
|
|
54865
|
+
* Muestra todos los nodos del árbol. Sin parámetros.
|
|
54866
|
+
*/
|
|
54867
|
+
showAll: () => {
|
|
54868
|
+
const allNodes = [];
|
|
54869
|
+
const collectAllNodes = nodes => {
|
|
54870
|
+
nodes.forEach(node => {
|
|
54871
|
+
allNodes.push(node.value);
|
|
54872
|
+
if (hasChildren(node)) {
|
|
54873
|
+
collectAllNodes(node.children);
|
|
54874
|
+
}
|
|
54875
|
+
});
|
|
54876
|
+
};
|
|
54877
|
+
collectAllNodes(props.nodes);
|
|
54878
|
+
localExpanded.value = allNodes;
|
|
54879
|
+
emit('expanded', localExpanded.value);
|
|
54880
|
+
},
|
|
54881
|
+
/**
|
|
54882
|
+
* Cierra todos los nodos del árbol. Sin parámetros.
|
|
54883
|
+
*/
|
|
54884
|
+
closeAll: () => {
|
|
54885
|
+
localExpanded.value = [];
|
|
54886
|
+
emit('expanded', localExpanded.value);
|
|
54887
|
+
},
|
|
54888
|
+
/**
|
|
54889
|
+
* Marca (ticked) un nodo específico por su valor. Parámetro: nodeValue (string)
|
|
54890
|
+
*/
|
|
54891
|
+
tickNode: nodeValue => {
|
|
54892
|
+
const newTicked = [...localTicked.value];
|
|
54893
|
+
if (!newTicked.includes(nodeValue)) {
|
|
54894
|
+
newTicked.push(nodeValue);
|
|
54895
|
+
emit('ticked', newTicked);
|
|
54896
|
+
}
|
|
54897
|
+
},
|
|
54898
|
+
/**
|
|
54899
|
+
* Desmarca (unticked) un nodo específico por su valor. Parámetro: nodeValue (string)
|
|
54900
|
+
*/
|
|
54901
|
+
untickNode: nodeValue => {
|
|
54902
|
+
const newTicked = [...localTicked.value];
|
|
54903
|
+
const index = newTicked.indexOf(nodeValue);
|
|
54904
|
+
if (index > -1) {
|
|
54905
|
+
newTicked.splice(index, 1);
|
|
54906
|
+
emit('ticked', newTicked);
|
|
54907
|
+
}
|
|
54908
|
+
}
|
|
54909
|
+
});
|
|
54910
|
+
return (_ctx, _cache) => {
|
|
54911
|
+
const _component_e_icon = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("e-icon");
|
|
54912
|
+
const _component_e_checkbox = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("e-checkbox");
|
|
54913
|
+
const _component_e_tree = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("e-tree", true);
|
|
54914
|
+
return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", ETreevue_type_script_setup_true_lang_js_hoisted_1, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", ETreevue_type_script_setup_true_lang_js_hoisted_2, [((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(true), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)(external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.Fragment, null, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderList)(processedNodes.value, (node, idx) => {
|
|
54915
|
+
return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", {
|
|
54916
|
+
key: node.value,
|
|
54917
|
+
class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(["e-tree__node", {
|
|
54918
|
+
'e-tree__node--is-item': idx !== processedNodes.value.length - 1,
|
|
54919
|
+
'e-tree__node--is-parent': !__props.parentNode
|
|
54920
|
+
}])
|
|
54921
|
+
}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
|
|
54922
|
+
class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(["e-tree__node-content", {
|
|
54923
|
+
'e-tree__node-content--is-last-item': idx === processedNodes.value.length - 1,
|
|
54924
|
+
'e-tree__node-content--no-border': !__props.parentNode
|
|
54925
|
+
}]),
|
|
54926
|
+
"data-testid": "tree-select-cy",
|
|
54927
|
+
onClick: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => handleSelected(node), ["stop"])
|
|
54928
|
+
}, [__props.parentNode ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", ETreevue_type_script_setup_true_lang_js_hoisted_4)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
|
|
54929
|
+
class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)([getNodeContentClasses(node), "e-tree__node-content-wrapper exos-flex exos-flex-1 exos-items-center exos-py-2 exos-gap-1.5 exos-pl-1.5 exos-rounded-md hover:exos-bg-neutralLightGrey exos-transition-colors exos-duration-200"])
|
|
54930
|
+
}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
|
|
54931
|
+
class: "e-tree__expand-icon",
|
|
54932
|
+
"data-testid": "tree-toggle-cy",
|
|
54933
|
+
onClick: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => toggleNode(node), ["stop"])
|
|
54934
|
+
}, [hasChildren(node) ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createBlock)(_component_e_icon, {
|
|
54935
|
+
key: 0,
|
|
54936
|
+
name: isExpanded(node) ? 'sym-arrow_drop_down' : 'sym-arrow_right'
|
|
54937
|
+
}, null, 8, ["name"])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 8, ETreevue_type_script_setup_true_lang_js_hoisted_5), __props.tickStrategy !== 'none' ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", ETreevue_type_script_setup_true_lang_js_hoisted_6, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_e_checkbox, {
|
|
54938
|
+
modelValue: node?.disabled ? false : isTicked(node),
|
|
54939
|
+
checkedIcon: getCheckIcon(node),
|
|
54940
|
+
uncheckedIcon: getUncheckedIcon(node),
|
|
54941
|
+
checkColor: getCheckColor(node),
|
|
54942
|
+
uncheckColor: getUncheckColor(node),
|
|
54943
|
+
size: "14px",
|
|
54944
|
+
iconSize: "10px",
|
|
54945
|
+
"data-testid": "tree-checkbox-cy",
|
|
54946
|
+
"onUpdate:modelValue": $event => toggleTicked(node)
|
|
54947
|
+
}, null, 8, ["modelValue", "checkedIcon", "uncheckedIcon", "checkColor", "uncheckColor", "onUpdate:modelValue"])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true), node?.header && (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.unref)($slots)[`header-${node?.header}`] ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, `header-${node?.header}`, {
|
|
54948
|
+
key: 1,
|
|
54949
|
+
node: node,
|
|
54950
|
+
allNodes: processedNodes.value
|
|
54951
|
+
}) : ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)(external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.Fragment, {
|
|
54952
|
+
key: 2
|
|
54953
|
+
}, [node?.icon ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", ETreevue_type_script_setup_true_lang_js_hoisted_7, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_e_icon, {
|
|
54954
|
+
name: node?.icon,
|
|
54955
|
+
size: iconConfig.value.size,
|
|
54956
|
+
color: iconConfig.value.color
|
|
54957
|
+
}, null, 8, ["name", "size", "color"])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", ETreevue_type_script_setup_true_lang_js_hoisted_8, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", ETreevue_type_script_setup_true_lang_js_hoisted_9, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)(node.label), 1), node?.description ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", ETreevue_type_script_setup_true_lang_js_hoisted_10, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.toDisplayString)(node.description), 1)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)])], 64))], 2)], 10, ETreevue_type_script_setup_true_lang_js_hoisted_3), node?.body && (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.unref)($slots)[`body-${node.body}`] ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", ETreevue_type_script_setup_true_lang_js_hoisted_11, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, `body-${node.body}`, {
|
|
54958
|
+
node: node,
|
|
54959
|
+
allNodes: processedNodes.value
|
|
54960
|
+
})])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true), hasChildren(node) && isExpanded(node) ? ((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", ETreevue_type_script_setup_true_lang_js_hoisted_12, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createVNode)(_component_e_tree, {
|
|
54961
|
+
nodes: node.children,
|
|
54962
|
+
parentNode: node,
|
|
54963
|
+
tickStrategy: __props.tickStrategy,
|
|
54964
|
+
ticked: localTicked.value,
|
|
54965
|
+
expanded: localExpanded.value,
|
|
54966
|
+
onTicked: handleTicked,
|
|
54967
|
+
onExpanded: handleExpanded,
|
|
54968
|
+
onSelected: _cache[0] || (_cache[0] = $event => _ctx.$emit('selected', $event))
|
|
54969
|
+
}, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createSlots)({
|
|
54970
|
+
_: 2
|
|
54971
|
+
}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderList)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.unref)($slots), (slotFn, name) => {
|
|
54972
|
+
return {
|
|
54973
|
+
name: name,
|
|
54974
|
+
fn: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withCtx)(slotProps => [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderSlot)(_ctx.$slots, name, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.mergeProps)({
|
|
54975
|
+
ref_for: true
|
|
54976
|
+
}, slotProps))])
|
|
54977
|
+
};
|
|
54978
|
+
})]), 1032, ["nodes", "parentNode", "tickStrategy", "ticked", "expanded"])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 2);
|
|
54979
|
+
}), 128))])]);
|
|
54980
|
+
};
|
|
54981
|
+
}
|
|
54982
|
+
});
|
|
54983
|
+
;// CONCATENATED MODULE: ./src/ui/components/tree/ETree.vue?vue&type=script&setup=true&lang=js
|
|
54984
|
+
|
|
54985
|
+
// EXTERNAL MODULE: ./node_modules/vue-cli-plugin-styleguidist/empty-object-loader.js!./node_modules/vue-loader/dist/index.js??ruleSet[0].use[0]!./src/ui/components/tree/ETree.vue?vue&type=custom&index=0&blockType=docs&lang=md
|
|
54986
|
+
var ETreevue_type_custom_index_0_blockType_docs_lang_md = __webpack_require__(11031);
|
|
54987
|
+
var ETreevue_type_custom_index_0_blockType_docs_lang_md_default = /*#__PURE__*/__webpack_require__.n(ETreevue_type_custom_index_0_blockType_docs_lang_md);
|
|
54988
|
+
;// CONCATENATED MODULE: ./src/ui/components/tree/ETree.vue?vue&type=custom&index=0&blockType=docs&lang=md
|
|
54989
|
+
|
|
54990
|
+
;// CONCATENATED MODULE: ./src/ui/components/tree/ETree.vue
|
|
54991
|
+
|
|
54992
|
+
|
|
54993
|
+
/* custom blocks */
|
|
54994
|
+
;
|
|
54995
|
+
if (typeof (ETreevue_type_custom_index_0_blockType_docs_lang_md_default()) === 'function') ETreevue_type_custom_index_0_blockType_docs_lang_md_default()(ETreevue_type_script_setup_true_lang_js)
|
|
54996
|
+
|
|
54997
|
+
|
|
54998
|
+
const ETree_exports_ = ETreevue_type_script_setup_true_lang_js;
|
|
54999
|
+
|
|
55000
|
+
/* harmony default export */ var ETree = (ETree_exports_);
|
|
54385
55001
|
;// CONCATENATED MODULE: ./src/components/plugins/loading.js
|
|
54386
55002
|
function createLoadingHTML(config) {
|
|
54387
55003
|
const color = config?.color ?? '#FAFAFA';
|
|
@@ -54496,6 +55112,7 @@ const loading = {
|
|
|
54496
55112
|
|
|
54497
55113
|
|
|
54498
55114
|
|
|
55115
|
+
|
|
54499
55116
|
|
|
54500
55117
|
|
|
54501
55118
|
const ExosLibraryComponents = {
|
|
@@ -54534,6 +55151,7 @@ const ExosLibraryComponents = {
|
|
|
54534
55151
|
app.component('EDataDetail', EDataDetail);
|
|
54535
55152
|
app.component('ETooltip', ETooltip);
|
|
54536
55153
|
app.component('EStepTracker', EStepTracker);
|
|
55154
|
+
app.component('ETree', ETree);
|
|
54537
55155
|
app.provide('$loading', loading);
|
|
54538
55156
|
app.provide('$notify', notify);
|
|
54539
55157
|
app.provide('$showMessage', message);
|