@pautena/react-design-system 0.4.2 → 0.4.4

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 (444) hide show
  1. package/dist/cjs/index.js +4 -12
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/components/{app-bar → app-bars/app-bar}/app-bar.types.d.ts +2 -2
  4. package/dist/cjs/types/components/app-bars/index.d.ts +1 -0
  5. package/dist/cjs/types/components/containers/content/content.types.d.ts +4 -0
  6. package/dist/cjs/types/components/containers/index.d.ts +2 -0
  7. package/dist/cjs/types/components/{bullet → data-display/bullet}/bullet.d.ts +1 -1
  8. package/dist/cjs/types/components/{header → data-display/header}/header.dummy.d.ts +1 -1
  9. package/dist/cjs/types/components/{header → data-display/header}/header.types.d.ts +6 -6
  10. package/dist/cjs/types/components/data-display/index.d.ts +3 -0
  11. package/dist/{esm/types/components → cjs/types/components/data-display}/label/label.d.ts +1 -1
  12. package/dist/cjs/types/components/{drawer → drawers/drawer}/drawer.provider.d.ts +1 -1
  13. package/dist/cjs/types/components/{drawer → drawers/drawer}/drawer.types.d.ts +14 -7
  14. package/dist/cjs/types/components/drawers/drawer-collapsable-item/drawer-collapsable-item.d.ts +26 -0
  15. package/dist/cjs/types/components/drawers/drawer-collapsable-item/index.d.ts +1 -0
  16. package/dist/cjs/types/components/{drawer-item → drawers/drawer-item}/drawer-item.d.ts +10 -1
  17. package/dist/{esm/types/components → cjs/types/components/drawers}/drawer-section/drawer-section.d.ts +5 -1
  18. package/dist/cjs/types/components/drawers/index.d.ts +4 -0
  19. package/dist/cjs/types/components/feedback/index.d.ts +2 -0
  20. package/dist/cjs/types/components/{query-container → feedback/query-container}/query-container.d.ts +1 -1
  21. package/dist/cjs/types/components/index.d.ts +9 -18
  22. package/dist/cjs/types/components/{enhanced-select → inputs/enhanced-select}/enhanced-select.d.ts +1 -2
  23. package/dist/cjs/types/components/inputs/index.d.ts +2 -0
  24. package/dist/cjs/types/components/{sign-in → inputs/sign-in}/sign-in.d.ts +2 -3
  25. package/dist/cjs/types/components/navigation/index.d.ts +1 -0
  26. package/dist/cjs/types/components/navigation/link/link.d.ts +7 -0
  27. package/dist/cjs/types/components/navigation/tab/tab-card/tab-card.d.ts +5 -0
  28. package/dist/cjs/types/components/navigation/tab/tab-card/tab-card.dummy.d.ts +6 -0
  29. package/dist/cjs/types/components/placeholders/content-placeholder/content-placeholder.d.ts +6 -0
  30. package/dist/cjs/types/components/placeholders/content-placeholder/index.d.ts +1 -0
  31. package/dist/cjs/types/components/placeholders/index.d.ts +5 -0
  32. package/dist/cjs/types/components/placeholders/lorem-ipsum-placeholder/index.d.ts +1 -0
  33. package/dist/cjs/types/components/placeholders/lorem-ipsum-placeholder/lorem-ipsum-placeholder.d.ts +8 -0
  34. package/dist/{esm/types/components → cjs/types/components/placeholders}/placeholder/placeholder.d.ts +1 -1
  35. package/dist/cjs/types/components/placeholders/skeleton-card/index.d.ts +1 -0
  36. package/dist/cjs/types/components/placeholders/skeleton-card/skeleton-card.d.ts +5 -0
  37. package/dist/cjs/types/components/placeholders/skeleton-grid/index.d.ts +1 -0
  38. package/dist/cjs/types/components/placeholders/skeleton-grid/skeleton-grid.d.ts +4 -0
  39. package/dist/cjs/types/components/tables/enhanced-remote-table/enhanced-remote-table.d.ts +12 -0
  40. package/dist/cjs/types/components/tables/enhanced-remote-table/enhanced-remote-table.mock.d.ts +11 -0
  41. package/dist/cjs/types/components/tables/enhanced-table/enhanced-table-head.d.ts +16 -0
  42. package/dist/{esm/types/components/table → cjs/types/components/tables}/enhanced-table/enhanced-table.d.ts +2 -2
  43. package/dist/cjs/types/components/{table → tables}/enhanced-table/enhanced-table.mock.d.ts +6 -7
  44. package/dist/cjs/types/components/value-displays/group-value-card/group-value-card.d.ts +7 -4
  45. package/dist/cjs/types/components/value-displays/group-value-card/group-value-card.mock.d.ts +2 -1
  46. package/dist/cjs/types/components/value-displays/index.d.ts +1 -0
  47. package/dist/cjs/types/components/value-displays/value-boolean/value-boolean.d.ts +3 -11
  48. package/dist/cjs/types/components/value-displays/value-card/value-card.d.ts +1 -1
  49. package/dist/cjs/types/components/value-displays/value-content/index.d.ts +1 -0
  50. package/dist/cjs/types/components/value-displays/value-content/value-content.d.ts +24 -0
  51. package/dist/cjs/types/components/value-displays/value-datetime/value-datetime.d.ts +3 -10
  52. package/dist/cjs/types/components/value-displays/value-displays.types.d.ts +15 -0
  53. package/dist/cjs/types/components/value-displays/value-image/index.d.ts +1 -0
  54. package/dist/cjs/types/components/value-displays/value-image/value-image.d.ts +11 -0
  55. package/dist/cjs/types/components/value-displays/value-text/value-text.d.ts +3 -11
  56. package/dist/cjs/types/generators/generators.mock.d.ts +2 -1
  57. package/dist/cjs/types/generators/generators.model.d.ts +36 -20
  58. package/dist/cjs/types/generators/generators.model.test.d.ts +1 -0
  59. package/dist/cjs/types/generators/index.d.ts +1 -0
  60. package/dist/cjs/types/generators/model-router/model-router.d.ts +1 -1
  61. package/dist/cjs/types/generators/model-router/screens/add-screen.d.ts +1 -1
  62. package/dist/cjs/types/generators/model-router/screens/details-screen.d.ts +1 -1
  63. package/dist/cjs/types/generators/model-router/screens/list-screen.d.ts +1 -1
  64. package/dist/cjs/types/generators/model-router/screens/update-screen.d.ts +1 -1
  65. package/dist/cjs/types/{components → generators}/table-list/table-list.d.ts +3 -3
  66. package/dist/cjs/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +2 -2
  67. package/dist/cjs/types/layouts/header-layout/header-layout.d.ts +1 -2
  68. package/dist/cjs/types/providers/notification-center/notification-center.context.d.ts +0 -2
  69. package/dist/cjs/types/providers/notification-center/notification-center.provider.d.ts +1 -1
  70. package/dist/cjs/types/providers/tab-provider/tab-provider.provider.d.ts +1 -1
  71. package/dist/cjs/types/utils/theme.d.ts +1 -1
  72. package/dist/esm/index.js +4 -12
  73. package/dist/esm/index.js.map +1 -1
  74. package/dist/esm/types/components/{app-bar → app-bars/app-bar}/app-bar.types.d.ts +2 -2
  75. package/dist/esm/types/components/app-bars/index.d.ts +1 -0
  76. package/dist/esm/types/components/containers/content/content.types.d.ts +4 -0
  77. package/dist/esm/types/components/containers/index.d.ts +2 -0
  78. package/dist/esm/types/components/{bullet → data-display/bullet}/bullet.d.ts +1 -1
  79. package/dist/esm/types/components/{header → data-display/header}/header.dummy.d.ts +1 -1
  80. package/dist/esm/types/components/{header → data-display/header}/header.types.d.ts +6 -6
  81. package/dist/esm/types/components/data-display/index.d.ts +3 -0
  82. package/dist/{cjs/types/components → esm/types/components/data-display}/label/label.d.ts +1 -1
  83. package/dist/esm/types/components/{drawer → drawers/drawer}/drawer.provider.d.ts +1 -1
  84. package/dist/esm/types/components/{drawer → drawers/drawer}/drawer.types.d.ts +14 -7
  85. package/dist/esm/types/components/drawers/drawer-collapsable-item/drawer-collapsable-item.d.ts +26 -0
  86. package/dist/esm/types/components/drawers/drawer-collapsable-item/index.d.ts +1 -0
  87. package/dist/esm/types/components/{drawer-item → drawers/drawer-item}/drawer-item.d.ts +10 -1
  88. package/dist/{cjs/types/components → esm/types/components/drawers}/drawer-section/drawer-section.d.ts +5 -1
  89. package/dist/esm/types/components/drawers/index.d.ts +4 -0
  90. package/dist/esm/types/components/feedback/index.d.ts +2 -0
  91. package/dist/esm/types/components/{query-container → feedback/query-container}/query-container.d.ts +1 -1
  92. package/dist/esm/types/components/index.d.ts +9 -18
  93. package/dist/esm/types/components/{enhanced-select → inputs/enhanced-select}/enhanced-select.d.ts +1 -2
  94. package/dist/esm/types/components/inputs/index.d.ts +2 -0
  95. package/dist/esm/types/components/{sign-in → inputs/sign-in}/sign-in.d.ts +2 -3
  96. package/dist/esm/types/components/navigation/index.d.ts +1 -0
  97. package/dist/esm/types/components/navigation/link/link.d.ts +7 -0
  98. package/dist/esm/types/components/navigation/tab/tab-card/tab-card.d.ts +5 -0
  99. package/dist/esm/types/components/navigation/tab/tab-card/tab-card.dummy.d.ts +6 -0
  100. package/dist/esm/types/components/placeholders/content-placeholder/content-placeholder.d.ts +6 -0
  101. package/dist/esm/types/components/placeholders/content-placeholder/index.d.ts +1 -0
  102. package/dist/esm/types/components/placeholders/index.d.ts +5 -0
  103. package/dist/esm/types/components/placeholders/lorem-ipsum-placeholder/index.d.ts +1 -0
  104. package/dist/esm/types/components/placeholders/lorem-ipsum-placeholder/lorem-ipsum-placeholder.d.ts +8 -0
  105. package/dist/{cjs/types/components → esm/types/components/placeholders}/placeholder/placeholder.d.ts +1 -1
  106. package/dist/esm/types/components/placeholders/skeleton-card/index.d.ts +1 -0
  107. package/dist/esm/types/components/placeholders/skeleton-card/skeleton-card.d.ts +5 -0
  108. package/dist/esm/types/components/placeholders/skeleton-grid/index.d.ts +1 -0
  109. package/dist/esm/types/components/placeholders/skeleton-grid/skeleton-grid.d.ts +4 -0
  110. package/dist/esm/types/components/tables/enhanced-remote-table/enhanced-remote-table.d.ts +12 -0
  111. package/dist/esm/types/components/tables/enhanced-remote-table/enhanced-remote-table.mock.d.ts +11 -0
  112. package/dist/esm/types/components/tables/enhanced-table/enhanced-table-head.d.ts +16 -0
  113. package/dist/{cjs/types/components/table → esm/types/components/tables}/enhanced-table/enhanced-table.d.ts +2 -2
  114. package/dist/esm/types/components/{table → tables}/enhanced-table/enhanced-table.mock.d.ts +6 -7
  115. package/dist/esm/types/components/value-displays/group-value-card/group-value-card.d.ts +7 -4
  116. package/dist/esm/types/components/value-displays/group-value-card/group-value-card.mock.d.ts +2 -1
  117. package/dist/esm/types/components/value-displays/index.d.ts +1 -0
  118. package/dist/esm/types/components/value-displays/value-boolean/value-boolean.d.ts +3 -11
  119. package/dist/esm/types/components/value-displays/value-card/value-card.d.ts +1 -1
  120. package/dist/esm/types/components/value-displays/value-content/index.d.ts +1 -0
  121. package/dist/esm/types/components/value-displays/value-content/value-content.d.ts +24 -0
  122. package/dist/esm/types/components/value-displays/value-datetime/value-datetime.d.ts +3 -10
  123. package/dist/esm/types/components/value-displays/value-displays.types.d.ts +15 -0
  124. package/dist/esm/types/components/value-displays/value-image/index.d.ts +1 -0
  125. package/dist/esm/types/components/value-displays/value-image/value-image.d.ts +11 -0
  126. package/dist/esm/types/components/value-displays/value-text/value-text.d.ts +3 -11
  127. package/dist/esm/types/generators/generators.mock.d.ts +2 -1
  128. package/dist/esm/types/generators/generators.model.d.ts +36 -20
  129. package/dist/esm/types/generators/generators.model.test.d.ts +1 -0
  130. package/dist/esm/types/generators/index.d.ts +1 -0
  131. package/dist/esm/types/generators/model-router/model-router.d.ts +1 -1
  132. package/dist/esm/types/generators/model-router/screens/add-screen.d.ts +1 -1
  133. package/dist/esm/types/generators/model-router/screens/details-screen.d.ts +1 -1
  134. package/dist/esm/types/generators/model-router/screens/list-screen.d.ts +1 -1
  135. package/dist/esm/types/generators/model-router/screens/update-screen.d.ts +1 -1
  136. package/dist/esm/types/{components → generators}/table-list/table-list.d.ts +3 -3
  137. package/dist/esm/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +2 -2
  138. package/dist/esm/types/layouts/header-layout/header-layout.d.ts +1 -2
  139. package/dist/esm/types/providers/notification-center/notification-center.context.d.ts +0 -2
  140. package/dist/esm/types/providers/notification-center/notification-center.provider.d.ts +1 -1
  141. package/dist/esm/types/providers/tab-provider/tab-provider.provider.d.ts +1 -1
  142. package/dist/esm/types/utils/theme.d.ts +1 -1
  143. package/dist/index.d.ts +338 -288
  144. package/package.json +50 -44
  145. package/src/components/{app-bar → app-bars/app-bar}/app-bar.stories.tsx +5 -4
  146. package/src/components/{app-bar → app-bars/app-bar}/app-bar.test.tsx +2 -2
  147. package/src/components/{app-bar → app-bars/app-bar}/app-bar.tsx +1 -1
  148. package/src/components/{app-bar → app-bars/app-bar}/mini-app-bar/mini-app-bar.tsx +2 -2
  149. package/src/components/app-bars/app-bars.stories.mdx +10 -0
  150. package/src/components/app-bars/index.ts +1 -0
  151. package/src/components/components.stories.mdx +19 -0
  152. package/src/components/{center-container → containers/center-container}/center-container.stories.tsx +3 -3
  153. package/src/components/{center-container → containers/center-container}/center-container.test.tsx +1 -1
  154. package/src/components/containers/containers.stories.mdx +11 -0
  155. package/src/components/{content → containers/content}/content.stories.tsx +3 -3
  156. package/src/components/{content → containers/content}/content.test.tsx +1 -1
  157. package/src/components/containers/index.ts +2 -0
  158. package/src/components/{bullet → data-display/bullet}/bullet.stories.tsx +2 -2
  159. package/src/components/{bullet → data-display/bullet}/bullet.test.tsx +1 -1
  160. package/src/components/data-display/data-display.stories.mdx +12 -0
  161. package/src/components/{header → data-display/header}/header.dummy.ts +1 -1
  162. package/src/components/{header → data-display/header}/header.stories.tsx +2 -8
  163. package/src/components/{header → data-display/header}/header.test.tsx +2 -2
  164. package/src/components/{header → data-display/header}/header.tsx +2 -2
  165. package/src/components/data-display/index.ts +3 -0
  166. package/src/components/{label → data-display/label}/label.stories.tsx +2 -2
  167. package/src/components/{label → data-display/label}/label.test.tsx +1 -1
  168. package/src/components/{drawer → drawers/drawer}/__snapshots__/drawer.test.tsx.snap +3 -3
  169. package/src/components/{drawer → drawers/drawer}/drawer.mock.tsx +27 -0
  170. package/src/components/{drawer → drawers/drawer}/drawer.test.tsx +8 -8
  171. package/src/components/{drawer → drawers/drawer}/drawer.types.ts +12 -3
  172. package/src/components/{drawer → drawers/drawer}/mini-drawer/mini-drawer.stories.tsx +3 -3
  173. package/src/components/{drawer → drawers/drawer}/mini-drawer/mini-drawer.tsx +1 -2
  174. package/src/components/drawers/drawer-collapsable-item/drawer-collapsable-item.test.tsx +62 -0
  175. package/src/components/drawers/drawer-collapsable-item/drawer-collapsable-item.tsx +78 -0
  176. package/src/components/drawers/drawer-collapsable-item/index.ts +1 -0
  177. package/src/components/{drawer-content → drawers/drawer-content}/drawer-content.stories.tsx +3 -3
  178. package/src/components/drawers/drawer-content/drawer-content.test.tsx +59 -0
  179. package/src/components/{drawer-content → drawers/drawer-content}/drawer-content.tsx +5 -4
  180. package/src/components/{drawer-item → drawers/drawer-item}/drawer-item.stories.tsx +2 -3
  181. package/src/components/{drawer-item → drawers/drawer-item}/drawer-item.test.tsx +3 -3
  182. package/src/components/{drawer-item → drawers/drawer-item}/drawer-item.tsx +23 -5
  183. package/src/components/{drawer-section → drawers/drawer-section}/drawer-section.stories.tsx +3 -3
  184. package/src/components/{drawer-section → drawers/drawer-section}/drawer-section.test.tsx +1 -1
  185. package/src/components/drawers/drawer-section/drawer-section.tsx +65 -0
  186. package/src/components/drawers/drawers.stories.mdx +13 -0
  187. package/src/components/drawers/index.ts +4 -0
  188. package/src/components/feedback/feedback.stories.mdx +12 -0
  189. package/src/components/feedback/index.ts +2 -0
  190. package/src/components/{loading-area → feedback/loading-area}/loading-area.stories.tsx +2 -2
  191. package/src/components/{loading-area → feedback/loading-area}/loading-area.test.tsx +2 -1
  192. package/src/components/{query-container → feedback/query-container}/query-container.stories.tsx +2 -2
  193. package/src/components/{query-container → feedback/query-container}/query-container.test.tsx +2 -1
  194. package/src/components/index.ts +9 -18
  195. package/src/components/{enhanced-select → inputs/enhanced-select}/enhanced-select.stories.tsx +12 -12
  196. package/src/components/{enhanced-select → inputs/enhanced-select}/enhanced-select.test.tsx +9 -4
  197. package/src/components/{enhanced-select → inputs/enhanced-select}/enhanced-select.tsx +2 -4
  198. package/src/components/inputs/index.ts +2 -0
  199. package/src/components/inputs/inputs.stories.mdx +11 -0
  200. package/src/components/{sign-in → inputs/sign-in}/sign-in.stories.tsx +2 -2
  201. package/src/components/{sign-in → inputs/sign-in}/sign-in.test.tsx +2 -1
  202. package/src/components/{sign-in → inputs/sign-in}/sign-in.tsx +3 -3
  203. package/src/components/navigation/index.ts +1 -0
  204. package/src/components/{link → navigation/link}/link.tsx +2 -2
  205. package/src/components/navigation/navigation.stories.mdx +10 -0
  206. package/src/components/{tab → navigation/tab}/tab-card/tab-card.dummy.tsx +3 -3
  207. package/src/components/{tab → navigation/tab}/tab-card/tab-card.stories.tsx +4 -4
  208. package/src/components/{tab → navigation/tab}/tab-card/tab-card.test.tsx +1 -1
  209. package/src/components/{tab → navigation/tab}/tab-card/tab-card.tsx +3 -3
  210. package/src/components/{tab → navigation/tab}/tab-panel/tab-panel.test.tsx +1 -1
  211. package/src/{tests → components/placeholders/content-placeholder}/content-placeholder.stories.tsx +3 -4
  212. package/src/components/placeholders/content-placeholder/content-placeholder.tsx +17 -0
  213. package/src/components/placeholders/content-placeholder/index.ts +1 -0
  214. package/src/components/placeholders/index.ts +5 -0
  215. package/src/components/placeholders/lorem-ipsum-placeholder/index.ts +1 -0
  216. package/src/components/placeholders/lorem-ipsum-placeholder/lorem-ipsum-placeholder.stories.tsx +15 -0
  217. package/src/components/placeholders/lorem-ipsum-placeholder/lorem-ipsum-placeholder.tsx +26 -0
  218. package/src/components/{placeholder → placeholders/placeholder}/placeholder.stories.tsx +2 -2
  219. package/src/components/{placeholder → placeholders/placeholder}/placeholder.test.tsx +3 -2
  220. package/src/components/placeholders/placeholders.stories.mdx +14 -0
  221. package/src/components/placeholders/skeleton-card/index.ts +1 -0
  222. package/src/{tests → components/placeholders/skeleton-card}/skeleton-card.stories.tsx +3 -3
  223. package/src/components/placeholders/skeleton-card/skeleton-card.tsx +17 -0
  224. package/src/components/placeholders/skeleton-grid/index.ts +1 -0
  225. package/src/components/placeholders/skeleton-grid/skeleton-grid.stories.tsx +15 -0
  226. package/src/components/placeholders/skeleton-grid/skeleton-grid.tsx +20 -0
  227. package/src/components/{table → tables}/enhanced-remote-table/enhanced-remote-table.mock.tsx +7 -6
  228. package/src/components/{table → tables}/enhanced-remote-table/enhanced-remote-table.stories.tsx +1 -1
  229. package/src/components/{table → tables}/enhanced-remote-table/enhanced-remote-table.test.tsx +3 -3
  230. package/src/components/{table → tables}/enhanced-remote-table/enhanced-remote-table.tsx +8 -8
  231. package/src/components/{table → tables}/enhanced-table/enhanced-table-head.tsx +14 -9
  232. package/src/components/{table → tables}/enhanced-table/enhanced-table.mock.tsx +12 -6
  233. package/src/components/{table → tables}/enhanced-table/enhanced-table.stories.tsx +1 -1
  234. package/src/components/{table → tables}/enhanced-table/enhanced-table.test.tsx +6 -5
  235. package/src/components/{table → tables}/enhanced-table/enhanced-table.tsx +8 -8
  236. package/src/components/tables/table.stories.mdx +11 -0
  237. package/src/components/value-displays/group-value-card/group-value-card.mock.tsx +2 -2
  238. package/src/components/value-displays/group-value-card/group-value-card.stories.tsx +25 -2
  239. package/src/components/value-displays/group-value-card/group-value-card.test.tsx +7 -2
  240. package/src/components/value-displays/group-value-card/group-value-card.tsx +13 -4
  241. package/src/components/value-displays/index.ts +1 -0
  242. package/src/components/value-displays/value-boolean/value-boolean.stories.tsx +1 -1
  243. package/src/components/value-displays/value-boolean/value-boolean.test.tsx +15 -3
  244. package/src/components/value-displays/value-boolean/value-boolean.tsx +18 -18
  245. package/src/components/value-displays/value-card/value-card.stories.tsx +1 -1
  246. package/src/components/value-displays/value-card/value-card.test.tsx +1 -1
  247. package/src/components/value-displays/value-content/index.ts +1 -0
  248. package/src/components/value-displays/value-content/value-content.stories.tsx +20 -0
  249. package/src/components/value-displays/value-content/value-content.test.tsx +50 -0
  250. package/src/components/value-displays/value-content/value-content.tsx +54 -0
  251. package/src/components/value-displays/value-datetime/value-datetime.stories.tsx +14 -1
  252. package/src/components/value-displays/value-datetime/value-datetime.test.tsx +24 -5
  253. package/src/components/value-displays/value-datetime/value-datetime.tsx +16 -23
  254. package/src/components/value-displays/value-displays.stories.mdx +16 -0
  255. package/src/components/value-displays/value-displays.types.ts +18 -0
  256. package/src/components/value-displays/value-image/index.ts +1 -0
  257. package/src/components/value-displays/value-image/value-image.stories.tsx +28 -0
  258. package/src/components/value-displays/value-image/value-image.test.tsx +22 -0
  259. package/src/components/value-displays/value-image/value-image.tsx +24 -0
  260. package/src/components/value-displays/value-text/value-text.stories.tsx +12 -1
  261. package/src/components/value-displays/value-text/value-text.test.tsx +19 -5
  262. package/src/components/value-displays/value-text/value-text.tsx +16 -22
  263. package/src/generators/generators.mock.ts +25 -22
  264. package/src/generators/generators.model.test.ts +77 -0
  265. package/src/generators/generators.model.ts +78 -6
  266. package/src/generators/generators.stories.mdx +13 -0
  267. package/src/generators/index.ts +1 -0
  268. package/src/generators/model-form/model-form.test.tsx +11 -14
  269. package/src/generators/model-form/model-form.tsx +33 -65
  270. package/src/generators/model-router/model-router.test.tsx +45 -32
  271. package/src/generators/model-router/screens/add-screen.tsx +2 -1
  272. package/src/generators/model-router/screens/details-screen.tsx +2 -1
  273. package/src/generators/model-router/screens/list-screen.tsx +3 -2
  274. package/src/generators/model-router/screens/update-screen.tsx +4 -5
  275. package/src/generators/model-router/stories/model-router.stories.tsx +2 -2
  276. package/src/generators/object-details/object-details.test.tsx +2 -1
  277. package/src/generators/object-details/object-details.tsx +18 -9
  278. package/src/{components → generators}/table-list/table-list.stories.tsx +28 -18
  279. package/src/{components → generators}/table-list/table-list.test.tsx +13 -8
  280. package/src/{components → generators}/table-list/table-list.tsx +24 -13
  281. package/src/hooks/routing/routing.test.tsx +1 -1
  282. package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.stories.tsx +3 -4
  283. package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.test.tsx +2 -1
  284. package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.tsx +3 -3
  285. package/src/layouts/header-layout/header-layout.stories.tsx +16 -8
  286. package/src/layouts/header-layout/header-layout.test.tsx +1 -1
  287. package/src/layouts/header-layout/header-layout.tsx +2 -2
  288. package/src/layouts/layouts.stories.mdx +11 -0
  289. package/src/providers/notification-center/notification-center.context.ts +0 -6
  290. package/src/providers/notification-center/notification-center.stories.tsx +2 -2
  291. package/src/providers/notification-center/notification-center.test.tsx +6 -7
  292. package/src/stories/Introduction.stories.mdx +10 -185
  293. package/src/stories/getting-started.stories.mdx +23 -0
  294. package/src/storybook.tsx +1 -1
  295. package/src/tests/actions.ts +4 -0
  296. package/src/tests/assertions.ts +18 -10
  297. package/src/tests/datatable-placeholder/datatable-placeholder.stories.tsx +15 -0
  298. package/src/tests/datatable-placeholder/datatable-placeholder.tsx +40 -0
  299. package/src/tests/datatable-placeholder/index.ts +1 -0
  300. package/src/tests/file-mock.ts +1 -0
  301. package/src/tests/mocks.ts +21 -0
  302. package/src/tests/testing-library.tsx +11 -8
  303. package/src/types/index.d.ts +4 -0
  304. package/src/types.d.ts +4 -0
  305. package/dist/cjs/types/components/content/content.types.d.ts +0 -4
  306. package/dist/cjs/types/components/link/link.d.ts +0 -7
  307. package/dist/cjs/types/components/tab/tab-card/tab-card.d.ts +0 -6
  308. package/dist/cjs/types/components/tab/tab-card/tab-card.dummy.d.ts +0 -7
  309. package/dist/cjs/types/components/table/enhanced-remote-table/enhanced-remote-table.d.ts +0 -13
  310. package/dist/cjs/types/components/table/enhanced-remote-table/enhanced-remote-table.mock.d.ts +0 -11
  311. package/dist/cjs/types/components/table/enhanced-table/enhanced-table-head.d.ts +0 -16
  312. package/dist/esm/types/components/content/content.types.d.ts +0 -4
  313. package/dist/esm/types/components/link/link.d.ts +0 -7
  314. package/dist/esm/types/components/tab/tab-card/tab-card.d.ts +0 -6
  315. package/dist/esm/types/components/tab/tab-card/tab-card.dummy.d.ts +0 -7
  316. package/dist/esm/types/components/table/enhanced-remote-table/enhanced-remote-table.d.ts +0 -13
  317. package/dist/esm/types/components/table/enhanced-remote-table/enhanced-remote-table.mock.d.ts +0 -11
  318. package/dist/esm/types/components/table/enhanced-table/enhanced-table-head.d.ts +0 -16
  319. package/src/components/drawer-content/drawer-content.test.tsx +0 -34
  320. package/src/components/drawer-section/drawer-section.tsx +0 -40
  321. package/src/tests/components.tsx +0 -60
  322. package/src/tests/index.ts +0 -4
  323. /package/dist/cjs/types/components/{app-bar → app-bars/app-bar}/app-bar.d.ts +0 -0
  324. /package/dist/cjs/types/components/{app-bar → app-bars/app-bar}/index.d.ts +0 -0
  325. /package/dist/cjs/types/components/{app-bar → app-bars/app-bar}/mini-app-bar/index.d.ts +0 -0
  326. /package/dist/cjs/types/components/{app-bar → app-bars/app-bar}/mini-app-bar/mini-app-bar.d.ts +0 -0
  327. /package/dist/cjs/types/components/{center-container → containers/center-container}/center-container.d.ts +0 -0
  328. /package/dist/cjs/types/components/{center-container → containers/center-container}/index.d.ts +0 -0
  329. /package/dist/cjs/types/components/{content → containers/content}/content.d.ts +0 -0
  330. /package/dist/cjs/types/components/{content → containers/content}/index.d.ts +0 -0
  331. /package/dist/cjs/types/components/{bullet → data-display/bullet}/index.d.ts +0 -0
  332. /package/dist/cjs/types/components/{header → data-display/header}/header.d.ts +0 -0
  333. /package/dist/cjs/types/components/{header → data-display/header}/index.d.ts +0 -0
  334. /package/dist/cjs/types/components/{label → data-display/label}/index.d.ts +0 -0
  335. /package/dist/cjs/types/components/{drawer → drawers/drawer}/drawer.context.d.ts +0 -0
  336. /package/dist/cjs/types/components/{drawer → drawers/drawer}/drawer.d.ts +0 -0
  337. /package/dist/cjs/types/components/{drawer → drawers/drawer}/drawer.mixins.d.ts +0 -0
  338. /package/dist/cjs/types/components/{drawer → drawers/drawer}/drawer.mock.d.ts +0 -0
  339. /package/dist/cjs/types/components/{drawer → drawers/drawer}/index.d.ts +0 -0
  340. /package/dist/cjs/types/components/{drawer → drawers/drawer}/mini-drawer/index.d.ts +0 -0
  341. /package/dist/cjs/types/components/{drawer → drawers/drawer}/mini-drawer/mini-drawer.d.ts +0 -0
  342. /package/dist/cjs/types/components/{drawer-content → drawers/drawer-content}/drawer-content.d.ts +0 -0
  343. /package/dist/cjs/types/components/{drawer-content → drawers/drawer-content}/index.d.ts +0 -0
  344. /package/dist/cjs/types/components/{drawer-item → drawers/drawer-item}/index.d.ts +0 -0
  345. /package/dist/cjs/types/components/{drawer-section → drawers/drawer-section}/drawer-section.mock.d.ts +0 -0
  346. /package/dist/cjs/types/components/{drawer-section → drawers/drawer-section}/index.d.ts +0 -0
  347. /package/dist/cjs/types/components/{loading-area → feedback/loading-area}/index.d.ts +0 -0
  348. /package/dist/cjs/types/components/{loading-area → feedback/loading-area}/loading-area.d.ts +0 -0
  349. /package/dist/cjs/types/components/{query-container → feedback/query-container}/index.d.ts +0 -0
  350. /package/dist/cjs/types/components/{enhanced-select → inputs/enhanced-select}/index.d.ts +0 -0
  351. /package/dist/cjs/types/components/{sign-in → inputs/sign-in}/index.d.ts +0 -0
  352. /package/dist/cjs/types/components/{link → navigation/link}/index.d.ts +0 -0
  353. /package/dist/cjs/types/components/{tab → navigation/tab}/index.d.ts +0 -0
  354. /package/dist/cjs/types/components/{tab → navigation/tab}/tab-card/index.d.ts +0 -0
  355. /package/dist/cjs/types/components/{tab → navigation/tab}/tab-panel/index.d.ts +0 -0
  356. /package/dist/cjs/types/components/{tab → navigation/tab}/tab-panel/tab-panel.d.ts +0 -0
  357. /package/dist/cjs/types/components/{placeholder → placeholders/placeholder}/index.d.ts +0 -0
  358. /package/dist/cjs/types/components/{placeholder → placeholders/placeholder}/placeholder.mock.d.ts +0 -0
  359. /package/dist/cjs/types/components/{table → tables}/enhanced-remote-table/index.d.ts +0 -0
  360. /package/dist/cjs/types/components/{table → tables}/enhanced-table/index.d.ts +0 -0
  361. /package/dist/cjs/types/components/{table → tables}/index.d.ts +0 -0
  362. /package/dist/cjs/types/{components → generators}/table-list/index.d.ts +0 -0
  363. /package/dist/esm/types/components/{app-bar → app-bars/app-bar}/app-bar.d.ts +0 -0
  364. /package/dist/esm/types/components/{app-bar → app-bars/app-bar}/index.d.ts +0 -0
  365. /package/dist/esm/types/components/{app-bar → app-bars/app-bar}/mini-app-bar/index.d.ts +0 -0
  366. /package/dist/esm/types/components/{app-bar → app-bars/app-bar}/mini-app-bar/mini-app-bar.d.ts +0 -0
  367. /package/dist/esm/types/components/{center-container → containers/center-container}/center-container.d.ts +0 -0
  368. /package/dist/esm/types/components/{center-container → containers/center-container}/index.d.ts +0 -0
  369. /package/dist/esm/types/components/{content → containers/content}/content.d.ts +0 -0
  370. /package/dist/esm/types/components/{content → containers/content}/index.d.ts +0 -0
  371. /package/dist/esm/types/components/{bullet → data-display/bullet}/index.d.ts +0 -0
  372. /package/dist/esm/types/components/{header → data-display/header}/header.d.ts +0 -0
  373. /package/dist/esm/types/components/{header → data-display/header}/index.d.ts +0 -0
  374. /package/dist/esm/types/components/{label → data-display/label}/index.d.ts +0 -0
  375. /package/dist/esm/types/components/{drawer → drawers/drawer}/drawer.context.d.ts +0 -0
  376. /package/dist/esm/types/components/{drawer → drawers/drawer}/drawer.d.ts +0 -0
  377. /package/dist/esm/types/components/{drawer → drawers/drawer}/drawer.mixins.d.ts +0 -0
  378. /package/dist/esm/types/components/{drawer → drawers/drawer}/drawer.mock.d.ts +0 -0
  379. /package/dist/esm/types/components/{drawer → drawers/drawer}/index.d.ts +0 -0
  380. /package/dist/esm/types/components/{drawer → drawers/drawer}/mini-drawer/index.d.ts +0 -0
  381. /package/dist/esm/types/components/{drawer → drawers/drawer}/mini-drawer/mini-drawer.d.ts +0 -0
  382. /package/dist/esm/types/components/{drawer-content → drawers/drawer-content}/drawer-content.d.ts +0 -0
  383. /package/dist/esm/types/components/{drawer-content → drawers/drawer-content}/index.d.ts +0 -0
  384. /package/dist/esm/types/components/{drawer-item → drawers/drawer-item}/index.d.ts +0 -0
  385. /package/dist/esm/types/components/{drawer-section → drawers/drawer-section}/drawer-section.mock.d.ts +0 -0
  386. /package/dist/esm/types/components/{drawer-section → drawers/drawer-section}/index.d.ts +0 -0
  387. /package/dist/esm/types/components/{loading-area → feedback/loading-area}/index.d.ts +0 -0
  388. /package/dist/esm/types/components/{loading-area → feedback/loading-area}/loading-area.d.ts +0 -0
  389. /package/dist/esm/types/components/{query-container → feedback/query-container}/index.d.ts +0 -0
  390. /package/dist/esm/types/components/{enhanced-select → inputs/enhanced-select}/index.d.ts +0 -0
  391. /package/dist/esm/types/components/{sign-in → inputs/sign-in}/index.d.ts +0 -0
  392. /package/dist/esm/types/components/{link → navigation/link}/index.d.ts +0 -0
  393. /package/dist/esm/types/components/{tab → navigation/tab}/index.d.ts +0 -0
  394. /package/dist/esm/types/components/{tab → navigation/tab}/tab-card/index.d.ts +0 -0
  395. /package/dist/esm/types/components/{tab → navigation/tab}/tab-panel/index.d.ts +0 -0
  396. /package/dist/esm/types/components/{tab → navigation/tab}/tab-panel/tab-panel.d.ts +0 -0
  397. /package/dist/esm/types/components/{placeholder → placeholders/placeholder}/index.d.ts +0 -0
  398. /package/dist/esm/types/components/{placeholder → placeholders/placeholder}/placeholder.mock.d.ts +0 -0
  399. /package/dist/esm/types/components/{table → tables}/enhanced-remote-table/index.d.ts +0 -0
  400. /package/dist/esm/types/components/{table → tables}/enhanced-table/index.d.ts +0 -0
  401. /package/dist/esm/types/components/{table → tables}/index.d.ts +0 -0
  402. /package/dist/esm/types/{components → generators}/table-list/index.d.ts +0 -0
  403. /package/src/components/{app-bar → app-bars/app-bar}/app-bar.types.ts +0 -0
  404. /package/src/components/{app-bar → app-bars/app-bar}/index.ts +0 -0
  405. /package/src/components/{app-bar → app-bars/app-bar}/mini-app-bar/index.ts +0 -0
  406. /package/src/components/{center-container → containers/center-container}/center-container.tsx +0 -0
  407. /package/src/components/{center-container → containers/center-container}/index.ts +0 -0
  408. /package/src/components/{content → containers/content}/content.tsx +0 -0
  409. /package/src/components/{content → containers/content}/content.types.ts +0 -0
  410. /package/src/components/{content → containers/content}/index.ts +0 -0
  411. /package/src/components/{bullet → data-display/bullet}/bullet.tsx +0 -0
  412. /package/src/components/{bullet → data-display/bullet}/index.ts +0 -0
  413. /package/src/components/{header → data-display/header}/header.types.ts +0 -0
  414. /package/src/components/{header → data-display/header}/index.ts +0 -0
  415. /package/src/components/{label → data-display/label}/index.ts +0 -0
  416. /package/src/components/{label → data-display/label}/label.tsx +0 -0
  417. /package/src/components/{drawer → drawers/drawer}/drawer.context.ts +0 -0
  418. /package/src/components/{drawer → drawers/drawer}/drawer.mixins.ts +0 -0
  419. /package/src/components/{drawer → drawers/drawer}/drawer.provider.tsx +0 -0
  420. /package/src/components/{drawer → drawers/drawer}/drawer.tsx +0 -0
  421. /package/src/components/{drawer → drawers/drawer}/index.ts +0 -0
  422. /package/src/components/{drawer → drawers/drawer}/mini-drawer/index.ts +0 -0
  423. /package/src/components/{drawer-content → drawers/drawer-content}/index.ts +0 -0
  424. /package/src/components/{drawer-item → drawers/drawer-item}/index.ts +0 -0
  425. /package/src/components/{drawer-section → drawers/drawer-section}/drawer-section.mock.tsx +0 -0
  426. /package/src/components/{drawer-section → drawers/drawer-section}/index.ts +0 -0
  427. /package/src/components/{loading-area → feedback/loading-area}/index.ts +0 -0
  428. /package/src/components/{loading-area → feedback/loading-area}/loading-area.tsx +0 -0
  429. /package/src/components/{query-container → feedback/query-container}/index.ts +0 -0
  430. /package/src/components/{query-container → feedback/query-container}/query-container.tsx +0 -0
  431. /package/src/components/{enhanced-select → inputs/enhanced-select}/index.ts +0 -0
  432. /package/src/components/{sign-in → inputs/sign-in}/index.ts +0 -0
  433. /package/src/components/{link → navigation/link}/index.ts +0 -0
  434. /package/src/components/{tab → navigation/tab}/index.ts +0 -0
  435. /package/src/components/{tab → navigation/tab}/tab-card/index.ts +0 -0
  436. /package/src/components/{tab → navigation/tab}/tab-panel/index.ts +0 -0
  437. /package/src/components/{tab → navigation/tab}/tab-panel/tab-panel.tsx +0 -0
  438. /package/src/components/{placeholder → placeholders/placeholder}/index.ts +0 -0
  439. /package/src/components/{placeholder → placeholders/placeholder}/placeholder.mock.ts +0 -0
  440. /package/src/components/{placeholder → placeholders/placeholder}/placeholder.tsx +0 -0
  441. /package/src/components/{table → tables}/enhanced-remote-table/index.ts +0 -0
  442. /package/src/components/{table → tables}/enhanced-table/index.ts +0 -0
  443. /package/src/components/{table → tables}/index.ts +0 -0
  444. /package/src/{components → generators}/table-list/index.ts +0 -0
@@ -18,52 +18,16 @@ import { DesktopDatePicker, TimePicker, DateTimePicker } from "@mui/x-date-picke
18
18
  import React, { ChangeEvent, FormEvent, ReactElement, useMemo } from "react";
19
19
  import { useState } from "react";
20
20
  import { useGetDefaultThemeColor } from "../../utils/theme";
21
- import { Model, ModelField, BasicModelInstance, ModelFieldTypes } from "../generators.model";
22
-
23
- const InitialStateZeroValue: Record<string, any> = {
24
- string: undefined,
25
- number: undefined,
26
- boolean: false,
27
- enum: "",
28
- multienum: [],
29
- date: "01/01/1970",
30
- group: {},
31
- };
32
-
33
- const getFieldInitialState = <T extends BasicModelInstance>(
34
- field: ModelField,
35
- initialValues: T | undefined,
36
- ) => {
37
- return initialValues ? initialValues[field.id] : InitialStateZeroValue[field.type];
38
- };
39
-
40
- const getValuesInitialState = <T extends BasicModelInstance>(
41
- model: Model,
42
- initialValues: T | undefined,
43
- ): T => {
44
- const obj = {} as any;
45
-
46
- model.fields.forEach((field) => {
47
- let value: any;
48
- if (field.type === "group") {
49
- value = {};
50
- field.value.forEach((groupField) => {
51
- value[groupField.id] = getFieldInitialState(
52
- groupField,
53
- initialValues && initialValues[field.id],
54
- );
55
- });
56
- } else if (field.type === "date" || field.type === "time") {
57
- value = (initialValues && initialValues[field.id]) || field.default;
58
- } else {
59
- value = getFieldInitialState(field, initialValues);
60
- }
61
-
62
- obj[field.id] = value;
63
- });
64
-
65
- return obj;
66
- };
21
+ import {
22
+ Model,
23
+ ModelField,
24
+ BasicModelInstance,
25
+ ModelFieldTypes,
26
+ GroupInstanceType,
27
+ FieldType,
28
+ ArrayFieldType,
29
+ newInstanceFromValuesOrZeroValue,
30
+ } from "../generators.model";
67
31
 
68
32
  export interface ModelFormProps<T extends BasicModelInstance> {
69
33
  model: Model;
@@ -79,19 +43,19 @@ export const ModelForm = <T extends BasicModelInstance>({
79
43
  initialValues,
80
44
  }: ModelFormProps<T>) => {
81
45
  const valuesInitialState = useMemo(
82
- () => getValuesInitialState<T>(model, initialValues),
46
+ () => newInstanceFromValuesOrZeroValue<T>(model, initialValues),
83
47
  [model, initialValues],
84
48
  );
85
49
  const [values, setValues] = useState<T>(valuesInitialState);
86
50
 
87
- const setKeyValue = (name: string, key: string | undefined, value: any) => {
51
+ const setKeyValue = (name: string, key: string | undefined, value: FieldType | null) => {
88
52
  setValues((v) => {
89
- const n: Record<string, object> = {};
53
+ const n: Record<string, FieldType | null> = {};
90
54
  if (key) {
91
55
  n[key] = {
92
- ...v[key],
56
+ ...(v[key] as GroupInstanceType),
93
57
  [name]: value,
94
- };
58
+ } as GroupInstanceType;
95
59
  } else {
96
60
  n[name] = value;
97
61
  }
@@ -100,17 +64,17 @@ export const ModelForm = <T extends BasicModelInstance>({
100
64
  });
101
65
  };
102
66
 
103
- const handleCheckboxChange = (e: ChangeEvent<any>, key: string | undefined) => {
67
+ const handleCheckboxChange = (e: ChangeEvent<HTMLInputElement>, key: string | undefined) => {
104
68
  e.preventDefault();
105
69
  setKeyValue(e.target.name, key, e.target.checked);
106
70
  };
107
71
 
108
- const handleSelectChange = (e: SelectChangeEvent<any>, key: string | undefined) => {
72
+ const handleSelectChange = (e: SelectChangeEvent<FieldType>, key: string | undefined) => {
109
73
  e.preventDefault();
110
74
  setKeyValue(e.target.name, key, e.target.value);
111
75
  };
112
76
 
113
- const handleMultiSelectChange = (e: SelectChangeEvent<any>, key: string | undefined) => {
77
+ const handleMultiSelectChange = (e: SelectChangeEvent<FieldType>, key: string | undefined) => {
114
78
  e.preventDefault();
115
79
  const { value } = e.target;
116
80
  const newValue = typeof value === "string" ? value.split(",") : value;
@@ -118,20 +82,20 @@ export const ModelForm = <T extends BasicModelInstance>({
118
82
  };
119
83
 
120
84
  const handleInputChange = (
121
- e: ChangeEvent<any>,
85
+ e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>,
122
86
  key: string | undefined,
123
87
  type: ModelFieldTypes,
124
88
  ) => {
125
89
  e.preventDefault();
126
90
 
127
- let value = e.target.value;
128
- if (type === "number") {
91
+ let value: string | number = e.target.value;
92
+ if (type === "number" && typeof value === "string") {
129
93
  value = parseInt(e.target.value);
130
94
  }
131
95
  setKeyValue(e.target.name, key, value);
132
96
  };
133
97
 
134
- const handleDateChange = (value: any, key: string | undefined, id: string) => {
98
+ const handleDateChange = (value: FieldType | null, key: string | undefined, id: string) => {
135
99
  setKeyValue(id, key, value);
136
100
  };
137
101
 
@@ -146,7 +110,7 @@ export const ModelForm = <T extends BasicModelInstance>({
146
110
  const { id, type, name, description, xs, sm, md, lg, xl } = field;
147
111
 
148
112
  let fieldInput: ReactElement;
149
- const value = key ? values[key][id] : values[id];
113
+ const value = key ? (values[key] as GroupInstanceType)[id] : values[id];
150
114
  if (type === "group") {
151
115
  fieldInput = (
152
116
  <Paper>
@@ -168,7 +132,11 @@ export const ModelForm = <T extends BasicModelInstance>({
168
132
  <Box sx={{ height: 1, display: "flex", alignItems: "center" }}>
169
133
  <FormControlLabel
170
134
  control={
171
- <Checkbox name={id} onChange={(e) => handleCheckboxChange(e, key)} checked={value} />
135
+ <Checkbox
136
+ name={id}
137
+ onChange={(e) => handleCheckboxChange(e, key)}
138
+ checked={value as boolean}
139
+ />
172
140
  }
173
141
  label={name}
174
142
  />
@@ -203,7 +171,7 @@ export const ModelForm = <T extends BasicModelInstance>({
203
171
  labelId={`${id}-select-label`}
204
172
  id={`${id}-select`}
205
173
  value={value || []}
206
- renderValue={(selected) => selected.join(", ")}
174
+ renderValue={(selected) => (selected as ArrayFieldType).join(", ")}
207
175
  label={name}
208
176
  name={id}
209
177
  onChange={(e) => handleMultiSelectChange(e, key)}
@@ -212,7 +180,7 @@ export const ModelForm = <T extends BasicModelInstance>({
212
180
  >
213
181
  {field.value.map((fieldValue) => (
214
182
  <MenuItem key={fieldValue} value={fieldValue}>
215
- <Checkbox checked={(value || []).includes(fieldValue)} />
183
+ <Checkbox checked={((value as ArrayFieldType) || []).includes(fieldValue)} />
216
184
  <ListItemText primary={fieldValue} />
217
185
  </MenuItem>
218
186
  ))}
@@ -226,7 +194,7 @@ export const ModelForm = <T extends BasicModelInstance>({
226
194
  inputFormat={field.format}
227
195
  value={value}
228
196
  onChange={(value) => handleDateChange(value, key, id)}
229
- renderInput={(params: any) => <TextField {...params} />}
197
+ renderInput={(params) => <TextField {...params} />}
230
198
  />
231
199
  );
232
200
  } else if (type === "time") {
@@ -236,7 +204,7 @@ export const ModelForm = <T extends BasicModelInstance>({
236
204
  inputFormat={field.format}
237
205
  value={value}
238
206
  onChange={(value) => handleDateChange(value, key, id)}
239
- renderInput={(params: any) => <TextField {...params} />}
207
+ renderInput={(params) => <TextField {...params} />}
240
208
  />
241
209
  );
242
210
  } else if (type === "datetime") {
@@ -246,7 +214,7 @@ export const ModelForm = <T extends BasicModelInstance>({
246
214
  inputFormat={field.format}
247
215
  value={value}
248
216
  onChange={(value) => handleDateChange(value, key, id)}
249
- renderInput={(params: any) => <TextField {...params} />}
217
+ renderInput={(params) => <TextField {...params} />}
250
218
  />
251
219
  );
252
220
  } else {
@@ -1,16 +1,5 @@
1
1
  import React, { useState } from "react";
2
2
  import { DummyModelRouter, InternalModelRouter } from "./stories/model-router.stories";
3
- import {
4
- expectModelFieldInputExist,
5
- expectProgressIndicator,
6
- waitForProgressIndicatorToBeRemoved,
7
- render,
8
- screen,
9
- TestRouter,
10
- expectModelFieldValue,
11
- expectModelFieldInputValue,
12
- selectOption,
13
- } from "~/tests";
14
3
  import { data as mockData } from "./stories/templates";
15
4
  import userEvent from "@testing-library/user-event";
16
5
  import { getRandomItem } from "../../utils";
@@ -27,16 +16,27 @@ import { NotificationCenterProvider } from "../../providers";
27
16
  import { Box } from "@mui/system";
28
17
  import { Button } from "@mui/material";
29
18
  import { useNavigate } from "react-router-dom";
19
+ import { render, screen, TestRouter } from "~/tests/testing-library";
20
+ import { AddScreen, ListScreen, UpdateScreen } from "./screens";
21
+ import { IdleRequest, LoadingRequest, SuccessRequest } from "./model-router.types";
30
22
  import {
31
23
  clearCheckbox,
32
24
  clearMultiSelect,
33
- expectAlert,
34
- expectToHaveBeenCalledOnceWithMockInstance,
25
+ selectOption,
26
+ typeNumericInput,
35
27
  pickDatetime,
36
28
  selectOptions,
37
- } from "../../tests";
38
- import { AddScreen, ListScreen, UpdateScreen } from "./screens";
39
- import { IdleRequest, LoadingRequest, SuccessRequest } from "./model-router.types";
29
+ } from "~/tests/actions";
30
+ import {
31
+ expectProgressIndicator,
32
+ waitForProgressIndicatorToBeRemoved,
33
+ expectModelFieldInputExist,
34
+ expectModelFieldInputValue,
35
+ expectToHaveBeenCalledOnceWithMockInstance,
36
+ expectAlert,
37
+ expectModelFieldValue,
38
+ } from "~/tests/assertions";
39
+ import { mockConsoleWarn } from "~/tests/mocks";
40
40
 
41
41
  const REQUEST_TIMEOUT = 20;
42
42
 
@@ -87,10 +87,11 @@ describe("ModelRouter", () => {
87
87
  ).not.toBeInTheDocument(),
88
88
  expectListItems: async ({ data, model }: { data: MockInstance[]; model: Model }) => {
89
89
  for (let i = 0; i < model.fields.length; ++i) {
90
- const { id, listable } = model.fields[i];
90
+ const { listable, id } = model.fields[i];
91
91
 
92
92
  if (listable) {
93
- expect(await screen.findAllByRole("cell", { name: data[id] })).toBeTruthy();
93
+ const name = data[i][id] as string;
94
+ expect(await screen.findAllByRole("cell", { name })).toBeTruthy();
94
95
  }
95
96
  }
96
97
  },
@@ -145,30 +146,36 @@ describe("ModelRouter", () => {
145
146
  const lastNameElement = screen.getByRole("textbox", { name: /last name/i });
146
147
  const genderElement = screen.getByRole("button", { name: /gender/i });
147
148
  const ageElement = screen.getByRole("spinbutton", { name: /age/i });
148
- const birthDateElement = screen.getByRole("textbox", { name: /birth date/i });
149
+ const birthDateElement = screen.getByRole<HTMLInputElement>("textbox", {
150
+ name: /birth date/i,
151
+ });
149
152
  const manufacturerElement = screen.getByRole("button", { name: /manufacturer/i });
150
153
  const modelElement = screen.getByRole("button", { name: /model/i });
151
154
  const colorElement = screen.getByRole("textbox", { name: /color/i });
152
155
  const typeElement = screen.getByRole("button", { name: /type/i });
153
156
  const vinElement = screen.getByRole("textbox", { name: /vin/i });
154
157
  const vrmElement = screen.getByRole("textbox", { name: /vrm/i });
155
- const timeReturnElement = screen.getByRole("textbox", { name: /return time/i });
158
+ const timeReturnElement = screen.getByRole<HTMLInputElement>("textbox", {
159
+ name: /return time/i,
160
+ });
156
161
  const quantityElement = screen.getByRole("spinbutton", { name: /q/i });
157
- const availableElement = screen.getByRole("checkbox", { name: /available/i });
162
+ const availableElement = screen.getByRole<HTMLInputElement>("checkbox", {
163
+ name: /available/i,
164
+ });
158
165
  const currencyElement = screen.getByRole("textbox", { name: /currency/i });
159
- const tradeDateElement = screen.getByRole("textbox", { name: /trade date/i });
166
+ const tradeDateElement = screen.getByRole<HTMLInputElement>("textbox", {
167
+ name: /trade date/i,
168
+ });
160
169
 
161
170
  if (clear) {
162
171
  await userEvent.clear(idElement);
163
172
  await userEvent.clear(firstNameElement);
164
173
  await userEvent.clear(middleNameElement);
165
174
  await userEvent.clear(lastNameElement);
166
- await userEvent.clear(ageElement);
167
175
  await userEvent.clear(birthDateElement);
168
176
  await userEvent.clear(colorElement);
169
177
  await userEvent.clear(vinElement);
170
178
  await userEvent.clear(vrmElement);
171
- await userEvent.clear(quantityElement);
172
179
  await userEvent.clear(availableElement);
173
180
  await userEvent.clear(currencyElement);
174
181
  await userEvent.clear(tradeDateElement);
@@ -181,7 +188,7 @@ describe("ModelRouter", () => {
181
188
  await userEvent.type(middleNameElement, instance.middleName);
182
189
  await userEvent.type(lastNameElement, instance.lastName);
183
190
  await selectOption(genderElement, instance.gender);
184
- await userEvent.type(ageElement, instance.age.toString());
191
+ typeNumericInput(ageElement, instance.age);
185
192
  pickDatetime(birthDateElement, instance.birthDate, BirthDateFormat);
186
193
  await selectOption(modelElement, instance.car.model);
187
194
  await selectOption(manufacturerElement, instance.car.manufacturer);
@@ -190,7 +197,7 @@ describe("ModelRouter", () => {
190
197
  await userEvent.type(vinElement, instance.car.vin);
191
198
  await userEvent.type(vrmElement, instance.car.vrm);
192
199
  pickDatetime(timeReturnElement, instance.car.returnTime, ReturnTimeFormat);
193
- await userEvent.type(quantityElement, instance.quantity.toString());
200
+ typeNumericInput(quantityElement, instance.quantity);
194
201
  if (instance.available) {
195
202
  await userEvent.click(availableElement);
196
203
  }
@@ -788,13 +795,13 @@ describe("ModelRouter", () => {
788
795
  expect(onRequestItem).toHaveBeenCalledWith(id);
789
796
  });
790
797
 
791
- it("would show a loading indicator when the request is in progress", async () => {
798
+ it.skip("would show a loading indicator when the request is in progress", async () => {
792
799
  await renderComponent({ screen: "details" });
793
800
 
794
801
  expectProgressIndicator();
795
802
  });
796
803
 
797
- it("would show the details of an instance", async () => {
804
+ it.skip("would show the details of an instance", async () => {
798
805
  const { model, randomItem } = await renderComponent({ screen: "details" });
799
806
 
800
807
  await waitForProgressIndicatorToBeRemoved();
@@ -862,13 +869,13 @@ describe("ModelRouter", () => {
862
869
  expect(onRequestUpdateItem).toHaveBeenCalledWith(id);
863
870
  });
864
871
 
865
- it("would show a loading indicator while the instance is requested", async () => {
872
+ it.skip("would show a loading indicator while the instance is requested", async () => {
866
873
  await renderComponent({ screen: "update" });
867
874
 
868
875
  await expectProgressIndicator();
869
876
  });
870
877
 
871
- it("would render a form with the instance values", async () => {
878
+ it.skip("would render a form with the instance values", async () => {
872
879
  const {
873
880
  model,
874
881
  randomItem: { item },
@@ -879,7 +886,7 @@ describe("ModelRouter", () => {
879
886
  expectModelFieldInputValue(model.fields, item);
880
887
  });
881
888
 
882
- it("would make a request with the new values when the form is submitted", async () => {
889
+ it.skip("would make a request with the new values when the form is submitted", async () => {
883
890
  const { model, onSubmitUpdate } = await renderComponent({ screen: "update" });
884
891
 
885
892
  await waitForProgressIndicatorToBeRemoved();
@@ -888,7 +895,7 @@ describe("ModelRouter", () => {
888
895
  expectToHaveBeenCalledOnceWithMockInstance(onSubmitUpdate, newInstance);
889
896
  });
890
897
 
891
- it("would show a loading indicator while the submit request is in progress", async () => {
898
+ it.skip("would show a loading indicator while the submit request is in progress", async () => {
892
899
  const { model } = await renderComponent({ screen: "update" });
893
900
 
894
901
  await waitForProgressIndicatorToBeRemoved();
@@ -1014,6 +1021,8 @@ describe("ModelRouter", () => {
1014
1021
  });
1015
1022
 
1016
1023
  describe("updateFeature disabled", () => {
1024
+ mockConsoleWarn();
1025
+
1017
1026
  it("wouldn't have an option to remove an item from the list", async () => {
1018
1027
  const { data } = await renderComponent({ updateFeature: false });
1019
1028
  const {
@@ -1053,6 +1062,8 @@ describe("ModelRouter", () => {
1053
1062
  });
1054
1063
 
1055
1064
  describe("addFeature disabled", () => {
1065
+ mockConsoleWarn();
1066
+
1056
1067
  it("wouldn't render a button to navigate to the add screen", async () => {
1057
1068
  await renderComponent({ addFeature: false });
1058
1069
 
@@ -1071,6 +1082,8 @@ describe("ModelRouter", () => {
1071
1082
  });
1072
1083
 
1073
1084
  describe("detailsFeature disabled", () => {
1085
+ mockConsoleWarn();
1086
+
1074
1087
  it("wouldn't navigate to the details screen if I click a row item", async () => {
1075
1088
  const {
1076
1089
  randomItem: {
@@ -1,6 +1,7 @@
1
1
  import React from "react";
2
2
  import { Header, Content } from "~/components";
3
- import { BasicModelInstance, ModelForm } from "~/generators";
3
+ import { BasicModelInstance } from "../../generators.model";
4
+ import { ModelForm } from "../../model-form";
4
5
  import { HeaderLayout } from "../../../layouts";
5
6
  import { useNotifyWhenValueChanges } from "../../../providers";
6
7
  import { RequestState } from "../model-router.types";
@@ -4,7 +4,8 @@ import { RequestState } from "../model-router.types";
4
4
  import { Content, Header } from "~/components";
5
5
  import { HeaderLayout } from "~/layouts";
6
6
  import { BaseScreenProps } from "./screens.types";
7
- import { BasicModelInstance, ObjectDetails } from "~/generators";
7
+ import { BasicModelInstance } from "../../generators.model";
8
+ import { ObjectDetails } from "~/generators/object-details";
8
9
 
9
10
  export interface DetailsScreenProps<T extends BasicModelInstance> extends BaseScreenProps {
10
11
  /**
@@ -1,7 +1,8 @@
1
1
  import React, { useEffect } from "react";
2
2
  import { useNavigate } from "react-router-dom";
3
- import { Content, Header, HeaderAction, TableList, TableRowOption } from "~/components";
4
- import { BasicModelInstance } from "~/generators";
3
+ import { Content, Header, HeaderAction } from "~/components";
4
+ import { TableList, TableRowOption } from "../../table-list";
5
+ import { BasicModelInstance } from "../../generators.model";
5
6
  import { useNotifyWhenValueChanges } from "~/providers";
6
7
  import { HeaderLayout } from "../../../layouts";
7
8
  import { RequestState } from "../model-router.types";
@@ -1,10 +1,11 @@
1
1
  import React, { useEffect } from "react";
2
- import { useNavigate, useParams } from "react-router-dom";
2
+ import { useParams } from "react-router-dom";
3
3
  import { Content, Header } from "~/components";
4
- import { BasicModelInstance, ModelForm } from "~/generators";
4
+ import { BasicModelInstance } from "../../generators.model";
5
+ import { ModelForm } from "../../model-form";
5
6
  import { useNavigateWhenValueChanges } from "~/hooks";
6
7
  import { HeaderLayout } from "../../../layouts";
7
- import { useNotificationCenter, useNotifyWhenValueChanges } from "../../../providers";
8
+ import { useNotifyWhenValueChanges } from "../../../providers";
8
9
  import { RequestState } from "../model-router.types";
9
10
  import { BaseScreenProps } from "./screens.types";
10
11
 
@@ -48,8 +49,6 @@ export const UpdateScreen = <T extends BasicModelInstance>({
48
49
  onRequestUpdateItem,
49
50
  }: UpdateScreenProps<T>) => {
50
51
  const { id = "" } = useParams();
51
- const navigate = useNavigate();
52
- const { show } = useNotificationCenter();
53
52
  const loading = updateItemRequest.loading || submitUpdateItemRequest.loading;
54
53
 
55
54
  useEffect(() => {
@@ -75,7 +75,7 @@ export const DummyModelRouter = (args: DummyModelRouterProps) => {
75
75
  }, requestTimeout);
76
76
  };
77
77
 
78
- const handleClickDeleteItem = (item) => {
78
+ const handleClickDeleteItem = (item: MockInstance) => {
79
79
  setRemoveRequestState({ idle: false, loading: true });
80
80
  onRequestDeleteAction(item);
81
81
 
@@ -218,7 +218,7 @@ export const InternalModelRouter = () => {
218
218
  };
219
219
 
220
220
  export default {
221
- title: "Generators/ModelRouter",
221
+ title: "Generators/ModelRouter/DummyModelRouter",
222
222
  component: DummyModelRouter,
223
223
  decorators: [withMemoryRouter(), withNotificationCenter, withLocalizationProvider],
224
224
  parameters: {
@@ -1,5 +1,6 @@
1
1
  import React from "react";
2
- import { expectModelFieldValue, render } from "../../tests";
2
+ import { expectModelFieldValue } from "~/tests/assertions";
3
+ import { render } from "~/tests/testing-library";
3
4
  import { mockModel, createModelInstance } from "../generators.mock";
4
5
  import { ObjectDetails } from "./object-details";
5
6
 
@@ -8,28 +8,37 @@ import {
8
8
  ValueText,
9
9
  ValueDatetime,
10
10
  } from "../../components";
11
- import { ModelField, GroupField, Model, BasicModelInstance } from "../generators.model";
11
+ import {
12
+ ModelField,
13
+ GroupField,
14
+ Model,
15
+ BasicModelInstance,
16
+ GroupInstanceType,
17
+ } from "../generators.model";
12
18
 
13
- const singleDetailValueFactory = <T extends BasicModelInstance>(field: ModelField, instance: T) => {
19
+ const singleDetailValueFactory = <T extends BasicModelInstance>(
20
+ field: ModelField,
21
+ instance: T | GroupInstanceType,
22
+ ) => {
14
23
  const { id, name, type } = field;
15
24
  const value = instance[id];
16
25
  if (type === "boolean") {
17
- return <ValueBoolean label={name} value={value} />;
26
+ return <ValueBoolean label={name} value={value as boolean} />;
18
27
  } else if (type === "date" || type === "time" || type === "datetime") {
19
- return <ValueDatetime label={name} value={value} format={field.format} />;
28
+ return <ValueDatetime label={name} value={value as Date} format={field.format} />;
20
29
  }
21
30
  return <ValueText label={name} value={value?.toString()} />;
22
31
  };
23
32
 
24
- interface ObjectDetailGroupProps<T extends BasicModelInstance> {
33
+ interface ObjectDetailGroupProps {
25
34
  field: GroupField;
26
- instance: T;
35
+ instance: GroupInstanceType;
27
36
  }
28
37
 
29
- const ObjectDetailGroup = <T extends BasicModelInstance>({
38
+ const ObjectDetailGroup = ({
30
39
  field: { name, description, value },
31
40
  instance,
32
- }: ObjectDetailGroupProps<T>) => {
41
+ }: ObjectDetailGroupProps) => {
33
42
  return (
34
43
  <GroupValueCard title={name} subtitle={description}>
35
44
  {value.map((field) => {
@@ -61,7 +70,7 @@ export const ObjectDetails = <T extends BasicModelInstance>({
61
70
  if (type === "group") {
62
71
  return (
63
72
  <Grid item key={id} xs={12}>
64
- <ObjectDetailGroup field={field} instance={instance[id]} />
73
+ <ObjectDetailGroup field={field} instance={instance[id] as GroupInstanceType} />
65
74
  </Grid>
66
75
  );
67
76
  }
@@ -2,36 +2,46 @@ import React from "react";
2
2
  import { useDemoData } from "@mui/x-data-grid-generator";
3
3
  import { ComponentMeta } from "@storybook/react";
4
4
  import { createTemplate } from "../../storybook";
5
- import { TableList } from "./table-list";
5
+ import { TableList, TableListProps } from "./table-list";
6
6
  import { action } from "@storybook/addon-actions";
7
+ import { BasicModelInstance } from "~/generators";
7
8
 
8
9
  const maxColumns = 3;
9
10
 
10
11
  export default {
11
- title: "Tables/TableList",
12
+ title: "Generators/TableList",
12
13
  component: TableList,
13
14
  parameters: {
14
15
  layout: "fullscreen",
15
16
  },
16
17
  } as ComponentMeta<typeof TableList>;
17
18
 
18
- const Template = createTemplate(({ dataSetType, size, ...rest }) => {
19
- const { data } = useDemoData({
20
- dataSet: dataSetType,
21
- rowLength: size,
22
- maxColumns,
23
- });
24
- const { rows } = data;
25
- const columns = data.columns.map(({ field, headerName }) => ({
26
- id: field,
27
- label: headerName,
28
- sort: true,
29
- disablePadding: false,
30
- numeric: false,
31
- }));
19
+ interface TemplateProps<T extends BasicModelInstance> extends TableListProps<T> {
20
+ size: number;
21
+ dataSetType: "Commodity" | "Employee";
22
+ }
32
23
 
33
- return <TableList {...rest} columns={columns} data={rows} onClick={action("onClick row")} />;
34
- });
24
+ const Template = createTemplate(
25
+ <T extends BasicModelInstance>({ dataSetType, size, ...rest }: TemplateProps<T>) => {
26
+ const { data } = useDemoData({
27
+ dataSet: dataSetType,
28
+ rowLength: size,
29
+ maxColumns,
30
+ });
31
+ const { rows } = data;
32
+ const columns = data.columns.map(({ field, headerName }) => ({
33
+ id: field,
34
+ label: headerName || "invalid",
35
+ sort: true,
36
+ disablePadding: false,
37
+ numeric: false,
38
+ }));
39
+
40
+ return (
41
+ <TableList {...rest} columns={columns} data={rows as any} onClick={action("onClick row")} />
42
+ );
43
+ },
44
+ );
35
45
 
36
46
  export const Default = Template.bind({});
37
47
  Default.args = {
@@ -1,12 +1,13 @@
1
1
  import React from "react";
2
- import { expectProgressIndicator, render } from "../../tests";
2
+ import { render } from "~/tests/testing-library";
3
3
  import { screen } from "@testing-library/react";
4
4
  import userEvents from "@testing-library/user-event";
5
5
  import { TableRowOption, TableList } from "./table-list";
6
- import { HeadCell } from "../table/enhanced-table";
7
- import { BasicModelInstance } from "../../generators";
6
+ import { HeadCell } from "../../components/tables/enhanced-table";
7
+ import { BasicModelInstance } from "..";
8
+ import { expectProgressIndicator } from "~/tests/assertions";
8
9
 
9
- const columns: HeadCell[] = [
10
+ const columns: HeadCell<BasicModelInstance>[] = [
10
11
  {
11
12
  id: "id",
12
13
  numeric: true,
@@ -81,7 +82,7 @@ describe("TableList", () => {
81
82
  defaultSort?: string;
82
83
  loading?: boolean;
83
84
  search?: boolean;
84
- options?: TableRowOption<any>[];
85
+ options?: TableRowOption<BasicModelInstance>[];
85
86
  onClick?: jest.Mock;
86
87
  } = {}) => {
87
88
  const instance = render(
@@ -109,8 +110,8 @@ describe("TableList", () => {
109
110
 
110
111
  data.forEach(({ id, name, value }) => {
111
112
  expect(screen.getByRole("cell", { name: id })).toBeInTheDocument();
112
- expect(screen.getByRole("cell", { name: name })).toBeInTheDocument();
113
- expect(screen.getByRole("cell", { name: value })).toBeInTheDocument();
113
+ expect(screen.getByRole("cell", { name: name as string })).toBeInTheDocument();
114
+ expect(screen.getByRole("cell", { name: value as string })).toBeInTheDocument();
114
115
  });
115
116
  });
116
117
 
@@ -149,7 +150,8 @@ describe("TableList", () => {
149
150
  it("would render the items 2,3 and 4", async () => {
150
151
  renderInstance({ search: true });
151
152
 
152
- await userEvents.type(screen.getByPlaceholderText(/search/i), "a");
153
+ const search = screen.getByPlaceholderText(/search/i);
154
+ await userEvents.type(search, "a");
153
155
 
154
156
  expect(screen.getByText(/item 2/i)).toBeInTheDocument();
155
157
  expect(screen.getByText(/item 3/i)).toBeInTheDocument();
@@ -157,6 +159,8 @@ describe("TableList", () => {
157
159
 
158
160
  expect(screen.queryByText(/item 1/i)).not.toBeInTheDocument();
159
161
  expect(screen.queryByText(/item 5/i)).not.toBeInTheDocument();
162
+
163
+ await userEvents.clear(search);
160
164
  });
161
165
 
162
166
  it("would render all the items if I remove the search", async () => {
@@ -228,6 +232,7 @@ describe("TableList", () => {
228
232
  await userEvents.click(screen.getByRole("row", { name: /item 3/i }));
229
233
  });
230
234
 
235
+ // TODO: this tests are throwing a console.error
231
236
  describe("options menu", () => {
232
237
  it("would render a button to open the menu if doesn't have options", () => {
233
238
  renderInstance({ options: undefined });