@alexochihua/exos-library-components 2.24.0 → 2.25.1

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
- }, null, 8, ["name", "color", "fill"])) : (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);
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
  });
@@ -51671,6 +51688,9 @@ const _hoisted_19 = {
51671
51688
  emit('update:selectedRows', []);
51672
51689
  emit('allRowsSelected', selectAllRecords.value);
51673
51690
  };
51691
+ const cleanIndexRowSelected = () => {
51692
+ indexRowSelected.value = null;
51693
+ };
51674
51694
  __expose({
51675
51695
  /**
51676
51696
  * Establece la página actual de la tabla
@@ -51679,7 +51699,11 @@ const _hoisted_19 = {
51679
51699
  /**
51680
51700
  * Recarga los datos de la tabla y regresa a la primera página
51681
51701
  */
51682
- handleReload
51702
+ handleReload,
51703
+ /**
51704
+ * Limpia el índice de la fila seleccionada
51705
+ */
51706
+ cleanIndexRowSelected
51683
51707
  });
51684
51708
 
51685
51709
  // Watchers
@@ -54382,6 +54406,605 @@ if (typeof (EStepTrackervue_type_custom_index_0_blockType_docs_lang_md_default()
54382
54406
  const EStepTracker_exports_ = EStepTrackervue_type_script_setup_true_lang_js;
54383
54407
 
54384
54408
  /* harmony default export */ var EStepTracker = (EStepTracker_exports_);
54409
+ ;// 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
54410
+
54411
+
54412
+ const ETreevue_type_script_setup_true_lang_js_hoisted_1 = {
54413
+ class: "e-tree",
54414
+ "data-testid": "tree-cy"
54415
+ };
54416
+ const ETreevue_type_script_setup_true_lang_js_hoisted_2 = {
54417
+ class: "e-tree__container"
54418
+ };
54419
+ const ETreevue_type_script_setup_true_lang_js_hoisted_3 = ["onClick"];
54420
+ const ETreevue_type_script_setup_true_lang_js_hoisted_4 = {
54421
+ key: 0,
54422
+ class: "e-tree__horizontal-line",
54423
+ "aria-hidden": "true"
54424
+ };
54425
+ const ETreevue_type_script_setup_true_lang_js_hoisted_5 = ["onClick"];
54426
+ const ETreevue_type_script_setup_true_lang_js_hoisted_6 = {
54427
+ key: 0,
54428
+ class: "e-tree__checkbox"
54429
+ };
54430
+ const ETreevue_type_script_setup_true_lang_js_hoisted_7 = {
54431
+ key: 0,
54432
+ class: "e-tree__node-icon"
54433
+ };
54434
+ const ETreevue_type_script_setup_true_lang_js_hoisted_8 = {
54435
+ class: "e-tree__node-label"
54436
+ };
54437
+ const ETreevue_type_script_setup_true_lang_js_hoisted_9 = {
54438
+ class: "e-tree__node-label-text"
54439
+ };
54440
+ const ETreevue_type_script_setup_true_lang_js_hoisted_10 = {
54441
+ key: 0,
54442
+ class: "e-tree__node-label-description"
54443
+ };
54444
+ const ETreevue_type_script_setup_true_lang_js_hoisted_11 = {
54445
+ key: 0,
54446
+ class: "e-tree__node-body"
54447
+ };
54448
+ const ETreevue_type_script_setup_true_lang_js_hoisted_12 = {
54449
+ key: 1,
54450
+ class: "e-tree__children"
54451
+ };
54452
+
54453
+ /* harmony default export */ var ETreevue_type_script_setup_true_lang_js = ({
54454
+ __name: 'ETree',
54455
+ props: {
54456
+ /**
54457
+ * Array de nodos que define la estructura del árbol. Consulta la sección de documentación para ver la estructura y ejemplos detallados.
54458
+ * @values [{ value: string, label: string, children: array, disabled: boolean, expanded: boolean, icon: string, description: string, header: string, body: string }]
54459
+ */
54460
+ nodes: {
54461
+ type: Array,
54462
+ required: true,
54463
+ default: () => []
54464
+ },
54465
+ /**
54466
+ * Array de valores de nodos seleccionados
54467
+ * @values ['node1', 'node2', 'node3']
54468
+ */
54469
+ ticked: {
54470
+ type: Array,
54471
+ default: () => []
54472
+ },
54473
+ /**
54474
+ * Estrategia de selección para los checkboxes
54475
+ * @values 'none' - sin checkboxes, 'leaf' - solo hojas, 'leaf-filtered' - hojas filtradas, 'strict' - nodo específico
54476
+ */
54477
+ tickStrategy: {
54478
+ type: String,
54479
+ default: 'none',
54480
+ validator: value => ['none', 'leaf', 'leaf-filtered', 'strict'].includes(value)
54481
+ },
54482
+ /**
54483
+ * Color de fondo para nodos seleccionados en estrategia leaf
54484
+ * @values 'bg-red-500' - rojo, 'bg-green-500' - verde, 'bg-purple-500' - púrpura
54485
+ */
54486
+ tickedColor: {
54487
+ type: String,
54488
+ default: null
54489
+ },
54490
+ /**
54491
+ * Color de fondo para nodos con selección parcial (guión medio) en estrategia leaf
54492
+ * @values 'bg-red-500' - rojo, 'bg-green-500' - verde, 'bg-purple-500' - púrpura
54493
+ */
54494
+ tickedPartialColor: {
54495
+ type: String,
54496
+ default: null
54497
+ },
54498
+ /**
54499
+ * Tamaño del icono de los nodos
54500
+ * @values 'xs' - extra pequeño, 'sm' - pequeño, 'md' - mediano, 'lg' - grande
54501
+ */
54502
+ iconSize: {
54503
+ type: String,
54504
+ default: null
54505
+ },
54506
+ /**
54507
+ * Color del icono de los nodos
54508
+ * @values 'text-red-500' - rojo, 'text-green-500' - verde, 'text-purple-500' - púrpura
54509
+ */
54510
+ iconColor: {
54511
+ type: String,
54512
+ default: null
54513
+ },
54514
+ /**
54515
+ * Nodo padre para el contexto de recursión
54516
+ * @ignore
54517
+ */
54518
+ parentNode: {
54519
+ type: Object,
54520
+ default: null
54521
+ },
54522
+ /**
54523
+ * Array de valores de nodos expandidos
54524
+ * @ignore
54525
+ */
54526
+ expanded: {
54527
+ type: Array,
54528
+ default: () => []
54529
+ }
54530
+ },
54531
+ emits: [
54532
+ /**
54533
+ * Emitido cuando cambia el estado de expansión de los nodos
54534
+ * @values ['node1', 'node2', 'node3']
54535
+ */
54536
+ 'expanded',
54537
+ /**
54538
+ * Emitido cuando se selecciona un nodo
54539
+ * @values { value: string, label: string, children: array }
54540
+ */
54541
+ 'selected',
54542
+ /**
54543
+ * Emitido cuando cambia el estado de selección de los checkboxes
54544
+ * @values ['node1', 'node2', 'node3']
54545
+ */
54546
+ 'ticked'],
54547
+ setup(__props, {
54548
+ expose: __expose,
54549
+ emit: __emit
54550
+ }) {
54551
+ const props = __props;
54552
+ const emit = __emit;
54553
+ const instance = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.getCurrentInstance)();
54554
+ const $slots = instance?.slots;
54555
+
54556
+ // Estado reactivo
54557
+ const localExpanded = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(props.expanded ? [...props.expanded] : []);
54558
+ const localTicked = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.ref)(props.ticked ? [...props.ticked] : []);
54559
+
54560
+ // Computed properties
54561
+ const processedNodes = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
54562
+ return processNodesWithDisabled(props.nodes);
54563
+ });
54564
+ const iconConfig = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.computed)(() => {
54565
+ return {
54566
+ size: props.iconSize || 'xs',
54567
+ color: props.iconColor || 'e-tree__node-icon'
54568
+ };
54569
+ });
54570
+
54571
+ // Watchers
54572
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.watch)(() => props.expanded, newVal => {
54573
+ localExpanded.value = [...newVal];
54574
+ });
54575
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.watch)(() => props.ticked, newVal => {
54576
+ localTicked.value = [...newVal];
54577
+ });
54578
+
54579
+ // Métodos
54580
+ const processNodesWithDisabled = nodes => {
54581
+ return nodes.map(node => {
54582
+ const processedNode = {
54583
+ ...node
54584
+ };
54585
+
54586
+ // Si el nodo padre está deshabilitado, este nodo también debe estar deshabilitado
54587
+ if (props.parentNode && props.parentNode.disabled) {
54588
+ processedNode.disabled = true;
54589
+ }
54590
+
54591
+ // Si el nodo actual está deshabilitado y tiene hijos, propagar disabled a todos los hijos
54592
+ if (processedNode.disabled && hasChildren(processedNode)) {
54593
+ processedNode.children = processNodesWithDisabled(processedNode.children);
54594
+ } else if (hasChildren(processedNode)) {
54595
+ // Si no está deshabilitado pero tiene hijos, procesar recursivamente
54596
+ processedNode.children = processNodesWithDisabled(processedNode.children);
54597
+ }
54598
+ return processedNode;
54599
+ });
54600
+ };
54601
+ const hasChildren = node => {
54602
+ return node?.children && node?.children.length > 0;
54603
+ };
54604
+ const isDisabled = node => {
54605
+ return node?.disabled === true;
54606
+ };
54607
+ const getNodeContentClasses = node => {
54608
+ const disabled = isDisabled(node);
54609
+ const hoverClasses = disabled ? 'e-tree__node-content--hover--disabled' : 'e-tree__node-content--hover--enabled';
54610
+ const disabledClasses = disabled ? 'e-tree__node-content--disabled' : '';
54611
+ return [hoverClasses, disabledClasses];
54612
+ };
54613
+ const handleSelected = node => {
54614
+ if (isDisabled(node)) return;
54615
+ emit('selected', node);
54616
+ };
54617
+ const isExpanded = node => {
54618
+ return localExpanded.value.includes(node?.value);
54619
+ };
54620
+ const isTicked = node => {
54621
+ if (props.tickStrategy === 'none') return false;
54622
+ const nodeValue = node?.value;
54623
+ if (props.tickStrategy === 'strict') {
54624
+ return localTicked.value.includes(nodeValue);
54625
+ } else {
54626
+ if (!hasChildren(node)) {
54627
+ return localTicked.value.includes(nodeValue);
54628
+ } else {
54629
+ const leafNodes = getLeafNodes(node?.children);
54630
+ return leafNodes.length > 0 && leafNodes.every(leaf => localTicked.value.includes(leaf.value));
54631
+ }
54632
+ }
54633
+ };
54634
+ const toggleNode = node => {
54635
+ if (!hasChildren(node) || isDisabled(node)) return;
54636
+ const nodeValue = node?.value;
54637
+ const newExpanded = [...localExpanded.value];
54638
+ if (isExpanded(node)) {
54639
+ // Contraer (ya está en el array)
54640
+ const index = newExpanded.indexOf(nodeValue);
54641
+ if (index !== -1) {
54642
+ newExpanded.splice(index, 1);
54643
+ }
54644
+ } else {
54645
+ // Expandir (no está en el array)
54646
+ newExpanded.push(nodeValue);
54647
+ }
54648
+ localExpanded.value = [...newExpanded];
54649
+ emit('expanded', localExpanded.value);
54650
+ };
54651
+ const toggleTicked = node => {
54652
+ if (props.tickStrategy === 'none' || isDisabled(node)) return;
54653
+ const newTicked = [...localTicked.value];
54654
+ if (isTicked(node)) {
54655
+ // Desmarcar nodo y sus hijos
54656
+ untickNode(node, newTicked);
54657
+ } else {
54658
+ // Marcar nodo y sus hijos según la estrategia
54659
+ tickNode(node, newTicked);
54660
+ }
54661
+ localTicked.value = [...newTicked];
54662
+ emit('ticked', localTicked.value);
54663
+ };
54664
+ const getLeafNodes = nodes => {
54665
+ const leafNodes = [];
54666
+ nodes.forEach(node => {
54667
+ // Si el nodo tiene hijos, obtener los nodos hojas de los hijos
54668
+ if (hasChildren(node)) {
54669
+ // Agregar los nodos hojas de los hijos al array de nodos hojas con el método recursivo
54670
+ leafNodes.push(...getLeafNodes(node?.children));
54671
+ } else {
54672
+ // Si el nodo no tiene hijos, agregar el nodo al array de nodos hojas
54673
+ leafNodes.push(node);
54674
+ }
54675
+ });
54676
+ return leafNodes;
54677
+ };
54678
+ const tickNode = (node, tickedArray) => {
54679
+ const nodeValue = node?.value;
54680
+ if (props.tickStrategy === 'leaf' || props.tickStrategy === 'leaf-filtered') {
54681
+ // Solo marcar hojas
54682
+ if (!hasChildren(node)) {
54683
+ if (!tickedArray.includes(nodeValue)) {
54684
+ tickedArray.push(nodeValue);
54685
+ }
54686
+ } else {
54687
+ // Marcar todas las hojas hijas
54688
+ const leafNodes = getLeafNodes(node?.children);
54689
+ leafNodes.forEach(leaf => {
54690
+ const leafValue = leaf?.value;
54691
+ if (!tickedArray.includes(leafValue)) {
54692
+ tickedArray.push(leafValue);
54693
+ }
54694
+ });
54695
+ }
54696
+ } else if (props.tickStrategy === 'strict') {
54697
+ // Marcar solo el nodo actual (sin propagar a hijos)
54698
+ if (!tickedArray.includes(nodeValue)) {
54699
+ tickedArray.push(nodeValue);
54700
+ }
54701
+ }
54702
+ };
54703
+ const untickNode = (node, tickedArray) => {
54704
+ const nodeValue = node?.value;
54705
+ if (props.tickStrategy === 'strict') {
54706
+ // Desmarcar solo el nodo actual (sin propagar a hijos)
54707
+ const index = tickedArray.indexOf(nodeValue);
54708
+ if (index > -1) {
54709
+ tickedArray.splice(index, 1);
54710
+ }
54711
+ } else {
54712
+ // Para otras estrategias, desmarcar solo hojas
54713
+ if (!hasChildren(node)) {
54714
+ const index = tickedArray.indexOf(nodeValue);
54715
+ if (index > -1) {
54716
+ tickedArray.splice(index, 1);
54717
+ }
54718
+ } else {
54719
+ // Desmarcar todas las hojas hijas
54720
+ const leafNodes = getLeafNodes(node?.children);
54721
+ leafNodes.forEach(leaf => {
54722
+ const leafValue = leaf?.value;
54723
+ const index = tickedArray.indexOf(leafValue);
54724
+ if (index > -1) {
54725
+ tickedArray.splice(index, 1);
54726
+ }
54727
+ });
54728
+ }
54729
+ }
54730
+ };
54731
+
54732
+ // Método para verificar si todos los hijos de un nodo están seleccionados
54733
+ const areAllChildrenSelected = node => {
54734
+ if (!hasChildren(node)) return false;
54735
+ const leafNodes = getLeafNodes(node?.children);
54736
+ return leafNodes.length > 0 && leafNodes.every(leaf => localTicked.value.includes(leaf.value));
54737
+ };
54738
+
54739
+ // Método para verificar si algunos hijos de un nodo están seleccionados
54740
+ const areSomeChildrenSelected = node => {
54741
+ if (!hasChildren(node)) return false;
54742
+ const leafNodes = getLeafNodes(node?.children);
54743
+ return leafNodes.length > 0 && leafNodes.some(leaf => localTicked.value.includes(leaf.value));
54744
+ };
54745
+
54746
+ // Método para obtener el icono de check según la estrategia y estado
54747
+ const getCheckIcon = node => {
54748
+ // Para estrategia strict, usar el icono por defecto
54749
+ if (props.tickStrategy === 'strict') {
54750
+ return null; // Usar el icono por defecto
54751
+ }
54752
+
54753
+ // Para estrategia leaf
54754
+ if (props.tickStrategy === 'leaf' || props.tickStrategy === 'leaf-filtered') {
54755
+ if (hasChildren(node)) {
54756
+ // Es un nodo padre
54757
+ if (isTicked(node)) {
54758
+ // Si está completamente seleccionado, verificar el estado de los hijos
54759
+ if (areAllChildrenSelected(node)) {
54760
+ // Todos los hijos seleccionados - mostrar check
54761
+ return 'sym-check';
54762
+ } else if (areSomeChildrenSelected(node)) {
54763
+ // Algunos hijos seleccionados - mostrar guión medio
54764
+ return 'sym-remove';
54765
+ }
54766
+ } else if (areSomeChildrenSelected(node)) {
54767
+ // Si no está completamente seleccionado pero algunos hijos están seleccionados
54768
+ // Mostrar guión medio para indicar selección parcial
54769
+ return 'sym-remove';
54770
+ }
54771
+ } else {
54772
+ // Es un nodo hoja - usar check normal
54773
+ return 'sym-check';
54774
+ }
54775
+ }
54776
+ return null; // Usar el icono por defecto
54777
+ };
54778
+
54779
+ // Método para obtener el icono cuando no está seleccionado
54780
+ const getUncheckedIcon = node => {
54781
+ // Para estrategia leaf, mostrar guión medio si algunos hijos están seleccionados
54782
+ if ((props.tickStrategy === 'leaf' || props.tickStrategy === 'leaf-filtered') && hasChildren(node) && areSomeChildrenSelected(node) && !isTicked(node)) {
54783
+ return 'sym-remove';
54784
+ }
54785
+ return null; // No mostrar icono por defecto
54786
+ };
54787
+
54788
+ // Método para obtener el color del check según el estado
54789
+ const getCheckColor = node => {
54790
+ // Para estrategia leaf
54791
+ if ((props.tickStrategy === 'leaf' || props.tickStrategy === 'leaf-filtered') && hasChildren(node)) {
54792
+ // Si el nodo padre tiene algunos hijos seleccionados (muestra guión medio)
54793
+ // o si está completamente seleccionado, usar color personalizado o por defecto
54794
+ if (areSomeChildrenSelected(node) || isTicked(node)) {
54795
+ return props.tickedColor || 'exos-bg-primary';
54796
+ }
54797
+ }
54798
+
54799
+ // Para otros casos, usar el color por defecto
54800
+ return null;
54801
+ };
54802
+
54803
+ // Método para obtener el color del uncheck según el estado
54804
+ const getUncheckColor = node => {
54805
+ // Para estrategia leaf
54806
+ if ((props.tickStrategy === 'leaf' || props.tickStrategy === 'leaf-filtered') && hasChildren(node) && areSomeChildrenSelected(node) && !isTicked(node)) {
54807
+ // Si el nodo padre no está completamente seleccionado pero tiene algunos hijos
54808
+ // usar color personalizado o por defecto para el guión medio
54809
+ return props.tickedPartialColor || 'exos-bg-primary';
54810
+ }
54811
+
54812
+ // Para otros casos, usar el color por defecto
54813
+ return null;
54814
+ };
54815
+
54816
+ // Método para recolectar todos los nodos expandidos de forma recursiva
54817
+ const collectExpandedNodes = nodes => {
54818
+ const expandedNodes = [];
54819
+ const stack = [...nodes];
54820
+ while (stack.length > 0) {
54821
+ const node = stack.pop();
54822
+ if (node.expanded) {
54823
+ expandedNodes.push(node.value);
54824
+ }
54825
+ if (hasChildren(node)) {
54826
+ stack.push(...node.children);
54827
+ }
54828
+ }
54829
+ return expandedNodes;
54830
+ };
54831
+ const handleExpanded = expandedNodes => {
54832
+ localExpanded.value = expandedNodes;
54833
+ emit('expanded', expandedNodes);
54834
+ };
54835
+ const handleTicked = tickedNodes => {
54836
+ localTicked.value = tickedNodes;
54837
+ emit('ticked', tickedNodes);
54838
+ };
54839
+
54840
+ // Lifecycle
54841
+ (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.onMounted)(() => {
54842
+ if (localExpanded.value.length == 0) {
54843
+ // Recolectar todos los nodos expandidos de forma recursiva
54844
+ const expandedNodes = collectExpandedNodes(props.nodes);
54845
+ localExpanded.value = expandedNodes;
54846
+ emit('expanded', localExpanded.value);
54847
+ }
54848
+ });
54849
+
54850
+ // Expose methods
54851
+ __expose({
54852
+ /**
54853
+ * Expande un nodo específico por su valor. Parámetro: nodeValue (string)
54854
+ */
54855
+ expandNode: nodeValue => {
54856
+ if (!localExpanded.value.includes(nodeValue)) {
54857
+ localExpanded.value.push(nodeValue);
54858
+ emit('expanded', localExpanded.value);
54859
+ }
54860
+ },
54861
+ /**
54862
+ * Contrae un nodo específico por su valor. Parámetro: nodeValue (string)
54863
+ */
54864
+ collapseNode: nodeValue => {
54865
+ const index = localExpanded.value.indexOf(nodeValue);
54866
+ if (index !== -1) {
54867
+ localExpanded.value.splice(index, 1);
54868
+ emit('expanded', localExpanded.value);
54869
+ }
54870
+ },
54871
+ /**
54872
+ * Muestra todos los nodos del árbol. Sin parámetros.
54873
+ */
54874
+ showAll: () => {
54875
+ const allNodes = [];
54876
+ const collectAllNodes = nodes => {
54877
+ nodes.forEach(node => {
54878
+ allNodes.push(node.value);
54879
+ if (hasChildren(node)) {
54880
+ collectAllNodes(node.children);
54881
+ }
54882
+ });
54883
+ };
54884
+ collectAllNodes(props.nodes);
54885
+ localExpanded.value = allNodes;
54886
+ emit('expanded', localExpanded.value);
54887
+ },
54888
+ /**
54889
+ * Cierra todos los nodos del árbol. Sin parámetros.
54890
+ */
54891
+ closeAll: () => {
54892
+ localExpanded.value = [];
54893
+ emit('expanded', localExpanded.value);
54894
+ },
54895
+ /**
54896
+ * Marca (ticked) un nodo específico por su valor. Parámetro: nodeValue (string)
54897
+ */
54898
+ tickNode: nodeValue => {
54899
+ const newTicked = [...localTicked.value];
54900
+ if (!newTicked.includes(nodeValue)) {
54901
+ newTicked.push(nodeValue);
54902
+ emit('ticked', newTicked);
54903
+ }
54904
+ },
54905
+ /**
54906
+ * Desmarca (unticked) un nodo específico por su valor. Parámetro: nodeValue (string)
54907
+ */
54908
+ untickNode: nodeValue => {
54909
+ const newTicked = [...localTicked.value];
54910
+ const index = newTicked.indexOf(nodeValue);
54911
+ if (index > -1) {
54912
+ newTicked.splice(index, 1);
54913
+ emit('ticked', newTicked);
54914
+ }
54915
+ }
54916
+ });
54917
+ return (_ctx, _cache) => {
54918
+ const _component_e_icon = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("e-icon");
54919
+ const _component_e_checkbox = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("e-checkbox");
54920
+ const _component_e_tree = (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.resolveComponent)("e-tree", true);
54921
+ 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) => {
54922
+ return (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.openBlock)(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementBlock)("div", {
54923
+ key: node.value,
54924
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(["e-tree__node", {
54925
+ 'e-tree__node--is-item': idx !== processedNodes.value.length - 1,
54926
+ 'e-tree__node--is-parent': !__props.parentNode
54927
+ }])
54928
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
54929
+ class: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.normalizeClass)(["e-tree__node-content", {
54930
+ 'e-tree__node-content--is-last-item': idx === processedNodes.value.length - 1,
54931
+ 'e-tree__node-content--no-border': !__props.parentNode
54932
+ }]),
54933
+ "data-testid": "tree-select-cy",
54934
+ onClick: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => handleSelected(node), ["stop"])
54935
+ }, [__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", {
54936
+ 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"])
54937
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createElementVNode)("div", {
54938
+ class: "e-tree__expand-icon",
54939
+ "data-testid": "tree-toggle-cy",
54940
+ onClick: (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.withModifiers)($event => toggleNode(node), ["stop"])
54941
+ }, [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, {
54942
+ key: 0,
54943
+ name: isExpanded(node) ? 'sym-arrow_drop_down' : 'sym-arrow_right'
54944
+ }, 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, {
54945
+ modelValue: node?.disabled ? false : isTicked(node),
54946
+ checkedIcon: getCheckIcon(node),
54947
+ uncheckedIcon: getUncheckedIcon(node),
54948
+ checkColor: getCheckColor(node),
54949
+ uncheckColor: getUncheckColor(node),
54950
+ size: "14px",
54951
+ iconSize: "10px",
54952
+ "data-testid": "tree-checkbox-cy",
54953
+ "onUpdate:modelValue": $event => toggleTicked(node)
54954
+ }, 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}`, {
54955
+ key: 1,
54956
+ node: node,
54957
+ allNodes: processedNodes.value
54958
+ }) : ((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, {
54959
+ key: 2
54960
+ }, [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, {
54961
+ name: node?.icon,
54962
+ size: iconConfig.value.size,
54963
+ color: iconConfig.value.color
54964
+ }, 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}`, {
54965
+ node: node,
54966
+ allNodes: processedNodes.value
54967
+ })])) : (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, {
54968
+ nodes: node.children,
54969
+ parentNode: node,
54970
+ tickStrategy: __props.tickStrategy,
54971
+ ticked: localTicked.value,
54972
+ expanded: localExpanded.value,
54973
+ onTicked: handleTicked,
54974
+ onExpanded: handleExpanded,
54975
+ onSelected: _cache[0] || (_cache[0] = $event => _ctx.$emit('selected', $event))
54976
+ }, (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createSlots)({
54977
+ _: 2
54978
+ }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.renderList)((0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.unref)($slots), (slotFn, name) => {
54979
+ return {
54980
+ name: name,
54981
+ 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)({
54982
+ ref_for: true
54983
+ }, slotProps))])
54984
+ };
54985
+ })]), 1032, ["nodes", "parentNode", "tickStrategy", "ticked", "expanded"])])) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_namespaceObject.createCommentVNode)("", true)], 2);
54986
+ }), 128))])]);
54987
+ };
54988
+ }
54989
+ });
54990
+ ;// CONCATENATED MODULE: ./src/ui/components/tree/ETree.vue?vue&type=script&setup=true&lang=js
54991
+
54992
+ // 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
54993
+ var ETreevue_type_custom_index_0_blockType_docs_lang_md = __webpack_require__(11031);
54994
+ var ETreevue_type_custom_index_0_blockType_docs_lang_md_default = /*#__PURE__*/__webpack_require__.n(ETreevue_type_custom_index_0_blockType_docs_lang_md);
54995
+ ;// CONCATENATED MODULE: ./src/ui/components/tree/ETree.vue?vue&type=custom&index=0&blockType=docs&lang=md
54996
+
54997
+ ;// CONCATENATED MODULE: ./src/ui/components/tree/ETree.vue
54998
+
54999
+
55000
+ /* custom blocks */
55001
+ ;
55002
+ 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)
55003
+
55004
+
55005
+ const ETree_exports_ = ETreevue_type_script_setup_true_lang_js;
55006
+
55007
+ /* harmony default export */ var ETree = (ETree_exports_);
54385
55008
  ;// CONCATENATED MODULE: ./src/components/plugins/loading.js
54386
55009
  function createLoadingHTML(config) {
54387
55010
  const color = config?.color ?? '#FAFAFA';
@@ -54496,6 +55119,7 @@ const loading = {
54496
55119
 
54497
55120
 
54498
55121
 
55122
+
54499
55123
 
54500
55124
 
54501
55125
  const ExosLibraryComponents = {
@@ -54534,6 +55158,7 @@ const ExosLibraryComponents = {
54534
55158
  app.component('EDataDetail', EDataDetail);
54535
55159
  app.component('ETooltip', ETooltip);
54536
55160
  app.component('EStepTracker', EStepTracker);
55161
+ app.component('ETree', ETree);
54537
55162
  app.provide('$loading', loading);
54538
55163
  app.provide('$notify', notify);
54539
55164
  app.provide('$showMessage', message);