capibara 1.3.21 → 1.3.23
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.
- package/dist/index.js +4 -4
- package/package.json +1 -1
- package/src/lib/capibara.js +26 -9
- package/src/scss/components/_input_nav.scss +6 -2
- package/src/util/tableElements.js +112 -68
- package/src/util/utils.js +2 -2
package/package.json
CHANGED
package/src/lib/capibara.js
CHANGED
|
@@ -831,7 +831,7 @@ export class Capibara{
|
|
|
831
831
|
let pos = utils.eventToPosition(this.config, evt, this.$elements.$table);
|
|
832
832
|
let item = utils.getItemByEvent(this.config, evt, this.$elements.$table);
|
|
833
833
|
|
|
834
|
-
if(item == null) return; // cuano se selecciona un espacio no seleccionable
|
|
834
|
+
//if(item == null) return; // cuano se selecciona un espacio no seleccionable
|
|
835
835
|
|
|
836
836
|
//si es mobile, no selecciona, solo muestra detalles
|
|
837
837
|
let dataByDate = _.find(item.data, {date});
|
|
@@ -847,7 +847,8 @@ export class Capibara{
|
|
|
847
847
|
cancelable: false,
|
|
848
848
|
detail:{
|
|
849
849
|
selected : this.selected,
|
|
850
|
-
tabSelected : this.tabSelected
|
|
850
|
+
tabSelected : this.tabSelected,
|
|
851
|
+
lastSelection : {date, item, pos},
|
|
851
852
|
}
|
|
852
853
|
}));
|
|
853
854
|
return; // cuando se selecciona un espacio no seleccionable
|
|
@@ -903,6 +904,10 @@ export class Capibara{
|
|
|
903
904
|
return false;
|
|
904
905
|
}
|
|
905
906
|
|
|
907
|
+
if(item.selectable === false){
|
|
908
|
+
return false;
|
|
909
|
+
}
|
|
910
|
+
|
|
906
911
|
if(this.config.timeline.noFutureSelectable){
|
|
907
912
|
let d = new Date(date);
|
|
908
913
|
let today = new Date();
|
|
@@ -949,7 +954,7 @@ export class Capibara{
|
|
|
949
954
|
|
|
950
955
|
|
|
951
956
|
|
|
952
|
-
select(date, item, pos, redraw = true){
|
|
957
|
+
select(date, item, pos, redraw = true, refreshForm = true){
|
|
953
958
|
if(!this.isSelected(date, item)){
|
|
954
959
|
|
|
955
960
|
this.selected.push({
|
|
@@ -967,9 +972,10 @@ export class Capibara{
|
|
|
967
972
|
}
|
|
968
973
|
|
|
969
974
|
// si es el primer item seleccionado, se autorrellena el formulario de navRight
|
|
970
|
-
if(this.selected.length == 1){
|
|
971
|
-
|
|
972
|
-
|
|
975
|
+
if(this.selected.length == 1 && refreshForm){
|
|
976
|
+
this.redraw({
|
|
977
|
+
cornerRight: true,
|
|
978
|
+
});
|
|
973
979
|
let {inputs, element, inputsWithReload, saveCancelBtns} = tableElements.redrawNavRight(this.config, this.$elements.$navRight, this.selected, this.tabSelected, dataDay, this.selected[0]);
|
|
974
980
|
this.$elements.$navRight = element;
|
|
975
981
|
this.$inputsNavRight = inputs;
|
|
@@ -1039,10 +1045,10 @@ export class Capibara{
|
|
|
1039
1045
|
});
|
|
1040
1046
|
};
|
|
1041
1047
|
|
|
1042
|
-
selectByItemDate(date, item, redraw = true){
|
|
1048
|
+
selectByItemDate(date, item, redraw = true, refreshForm = true){
|
|
1043
1049
|
if(!this.isSelected(date, item)){
|
|
1044
1050
|
let pos = utils.getPositionByItemDate(this.config, item, date);
|
|
1045
|
-
this.select(date, item, pos, redraw);
|
|
1051
|
+
this.select(date, item, pos, redraw, refreshForm);
|
|
1046
1052
|
}
|
|
1047
1053
|
};
|
|
1048
1054
|
|
|
@@ -1053,6 +1059,13 @@ export class Capibara{
|
|
|
1053
1059
|
}
|
|
1054
1060
|
};
|
|
1055
1061
|
|
|
1062
|
+
deselectAll(redraw = false){
|
|
1063
|
+
this.selected = [];
|
|
1064
|
+
if(redraw){
|
|
1065
|
+
this.redrawSelection();
|
|
1066
|
+
}
|
|
1067
|
+
};
|
|
1068
|
+
|
|
1056
1069
|
|
|
1057
1070
|
|
|
1058
1071
|
|
|
@@ -1464,8 +1477,12 @@ export class Capibara{
|
|
|
1464
1477
|
tableElements.redrawCorner(this.$elements.$corner, this.config, this.tabSelected);
|
|
1465
1478
|
}
|
|
1466
1479
|
|
|
1480
|
+
if(options.cornerRight){
|
|
1481
|
+
this.$elements.$cornerRight = tableElements.redrawCornerRight(this.$elements.$cornerRight, this.config, this.tabSelected);
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1467
1484
|
if(options.navRight){
|
|
1468
|
-
let {inputs, element, inputsWithReload, saveCancelBtns}
|
|
1485
|
+
let {inputs, element, inputsWithReload, saveCancelBtns} = tableElements.redrawNavRight(this.config, this.$elements.$navRight, this.selected , this.tabSelected);
|
|
1469
1486
|
this.$elements.$navRight = element;
|
|
1470
1487
|
this.$inputsNavRight = inputs;
|
|
1471
1488
|
this.$inputsWithReload = inputsWithReload;
|
|
@@ -327,6 +327,10 @@
|
|
|
327
327
|
&.to-right {
|
|
328
328
|
align-items: end;
|
|
329
329
|
}
|
|
330
|
+
|
|
331
|
+
&.to-left {
|
|
332
|
+
align-items: start;
|
|
333
|
+
}
|
|
330
334
|
|
|
331
335
|
.small-close {
|
|
332
336
|
position: absolute;
|
|
@@ -345,8 +349,8 @@
|
|
|
345
349
|
}
|
|
346
350
|
|
|
347
351
|
.text-subtitle {
|
|
348
|
-
text-align: center;
|
|
349
|
-
align-self: center;
|
|
352
|
+
// text-align: center;
|
|
353
|
+
// align-self: center;
|
|
350
354
|
}
|
|
351
355
|
|
|
352
356
|
.input-section-title {
|
|
@@ -1805,7 +1805,13 @@ export default {
|
|
|
1805
1805
|
tabSelected.inputs.forEach((i) => {
|
|
1806
1806
|
if (i.disabled) return;
|
|
1807
1807
|
|
|
1808
|
-
let $input = this.createInput(
|
|
1808
|
+
let $input = this.createInput(
|
|
1809
|
+
i,
|
|
1810
|
+
dataDay,
|
|
1811
|
+
daySelected,
|
|
1812
|
+
selected,
|
|
1813
|
+
tabSelected
|
|
1814
|
+
);
|
|
1809
1815
|
if ($input) {
|
|
1810
1816
|
$divContainer.appendChild($input);
|
|
1811
1817
|
$inputs.push($input);
|
|
@@ -1866,7 +1872,7 @@ export default {
|
|
|
1866
1872
|
});
|
|
1867
1873
|
}
|
|
1868
1874
|
|
|
1869
|
-
let saveCancelBtns = this.createNavRightbuttons();
|
|
1875
|
+
let saveCancelBtns = this.createNavRightbuttons(config);
|
|
1870
1876
|
$divContainer.appendChild(saveCancelBtns);
|
|
1871
1877
|
$navRight.innerHTML = "";
|
|
1872
1878
|
$navRight.appendChild($divContainer);
|
|
@@ -2114,13 +2120,16 @@ export default {
|
|
|
2114
2120
|
let viewBox = "0 0 24 24";
|
|
2115
2121
|
let icon = iconConfig.icon || null;
|
|
2116
2122
|
|
|
2117
|
-
if(iconConfig.varName){
|
|
2118
|
-
let iconVar = utils.getVarByPath(
|
|
2119
|
-
|
|
2123
|
+
if (iconConfig.varName) {
|
|
2124
|
+
let iconVar = utils.getVarByPath(
|
|
2125
|
+
data.values,
|
|
2126
|
+
iconConfig.varName
|
|
2127
|
+
);
|
|
2128
|
+
if (iconVar) {
|
|
2120
2129
|
icon = iconVar;
|
|
2121
2130
|
}
|
|
2122
2131
|
}
|
|
2123
|
-
|
|
2132
|
+
|
|
2124
2133
|
if (iconConfig.className) {
|
|
2125
2134
|
className = iconConfig.className;
|
|
2126
2135
|
}
|
|
@@ -2133,9 +2142,12 @@ export default {
|
|
|
2133
2142
|
}
|
|
2134
2143
|
}
|
|
2135
2144
|
|
|
2136
|
-
if(iconConfig.colorVarName){
|
|
2137
|
-
let colorVar = utils.getVarByPath(
|
|
2138
|
-
|
|
2145
|
+
if (iconConfig.colorVarName) {
|
|
2146
|
+
let colorVar = utils.getVarByPath(
|
|
2147
|
+
data.values,
|
|
2148
|
+
iconConfig.colorVarName
|
|
2149
|
+
);
|
|
2150
|
+
if (colorVar) {
|
|
2139
2151
|
if (utils.isHexColor(colorVar)) {
|
|
2140
2152
|
colorStyle = `--local-color: ${colorVar};`;
|
|
2141
2153
|
} else {
|
|
@@ -2153,8 +2165,6 @@ export default {
|
|
|
2153
2165
|
</svg>
|
|
2154
2166
|
</div>
|
|
2155
2167
|
`;
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
2168
|
});
|
|
2159
2169
|
}
|
|
2160
2170
|
|
|
@@ -2774,38 +2784,52 @@ export default {
|
|
|
2774
2784
|
*
|
|
2775
2785
|
* @return {Object} Elemento Dom del botones creados
|
|
2776
2786
|
*/
|
|
2777
|
-
createNavRightbuttons() {
|
|
2778
|
-
let saveBtn = this.createButton({
|
|
2779
|
-
label: "Guardar",
|
|
2780
|
-
className: "cap-btn-raised",
|
|
2781
|
-
});
|
|
2782
|
-
let cancelBtn = this.createButton({
|
|
2783
|
-
label: "Cancelar",
|
|
2784
|
-
className: "cap-btn-outline",
|
|
2785
|
-
});
|
|
2787
|
+
createNavRightbuttons(config) {
|
|
2786
2788
|
let btnSection = dom.createElementFromHTML(
|
|
2787
2789
|
`<div class="button-section"></div>`
|
|
2788
2790
|
);
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
+
if (
|
|
2792
|
+
config.timeline.nav.right &&
|
|
2793
|
+
config.timeline.nav.right.hideSaveButton != true
|
|
2794
|
+
) {
|
|
2795
|
+
let saveBtn = this.createButton({
|
|
2796
|
+
label: "Guardar",
|
|
2797
|
+
className: "cap-btn-raised",
|
|
2798
|
+
});
|
|
2791
2799
|
|
|
2792
|
-
|
|
2793
|
-
saveBtn.
|
|
2794
|
-
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
|
|
2799
|
-
|
|
2800
|
+
btnSection.appendChild(saveBtn);
|
|
2801
|
+
saveBtn.addEventListener("click", (e) => {
|
|
2802
|
+
saveBtn.dispatchEvent(
|
|
2803
|
+
new CustomEvent("saveMultiInput", {
|
|
2804
|
+
bubbles: true,
|
|
2805
|
+
cancelable: false,
|
|
2806
|
+
})
|
|
2807
|
+
);
|
|
2808
|
+
});
|
|
2809
|
+
}
|
|
2800
2810
|
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
|
|
2805
|
-
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2811
|
+
if (
|
|
2812
|
+
config.timeline.nav.right &&
|
|
2813
|
+
config.timeline.nav.right.hideCancelButton != true
|
|
2814
|
+
) {
|
|
2815
|
+
const cancelLabelButton =
|
|
2816
|
+
config.timeline.nav.right.cancelLabelButton || "Cancelar";
|
|
2817
|
+
let cancelBtn = this.createButton({
|
|
2818
|
+
label: cancelLabelButton,
|
|
2819
|
+
className: "cap-btn-outline",
|
|
2820
|
+
});
|
|
2821
|
+
|
|
2822
|
+
btnSection.appendChild(cancelBtn);
|
|
2823
|
+
|
|
2824
|
+
cancelBtn.addEventListener("click", (e) => {
|
|
2825
|
+
cancelBtn.dispatchEvent(
|
|
2826
|
+
new CustomEvent("cancelMultiInput", {
|
|
2827
|
+
bubbles: true,
|
|
2828
|
+
cancelable: false,
|
|
2829
|
+
})
|
|
2830
|
+
);
|
|
2831
|
+
});
|
|
2832
|
+
}
|
|
2809
2833
|
|
|
2810
2834
|
return btnSection;
|
|
2811
2835
|
},
|
|
@@ -2819,7 +2843,13 @@ export default {
|
|
|
2819
2843
|
* @param {Object[]} [selected = []] - array de objetos, de dias seleccionados
|
|
2820
2844
|
* @return {Object} Elemento Dom del input creado
|
|
2821
2845
|
*/
|
|
2822
|
-
createInput(
|
|
2846
|
+
createInput(
|
|
2847
|
+
props,
|
|
2848
|
+
dataDay = null,
|
|
2849
|
+
daySelected = null,
|
|
2850
|
+
selected = [],
|
|
2851
|
+
tabSelected
|
|
2852
|
+
) {
|
|
2823
2853
|
let r = null;
|
|
2824
2854
|
|
|
2825
2855
|
if (props.ignoreRender == true) return r;
|
|
@@ -2871,7 +2901,13 @@ export default {
|
|
|
2871
2901
|
r = this.createList(props, dataDay);
|
|
2872
2902
|
break;
|
|
2873
2903
|
case "data-list":
|
|
2874
|
-
r = this.createDataList(
|
|
2904
|
+
r = this.createDataList(
|
|
2905
|
+
props,
|
|
2906
|
+
dataDay,
|
|
2907
|
+
daySelected,
|
|
2908
|
+
selected,
|
|
2909
|
+
tabSelected
|
|
2910
|
+
);
|
|
2875
2911
|
break;
|
|
2876
2912
|
case "button":
|
|
2877
2913
|
r = this.createInputButton(props, dataDay);
|
|
@@ -2882,7 +2918,7 @@ export default {
|
|
|
2882
2918
|
case "time":
|
|
2883
2919
|
r = this.createInputTime(props, dataDay);
|
|
2884
2920
|
break;
|
|
2885
|
-
case "text":
|
|
2921
|
+
case "input-text":
|
|
2886
2922
|
default:
|
|
2887
2923
|
r = this.createInputText(props, dataDay);
|
|
2888
2924
|
}
|
|
@@ -2993,8 +3029,8 @@ export default {
|
|
|
2993
3029
|
label = props.formatter({ selected });
|
|
2994
3030
|
}
|
|
2995
3031
|
let $elem = dom.createElementFromHTML(`
|
|
2996
|
-
<div class="input-section ${
|
|
2997
|
-
props.
|
|
3032
|
+
<div class="input-section ${props.isHidden ? "hide " : ""} ${
|
|
3033
|
+
props.toLeft ? "to-left " : ""
|
|
2998
3034
|
} " input-key="${props.key || ""}">
|
|
2999
3035
|
<span class="${props.classNames || ""}">
|
|
3000
3036
|
${label}
|
|
@@ -3343,7 +3379,7 @@ export default {
|
|
|
3343
3379
|
createInputMessage(props, dataDay) {
|
|
3344
3380
|
let value = dataDay ? utils.getVarByPath(dataDay, props.varName) : null;
|
|
3345
3381
|
let elem = dom.createElementFromHTML(`
|
|
3346
|
-
<div class="input-section msj-input-container ${
|
|
3382
|
+
<div class="input-section to-left msj-input-container ${
|
|
3347
3383
|
props.isHidden ? "hide" : ""
|
|
3348
3384
|
} "
|
|
3349
3385
|
input-key="${props.key || ""}">
|
|
@@ -3412,13 +3448,15 @@ export default {
|
|
|
3412
3448
|
return elem;
|
|
3413
3449
|
},
|
|
3414
3450
|
|
|
3415
|
-
createDataList(props, dataDay, daySelected, selected) {
|
|
3451
|
+
createDataList(props, dataDay, daySelected, selected, tabSelected) {
|
|
3416
3452
|
let list = [];
|
|
3417
3453
|
if (dataDay && dataDay.values) {
|
|
3418
3454
|
list = utils.getVarByPath(dataDay, props.varName) || [];
|
|
3419
3455
|
}
|
|
3420
3456
|
|
|
3421
|
-
let searchInput =
|
|
3457
|
+
let searchInput = props.hideSearch
|
|
3458
|
+
? ""
|
|
3459
|
+
: ` <div class="search-input-container">
|
|
3422
3460
|
<input id="" type="text" name="" class="search-input" placeholder="buscar">
|
|
3423
3461
|
<button class="search-input-clear">
|
|
3424
3462
|
${icons.closeIcon}
|
|
@@ -3472,31 +3510,33 @@ export default {
|
|
|
3472
3510
|
$inputBox.appendChild($elItem);
|
|
3473
3511
|
});
|
|
3474
3512
|
|
|
3475
|
-
|
|
3476
|
-
$
|
|
3477
|
-
$searchInput.dispatchEvent(new Event("input", { bubbles: true }));
|
|
3478
|
-
});
|
|
3479
|
-
|
|
3480
|
-
$searchInput.addEventListener("keydown", (e) => {
|
|
3481
|
-
if (e.key === "Escape") {
|
|
3513
|
+
if ($searchInput) {
|
|
3514
|
+
$searchInputClear.addEventListener("click", (e) => {
|
|
3482
3515
|
$searchInput.value = "";
|
|
3483
3516
|
$searchInput.dispatchEvent(new Event("input", { bubbles: true }));
|
|
3484
|
-
}
|
|
3485
|
-
});
|
|
3517
|
+
});
|
|
3486
3518
|
|
|
3487
|
-
|
|
3488
|
-
|
|
3489
|
-
|
|
3490
|
-
|
|
3491
|
-
let label = $i.getAttribute("label");
|
|
3492
|
-
let search = $searchInput.value;
|
|
3493
|
-
if (label.toLowerCase().includes(search.toLowerCase())) {
|
|
3494
|
-
$i.classList.remove("hide");
|
|
3495
|
-
} else {
|
|
3496
|
-
$i.classList.add("hide");
|
|
3519
|
+
$searchInput.addEventListener("keydown", (e) => {
|
|
3520
|
+
if (e.key === "Escape") {
|
|
3521
|
+
$searchInput.value = "";
|
|
3522
|
+
$searchInput.dispatchEvent(new Event("input", { bubbles: true }));
|
|
3497
3523
|
}
|
|
3498
3524
|
});
|
|
3499
|
-
|
|
3525
|
+
|
|
3526
|
+
$searchInput.addEventListener("input", (e) => {
|
|
3527
|
+
let $inputs = [];
|
|
3528
|
+
$inputs = $el.querySelectorAll(".mini-input-section") || [];
|
|
3529
|
+
$inputs.forEach(($i) => {
|
|
3530
|
+
let label = $i.getAttribute("label");
|
|
3531
|
+
let search = $searchInput.value;
|
|
3532
|
+
if (label.toLowerCase().includes(search.toLowerCase())) {
|
|
3533
|
+
$i.classList.remove("hide");
|
|
3534
|
+
} else {
|
|
3535
|
+
$i.classList.add("hide");
|
|
3536
|
+
}
|
|
3537
|
+
});
|
|
3538
|
+
});
|
|
3539
|
+
}
|
|
3500
3540
|
|
|
3501
3541
|
if (props.editButton.onClick) {
|
|
3502
3542
|
let button = $el.querySelector("button.edit-btn");
|
|
@@ -3509,6 +3549,7 @@ export default {
|
|
|
3509
3549
|
daySelected,
|
|
3510
3550
|
selected,
|
|
3511
3551
|
$element: $el,
|
|
3552
|
+
tabSelected,
|
|
3512
3553
|
})
|
|
3513
3554
|
);
|
|
3514
3555
|
}
|
|
@@ -3521,6 +3562,7 @@ export default {
|
|
|
3521
3562
|
daySelected,
|
|
3522
3563
|
selected,
|
|
3523
3564
|
$element: $el,
|
|
3565
|
+
tabSelected,
|
|
3524
3566
|
});
|
|
3525
3567
|
});
|
|
3526
3568
|
});
|
|
@@ -4099,7 +4141,7 @@ export default {
|
|
|
4099
4141
|
return $container;
|
|
4100
4142
|
},
|
|
4101
4143
|
|
|
4102
|
-
createInputButton(props) {
|
|
4144
|
+
createInputButton(props, dataDay) {
|
|
4103
4145
|
let r = dom.createElementFromHTML(`
|
|
4104
4146
|
<div class="input-section ${props.isHidden ? "hide" : ""} " input-key="${
|
|
4105
4147
|
props.key || ""
|
|
@@ -4113,7 +4155,9 @@ export default {
|
|
|
4113
4155
|
</div>`);
|
|
4114
4156
|
|
|
4115
4157
|
let button = r.querySelector("button");
|
|
4116
|
-
button.addEventListener("click", (e) =>
|
|
4158
|
+
button.addEventListener("click", (e) =>
|
|
4159
|
+
props.onClick({ props, event: e, dataDay })
|
|
4160
|
+
);
|
|
4117
4161
|
|
|
4118
4162
|
return r;
|
|
4119
4163
|
},
|
package/src/util/utils.js
CHANGED
|
@@ -153,14 +153,14 @@ export default {
|
|
|
153
153
|
let position = pos.y;
|
|
154
154
|
config.data.forEach(d => {
|
|
155
155
|
if (d.isHidden) return;
|
|
156
|
-
if (actualPosition == position
|
|
156
|
+
if (actualPosition == position ) {
|
|
157
157
|
item = d;
|
|
158
158
|
}
|
|
159
159
|
actualPosition++;
|
|
160
160
|
if (!d.isClosed) {
|
|
161
161
|
d.children.forEach(c => {
|
|
162
162
|
if (c.isHidden) return;
|
|
163
|
-
if (actualPosition == position
|
|
163
|
+
if (actualPosition == position ) {
|
|
164
164
|
item = c;
|
|
165
165
|
}
|
|
166
166
|
actualPosition++;
|