@sankhyalabs/sankhyablocks 0.0.0-bugfix-dev-kb-85616.0 → 0.0.0-bugfix-dev-KB-81596.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/dist/cjs/{ClientSideExporterProvider-9bd6fa5a.js → ClientSideExporterProvider-5fff8770.js} +20 -25
  2. package/dist/cjs/{ConfigStorage-6b633b10.js → ConfigStorage-df09fb78.js} +2 -2
  3. package/dist/cjs/{DataFetcher-875371e9.js → DataFetcher-1afdb18e.js} +14 -2
  4. package/dist/cjs/{pesquisa-fetcher-30cab386.js → ISave-c76e2c51.js} +35 -3
  5. package/dist/cjs/{SnkFormConfigManager-d680be08.js → SnkFormConfigManager-45a8d7b7.js} +3 -3
  6. package/dist/cjs/{auth-fetcher-24ba4135.js → auth-fetcher-1687ac0a.js} +1 -1
  7. package/dist/cjs/{constants-241934b3.js → constants-77c1b8bd.js} +1 -0
  8. package/dist/cjs/{dataunit-fetcher-b95768e8.js → dataunit-fetcher-4a5d491a.js} +7 -6
  9. package/dist/cjs/{form-config-fetcher-e0a512c3.js → form-config-fetcher-40d3f752.js} +15 -1
  10. package/dist/cjs/index-f9e81701.js +2 -2
  11. package/dist/cjs/loader.cjs.js +1 -1
  12. package/dist/cjs/pesquisa-grid_2.cjs.entry.js +6 -7
  13. package/dist/cjs/sankhyablocks.cjs.js +1 -1
  14. package/dist/cjs/{snk-actions-button_5.cjs.entry.js → snk-actions-button_7.cjs.entry.js} +68 -7
  15. package/dist/cjs/snk-application.cjs.entry.js +176 -13
  16. package/dist/cjs/snk-attach.cjs.entry.js +6 -7
  17. package/dist/cjs/snk-config-options_3.cjs.entry.js +10 -8
  18. package/dist/cjs/snk-configurator.cjs.entry.js +9 -2
  19. package/dist/cjs/snk-crud.cjs.entry.js +8 -8
  20. package/dist/cjs/snk-data-exporter.cjs.entry.js +6 -7
  21. package/dist/cjs/{snk-data-unit-33937ffe.js → snk-data-unit-4b510d6e.js} +1 -1
  22. package/dist/cjs/snk-data-unit.cjs.entry.js +3 -3
  23. package/dist/cjs/snk-detail-view.cjs.entry.js +11 -11
  24. package/dist/cjs/snk-field-config.cjs.entry.js +1 -1
  25. package/dist/cjs/snk-filter-bar_4.cjs.entry.js +3 -3
  26. package/dist/cjs/snk-filter-modal-item.cjs.entry.js +3 -3
  27. package/dist/cjs/snk-filter-search.cjs.entry.js +18 -5
  28. package/dist/cjs/snk-grid.cjs.entry.js +7 -8
  29. package/dist/cjs/{snk-guides-viewer-65964889.js → snk-guides-viewer-e8e5f7b4.js} +7 -8
  30. package/dist/cjs/snk-guides-viewer.cjs.entry.js +8 -9
  31. package/dist/cjs/snk-personalized-filter.cjs.entry.js +3 -3
  32. package/dist/cjs/snk-pesquisa.cjs.entry.js +12 -13
  33. package/dist/cjs/snk-simple-crud.cjs.entry.js +10 -10
  34. package/dist/cjs/snk-tab-config.cjs.entry.js +1 -1
  35. package/dist/collection/collection-manifest.json +2 -0
  36. package/dist/collection/components/snk-application/errorhandler/snk-error-handler.js +5 -2
  37. package/dist/collection/components/snk-application/search-strategy/exec-prepared-search-plus.js +107 -0
  38. package/dist/collection/components/snk-application/snk-application.js +126 -4
  39. package/dist/collection/components/snk-configurator/snk-configurator.js +26 -1
  40. package/dist/collection/components/snk-crud/snk-crud.js +20 -1
  41. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.css +10 -1
  42. package/dist/collection/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.js +25 -1
  43. package/dist/collection/components/snk-crud/subcomponents/snk-guides-viewer.js +1 -1
  44. package/dist/collection/components/snk-data-exporter/interfaces/IExporterProvider.js +15 -19
  45. package/dist/collection/components/snk-filter-bar/filter-item/editors/snk-filter-search.js +18 -5
  46. package/dist/collection/components/snk-form-config/subcomponents/snk-config-options/snk-config-options.js +5 -3
  47. package/dist/collection/components/snk-grid-config/snk-grid-config.js +2 -0
  48. package/dist/collection/components/snk-layout-form-config/snk-layout-form-config.css +3 -0
  49. package/dist/collection/components/snk-layout-form-config/snk-layout-form-config.js +73 -0
  50. package/dist/collection/components/snk-layout-form-config/snk-view-representation/snk-view-representation.css +78 -0
  51. package/dist/collection/components/snk-layout-form-config/snk-view-representation/snk-view-representation.js +57 -0
  52. package/dist/collection/components/snk-simple-crud/snk-simple-crud.js +20 -1
  53. package/dist/collection/lib/configs/LayoutFormConfig.js +25 -0
  54. package/dist/collection/lib/http/data-fetcher/DataFetcher.js +14 -2
  55. package/dist/collection/lib/http/data-fetcher/fetchers/data-unit/loadstrategy/DatasetStrategy.js +6 -5
  56. package/dist/collection/lib/http/data-fetcher/fetchers/form-config-fetcher.js +14 -0
  57. package/dist/collection/lib/http/data-fetcher/fetchers/pesquisa-fetcher.js +26 -2
  58. package/dist/collection/lib/utils/constants.js +1 -0
  59. package/dist/components/ContinuousInsertUtils.js +15 -19
  60. package/dist/components/DataFetcher.js +14 -2
  61. package/dist/components/ISave.js +26 -2
  62. package/dist/components/constants.js +1 -0
  63. package/dist/components/dataunit-fetcher.js +6 -5
  64. package/dist/components/form-config-fetcher.js +14 -0
  65. package/dist/components/index.d.ts +2 -0
  66. package/dist/components/index.js +2 -0
  67. package/dist/components/snk-application2.js +174 -6
  68. package/dist/components/snk-attach2.js +34 -22
  69. package/dist/components/snk-config-options2.js +5 -3
  70. package/dist/components/snk-configurator2.js +22 -2
  71. package/dist/components/snk-crud.js +76 -62
  72. package/dist/components/snk-detail-view2.js +110 -86
  73. package/dist/components/snk-filter-search.js +18 -5
  74. package/dist/components/snk-grid-config2.js +2 -0
  75. package/dist/components/snk-layout-form-config.d.ts +11 -0
  76. package/dist/components/snk-layout-form-config.js +6 -0
  77. package/dist/components/snk-layout-form-config2.js +73 -0
  78. package/dist/components/snk-simple-crud2.js +33 -19
  79. package/dist/components/snk-view-representation.d.ts +11 -0
  80. package/dist/components/snk-view-representation.js +6 -0
  81. package/dist/components/snk-view-representation2.js +41 -0
  82. package/dist/esm/{ClientSideExporterProvider-e42c5a48.js → ClientSideExporterProvider-da9935ed.js} +20 -25
  83. package/dist/esm/{ConfigStorage-e5c1f4c0.js → ConfigStorage-71e6766f.js} +2 -2
  84. package/dist/esm/{DataFetcher-ecf5f903.js → DataFetcher-88e56266.js} +14 -2
  85. package/dist/esm/{pesquisa-fetcher-e26c3295.js → ISave-5efafc97.js} +36 -4
  86. package/dist/esm/{SnkFormConfigManager-1efd102b.js → SnkFormConfigManager-be490a33.js} +3 -3
  87. package/dist/esm/{auth-fetcher-9987c66e.js → auth-fetcher-3510520e.js} +1 -1
  88. package/dist/esm/{constants-75abb876.js → constants-7db1128a.js} +1 -0
  89. package/dist/esm/{dataunit-fetcher-ed6e65ef.js → dataunit-fetcher-1d02ecfc.js} +7 -6
  90. package/dist/esm/{form-config-fetcher-34becd23.js → form-config-fetcher-fa208a6c.js} +15 -1
  91. package/dist/esm/index-a7d3d3f1.js +2 -2
  92. package/dist/esm/loader.js +1 -1
  93. package/dist/esm/pesquisa-grid_2.entry.js +5 -6
  94. package/dist/esm/sankhyablocks.js +1 -1
  95. package/dist/esm/{snk-actions-button_5.entry.js → snk-actions-button_7.entry.js} +68 -9
  96. package/dist/esm/snk-application.entry.js +176 -13
  97. package/dist/esm/snk-attach.entry.js +6 -7
  98. package/dist/esm/snk-config-options_3.entry.js +10 -8
  99. package/dist/esm/snk-configurator.entry.js +9 -2
  100. package/dist/esm/snk-crud.entry.js +8 -8
  101. package/dist/esm/snk-data-exporter.entry.js +6 -7
  102. package/dist/esm/{snk-data-unit-6258b8ae.js → snk-data-unit-7d0ce406.js} +1 -1
  103. package/dist/esm/snk-data-unit.entry.js +3 -3
  104. package/dist/esm/snk-detail-view.entry.js +11 -11
  105. package/dist/esm/snk-field-config.entry.js +1 -1
  106. package/dist/esm/snk-filter-bar_4.entry.js +3 -3
  107. package/dist/esm/snk-filter-modal-item.entry.js +3 -3
  108. package/dist/esm/snk-filter-search.entry.js +18 -5
  109. package/dist/esm/snk-grid.entry.js +7 -8
  110. package/dist/esm/{snk-guides-viewer-9e43d0ca.js → snk-guides-viewer-c44b3839.js} +7 -8
  111. package/dist/esm/snk-guides-viewer.entry.js +8 -9
  112. package/dist/esm/snk-personalized-filter.entry.js +3 -3
  113. package/dist/esm/snk-pesquisa.entry.js +5 -6
  114. package/dist/esm/snk-simple-crud.entry.js +10 -10
  115. package/dist/esm/snk-tab-config.entry.js +1 -1
  116. package/dist/sankhyablocks/p-00796b12.entry.js +1 -0
  117. package/dist/sankhyablocks/{p-3fcb90d6.js → p-03b68a74.js} +1 -1
  118. package/dist/sankhyablocks/p-092078e3.entry.js +1 -0
  119. package/dist/sankhyablocks/{p-d3b9b377.entry.js → p-165cde3b.entry.js} +1 -1
  120. package/dist/sankhyablocks/p-35f85998.entry.js +1 -0
  121. package/dist/sankhyablocks/{p-2953c481.entry.js → p-3749dffb.entry.js} +1 -1
  122. package/dist/sankhyablocks/p-38e3ffda.entry.js +1 -0
  123. package/dist/sankhyablocks/p-3b190fb1.entry.js +1 -0
  124. package/dist/sankhyablocks/{p-6c43fcde.entry.js → p-490b75b5.entry.js} +1 -1
  125. package/dist/sankhyablocks/p-4ad638be.js +1 -0
  126. package/dist/sankhyablocks/p-5503e89f.entry.js +1 -0
  127. package/dist/sankhyablocks/p-5cc206bb.entry.js +1 -0
  128. package/dist/sankhyablocks/{p-e66bcb5c.entry.js → p-5ffa0493.entry.js} +1 -1
  129. package/dist/sankhyablocks/{p-6c9d1be4.entry.js → p-60137b7a.entry.js} +1 -1
  130. package/dist/sankhyablocks/p-601b252b.js +26 -0
  131. package/dist/sankhyablocks/p-6293ded9.entry.js +11 -0
  132. package/dist/sankhyablocks/p-6dd38d7b.js +6 -0
  133. package/dist/sankhyablocks/{p-abd9681c.js → p-6e0a5314.js} +1 -1
  134. package/dist/sankhyablocks/{p-a77bdadc.js → p-73285a8a.js} +1 -1
  135. package/dist/sankhyablocks/p-893b9483.entry.js +1 -0
  136. package/dist/sankhyablocks/p-90684a75.entry.js +1 -0
  137. package/dist/sankhyablocks/{p-1d19a5b0.js → p-9261d8a0.js} +1 -1
  138. package/dist/sankhyablocks/p-92778d5a.js +1 -0
  139. package/dist/sankhyablocks/{p-7e0a0aae.js → p-a8be1d67.js} +1 -1
  140. package/dist/sankhyablocks/{p-2746d606.entry.js → p-b2a2a83e.entry.js} +1 -1
  141. package/dist/sankhyablocks/p-b6200d32.entry.js +1 -0
  142. package/dist/sankhyablocks/{p-23cd6abf.entry.js → p-c0eb761b.entry.js} +1 -1
  143. package/dist/sankhyablocks/p-d9fdb018.entry.js +1 -0
  144. package/dist/sankhyablocks/{p-3ce68be5.js → p-ebdb9d89.js} +1 -1
  145. package/dist/sankhyablocks/p-ef6f0a1b.entry.js +1 -0
  146. package/dist/sankhyablocks/{p-5a7e18f4.js → p-fbba7e3d.js} +1 -1
  147. package/dist/sankhyablocks/sankhyablocks.esm.js +1 -1
  148. package/dist/types/components/snk-application/search-strategy/exec-prepared-search-plus.d.ts +5 -0
  149. package/dist/types/components/snk-application/snk-application.d.ts +17 -2
  150. package/dist/types/components/snk-configurator/snk-configurator.d.ts +6 -0
  151. package/dist/types/components/snk-crud/snk-crud.d.ts +4 -0
  152. package/dist/types/components/snk-crud/subcomponents/snk-detail-view/snk-detail-view.d.ts +5 -0
  153. package/dist/types/components/snk-filter-bar/filter-item/editors/snk-filter-search.d.ts +5 -3
  154. package/dist/types/components/snk-grid-config/snk-grid-config.d.ts +1 -0
  155. package/dist/types/components/snk-layout-form-config/snk-layout-form-config.d.ts +15 -0
  156. package/dist/types/components/snk-layout-form-config/snk-view-representation/snk-view-representation.d.ts +10 -0
  157. package/dist/types/components/snk-simple-crud/snk-simple-crud.d.ts +4 -0
  158. package/dist/types/components.d.ts +83 -1
  159. package/dist/types/lib/configs/LayoutFormConfig.d.ts +11 -0
  160. package/dist/types/lib/http/data-fetcher/fetchers/form-config-fetcher.d.ts +6 -0
  161. package/dist/types/lib/http/data-fetcher/fetchers/pesquisa-fetcher.d.ts +4 -1
  162. package/dist/types/lib/utils/constants.d.ts +1 -0
  163. package/package.json +1 -1
  164. package/react/components.d.ts +2 -0
  165. package/react/components.js +2 -0
  166. package/react/components.js.map +1 -1
  167. package/dist/cjs/ISave-e91b70a7.js +0 -9
  168. package/dist/esm/ISave-d8c8bc59.js +0 -9
  169. package/dist/sankhyablocks/p-04acdc3a.entry.js +0 -1
  170. package/dist/sankhyablocks/p-05fda408.entry.js +0 -1
  171. package/dist/sankhyablocks/p-1a8295af.entry.js +0 -1
  172. package/dist/sankhyablocks/p-1e48864c.js +0 -1
  173. package/dist/sankhyablocks/p-21749402.js +0 -1
  174. package/dist/sankhyablocks/p-22ddc147.js +0 -26
  175. package/dist/sankhyablocks/p-27d12f8f.entry.js +0 -1
  176. package/dist/sankhyablocks/p-3bab7e9c.entry.js +0 -1
  177. package/dist/sankhyablocks/p-3d424ae9.entry.js +0 -1
  178. package/dist/sankhyablocks/p-4b01cbad.entry.js +0 -11
  179. package/dist/sankhyablocks/p-4c9adf1c.entry.js +0 -1
  180. package/dist/sankhyablocks/p-6b898a51.entry.js +0 -1
  181. package/dist/sankhyablocks/p-9523fc40.entry.js +0 -1
  182. package/dist/sankhyablocks/p-a18de25e.js +0 -1
  183. package/dist/sankhyablocks/p-be2e5f36.entry.js +0 -1
  184. package/dist/sankhyablocks/p-c8622597.entry.js +0 -1
  185. package/dist/sankhyablocks/p-d571e243.entry.js +0 -1
  186. package/dist/sankhyablocks/p-ef076eea.js +0 -6
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-f9e81701.js');
6
6
  const Sortable = require('./Sortable-fb1c4cbb.js');
7
7
  const core = require('@sankhyalabs/core');
8
- const constants = require('./constants-241934b3.js');
8
+ const constants = require('./constants-77c1b8bd.js');
9
9
 
10
10
  const snkTabConfigCss = "@keyframes activate{0%{clip-path:inset(calc(100% - 3px) 50% 0px 50%)}100%{clip-path:inset(calc(100% - 3px) 0px 0px 0px)}}.sc-snk-tab-config-h{--snk-tab-config--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>');--snk-tab-config--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>');--snk-tab-config__lower-bar--background-color:var(--color--disable-primary, #e5eaf0);--snk-tab-config__lower-bar--border:2px solid var(--color--disable-primary, #e5eaf0);--snk-tab-config__tab--color:var(--text--primary, #626e82);--snk-tab-config__tab--font-family:var(--font-pattern, \"Roboto\");--snk-tab-config__tab--font-size:var(--title--small, 14px);--snk-tab-config__tab--padding:var(--space--small, 6px) var(--space--medium, 12px);--snk-tab-config__tab-is-active--color:var(--color--primary, #008561);--snk-tab-config__tab-hover--color:var(--color--secondary, #383c45);--snk-tab-config__tab-is-focused--border:1px dashed var(--color--primary, #008561);--snk-tab-config__tab-label--text-shadow:var(--text-shadow, 0 0 0 #353535, 0 0 1px transparent);--snk-tab-config__tab-label--margin-bottom:var(--space--extra-small, 3px);--snk-tab-config__new-button-icon--color:var(--color--secondary-700, #1C1D22);--snk-tab-config__forward-button--background-color:var(--text--primary, #626e82);--snk-tab-config__forward-button-hover--background-color:var(--color--primary, #008561);--snk-tab-config__left-icon--padding-right:var(--space--small, 6px);--snk-tab-config__left-icon--color:var(--text--disable, #AFB6C0);--snk-tab-config__tab-label-disabled--color:var(--text--disable, #AFB6C0);--snk-tab-config__slot--margin-left:var(--space--small, 6px);display:flex;position:relative;width:100%;overflow:hidden}.tab-config__scroll.sc-snk-tab-config{display:flex;width:100%;scroll-behavior:smooth;overflow-x:auto;scrollbar-width:none}.tab-config__lower-bar.sc-snk-tab-config{position:absolute;left:0%;right:0%;top:91%;bottom:0%;border-radius:2px;background-color:var(--snk-tab-config__lower-bar--background-color);border:var(--snk-tab-config__lower-bar--border)}.tab-config__tab.sc-snk-tab-config{display:flex;border:none;background-color:unset;cursor:pointer;align-items:center;justify-content:center;min-width:fit-content;color:var(--snk-tab-config__tab--color);font-family:var(--snk-tab-config__tab--font-family);font-size:var(--snk-tab-config__tab--font-size);padding:var(--snk-tab-config__tab--padding)}.tab-config__tab.sc-snk-tab-config:focus,.tab-config__forward-button.sc-snk-tab-config,.tab-config__backward-button.sc-snk-tab-config{outline:none}.tab-config__tab--is-active.sc-snk-tab-config{position:relative;color:var(--snk-tab-config__tab-is-active--color)}.tab-config__tab.sc-snk-tab-config:hover{color:var(--snk-tab-config__tab-hover--color)}.tab-config__tab--is-active.sc-snk-tab-config:hover{color:var(--snk-tab-config__tab-is-active--color)}.tab-config__tab--is-active.sc-snk-tab-config::after{content:\"\";position:absolute;width:100%;height:100%;clip-path:inset(calc(100% - 3px) 0px 0px 0px);animation:activate 0.25s ease-in-out;background-color:var(--snk-tab-config__tab-is-active--color)}.tab-config__tab--is-focused.sc-snk-tab-config{border:var(--snk-tab-config__tab-is-focused--border)}.tab-config__tab-label.sc-snk-tab-config{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-shadow:var(--snk-tab-config__tab-label--text-shadow);margin-bottom:var(--snk-tab-config__tab-label--margin-bottom)}.tab-config__forward-button.sc-snk-tab-config,.tab-config__backward-button.sc-snk-tab-config{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}.tab-config__new-button.sc-snk-tab-config{position:absolute;z-index:1;display:flex;box-sizing:border-box;padding:0px;top:0px;right:0px;height:100%;border:none;background-color:unset;cursor:pointer;justify-content:center;align-items:center}.tab-config__new-button.sc-snk-tab-config ez-icon.sc-snk-tab-config{--ez-icon--color:var(--snk-tab-config__new-button-icon--color)}.tab-config__backward-button.sc-snk-tab-config{left:0px;box-shadow:10px 10px 5px 5px white;background:white}.tab-config__forward-button.sc-snk-tab-config{box-shadow:10px 10px 5px 20px white;background:white}.tab-config__forward-button.sc-snk-tab-config::after,.tab-config__backward-button.sc-snk-tab-config::after{content:'';display:flex;width:10px;height:16px;background-color:var(--snk-tab-config__forward-button--background-color)}.tab-config__forward-button.sc-snk-tab-config::after{-webkit-mask-image:var(--snk-tab-config--forward-icon);mask-image:var(--snk-tab-config--forward-icon)}.tab-config__backward-button.sc-snk-tab-config::after{-webkit-mask-image:var(--snk-tab-config--backward-icon);mask-image:var(--snk-tab-config--backward-icon)}.tab-config__forward-button.sc-snk-tab-config:hover::after,.tab-config__backward-button.sc-snk-tab-config:hover::after{background-color:var(--snk-tab-config__forward-button-hover--background-color)}.tab-config__new-button.sc-snk-tab-config:hover ez-icon.sc-snk-tab-config{--ez-icon--color:var(--snk-tab-config__forward-button-hover--background-color)}.tab-config__hidden.sc-snk-tab-config{display:none}.tab-config__scroll.sc-snk-tab-config::-webkit-scrollbar{display:none}.tab-config__left-icon.sc-snk-tab-config{padding-right:var(--snk-tab-config__left-icon--padding-right);--ez-icon--color:var(--snk-tab-config__left-icon--color)}.tab-config__left-icon--eye-off.sc-snk-tab-config{--ez-icon--color:var(--snk-tab-config__left-icon--color)}.tab-config__right-icon.sc-snk-tab-config{visibility:hidden;padding-left:var(--snk-tab-config__left-icon--padding-right)}.tab-config__tab.sc-snk-tab-config:hover .tab-config__right-icon.sc-snk-tab-config{visibility:visible}.tab-config__tab--is-active.sc-snk-tab-config .tab-config__right-icon.sc-snk-tab-config{visibility:visible;--ez-icon--color:var(--snk-tab-config__tab-is-active--color)}.tab-config__tab.sc-snk-tab-config:hover .tab-config__right-icon.sc-snk-tab-config{--ez-icon--color:var(--snk-tab-config__tab-hover--color)}.tab-config__tab--is-active.sc-snk-tab-config:hover .tab-config__right-icon.sc-snk-tab-config{--ez-icon--color:var(--snk-tab-config__tab-is-active--color)}.tab-config__actions-button.sc-snk-tab-config{--ez-actions-button__btn-action--min-width:100px;visibility:hidden;opacity:0;transition:visibility 1s linear, opacity 0.3s linear}.tab-config__tab.sc-snk-tab-config:hover .tab-config__actions-button.sc-snk-tab-config{visibility:visible;opacity:1;transition:visibility 0.2s linear, opacity 0.10s linear}[data-draggable-element].sc-snk-tab-config{cursor:grab}.tab-config__tab-label-disabled.sc-snk-tab-config{color:var(--snk-tab-config__tab-label-disabled--color)}.tab-config__slot.sc-snk-tab-config{margin-left:var(--snk-tab-config__slot--margin-left)}";
11
11
 
@@ -41,6 +41,8 @@
41
41
  "./components/snk-grid/snk-grid.js",
42
42
  "./components/snk-grid-config/snk-grid-config.js",
43
43
  "./components/snk-grid-config/snk-select-box/snk-select-box.js",
44
+ "./components/snk-layout-form-config/snk-layout-form-config.js",
45
+ "./components/snk-layout-form-config/snk-view-representation/snk-view-representation.js",
44
46
  "./components/snk-personalized-filter/snk-personalized-filter.js",
45
47
  "./components/snk-personalized-filter/subcomponents/snk-expression-group/snk-expression-group.js",
46
48
  "./components/snk-personalized-filter/subcomponents/snk-expression-item/snk-expression-item.js",
@@ -1,4 +1,4 @@
1
- import { WarningException, WaitingChangeException, ErrorException, ObjectUtils } from "@sankhyalabs/core";
1
+ import { WarningException, WaitingChangeException, ErrorException, ObjectUtils, SilentException } from "@sankhyalabs/core";
2
2
  export class SnkErrorHandler {
3
3
  constructor(app) {
4
4
  this._app = app;
@@ -33,7 +33,10 @@ export class SnkErrorHandler {
33
33
  if (exception.errorCode) {
34
34
  exception.message += this.buildErrorCodeHTML(exception.errorCode);
35
35
  }
36
- if (exception instanceof WaitingChangeException) {
36
+ if (exception instanceof SilentException) {
37
+ console.warn("SilentException ignorada", exception);
38
+ }
39
+ else if (exception instanceof WaitingChangeException) {
37
40
  this._app.alert(exception.title, exception.message);
38
41
  }
39
42
  else if (exception instanceof WarningException) {
@@ -0,0 +1,107 @@
1
+ import { ArrayUtils, ElementIDUtils, SearchUtils } from "@sankhyalabs/core";
2
+ import { ObjectUtils } from "@sankhyalabs/core";
3
+ import { StringUtils } from "@sankhyalabs/core";
4
+ const QTD_DETAIL_FIELDS_PREDICTIVE_SEARCH = 6;
5
+ const INVALID_CONTENT_PATTERNS = ['<img', '<svg'];
6
+ const executePreparedSearchPlus = async (mode, argument, options, app, pesquisaFetcher) => {
7
+ var _a;
8
+ const mdByName = {};
9
+ const { entity, entityDescription, criteria, searchOptions, isHierarchyEntity, allowsNonAnalytic } = options;
10
+ if (mode === "ADVANCED") {
11
+ return new Promise((accept, reject) => {
12
+ const pesquisaContent = document.createElement("snk-pesquisa");
13
+ pesquisaContent[ElementIDUtils.DATA_ELEMENT_ID_ATTRIBUTE_NAME] = `entity_${entity}`;
14
+ pesquisaContent.entityName = entity;
15
+ pesquisaContent.argument = argument;
16
+ pesquisaContent.searchLoader = (text) => pesquisaFetcher.loadAdvancedSearch(entity, text, criteria, searchOptions);
17
+ pesquisaContent.isHierarchyEntity = isHierarchyEntity;
18
+ if (isHierarchyEntity) {
19
+ pesquisaContent.treeLoader = (text) => pesquisaFetcher.loadTree(entity, text, criteria, searchOptions);
20
+ pesquisaContent.allowsNonAnalytic = allowsNonAnalytic;
21
+ }
22
+ pesquisaContent.selectItem = (option) => {
23
+ accept(option);
24
+ app.clearPopUpTitle();
25
+ app.closePopUp();
26
+ };
27
+ app.setPopUpTitle(entityDescription);
28
+ app.showPopUp(pesquisaContent, undefined, undefined, reject);
29
+ });
30
+ }
31
+ else if (mode === "LOAD_DESCRIPTION") {
32
+ let result = await pesquisaFetcher.loadByCode(entity, argument, criteria, searchOptions);
33
+ result = ObjectUtils.stringToObject(result.json.$);
34
+ let descriptionField = result.descriptionField;
35
+ const option = (_a = result.data) === null || _a === void 0 ? void 0 : _a[0];
36
+ if (!option) {
37
+ return {
38
+ value: argument,
39
+ label: ""
40
+ };
41
+ }
42
+ return {
43
+ value: argument,
44
+ label: option[descriptionField]
45
+ };
46
+ }
47
+ else {
48
+ let codeValue;
49
+ let result = await pesquisaFetcher.loadAdvancedSearch(entity, argument, criteria, searchOptions, codeValue);
50
+ result = ObjectUtils.stringToObject(result.json.$);
51
+ let descriptionField = result.descriptionField;
52
+ let pkField = result.pkField;
53
+ const list = result.data.map((item) => {
54
+ let fieldsMetadata = filterInvalidFields(result, item, mdByName);
55
+ let fields = filterMathFields(item['__matchFields'], fieldsMetadata, QTD_DETAIL_FIELDS_PREDICTIVE_SEARCH, mdByName);
56
+ return buildOptionItem(argument, item, fields, descriptionField, pkField);
57
+ });
58
+ return list;
59
+ }
60
+ };
61
+ const buildOptionItem = (argument, item, fields, descriptionField, pkField) => {
62
+ var _a;
63
+ const matchFields = item['__matchFields'];
64
+ const descriptionValue = (_a = item[descriptionField]) !== null && _a !== void 0 ? _a : "";
65
+ const pkValue = item[pkField];
66
+ let searchOption = {
67
+ value: pkValue,
68
+ label: descriptionValue,
69
+ presentationValue: StringUtils.highlightValue(argument, matchFields, pkValue, fields, true),
70
+ presentationLabel: descriptionField ? StringUtils.highlightValue(argument, matchFields, descriptionValue, fields, true) : "",
71
+ details: SearchUtils.buildDetails(argument, fields, item)
72
+ };
73
+ return searchOption;
74
+ };
75
+ const filterInvalidFields = (resp, item, mdByName) => {
76
+ let fieldsMetadata = resp.fieldsMetadata.filter((field) => {
77
+ let accept = !StringUtils.isEmpty(item[field.fieldName]) &&
78
+ field.visible !== false &&
79
+ field.type !== 'B' &&
80
+ resp.pkField !== field.fieldName &&
81
+ resp.descriptionField !== field.fieldName &&
82
+ (field.isPrimaryKey || !field.isLinkField) &&
83
+ !(field.type === 'S' && field.presentationType === 'H');
84
+ if (accept) {
85
+ mdByName[field.fieldName] = field;
86
+ }
87
+ //Condição que trata o problema de trazer imagem no entityCard na pesquisa de registros
88
+ if (typeof item[field.fieldName] === 'string' && INVALID_CONTENT_PATTERNS.some(pattern => item[field.fieldName].includes(pattern))) {
89
+ return false;
90
+ }
91
+ return accept;
92
+ });
93
+ return fieldsMetadata;
94
+ };
95
+ const filterMathFields = (matchFields, fields, qtyFields, mdByName) => {
96
+ if (matchFields && Array.isArray(matchFields)) {
97
+ matchFields.forEach((matchField) => {
98
+ let fieldMD = ArrayUtils.removeReference(fields, mdByName[matchField]);
99
+ if (fieldMD) {
100
+ fields.unshift(fieldMD);
101
+ }
102
+ });
103
+ }
104
+ fields = fields.slice(0, qtyFields);
105
+ return fields;
106
+ };
107
+ export default executePreparedSearchPlus;
@@ -18,6 +18,9 @@ import { SnkErrorHandler } from "./errorhandler/snk-error-handler";
18
18
  import RequestListenerFactory from "./request-listener/RequestListenerFactory";
19
19
  import PreloadManager from "../../lib/http/data-fetcher/fetchers/data-unit/cache/PreloadManager";
20
20
  import { TEMPLATES_SKELETON } from "../../lib/utils/constants";
21
+ import executePreparedSearchPlus from "./search-strategy/exec-prepared-search-plus";
22
+ import { LayoutFormConfig } from "../../lib/configs/LayoutFormConfig";
23
+ import { FormConfigFetcher } from "../../lib";
21
24
  /**
22
25
  * É possível customizar as mensagens dos blocos de construção através de um pequeno modulo na estrutura da aplicação:
23
26
  * - Criar um arquivo no seguinte caminho: /messages/appmessages.msg.js.
@@ -37,6 +40,8 @@ export class SnkApplication {
37
40
  this._pendingActions = new Map;
38
41
  this._loadPkParameter = null;
39
42
  this._isLoadedByPk = false;
43
+ this._formConfigFetcher = new FormConfigFetcher();
44
+ this._LayoutFormConfigSingleton = LayoutFormConfig.getInstance();
40
45
  this._applicationReady = false;
41
46
  this._templateSkeleton = TEMPLATES_SKELETON.GRID;
42
47
  this._activeScrimWindow = false;
@@ -111,6 +116,14 @@ export class SnkApplication {
111
116
  async getKeyboardManager() {
112
117
  return Promise.resolve(this._keyboardManager);
113
118
  }
119
+ /**
120
+ * Obtém o notificador de Layout de formulario.
121
+ *
122
+ * @return {LayoutFormConfig} the Configurador de Layout do Formulario
123
+ */
124
+ async getLayoutFormConfig() {
125
+ return Promise.resolve(this._LayoutFormConfigSingleton);
126
+ }
114
127
  /**
115
128
  * Obtém `true` caso o usuário logado seja o SUP.
116
129
  */
@@ -643,7 +656,7 @@ export class SnkApplication {
643
656
  searchOptions,
644
657
  allowsNonAnalytic
645
658
  };
646
- return this.executePreparedSearch(mode, argument, options);
659
+ return (ctxOptions === null || ctxOptions === void 0 ? void 0 : ctxOptions.useSearchPlus) ? this.executePreparedSearchPlus(mode, argument, options) : this.executePreparedSearch(mode, argument, options);
647
660
  }
648
661
  }
649
662
  filterInvalidFields(resp, item, mdByName) {
@@ -687,13 +700,23 @@ export class SnkApplication {
687
700
  };
688
701
  return exibitionItem;
689
702
  }
703
+ /**
704
+ * Realiza a pesquisa de registros
705
+ * Ex.: snk-config-options
706
+ */
707
+ async executePreparedSearchPlus(mode, argument, options) {
708
+ return await this.executePreparedSearch(mode, argument, Object.assign(Object.assign({}, options), { useSearchPlus: true }));
709
+ }
690
710
  /**
691
711
  * Obtém as opções em componentes de pesquisa
692
712
  * Ex.: snk-config-options
693
713
  */
694
714
  async executePreparedSearch(mode, argument, options) {
695
715
  const mdByName = {};
696
- const { entity, entityDescription, criteria, searchOptions, isHierarchyEntity, allowsNonAnalytic } = options;
716
+ const { entity, entityDescription, criteria, searchOptions, isHierarchyEntity, allowsNonAnalytic, useSearchPlus } = options;
717
+ if (useSearchPlus) {
718
+ return executePreparedSearchPlus(mode, argument, options, this, this.pesquisaFetcher);
719
+ }
697
720
  if (mode === "ADVANCED") {
698
721
  return new Promise((accept, reject) => {
699
722
  const pesquisaContent = document.createElement("snk-pesquisa");
@@ -843,10 +866,10 @@ export class SnkApplication {
843
866
  });
844
867
  }
845
868
  }
846
- clearPopUpTitle() {
869
+ async clearPopUpTitle() {
847
870
  this._popUp.ezTitle = "";
848
871
  }
849
- setPopUpTitle(title) {
872
+ async setPopUpTitle(title) {
850
873
  this._popUp.ezTitle = title;
851
874
  }
852
875
  async pkChangeListener() {
@@ -1016,6 +1039,9 @@ export class SnkApplication {
1016
1039
  ApplicationContext.setContextValue("__EZUI__SEARCH__OPTION__LOADER__", (searchArgument, fieldName, dataUnit, ctxOptions) => {
1017
1040
  return this.executeSearch(searchArgument, fieldName, dataUnit, ctxOptions);
1018
1041
  });
1042
+ ApplicationContext.setContextValue("__EZUI__SEARCH__PLUS__OPTION__LOADER__", (searchArgument, fieldName, dataUnit, ctxOptions) => {
1043
+ return this.executeSearch(searchArgument, fieldName, dataUnit, Object.assign(Object.assign({}, ctxOptions), { useSearchPlus: true }));
1044
+ });
1019
1045
  ApplicationContext.setContextValue("__EZUI__GRID_LICENSE__", agGridLicense);
1020
1046
  this.registerPkChangeListener();
1021
1047
  ErrorTracking.init();
@@ -1026,6 +1052,12 @@ export class SnkApplication {
1026
1052
  ConfigStorage.preload(this.applicationResourceID, this.configName, legacyConfig);
1027
1053
  document.addEventListener("click", () => Workspace.applicationClick());
1028
1054
  this._waitingAppReady.forEach(resolve => resolve());
1055
+ this.setLayoutFormConfig();
1056
+ }
1057
+ async setLayoutFormConfig() {
1058
+ const response = await this._formConfigFetcher.fetchLayoutFormConfig('formColCfg.' + this.applicationResourceID);
1059
+ const config = isNaN(Number(response === null || response === void 0 ? void 0 : response.config)) ? null : Number(response === null || response === void 0 ? void 0 : response.config);
1060
+ this._LayoutFormConfigSingleton.setConfig(config);
1029
1061
  }
1030
1062
  connectedCallback() {
1031
1063
  this._isBrowserTypeElectron = UserAgentUtils.isElectron();
@@ -1379,6 +1411,29 @@ export class SnkApplication {
1379
1411
  }]
1380
1412
  }
1381
1413
  },
1414
+ "getLayoutFormConfig": {
1415
+ "complexType": {
1416
+ "signature": "() => Promise<LayoutFormConfig>",
1417
+ "parameters": [],
1418
+ "references": {
1419
+ "Promise": {
1420
+ "location": "global"
1421
+ },
1422
+ "LayoutFormConfig": {
1423
+ "location": "import",
1424
+ "path": "../../lib/configs/LayoutFormConfig"
1425
+ }
1426
+ },
1427
+ "return": "Promise<LayoutFormConfig>"
1428
+ },
1429
+ "docs": {
1430
+ "text": "Obt\u00E9m o notificador de Layout de formulario.",
1431
+ "tags": [{
1432
+ "name": "return",
1433
+ "text": "the Configurador de Layout do Formulario"
1434
+ }]
1435
+ }
1436
+ },
1382
1437
  "isUserSup": {
1383
1438
  "complexType": {
1384
1439
  "signature": "() => Promise<boolean>",
@@ -2485,6 +2540,38 @@ export class SnkApplication {
2485
2540
  "tags": []
2486
2541
  }
2487
2542
  },
2543
+ "executePreparedSearchPlus": {
2544
+ "complexType": {
2545
+ "signature": "(mode: string, argument: string, options: any) => Promise<Array<IOption> | IOption>",
2546
+ "parameters": [{
2547
+ "tags": [],
2548
+ "text": ""
2549
+ }, {
2550
+ "tags": [],
2551
+ "text": ""
2552
+ }, {
2553
+ "tags": [],
2554
+ "text": ""
2555
+ }],
2556
+ "references": {
2557
+ "Promise": {
2558
+ "location": "global"
2559
+ },
2560
+ "IOption": {
2561
+ "location": "import",
2562
+ "path": "@sankhyalabs/ezui/dist/types/components/ez-search/ez-search"
2563
+ },
2564
+ "Array": {
2565
+ "location": "global"
2566
+ }
2567
+ },
2568
+ "return": "Promise<IOption | IOption[]>"
2569
+ },
2570
+ "docs": {
2571
+ "text": "Realiza a pesquisa de registros\nEx.: snk-config-options",
2572
+ "tags": []
2573
+ }
2574
+ },
2488
2575
  "executePreparedSearch": {
2489
2576
  "complexType": {
2490
2577
  "signature": "(mode: string, argument: string, options: any) => Promise<Array<IOption> | IOption>",
@@ -2744,6 +2831,41 @@ export class SnkApplication {
2744
2831
  }]
2745
2832
  }
2746
2833
  },
2834
+ "clearPopUpTitle": {
2835
+ "complexType": {
2836
+ "signature": "() => Promise<void>",
2837
+ "parameters": [],
2838
+ "references": {
2839
+ "Promise": {
2840
+ "location": "global"
2841
+ }
2842
+ },
2843
+ "return": "Promise<void>"
2844
+ },
2845
+ "docs": {
2846
+ "text": "",
2847
+ "tags": []
2848
+ }
2849
+ },
2850
+ "setPopUpTitle": {
2851
+ "complexType": {
2852
+ "signature": "(title: string) => Promise<void>",
2853
+ "parameters": [{
2854
+ "tags": [],
2855
+ "text": ""
2856
+ }],
2857
+ "references": {
2858
+ "Promise": {
2859
+ "location": "global"
2860
+ }
2861
+ },
2862
+ "return": "Promise<void>"
2863
+ },
2864
+ "docs": {
2865
+ "text": "",
2866
+ "tags": []
2867
+ }
2868
+ },
2747
2869
  "showScrimApp": {
2748
2870
  "complexType": {
2749
2871
  "signature": "(active: boolean) => Promise<void>",
@@ -11,6 +11,7 @@ export class SnkConfigurator {
11
11
  this.resourceID = undefined;
12
12
  this.viewMode = VIEW_MODE.GRID;
13
13
  this.customContainerId = undefined;
14
+ this.layoutFormConfig = false;
14
15
  this.messagesBuilder = undefined;
15
16
  }
16
17
  /**
@@ -71,6 +72,12 @@ export class SnkConfigurator {
71
72
  var _a;
72
73
  return (_a = this.messagesBuilder) === null || _a === void 0 ? void 0 : _a.getMessage(key, {});
73
74
  }
75
+ handleSave() {
76
+ if (this.layoutFormConfig) {
77
+ this._snkLayoutFormConfig.save();
78
+ }
79
+ this.save.emit();
80
+ }
74
81
  componentWillLoad() {
75
82
  this._application = ApplicationContext.getContextValue('__SNK__APPLICATION__');
76
83
  if (this._application) {
@@ -94,7 +101,7 @@ export class SnkConfigurator {
94
101
  insideCustomElementsContainer === null || insideCustomElementsContainer === void 0 ? void 0 : insideCustomElementsContainer.appendChild(configuratorCustomElement);
95
102
  }
96
103
  render() {
97
- return (h("ez-modal", { ref: (element) => (this.modal = element), opened: this._opened, "close-esc": false, "close-outside-click": false, "modal-size": "small", scrim: "light" }, h("div", { class: "snk-configurator" }, h("div", { class: "snk-configurator__header" }, h("label", { class: "snk-configurator__title" }, this.getMessage('snkConfigurator.titleConfigurations')), h("div", { class: "snk-configurator__button-close" }, h("ez-button", { mode: "icon", iconName: "close", size: "medium", onClick: () => this.closeConfig() }))), h("div", { class: "snk-configurator__main" }, h("ez-collapsible-box", { boxBordered: true, label: "Modo de visualiza\u00E7\u00E3o ", headerSize: "medium", class: "snk-configurator__collapsable-box" }, h("ez-radio-button", { value: this.getViewModeValue().toString(), onEzChange: (evt) => this.onViewModeChanged(evt), enabled: this.enableModeConfig() }, h("ez-radio-button-option", { label: this.getMessage('snkConfigurator.labelGrid'), value: VIEW_MODE.GRID }), h("ez-radio-button-option", { label: this.getMessage('snkConfigurator.labelForm'), value: VIEW_MODE.FORM })), h("div", { class: "snk-configurator__collsable-box-action" }, h("ez-button", { label: this.viewMode === VIEW_MODE.GRID ? this.getMessage('snkConfigurator.labelConfigGrid') : this.getMessage('snkConfigurator.labelConfigForm'), class: "snk-configurator__button-config ez-button--secondary", onClick: () => this.onClickOpenConfig(), id: "openConfigurator" }))), h("div", { id: "slotContainer", class: "snk-configurator__outline" })), this.showActionButtons && (h("div", { class: "snk-configurator__action-buttons" }, h("ez-button", { label: "Cancelar", onClick: () => this.cancel.emit() }), h("ez-button", { label: "Salvar", onClick: () => this.save.emit(), class: "ez-button--primary" }))))));
104
+ return (h("ez-modal", { ref: (element) => (this.modal = element), opened: this._opened, "close-esc": false, "close-outside-click": false, "modal-size": "small", scrim: "light" }, h("div", { class: "snk-configurator" }, h("div", { class: "snk-configurator__header" }, h("label", { class: "snk-configurator__title" }, this.getMessage('snkConfigurator.titleConfigurations')), h("div", { class: "snk-configurator__button-close" }, h("ez-button", { mode: "icon", iconName: "close", size: "medium", onClick: () => this.closeConfig() }))), h("div", { class: "snk-configurator__main" }, h("ez-collapsible-box", { boxBordered: true, label: "Modo de visualiza\u00E7\u00E3o ", headerSize: "medium", class: "snk-configurator__collapsable-box" }, h("ez-radio-button", { value: this.getViewModeValue().toString(), onEzChange: (evt) => this.onViewModeChanged(evt), enabled: this.enableModeConfig() }, h("ez-radio-button-option", { label: this.getMessage('snkConfigurator.labelGrid'), value: VIEW_MODE.GRID }), h("ez-radio-button-option", { label: this.getMessage('snkConfigurator.labelForm'), value: VIEW_MODE.FORM })), h("div", { class: "snk-configurator__collsable-box-action" }, h("ez-button", { label: this.viewMode === VIEW_MODE.GRID ? this.getMessage('snkConfigurator.labelConfigGrid') : this.getMessage('snkConfigurator.labelConfigForm'), class: "snk-configurator__button-config ez-button--secondary", onClick: () => this.onClickOpenConfig(), id: "openConfigurator" }))), this.layoutFormConfig && h("ez-collapsible-box", { boxBordered: true, value: true, label: "Layout do formul\u00E1rio", headerSize: "medium", class: "snk-configurator__collapsable-box ez-margin-top--medium" }, h("div", { class: 'ez-flex ez-flex--column ez-size-width--full' }, h("snk-layout-form-config", { ref: (ref) => this._snkLayoutFormConfig = ref }))), h("div", { id: "slotContainer", class: "snk-configurator__outline" })), this.showActionButtons && (h("div", { class: "snk-configurator__action-buttons" }, h("ez-button", { label: "Cancelar", onClick: () => this.cancel.emit() }), h("ez-button", { label: "Salvar", onClick: () => this.handleSave(), class: "ez-button--primary" }))))));
98
105
  }
99
106
  static get is() { return "snk-configurator"; }
100
107
  static get encapsulation() { return "scoped"; }
@@ -202,6 +209,24 @@ export class SnkConfigurator {
202
209
  "attribute": "custom-container-id",
203
210
  "reflect": false
204
211
  },
212
+ "layoutFormConfig": {
213
+ "type": "boolean",
214
+ "mutable": false,
215
+ "complexType": {
216
+ "original": "boolean",
217
+ "resolved": "boolean",
218
+ "references": {}
219
+ },
220
+ "required": false,
221
+ "optional": false,
222
+ "docs": {
223
+ "tags": [],
224
+ "text": "Define se o LayoutFormConfig ser\u00E1 exibido no configurador."
225
+ },
226
+ "attribute": "layout-form-config",
227
+ "reflect": false,
228
+ "defaultValue": "false"
229
+ },
205
230
  "messagesBuilder": {
206
231
  "type": "unknown",
207
232
  "mutable": true,
@@ -47,6 +47,7 @@ export class SnkCrud {
47
47
  this.ignoreReadOnlyFormFields = undefined;
48
48
  this.setCustomFormTitle = undefined;
49
49
  this.strategyExporter = ExporterStrategy.SERVER_SIDE;
50
+ this.layoutFormConfig = false;
50
51
  this.customContainerId = `SNK-CRUD-CUSTOM-CONTAINER-${StringUtils.generateUUID()}`;
51
52
  }
52
53
  /**
@@ -382,7 +383,7 @@ export class SnkCrud {
382
383
  return;
383
384
  }
384
385
  this._snkDataUnit.ignoreSaveMessage = (this._currentViewMode === VIEW_MODE.GRID && !this.enableGridInsert);
385
- return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full ez-padding--medium' }, h("snk-grid", { ref: (ref) => this._snkGrid = ref, class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full', filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, strategyExporter: this.strategyExporter }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
386
+ return (h(Host, null, h("ez-view-stack", { ref: (ref) => this._viewStack = ref, "data-element-id": "crud" }, h("stack-item", { class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full ez-padding--medium' }, h("snk-grid", { ref: (ref) => this._snkGrid = ref, class: 'ez-flex ez-flex--column ez-size-height--full ez-size-width--full', filterBarTitle: this.filterBarTitle, "data-element-id": "crud_grid", configName: this.configName, onGridDoubleClick: () => this.gridToForm(true), taskbarManager: this.taskbarManager, onActionClick: evt => this.executeAction(evt.detail), messagesBuilder: this.messagesBuilder, actionsList: this.actionsList, statusResolver: this.statusResolver, multipleSelection: this.multipleSelection, presentationMode: this.presentationMode, recordsValidator: this.recordsValidator, selectionToastConfig: this.selectionToastConfig, useEnterLikeTab: this.useEnterLikeTab, canEdit: this._canEdit, resourceID: this._resourceID, disablePersonalizedFilter: this.disablePersonalizedFilter, gridLegacyConfigName: this.gridLegacyConfigName, filterBarLegacyConfigName: this.filterBarLegacyConfigName, autoLoad: this.autoLoad, autoFocus: this.autoFocus, enableGridInsert: this.enableGridInsert, enableLockManagerTaskbarClick: this.enableLockManagerTaskbarClick, enableLockManagerLoadingComp: this.enableLockManagerLoadingComp, strategyExporter: this.strategyExporter }, h("slot", { name: "GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkGridHeader" }), h("slot", { name: "SnkGridFooter" }), h("slot", { name: "SnkGridTaskBar" }))), h("stack-item", null, h("snk-guides-viewer", { ref: ref => this._guidesViewer = ref, entityPath: this._snkDataUnit.entityName, messagesBuilder: this.messagesBuilder, onExit: () => this.setViewMode(VIEW_MODE.GRID), dataState: this._dataState, dataUnit: this._dataUnit, actionsList: this.actionsList, taskbarManager: this.taskbarManager, configName: this.configName, onActionClick: evt => this.executeAction(evt.detail), presentationMode: this.presentationMode, "data-element-id": "crud_form", canEdit: this._canEdit, recordsValidator: this.recordsValidator, resourceID: this._resourceID, detailTaskbarCustomContainerId: this.customContainerId, formLegacyConfigName: this.formLegacyConfigName, enableGridInsert: this.enableGridInsert, getCustomTitle: this.setCustomFormTitle, ignoreReadOnlyFormFields: this.ignoreReadOnlyFormFields }, h("slot", { name: "GUIDES_VIEWER_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "SnkFormTaskBar" }))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this._snkDataUnit.entityName, onBack: this.backView.bind(this) })), h("snk-configurator", { ref: (ref) => this._snkConfigurator = ref, viewMode: this._currentViewMode, messagesBuilder: this.messagesBuilder, onConfigSelected: (evt) => this.setViewMode(evt.detail), onOpenConfig: (evt) => this.openConfig(evt.detail), showActionButtons: this.showActionButtons, onSave: evt => this.handleConfiguratorEvent(evt, 'SAVE'), onCancel: evt => this.handleConfiguratorEvent(evt, 'CANCEL'), resourceID: this._resourceID, customContainerId: this.customContainerId, layoutFormConfig: this.layoutFormConfig })), h("div", { id: `${this.customContainerId}` }, h("slot", { name: "SnkConfigContainerSlot" }), h("slot", { name: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS" }), h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }))));
386
387
  }
387
388
  static get is() { return "snk-crud"; }
388
389
  static get encapsulation() { return "scoped"; }
@@ -864,6 +865,24 @@ export class SnkCrud {
864
865
  "attribute": "strategy-exporter",
865
866
  "reflect": false,
866
867
  "defaultValue": "ExporterStrategy.SERVER_SIDE"
868
+ },
869
+ "layoutFormConfig": {
870
+ "type": "boolean",
871
+ "mutable": false,
872
+ "complexType": {
873
+ "original": "boolean",
874
+ "resolved": "boolean",
875
+ "references": {}
876
+ },
877
+ "required": false,
878
+ "optional": false,
879
+ "docs": {
880
+ "tags": [],
881
+ "text": "Define se o LayoutFormConfig ser\u00E1 exibido no configurador."
882
+ },
883
+ "attribute": "layout-form-config",
884
+ "reflect": false,
885
+ "defaultValue": "false"
867
886
  }
868
887
  };
869
888
  }
@@ -19,8 +19,17 @@
19
19
  .grid-container{
20
20
  background-color: #FFF;
21
21
  min-height: 100px;
22
+ height: 100%;
22
23
  }
23
24
 
24
25
  .detail-header{
25
26
  padding-bottom: 0;
26
- }
27
+ }
28
+
29
+ snk-data-unit {
30
+ flex: 1;
31
+ }
32
+
33
+ snk-grid{
34
+ height: calc(100% - 43px);
35
+ }
@@ -28,6 +28,7 @@ export class SnkDetailView {
28
28
  this.taskbarCustomContainerId = undefined;
29
29
  this.customEditors = undefined;
30
30
  this.customRenders = undefined;
31
+ this.presentationMode = PresentationMode.SECONDARY;
31
32
  }
32
33
  observeDataUnit(newDataUnit, oldDataUnit) {
33
34
  newDataUnit === null || newDataUnit === void 0 ? void 0 : newDataUnit.subscribe(this.dataUnitActionHandler.bind(this));
@@ -247,7 +248,7 @@ export class SnkDetailView {
247
248
  render() {
248
249
  this.updateLabel();
249
250
  //const cardConfig: IFormCardConfig = this._cardsState?.get(this.selectedForm);
250
- return (h(Host, null, h("snk-data-unit", { ref: (el) => this._snkDataUnit = el, dataUnitName: `${this.dataUnitName}`, onDataUnitReady: evt => this.dataUnitReadyHandler(evt), entityName: this.entityName, onDataStateChange: this.handleDataStateChange.bind(this), ignoreSaveMessage: this._currentView === VIEW_MODE.GRID, messagesBuilder: this.messagesBuilder, configName: this._configName }, h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, h("stack-item", null, h("div", { class: "ez-box ez-box--shadow grid-container" }, h("div", { class: "ez-flex ez-title--primary ez-size-width--full ez-padding--large detail-header" }, h("div", { class: "ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center" }, this._levelPath ? h("span", { class: "level-path" }, this._levelPath + " /") : undefined, this.label)), h("snk-grid", { class: "ez-size-width--full ez-size-height--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: PresentationMode.SECONDARY, canEdit: this.canEdit, isDetail: true, taskbarCustomContainerId: this.taskbarCustomContainerId, gridHeaderCustomSlotId: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS", topTaskbarCustomSlotId: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS", outlineMode: false }))), h("stack-item", null, h("snk-form-view", { ref: (ref) => this._snkFormView = ref, canExpand: false, canFix: false, name: this.selectedForm, formMetadata: this._formMetadata, dataUnit: this.dataUnit, fields: this.getFormFields(), label: this.label, levelPath: this._levelPath, onFormItemsReady: ({ detail: formItems }) => this.formItemsReady.emit(formItems) }, h("snk-taskbar", { key: "guideViewerTaskbar", class: "form-taskbar", "data-element-id": "guideViewer", configName: this._configName, messagesBuilder: this.messagesBuilder, disabledButtons: this._disabledButtons, buttons: "INSERT,PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: PresentationMode.SECONDARY, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit, resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }, h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" })))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName, onBack: this.handleAttachBack.bind(this) }))))));
251
+ return (h(Host, null, h("snk-data-unit", { ref: (el) => this._snkDataUnit = el, dataUnitName: `${this.dataUnitName}`, onDataUnitReady: evt => this.dataUnitReadyHandler(evt), entityName: this.entityName, onDataStateChange: this.handleDataStateChange.bind(this), ignoreSaveMessage: this._currentView === VIEW_MODE.GRID, messagesBuilder: this.messagesBuilder, configName: this._configName }, h("ez-view-stack", { ref: (ref) => this.updateViewStack(ref) }, h("stack-item", null, h("div", { class: "ez-box ez-box--shadow grid-container" }, h("div", { class: "ez-title--primary ez-size-width--full ez-padding--large detail-header" }, h("div", { class: "ez-flex ez-text ez-text--bold ez-flex--justify-start ez-flex--align-items-center" }, this._levelPath ? h("span", { class: "level-path" }, this._levelPath + " /") : undefined, this.label)), h("snk-grid", { class: "ez-size-width--full", ref: (ref) => this._snkGrid = ref, configName: this._configName, messagesBuilder: this.messagesBuilder, onGridDoubleClick: () => this.emitSwitchEvent(VIEW_MODE.FORM), onActionClick: (evt) => this.executeActionHandler(evt), presentationMode: this.presentationMode, canEdit: this.canEdit, isDetail: true, taskbarCustomContainerId: this.taskbarCustomContainerId, gridHeaderCustomSlotId: "DETAIL_GRID_HEADER_CUSTOM_ELEMENTS", topTaskbarCustomSlotId: "DETAIL_GRID_TASKBAR_CUSTOM_ELEMENTS", outlineMode: false }))), h("stack-item", null, h("snk-form-view", { ref: (ref) => this._snkFormView = ref, canExpand: false, canFix: false, name: this.selectedForm, formMetadata: this._formMetadata, dataUnit: this.dataUnit, fields: this.getFormFields(), label: this.label, levelPath: this._levelPath, onFormItemsReady: ({ detail: formItems }) => this.formItemsReady.emit(formItems) }, h("snk-taskbar", { key: "guideViewerTaskbar", class: "form-taskbar", "data-element-id": "guideViewer", configName: this._configName, messagesBuilder: this.messagesBuilder, disabledButtons: this._disabledButtons, buttons: "INSERT,PREVIOUS,NEXT,DIVIDER,CLONE,REMOVE,MORE_OPTIONS,DIVIDER,GRID_MODE,CONFIGURATOR", primaryButton: "INSERT", presentationMode: this.presentationMode, onActionClick: evt => this.executeActionHandler(evt), dataUnit: this.dataUnit, resourceID: this.resourceID, customContainerId: this.taskbarCustomContainerId, customSlotId: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" }, h("slot", { name: "DETAIL_TASKBAR_CUSTOM_ELEMENTS" })))), h("stack-item", null, h("snk-attach", { registerKey: this.attachmentRegisterKey, messagesBuilder: this.messagesBuilder, entityName: this.entityName, onBack: this.handleAttachBack.bind(this) }))))));
251
252
  }
252
253
  static get is() { return "snk-detail-view"; }
253
254
  static get encapsulation() { return "scoped"; }
@@ -545,6 +546,29 @@ export class SnkDetailView {
545
546
  "tags": [],
546
547
  "text": "Render customizados da grade."
547
548
  }
549
+ },
550
+ "presentationMode": {
551
+ "type": "string",
552
+ "mutable": false,
553
+ "complexType": {
554
+ "original": "PresentationMode",
555
+ "resolved": "PresentationMode.PRIMARY | PresentationMode.SECONDARY | PresentationMode.SINGLE_TASKBAR",
556
+ "references": {
557
+ "PresentationMode": {
558
+ "location": "import",
559
+ "path": "../../../../lib"
560
+ }
561
+ }
562
+ },
563
+ "required": false,
564
+ "optional": false,
565
+ "docs": {
566
+ "tags": [],
567
+ "text": "Altera o modo de apresenta\u00E7\u00E3o dos bot\u00F5es do snk-taskbar."
568
+ },
569
+ "attribute": "presentation-mode",
570
+ "reflect": false,
571
+ "defaultValue": "PresentationMode.SECONDARY"
548
572
  }
549
573
  };
550
574
  }
@@ -284,7 +284,7 @@ export class SnkGuidesViewer {
284
284
  else {
285
285
  detailBranch = this.selectedGuide;
286
286
  }
287
- content = this.wrapDetail(levels, h("snk-detail-view", { ref: (ref) => this._currentDetail = ref, dataUnitName: this.getDataUnitName(levels, childEntityName), onSnkDetailGuidesChange: (evt) => this.updateGuide(evt.detail), entityName: childEntityName, selectedForm: formName, branchGuide: detailBranch, guideItemPath: this._breadcrumbItems, key: `detail${detailId}`, canEdit: this.canEdit, onSnkSwitchGuide: evt => this._guideNavigator.selectGuide(evt.detail), resourceID: this.resourceID, taskbarCustomContainerId: this.detailTaskbarCustomContainerId, customEditors: this._customEditors, customRenders: this._customRenders }));
287
+ content = this.wrapDetail(levels, h("snk-detail-view", { ref: (ref) => this._currentDetail = ref, dataUnitName: this.getDataUnitName(levels, childEntityName), onSnkDetailGuidesChange: (evt) => this.updateGuide(evt.detail), entityName: childEntityName, selectedForm: formName, branchGuide: detailBranch, guideItemPath: this._breadcrumbItems, key: `detail${detailId}`, canEdit: this.canEdit, onSnkSwitchGuide: evt => this._guideNavigator.selectGuide(evt.detail), resourceID: this.resourceID, taskbarCustomContainerId: this.detailTaskbarCustomContainerId, customEditors: this._customEditors, customRenders: this._customRenders, presentationMode: this.presentationMode }));
288
288
  }
289
289
  else {
290
290
  const cardId = this.selectedGuide.id;
@@ -40,25 +40,21 @@ export class CommonsExporter {
40
40
  userInterface: fieldData === null || fieldData === void 0 ? void 0 : fieldData.userInterface,
41
41
  customFormatter
42
42
  };
43
- if (isUserInterfaceSEARCH) {
44
- if (((_b = fieldData === null || fieldData === void 0 ? void 0 : fieldData.properties) === null || _b === void 0 ? void 0 : _b.DESCRIPTIONFIELD) != undefined) {
45
- const labelDescription = (_c = fieldData === null || fieldData === void 0 ? void 0 : fieldData.properties) === null || _c === void 0 ? void 0 : _c.DESCRIPTIONENTITY;
46
- const mergedFrom = fieldData.properties.mergedFrom;
47
- const descriptionField = `${fieldData.properties.ENTITYNAME}.${fieldData.properties.DESCRIPTIONFIELD}`;
48
- descriptionColumn = {
49
- id: `${mergedFrom ? (mergedFrom + ".") : ""}${descriptionField}`,
50
- label: labelDescription,
51
- width: isUserInterfaceSEARCH && labelDescription ? (labelDescription.length * this.DEFAULT_FONT_SIZE - widthColumnDefault) : column.width,
52
- type: DataType.TEXT,
53
- userInterface: UserInterface.LONGTEXT,
54
- descriptionFrom: fieldData.name
55
- };
56
- }
57
- if (descriptionColumn) {
58
- const newWidth = this.getWidthByMetaData(column === null || column === void 0 ? void 0 : column.width, columnData === null || columnData === void 0 ? void 0 : columnData.width, descriptionColumn === null || descriptionColumn === void 0 ? void 0 : descriptionColumn.width);
59
- columnData = Object.assign(Object.assign({}, columnData), { width: newWidth === null || newWidth === void 0 ? void 0 : newWidth.codWidth });
60
- descriptionColumn = Object.assign(Object.assign({}, descriptionColumn), { width: newWidth === null || newWidth === void 0 ? void 0 : newWidth.descWidth, label: (descriptionColumn === null || descriptionColumn === void 0 ? void 0 : descriptionColumn.label) || (column === null || column === void 0 ? void 0 : column.label) });
61
- }
43
+ if (isUserInterfaceSEARCH && ((_b = fieldData === null || fieldData === void 0 ? void 0 : fieldData.properties) === null || _b === void 0 ? void 0 : _b.DESCRIPTIONFIELD) != undefined) {
44
+ const labelDescription = (_c = fieldData === null || fieldData === void 0 ? void 0 : fieldData.properties) === null || _c === void 0 ? void 0 : _c.DESCRIPTIONENTITY;
45
+ const mergedFrom = fieldData.properties.mergedFrom;
46
+ const descriptionField = `${fieldData.properties.ENTITYNAME}.${fieldData.properties.DESCRIPTIONFIELD}`;
47
+ descriptionColumn = {
48
+ id: `${mergedFrom ? (mergedFrom + ".") : ""}${descriptionField}`,
49
+ label: labelDescription,
50
+ width: isUserInterfaceSEARCH && labelDescription ? (labelDescription.length * this.DEFAULT_FONT_SIZE - widthColumnDefault) : column.width,
51
+ type: DataType.TEXT,
52
+ userInterface: UserInterface.LONGTEXT,
53
+ descriptionFrom: fieldData.name
54
+ };
55
+ const newWidth = this.getWidthByMetaData(column === null || column === void 0 ? void 0 : column.width, columnData === null || columnData === void 0 ? void 0 : columnData.width, descriptionColumn === null || descriptionColumn === void 0 ? void 0 : descriptionColumn.width);
56
+ columnData = Object.assign(Object.assign({}, columnData), { width: newWidth === null || newWidth === void 0 ? void 0 : newWidth.codWidth });
57
+ descriptionColumn = Object.assign(Object.assign({}, descriptionColumn), { width: newWidth === null || newWidth === void 0 ? void 0 : newWidth.descWidth, label: (descriptionColumn === null || descriptionColumn === void 0 ? void 0 : descriptionColumn.label) || (column === null || column === void 0 ? void 0 : column.label) });
62
58
  }
63
59
  columnsMetadata.push(columnData);
64
60
  if (descriptionColumn)