@zeedhi/teknisa-components-common 1.40.0 → 1.44.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.
Files changed (31) hide show
  1. package/coverage/clover.xml +851 -749
  2. package/coverage/coverage-final.json +31 -30
  3. package/coverage/lcov-report/index.html +39 -25
  4. package/coverage/lcov.info +1566 -1353
  5. package/dist/tek-components-common.esm.js +281 -29
  6. package/dist/tek-components-common.umd.js +280 -27
  7. package/package.json +2 -2
  8. package/tests/unit/components/tek-grid/grid.spec.ts +446 -7
  9. package/tests/unit/components/tek-grid/layout_options.spec.ts +156 -2
  10. package/tests/unit/components/tek-iterable-component-render/iterable-component-render.spec.ts +9 -0
  11. package/tests/unit/components/tek-loading/Loading.spec.ts +30 -0
  12. package/tests/unit/components/tek-product-card/product-card.spec.ts +9 -0
  13. package/tests/unit/components/tree-grid/tree-grid.spec.ts +159 -2
  14. package/tests/unit/utils/grid-base/grid-controller.spec.ts +106 -3
  15. package/types/components/index.d.ts +2 -0
  16. package/types/components/tek-datasource/memory-datasource.d.ts +4 -2
  17. package/types/components/tek-grid/grid-column.d.ts +4 -1
  18. package/types/components/tek-grid/grid.d.ts +10 -0
  19. package/types/components/tek-grid/interfaces.d.ts +6 -3
  20. package/types/components/tek-grid/layout-options.d.ts +4 -1
  21. package/types/components/tek-iterable-component-render/interfaces.d.ts +3 -0
  22. package/types/components/tek-iterable-component-render/iterable-component-render.d.ts +12 -0
  23. package/types/components/tek-loading/interfaces.d.ts +6 -0
  24. package/types/components/tek-loading/loading.d.ts +24 -0
  25. package/types/components/tek-product-card/interfaces.d.ts +3 -0
  26. package/types/components/tek-product-card/product-card.d.ts +12 -0
  27. package/types/components/tek-tree-grid/interfaces.d.ts +3 -1
  28. package/types/components/tek-tree-grid/tree-grid.d.ts +6 -0
  29. package/types/utils/grid-base/grid-base.d.ts +42 -34
  30. package/types/utils/grid-base/grid-controller.d.ts +7 -3
  31. package/types/utils/index.d.ts +2 -2
@@ -417,6 +417,18 @@
417
417
  * Card width
418
418
  */
419
419
  this.width = '';
420
+ /**
421
+ * Sets the height for the component.
422
+ */
423
+ this.height = 'auto';
424
+ /**
425
+ * Sets the maximum height for the component.
426
+ */
427
+ this.maxHeight = 'none';
428
+ /**
429
+ * Sets the minimum height for the component.
430
+ */
431
+ this.minHeight = 'none';
420
432
  this.currencyFormatterFn = core.FormatterParserProvider.getFormatter('ZdCurrency');
421
433
  this.id = this.getInitValue('id', props.id, this.id);
422
434
  this.productName = this.getInitValue('productName', props.productName, this.productName);
@@ -428,6 +440,9 @@
428
440
  this.errorImagePath = this.getInitValue('errorImagePath', props.errorImagePath, this.errorImagePath);
429
441
  this.errorImageText = this.getInitValue('errorImageText', props.errorImageText, this.errorImageText);
430
442
  this.width = this.getInitValue('width', props.width, this.width);
443
+ this.height = this.getInitValue('height', props.height, this.height);
444
+ this.maxHeight = this.getInitValue('maxHeight', props.maxHeight, this.maxHeight);
445
+ this.minHeight = this.getInitValue('minHeight', props.minHeight, this.minHeight);
431
446
  this.createAccessors();
432
447
  }
433
448
  get productPriceFormat() {
@@ -480,6 +495,18 @@
480
495
  text: 'NO_RESULT',
481
496
  },
482
497
  ];
498
+ /**
499
+ * Sets the height for the component.
500
+ */
501
+ this.height = 'auto';
502
+ /**
503
+ * Sets the maximum height for the component.
504
+ */
505
+ this.maxHeight = 'none';
506
+ /**
507
+ * Sets the minimum height for the component.
508
+ */
509
+ this.minHeight = 'none';
483
510
  /**
484
511
  * Components that will be rendered in error case
485
512
  */
@@ -493,6 +520,9 @@
493
520
  this.errorSlot = props.errorSlot || this.errorSlot;
494
521
  this.noDataSlot = this.changeDefaultSlotNames(this.noDataSlot);
495
522
  this.noResultSlot = this.changeDefaultSlotNames(this.noResultSlot);
523
+ this.height = this.getInitValue('height', props.height, this.height);
524
+ this.maxHeight = this.getInitValue('maxHeight', props.maxHeight, this.maxHeight);
525
+ this.minHeight = this.getInitValue('minHeight', props.minHeight, this.minHeight);
496
526
  this.createAccessors();
497
527
  }
498
528
  addSlashes(value) {
@@ -555,6 +585,36 @@
555
585
  }
556
586
  }
557
587
 
588
+ // eslint-disable-next-line
589
+ const loading = 'data:image/gif;base64,R0lGODlhlgCWAPf/AC1oxPa+ADarUdmsFEB/m0yTcjiMhEafWjFova2SNDZotX10VsOfJDlosFZnge25BnJtXTukVWVmaFh1eIuOZ1x0ZEFopHpyWGFpcS5ow+q2CVNnhmVnZvW9AW5qYUyKXUJnofW+AKWNOV9mcS9owZuGQTporlCGXbWXLmNrazxnqeKyDoGDZVFniFZ6ZNSpGJ+IPoR4Ud+wEURnnmtpYklnlll5YbGUMcagIk5njmhnZWpoZGF0aWBmbkdnmbyaKUtnlEaBfWdmZTNou0WUW5WDRFtmeGZmZ82kHqecTXqIdzRouGJmbPC6BIB2VDxnrGNmakyHYPO8AkxnkUh0qmRpZl9wZVxndmRmaVhnffS9AqmPN09ni96vEUmQWzBowC1ow2FtZVR3gl5ndFGCYEVnnF1mdGR9i1dnf7qZK4l7TnRvXOK1FD6eV8ijIG6Cgl58lF1rfEBnpFVsi1pmeo5+Sk56dz9np5OCRjaqUi5pxNarFndwWmNqZm9sYFx7a098itGnG4d6T7ikPKKLO1Rmg+e1Cr2bKVhme0GbVkpmk5mWW5GBSM+nHLiYLPG7BIp8TUKZWUFsqWJnbltmd0hnmNqtFExtm1tsgaiOOIx9TNuuE6CKPWJmbcqjH1OJb8CdJjFovlpwb+u5CzioU1aFbjdos0qYXJOPXWFwczepUnBsX8qrKuW0DD5nqdmsFUl+kTtnrDdntNKuI+OzDVRnhYuEV52HPzNqvjltuVBqkJeERNirFnVvXKSMOjVsvDmLhEJxsTloss+sJTeqUdyzGkaeWreYLmBqdjmMhDyhVvC8B49/STinVVV+YVp/bEuScq6fRj5tr8CnNUV/lUNnoGZnZkCFgTaqUVeCYTuLgz2Ig02RcUySck+QcTxpr5qQUFCPXjZsullviFh4ZNaxH0KAmEGYXFJ4oFCNcEdsoUicWpmFQkRooEFvsHt5YDepUXBvYzyKhESXWkeeWjxutcWlK250bYp+UFCQcGZoaLyeLtitFaGSR0OYV2ZmZiH/C05FVFNDQVBFMi4wAwEAAAAh/wtYTVAgRGF0YVhNUDw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDcuMS1jMDAwIDc5LmRhYmFjYmIsIDIwMjEvMDQvMTQtMDA6Mzk6NDQgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMy4wIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEMEVGRUY5RjYzRjYxMUVDQkRFNUM0MjQ5M0FFRTY2RSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEMEVGRUZBMDYzRjYxMUVDQkRFNUM0MjQ5M0FFRTY2RSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQwRUZFRjlENjNGNjExRUNCREU1QzQyNDkzQUVFNjZFIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQwRUZFRjlFNjNGNjExRUNCREU1QzQyNDkzQUVFNjZFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkECQQA/wAsAAAAAJYAlgAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdSpKJkUItCtFhchFLlhxlqpXJkQXLRQmUHGzYgKiHUwlGqg3JAKBvhiHV6EiQyCSHAr59/SrIQVbiiBoKSCTOgEBFIbdJmZSRnLgzABIzGjs00sCz6QZGIErIgcB0YjAqzCAdIcy1aWGyG6JpbbtzKAcOsYDo3RkBGqM9ahPvbMruwiuhlvtOvVDCcOl9QyEieuQ69r5yjij/hGLie+IGUBZyQfxdgfOgDtibB56Qi/nOORT24H2/0tAn9yX2xGAHYWFKgH2ZgtlBQCAIAAKdBDUCZwGSMAZCRlB4Hwl0IISFcgi2ENQGDvYl4kH2lcgFQhOWWE1QDZZYA0I1lAiADwhlYaMJ4v3kg41lIFQGkAgVYqMwBPpUY4k4HrSkg/4d5ICNDSTZUw425ndQCzaueBAlYJR4R1B0yHffdl9qaB4JlCDUyRIlKhKUBHAiuIRoBUlQGoJVJuTdhtQBpYiDMyZEYogKIeLgE0N1okCAdyqEhQoBPrHgQRJYUCGaQqGhJnEk0KfQCEOYN8SFBO2whhNqxMAHDSPU/4kdGDVYGVQLZtpGgpYM0VGqdEN0ONAqmezRRADIStEFCvf8Kl07lw5ViLO2DVEIRCNQSpwKIwykAyEPICvuuMskIMlyJNSa1Ahl8FfcDN1GhEUtJnzh2RcmbLCgBwx0MO6/yIYwyzgKhOkZCa4IxtQILczwhAlPzNBCvBRJYMYGitSgyAZmWLkDAwCHjKwl8TjggysmmABCDpTYylVGCfgrcshu6PAySRc8MrPIWuxy80hp7DzzKz+H5EErQoscghNFfyRI0jP70rRHt0At8iFTd5SJ1SHjkDVHvnANsNdfa1SE2P+iULZGC2iBtrglrJ0RDZa8HYAUEMidESF2M/+gd0YeyID2A0z/jVEdOlsdQiaGawRD4kmjYHPjGAlRhAZCN5HADpRvdAEDkI+rRSBqdO7RBZm4McAKXSBxQwymi7QDDTQIEfvtuOeu++689+777yjpMDsNkwM/kQ6CoLCHIU1oYMkhjHBu/EMxBCJFyFp0gUfx0yOkAyfH7ixFGjR0n9AWbkPNQPnmF1TE9Yrf0D5BfiAtdhOCzC/QFna7oT8NXbCbFvgwvwXI7G23mB877IYsR8xPBAwMANnMtzUGTrB7JYjgD+YXgwgSYn4eWIEAL6A/FNjtBfr7Ry/CJTYpMCKF/yBE+qyGNRju4AcHFFogVgFDgdAABTNUWiP/8tbDgRRBcCLTQCakV8SBeKAEnqDFIzogBUO8QAREbOJB/HCBBVwAAtzTohjHSMYymvGMaMxKL4qwhRskoAQLOKMOGNGIR4RgXFKwBAw8MMY14AB+IevAHgpXxAsEMGkP0EQR13BIqD0gfzDEAdo24YcUQiKHUAvBFvQnBDfYzRBM7N4aWIi2ECiyfXWIYALmx4kIgmJ+Fezf/PjGQL+1jxkRlF/7ehG+UjJjfjpAgt00wL72MeKOaNOl/hqBSaGtIIvzuwAtuNaEOhQxBvYT2iPYocULvMCZp9TiDm7xiiAGIAQr2AIPy0gDJxDCEYdIQybUwMc02vOe+MynPvfJE89++vOfAA2oQAdK0IIa9KAzCQgAIfkECQQA/wAsAAAAAJYAlgAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdCnNElg0bHIyRcLFHrRoz2lVqYQZjJzq1WhSihMUplBYmQoEBwPeLqSk9Jl6phoCvYQBfXGU5IlFCFjkIMhgmsaTMlaV0GhzeDGDJBogScoTifJjEjLoPR8iRTBpxDdRGW5BofTiDD8YMsZShvflJJ4dGlvA2rOJ30Q2zhxuugVthpb3K+d6BndCM8OgAVFAHOqIwdgAkCi3/RJMcO5gpC7GY+M630tAjctjzlQUl4RHN8hFMUphDPvjLQZlRHnstJJSFf3yN4wFCWFwn3wxCAYEgAK4ktBuCcFiyiw4GZcGafEsY99MTE37RHEESrIdgLqNoccgOBUk4IR1ANTghGCMcxISD/hUTQABu0EBQfBMW+NOOEwJAyUGd8CjfLD+GcANBriSZA1BQOMleWwYhOaGPPz4iyEB3JMlFUMJMmEF9Bh2hon/1jPLjj0gMdCGCDgQ1w4SmJOQDgnqcocWcAWjBh0AtlJgjUA5MWENCdACaxKCEwiDQJF8gGAtZNcri3xdcHiQBifIFIyehATgyEAgIfiZULf75/7AQHZl+90USqP6Iw0BmePedCZwGJQGr3zUgYkJTfKicEo/kGsCuA3Gh7HAIADgUE1VGt8SiC0mgCHS8ZfDGqbmmQdARNWAXSp5G6TYtZyrs99AGQ/D2yyKUOsuJQaINpwCNSB3hgAkD8pWBLFxs19AINbhTK196BKNEOVqE4GyhFxx0hRwPH7ZEJcciJQEdU8hhggl3VIKGwhBtwUoSi1CQxDRsXExoIAqNwUU1T5igQhm1BMZVRBDI2UEISNs8pxR1DF0SDPkqPecPQjhNkg6OdCD1nI34YXVJO9xgsdIheOL11yYx0sXYubbiC4don+RBEW608kATDxgSCCEQxP/NEg18LHDBgn4XbvjhiCeu+OKMN+7441hBgIcjSLzQyCEwHAr5Rn7cYIizD4CS8eYXCUKL1A/cQnpFjDywdaFbwL36QzFo8PqPUpQw+0M7DHD7nBpovvtCt7D9+yHDL7TDC78T2gThyR/EhxTNE4pH9AjhUT2hU2JvkC/bz8mA9wZlEr6u5BcEw/kBIJ/+QGqwn8n7A61i+/YhxED/QAyEv0LV+/uHE6jXvA5YKoACcYTxthYIISHwHx5g3u1asYAHDgQCgXjdCipowYF4AAVNsJkUcCC8Dg7ECWkwBAEL9QAcaEJ2JizIDmKAh1vsQhDQi6EOd8jDHvrwh0CMGw3tLqAGZkBiATnsIR8SsIkQ4m4FP3ACAHWogy247mJSOMTZTLgKNyzQWV0YnQVp4IbfdaGEAUzAF5XmCRghcAErvJ0WdIfAQ4RvE1N8nx8+hz8nBFAQ7BNBANd3PvfRz3zngxb9RMC+8e2vCOxDQQAvEMfm7SKAO3hF+B6xCgRyInygeCANulA9DXAQgZBw4us6QAgTlqBZW5MSDB/ICD7a7AEimKUF+XCIK6LqEUjQnw/5wAkG7KELr3DDFvwYRIHo4JnNjKY0p0nNalrzmtjMpja3yc1uevOb4AynOMdJznKa85zoTKc618lOmQQEACH5BAkEAP8ALAAAAACWAJYAAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3VqzB6INGxxQknCxkwMgM6r54ELpyEUmdAq1KGSEiVMsDlQgyACgLwkFNUZMHFFmCJi+iEmYKEQ2ogQ61Ybw7ZthSDUjjZGOUXEYsWcACHJkbrhhyOfPGSz0gMhkBonTiWfYPYoGAezTIKA4BDL5NmJTghuOEObbM3CjiGwX9wxiNEIuvZcDkOaBYQ9T0hELWz10kqzsiMHk/1h4JRT4vnrOQFAoQc75viDcCq30vi8C7ggt1M8grp+OhA7UB0AGDgg1iXL1KZKQGV8ICIASuyAkwRMOPiHUBg4CIAwWCOWQIRWBIGTGawKSENxPM2RIghkIuefgL7MscBCGGW4AlASxZAgAGgg1kGEG04hwUA061gDUEcRlWAhC2GU4yCEHlaFjGUeaoGOBB1npoB7T4HCQDzr6EJSLAmZACUIgZPhLOV4a5GGG4wE1RYZLdPKcgxlQ8QgKB9HxIyJBGUFifXIkNIJ5AlLQQQkHMbGEg0s41xOFAmahUDUC5lKOFOsdBISDQAyFyKDgySEfQiOYdp4eqITAQEKO1v+ngJ1CSaBIZ9ktcWJCtZBanB5wLPOAEwo54GtxJGA5lASYZjcEHQ5tgEt2cLARwBYMcXEsbBlwcZSt23rWAIsP3UOFb3roQcEDATiyQ0OFqOrbEEsi9Zgrx4KxxBS6QaQDPqig84UeiGVQzxusaLFMAu86NMIMCHqGQBm72ktJDiCYYIIrPjgw20QX7MNKEougssg0bISgxQuQDNbCDE+Y8MQMLVTMlUMLbOHJJrR00cgNgghxs0w70LCD0EMnrfTSTDft9NNQRy311DrQ4IHRU5ckRAw3vNDKA4a8cggzDWftUQyNSBHA2mwHoMUmeCBtdkY6wMBu23gHIIUjNMz/nVEmauctOChl+z0RHoELLvgNhlPkRyuKR95EDI1LtEXkmLtROUQ0dIF55FL0sjnOHXwe+S2jN8SO6ZE7kjpDIrCueJuvJ5SJ7ILTXvtBJeCe9w+7JxSD73gTEjxCHtBC/NodyHj8QSgsH8ALzyPEx924S8FI9Qj5ooXvoMjNPUE7/BCC7C+sMj5CNDjyPeYhNNLp+gixo7ziD2zRN/0KeVACEq1QmxY08IJMzI9/DFkFHxZwAQj8B4EQjKAEJ0jBClrwggSBAB4ykYAtsOMCGByIDuqQtvOxTQuWuMX+KggBHCQubx3YA7EoeIFNsE4DLZMgBDwnuwdQLoIMIN4mvqqDQDW8D3chyAQCheAG6bWicNyDAPZ8F4Icrq8O0gtABxLAP05kMQCg4N/tsqg5+hHii6+iHyOyGALG0a8Xj5BeCJjBPyE0QnoaWOH68GBC37mxjnf0HS0OSL8L3I91TajDBAUBOdM9glEUXAAvPtcKRVqwbgMoHd5okQAiYpAGMRBBGkDxgy1AwpMhTKUqV8nKVrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjJXEhAAIfkEBQQA/wAsAAAAAJYAlgAACP8A/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdahOLkUItatHpdFEHsnGXql0aF0ffRQlmHGzYkGXE0ytllpAAwDfDEDlZJEjUh0laKABgwPAlUW+OW4k9ppj6whdxqCcbsCjFUoNy5c8AMsjpATGFJD2gP4OphwyihBZLUn9uYATppCeyUy+54hBZLsW5K+PC5FCCD+DBAXzZYBQL7uSfl4xhmCIX9M+44jA8Uul65S+Fivr/8P75ieaE1tQlJg+g3uOEhTKwBzDErlBKe+cD4KIwjn6+cygERWz6gSBYUCD8B4ACBxqUnoK5vGcQFwqSMB1QPQyhYAaIIDTJLwrqoR1Cz/03RVCIKMjXiQelgtp/egR4EBb5/edKUBSqWA1Cc7yonx6XIDSGigue59MURFqAUA4+zqeHOggZQeQSTACVA5Fy8Ngke0AiRMmUUABVCJE+IORiiDIaxASRDQQ1hmf/MXfQJOKE2NpBRyigYhlBSWCCggiQhqc6CrqX0HgKoiFUCwrOoBAy/2WQ5kFm1MieKUb+hEUD+iFgxkKXbAmdNBIeVIZ+GYQ3lBGHkZdBCwzp/yMNe+LcqVAnnLI3Q4NCFQJnchkowmtCGMx63S8jMmQGgdfdEaZRWTCbGwL8PaSPOqJWpockGEA0Qom5ZeBDpkV14oOGqYUCwqcRWROHOriAhoskmJTaEBZcKIBcZSQ8gcawR/WwQRkqmPBENVywS5EOGMQxji5zYIKBNRZB4UANd5hgggVTGAEwVyCHLPLIJJds8skop6zyyh554AQeJRQRAwQsk7RAGitoEcDOIRiCgxo61OwRDTc8svPRSGuBwxpCb7RGICEgLfXRtDjRNEYeBDL11juvcMHVFqEQNddbB7ID2BM5oTPZW3cAA9oSgcI22TIEDbdDq2gwN9chxP9wt0Nq7E32Fn83BIPgXB9SOEOZIL41Dosv5IvjUzMQuUJ4UC71DZcndIEUmh9dROcI7bBH6AE04QHpCJWAehqslz6A5oZ8HftBMTzguBa33J4QI7rv3cEWQviekBoyzK3BLcUbnxAEN2gwNtJNgLKA8w2tUoQjSLzQyCEw8IG9REI0P/756Kev/vrsjy8EDXa3b5AOF2TiSRcrdNHIDTGcLf8/fGCA0aamhUYIon1CKELwyCaFBMQPfTAY4Nw64Aj/nU8TTXBcB0SAPg+sQHMPsNr4Jhc6y2GPBrML3SNo5rwFrC107MBeEVC3MxRgTwQ0DIAJjdc4GkLOebfI4Q+JsBeD6WmOg87zgyFQ1wEROi8NqBvA+S6QQcppYXTnS0AHKOcGC54QB47bBNPS5wFQGJFrexDf+nZAiCVy7QEo8MP/epEJS2yRZytAwfX+RxCXQWJmfAykIAdJyEIa8pCITKQiF8nIRjrykZCMpCQnSclKWvKSmMykJjfJyU568pOgDKUoR5mRgAAAIfkEBQQA/wAsPwAcABcAFwAACJUA/wkc+E9IqgliEk5IRbAhQQ4TYJkjQLEirAkpHBIEVLFjR1gMHaai5rEkRXMhCcIyyRLlRpYwYQ1MBbOmGIEca7KkpiPFRJ0sGQKFOWHCUJZijB4tCUjp0o43n3rESFIqRYY5pVKz9o+m1QkDsx6VOTDFyqPUUgo0OzStxn9iTcLK+LYroKoVzYGsS1BfioNJMb4NCAAh+QQFBAD/ACw/ABwAFwAXAAAIpgD/CRz4T5+VP89KPfvDg6BDgvr+fCpAsSK0dM/6PCT4CVrFjxXTNXxoJR/IkxS7jRwYJh3Kl9xW/pv48mU6jf941Nz5TCDNnSi9WevDDWhNHjqNvlyo9GWpP01RPo0KsluppFQrZiyalWLDUl0LeBPIw2PWPwPBUk1XZWAfl029yfzXUmnMjX1KmbUZZqNAfTw+ca3Y7dMfa34JWgvDA+GfP303BgQAIfkEBQQA/wAsPwAcABcAFwAACK0A/wkc+M/av2wnEmarUIWgw4EcbJxad4DegYvGTmV7SNBKOGMXQ4o8cKoCxwqnRqq8SM/Gw5QrV9IzKfBIuJg4Tw20gbPnRg43e8Zc9y8MRaExK9iwiHRlNmdNZYbLxjSqyHBQrYqk96GC1pEbj36daS3o11Mc/lUA+XWjwHBVm+ocGAZm03U0CZ5i2xMvx38fcdI7ZeVvwQrhxLL04kyH4YFH/tnIRtlGYY4BAQAh+QQFBAD/ACw/ABwAFwAXAAAIogD/CRz4j0MFMl4SnrBBsCHBKmTawBNAkSIxZSfCOCSYqKJHj20YbozwsSRFVc4aWiFp0iQpkQL9tZypTKPAmTg/xMQ5sxmHf6R4zmQodOYHMkVbejmR1CQRpE0/erER9eOHMEGrUmQ4T6uACAKpaj0xkEjVNn0ItmlKyqEVZUVfbgxDhBjORBU2CuRgw1/WiqoS/Uurd+BPZyc+nHBW4afDgAAh+QQFBAD/ACxDAB0AEwAWAAAIOgD/CRxI8F+EgggTClSmsKHDhxAjSpyYsArFixgJEiOSsaNHidg+ihxJsNlFkwP7kCTYhozFhEcmBgQAIfkEBQQA/wAsPwAdABcAFgAACE0A/wkcKFAVQYJ9DipcyLChw4bKHjqcJ7Ghi4oYM0YomFHhxY4Eo4AkiG2kSYfkTv4TeVJASpUCX8Kc2XHjSVIyCYb5V5ImQw4VrWAMCAAh+QQFBAD/ACw/ABwAFwAXAAAIVQD/CRxIkCC5gggLEiuITVmUMAkjRjwosWLFCBYlWouUsaPHghw/DmwmkJRIgi5OFvygsqXLitiIpHz5jyTNmzhzdsRmU6fAPjhnFjT5r4rHmVEqBgQAIfkEBQQA/wAsPwAcABcAFwAACFAA/wkcSHBglH99CipcODBPBIQMBUaKSLGixYsFXRA8h7Gjx48gQ1o8KFKAyIHzTgrwcrLlwCMn9bmc+dHkyWYaFYb5l4diG4uRmrl0RpJiQAAh+QQFBAD/ACw/ABwAFwAXAAAITgD/CRz4r4rADwQTKkyoSqGyf2EWDjwnsaLFiwkfYtzIseNFih5DiuSIcOS/PCYHEkn5jwg5ljBjmowis6ZNk/r+gSTYkCOHfy4S5lQYEAAh+QQFBAD/ACw/ABwAFwAXAAAIQgD/CRz4T59ALwQTKlxIUADDhJEeSpyYkNTCCBQzatw40SDHjyBDihxJ8l+efy5KliQikoPKlxuxwfx4ciZDaxsDAgAh+QQFBAD/ACw/ABwAFwAXAAAIqgD/CRz474goO3aCIBRVhaDDgfomXNOWLJmBi8mu2enzcGCKaxdDirx4TVRHUdtGqrwIbILDFClXrtRmcmAQmTivpRAoCqdPO/843PQpUx6HFMCI4hTVU6lMOxOcrgSmMKnUkUGiXhVJtenWkHZSyPsa0uTQr9t4WtyaDKjAIFalXmso8ONVeTU9glRKs2OKIGtl6uwokIMouCOBXXNJmKC+FAcRTkjBoWNAACH5BAkEAP8ALCAAHABJAFUAAAj/AP8JHEiwoMGDCAdemVOpmg9dWSQknEixosWDEjZ8IwGgY8cMCnQxuUiy5MURkjJ4XOlRWByTMGMqXKKSpc0vtWTqvIhBgc2fHXFl2UkU4RELeoACVTCpqNOBaJQq1QPkqdMjkqQqxWW16KRQWoHqGdpVZ5ywQDPoKquTS020KzOoYytzylu4Hy3QjdniLl65e2HG8QtXbWCTk3DhjfvycEmkizuKO+K45NnIANZWLqku8jcom0tOaoAX15XQJscIQ4urMWrR7Qiv/DbmdUx9WSSFuhvq2wZ9tnUeweBAFxBdtcZQDs68ufPn0KNLn069uvXr2LNr3869u/fv4MOLLx9Pvrz58+jTq1/Pvr379/Djy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIZhcQACH5BAkEAP8ALAAAAACWAJYAAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1KkQIghjtwqOGjxCrNXXE2JLmkFmzP25oogE25ipfZ+Oe/ZHgQluXvW7I3WvWkZO7FZnQKdSikBEsD1fplXsMnJI3Z96w6JfG0YKKWCg5aFELUSenRxDJGZIBgGkSS2ZQashJLgol0r6AAWMawBcqLBKwjWjGxxIStTMgkINGgtIeIErXXm67EuKEC37EBeeO+XI9etC9gyihRijrwe+M/0B6RQF46yZ6IBRCKC6FIXponzctjo5DJq7mL19iv+iIJfoxZwIUB3ngCFrg/BLgfmMwhEV+C5q2xGpDYaFChMuVYVxBC5yFQnUYmqbChgnVEKJpDTwXVAsnntYfQZCgpUSLAGRQiEJmANdiDkJhIQyNAFhgUB1moVCPfCeaoNAMQC6hok90KNciAurBeMgP4OgBJAnjHYTFEEACgEZQOYQJxpgEdXiIEki2eONBlIQJQA1BMRkmjwQZ+MMZWgKJp0EbyClHUHLICURB7B0Ch5QtKoIQF3KqEBQIck5hUHR83vmonK4EZWKYGxxEiBI6tgiGAwihIecMQRUSJglmHP+0ii19tvhFlQb1UGqLLQTVA5g0NkBiQfF8U2uIkiJ0xBNb4vpTGUByodAUNGaAakIbtIkhCEONAGyIDRCYEBamtGjBEQpJYEKLocQ61AaMBvjFiwnRgUCICkzC0BXfLpjBn0MBEe95JNTikAP3LriEuww58F2ElQw7VAsJz7cEmg5dse58GcjhLEN0mKffFzlITNQYIDzMHAI+fNwQFlw0sKttTzhgMkOd1ACgdV/IQeFSZnDRzhMmPFHGBi5zd0ULQNQwRS1m3PxQJ7WUoULRIOQQNWBcd+3112CHjdMOC2iCBzNOeCA2SxfcIEMTIQQQwCOtHBKDDmubtEMCD8j/7fffjxyySt4jreLJ34j/LcNlhH/kARKJRy63DHw07tENcUueeAiN7GD5RgtIobnkWpTwuUaHjK55F1+dbpEfhqgueQgxuG6RILJrLoLtFcGQu+SH8E5RJr9HjoPwE4lQfOIMIC8RHssjjoLzEV0gevRy70I9RDvsgf3cg2//kO/YgyI+911Er4Fd5z8kSN+/a8FJ+xGx88jvN+BNP0R1tKL6A4TY30R6kQYNRK4JbviLACnCh1uA4gVd4AUORLCA1i3wghjMoAY3yMEOevCDn+MDDBiwBxlYwg1bWID+QHiQXvwAfoh7RAJZaBBmxG50jxCBBVlYgvvJrgP5o6EazGAoO/mxcAfpW94DGOdBTnzPfB7cAS++94jwcdB63wuA9jpYhCwGYHodVF4Wm9dB4mXxeB0k3/eC10HcZXF3HYTd97RQOw+mDntdAOECfFg8LbCDhZhbHhI8B8LHFY9yNPyHB9yQuy6wL5E72IIBJRc4KyZSIBdIgAweoYUAdOARhvhBDHZ4yYEI4QKQYEQdFkDIUrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJTagEBAAh+QQJBAD/ACwAAAAAlgCWAAAI/wD/CRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPnwV3QIihJgafHUCTMuxFCMerAVAHNEqwQKlVgjtgBIrKFeqeBH6uKvWA4mnXszj4iP1J49jZt1BxQFjb05dZuGfTIKWb88IevHD5MeObMwFgvDgI3/TQ6DDcV1UV03TiGG8JyTTxVIabAPPMEpvfovAsk13oszdIx9R0uqsI1TD58GodtQ7skZOy1Grh4AqWoKBOB0pC4c0lH1yMSLgIxUihFoXoMCEtwcEdBBkAaCexxMcYgpor2/9TEowEmAzZAZBosOF3RAmUZiwhoR1AhiEgEB1RPMJV+voAIgDEcv/sgINjSZQHBoAAguHKJBBB4QN9DNaXQTWd8IXIEhV2eMd0/zix1WOo4ALGgh3Wt8QVDvVgQooMKsCiWEYMAWOFd7hXxwtvbQIOLjcyKEsPDDHxYpAqjnAVFsIgySAQAwmCxFn2BKOHk/WBsJAEM2BZnysEJjWFl/WFYsZAEGzBI1SbvHElmRkgohAiFJK5gVJMcEimdmUUtAoeCYCyDy7/eSlHmAbdsad2Dbj3kwOLajcEogRtECkACIBoUA+hRJoBJUlVcikAMxrU5aV0IOQAiovmkJSilxb/gpAKo955UA6j9glULKNygdCRkfp6UA2jagkUrZe2gJAro9aCkCKjzpBUNaNmgVAZoxqBUAujQgkUF5eSoGlBlkY6xLgEXVHnng4kNcK6XqqQEBRfRNpOQhKYEukSEAJ1hByLZuDsQTSsAkTA2iaE66I+WHVFvWQ+gSgNzBwigxRSsEHFnromxESTZA5BpFVTFBrkEKX+A8keWgTgssvT5OKlCRkuhAjETpJgq1US+IBlKGgMpEMmj7xsdADRiONkA0o2tAG8KWYwBV1H5AC1kAn/I8QNIRx9NCvo3JgBCOguhIaeMCKwM12UyIEzgEsAUbNAJUjhtdejJIEOkACG/3JHFvtF1IMPCHSIAAhNKyaBGTmAEIsJKpRRyNwCQaDB3V6HEMIyw0RzRg1TFJI4RZNsMMMTJjzRDhej34ZQApjH7jISrrvkgQyyx66FWrWv5EQHuccOQ+8rlRB87GkQr5IIx2OemPIoMd+8189Db5Lx0x+dvPUmOdF19i8Pz31JHqwAvstaXDC+STecH0Ag65tkOfhSaBK/SbfYPb0j95ukAwotOx4SPNA/k+wgAQGMXQjcQMACnoQ13/MaLWCgAwemxAOMYMAKNPCAB7QCCTBYhQVbsoNeXIAPDRyhClfIwha68IUwjKEMZ6gTHTjhFjdIAwoIIQga0NAjO2DHHv+KZjQpyEAEYflhRvjQCODFrguCUOJFnECL4zUBD1KkCB/M17wHQCKLERGCG8AnAxGC0SF1iOD0OnNGhuigEe7TgA/bqJA1NMF9IbANHRPCDPe5jI17PAgh/BgAUAQSIZkgpBsOKUhCGpKRBemjHwEJSYHYEY96rKRAdOAJ9xliL5oUSBrPR8lQ/mOM2etCEk0pED7grotqYGVBnMDF3DWBEbI0SC+Q4ETMWSIGuTzIDooQiDsWsQuESGEwDaKDBZQgASi4AQxiMMdlWvOa2MymNrfJzW5685vgDKc4x0nOcprznOhMpzrXyc52uvOd8IynPOdJz3ra8574zKc+98kSz376858ADahAB0rQghq0fwEBACH5BAkEAP8ALAAAAACWAJYAAAj/AP8JHEiwoMGDCBMqXEgjTYcAECNKDBAiEISFGDNq3Mixo0eOO0BNHCmR38WPKFOqXMnynwgtJGMGYKCjpc2bOFfyeSAzphRGOYMKHXrwWE+Ze4gqXWrTA62jMTssYEq1KscYIaDGJGS1q9eDt7TGPPS17NdMYkniMMu2qq+0I9e2nUuUHdyJx+jqDboA5l2IJfYKtklj098AUtYMXrwS7V83jCOj9NDq7oMYkjN3ZPQobYcEmkNvFCFFa4hDNESrXijkVpOjWlDsWE1b4QJPpUeG2FOntu+EOpzcCETLUCtejiCl/s084Q4Ps5tLn069uvXr2LNr3869u/fvqrEY/ynUohCdTgOF0KjJUQKdHGWqzZiSBcpKCWYcbNiQZQT3K2UsQQIABGYwhAUsNFJcKy+goMZyCWHBhSkDEljgElOg59EkQFBoIRihPLEBFtdhUcMXFqYIgB5fKMGGRFq8oElCY5ig4o0KZNFeC0vcmKIJRlTXQyw+3kjFLBNpcUN0BNExRJEqkrCBRliUAWWKX9QyHRQ2XpkiFcVMdBqT/4zRo5cWfoEGRkf4AAaaBH7hQHMS+ABnimcsM1EHWwwkgQp3WqjAJAttkEGgACzh3290VIhoNCM14YRAtSBqoSIKYXEmou0wJ4elBKKj50RrSfAEqAAMQSJCXKCawaK09f+AAKq4sDJSYiOgCGoGcx5kKqoA5OAbGm+iughJJRQCLABAIMREKMDe4VurqJKgBEnH5LBsNQhdsawpq642xbJvqAXEshYghMiyS9hH27jAXhuXtsB2epARyyoQrmqVAksBSYc4sOwUCPVwKKomHFHbFY4imsEgJBEyArS76ngQFgoA64NvEjSAajAv7rnAEa6gusS+BVmJqsW1URtoBnrIOxEvAqGBKsEJmXEwoqYo7BsUHiPqTsgSSYGHQEd8imgDTCw0g6W8NmeErnDiAulINA00ScZ3IkAHRpOYgugMPjNXSMNQfrHIQxMNcNJAV3DtZShrZnTFpl7K4a50WeD/faMe9SSR1UQvvE1QD3IUW6QJlHA0QpdQZuCDBNb14MOTN+aiRDkjPXADhAZJ4MATFFtIQgMtoJwRFjkooLjpT6BBOXY9bFCGCiY8UQ0XtrzQhBRaSPFIFwlckBF+hUxRAxAbXDE7SlA4UIkrJpggxxRGPA+eQB4sIIgThm8v/vjkl2/++einr/767LeP0hqacJIJIYxcwJ77XQkhCA4aTNREIEUgE/6U4gdQ+IUkFZnKAJVygQFoRQNqWOBQIMCPtBhiUhLMySHuwg8PZPAmgmBbWkIggg+2RAg4OAwt7mdClECAJ38JQQRbmBJNHAYifaIhSjhxwwCAQococcxh0CADRI8QoocMKKJHGHHDENxAiR3hQ2diCBQobmQHgTjMAzxoxY3gYXBweWIXN6KDLMKFFr0YI0cWYIi0POJoauSIGvoHFSnAII4eccIrwEgSWlQRjx3xgC9WcECIdEADKOADIFNCA0hsARQ4YMANGOGHRVrykpjMpCY3yclOevKToAylKEdJylKa8pSoTKUqV8nKVrrylbCMpSxnScta2vKWuMylLnfJy1768pfADKYwh0nMYhrzmMhMpjKXycxmOvOZ0IymNKdJzWpa85rkCwgAIfkECQQA/wAsAAAAAJYAlgAACP8A/wkcSLCgwYMIEypcSFCHExg3fqDwJYgGw4sYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnT5Q0+KhhpOmCh59IWfZKsElKgKdaVhxakLQqyR1bmjzdylXKoVVWw3Zc5SYE17NbN10Qy/YiDTdo4z7twqetXYQ3zMqNi2TH3b8CFzzaK1dLCcB/DxHeuwmxXT+GFssN4cQxW0GS94qwLBZGZrmHOIfN9DkuDtFWRZRGywB11SKrz6JwnfSC09hP2dFGuoMf7gCPwO7+yek3qOFIaXSJ/YAq8p9qtH7uQOh5UnbS944aNgiVAzpMQmL/QZSjTLUyUxBhCSnhioMNGxD14MwoMlots5QEwwWgf4YhINAhAUdQ5KBABv0lmIECU4TH0Qg1KECCggioUIhlfBySXQijUPBLgiD2R8IMDmJkRAMhpigMHRpJwAUCKSYIhmhrwMDAC8OgE2OKpoyBERow7ghiKA5ghEU1QiZI2yTfgJEkiApMwhAlQT7ZXyhGMCQBkla6dgQIVoYoxxEKYWFCmCA2AMVCXDjZJWpoIIhmgkUmxMWcIOag0CRVPumaCngmGMuAB0kgTKD9ybIeQorMidoIEyJKgo8HGRFpoBmweBAWKKKJWi2IJtgCQi2E2p+eB43whaOiAWEqAJUg/1TDqz4ghAieqPnw6gwI6Woqrwc5gCtna4zzahmy0ooQGsMitkYaTSShh6lTkPoqFwhdIWeYjjHTSgAhDLNqqFkgZMaleJKQ5UFMLMHqX7tkpwUVoS5RYkFHnIloA4seBKanfwnywFmLTBtoDQptEOqoCSHi5pt2KYfWKDriaW+ZgOIZS78HHSEHwHZ5hlYI04gzJwkXLjSCu2gOQemeLPtp1w57TBbNFwYnmQGqDBkRc5JDlHsRHUNAzNYFWhA2SDBPIpAyRiO48uQTZmhkhr5C3oWHZGxQkEvOCSIwwwgcYVGICeMmSIIJG3Bs5BRLPKy2K3f5IlkHHbARjRJnwP9xhhIUkP3REWNsoEgNimxgBqEeMeGAD66YYAIIOVzBOFukxYZ3AKdZp5PIv4XmeU6Y/RZAJqPntIoGv4UQQ+o5KYZbF7DnJFhshtWe0w2xNeKX7jfRgERpMtQFPE5k6UVYF84djxMNCQwslxSgQOA8TxfcIIPyARhyyOvX+7QDH5rgwcwCFoWv/vrst+/++/DHL//89Ndv//3456///vz37///AAygAAdIwAIa8IAITKACF8jABjrwgRCMoAQnSMEKWvCCGMygBjfIwQ568IMgDKEIR0jCEprwhChMoQpXyMIWuvCFMIyhDGdIwxra8IY4zKEOd8jDHvrwh0AMohAMh0jEIhrxiEjcSEAAACH5BAkEAP8ALAAAAACWAJYAAAj/AP8JHEiwoMGDCBMqREgogMOHECNKZLCwosWLGDNq3LiQkcSPIG9wHEmypMmSfB6BXOkwBKOTMGPKhKkjEMuVD2jM3Mmzp0I8IW5+FOmzqNGdQmwKhUhrzdGnUEsuaLXU4aOXUbNqvSjI0FIpt7aKHYtwwZ6gK2kxI8u27T8PhLpIidih1Q2nbvOOpSEo0yEGoBIw86O3sOHDiBMrXsy4sePHkCNLnky5suXLJz1A8CMEs+eBO9Q4GmBIg6EuoBh5+Gw5RiAtIDcVYS1Zh6+5LDsc0km7sZAEsJfiWN17cRHcS0MQLY7Yj9eqVgUxR5ygA/SHnqYbptHl+kMpfLTr/11g3bvDsOLdsjP/0FHFTnRqtShECYtJKGimzKhWJocRCcyJwJ5DOCQkARpyIJABAAySsEQZZnDUgyJLLMhggw20YB9tmQwYQIEH9SCHhReWGEoNG16ExhIltggAGE+MQFsJHqZxkBEsuujiE51c1AIJOrq4hBGsOYGWeZwYZEaOQbaoAhMVFQJkky0uIaNnHqzAnhYLFCSBCVTqWMlCPTAZ5oV3AOjZDey9YBAXZ7pIAiUK+RBni2A48NkaD3gnRR0FYaHAnS1WkxAUoRBaoitHfMZJcFUdokNBiChqopoGFWLphV/08JkOP0D3AmEFKbLphXQgVMmpDKLB2g43QP8KUgieEFcQCKwC0AJCcuTKBW064NFFeRIZIgJvBrmSaw4IKcsqs715wI4bGkhh7QOB+IIXr8tyy+qv0+nQywJ87GCRnazqeVANuWaRXkYbsAqGpwc5wGooPb57UQ+JbmpCQlggcKocmOpbUTubgrFrQqZamgEiBmM0Qr+EmpDiQUwMqigIEWfEBYlnIkDkQlkIfKcw9HZs0RE1gBEnCepW5MAXccoyhsoZScAFxUEq4C5GRjRAZQYW5ItzRlfIwfOFQ9QwyUZQcNHAlBeGooIDBR+NkQRjcAHCEyaoUMYGKXMkwRUtAFHDFIVcqfXbcMct99x012333XjnrffefPdz7fffgAcu+OCEF2744YgnrvjijDfu+OOQRy755JRXbvnlmGeu+eacd+7556CHLvropJdu+umop6766qy37vrrsMcu++y012777bjnrvvuvPfu++/ABy/88MQXb/zxyCev/PLMN+/889BHL/301FdvPWMBAQAh+QQJBAD/ACwAAAAAlgCWAAAI/wD/CRxIsKDBgwgTKlwIIVCAhxAjQlyxYKHFixgzatzIUaOHFxJDRmxVsaPJkyhTqvznKITIlwEC0VhJs6bNlE6kwHzZAcbNn0CDHmSwE6YMIUKTKl25SkPRlyEELZ1KVaOapzAzVd3K9SAMrC8PdR3bNRNYkTjIqqXq62xIBmvjJsXjVuINuXh/8tFZ9yGevIBp7gDZt4mHwIhT3nJZ90fixyZ3DKirgQ/kyxudOAUrhR3mzxkZPcCqZYsO0KgtCqJV9MGt1LAXerjRSuSDQxdi61YIAc8xJC8a/bhlebfx48iTK1/OvLnz59CjS59Ovbp1uZ3oFGpRyAiWlFCuB/+VgEgOggwA0pNYUoZSx06Kloj/2QME+vT48X/x8T1jFgXpzWeTGUvkZ2B+sfSA0QYk4CcgTQQeKGF6sTBhERoNOvhgSlioMOGHZSzUA4D5bZhSC2B8OGEGRihUw4EmoiSLih/KIQFCUAwBY4wdGUHjhwh0gpAD95XII0c5/PghGggpIuGRHM2g5IQ5IATCk1BqZMGUEk6BkBxYZonRlVwa6OVB1YQppkUvlpnfBggBoeaaChXiJn4ZmIEQGkVqSOdCUHxxJwAN9GcQFgUa+OdFZQzKhUJT7LioQiPoWKYwNybEhDCKTrpQC33SiAAdFtGBgJGeJnREpEqSUAtGaISr4meqCbVwqopLZKERJSYESOtCZoAg64FD+KDgRli00MCvF43ARTVPmKBCGRsca1KmzGar7bbcduvtt+CGK+645JZr7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySinrPLKLLfs8sswxyzzzDTXbPPN3gYEACH5BAkEAP8ALAAAAACWAJYAAAj/AP8JHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzps2bOHPq3Mmzp8+fQIMKHUq0qNGjSJMqXcq0qdOnUKNKnUq1qtWrWLNq3cr155ExDjZsyDKiK8weU4R9AcAWTCgTLcyulFBrCdu7eAHITSmhEpi8gPeirJEBcGDBJR0UNpwXMUksChgfdhxyg+TJlD/eudw480cmdjnf9fxxDAnRo0l3vII6teqNZhajfs1xBILWemlrlNAAt+6NNXz/zjji9OzhGSu1Rp6RSW/RzDOaicw5esZJrqpbx4iFiynZd0mYgtiuEQuaSndMmJAzhY4E8vDjy59Pv779+/jz69/Pv7///wAGKOCABBZo4IEIJqjgggw26OCDEEYo4YQUVmjhhRhmqOGGHHbo4YcghijiiCSWaOKJKKao4oostujiizDGKOOMNNZo44045qjjjjz26OOPQAYp5JBEFmnkkUgmqSRVAQEAIfkEBQQA/wAsAAAAAJYAlgAACPEA/wkcSLCgwYMIEypcyLChw4cQI0qcSLGixYsYM2rcyLGjx48gQ4ocSbKkyZMoU6pcybKly5cwY8qcSbOmzZs4c+rcybOnz59AgwodSrSo0aNIkypdyrSp06dQo0qdSrWq1atYs2rdyrWr169gw4odS7as2bNo06pdy7at27dw48qdS7eu3bt48+rdy7ev37+AAwseTLiw4cOIEytezLix48eQI0ueTLmy5cuYM2vezLmz58+gQ4seTbq06dOoU6tezbq169ewY8ueTbu27du4c+vezbu379/AgwsfTry48ePIkytfzry58+fQo0ufbjggACH5BAUEAP8ALAAAAAABAAEAAAgEAP8FBAA7';
590
+ /**
591
+ * Teknisa component
592
+ */
593
+ class Loading extends common.ComponentRender {
594
+ /**
595
+ * Creates a new instance of TekLoading
596
+ * @param props Image Link props
597
+ */
598
+ constructor(props) {
599
+ super(props);
600
+ /**
601
+ * text to show in Loader Overlay
602
+ */
603
+ this.text = '';
604
+ /**
605
+ * zIndex value.
606
+ */
607
+ this.zIndex = '999';
608
+ /**
609
+ * loading path.
610
+ */
611
+ this.image = loading;
612
+ this.text = this.getInitValue('text', props.text, this.text);
613
+ this.zIndex = this.getInitValue('zIndex', props.zIndex, this.zIndex);
614
+ this.image = this.getInitValue('image', props.image, this.image);
615
+ }
616
+ }
617
+
558
618
  /**
559
619
  * Notifications component is used to show notifications
560
620
  */
@@ -685,6 +745,25 @@
685
745
  class GridBase {
686
746
  constructor(grid) {
687
747
  this.exportConfigButtons = [];
748
+ this.filterFormInputs = {};
749
+ this.atoms = {
750
+ TITLE: '_gridTitle',
751
+ ADD_BUTTON: '_addButton',
752
+ DELETE_BUTTON: '_deleteButton',
753
+ REFRESH_BUTTON: '_refreshButton',
754
+ COLUMNS_BUTTON: '_columnsButton',
755
+ LAYOUT_BUTTON: '_layout_options',
756
+ EXPORT_BUTTON: '_exportButton',
757
+ ACTIONS_BUTTON: '_actionsButton',
758
+ SAVE_BUTTON: '_saveButton',
759
+ CANCEL_BUTTON: '_cancelButton',
760
+ SEARCH: '_gridSearch',
761
+ FILTER_BUTTON: '_filterButton',
762
+ FILTER_MODAL: '-filter-modal',
763
+ FILTER_FORM: '-filter-form',
764
+ EXPORT_DROPDOWN: '_export_dropdown',
765
+ ACTIONS_DROPDOWN: '_actions_dropdown',
766
+ };
688
767
  this.grid = grid;
689
768
  this.exportConfigButtons = this.getExportConfigButtons();
690
769
  }
@@ -767,7 +846,7 @@
767
846
  component: 'ZdDivider',
768
847
  cssClass: 'toolbar-divider',
769
848
  vertical: true,
770
- isVisible: `{{GridController_${this.grid.componentId}.showFirstDivider}}`,
849
+ isVisible: `{{GridController_${this.grid.componentId}.showDivider1}}`,
771
850
  },
772
851
  {
773
852
  name: `${this.grid.name}_refresh_tooltip`,
@@ -780,7 +859,7 @@
780
859
  component: 'ZdButton',
781
860
  icon: true,
782
861
  iconName: 'refresh',
783
- isVisible: this.grid.showReload,
862
+ isVisible: `{{GridController_${this.grid.componentId}.showReloadButton}}`,
784
863
  events: {
785
864
  click: this.reloadGrid.bind(this),
786
865
  },
@@ -792,7 +871,7 @@
792
871
  component: 'ZdDivider',
793
872
  cssClass: 'toolbar-divider',
794
873
  vertical: true,
795
- isVisible: `{{GridController_${this.grid.componentId}.showLayoutOptions}`,
874
+ isVisible: `{{GridController_${this.grid.componentId}.showDivider2}}`,
796
875
  },
797
876
  {
798
877
  name: `${this.grid.name}_columns_button_tooltip`,
@@ -813,7 +892,7 @@
813
892
  {
814
893
  name: `${this.grid.name}_layout_options`,
815
894
  component: 'TekGridLayoutOptions',
816
- isVisible: `{{GridController_${this.grid.componentId}.showLayoutOptions}}`,
895
+ isVisible: `{{GridController_${this.grid.componentId}.showLayoutOptionsButton}}`,
817
896
  },
818
897
  {
819
898
  name: `${this.grid.name}_dividerActions`,
@@ -855,6 +934,7 @@
855
934
  component: 'ZdDivider',
856
935
  cssClass: 'toolbar-divider',
857
936
  vertical: true,
937
+ isVisible: `{{GridController_${this.grid.componentId}.showDivider3}}`,
858
938
  },
859
939
  ],
860
940
  },
@@ -883,6 +963,7 @@
883
963
  {
884
964
  name: `${this.grid.name}_gridSearch`,
885
965
  component: 'ZdSearch',
966
+ isVisible: `{{GridController_${this.grid.componentId}.showSearchInput}}`,
886
967
  },
887
968
  {
888
969
  name: `${this.grid.name}_filter_tooltip`,
@@ -906,17 +987,17 @@
906
987
  }
907
988
  addButtonClick({ event }) {
908
989
  if (this.grid.events.addClick) {
909
- this.grid.events.addClick({ component: this, event });
990
+ this.grid.events.addClick({ component: this.grid, event });
910
991
  }
911
992
  }
912
993
  deleteButtonClick({ event }) {
913
994
  if (this.grid.events.beforeDelete) {
914
- this.grid.events.beforeDelete({ component: this, event });
995
+ this.grid.events.beforeDelete({ component: this.grid, event });
915
996
  }
916
997
  if (!event.defaultPrevented) {
917
998
  this.grid.deleteRows();
918
999
  if (this.grid.events.afterDelete) {
919
- this.grid.events.afterDelete({ component: this });
1000
+ this.grid.events.afterDelete({ component: this.grid });
920
1001
  }
921
1002
  }
922
1003
  }
@@ -925,29 +1006,29 @@
925
1006
  }
926
1007
  saveChanges({ event }) {
927
1008
  if (this.grid.events.beforeSave) {
928
- this.grid.events.beforeSave({ component: this, event });
1009
+ this.grid.events.beforeSave({ component: this.grid, event });
929
1010
  }
930
1011
  if (!event.defaultPrevented) {
931
1012
  this.grid.saveEditedRows();
932
1013
  if (this.grid.events.afterSave) {
933
- this.grid.events.afterSave({ component: this });
1014
+ this.grid.events.afterSave({ component: this.grid });
934
1015
  }
935
1016
  }
936
1017
  }
937
1018
  cancelChanges({ event }) {
938
1019
  if (this.grid.events.beforeCancel) {
939
- this.grid.events.beforeCancel({ component: this, event });
1020
+ this.grid.events.beforeCancel({ component: this.grid, event });
940
1021
  }
941
1022
  if (!event.defaultPrevented) {
942
1023
  this.grid.cancelEditedRows();
943
1024
  if (this.grid.events.afterCancel) {
944
- this.grid.events.afterCancel({ component: this });
1025
+ this.grid.events.afterCancel({ component: this.grid });
945
1026
  }
946
1027
  }
947
1028
  }
948
1029
  filterClick({ event }) {
949
1030
  if (this.grid.events.filterClick) {
950
- this.grid.events.filterClick({ event, component: this });
1031
+ this.grid.events.filterClick({ event, component: this.grid });
951
1032
  }
952
1033
  if (!event.defaultPrevented) {
953
1034
  this.createFilterFromColumns();
@@ -996,6 +1077,17 @@
996
1077
  component: 'ZdFooter',
997
1078
  color: 'transparent',
998
1079
  padless: true,
1080
+ leftSlot: [
1081
+ {
1082
+ name: `${this.grid.name}-filter-clearButton`,
1083
+ component: 'ZdButton',
1084
+ label: 'CLEAR',
1085
+ outline: true,
1086
+ events: {
1087
+ click: this.clearFilter.bind(this),
1088
+ },
1089
+ },
1090
+ ],
999
1091
  rightSlot: [
1000
1092
  {
1001
1093
  name: `${this.grid.name}-filter-cancelButton`,
@@ -1025,12 +1117,18 @@
1025
1117
  hideFilterModal() {
1026
1118
  this.filterModal.hide();
1027
1119
  }
1120
+ sortFilterIndex(col1, col2) {
1121
+ const index1 = col1.filterIndex !== undefined ? col1.filterIndex : Number.MAX_SAFE_INTEGER;
1122
+ const index2 = col2.filterIndex !== undefined ? col2.filterIndex : Number.MAX_SAFE_INTEGER;
1123
+ return index1 - index2;
1124
+ }
1028
1125
  getFilterModalComponents() {
1029
1126
  const filterColumns = [];
1030
1127
  let columnComponentName;
1031
- this.grid.columns.forEach((column) => {
1128
+ [...this.grid.columns].sort(this.sortFilterIndex).forEach((column) => {
1032
1129
  const filterProps = Array.isArray(column.filterProps) ? column.filterProps : [column.filterProps];
1033
1130
  if (column.filterable && filterProps && filterProps.length > 0) {
1131
+ this.filterFormInputs[column.name] = [];
1034
1132
  filterProps.forEach((filterItem, index) => {
1035
1133
  const { datasource } = this.grid;
1036
1134
  if (datasource instanceof TekRestDatasource || datasource instanceof TekMemoryDatasource) {
@@ -1041,6 +1139,7 @@
1041
1139
  else {
1042
1140
  columnComponentName = `${this.grid.name}-filter-AND-CONTAINS-${column.name}-${index}`;
1043
1141
  }
1142
+ this.filterFormInputs[column.name].push(columnComponentName);
1044
1143
  let newColumnComponent = Object.assign(Object.assign(Object.assign({ label: column.label }, column.componentProps), filterItem), { name: columnComponentName });
1045
1144
  if (filterItem.helperOptions) {
1046
1145
  newColumnComponent = this.getHelperValueComponent(newColumnComponent, filterItem.helperOptions, column);
@@ -1210,6 +1309,12 @@
1210
1309
  this.grid.changeLayout(event);
1211
1310
  }
1212
1311
  }
1312
+ clearFilter() {
1313
+ const filterForm = core.Metadata.getInstance(`${this.grid.name}-filter-form`);
1314
+ Object.keys(filterForm.value).forEach((item) => {
1315
+ filterForm.value[item] = null;
1316
+ });
1317
+ }
1213
1318
  getFilterRelationsDatasource() {
1214
1319
  return core.DatasourceFactory.factory({
1215
1320
  data: this.getFilterOptionsData('relations'),
@@ -1260,6 +1365,17 @@
1260
1365
  return datasource.setSearch(search);
1261
1366
  });
1262
1367
  }
1368
+ getAtomInstance(key) {
1369
+ return core.Metadata.getInstance(`${this.grid.name}${this.atoms[key]}`);
1370
+ }
1371
+ getFilterInputs(columnName) {
1372
+ const mapper = (name) => core.Metadata.getInstance(name);
1373
+ if (columnName) {
1374
+ return this.filterFormInputs[columnName].map(mapper);
1375
+ }
1376
+ const values = Object.values(this.filterFormInputs);
1377
+ return values.reduce((result, current) => ([...result, ...current.map(mapper)]), []);
1378
+ }
1263
1379
  }
1264
1380
  core.Messages.add({
1265
1381
  'pt-BR': {
@@ -1487,17 +1603,28 @@
1487
1603
  get showFilterButton() {
1488
1604
  return this.grid.filterButton;
1489
1605
  }
1606
+ get showSearchInput() {
1607
+ return this.grid.showSearch;
1608
+ }
1609
+ get showReloadButton() {
1610
+ return this.grid.showReload;
1611
+ }
1612
+ get showDivider2() {
1613
+ return this.showReloadButton && (this.showLayoutOptionsButton || this.showColumnsButton
1614
+ || this.showActionsButton || this.showExportButton || this.showSearchInput);
1615
+ }
1490
1616
  get showColumnsButton() {
1491
1617
  return this.grid.columnsButton;
1492
1618
  }
1493
1619
  get columnsButtonIgnore() {
1494
1620
  return this.grid.columnsButtonIgnore;
1495
1621
  }
1496
- get showLayoutOptions() {
1622
+ get showLayoutOptionsButton() {
1497
1623
  return this.grid.showLayoutOptions;
1498
1624
  }
1499
- get showFirstDivider() {
1500
- return this.showAddButton || this.showDeleteButton;
1625
+ get showDivider1() {
1626
+ return (this.showAddButton || this.showDeleteButton) && (this.showReloadButton || this.showLayoutOptionsButton || this.showColumnsButton
1627
+ || this.showActionsButton || this.showExportButton || this.showSearchInput);
1501
1628
  }
1502
1629
  get showActionsButton() {
1503
1630
  return this.grid.actions.length > 0;
@@ -1506,7 +1633,10 @@
1506
1633
  return this.grid.showExport;
1507
1634
  }
1508
1635
  get showActionAndExportButton() {
1509
- return this.showActionsButton || this.showExportButton;
1636
+ return (this.showLayoutOptionsButton || this.showColumnsButton) && (this.showActionsButton || this.showExportButton || this.showSearchInput);
1637
+ }
1638
+ get showDivider3() {
1639
+ return (this.showActionsButton || this.showExportButton) && this.showSearchInput;
1510
1640
  }
1511
1641
  get isEditing() {
1512
1642
  return this.grid.editing;
@@ -1895,10 +2025,10 @@
1895
2025
  return;
1896
2026
  if (filtered === true && item.relation === 'OR')
1897
2027
  return;
1898
- const columnValue = core.normalize(row[key].toString());
2028
+ const columnValue = core.Utils.normalize(row[key].toString());
1899
2029
  let value = '';
1900
2030
  if (Array.isArray(item.value)) {
1901
- value = item.value.map((val) => core.normalize(val.toString()));
2031
+ value = item.value.map((val) => core.Utils.normalize(val.toString()));
1902
2032
  switch (item.operation) {
1903
2033
  case 'IN':
1904
2034
  filtered = value.includes(columnValue);
@@ -1913,7 +2043,7 @@
1913
2043
  }
1914
2044
  }
1915
2045
  else {
1916
- value = core.normalize(item.value.toString());
2046
+ value = core.Utils.normalize(item.value.toString());
1917
2047
  switch (item.operation) {
1918
2048
  case 'CONTAINS':
1919
2049
  filtered = columnValue.indexOf(value) !== -1;
@@ -1998,6 +2128,7 @@
1998
2128
  this.isVisible = this.getInitValue('isVisible', props.isVisible, this.isVisible);
1999
2129
  this.filterProps = this.getInitValue('filterProps', props.filterProps, this.filterProps);
2000
2130
  this.filterable = this.getInitValue('filterable', props.filterable, this.filterable);
2131
+ this.filterIndex = this.getInitValue('filterIndex', props.filterIndex, this.filterIndex);
2001
2132
  this.fixed = this.getInitValue('fixed', props.fixed, this.fixed);
2002
2133
  this.grouped = this.getInitValue('grouped', props.grouped, this.grouped);
2003
2134
  this.groupOpened = this.getInitValue('groupOpened', props.groupOpened, this.groupOpened);
@@ -2073,6 +2204,16 @@
2073
2204
  this.changeGrouping();
2074
2205
  }
2075
2206
  }
2207
+ get groupOpened() {
2208
+ return this.groupOpenedValue;
2209
+ }
2210
+ set groupOpened(value) {
2211
+ const changed = value !== this.groupOpenedValue;
2212
+ this.groupOpenedValue = value;
2213
+ if (changed) {
2214
+ this.changeGrouping();
2215
+ }
2216
+ }
2076
2217
  get isVisible() {
2077
2218
  return this.isVisibleValue && !this.grouped;
2078
2219
  }
@@ -2106,6 +2247,8 @@
2106
2247
  this.actions = [];
2107
2248
  /* Show Filter button */
2108
2249
  this.filterButton = false;
2250
+ /* Show SearchInput */
2251
+ this.showSearch = true;
2109
2252
  /* Show Column Filter button */
2110
2253
  this.columnFilterButton = false;
2111
2254
  /* Show Columns button */
@@ -2173,6 +2316,32 @@
2173
2316
  this.groupColumns = [];
2174
2317
  this.groupedData = [];
2175
2318
  this.toolbarSlotProps = false;
2319
+ this.keyShortcutKeyMapping = {
2320
+ 'mod+f': {
2321
+ event: this.focusSearchInput.bind(this),
2322
+ stop: true,
2323
+ active: true,
2324
+ },
2325
+ 'mod+l': {
2326
+ event: ({ event, element }) => {
2327
+ if (this.filterButton) {
2328
+ const instance = core.Metadata.getInstance(`${this.name}_filterButton`);
2329
+ instance.click(event, element);
2330
+ }
2331
+ },
2332
+ stop: true,
2333
+ active: true,
2334
+ },
2335
+ 'mod+enter': {
2336
+ event: () => {
2337
+ const instance = core.Metadata.getInstance(`${this.name}_actions_dropdown`);
2338
+ instance.setFocus();
2339
+ instance.value = !instance.value;
2340
+ },
2341
+ stop: true,
2342
+ active: true,
2343
+ },
2344
+ };
2176
2345
  this.groups = [];
2177
2346
  this.summary = {};
2178
2347
  this.updateGrouping = debounce__default["default"]((lazyLoad = false) => {
@@ -2182,6 +2351,7 @@
2182
2351
  this.addButton = this.getInitValue('addButton', props.addButton, this.addButton);
2183
2352
  this.deleteButton = this.getInitValue('deleteButton', props.deleteButton, this.deleteButton);
2184
2353
  this.filterButton = this.getInitValue('filterButton', props.filterButton, this.filterButton);
2354
+ this.showSearch = this.getInitValue('showSearch', props.showSearch, this.showSearch);
2185
2355
  this.columnFilterButton = this.getInitValue('columnFilterButton', props.columnFilterButton, this.columnFilterButton);
2186
2356
  this.columnsButton = this.getInitValue('columnsButton', props.columnsButton, this.columnsButton);
2187
2357
  this.columnsButtonIgnore = this.getInitValue('columnsButtonIgnore', props.columnsButtonIgnore, this.columnsButtonIgnore);
@@ -2221,6 +2391,23 @@
2221
2391
  active: true,
2222
2392
  };
2223
2393
  }
2394
+ onMounted(element) {
2395
+ super.onMounted(element);
2396
+ core.KeyMap.bind(this.keyShortcutKeyMapping, this, element);
2397
+ }
2398
+ onBeforeDestroy() {
2399
+ super.onBeforeDestroy();
2400
+ core.KeyMap.unbind(this.keyShortcutKeyMapping, this);
2401
+ }
2402
+ focusSearchInput() {
2403
+ const searchInput = core.Metadata.getInstance(`${this.name}_gridSearch`);
2404
+ searchInput.setFocus();
2405
+ }
2406
+ get layoutOptions() {
2407
+ if (!this.showLayoutOptions)
2408
+ return undefined;
2409
+ return core.Metadata.getInstance(`${this.name}_layout_options`);
2410
+ }
2224
2411
  /**
2225
2412
  * Get Grid columns objects
2226
2413
  * @param columns Grid columns parameter
@@ -2631,6 +2818,12 @@
2631
2818
  });
2632
2819
  }
2633
2820
  }
2821
+ getAtomInstance(key) {
2822
+ return this.gridBase.getAtomInstance(key);
2823
+ }
2824
+ getFilterInputs(columnName) {
2825
+ return this.gridBase.getFilterInputs(columnName);
2826
+ }
2634
2827
  }
2635
2828
 
2636
2829
  class TekGridColumnsButtonController extends common.IterableColumnsButtonController {
@@ -2746,13 +2939,17 @@
2746
2939
  }
2747
2940
  return '';
2748
2941
  }
2749
- newLayout(newLayout) {
2750
- this.currentLayoutName = newLayout.name;
2751
- this.layouts[this.currentLayoutName] = newLayout;
2752
- this.layoutNames = Object.keys(this.layouts);
2753
- this.saveLayouts();
2942
+ newLayout(layout) {
2943
+ this.fixColumns(layout);
2944
+ this.currentLayoutName = layout.name;
2945
+ this.addLayout(layout);
2754
2946
  this.layoutEdited = false;
2755
2947
  }
2948
+ addLayout(layout) {
2949
+ this.fixColumns(layout);
2950
+ this.layouts[layout.name] = layout;
2951
+ this.saveLayouts();
2952
+ }
2756
2953
  applyLayout(name, save = true) {
2757
2954
  this.currentLayoutName = name;
2758
2955
  if (this.viewApplyLayout) {
@@ -2764,6 +2961,7 @@
2764
2961
  this.layoutEdited = false;
2765
2962
  }
2766
2963
  saveLayouts() {
2964
+ this.layoutNames = Object.keys(this.layouts);
2767
2965
  const layoutInfo = {
2768
2966
  currentLayoutName: this.currentLayoutName,
2769
2967
  layouts: this.layouts,
@@ -2779,17 +2977,57 @@
2779
2977
  deleteLayout(name) {
2780
2978
  if (this.currentLayoutName === name) {
2781
2979
  this.currentLayoutName = '';
2980
+ this.applyLayout(this.currentLayoutName, false);
2782
2981
  }
2783
2982
  delete this.layouts[name];
2784
- this.layoutNames = Object.keys(this.layouts);
2785
2983
  this.saveLayouts();
2786
2984
  }
2787
2985
  updateLayout(name, layout) {
2986
+ this.fixColumns(layout);
2788
2987
  this.currentLayoutName = name;
2789
- this.layouts[name] = layout;
2988
+ layout.name = name;
2989
+ this.layouts[layout.name] = layout;
2790
2990
  this.saveLayouts();
2791
2991
  this.layoutEdited = false;
2792
2992
  }
2993
+ updateDefaultLayout(layout) {
2994
+ this.fixColumns(layout);
2995
+ this.originalDatasourceOrder = layout.order || this.originalDatasourceOrder;
2996
+ this.originalDatasourceDynamicFilter = layout.dynamicFilter || this.originalDatasourceDynamicFilter;
2997
+ this.originalDatasourceFilter = layout.filter || this.originalDatasourceFilter;
2998
+ if (layout.columns) {
2999
+ this.originalColumnProps = layout.columns.map((column) => {
3000
+ const originalColumnIdx = this.originalColumnProps.findIndex((item) => item.name === column.name);
3001
+ const originalColumn = originalColumnIdx !== -1 ? this.originalColumnProps[originalColumnIdx] : {};
3002
+ return Object.assign(Object.assign({}, originalColumn), column);
3003
+ });
3004
+ }
3005
+ if (this.currentLayoutName === '') {
3006
+ this.applyLayout(this.currentLayoutName, false);
3007
+ }
3008
+ }
3009
+ fixColumns(layout) {
3010
+ const hasLayoutColumns = !!layout.columns;
3011
+ layout.columns = layout.columns || [];
3012
+ const layoutColumnNames = layout.columns.map((layoutColumn) => layoutColumn.name);
3013
+ this.grid.columns.forEach((gridColumn) => {
3014
+ if (!hasLayoutColumns || layoutColumnNames.indexOf(gridColumn.name) === -1) {
3015
+ layout.columns.push({
3016
+ name: gridColumn.name,
3017
+ label: gridColumn.label,
3018
+ align: gridColumn.align,
3019
+ isVisible: !hasLayoutColumns && gridColumn.isVisible,
3020
+ minWidth: gridColumn.minWidth,
3021
+ maxWidth: gridColumn.maxWidth,
3022
+ fixed: gridColumn.fixed,
3023
+ grouped: gridColumn.grouped,
3024
+ groupOpened: gridColumn.groupOpened,
3025
+ aggregation: gridColumn.aggregation,
3026
+ filterHelperValue: this.getHelperValue(gridColumn),
3027
+ });
3028
+ }
3029
+ });
3030
+ }
2793
3031
  }
2794
3032
 
2795
3033
  class TekFilterHelper {
@@ -2894,6 +3132,8 @@
2894
3132
  this.actions = [];
2895
3133
  /* Show Filter button */
2896
3134
  this.filterButton = false;
3135
+ /* Show search Input */
3136
+ this.showSearch = true;
2897
3137
  /* Show Column Filter button */
2898
3138
  this.columnFilterButton = false;
2899
3139
  /* Show Columns button */
@@ -2945,6 +3185,7 @@
2945
3185
  this.addButton = this.getInitValue('addButton', props.addButton, this.addButton);
2946
3186
  this.deleteButton = this.getInitValue('deleteButton', props.deleteButton, this.deleteButton);
2947
3187
  this.filterButton = this.getInitValue('filterButton', props.filterButton, this.filterButton);
3188
+ this.showSearch = this.getInitValue('showSearch', props.showSearch, this.showSearch);
2948
3189
  this.columnFilterButton = this.getInitValue('columnFilterButton', props.columnFilterButton, this.columnFilterButton);
2949
3190
  this.columnsButton = this.getInitValue('columnsButton', props.columnsButton, this.columnsButton);
2950
3191
  this.columnsButtonIgnore = this.getInitValue('columnsButtonIgnore', props.columnsButtonIgnore, this.columnsButtonIgnore);
@@ -2971,6 +3212,11 @@
2971
3212
  if (!this.toolbarSlotProps)
2972
3213
  this.toolbarSlot = this.gridBase.createToolbarProps();
2973
3214
  }
3215
+ get layoutOptions() {
3216
+ if (!this.showLayoutOptions)
3217
+ return undefined;
3218
+ return core.Metadata.getInstance(`${this.name}_layout_options`);
3219
+ }
2974
3220
  /**
2975
3221
  * Get Grid columns objects
2976
3222
  * @param columns Grid columns parameter
@@ -3024,6 +3270,12 @@
3024
3270
  }
3025
3271
  this.preventRowClick = false;
3026
3272
  }
3273
+ getAtomInstance(key) {
3274
+ return this.gridBase.getAtomInstance(key);
3275
+ }
3276
+ getFilterInputs(columnName) {
3277
+ return this.gridBase.getFilterInputs(columnName);
3278
+ }
3027
3279
  }
3028
3280
 
3029
3281
  core.Messages.add({
@@ -3087,6 +3339,7 @@
3087
3339
  exports.Image = Image;
3088
3340
  exports.IterableCarousel = IterableCarousel;
3089
3341
  exports.IterableComponentRender = IterableComponentRender;
3342
+ exports.Loading = Loading;
3090
3343
  exports.Notifications = Notifications;
3091
3344
  exports.ProductCard = ProductCard;
3092
3345
  exports.TekFilterHelper = TekFilterHelper;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeedhi/teknisa-components-common",
3
- "version": "1.40.0",
3
+ "version": "1.44.0",
4
4
  "description": "Teknisa Components Common",
5
5
  "author": "Zeedhi <zeedhi@teknisa.com>",
6
6
  "license": "ISC",
@@ -28,5 +28,5 @@
28
28
  "peerDependencies": {
29
29
  "@zeedhi/core": "*"
30
30
  },
31
- "gitHead": "d800bb65956e058cf2ae6f5c79bd930424643082"
31
+ "gitHead": "f58aaa0da52de553088e6eb5bb4567293553e44a"
32
32
  }