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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "capibara",
3
- "version": "1.3.21",
3
+ "version": "1.3.23",
4
4
  "main": "dist/index.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -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
- this.$elements.$cornerRight = tableElements.redrawCornerRight(this.$elements.$cornerRight, this.config, this.tabSelected);
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} = tableElements.redrawNavRight(this.config, this.$elements.$navRight, this.selected , this.tabSelected);
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(i, dataDay, daySelected, selected);
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(data.values, iconConfig.varName);
2119
- if(iconVar){
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(data.values, iconConfig.colorVarName);
2138
- if(colorVar){
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
- btnSection.appendChild(saveBtn);
2790
- btnSection.appendChild(cancelBtn);
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
- saveBtn.addEventListener("click", (e) => {
2793
- saveBtn.dispatchEvent(
2794
- new CustomEvent("saveMultiInput", {
2795
- bubbles: true,
2796
- cancelable: false,
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
- cancelBtn.addEventListener("click", (e) => {
2802
- cancelBtn.dispatchEvent(
2803
- new CustomEvent("cancelMultiInput", {
2804
- bubbles: true,
2805
- cancelable: false,
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(props, dataDay = null, daySelected = null, selected = []) {
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(props, dataDay, daySelected, selected);
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.isHidden ? "hide" : ""
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 = ` <div class="search-input-container">
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
- $searchInputClear.addEventListener("click", (e) => {
3476
- $searchInput.value = "";
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
- $searchInput.addEventListener("input", (e) => {
3488
- let $inputs = [];
3489
- $inputs = $el.querySelectorAll(".mini-input-section") || [];
3490
- $inputs.forEach(($i) => {
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) => props.onClick({ props, event: 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 && d.selectable !== false) {
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 && c.selectable !== false) {
163
+ if (actualPosition == position ) {
164
164
  item = c;
165
165
  }
166
166
  actualPosition++;