@sankhyalabs/ezui 5.22.0-dev.2 → 5.22.0-dev.21

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 (87) hide show
  1. package/dist/cjs/{RecordValidationProcessor-4c893e04.js → RecordValidationProcessor-10846595.js} +7 -1
  2. package/dist/cjs/ez-custom-form-input_2.cjs.entry.js +31 -4
  3. package/dist/cjs/ez-form-view.cjs.entry.js +3 -2
  4. package/dist/cjs/ez-form.cjs.entry.js +7 -3
  5. package/dist/cjs/ez-grid.cjs.entry.js +264 -20
  6. package/dist/cjs/ez-modal-container.cjs.entry.js +2 -1
  7. package/dist/cjs/ez-modal.cjs.entry.js +7 -1
  8. package/dist/cjs/ez-multi-selection-list.cjs.entry.js +1 -1
  9. package/dist/cjs/ez-popup.cjs.entry.js +9 -2
  10. package/dist/cjs/ez-search.cjs.entry.js +6 -3
  11. package/dist/cjs/ez-tabselector.cjs.entry.js +8 -2
  12. package/dist/cjs/ezui.cjs.js +1 -1
  13. package/dist/cjs/loader.cjs.js +1 -1
  14. package/dist/collection/components/ez-form-view/custom-input/ez-custom-form-input.js +45 -5
  15. package/dist/collection/components/ez-form-view/fieldbuilder/templates/SearchInput.tpl.js +3 -2
  16. package/dist/collection/components/ez-grid/controller/ag-grid/AgGridController.js +106 -8
  17. package/dist/collection/components/ez-grid/controller/ag-grid/DataSource.js +83 -5
  18. package/dist/collection/components/ez-grid/controller/ag-grid/GridEditionManager.js +58 -7
  19. package/dist/collection/components/ez-grid/controller/ag-grid/components/EzGridCustomCellEditor.js +8 -0
  20. package/dist/collection/components/ez-grid/controller/ag-grid/editor/templates/Search.tpl.js +1 -0
  21. package/dist/collection/components/ez-grid/controller/ag-grid/test/constants/GridEditionMock.js +1 -0
  22. package/dist/collection/components/ez-grid/ez-grid.js +45 -0
  23. package/dist/collection/components/ez-modal/ez-modal.js +25 -1
  24. package/dist/collection/components/ez-modal-container/ez-modal-container.js +20 -1
  25. package/dist/collection/components/ez-multi-selection-list/ez-multi-selection-list.js +1 -1
  26. package/dist/collection/components/ez-popup/ez-popup.css +5 -1
  27. package/dist/collection/components/ez-popup/ez-popup.js +26 -1
  28. package/dist/collection/components/ez-search/ez-search.js +24 -3
  29. package/dist/collection/components/ez-tabselector/ez-tabselector.js +34 -2
  30. package/dist/collection/utils/form/DataBinder.js +7 -3
  31. package/dist/collection/utils/validators/recordvalidator/IInvalidCells.js +1 -0
  32. package/dist/collection/utils/validators/recordvalidator/RecordValidationProcessor.js +7 -1
  33. package/dist/custom-elements/index.js +349 -44
  34. package/dist/esm/{RecordValidationProcessor-b00b8b77.js → RecordValidationProcessor-9c6cc267.js} +7 -1
  35. package/dist/esm/ez-custom-form-input_2.entry.js +32 -5
  36. package/dist/esm/ez-form-view.entry.js +3 -2
  37. package/dist/esm/ez-form.entry.js +8 -4
  38. package/dist/esm/ez-grid.entry.js +264 -20
  39. package/dist/esm/ez-modal-container.entry.js +2 -1
  40. package/dist/esm/ez-modal.entry.js +7 -1
  41. package/dist/esm/ez-multi-selection-list.entry.js +1 -1
  42. package/dist/esm/ez-popup.entry.js +9 -2
  43. package/dist/esm/ez-search.entry.js +6 -3
  44. package/dist/esm/ez-tabselector.entry.js +8 -2
  45. package/dist/esm/ezui.js +1 -1
  46. package/dist/esm/loader.js +1 -1
  47. package/dist/ezui/ezui.esm.js +1 -1
  48. package/dist/ezui/p-08061683.entry.js +1 -0
  49. package/dist/ezui/p-34b6916c.entry.js +1 -0
  50. package/dist/ezui/p-42533ea4.entry.js +1 -0
  51. package/dist/ezui/p-4d64a3e4.entry.js +1 -0
  52. package/dist/ezui/{p-816cece6.entry.js → p-a9156fef.entry.js} +2 -2
  53. package/dist/ezui/p-c0d9c4f8.entry.js +1 -0
  54. package/dist/ezui/p-c36b7c56.entry.js +1 -0
  55. package/dist/ezui/p-cdc472cc.entry.js +1 -0
  56. package/dist/ezui/p-e26f12dd.entry.js +1 -0
  57. package/dist/ezui/p-f42855b9.js +1 -0
  58. package/dist/ezui/p-f9e551de.entry.js +1 -0
  59. package/dist/types/components/ez-form-view/custom-input/ez-custom-form-input.d.ts +7 -1
  60. package/dist/types/components/ez-form-view/fieldbuilder/templates/SearchInput.tpl.d.ts +1 -1
  61. package/dist/types/components/ez-grid/controller/EzGridController.d.ts +32 -4
  62. package/dist/types/components/ez-grid/controller/ag-grid/AgGridController.d.ts +19 -3
  63. package/dist/types/components/ez-grid/controller/ag-grid/DataSource.d.ts +18 -0
  64. package/dist/types/components/ez-grid/controller/ag-grid/GridEditionManager.d.ts +13 -2
  65. package/dist/types/components/ez-grid/controller/ag-grid/components/EzGridCustomCellEditor.d.ts +1 -0
  66. package/dist/types/components/ez-grid/ez-grid.d.ts +9 -0
  67. package/dist/types/components/ez-modal/ez-modal.d.ts +5 -0
  68. package/dist/types/components/ez-modal-container/ez-modal-container.d.ts +4 -0
  69. package/dist/types/components/ez-popup/ez-popup.d.ts +6 -0
  70. package/dist/types/components/ez-search/ez-search.d.ts +4 -0
  71. package/dist/types/components/ez-tabselector/ez-tabselector.d.ts +2 -1
  72. package/dist/types/components.d.ts +49 -0
  73. package/dist/types/utils/customEditor/interfaces/ICustomEditor.d.ts +2 -0
  74. package/dist/types/utils/form/DataBinder.d.ts +2 -0
  75. package/dist/types/utils/validators/recordvalidator/IInvalidCells.d.ts +5 -0
  76. package/dist/types/utils/validators/recordvalidator/RecordValidationProcessor.d.ts +1 -1
  77. package/package.json +1 -1
  78. package/dist/ezui/p-04f24913.js +0 -1
  79. package/dist/ezui/p-12ae1104.entry.js +0 -1
  80. package/dist/ezui/p-2dcb50d4.entry.js +0 -1
  81. package/dist/ezui/p-30775e7f.entry.js +0 -1
  82. package/dist/ezui/p-4d5235f1.entry.js +0 -1
  83. package/dist/ezui/p-5056284a.entry.js +0 -1
  84. package/dist/ezui/p-784fe207.entry.js +0 -1
  85. package/dist/ezui/p-9ab22a07.entry.js +0 -1
  86. package/dist/ezui/p-d9401ea0.entry.js +0 -1
  87. package/dist/ezui/p-f3c526cc.entry.js +0 -1
@@ -0,0 +1 @@
1
+ import{r as t,c as i,h as s,H as e,g as a}from"./p-23a36bb6.js";import{ElementIDUtils as o,StringUtils as r}from"@sankhyalabs/core";const n=class{constructor(s){t(this,s),this.ezChange=i(this,"ezChange",7),this.setFocusedParam=t=>{if("Enter"===t.key){const i=this._processedTabs[this._focusedIndex];this.handleTabClick(i),t.preventDefault(),this.setFocusedTab(i.index)}else if("ArrowLeft"===t.key||"ArrowRight"===t.key){let i;if("ArrowLeft"===t.key)i=!1;else{if("ArrowRight"!==t.key)return;i=!0}this._focusedIndex=void 0===this._focusedIndex?!1===i?void 0!==this.selectedIndex?this.selectedIndex-1:void 0:void 0!==this.selectedIndex?this.selectedIndex+1:void 0:!1===i?this._focusedIndex-1:this._focusedIndex+1,this._focusedIndex<0?this._focusedIndex=0:this._focusedIndex>this._processedTabs.length-1&&(this._focusedIndex=this._processedTabs.length-1),this.setFocusedBtn(!0,this._focusedIndex),this.setFocusedTab(this._focusedIndex)}else if("Tab"===t.key||"Escape"===t.key){const i=this._processedTabs[this.selectedIndex];this._focusedIndex=void 0,this.handleTabClick(i),t.preventDefault(),this.setFocusedTab(this.selectedIndex)}},this._processedTabs=void 0,this.selectedIndex=void 0,this.selectedTab=void 0,this.tabs=void 0}observeTabs(t,i){t&&"string"!=typeof t?this._processedTabs=t:t!==i&&this.processesTabs()}async goToTab(t,i=!1){const s=this._processedTabs.find((i=>i.index===t));this.handleTabClick(s,!i)}handleTabClick(t,i=!0){this.selectedIndex=t.index,this._focusedIndex=void 0,this.selectedTab=t.tabKey,i&&this.ezChange.emit(t),this.setFocusedBtn(!1,t.index)}componentWillLoad(){this.processesTabs()}processesTabs(){this.tabs&&(Array.isArray(this.tabs)?this._processedTabs=[...this.tabs]:(this._processedTabs=[],this.tabs.split(",").forEach((t=>{t=t.trim(),this._processedTabs.push({label:t,tabKey:t,index:this._processedTabs.length}),this.buildElementIdTab(this._processedTabs)})))),this._hostElem.querySelectorAll("ez-tab").forEach((t=>{const i=t.getAttribute("tabKey"),s={label:t.getAttribute("label"),tabKey:i,leftIcon:t.getAttribute("leftIcon"),rightIcon:t.getAttribute("rightIcon"),index:this._processedTabs.length},e=t.firstChild;e&&(e.setAttribute("slot","tab"+s.index),this._hostElem.appendChild(e)),this._processedTabs.push(s),this.buildElementIdTab(this._processedTabs)}))}componentDidRender(){this.updateScroll()}componentDidLoad(){o.addIDInfo(this._hostElem,"itemsSelector"),this._hostElem.shadowRoot.querySelectorAll('button[name="tab-button"]').forEach((t=>{var i;const s=null===(i=t.querySelector("span.tab-label"))||void 0===i?void 0:i.innerText,e={id:`${r.toCamelCase(s)}`};o.addIDInfo(t,"itemSelector",e)}))}handleSlotChange(t){const i=t.target.assignedElements()[0];i&&(i.style.marginLeft="6px")}scrollBackward(){const t=this._scrollContainer;t&&(t.scrollLeft-=t.clientWidth)}scrollFoward(){const t=this._scrollContainer;if(t){let i=null;t.querySelectorAll(".tab").forEach((s=>{s.getBoundingClientRect().right<t.clientWidth&&(i=s)})),t.scrollLeft=i.offsetLeft+i.offsetWidth}}updateScroll(){const t=this._scrollContainer;if(t){const{scrollWidth:i,clientWidth:s,scrollLeft:e}=t,a=i-s-Math.ceil(e);this._startHidden=t.scrollLeft>0,this._endHidden=a>0,this._startHidden?this._backwardButton.classList.remove("hidden"):this._backwardButton.classList.add("hidden"),this._endHidden?this._forwardButton.classList.remove("hidden"):this._forwardButton.classList.add("hidden");const o=["","startHidden","endHidden","middle"],r=o[Number(this._startHidden)|Number(this._endHidden)<<1];o.forEach((i=>{i!==r&&t.classList.contains(i)&&t.classList.remove(i)})),r&&!t.classList.contains(r)&&t.classList.add(r)}}domScrollHandler(){window.clearTimeout(this._scrollCallBack),this._scrollCallBack=window.setTimeout((()=>{this.updateScroll()}),200)}setFocusedTab(t){window.clearTimeout(this._scrollCallBackTest),this._scrollCallBackTest=window.setTimeout((()=>{this._scrollContainer.querySelector(`#tab${t}`).scrollIntoView()}),200)}setFocusedBtn(t,i){this._scrollContainer.querySelectorAll(".tab").forEach((s=>{s.classList.remove("is-focused"),s.id==="tab"+i&&t&&s.classList.add("is-focused")}))}buildElementIdTab(t){t.forEach((t=>{if(!t.hasOwnProperty(o.DATA_ELEMENT_ID_ATTRIBUTE_NAME)){const i=`${this._hostElem.getAttribute(o.DATA_ELEMENT_ID_ATTRIBUTE_NAME)}_${r.toCamelCase(t.tabKey)}`;t[o.DATA_ELEMENT_ID_ATTRIBUTE_NAME]=i}}))}render(){return s(e,null,s("button",{class:"backward-button",ref:t=>this._backwardButton=t,onClick:()=>this.scrollBackward()}),s("div",{class:"scroll",ref:t=>this._scrollContainer=t,onScroll:()=>this.domScrollHandler(),onKeyDown:t=>this.setFocusedParam(t)},this._processedTabs.map(((t,i)=>{const e="tab"+i,a=i===this.selectedIndex||this.selectedTab&&t.tabKey===this.selectedTab;return a&&(this.selectedTab=t.tabKey,this.selectedIndex=i),s("button",{id:e,name:"tab-button",class:"tab"+(a?" is-active":""),onClick:()=>this.handleTabClick(t)},t.leftIcon&&s("ez-icon",{iconName:t.leftIcon,class:"left-icon"}),s("span",{class:"tab-label",title:t.label},t.label),t.rightIcon&&s("ez-icon",{iconName:t.rightIcon,class:"right-icon"}),s("slot",{name:e,onSlotchange:t=>{this.handleSlotChange(t)}}))}))),s("button",{class:"forward-button",ref:t=>this._forwardButton=t,onClick:()=>this.scrollFoward()}))}get _hostElem(){return a(this)}static get watchers(){return{tabs:["observeTabs"]}}};n.style='@keyframes activate{0%{clip-path:inset(calc(100% - 3px) 50% 0px 50%)}100%{clip-path:inset(calc(100% - 3px) 0px 0px 0px)}}:host{display:flex;position:relative;width:100%;overflow:hidden;--tabselector--backward-icon:url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="16px" width="10px"><path d="M 9.7808475,13.860393 3.9204526,8.0000004 9.7808475,2.0624965 7.9301965,0.28895552 0.21915255,8.0000004 7.9301965,15.711044 Z"/></svg>\');--tabselector--forward-icon:url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="16px" width="10px"><path d="M 0.21915251,13.860393 6.0795475,8.0000007 0.21915251,2.0624968 2.0698036,0.28895588 9.7808475,8.0000007 2.0698036,15.711044 Z"/></svg>\')}.scroll{display:flex;width:100%;scroll-behavior:smooth;overflow-x:auto;scrollbar-width:none}.scroll.startHidden{-webkit-mask-image:linear-gradient(90deg, transparent 20px, #000 48px)}.scroll.middle{-webkit-mask-image:linear-gradient(90deg, transparent 20px, #000 48px, #000 calc(100% - 48px), transparent calc(100% - 20px))}.scroll.endHidden{-webkit-mask-image:linear-gradient(90deg, #000 calc(100% - 48px), transparent calc(100% - 20px))}.tab{display:flex;border:none;background-color:unset;min-width:100px;max-width:260px;cursor:pointer;padding:6px 12px;align-items:center;justify-content:center;color:var(--text--primary, #626e82);font-family:var(--font-pattern, "Roboto");font-size:var(--title--small, 14px);flex-shrink:0}.tab:focus,.forward-button,.backward-button{outline:none}.is-active{position:relative;color:var(--color--primary, #008561)}.is-active::after{content:"";position:absolute;width:100%;height:100%;background-color:var(--color--primary, #008561);clip-path:inset(calc(100% - 3px) 0px 0px 0px);animation:activate 0.25s ease-in-out}.is-focused{border:1px dashed var(--color--primary, #000000c5)}.tab-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-shadow:var(--text-shadow);margin-bottom:var(--space--extra-small, 3px)}.forward-button,.backward-button{position:absolute;z-index:1;display:flex;box-sizing:border-box;padding:0px;top:0px;right:0px;width:16px;height:100%;border:none;background-color:unset;cursor:pointer;justify-content:center;align-items:center}.backward-button{left:0px}.forward-button::after,.backward-button::after{content:\'\';display:flex;background-color:var(--text--primary, #008561);width:10px;height:16px}.forward-button::after{-webkit-mask-image:var(--tabselector--forward-icon);mask-image:var(--tabselector--forward-icon)}.backward-button::after{-webkit-mask-image:var(--tabselector--backward-icon);mask-image:var(--tabselector--backward-icon)}.forward-button:hover::after,.backward-button:hover::after{background-color:var(--color--primary, #4e4e4e)}.hidden{display:none}.scroll::-webkit-scrollbar{display:none}.left-icon{padding-right:var(--space--small)}.right-icon{padding-left:var(--space--small)}';export{n as ez_tabselector}
@@ -0,0 +1 @@
1
+ import{r as t,c as i,h as o,F as e,H as l,g as p}from"./p-23a36bb6.js";import{KeyboardManager as d,FloatingManager as s}from"@sankhyalabs/core";const n=class{constructor(o){t(this,o),this.ezClosePopup=i(this,"ezClosePopup",7),this.ezPopupAction=i(this,"ezPopupAction",7),this._sizeClasses={"x-small":"col--sd-3 ez-popup__size-limit--x-small",small:"col--sd-5",medium:"col--sd-6",large:"col--sd-9","x-large":"col--sd-11",default:"ez-popup__size-limit--x-small"},this.size="medium",this.opened=!1,this.useHeader=!0,this.heightMode="full",this.ezTitle=void 0,this.enabledScroll=!1}observeConfig(){this.manageOverflow()}componentDidLoad(){this.opened&&this._popupRef&&this._popupRef.focus(),new d({propagate:!1,element:this._element}).bind("Enter",this.ezPopupAction.emit.bind("OK")).bind("Escape",(()=>this.closePopup())).bind("Esc",(()=>this.closePopup()))}closePopup(){this.opened=!1,this.manageOverflow(),this.ezClosePopup.emit()}manageOverflow(){window.document.body.style.overflow=this.opened?"hidden":""}manageOverlay(){this.opened?this._overlayId=s.subscribeOverlayControl(this._popupRef):s.unsubscribeOverlayControl(this._popupRef||this._overlayId)}getGridSize(){return this._sizeClasses[this.size]||this._sizeClasses.medium}handlePopupHeight(){return"auto"===this.heightMode?"popup__container--auto":""}handlePopupOverflowY(){return this.enabledScroll?"popup__overflow-y--auto":""}componentDidRender(){this.manageOverlay()}render(){return o(l,null,this.opened?o("div",{class:"overlay",ref:t=>this._popupRef=t,tabIndex:-1},o("div",{class:"popup col "+this.getGridSize()},o("div",{class:`popup__container ${this.handlePopupHeight()} ${this.handlePopupOverflowY()}`},o("div",{class:"popup__content"},o("div",{class:"popup__header "+(this.useHeader?"popup__header--padding":"")},this.useHeader&&o(e,null,!!this.ezTitle&&o("div",{class:"popup__title"},this.ezTitle),o("button",{class:this.ezTitle?"btn-close":"btn-close btn-close--solo",onClick:()=>{this.opened=!1,this.ezClosePopup.emit()}}))),o("div",{class:"popup__expandable-content"},o("slot",null)))))):void 0)}get _element(){return p(this)}static get watchers(){return{opened:["observeConfig"]}}};n.style=':host{display:flex;--ez-popup-z-index:var(--elevation--24, 24);--ez-popup__container--color:var(--title--primary, #2b3a54);--ez-popup__container--padding:var(--space--large, 24px);--ez-popup__header--padding-bottom:var(--space--medium, 12px);--ez-popup__title--font-family:var(--font-pattern, "Roboto");--ez-popup__title--font-size:var(--title--extra-large, 24px);--ez-popup__title--color:var(--title--primary, #2b3a54);--ez-popup__title--font-weight:var(--text-weight--large, 600);--ez-popup__btn__close--icon-color:var(--title--primary, #2b3a54);--ez-popup__btn__close--icon:url(\'data:image/svg+xml;utf8,<svg width="14" height="14" viewBox="0 0 14 14" xmlns="http://www.w3.org/2000/svg"><path d="M 8.2421753,6.9944578 13.743748,1.4930784 C 13.907781,1.3290628 14,1.1065946 14,0.87462511 14,0.64266712 13.907782,0.42019873 13.743748,0.25617155 13.579712,0.09215597 13.35727,6.48e-8 13.125266,6.48e-8 12.89338,6.48e-8 12.670821,0.09215634 12.506787,0.25617155 L 7.005215,5.7575508 1.5035972,0.25617155 C 1.3395631,0.09215597 1.1170968,6.48e-8 0.88511716,6.48e-8 0.65314917,6.48e-8 0.4306712,0.09215597 0.26663695,0.25617155 0.10260271,0.42019873 0.01045441,0.64266712 0.01045441,0.87462511 c 0,0.23196949 0.0921483,0.45443769 0.25618254,0.61845329 L 5.7682546,6.9944578 0.26663695,12.497027 c -0.0834745,0.08067 -0.15003245,0.1772 -0.19581514,0.283871 C 0.02505077,12.887561 9.831648e-4,13.002399 2.950369e-5,13.118395 -9.2415746e-4,13.234504 0.02125019,13.349689 0.06527245,13.457057 c 0.04401053,0.107479 0.10898307,0.205064 0.1911168,0.287137 0.0821454,0.08208 0.17979645,0.146888 0.28727561,0.190839 0.10747906,0.04395 0.22262954,0.06598 0.33872417,0.06493 0.116095,-10e-4 0.23082547,-0.0253 0.33747687,-0.07112 0.1066637,-0.04593 0.2031133,-0.112615 0.2837313,-0.196086 L 7.005215,8.2313646 12.506787,13.732768 c 0.164034,0.164027 0.386593,0.256125 0.618479,0.256125 0.232004,0 0.454446,-0.09209 0.618482,-0.256125 C 13.907781,13.568741 14,13.346308 14,13.114315 14,12.882323 13.90779,12.659888 13.743748,12.495861 Z"/></svg>\')}.overlay{position:fixed;display:flex;top:0px;z-index:var(--ez-popup-z-index, 24);left:0px;width:100%;align-items:center;justify-content:center;box-sizing:border-box;height:100vh;backdrop-filter:blur(4px);background:rgba(0, 4, 12, 0.4)}.popup{display:flex;height:100%;align-items:center;justify-content:center;box-sizing:border-box}.popup__container{width:100%;max-height:90%;height:100%;display:flex;flex-wrap:wrap;overflow:hidden;outline:none;background:#FFFF;color:var(--ez-popup__container--color);border-radius:12px;box-shadow:0px 0px 16px rgba(0, 38, 111, 0.122);box-sizing:border-box;padding:var(--ez-popup__container--padding)}.popup__container--auto{height:auto}.popup__overflow-y--auto{overflow-y:auto}.popup__content{box-sizing:border-box;height:100%;width:100%}.popup__expandable-content{box-sizing:border-box;width:100%;height:calc(100% - 44px)}.popup__header{width:100%;display:flex}.popup__header--padding{padding-bottom:var(--ez-popup__header--padding-bottom)}.popup__title{display:flex;margin:0;width:100%;font-family:var(--ez-popup__title--font-family);font-size:var(--ez-popup__title--font-size);font-weight:var(--ez-popup__title--font-weight);color:var(--ez-popup__title--color);line-height:1.3}.btn-close{justify-content:flex-end;align-self:flex-start;align-items:flex-start;display:flex;outline:none;border:none;background-color:unset;cursor:pointer}.btn-close::after{content:\'\';display:flex;background-color:var(--ez-popup__btn__close--icon-color);width:14px;height:14px;-webkit-mask-image:var(--ez-popup__btn__close--icon);mask-image:var(--ez-popup__btn__close--icon)}.btn-close--solo{width:100%}.row{width:100%;display:flex;flex-wrap:wrap}.col{display:flex;flex-wrap:wrap;align-self:flex-start;box-sizing:border-box}.col--stretch{align-self:stretch}.col--undefined{width:unset}.col--nowrap{flex-wrap:nowrap}.ez-popup__size-limit--x-small{min-width:350px;max-width:560px}@media screen and (min-width: 320px){.col--sd-1{width:8.33333%}.col--sd-2{width:16.66667%}.col--sd-3{width:25%}.col--sd-4{width:33.33333%}.col--sd-5{width:41.66667%}.col--sd-6{width:50%}.col--sd-7{width:58.33333%}.col--sd-8{width:66.66667%}.col--sd-9{width:75%}.col--sd-10{width:83.33333%}.col--sd-11{width:91.66667%}.col--sd-12{width:100%}}@media screen and (min-width: 480px){.col--pn-1{width:8.33333%}.col--pn-2{width:16.66667%}.col--pn-3{width:25%}.col--pn-4{width:33.33333%}.col--pn-5{width:41.66667%}.col--pn-6{width:50%}.col--pn-7{width:58.33333%}.col--pn-8{width:66.66667%}.col--pn-9{width:75%}.col--pn-10{width:83.33333%}.col--pn-11{width:91.66667%}.col--pn-12{width:100%}}@media screen and (min-width: 768px){.col--tb-1{width:8.33333%}.col--tb-2{width:16.66667%}.col--tb-3{width:25%}.col--tb-4{width:33.33333%}.col--tb-5{width:41.66667%}.col--tb-6{width:50%}.col--tb-7{width:58.33333%}.col--tb-8{width:66.66667%}.col--tb-9{width:75%}.col--tb-10{width:83.33333%}.col--tb-11{width:91.66667%}.col--tb-12{width:100%}}@media screen and (min-width: 992px){.col--md-1{width:8.33333%}.col--md-2{width:16.66667%}.col--md-3{width:25%}.col--md-4{width:33.33333%}.col--md-5{width:41.66667%}.col--md-6{width:50%}.col--md-7{width:58.33333%}.col--md-8{width:66.66667%}.col--md-9{width:75%}.col--md-10{width:83.33333%}.col--md-11{width:91.66667%}.col--md-12{width:100%}}@media screen and (min-width: 1200px){.col--ld-1{width:8.33333%}.col--ld-2{width:16.66667%}.col--ld-3{width:25%}.col--ld-4{width:33.33333%}.col--ld-5{width:41.66667%}.col--ld-6{width:50%}.col--ld-7{width:58.33333%}.col--ld-8{width:66.66667%}.col--ld-9{width:75%}.col--ld-10{width:83.33333%}.col--ld-11{width:91.66667%}.col--ld-12{width:100%}}';export{n as ez_popup}
@@ -0,0 +1 @@
1
+ import{h as e,r as a,c as t,g as l,H as o}from"./p-23a36bb6.js";import{ObjectUtils as r,UserInterface as n,ElementIDUtils as i}from"@sankhyalabs/core";import{R as s}from"./p-05e1f4e7.js";import{C as d}from"./p-b853763b.js";function c(a,t,l,o,r){return e("div",{class:"ez-col ez-col--sd-12 ez-align--middle ez-padding-horizontal--small ez-padding-bottom--large"},e("ez-check",{enabled:!l,label:t,mode:r?d.SWITCH:d.REGULAR,"data-field-name":a,"data-context-name":o,key:a}))}function m(a,t,l,o,r,n,i){return e("div",{class:"ez-col ez-col--sd-12 ez-padding-horizontal--small"},e("ez-number-input",{enabled:!l,label:t,precision:o,prettyPrecision:r,"data-field-name":a,"data-context-name":n,key:a,canShowError:i}))}const h=({name:a,label:t,readOnly:l,contextName:o,canShowError:r})=>e("div",{class:"ez-col ez-col--sd-12 ez-padding-horizontal--small"},e("ez-text-input",{label:t,"data-field-name":a,"data-context-name":o,key:a,enabled:!l,canShowError:r})),p=new Map;p.set(n.CHECKBOX,(e=>c(e.name,e.label,e.readOnly,e.contextName,!1))),p.set(n.SWITCH,(e=>c(e.name,e.label,e.readOnly,e.contextName,!0))),p.set(n.OPTIONSELECTOR,(({name:a,label:t,readOnly:l,required:o,props:r,contextName:n,canShowError:i})=>{const s=null==r?void 0:r.options;let d;if("string"==typeof s){const e=JSON.parse(s);d=Object.keys(e).map((a=>({value:a,label:e[a]})))}else d=s;return e("div",{class:"ez-col ez-col--sd-12 ez-padding-horizontal--small"},e("ez-combo-box",{enabled:!l,suppressEmptyOption:o,label:t,"data-field-name":a,"data-context-name":n,key:a,options:d,canShowError:i}))})),p.set(n.DATE,(({name:a,label:t,readOnly:l,canShowError:o})=>e("div",{class:"ez-col ez-col--sd-12 ez-padding-horizontal--small"},e("ez-date-input",{enabled:!l,label:t,"data-field-name":a,key:a,canShowError:o})))),p.set(n.TIME,(({name:a,label:t,readOnly:l,canShowError:o})=>e("div",{class:"ez-col ez-col--sd-12 ez-padding-horizontal--small"},e("ez-time-input",{enabled:!l,label:t,"data-field-name":a,key:a,canShowError:o})))),p.set(n.DATETIME,(({name:a,label:t,readOnly:l,contextName:o,canShowError:r})=>e("div",{class:"ez-col ez-col--sd-12 ez-padding-horizontal--small"},e("ez-date-time-input",{enabled:!l,label:t,"data-field-name":a,"data-context-name":o,key:a,canShowError:r})))),p.set(n.FILE,(({name:a,label:t,readOnly:l,contextName:o,props:n})=>{const i=r.removeEmptyValues({subTitle:n.subTitle,requestHeaders:Object.assign(Object.assign({},n.STORAGESTRATEGY&&{STORAGESTRATEGY:n.STORAGESTRATEGY}),n.INTERNAL_FILENAME&&{INTERNAL_FILENAME:n.INTERNAL_FILENAME})});return e("div",{class:"ez-col ez-col--sd-12 ez-padding-horizontal--small"},e("ez-upload",Object.assign({enabled:!l,label:t,"data-field-name":a,"data-context-name":o,key:a},i)))})),p.set(n.DECIMALNUMBER,(({name:e,label:a,readOnly:t,props:l,contextName:o,canShowError:r})=>{var n,i;const s=Number(null!==(n=null==l?void 0:l.precision)&&void 0!==n?n:2);return m(e,a,t,s,Number(null!==(i=null==l?void 0:l.prettyPrecision)&&void 0!==i?i:s),o,r)})),p.set(n.INTEGERNUMBER,(({name:e,label:a,readOnly:t,contextName:l,canShowError:o})=>m(e,a,t,0,0,l,o))),p.set(n.SEARCH,(({name:a,label:t,readOnly:l,required:o,contextName:r,canShowError:n,optionLoader:i,props:s})=>{var d;return e("div",{class:"ez-col ez-col--sd-12 ez-padding-horizontal--small"},e("ez-search",{enabled:!l,suppressEmptyOption:o,label:t,"data-field-name":a,"data-context-name":r,key:a,canShowError:n,optionLoader:i,ignoreLimitCharsToSearch:null!==(d=s.ignoreLimitCharsToSearch)&&void 0!==d&&d}))})),p.set(n.LONGTEXT,(({name:a,label:t,readOnly:l,contextName:o,rows:r,canShowError:n})=>e("div",{class:"ez-col ez-col--sd-12 ez-padding-horizontal--small",key:a},e("ez-text-area",{enabled:!l,label:t,"data-field-name":a,"data-context-name":o,rows:r,canShowError:n}))));const u=e=>{const a=p.get(e.userInterface)||h,t=e.required?`${e.label}${s}`:e.label,l=a(Object.assign(Object.assign({},e),{label:t}));return l.t["data-form-item"]=e.name,l};class z{constructor(e){this.elem=e}addRightElement(e){this.removeRightElement(),e.classList.add("ez-padding-left--small"),e.setAttribute("data-custom-item","true"),this.elem.classList.add("ez-col--nowrap"),this.elem.appendChild(e)}removeRightElement(){Array.from(this.elem.querySelectorAll('[data-custom-item="true"]')).forEach((e=>e.remove()))}get fieldName(){return this.elem.getAttribute("data-form-item")}}class b{constructor(e,a){this.items=new Map,this.formId=a,e.forEach((e=>{const a=new z(e);this.items.set(a.fieldName,a)}))}getItem(e){return this.items.get(e)}get formName(){return this.formId}}const w=class{constructor(e){a(this,e),this.ezContentReady=t(this,"ezContentReady",7),this.formItemsReady=t(this,"formItemsReady",7),this._customEditors=new Map,this.fields=void 0,this.selectedRecord=void 0}async showUp(){this._element.scrollIntoView({behavior:"smooth",block:"start"})}async addCustomEditor(e,a,t){const l=new Map(this._customEditors);l.set(e,{customEditor:a,detailContext:t}),this._customEditors=l}async setFieldProp(e,a,t){const l=this.fields.map((l=>(l.name!==e||!t&&0!==t||(l.props=l.props||{},l.props[a]=t),l)));this.fields=[...l]}groupFields(e){const a=new Map;return e.forEach((e=>{const t=e.group;if(t){let l=a.get(t);null==l&&(l=[],a.set(t,l)),l.push(e)}else a.set(e.name,e)})),a}componentDidRender(){this._formElements=Array.from(this._element.querySelectorAll("[data-field-name]")),this.ezContentReady.emit(this._formElements);const e=new b(Array.from(this._element.querySelectorAll("[data-form-item]")));this.formItemsReady.emit(e)}isItemFullWidth(e){return[n.FILE,n.LONGTEXT].includes(e)}buildFormItemElement(a,t=""){var l;if(this.isItemFullWidth(a.userInterface)&&(t+=" input-full_width"),this._customEditors.has(a.name)){const o=null===(l=this._formElements.map((e=>({name:e.dataset.fieldName,value:e.value}))).find((e=>e.name===a.name)))||void 0===l?void 0:l.value,r=this._customEditors.get(a.name).customEditor;return e("div",{class:t},e("ez-custom-form-input",{"data-field-name":a.name,customEditor:r,formViewField:a,builderFallback:u,value:o,selectedRecord:this.selectedRecord}))}return e("div",{class:t},u(a))}render(){if(i.addIDInfoIfNotExists(this._element,"ezFormView"),null==this.fields)return;let a=[],t=Array.from(this.groupFields(this.fields).entries()).map((([t,l])=>{if(Array.isArray(l))return e("ez-collapsible-box",{id:`group-${t}`,label:t,"header-size":"large",key:t},e("div",{class:"form-view__content"},l.map((e=>this.buildFormItemElement(e)))));a.push(l)})),l=a.map((e=>this.buildFormItemElement(e))),r=e("div",{class:"form-view__content"},l);return e(o,null,r,t)}get _element(){return l(this)}};w.style=".sc-ez-form-view-h{display:flex;flex-wrap:wrap;width:100%;--ez-form-view__item--min-width:220px;--ez-form-view__item--sapce-width:5px}.form-view__content.sc-ez-form-view{display:grid;grid-template-columns:repeat(auto-fill, minmax(var(--ez-form-view__item--min-width), 1fr));gap:var(--ez-form-view__item--sapce-width);width:100%}.input-full_width.sc-ez-form-view{grid-column:1 / -1;width:100%}";export{w as ez_form_view}
@@ -0,0 +1 @@
1
+ import{r as t,h as i,H as s,c as e,g as o}from"./p-23a36bb6.js";import{C as n}from"./p-4607fb89.js";import{ObjectUtils as l,HTMLBuilder as h,StringUtils as a,ElementIDUtils as d}from"@sankhyalabs/core";import{A as r}from"./p-2187f86c.js";import"./p-ab574d59.js";import"./p-b853763b.js";const c=class{constructor(i){t(this,i),this.gui=void 0,this.customEditor=void 0,this.formViewField=void 0,this.value=void 0,this.detailContext=void 0,this.builderFallback=void 0,this.selectedRecord=void 0}async setFocus(){var t,i;null===(i=null===(t=this.gui)||void 0===t?void 0:t.setFocus)||void 0===i||i.call(t)}async setBlur(){var t,i;null===(i=null===(t=this.gui)||void 0===t?void 0:t.setBlur)||void 0===i||i.call(t)}async isInvalid(){var t,i;return(null===(i=null===(t=this.gui)||void 0===t?void 0:t.isInvalid)||void 0===i?void 0:i.call(t))||!1}watchValue(){this.handleValue(this.gui)}watchCustomEditor(){this.getContent()}watchFormViewField(t,i){l.equals(t,i)||this.getContent()}watchDetailContext(){this.getContent()}watchBuilderFallback(){this.getContent()}watchSelectedRecord(t,i){t.__record__id__!==i.__record__id__&&this.getContent()}getContent(){var t,s;const e=new Map;for(const t in this.formViewField.props)e.set(t,this.formViewField.props[t]);const o={value:this.value,name:this.formViewField.name,currentEditor:this.builderFallback(this.formViewField),setValue:t=>this.setValue(t),getValue:this.getValue,record:this.selectedRecord,editorMetadata:{label:this.formViewField.label,hidden:!1===(null===(t=this.formViewField.props)||void 0===t?void 0:t.visible),userInterface:this.formViewField.userInterface,options:null===(s=this.formViewField.props)||void 0===s?void 0:s.options,props:this.formViewField.props?e:void 0,optionLoader:this.formViewField.optionLoader},source:n.FORM,detailContext:this.detailContext};let l=this.customEditor.getEditorElement(o);return l?l instanceof HTMLElement||"string"==typeof l?("string"==typeof l&&(l=h.parseElement(l)),l.setAttribute("value",this.value),void(this.gui=i("div",{key:a.generateUUID(),ref:t=>t&&t.appendChild(l)}))):(this.handleValue(l),void(this.gui=l)):(l=this.builderFallback(this.formViewField),this.handleValue(l),void(this.gui=l))}setValue(t){this.value=t}getValue(){return this.value}handleValue(t){var i;null===(i=t.t)||void 0===i||i.forEach((t=>{t.i.value=this.value}))}componentWillLoad(){this.getContent()}render(){return i(s,null,this.gui)}static get watchers(){return{value:["watchValue"],customEditor:["watchCustomEditor"],formViewField:["watchFormViewField"],detailContext:["watchDetailContext"],builderFallback:["watchBuilderFallback"],selectedRecord:["watchSelectedRecord"]}}},u=class{constructor(i){t(this,i),this.saveEdition=e(this,"saveEdition",7),this.cancelEdition=e(this,"cancelEdition",7),this._newValue=void 0,this.value=void 0,this.styled=void 0}async applyFocusSelect(){this.calcSizeInput(this.value,!0)}calcSizeInput(t,i=!1){var s,e;const o=null===(e=null===(s=this._inputElement)||void 0===s?void 0:s.shadowRoot)||void 0===e?void 0:e.querySelector("input");if(null!=o){const s=this.getWidthValue(t);o.style.width=s+"px",i&&setTimeout((()=>o.select()),100)}}getWidthValue(t){if(null!=this._valueBasis){const i=this._valueBasis;if(null!=t){const s=2;return i.innerHTML=t,i.clientWidth>0?i.clientWidth+s:s}i.innerHTML=""}return 0}setStyledInput(){var t,i;let s="",e="",o="";null!=this.styled&&(s=this.styled.fontSize,e=this.styled.fontWeight,o=this.styled.fontFamily);const n=null===(i=null===(t=this._inputElement)||void 0===t?void 0:t.shadowRoot)||void 0===i?void 0:i.querySelector("input");null!=n&&(n.style.fontSize=s,n.style.fontWeight=e,n.style.fontFamily=o);const l=this._valueBasis;null!=l&&(l.style.fontSize=s,l.style.fontWeight=e,l.style.fontFamily=o)}handleSaveEdition(){this._newValue?this.saveEdition.emit({value:this.value,newValue:this._newValue}):r.alert("Aviso","Não é possível salvar um campo em branco.").then((()=>{this.setNewValue(this.value,!0)}))}handleCancelEdition(){this.cancelEdition.emit()}setNewValue(t,i=!1){this._newValue=t,this.calcSizeInput(this._newValue,i)}componentDidLoad(){this.applyFocusSelect(),this.setNewValue(this.value)}componentDidRender(){this.setStyledInput()}render(){return d.addIDInfoIfNotExists(this._element,"input"),i(s,null,i("span",{class:"text-edit__hidden-value",ref:t=>this._valueBasis=t}),i("ez-text-input",{"data-element-id":d.getInternalIDInfo("textInput"),onInput:()=>{this.calcSizeInput(this._newValue)},class:"text-edit__form-input",value:this._newValue,ref:t=>this._inputElement=t,mode:"slim",onEzChange:t=>this.setNewValue(null==t?void 0:t.detail),noBorder:!0}),i("ez-button",{class:"text-edit__icon-check",mode:"icon",iconName:"check",size:"small",onClick:()=>{this.handleSaveEdition()}}),i("ez-button",{class:"text-edit__icon-close",mode:"icon",iconName:"close",size:"small",onClick:()=>{this.handleCancelEdition()}}))}get _element(){return o(this)}};u.style=":host{display:flex;align-items:center;gap:5px}.text-edit__form-input{width:auto;--ez-text-input__input--padding:0px}.text-edit__hidden-value{visibility:hidden;position:absolute;white-space:nowrap;z-index:-1;top:0;left:0}";export{c as ez_custom_form_input,u as ez_text_edit}
@@ -0,0 +1 @@
1
+ import{UserInterface as e}from"@sankhyalabs/core";import{A as s}from"./p-2187f86c.js";const i=(s,i)=>{let r,t,{name:a,label:o,group:n}=Object.assign({},i),{readOnly:l,required:c}=Object.assign({},i);return s&&(o=o||s.label,a=a||s.name,c=s.required||(null==i?void 0:i.required),l=s.readOnly||(null==i?void 0:i.readOnly),r=s.properties,t=s.userInterface),{name:a,label:o,group:n,readOnly:l,required:c,props:r,userInterface:t||e.SHORTTEXT}};class r{constructor(e,s,i){this._dataUnit=e,this._validationSource=s,this._validator=i}validate(e=!0){return new Promise(((s,i)=>{const r=this._dataUnit.getModifiedRecords();for(let s=0;s<r.length;s++){const t=r[s],a=[];let o=this.validateRequired(t);if(o&&!o.isValid&&a.push(o),this._validator&&(o=this._validator.validateRecord(t),o&&!o.isValid&&a.push(o)),a.length>0){if(!e&&a[0].invalidFields.length>0){this._validationSource.markAsInvalid(a[0].invalidFields[0],t.__record__id__),i();break}this.processValidationResult(a,t.__record__id__),i();break}}return s()}))}validateRequired(e){const s=this._validationSource.getRequiredFields(),i=[];if(new Set(s).forEach((s=>{const r=e[s];if(null==r||""===r){const r=this._validationSource.getMessageForField(s,e.__record__id__);i.push(r?{name:s,message:r}:{name:s,message:"Essa informação é obrigatória"})}})),i.length>0)return{isValid:!1,invalidFields:i,infoMessage:"Há pelo menos um campo obrigatório não preenchido."}}processValidationResult(e,i){e.forEach((e=>{const r=e.invalidFields;if(this._dataUnit.savingCanceled(r,i),r&&r.forEach((e=>{this.markAsInvalid(e,i)})),e.infoMessage&&s.info(e.infoMessage),e.errorMessage){const{errorTitle:i,errorMessage:r}=e;s.error(i,r)}}))}markAsInvalid(e,s){this._dataUnit.setInvalidField(e.name,e.message,s),this._validationSource.markAsInvalid(e,s)}}export{r as R,i as b}
@@ -0,0 +1 @@
1
+ import{r as t,c as i,h as s,F as e,H as h}from"./p-23a36bb6.js";import{ArrayUtils as l}from"@sankhyalabs/core";var o;!function(t){t.DATASOURCE_RESULTS="DATASOURCE_RESULTS",t.DATASOURCE_RESULTS_EMPTY="DATASOURCE_RESULTS_EMPTY",t.DATASOURCE_INIT="DATASOURCE_INIT",t.OPTIONS_EMPTY="OPTIONS_EMPTY",t.OPTIONS="OPTIONS"}(o||(o={}));const n=class{constructor(s){t(this,s),this.changeFilteredOptions=i(this,"changeFilteredOptions",7),this.columnName=void 0,this.dataSource=void 0,this.useOptions=!1,this.options=void 0,this.isTextSearch=!1,this.filteredOptions=void 0,this.displayOptions=void 0,this.viewScenario=void 0,this.displayOptionToCheckAllItems=!0}async clearFilteredOptions(){this.setInitialScenario(),this.filteredOptions=[],this.searchInput&&(this.searchInput.value=""),this.filterInput&&(this.filterInput.value="")}onChangeUseOptions(){this.setInitialScenario()}onChangeOptions(){this.options&&(this.filteredOptions=this.ordenationByCheckStateAndAlphabetically(this.options)),this.checkInput&&this.changeCheckAllValeuFromFilteredOptions(),this.setInitialScenario()}onChangeFilteredOptions(t){this.displayOptions=this.filteredOptions,this.displayOptionToCheckAllItems=this.filteredOptions.length>1,this.checkInput&&this.changeCheckAllValeuFromFilteredOptions(),this.changeFilteredOptions.emit(t)}componentDidRender(){this.changeCheckAllValeuFromFilteredOptions()}ordenationByCheckStateAndAlphabetically(t){const i=[],s=[];let e;return t.forEach((t=>{null==t.value||""===t.label?e=Object.assign(Object.assign({},t),{label:"(Vazio)"}):t.check?i.push(t):s.push(t)})),(null==e?[]:[e]).concat(null==this.dataSource?l.sortAlphabetically(i):this.dataSource.sortItems(this.columnName,i)).concat(null==this.dataSource?l.sortAlphabetically(s):this.dataSource.sortItems(this.columnName,s))}changeCheckAllValeuFromFilteredOptions(){var t,i,s,e;const h=null===(t=this.filteredOptions)||void 0===t?void 0:t.every((t=>!0===t.check)),l=null===(i=this.filteredOptions)||void 0===i?void 0:i.every((t=>!1===t.check)),o=(null===(s=this.filteredOptions)||void 0===s?void 0:s.some((t=>!1===t.check)))&&(null===(e=this.filteredOptions)||void 0===e?void 0:e.some((t=>!0===t.check)))&&(!h||!l);return this.checkInput&&h?(this.checkInput.indeterminate=!1,void(this.checkInput.value=!0)):this.checkInput&&o?(this.checkInput.indeterminate=!0,void(this.checkInput.value=!1)):this.checkInput&&l?(this.checkInput.indeterminate=!1,void(this.checkInput.value=!1)):void 0}setInitialScenario(){if(this.useOptions)return this.viewScenario=o.OPTIONS,void this.changeCheckAllValeuFromFilteredOptions();this.viewScenario=this.options&&this.options.length>0?o.DATASOURCE_RESULTS:o.DATASOURCE_INIT}async searchWithDataSource(t,i){const{argument:s,mode:e}=t;if("PRELOAD"!==e&&i)return this.dataSource.fetchData(s,i)}handleSearchOnDataSource(t){var i;const s=null!==(i=this.filteredOptions)&&void 0!==i?i:[];t.detail&&!s.some((i=>i.value==t.detail.value))&&(this.filteredOptions=this.ordenationByCheckStateAndAlphabetically([...s,t.detail])),this.viewScenario=o.DATASOURCE_RESULTS,this.searchInput.value=""}handleRemoveItemFromOptions(t){this.filteredOptions=this.ordenationByCheckStateAndAlphabetically(this.filteredOptions.filter((i=>i.value!==t.value))),0===this.filteredOptions.length&&(this.viewScenario=o.DATASOURCE_INIT),this.searchInput&&(this.searchInput.value="")}handleSearchOnOption(t){if(t.detail)return this.displayOptions=l.applyStringFilter(t.detail,this.filteredOptions,!0),void(this.viewScenario=0===this.displayOptions.length?o.OPTIONS_EMPTY:o.OPTIONS);this.displayOptions=this.filteredOptions,this.viewScenario=o.OPTIONS}handleChangeSelectAllItems(t){this.filteredOptions=this.ordenationByCheckStateAndAlphabetically([...this.filteredOptions.map((i=>(i.check=!!t.detail,i)))])}handleChangeSelectedItem(t){const{detail:i}=t;this.filteredOptions.find((t=>t.label===i.label)).check=i.check}buildViewList(t){return s(e,null,this.displayOptionToCheckAllItems&&s("ez-check",{ref:t=>this.checkInput=t,label:"Selecionar todos",class:"multi-selection__select-all",onEzChange:this.handleChangeSelectAllItems.bind(this)}),s("ez-list",{class:"multi-selection__list",dataSource:this.displayOptions,listMode:"check",hoverFeedback:!0,onEzCheckChange:this.handleChangeSelectedItem.bind(this),itemSlotBuilder:t?this.buildDeleteIconSlot.bind(this):null}))}buildDeleteIconSlot(t){return s("ez-icon",{style:{cursor:"pointer"},iconName:"delete",onClick:()=>this.handleRemoveItemFromOptions(t)})}buildInitViewWithDataSource(){return s("multi-selection-box-message",{message:"Selecione os valores a serem filtrados através do campo de busca."})}buildViewEmptyResults(){return s("multi-selection-box-message",{message:"Nenhum resultado encontrado."})}scenarioToDisplay(t){const i={[o.DATASOURCE_INIT]:()=>this.buildInitViewWithDataSource(),[o.DATASOURCE_RESULTS]:()=>this.buildViewList(!0),[o.DATASOURCE_RESULTS_EMPTY]:()=>this.buildViewEmptyResults(),[o.OPTIONS_EMPTY]:()=>this.buildViewEmptyResults(),[o.OPTIONS]:()=>this.buildViewList(!1)}[t];return i?i():void 0}render(){return s(h,null,s("div",{class:"multi-selection"},this.useOptions?s("ez-filter-input",{ref:t=>this.filterInput=t,label:"Buscar..",onEzChange:this.handleSearchOnOption.bind(this)}):s("ez-search",{class:"multi-selection__input",label:"Buscar...",ref:t=>this.searchInput=t,suppressEmptyOption:!0,showOptionValue:!1,showSelectedValue:!1,optionLoader:t=>this.searchWithDataSource(t,this.columnName),onEzChange:this.handleSearchOnDataSource.bind(this),isTextSearch:this.isTextSearch}),s("ez-scroll",{class:"multi-selection__content-options"},this.scenarioToDisplay(this.viewScenario))))}static get watchers(){return{useOptions:["onChangeUseOptions"],options:["onChangeOptions"],filteredOptions:["onChangeFilteredOptions"]}}};n.style=".sc-ez-multi-selection-list-h{--ez-check--outter-gap:0px;display:block;width:304px;height:322px;max-height:calc(100vh - 350px)}.multi-selection__input.sc-ez-multi-selection-list{margin-bottom:var(--space--2xs, 8px)}.multi-selection__content-options.sc-ez-multi-selection-list{position:relative;top:-12px;left:-4px}.multi-selection__select-all.sc-ez-multi-selection-list{height:var(--space--xl);margin:0 var(--space--small, 6px)}.multi-selection__list.sc-ez-multi-selection-list{height:235px;max-height:calc(100vh - 435px);overflow-y:auto;overflow-x:clip}.multi-selection__list.sc-ez-multi-selection-list::-webkit-scrollbar{width:var(--space--small);min-width:var(--space--small);max-width:var(--space--small)}";export{n as ez_multi_selection_list}
@@ -39,10 +39,16 @@ export declare class EzCustomFormInput {
39
39
  * Retorna se o conteúdo é inválido.
40
40
  */
41
41
  isInvalid(): Promise<boolean>;
42
+ watchValue(): void;
43
+ watchCustomEditor(): void;
44
+ watchFormViewField(newValue: IFormViewField | string, oldValue: IFormViewField): void;
45
+ watchDetailContext(): void;
46
+ watchBuilderFallback(): void;
47
+ watchSelectedRecord(newValue: Record | string, oldValue: Record): void;
42
48
  private getContent;
43
49
  private setValue;
44
50
  private getValue;
45
51
  private handleValue;
46
- componentWillRender(): void;
52
+ componentWillLoad(): void;
47
53
  render(): any;
48
54
  }
@@ -1,2 +1,2 @@
1
1
  import { IFormViewField } from "../../interfaces/IFormViewField";
2
- export declare const buildSearch: ({ name, label, readOnly, required, contextName, canShowError, optionLoader }: IFormViewField) => HTMLElement;
2
+ export declare const buildSearch: ({ name, label, readOnly, required, contextName, canShowError, optionLoader, props }: IFormViewField) => HTMLElement;
@@ -1,7 +1,7 @@
1
- import { DataUnit, Filter } from '@sankhyalabs/core';
1
+ import { Action, DataUnit, Filter } from '@sankhyalabs/core';
2
2
  import { Components } from '../../../components';
3
3
  import FilterCollumn = Components.FilterColumn;
4
- import { IRecordValidator } from '../../../utils/form/interfaces';
4
+ import { IInvalidField, IRecordValidator } from '../../../utils/form/interfaces';
5
5
  import { ICustomEditorInfo } from '../../../utils/customEditor/interfaces/ICustomEditorInfo';
6
6
  import { ICustomRenderInfo } from '../../../utils/customRender/interfaces/ICustomRenderInfo';
7
7
  import { ICustomFormatter } from '../interfaces';
@@ -89,7 +89,11 @@ export default interface EzGridController {
89
89
  /**
90
90
  * Método responsável por atualizar as linhas da grade
91
91
  */
92
- refresh(): void;
92
+ refresh(scrollToSelectedRow?: boolean): void;
93
+ /**
94
+ * Método responsável limpar celulas invalidas
95
+ */
96
+ clearInvalidCells(action: Action): void;
93
97
  /**
94
98
  * Método responsável por atualizar as linhas selecionadas da grade
95
99
  */
@@ -107,9 +111,22 @@ export default interface EzGridController {
107
111
  */
108
112
  setFocusFirstRow(): void;
109
113
  /**
110
- * Define se a grade será focada automaticamente.
114
+ * Foca em uma linha específica, garante que ela está visível e inicia edição.
115
+ */
116
+ startEditionOnRowByIndex(index: number): void;
117
+ /**
118
+ * Define se a grade será focada automaticamente.
111
119
  */
112
120
  setAutoFocus(autoFocus: boolean): void;
121
+ /**
122
+ * Ativa inserção de registros no modo grade.
123
+ */
124
+ setEnableGridInsert(enable: boolean): void;
125
+ /**
126
+ * Ativa/desativa a inserção continua na grade
127
+ * Só funciona quando a prop enableGridInsert está ativa
128
+ */
129
+ setEnableContinuousInsert(enable: boolean): void;
113
130
  /**
114
131
  * Método responsável por retornar a configuração da grade.
115
132
  */
@@ -132,6 +149,8 @@ export default interface EzGridController {
132
149
  clearFilter(): void;
133
150
  setCustomFormatters(customFormatters: Map<string, ICustomFormatter>): void;
134
151
  setFocus(): void;
152
+ savingCanceled(fields: Array<IInvalidField>, recordId: string): void;
153
+ destroy(): void;
135
154
  }
136
155
  /**
137
156
  * Carrega as informações necessárias para contextualizar corretamente a instância.
@@ -206,6 +225,15 @@ export interface EzGridOptions {
206
225
  * Define se a grid será focada ao ser carregada.
207
226
  */
208
227
  autoFocus: boolean;
228
+ /**
229
+ * Ativa inserção de registros no modo grade.
230
+ */
231
+ enableGridInsert?: boolean;
232
+ /**
233
+ * Ativa/desativa a inserção continua na grade
234
+ * Só funciona quando a prop enableGridInsert está ativa
235
+ */
236
+ enableContinuousInsert?: boolean;
209
237
  }
210
238
  /**
211
239
  * Representa cada coluna da grade.
@@ -1,9 +1,10 @@
1
- import { Sort, SortingProvider } from '@sankhyalabs/core';
1
+ import { Action, Sort, SortingProvider } from '@sankhyalabs/core';
2
2
  import { Filter, FilterProvider } from '@sankhyalabs/core/dist/dataunit/metadata/UnitMetadata';
3
3
  import EzGridController, { EzGridColumn, EzGridColumnConfig, EzGridColumnMenuItemDef, EzGridOptions } from '../EzGridController';
4
4
  import { ICustomEditorInfo } from '../../../../utils/customEditor/interfaces/ICustomEditorInfo';
5
5
  import { ICustomRenderInfo } from '../../../../utils/customRender/interfaces/ICustomRenderInfo';
6
6
  import { ICustomFormatter } from '../../interfaces';
7
+ import { IInvalidField } from '../../../../utils/form/interfaces';
7
8
  export default class AgGridController implements EzGridController, SortingProvider, FilterProvider {
8
9
  private readonly DEFAULT_ROW_HEIGHT;
9
10
  private readonly DEFAULT_HEADER_ROW_HEIGHT;
@@ -36,6 +37,9 @@ export default class AgGridController implements EzGridController, SortingProvid
36
37
  private _customFormatters;
37
38
  private _container;
38
39
  private _options;
40
+ private observer;
41
+ private _gridShowDom;
42
+ private peddingExecutionsOnGridShow;
39
43
  configFilterColumn(filterColumn: HTMLFilterColumnElement): void;
40
44
  private handleFilteredColumnsChanged;
41
45
  clearFilter(): void;
@@ -64,18 +68,28 @@ export default class AgGridController implements EzGridController, SortingProvid
64
68
  private updateSelectionForAll;
65
69
  setData(data: Array<any>): void;
66
70
  addRows(): void;
67
- updateRows(): void;
71
+ updateRows(rows?: Array<any>): void;
72
+ private updateRowData;
68
73
  selectAll(quietly?: boolean): void;
69
74
  selectRows(rowIds: Array<string>, quietly?: boolean): void;
70
75
  removeRows(): void;
71
76
  changeValues(changes: any, rowIds?: Array<string>): void;
72
- refresh(): void;
77
+ savingCanceled(fields: Array<IInvalidField>, recordId: string): void;
78
+ refresh(scrollToSelectedRow?: boolean): void;
79
+ private scrollToSelectedRow;
73
80
  private focusOnGridContainer;
74
81
  setFocus(): void;
75
82
  setAutoFocus(autoFocus: boolean): void;
83
+ setEnableGridInsert(enable: boolean): void;
84
+ setEnableContinuousInsert(enable: boolean): void;
76
85
  setFocusFirstRow(): void;
77
86
  setFocusLastRow(): void;
87
+ startEditionOnRowByIndex(rowIndex: number): void;
88
+ private startEdition;
89
+ private getFirstEditableColl;
90
+ private isColumnEditable;
78
91
  private setFocusOnRow;
92
+ private focusByCollAndRow;
79
93
  setColumnsDef(cols: Array<EzGridColumn>): void;
80
94
  getColumnsDef(): Array<EzGridColumn>;
81
95
  setColumnsState(state: Array<EzGridColumnConfig>): void;
@@ -101,4 +115,6 @@ export default class AgGridController implements EzGridController, SortingProvid
101
115
  private conditionalSet;
102
116
  setCellEditors(customEditors: Map<string, ICustomEditorInfo>): void;
103
117
  setCellRenders(customRenders: Map<string, ICustomRenderInfo>): void;
118
+ clearInvalidCells(action: Action): void;
119
+ destroy(): void;
104
120
  }
@@ -10,12 +10,30 @@ export default class DataSource implements IServerSideDatasource {
10
10
  quickFilter: QuickFilter;
11
11
  readonly RECORD_ARCHIVE = "__RECORD_ARCHIVE__";
12
12
  private duObserver;
13
+ private handleSavingCanceled;
14
+ private handleDataChanged;
15
+ /**
16
+ * Nesse ponto, o registro já se encontra atualizado no DU,
17
+ * basta então passar seu valor para que a garde possa atualizar sua linha.
18
+ */
19
+ private updateGridRowNodes;
20
+ private getRecordById;
21
+ /**
22
+ * Em caso de necessidade de reload (isWaitingToReload), eh preciso chamar o dataUnit.gotoPage, pois ele aplica tambem a ordenacao dos registros,
23
+ * enquanto que o _controller.refresh apenas recarrega os dados na ordem que atua.
24
+ */
25
+ private handleRefreshOrReload;
26
+ private handleReload;
27
+ private handleRefresh;
28
+ private handleRecordsAdded;
29
+ private focusOnNewRecord;
13
30
  private updateLoadedRecords;
14
31
  private handleFocusFirstRow;
15
32
  private isSilentChange;
16
33
  constructor(dataUnit: DataUnit, controller: EzGridController, options: EzGridOptions);
17
34
  private updateSelection;
18
35
  setAutoFocus(autoFocus: boolean): void;
36
+ setEnableGridInsert(enable: boolean): void;
19
37
  getRows(params: IServerSideGetRowsParams): void;
20
38
  needReload(currentLoading: IServerSideGetRowsParams): boolean;
21
39
  private callbackGetRows;
@@ -1,8 +1,9 @@
1
- import { DataUnit } from "@sankhyalabs/core";
1
+ import { Action, DataUnit } from "@sankhyalabs/core";
2
2
  import { CellPosition, ColDef, GridApi, GridOptions } from "ag-grid-community";
3
3
  import { IRecordValidator } from "../../../../utils/form/interfaces";
4
4
  import { ICustomEditorInfo } from "../../../../utils/customEditor/interfaces/ICustomEditorInfo";
5
5
  import { ICustomRenderInfo } from "../../../../utils/customRender/interfaces/ICustomRenderInfo";
6
+ import { IInvalidCell } from "../../../../utils/validators/recordvalidator/IInvalidCells";
6
7
  export default class GridEditionManager {
7
8
  private _dataUnit;
8
9
  private _lastCellClicked;
@@ -15,9 +16,13 @@ export default class GridEditionManager {
15
16
  private _isGridEdition;
16
17
  private _customEditors;
17
18
  private _customRenders;
18
- constructor(dataUnit: DataUnit, useEnterLikeTab: boolean, recordsValidator: IRecordValidator, editionIsDisabled: () => boolean, customEditors?: Map<string, ICustomEditorInfo>, customRenders?: Map<string, ICustomRenderInfo>);
19
+ private _enableContinuousInsert;
20
+ private _invalidCell;
21
+ constructor(dataUnit: DataUnit, useEnterLikeTab: boolean, recordsValidator: IRecordValidator, editionIsDisabled: () => boolean, customEditors?: Map<string, ICustomEditorInfo>, customRenders?: Map<string, ICustomRenderInfo>, enableContinuousInsert?: boolean);
19
22
  configureGrid(options: GridOptions): GridOptions;
23
+ private canContinuousInsert;
20
24
  proceedAutoSave(): void;
25
+ recordValidate(): Promise<void>;
21
26
  navigateByEnterKey(keyboardEvent: KeyboardEvent): void;
22
27
  getComponents(): {
23
28
  [p: string]: any;
@@ -41,4 +46,10 @@ export default class GridEditionManager {
41
46
  private onCellEditRequest;
42
47
  setCellEditors(customEditors: Map<string, ICustomEditorInfo>): void;
43
48
  setCellRenders(customRenders: Map<string, ICustomRenderInfo>): void;
49
+ private setInvalidCell;
50
+ getInvalidCell(): IInvalidCell;
51
+ clearInvalidCells(action: Action): void;
52
+ setEnableContinuousInsert(enable: boolean): void;
53
+ hasInvalidField(fieldName: string, recordId: string): boolean;
54
+ hasInvalidCell(): boolean;
44
55
  }
@@ -10,6 +10,7 @@ export default class EzGridCustomCellEditor extends EzCellEditor {
10
10
  private _params;
11
11
  private _defaultGui;
12
12
  private _value;
13
+ private _customGui;
13
14
  init(params: ICellEditorParams & CustomParamsEditor): void;
14
15
  private getDefaultGui;
15
16
  getGui(): HTMLElement;
@@ -94,6 +94,15 @@ export declare class EzGrid {
94
94
  * Define se a grid será focada ao ser carregada.
95
95
  */
96
96
  autoFocus?: boolean;
97
+ /**
98
+ * Ativa inserção de registros no modo grade.
99
+ */
100
+ enableGridInsert?: boolean;
101
+ /**
102
+ * Ativa/desativa a inserção continua na grade
103
+ * Só funciona quando a prop enableGridInsert está ativa
104
+ */
105
+ enableContinuousInsert?: boolean;
97
106
  /**
98
107
  * Aplica a definição de colunas.
99
108
  */
@@ -31,6 +31,10 @@ export declare class EzModal {
31
31
  * Define se o modal será fechado ao clicar fora do conteúdo.
32
32
  */
33
33
  closeOutsideClick: boolean;
34
+ /**
35
+ * Define se o modal será fechado se o mouse sair para fora do conteúdo.
36
+ */
37
+ closeOutsideLeave?: boolean;
34
38
  /**
35
39
  * Define o tipo de scrim a ser aplicado no overlay do modal
36
40
  */
@@ -57,5 +61,6 @@ export declare class EzModal {
57
61
  componentDidLoad(): void;
58
62
  componentDidRender(): void;
59
63
  onMouseDownHandler(event: any): void;
64
+ onMouseLeaveHandler(): void;
60
65
  render(): any;
61
66
  }
@@ -32,6 +32,10 @@ export declare class EzModalContainer {
32
32
  * Define o estado do botão de confirmação.
33
33
  */
34
34
  okButtonStatus: "HIDDEN" | "ENABLED" | "DISABLED";
35
+ /**
36
+ * Define a visibilidade do botão de fechar.
37
+ */
38
+ showCloseButton?: boolean;
35
39
  /**
36
40
  * Representa a interação com o usuário.
37
41
  * OK - Quando o botão é acionado
@@ -24,6 +24,10 @@ export declare class EzPopup {
24
24
  * Texto a ser apresentado como título do componente.
25
25
  */
26
26
  ezTitle: string;
27
+ /**
28
+ * Possibilita scroll vertical no conteúdo interno do componente
29
+ */
30
+ enabledScroll: boolean;
27
31
  /**
28
32
  * Evento emitido ao clicar no botão de fechar (onEzClosePopup).
29
33
  */
@@ -38,6 +42,8 @@ export declare class EzPopup {
38
42
  private manageOverflow;
39
43
  private manageOverlay;
40
44
  getGridSize(): string;
45
+ private handlePopupHeight;
46
+ private handlePopupOverflowY;
41
47
  componentDidRender(): void;
42
48
  render(): any;
43
49
  }
@@ -94,6 +94,10 @@ export declare class EzSearch {
94
94
  * Se true desabilita a digitação dentro do componente.
95
95
  */
96
96
  suppressSearch: boolean;
97
+ /**
98
+ * Informa se o componente está instanciado de dentro de uma grade
99
+ */
100
+ fromGrid: boolean;
97
101
  observeErrorMessage(): void;
98
102
  private validateNewValue;
99
103
  observeValue(newValue: IOption | string, oldValue: IOption | string): Promise<void>;
@@ -27,7 +27,8 @@ export declare class EzTabselector {
27
27
  */
28
28
  ezChange: EventEmitter<Tab>;
29
29
  observeTabs(newValue: string | Array<Tab>, oldValue: string | Array<Tab>): void;
30
- handleTabClick(tab: Tab): void;
30
+ goToTab(tabIndex: number, silent?: boolean): Promise<void>;
31
+ handleTabClick(tab: Tab, emitChange?: boolean): void;
31
32
  componentWillLoad(): void;
32
33
  private processesTabs;
33
34
  componentDidRender(): void;
@@ -825,6 +825,14 @@ export namespace Components {
825
825
  * Unidade de dados. Responsável pelo controle de edição de registros e informações pertinentes aos campos.
826
826
  */
827
827
  "dataUnit": DataUnit;
828
+ /**
829
+ * Ativa/desativa a inserção continua na grade Só funciona quando a prop enableGridInsert está ativa
830
+ */
831
+ "enableContinuousInsert"?: boolean;
832
+ /**
833
+ * Ativa inserção de registros no modo grade.
834
+ */
835
+ "enableGridInsert"?: boolean;
828
836
  /**
829
837
  * Usa um argumento para filtrar as colunas po label
830
838
  */
@@ -1049,6 +1057,10 @@ export namespace Components {
1049
1057
  * Define se o modal será fechado ao clicar fora do conteúdo.
1050
1058
  */
1051
1059
  "closeOutsideClick": boolean;
1060
+ /**
1061
+ * Define se o modal será fechado se o mouse sair para fora do conteúdo.
1062
+ */
1063
+ "closeOutsideLeave"?: boolean;
1052
1064
  /**
1053
1065
  * Ativa o modo Full, permitindo que o Modal expanda-se verticalmente e ocupe todo o espaço disponível.
1054
1066
  */
@@ -1091,6 +1103,10 @@ export namespace Components {
1091
1103
  * Define o estado do botão de confirmação.
1092
1104
  */
1093
1105
  "okButtonStatus": "HIDDEN"|"ENABLED"|"DISABLED";
1106
+ /**
1107
+ * Define a visibilidade do botão de fechar.
1108
+ */
1109
+ "showCloseButton"?: boolean;
1094
1110
  /**
1095
1111
  * Define se o cabeçalho será mostrado.
1096
1112
  */
@@ -1205,6 +1221,10 @@ export namespace Components {
1205
1221
  "updatePosition": (top?: string, left?: string) => Promise<void>;
1206
1222
  }
1207
1223
  interface EzPopup {
1224
+ /**
1225
+ * Possibilita scroll vertical no conteúdo interno do componente
1226
+ */
1227
+ "enabledScroll": boolean;
1208
1228
  /**
1209
1229
  * Texto a ser apresentado como título do componente.
1210
1230
  */
@@ -1279,6 +1299,10 @@ export namespace Components {
1279
1299
  * Define uma mensagem de orientação ao usuário, colocando o campo em modo inválido.
1280
1300
  */
1281
1301
  "errorMessage": string;
1302
+ /**
1303
+ * Informa se o componente está instanciado de dentro de uma grade
1304
+ */
1305
+ "fromGrid": boolean;
1282
1306
  "getValueAsync": () => Promise<unknown>;
1283
1307
  /**
1284
1308
  * Quando verdadeiro deixa de exibir a mensagem de erro (se existente) quando focar em um elemento diferente.
@@ -1500,6 +1524,7 @@ export namespace Components {
1500
1524
  "rebuildLayout": () => Promise<void>;
1501
1525
  }
1502
1526
  interface EzTabselector {
1527
+ "goToTab": (tabIndex: number, silent?: boolean) => Promise<void>;
1503
1528
  /**
1504
1529
  * Define o index da aba selecionada.
1505
1530
  */
@@ -3137,6 +3162,14 @@ declare namespace LocalJSX {
3137
3162
  * Unidade de dados. Responsável pelo controle de edição de registros e informações pertinentes aos campos.
3138
3163
  */
3139
3164
  "dataUnit"?: DataUnit;
3165
+ /**
3166
+ * Ativa/desativa a inserção continua na grade Só funciona quando a prop enableGridInsert está ativa
3167
+ */
3168
+ "enableContinuousInsert"?: boolean;
3169
+ /**
3170
+ * Ativa inserção de registros no modo grade.
3171
+ */
3172
+ "enableGridInsert"?: boolean;
3140
3173
  /**
3141
3174
  * Habilita a seleção de várias linhas.
3142
3175
  */
@@ -3283,6 +3316,10 @@ declare namespace LocalJSX {
3283
3316
  * Define se o modal será fechado ao clicar fora do conteúdo.
3284
3317
  */
3285
3318
  "closeOutsideClick"?: boolean;
3319
+ /**
3320
+ * Define se o modal será fechado se o mouse sair para fora do conteúdo.
3321
+ */
3322
+ "closeOutsideLeave"?: boolean;
3286
3323
  /**
3287
3324
  * Ativa o modo Full, permitindo que o Modal expanda-se verticalmente e ocupe todo o espaço disponível.
3288
3325
  */
@@ -3341,6 +3378,10 @@ declare namespace LocalJSX {
3341
3378
  * Representa a interação com o usuário. OK - Quando o botão é acionado CANCEL - Quando o botão de cancelar é acionado CLOSE - Quando o botão de fechar é acionado. LOAD - Quando o modal é carregado (eventualmente pode ser usado para dar foco a um elemento específico)
3342
3379
  */
3343
3380
  "onEzModalAction"?: (event: EzModalContainerCustomEvent<string>) => void;
3381
+ /**
3382
+ * Define a visibilidade do botão de fechar.
3383
+ */
3384
+ "showCloseButton"?: boolean;
3344
3385
  /**
3345
3386
  * Define se o cabeçalho será mostrado.
3346
3387
  */
@@ -3445,6 +3486,10 @@ declare namespace LocalJSX {
3445
3486
  "overlayType"?: "medium" | "light" | "none";
3446
3487
  }
3447
3488
  interface EzPopup {
3489
+ /**
3490
+ * Possibilita scroll vertical no conteúdo interno do componente
3491
+ */
3492
+ "enabledScroll"?: boolean;
3448
3493
  /**
3449
3494
  * Texto a ser apresentado como título do componente.
3450
3495
  */
@@ -3527,6 +3572,10 @@ declare namespace LocalJSX {
3527
3572
  * Define uma mensagem de orientação ao usuário, colocando o campo em modo inválido.
3528
3573
  */
3529
3574
  "errorMessage"?: string;
3575
+ /**
3576
+ * Informa se o componente está instanciado de dentro de uma grade
3577
+ */
3578
+ "fromGrid"?: boolean;
3530
3579
  /**
3531
3580
  * Quando verdadeiro deixa de exibir a mensagem de erro (se existente) quando focar em um elemento diferente.
3532
3581
  */
@@ -15,6 +15,8 @@ export declare enum CustomEditorSource {
15
15
  FORM = "FORM"
16
16
  }
17
17
  export interface ICustomEditorParams {
18
+ cellPossition?: number | undefined;
19
+ eGridCell?: HTMLElement;
18
20
  value: any;
19
21
  name: string;
20
22
  currentEditor: HTMLElement;
@@ -3,11 +3,13 @@ import { IInvalidField } from "./interfaces";
3
3
  import { IRecordValidator } from "../../utils/form/interfaces";
4
4
  import { FormMetadata } from "./FormMetadata";
5
5
  export default class DataBinder implements DUActionInterceptor {
6
+ private _uuid;
6
7
  private _dataUnit;
7
8
  private _fields;
8
9
  private _formMetadata;
9
10
  private _recordValidatorProcessor;
10
11
  constructor(dataUnit: DataUnit);
12
+ get dataBinderId(): string;
11
13
  private setContextDataBinder;
12
14
  private applyDefaultValues;
13
15
  bind(fields: Array<HTMLElement>, currentContextName: string, formMetadata: FormMetadata, recordsValidator: IRecordValidator): void;
@@ -0,0 +1,5 @@
1
+ import { IInvalidField } from "./IInvalidField";
2
+ export interface IInvalidCell {
3
+ field: IInvalidField;
4
+ recordId: string;
5
+ }
@@ -6,7 +6,7 @@ export declare class RecordValidationProcessor {
6
6
  private _validationSource;
7
7
  private _validator;
8
8
  constructor(dataUnit: DataUnit, validationSource: IValidationSource, validator: IRecordValidator);
9
- validate(): Promise<void>;
9
+ validate(isSaving?: boolean): Promise<void>;
10
10
  private validateRequired;
11
11
  private processValidationResult;
12
12
  private markAsInvalid;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sankhyalabs/ezui",
3
- "version": "5.22.0-dev.2",
3
+ "version": "5.22.0-dev.21",
4
4
  "description": "Biblioteca de componentes Sankhya.",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/custom-elements/index.js",
@@ -1 +0,0 @@
1
- import{UserInterface as e}from"@sankhyalabs/core";import{A as s}from"./p-2187f86c.js";const r=(s,r)=>{let t,i,{name:o,label:a,group:n}=Object.assign({},r),{readOnly:l,required:c}=Object.assign({},r);return s&&(a=a||s.label,o=o||s.name,c=s.required||(null==r?void 0:r.required),l=s.readOnly||(null==r?void 0:r.readOnly),t=s.properties,i=s.userInterface),{name:o,label:a,group:n,readOnly:l,required:c,props:t,userInterface:i||e.SHORTTEXT}};class t{constructor(e,s,r){this._dataUnit=e,this._validationSource=s,this._validator=r}validate(){return new Promise(((e,s)=>{const r=this._dataUnit.getModifiedRecords();for(let e=0;e<r.length;e++){const t=r[e],i=[];let o=this.validateRequired(t);if(o&&!o.isValid&&i.push(o),this._validator&&(o=this._validator.validateRecord(t),o&&!o.isValid&&i.push(o)),i.length>0){this.processValidationResult(i,t.__record__id__),s();break}}return e()}))}validateRequired(e){const s=this._validationSource.getRequiredFields(),r=[];if(new Set(s).forEach((s=>{const t=e[s];if(null==t||""===t){const t=this._validationSource.getMessageForField(s,e.__record__id__);r.push(t?{name:s,message:t}:{name:s,message:"Essa informação é obrigatória"})}})),r.length>0)return{isValid:!1,invalidFields:r,infoMessage:"Há pelo menos um campo obrigatório não preenchido."}}processValidationResult(e,r){e.forEach((e=>{const t=e.invalidFields;if(t&&t.forEach((e=>{this.markAsInvalid(e,r)})),e.infoMessage&&s.info(e.infoMessage),e.errorMessage){const{errorTitle:r,errorMessage:t}=e;s.error(r,t)}}))}markAsInvalid(e,s){this._dataUnit.setInvalidField(e.name,e.message,s),this._validationSource.markAsInvalid(e,s)}}export{t as R,r as b}