@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
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import { render, screen } from "~/tests/testing-library";
3
+ import { ValueImage } from "./value-image";
4
+ import workInProgressImg from "../../../stories/assets/work-in-progress.jpg";
5
+
6
+ describe("ValueImage", () => {
7
+ const renderComponent = () => {
8
+ return render(<ValueImage label="Hello world" value={workInProgressImg} />);
9
+ };
10
+
11
+ it("should render the label", () => {
12
+ renderComponent();
13
+
14
+ expect(screen.getByRole("label", { name: /hello world/i })).toBeInTheDocument();
15
+ });
16
+
17
+ it("should render an image", () => {
18
+ renderComponent();
19
+
20
+ expect(screen.getByRole("img")).toBeInTheDocument();
21
+ });
22
+ });
@@ -0,0 +1,24 @@
1
+ import { Box } from "@mui/material";
2
+ import React from "react";
3
+ import { ValueContent } from "../value-content";
4
+ import { BaseValueProps } from "../value-displays.types";
5
+
6
+ export interface ValueImageProps extends BaseValueProps<string> {
7
+ /**
8
+ * Image size
9
+ */
10
+ size?: number;
11
+ }
12
+
13
+ const DefaultSize = 100;
14
+
15
+ /**
16
+ * Displays a image value with a label
17
+ */
18
+ export const ValueImage = ({ label, value, size = DefaultSize }: ValueImageProps) => {
19
+ return (
20
+ <ValueContent label={label}>
21
+ <Box component="img" src={value} alt={label} sx={{ width: size, height: size }} />
22
+ </ValueContent>
23
+ );
24
+ };
@@ -3,7 +3,7 @@ import { ValueText } from "./value-text";
3
3
  import { createTemplate, withContainer } from "../../../storybook";
4
4
 
5
5
  export default {
6
- title: "Value displays/ValueText",
6
+ title: "Components/Value displays/ValueText",
7
7
  component: ValueText,
8
8
  decorators: [withContainer({ width: 200 })],
9
9
  parameters: {
@@ -24,3 +24,14 @@ TruncatedText.args = {
24
24
  label: "Lorem",
25
25
  value: "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
26
26
  };
27
+
28
+ export const Placeholder = Template.bind({});
29
+ Placeholder.args = {
30
+ label: "Lorem",
31
+ };
32
+
33
+ export const CustomPlaceholder = Template.bind({});
34
+ CustomPlaceholder.args = {
35
+ label: "Lorem",
36
+ placeholder: ".",
37
+ };
@@ -1,21 +1,35 @@
1
1
  import React from "react";
2
- import { render, screen } from "../../../tests";
2
+ import { render, screen } from "~/tests/testing-library";
3
3
  import { ValueText } from "./value-text";
4
4
 
5
+ const DummyValue = "Lorem ipsum sit amet";
6
+
5
7
  describe("ValueText", () => {
6
- const renderComponent = () => {
7
- return render(<ValueText label="Hello world" value="Lorem ipsum sit amet" />);
8
+ const renderComponent = ({ value, placeholder }: { value?: string; placeholder?: string }) => {
9
+ return render(<ValueText label="Hello world" value={value} placeholder={placeholder} />);
8
10
  };
9
11
 
10
12
  it("would render the label", () => {
11
- renderComponent();
13
+ renderComponent({ value: DummyValue });
12
14
 
13
15
  expect(screen.getByRole("label", { name: /hello world/i })).toBeInTheDocument();
14
16
  });
15
17
 
16
18
  it("would render the value", () => {
17
- renderComponent();
19
+ renderComponent({ value: DummyValue });
18
20
 
19
21
  expect(screen.getByText(/lorem ipsum sit amet/i)).toBeInTheDocument();
20
22
  });
23
+
24
+ it("should render the placeholder if value is undefined", () => {
25
+ renderComponent({ value: undefined });
26
+
27
+ expect(screen.getByText(/-/i)).toBeInTheDocument();
28
+ });
29
+
30
+ it("should render the custom placeholder if value is undefined and placeholder has value", () => {
31
+ renderComponent({ value: undefined, placeholder: "_" });
32
+
33
+ expect(screen.getByText(/_/i)).toBeInTheDocument();
34
+ });
21
35
  });
@@ -1,32 +1,26 @@
1
- import { Box, Tooltip, Typography } from "@mui/material";
1
+ import { Typography } from "@mui/material";
2
2
  import React from "react";
3
+ import { BaseValueProps, DefaultPlaceholder } from "../value-displays.types";
4
+ import { getValueContentLabelId, ValueContent } from "../value-content";
3
5
 
4
- export interface ValueTextProps {
5
- /**
6
- * Name of the displayed value
7
- */
8
- label: string;
9
- /**
10
- * Value displayed
11
- */
12
- value: string;
13
- }
6
+ export type ValueTextProps = BaseValueProps<string>;
14
7
 
15
8
  /**
16
9
  * Displays a string value with a label
17
10
  */
18
- export const ValueText = ({ label, value }: ValueTextProps) => {
19
- const id = `label-${label.replace(/ /g, "-")}`;
11
+ export const ValueText = ({
12
+ label,
13
+ value: valueProp,
14
+ placeholder = DefaultPlaceholder,
15
+ }: ValueTextProps) => {
16
+ const id = getValueContentLabelId(label);
17
+ const value = valueProp || placeholder;
18
+
20
19
  return (
21
- <Box>
22
- <Typography variant="subtitle2" role="label" id={id}>
23
- {label}
20
+ <ValueContent label={label} tooltip={value}>
21
+ <Typography variant="h5" noWrap aria-labelledby={id}>
22
+ {value}
24
23
  </Typography>
25
- <Tooltip title={value} placement="top" enterDelay={2000}>
26
- <Typography variant="h5" noWrap aria-labelledby={id}>
27
- {value}
28
- </Typography>
29
- </Tooltip>
30
- </Box>
24
+ </ValueContent>
31
25
  );
32
26
  };
@@ -1,5 +1,6 @@
1
- import { BasicModelInstance, Model, ModelField } from "./generators.model";
1
+ import { BasicModelInstance, FieldType, Model, ModelField } from "./generators.model";
2
2
  import { faker } from "@faker-js/faker";
3
+ import * as R from "ramda";
3
4
  import { newArrayWithSize } from "../utils";
4
5
 
5
6
  export const BirthDateFormat = "dd/MM/yyyy";
@@ -65,7 +66,7 @@ export const mockModel: Model = {
65
66
  xs: 12,
66
67
  sm: 6,
67
68
  md: 3,
68
- listable: true,
69
+ listable: false,
69
70
  },
70
71
  {
71
72
  id: "birthDate",
@@ -141,7 +142,7 @@ export const mockModel: Model = {
141
142
  id: "returnTime",
142
143
  type: "time",
143
144
  format: ReturnTimeFormat,
144
- default: new Date(1970, 0, 1, 9, 0),
145
+ default: new Date(2022, 8, 21, 9, 0),
145
146
  description: "Lorem ipsum",
146
147
  name: "Return time",
147
148
  xs: 12,
@@ -208,9 +209,10 @@ export interface MockInstance {
208
209
  available: boolean;
209
210
  currency: string;
210
211
  tradeDate: Date;
212
+ [key: string]: FieldType;
211
213
  }
212
214
 
213
- const mockFieldValue = {
215
+ const mockFieldValue: Record<string, () => FieldType> = {
214
216
  id: () => faker.datatype.number({ min: 1000, max: 100000 }).toString(),
215
217
  firstName: faker.name.firstName,
216
218
  middleName: faker.name.middleName,
@@ -236,7 +238,7 @@ const mockFieldValue = {
236
238
  type: () => {
237
239
  const array = newArrayWithSize(faker.datatype.number({ min: 2, max: 5 }), 0);
238
240
  const result = array.map(() => faker.vehicle.type());
239
- return [...new Set(result)];
241
+ return R.uniq(result);
240
242
  },
241
243
  vin: faker.vehicle.vin,
242
244
  vrm: faker.vehicle.vrm,
@@ -248,30 +250,31 @@ const mockFieldValue = {
248
250
 
249
251
  export const createModelInstance = <T extends BasicModelInstance>(model: Model, seed = 100): T => {
250
252
  faker.seed(seed);
251
- const obj = {};
252
-
253
- model.fields.forEach((field) => {
254
- let value;
253
+ return model.fields.reduce((acc, field) => {
255
254
  if (field.type === "group") {
256
- value = {};
257
- field.value.forEach((groupField) => {
258
- value[groupField.id] = getModelFieldValue(groupField);
259
- });
255
+ return {
256
+ ...acc,
257
+ [field.id]: field.value.reduce(
258
+ (acc, groupField) => ({
259
+ ...acc,
260
+ [groupField.id]: getModelFieldValue(groupField),
261
+ }),
262
+ {},
263
+ ),
264
+ };
260
265
  } else {
261
- value = getModelFieldValue(field);
266
+ return {
267
+ ...acc,
268
+ [field.id]: getModelFieldValue(field),
269
+ };
262
270
  }
263
-
264
- obj[field.id] = value;
265
- });
266
-
267
- return obj as T;
271
+ }, {} as T);
268
272
  };
269
273
 
270
- const getModelFieldValue = ({ id, type }: ModelField) => {
274
+ const getModelFieldValue = ({ id }: ModelField): FieldType => {
271
275
  const fieldGenerator = mockFieldValue[id];
272
276
  if (!fieldGenerator) {
273
- const generator = faker.datatype[type];
274
- return generator ? generator() : faker.datatype.string();
277
+ return faker.datatype.string();
275
278
  }
276
279
  return fieldGenerator();
277
280
  };
@@ -0,0 +1,77 @@
1
+ import { createModelInstance, mockModel } from "./generators.mock";
2
+ import { newInstanceFromValuesOrZeroValue } from "./generators.model";
3
+
4
+ describe("utilities", () => {
5
+ describe("newInstanceFromValuesOrZeroValue", () => {
6
+ it("would create a zero value instance if no values are provided", () => {
7
+ const instance = newInstanceFromValuesOrZeroValue(mockModel);
8
+
9
+ expect(instance).toStrictEqual({
10
+ age: 0,
11
+ available: false,
12
+ birthDate: new Date(2014, 8, 18),
13
+ car: {
14
+ color: "",
15
+ manufacturer: "",
16
+ model: "",
17
+ returnTime: new Date(2022, 8, 21, 9, 0),
18
+ type: [],
19
+ vin: "",
20
+ vrm: "",
21
+ },
22
+ currency: "",
23
+ firstName: "",
24
+ gender: "",
25
+ id: "",
26
+ lastName: "",
27
+ middleName: "",
28
+ quantity: 0,
29
+ tradeDate: new Date(2022, 8, 12, 9, 0),
30
+ });
31
+ });
32
+
33
+ it("would create the same instance if a full instance is provided", () => {
34
+ const values = createModelInstance(mockModel);
35
+ const instance = newInstanceFromValuesOrZeroValue(mockModel, values);
36
+
37
+ expect(instance).toStrictEqual(instance);
38
+ });
39
+
40
+ it("would create a mixed instance if just some values are provided", () => {
41
+ const instance = newInstanceFromValuesOrZeroValue(mockModel, {
42
+ id: "1",
43
+ age: 10,
44
+ currency: "EUR",
45
+ car: {
46
+ returnTime: new Date(2022, 9, 10, 23),
47
+ type: ["sub", "sport"],
48
+ },
49
+ available: true,
50
+ gender: "female",
51
+ });
52
+
53
+ expect(instance).toStrictEqual({
54
+ age: 10,
55
+ available: true,
56
+ birthDate: new Date(2014, 8, 18),
57
+ car: {
58
+ color: "",
59
+ manufacturer: "",
60
+ model: "",
61
+ returnTime: new Date(2022, 9, 10, 23),
62
+ type: ["sub", "sport"],
63
+ vin: "",
64
+ vrm: "",
65
+ },
66
+ currency: "EUR",
67
+ firstName: "",
68
+ gender: "female",
69
+ id: "1",
70
+ lastName: "",
71
+ middleName: "",
72
+ quantity: 0,
73
+ tradeDate: new Date(2022, 8, 12, 9, 0),
74
+ });
75
+ });
76
+ });
77
+ });
@@ -1,3 +1,17 @@
1
+ /**
2
+ * MODEL TYPES
3
+ * Types used to specify the model
4
+ */
5
+ export type ModelFieldTypes =
6
+ | "string"
7
+ | "number"
8
+ | "boolean"
9
+ | "enum"
10
+ | "multienum"
11
+ | "date"
12
+ | "time"
13
+ | "datetime";
14
+
1
15
  type Base = {
2
16
  id: string;
3
17
  description: string;
@@ -38,19 +52,19 @@ type MultiEnumField = {
38
52
  type DateField = {
39
53
  type: "date";
40
54
  format: string;
41
- default: any;
55
+ default: Date;
42
56
  };
43
57
 
44
58
  type TimeField = {
45
59
  type: "time";
46
60
  format: string;
47
- default: any;
61
+ default: Date;
48
62
  };
49
63
 
50
64
  type DatetimeField = {
51
65
  type: "datetime";
52
66
  format: string;
53
- default: any;
67
+ default: Date;
54
68
  };
55
69
 
56
70
  type SingleFields =
@@ -69,16 +83,74 @@ export type GroupField = {
69
83
  } & Base;
70
84
 
71
85
  type Fields = SingleFields | GroupField;
72
-
73
86
  export type ModelField = Base & Breakpoints & Fields;
74
87
 
75
88
  export type Model = {
76
89
  fields: ModelField[];
77
90
  };
78
91
 
92
+ /**
93
+ * INSTANCE TYPES
94
+ * Types used to represent an instance of a model specification
95
+ */
96
+ export type BaseFieldType = string | number | boolean | Date;
97
+ export type ArrayFieldType = string[];
98
+ export type SingleFieldType = BaseFieldType | ArrayFieldType;
99
+ export type GroupInstanceType = { [key: string]: SingleFieldType };
100
+ export type FieldType = SingleFieldType | GroupInstanceType;
101
+
79
102
  export interface BasicModelInstance {
80
103
  id: string;
81
- [key: string]: any;
104
+ [key: string]: FieldType;
82
105
  }
83
106
 
84
- export type ModelFieldTypes = "string" | "number" | "boolean" | "enum" | "multienum";
107
+ /**
108
+ * UTILITIES
109
+ * Some functions used in several places to help to manage models
110
+ */
111
+ const InitialStateZeroValue: Record<ModelFieldTypes | "group", FieldType | undefined> = {
112
+ string: "",
113
+ number: 0,
114
+ boolean: false,
115
+ enum: "",
116
+ multienum: [],
117
+ date: new Date(1970, 0, 1, 0, 0),
118
+ time: new Date(1970, 0, 1, 0, 0),
119
+ datetime: new Date(1970, 0, 1, 0, 0),
120
+ group: {},
121
+ };
122
+
123
+ const getFieldValueOrZero = (
124
+ field: ModelField,
125
+ values: BasicModelInstance | GroupInstanceType | undefined,
126
+ ) => {
127
+ return (
128
+ (values && values[field.id]) ||
129
+ ("default" in field && field.default) ||
130
+ InitialStateZeroValue[field.type]
131
+ );
132
+ };
133
+
134
+ export const newInstanceFromValuesOrZeroValue = <T extends BasicModelInstance>(
135
+ model: Model,
136
+ values: T | undefined = undefined,
137
+ ): T => {
138
+ const obj: Record<string, FieldType | undefined> = {};
139
+
140
+ model.fields.forEach((field) => {
141
+ if (field.type === "group") {
142
+ const value: GroupInstanceType = {};
143
+ field.value.forEach((groupField) => {
144
+ value[groupField.id] = getFieldValueOrZero(
145
+ groupField,
146
+ values && (values[field.id] as GroupInstanceType),
147
+ ) as SingleFieldType;
148
+ });
149
+ obj[field.id] = value;
150
+ } else {
151
+ obj[field.id] = getFieldValueOrZero(field, values);
152
+ }
153
+ });
154
+
155
+ return obj as T;
156
+ };
@@ -0,0 +1,13 @@
1
+ import { Meta } from '@storybook/addon-docs';
2
+ import LinkTo from '@storybook/addon-links/react';
3
+
4
+ <Meta title="Generators/Introduction" />
5
+
6
+ # Generators
7
+
8
+ <ul>
9
+ <li><LinkTo kind="Generators/ModelForm">ModelForm</LinkTo></li>
10
+ <li><LinkTo kind="Generators/ModelRouter/DummyModelRouter">ModelRouter</LinkTo></li>
11
+ <li><LinkTo kind="Generators/ObjectDetails">ObjectDetails</LinkTo></li>
12
+ <li><LinkTo kind="Generators/TableList">TableList</LinkTo></li>
13
+ </ul>
@@ -2,3 +2,4 @@ export * from "./object-details";
2
2
  export * from "./model-router";
3
3
  export * from "./generators.model";
4
4
  export * from "./model-form";
5
+ export * from "./table-list";
@@ -1,15 +1,6 @@
1
1
  import React from "react";
2
2
  import { ModelForm } from "./model-form";
3
- import {
4
- expectModelFieldInputExist,
5
- expectModelFieldInputValue,
6
- render,
7
- screen,
8
- selectOption,
9
- selectOptions,
10
- pickDatetime,
11
- expectToHaveBeenCalledOnceWithMockInstance,
12
- } from "../../tests";
3
+ import { render, screen } from "~/tests/testing-library";
13
4
  import {
14
5
  BirthDateFormat,
15
6
  createModelInstance,
@@ -19,6 +10,12 @@ import {
19
10
  TradeDateFormat,
20
11
  } from "../generators.mock";
21
12
  import userEvent from "@testing-library/user-event";
13
+ import { selectOption, typeNumericInput, pickDatetime, selectOptions } from "~/tests/actions";
14
+ import {
15
+ expectModelFieldInputExist,
16
+ expectModelFieldInputValue,
17
+ expectToHaveBeenCalledOnceWithMockInstance,
18
+ } from "~/tests/assertions";
22
19
 
23
20
  describe("ModelForm", () => {
24
21
  const renderComponent = ({
@@ -66,8 +63,8 @@ describe("ModelForm", () => {
66
63
  await userEvent.type(screen.getByRole("textbox", { name: /first name/i }), "Karianne");
67
64
  await userEvent.type(screen.getByRole("textbox", { name: /middle name/i }), "Noah");
68
65
  await userEvent.type(screen.getByRole("textbox", { name: /last name/i }), "Gorczany");
69
- await selectOption(screen.getByRole("button", { name: /gender/i }), "Cis Man");
70
- await userEvent.type(screen.getByRole("spinbutton", { name: /age/i }), "37");
66
+ await selectOption(screen.getByRole("button", { name: /gender/i }), "Cis man");
67
+ typeNumericInput(screen.getByRole("spinbutton", { name: /age/i }), 37);
71
68
  pickDatetime(screen.getByRole("textbox", { name: /birth date/i }), birthDate, BirthDateFormat);
72
69
  await selectOption(screen.getByRole("button", { name: /model/i }), "Spyder");
73
70
  await selectOption(screen.getByRole("button", { name: /manufacturer/i }), "Bugatti");
@@ -84,7 +81,7 @@ describe("ModelForm", () => {
84
81
  returnTime,
85
82
  ReturnTimeFormat,
86
83
  );
87
- await userEvent.type(screen.getByRole("spinbutton", { name: /q/i }), "9");
84
+ typeNumericInput(screen.getByRole("spinbutton", { name: /q/i }), 9);
88
85
  await userEvent.click(screen.getByRole("checkbox", { name: /available/i }));
89
86
  await userEvent.type(screen.getByRole("textbox", { name: /currency/i }), "mxn");
90
87
  pickDatetime(screen.getByRole("textbox", { name: /trade date/i }), tradeDate, TradeDateFormat);
@@ -96,7 +93,7 @@ describe("ModelForm", () => {
96
93
  firstName: "Karianne",
97
94
  middleName: "Noah",
98
95
  lastName: "Gorczany",
99
- gender: "Cis Man",
96
+ gender: "Cis man",
100
97
  age: 37,
101
98
  birthDate,
102
99
  car: {