@pautena/react-design-system 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +26 -0
- package/.github/workflows/ci.yml +23 -0
- package/.github/workflows/deploy-storybook.yaml +23 -0
- package/.github/workflows/publish.yml +31 -0
- package/.husky/pre-commit +5 -0
- package/.prettierignore +4 -0
- package/.prettierrc.js +5 -0
- package/.storybook/main.js +10 -0
- package/.storybook/preview.js +36 -0
- package/README.md +7 -0
- package/babel.config.js +3 -0
- package/dist/cjs/index.js +278 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types/components/app-bar/app-bar.d.ts +2 -0
- package/dist/cjs/types/components/app-bar/app-bar.types.d.ts +13 -0
- package/dist/cjs/types/components/app-bar/index.d.ts +3 -0
- package/dist/cjs/types/components/app-bar/mini-app-bar/index.d.ts +1 -0
- package/dist/cjs/types/components/app-bar/mini-app-bar/mini-app-bar.d.ts +2 -0
- package/dist/cjs/types/components/bullet/bullet.d.ts +14 -0
- package/dist/cjs/types/components/bullet/index.d.ts +1 -0
- package/dist/cjs/types/components/center-container/center-container.d.ts +9 -0
- package/dist/cjs/types/components/center-container/index.d.ts +1 -0
- package/dist/cjs/types/components/drawer/drawer.context.d.ts +9 -0
- package/dist/cjs/types/components/drawer/drawer.d.ts +2 -0
- package/dist/cjs/types/components/drawer/drawer.mixins.d.ts +4 -0
- package/dist/cjs/types/components/drawer/drawer.mock.d.ts +3 -0
- package/dist/cjs/types/components/drawer/drawer.provider.d.ts +6 -0
- package/dist/cjs/types/components/drawer/drawer.types.d.ts +44 -0
- package/dist/cjs/types/components/drawer/index.d.ts +5 -0
- package/dist/cjs/types/components/drawer/mini-drawer/index.d.ts +1 -0
- package/dist/cjs/types/components/drawer/mini-drawer/mini-drawer.d.ts +1 -0
- package/dist/cjs/types/components/drawer-content/drawer-content.d.ts +5 -0
- package/dist/cjs/types/components/drawer-content/index.d.ts +1 -0
- package/dist/cjs/types/components/drawer-item/drawer-item.d.ts +33 -0
- package/dist/cjs/types/components/drawer-item/index.d.ts +1 -0
- package/dist/cjs/types/components/drawer-section/drawer-section.d.ts +16 -0
- package/dist/cjs/types/components/drawer-section/drawer-section.mock.d.ts +2 -0
- package/dist/cjs/types/components/drawer-section/index.d.ts +1 -0
- package/dist/cjs/types/components/header/header.d.ts +65 -0
- package/dist/cjs/types/components/header/header.dummy.d.ts +4 -0
- package/dist/cjs/types/components/header/index.d.ts +1 -0
- package/dist/cjs/types/components/index.d.ts +17 -0
- package/dist/cjs/types/components/label/index.d.ts +1 -0
- package/dist/cjs/types/components/label/label.d.ts +18 -0
- package/dist/cjs/types/components/link/index.d.ts +1 -0
- package/dist/cjs/types/components/link/link.d.ts +7 -0
- package/dist/cjs/types/components/loading-area/index.d.ts +1 -0
- package/dist/cjs/types/components/loading-area/loading-area.d.ts +4 -0
- package/dist/cjs/types/components/placeholder/index.d.ts +1 -0
- package/dist/cjs/types/components/placeholder/placeholder.d.ts +21 -0
- package/dist/cjs/types/components/placeholder/placeholder.mock.d.ts +2 -0
- package/dist/cjs/types/components/query-container/index.d.ts +1 -0
- package/dist/cjs/types/components/query-container/query-container.d.ts +39 -0
- package/dist/cjs/types/components/sign-in/index.d.ts +1 -0
- package/dist/cjs/types/components/sign-in/sign-in.d.ts +9 -0
- package/dist/cjs/types/components/tab/index.d.ts +3 -0
- package/dist/cjs/types/components/tab/tab-card/index.d.ts +1 -0
- package/dist/cjs/types/components/tab/tab-card/tab-card.d.ts +7 -0
- package/dist/cjs/types/components/tab/tab-card/tab-card.dummy.d.ts +7 -0
- package/dist/cjs/types/components/tab/tab-panel/index.d.ts +1 -0
- package/dist/cjs/types/components/tab/tab-panel/tab-panel.d.ts +7 -0
- package/dist/cjs/types/components/tab/tab.context.d.ts +4 -0
- package/dist/cjs/types/components/table/enhanced-remote-table/enhanced-remote-table.d.ts +13 -0
- package/dist/cjs/types/components/table/enhanced-remote-table/enhanced-remote-table.mock.d.ts +11 -0
- package/dist/cjs/types/components/table/enhanced-remote-table/index.d.ts +1 -0
- package/dist/cjs/types/components/table/enhanced-table/enhanced-table-head.d.ts +16 -0
- package/dist/cjs/types/components/table/enhanced-table/enhanced-table.d.ts +18 -0
- package/dist/cjs/types/components/table/enhanced-table/enhanced-table.mock.d.ts +17 -0
- package/dist/cjs/types/components/table/enhanced-table/index.d.ts +2 -0
- package/dist/cjs/types/components/table/index.d.ts +2 -0
- package/dist/cjs/types/components/table-list/index.d.ts +1 -0
- package/dist/cjs/types/components/table-list/table-list.d.ts +21 -0
- package/dist/cjs/types/components/value-displays/group-value-card/group-value-card.d.ts +15 -0
- package/dist/cjs/types/components/value-displays/group-value-card/group-value-card.mock.d.ts +1 -0
- package/dist/cjs/types/components/value-displays/group-value-card/index.d.ts +1 -0
- package/dist/cjs/types/components/value-displays/index.d.ts +4 -0
- package/dist/cjs/types/components/value-displays/value-boolean/index.d.ts +1 -0
- package/dist/cjs/types/components/value-displays/value-boolean/value-boolean.d.ts +14 -0
- package/dist/cjs/types/components/value-displays/value-card/index.d.ts +1 -0
- package/dist/cjs/types/components/value-displays/value-card/value-card.d.ts +6 -0
- package/dist/cjs/types/components/value-displays/value-text/index.d.ts +1 -0
- package/dist/cjs/types/components/value-displays/value-text/value-text.d.ts +14 -0
- package/dist/cjs/types/generators/generators.mock.d.ts +3 -0
- package/dist/cjs/types/generators/generators.model.d.ts +33 -0
- package/dist/cjs/types/generators/index.d.ts +4 -0
- package/dist/cjs/types/generators/model-form/index.d.ts +1 -0
- package/dist/cjs/types/generators/model-form/model-form.d.ts +8 -0
- package/dist/cjs/types/generators/model-router/index.d.ts +1 -0
- package/dist/cjs/types/generators/model-router/model-router.d.ts +35 -0
- package/dist/cjs/types/generators/model-router/screens/add-screen.d.ts +2 -0
- package/dist/cjs/types/generators/model-router/screens/details-screen.d.ts +2 -0
- package/dist/cjs/types/generators/model-router/screens/index.d.ts +4 -0
- package/dist/cjs/types/generators/model-router/screens/list-screen.d.ts +2 -0
- package/dist/cjs/types/generators/model-router/screens/update-screen.d.ts +2 -0
- package/dist/cjs/types/generators/object-details/index.d.ts +1 -0
- package/dist/cjs/types/generators/object-details/object-details.d.ts +6 -0
- package/dist/cjs/types/index.d.ts +4 -0
- package/dist/cjs/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +10 -0
- package/dist/cjs/types/layouts/app-bar-with-drawer-layout/index.d.ts +1 -0
- package/dist/cjs/types/layouts/data-table-layout/data-table-layout.d.ts +12 -0
- package/dist/cjs/types/layouts/data-table-layout/index.d.ts +1 -0
- package/dist/cjs/types/layouts/details-layout/details-layout.d.ts +12 -0
- package/dist/cjs/types/layouts/details-layout/index.d.ts +1 -0
- package/dist/cjs/types/layouts/form-layout/form-layout.d.ts +8 -0
- package/dist/cjs/types/layouts/form-layout/index.d.ts +1 -0
- package/dist/cjs/types/layouts/header-layout/header-layout.d.ts +8 -0
- package/dist/cjs/types/layouts/header-layout/index.d.ts +1 -0
- package/dist/cjs/types/layouts/index.d.ts +7 -0
- package/dist/cjs/types/layouts/list-layout/index.d.ts +1 -0
- package/dist/cjs/types/layouts/list-layout/list-layout.d.ts +8 -0
- package/dist/cjs/types/layouts/tab-layout/index.d.ts +1 -0
- package/dist/cjs/types/layouts/tab-layout/tab-layout.d.ts +7 -0
- package/dist/cjs/types/providers/index.d.ts +1 -0
- package/dist/cjs/types/providers/notification-center/index.d.ts +1 -0
- package/dist/cjs/types/providers/notification-center/notification-center.context.d.ts +16 -0
- package/dist/cjs/types/providers/notification-center/notification-center.provider.d.ts +5 -0
- package/dist/cjs/types/utils/arrays.d.ts +5 -0
- package/dist/cjs/types/utils/arrays.test.d.ts +1 -0
- package/dist/cjs/types/utils/index.d.ts +2 -0
- package/dist/cjs/types/utils/theme.d.ts +4 -0
- package/dist/esm/index.js +278 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types/components/app-bar/app-bar.d.ts +2 -0
- package/dist/esm/types/components/app-bar/app-bar.types.d.ts +13 -0
- package/dist/esm/types/components/app-bar/index.d.ts +3 -0
- package/dist/esm/types/components/app-bar/mini-app-bar/index.d.ts +1 -0
- package/dist/esm/types/components/app-bar/mini-app-bar/mini-app-bar.d.ts +2 -0
- package/dist/esm/types/components/bullet/bullet.d.ts +14 -0
- package/dist/esm/types/components/bullet/index.d.ts +1 -0
- package/dist/esm/types/components/center-container/center-container.d.ts +9 -0
- package/dist/esm/types/components/center-container/index.d.ts +1 -0
- package/dist/esm/types/components/drawer/drawer.context.d.ts +9 -0
- package/dist/esm/types/components/drawer/drawer.d.ts +2 -0
- package/dist/esm/types/components/drawer/drawer.mixins.d.ts +4 -0
- package/dist/esm/types/components/drawer/drawer.mock.d.ts +3 -0
- package/dist/esm/types/components/drawer/drawer.provider.d.ts +6 -0
- package/dist/esm/types/components/drawer/drawer.types.d.ts +44 -0
- package/dist/esm/types/components/drawer/index.d.ts +5 -0
- package/dist/esm/types/components/drawer/mini-drawer/index.d.ts +1 -0
- package/dist/esm/types/components/drawer/mini-drawer/mini-drawer.d.ts +1 -0
- package/dist/esm/types/components/drawer-content/drawer-content.d.ts +5 -0
- package/dist/esm/types/components/drawer-content/index.d.ts +1 -0
- package/dist/esm/types/components/drawer-item/drawer-item.d.ts +33 -0
- package/dist/esm/types/components/drawer-item/index.d.ts +1 -0
- package/dist/esm/types/components/drawer-section/drawer-section.d.ts +16 -0
- package/dist/esm/types/components/drawer-section/drawer-section.mock.d.ts +2 -0
- package/dist/esm/types/components/drawer-section/index.d.ts +1 -0
- package/dist/esm/types/components/header/header.d.ts +65 -0
- package/dist/esm/types/components/header/header.dummy.d.ts +4 -0
- package/dist/esm/types/components/header/index.d.ts +1 -0
- package/dist/esm/types/components/index.d.ts +17 -0
- package/dist/esm/types/components/label/index.d.ts +1 -0
- package/dist/esm/types/components/label/label.d.ts +18 -0
- package/dist/esm/types/components/link/index.d.ts +1 -0
- package/dist/esm/types/components/link/link.d.ts +7 -0
- package/dist/esm/types/components/loading-area/index.d.ts +1 -0
- package/dist/esm/types/components/loading-area/loading-area.d.ts +4 -0
- package/dist/esm/types/components/placeholder/index.d.ts +1 -0
- package/dist/esm/types/components/placeholder/placeholder.d.ts +21 -0
- package/dist/esm/types/components/placeholder/placeholder.mock.d.ts +2 -0
- package/dist/esm/types/components/query-container/index.d.ts +1 -0
- package/dist/esm/types/components/query-container/query-container.d.ts +39 -0
- package/dist/esm/types/components/sign-in/index.d.ts +1 -0
- package/dist/esm/types/components/sign-in/sign-in.d.ts +9 -0
- package/dist/esm/types/components/tab/index.d.ts +3 -0
- package/dist/esm/types/components/tab/tab-card/index.d.ts +1 -0
- package/dist/esm/types/components/tab/tab-card/tab-card.d.ts +7 -0
- package/dist/esm/types/components/tab/tab-card/tab-card.dummy.d.ts +7 -0
- package/dist/esm/types/components/tab/tab-panel/index.d.ts +1 -0
- package/dist/esm/types/components/tab/tab-panel/tab-panel.d.ts +7 -0
- package/dist/esm/types/components/tab/tab.context.d.ts +4 -0
- package/dist/esm/types/components/table/enhanced-remote-table/enhanced-remote-table.d.ts +13 -0
- package/dist/esm/types/components/table/enhanced-remote-table/enhanced-remote-table.mock.d.ts +11 -0
- package/dist/esm/types/components/table/enhanced-remote-table/index.d.ts +1 -0
- package/dist/esm/types/components/table/enhanced-table/enhanced-table-head.d.ts +16 -0
- package/dist/esm/types/components/table/enhanced-table/enhanced-table.d.ts +18 -0
- package/dist/esm/types/components/table/enhanced-table/enhanced-table.mock.d.ts +17 -0
- package/dist/esm/types/components/table/enhanced-table/index.d.ts +2 -0
- package/dist/esm/types/components/table/index.d.ts +2 -0
- package/dist/esm/types/components/table-list/index.d.ts +1 -0
- package/dist/esm/types/components/table-list/table-list.d.ts +21 -0
- package/dist/esm/types/components/value-displays/group-value-card/group-value-card.d.ts +15 -0
- package/dist/esm/types/components/value-displays/group-value-card/group-value-card.mock.d.ts +1 -0
- package/dist/esm/types/components/value-displays/group-value-card/index.d.ts +1 -0
- package/dist/esm/types/components/value-displays/index.d.ts +4 -0
- package/dist/esm/types/components/value-displays/value-boolean/index.d.ts +1 -0
- package/dist/esm/types/components/value-displays/value-boolean/value-boolean.d.ts +14 -0
- package/dist/esm/types/components/value-displays/value-card/index.d.ts +1 -0
- package/dist/esm/types/components/value-displays/value-card/value-card.d.ts +6 -0
- package/dist/esm/types/components/value-displays/value-text/index.d.ts +1 -0
- package/dist/esm/types/components/value-displays/value-text/value-text.d.ts +14 -0
- package/dist/esm/types/generators/generators.mock.d.ts +3 -0
- package/dist/esm/types/generators/generators.model.d.ts +33 -0
- package/dist/esm/types/generators/index.d.ts +4 -0
- package/dist/esm/types/generators/model-form/index.d.ts +1 -0
- package/dist/esm/types/generators/model-form/model-form.d.ts +8 -0
- package/dist/esm/types/generators/model-router/index.d.ts +1 -0
- package/dist/esm/types/generators/model-router/model-router.d.ts +35 -0
- package/dist/esm/types/generators/model-router/screens/add-screen.d.ts +2 -0
- package/dist/esm/types/generators/model-router/screens/details-screen.d.ts +2 -0
- package/dist/esm/types/generators/model-router/screens/index.d.ts +4 -0
- package/dist/esm/types/generators/model-router/screens/list-screen.d.ts +2 -0
- package/dist/esm/types/generators/model-router/screens/update-screen.d.ts +2 -0
- package/dist/esm/types/generators/object-details/index.d.ts +1 -0
- package/dist/esm/types/generators/object-details/object-details.d.ts +6 -0
- package/dist/esm/types/index.d.ts +4 -0
- package/dist/esm/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +10 -0
- package/dist/esm/types/layouts/app-bar-with-drawer-layout/index.d.ts +1 -0
- package/dist/esm/types/layouts/data-table-layout/data-table-layout.d.ts +12 -0
- package/dist/esm/types/layouts/data-table-layout/index.d.ts +1 -0
- package/dist/esm/types/layouts/details-layout/details-layout.d.ts +12 -0
- package/dist/esm/types/layouts/details-layout/index.d.ts +1 -0
- package/dist/esm/types/layouts/form-layout/form-layout.d.ts +8 -0
- package/dist/esm/types/layouts/form-layout/index.d.ts +1 -0
- package/dist/esm/types/layouts/header-layout/header-layout.d.ts +8 -0
- package/dist/esm/types/layouts/header-layout/index.d.ts +1 -0
- package/dist/esm/types/layouts/index.d.ts +7 -0
- package/dist/esm/types/layouts/list-layout/index.d.ts +1 -0
- package/dist/esm/types/layouts/list-layout/list-layout.d.ts +8 -0
- package/dist/esm/types/layouts/tab-layout/index.d.ts +1 -0
- package/dist/esm/types/layouts/tab-layout/tab-layout.d.ts +7 -0
- package/dist/esm/types/providers/index.d.ts +1 -0
- package/dist/esm/types/providers/notification-center/index.d.ts +1 -0
- package/dist/esm/types/providers/notification-center/notification-center.context.d.ts +16 -0
- package/dist/esm/types/providers/notification-center/notification-center.provider.d.ts +5 -0
- package/dist/esm/types/utils/arrays.d.ts +5 -0
- package/dist/esm/types/utils/arrays.test.d.ts +1 -0
- package/dist/esm/types/utils/index.d.ts +2 -0
- package/dist/esm/types/utils/theme.d.ts +4 -0
- package/dist/index.d.ts +594 -0
- package/jest.config.js +14 -0
- package/jest.setup.ts +5 -0
- package/package.json +98 -0
- package/rollup.config.js +40 -0
- package/src/components/app-bar/app-bar.stories.tsx +54 -0
- package/src/components/app-bar/app-bar.test.tsx +142 -0
- package/src/components/app-bar/app-bar.tsx +150 -0
- package/src/components/app-bar/app-bar.types.ts +16 -0
- package/src/components/app-bar/index.ts +3 -0
- package/src/components/app-bar/mini-app-bar/index.ts +1 -0
- package/src/components/app-bar/mini-app-bar/mini-app-bar.tsx +31 -0
- package/src/components/bullet/bullet.stories.tsx +43 -0
- package/src/components/bullet/bullet.test.tsx +24 -0
- package/src/components/bullet/bullet.tsx +30 -0
- package/src/components/bullet/index.ts +1 -0
- package/src/components/center-container/center-container.stories.tsx +50 -0
- package/src/components/center-container/center-container.test.tsx +16 -0
- package/src/components/center-container/center-container.tsx +32 -0
- package/src/components/center-container/index.ts +1 -0
- package/src/components/drawer/__snapshots__/drawer.test.tsx.snap +20 -0
- package/src/components/drawer/drawer.context.ts +20 -0
- package/src/components/drawer/drawer.mixins.ts +24 -0
- package/src/components/drawer/drawer.mock.tsx +100 -0
- package/src/components/drawer/drawer.provider.tsx +23 -0
- package/src/components/drawer/drawer.test.tsx +97 -0
- package/src/components/drawer/drawer.tsx +30 -0
- package/src/components/drawer/drawer.types.ts +53 -0
- package/src/components/drawer/index.ts +5 -0
- package/src/components/drawer/mini-drawer/index.ts +1 -0
- package/src/components/drawer/mini-drawer/mini-drawer.stories.tsx +34 -0
- package/src/components/drawer/mini-drawer/mini-drawer.tsx +67 -0
- package/src/components/drawer-content/drawer-content.stories.tsx +29 -0
- package/src/components/drawer-content/drawer-content.test.tsx +34 -0
- package/src/components/drawer-content/drawer-content.tsx +18 -0
- package/src/components/drawer-content/index.ts +1 -0
- package/src/components/drawer-item/drawer-item.stories.tsx +62 -0
- package/src/components/drawer-item/drawer-item.test.tsx +119 -0
- package/src/components/drawer-item/drawer-item.tsx +69 -0
- package/src/components/drawer-item/index.ts +1 -0
- package/src/components/drawer-section/drawer-section.mock.tsx +39 -0
- package/src/components/drawer-section/drawer-section.stories.tsx +28 -0
- package/src/components/drawer-section/drawer-section.test.tsx +44 -0
- package/src/components/drawer-section/drawer-section.tsx +40 -0
- package/src/components/drawer-section/index.ts +1 -0
- package/src/components/header/header.dummy.ts +55 -0
- package/src/components/header/header.stories.tsx +116 -0
- package/src/components/header/header.test.tsx +167 -0
- package/src/components/header/header.tsx +185 -0
- package/src/components/header/index.ts +1 -0
- package/src/components/index.ts +17 -0
- package/src/components/label/index.ts +1 -0
- package/src/components/label/label.stories.tsx +49 -0
- package/src/components/label/label.test.tsx +30 -0
- package/src/components/label/label.tsx +60 -0
- package/src/components/link/index.ts +1 -0
- package/src/components/link/link.tsx +17 -0
- package/src/components/loading-area/index.ts +1 -0
- package/src/components/loading-area/loading-area.stories.tsx +17 -0
- package/src/components/loading-area/loading-area.test.tsx +11 -0
- package/src/components/loading-area/loading-area.tsx +13 -0
- package/src/components/placeholder/index.ts +1 -0
- package/src/components/placeholder/placeholder.mock.ts +15 -0
- package/src/components/placeholder/placeholder.stories.tsx +44 -0
- package/src/components/placeholder/placeholder.test.tsx +76 -0
- package/src/components/placeholder/placeholder.tsx +75 -0
- package/src/components/query-container/index.ts +1 -0
- package/src/components/query-container/query-container.stories.tsx +68 -0
- package/src/components/query-container/query-container.test.tsx +95 -0
- package/src/components/query-container/query-container.tsx +71 -0
- package/src/components/sign-in/index.ts +1 -0
- package/src/components/sign-in/sign-in.stories.tsx +36 -0
- package/src/components/sign-in/sign-in.test.tsx +95 -0
- package/src/components/sign-in/sign-in.tsx +97 -0
- package/src/components/tab/index.ts +3 -0
- package/src/components/tab/tab-card/index.ts +1 -0
- package/src/components/tab/tab-card/tab-card.dummy.tsx +27 -0
- package/src/components/tab/tab-card/tab-card.stories.tsx +22 -0
- package/src/components/tab/tab-card/tab-card.test.tsx +53 -0
- package/src/components/tab/tab-card/tab-card.tsx +30 -0
- package/src/components/tab/tab-panel/index.ts +1 -0
- package/src/components/tab/tab-panel/tab-panel.test.tsx +26 -0
- package/src/components/tab/tab-panel/tab-panel.tsx +27 -0
- package/src/components/tab/tab.context.ts +5 -0
- package/src/components/table/enhanced-remote-table/enhanced-remote-table.mock.tsx +27 -0
- package/src/components/table/enhanced-remote-table/enhanced-remote-table.stories.tsx +24 -0
- package/src/components/table/enhanced-remote-table/enhanced-remote-table.test.tsx +77 -0
- package/src/components/table/enhanced-remote-table/enhanced-remote-table.tsx +74 -0
- package/src/components/table/enhanced-remote-table/index.ts +1 -0
- package/src/components/table/enhanced-table/enhanced-table-head.tsx +58 -0
- package/src/components/table/enhanced-table/enhanced-table.mock.tsx +93 -0
- package/src/components/table/enhanced-table/enhanced-table.stories.tsx +21 -0
- package/src/components/table/enhanced-table/enhanced-table.test.tsx +107 -0
- package/src/components/table/enhanced-table/enhanced-table.tsx +136 -0
- package/src/components/table/enhanced-table/index.ts +2 -0
- package/src/components/table/index.ts +2 -0
- package/src/components/table-list/index.ts +1 -0
- package/src/components/table-list/table-list.stories.tsx +75 -0
- package/src/components/table-list/table-list.test.tsx +283 -0
- package/src/components/table-list/table-list.tsx +131 -0
- package/src/components/value-displays/group-value-card/group-value-card.mock.tsx +35 -0
- package/src/components/value-displays/group-value-card/group-value-card.stories.tsx +26 -0
- package/src/components/value-displays/group-value-card/group-value-card.test.tsx +58 -0
- package/src/components/value-displays/group-value-card/group-value-card.tsx +65 -0
- package/src/components/value-displays/group-value-card/index.ts +1 -0
- package/src/components/value-displays/index.ts +4 -0
- package/src/components/value-displays/value-boolean/index.ts +1 -0
- package/src/components/value-displays/value-boolean/value-boolean.stories.tsx +25 -0
- package/src/components/value-displays/value-boolean/value-boolean.test.tsx +27 -0
- package/src/components/value-displays/value-boolean/value-boolean.tsx +33 -0
- package/src/components/value-displays/value-card/index.ts +1 -0
- package/src/components/value-displays/value-card/value-card.stories.tsx +22 -0
- package/src/components/value-displays/value-card/value-card.test.tsx +18 -0
- package/src/components/value-displays/value-card/value-card.tsx +12 -0
- package/src/components/value-displays/value-text/index.ts +1 -0
- package/src/components/value-displays/value-text/value-test.test.tsx +21 -0
- package/src/components/value-displays/value-text/value-text.stories.tsx +26 -0
- package/src/components/value-displays/value-text/value-text.tsx +32 -0
- package/src/generators/generators.mock.ts +215 -0
- package/src/generators/generators.model.ts +41 -0
- package/src/generators/index.ts +4 -0
- package/src/generators/model-form/index.ts +1 -0
- package/src/generators/model-form/model-form.stories.tsx +30 -0
- package/src/generators/model-form/model-form.test.tsx +98 -0
- package/src/generators/model-form/model-form.tsx +97 -0
- package/src/generators/model-router/index.ts +1 -0
- package/src/generators/model-router/model-router.stories.tsx +160 -0
- package/src/generators/model-router/model-router.test.tsx +633 -0
- package/src/generators/model-router/model-router.tsx +54 -0
- package/src/generators/model-router/screens/add-screen.tsx +52 -0
- package/src/generators/model-router/screens/details-screen.tsx +53 -0
- package/src/generators/model-router/screens/index.ts +4 -0
- package/src/generators/model-router/screens/list-screen.tsx +81 -0
- package/src/generators/model-router/screens/update-screen.tsx +62 -0
- package/src/generators/object-details/index.ts +1 -0
- package/src/generators/object-details/object-details.stories.tsx +20 -0
- package/src/generators/object-details/object-details.test.tsx +21 -0
- package/src/generators/object-details/object-details.tsx +70 -0
- package/src/index.ts +4 -0
- package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.stories.tsx +29 -0
- package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.tsx +34 -0
- package/src/layouts/app-bar-with-drawer-layout/index.ts +1 -0
- package/src/layouts/data-table-layout/data-table-layout.stories.tsx +94 -0
- package/src/layouts/data-table-layout/data-table-layout.tsx +30 -0
- package/src/layouts/data-table-layout/index.ts +1 -0
- package/src/layouts/details-layout/details-layout.stories.tsx +81 -0
- package/src/layouts/details-layout/details-layout.tsx +33 -0
- package/src/layouts/details-layout/index.ts +1 -0
- package/src/layouts/form-layout/form-layout.stories.tsx +65 -0
- package/src/layouts/form-layout/form-layout.tsx +18 -0
- package/src/layouts/form-layout/index.ts +1 -0
- package/src/layouts/header-layout/header-layout.stories.tsx +68 -0
- package/src/layouts/header-layout/header-layout.tsx +24 -0
- package/src/layouts/header-layout/index.ts +1 -0
- package/src/layouts/index.ts +7 -0
- package/src/layouts/list-layout/index.ts +1 -0
- package/src/layouts/list-layout/list-layout.stories.tsx +102 -0
- package/src/layouts/list-layout/list-layout.tsx +36 -0
- package/src/layouts/tab-layout/index.ts +1 -0
- package/src/layouts/tab-layout/tab-layout.stories.tsx +88 -0
- package/src/layouts/tab-layout/tab-layout.tsx +11 -0
- package/src/providers/index.ts +1 -0
- package/src/providers/notification-center/index.ts +1 -0
- package/src/providers/notification-center/notification-center.context.ts +37 -0
- package/src/providers/notification-center/notification-center.provider.tsx +51 -0
- package/src/providers/notification-center/notification-center.stories.tsx +52 -0
- package/src/providers/notification-center/notification-center.test.tsx +112 -0
- package/src/storybook.tsx +56 -0
- package/src/tests/assertions.ts +72 -0
- package/src/tests/components.tsx +60 -0
- package/src/tests/content-placeholder.stories.tsx +16 -0
- package/src/tests/index.ts +3 -0
- package/src/tests/skeleton-card.stories.tsx +18 -0
- package/src/tests/testing-library.tsx +65 -0
- package/src/utils/arrays.test.ts +9 -0
- package/src/utils/arrays.ts +7 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/theme.ts +6 -0
- package/tsconfig.json +27 -0
- package/tsconfig.rollup.json +26 -0
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import userEvent from "@testing-library/user-event";
|
|
3
|
+
import { AlertColor, Box, Button } from "@mui/material";
|
|
4
|
+
import { render, screen, waitForElementToBeRemoved, expectAlert } from "../../tests";
|
|
5
|
+
import { NotificationCenterProvider } from "./notification-center.provider";
|
|
6
|
+
import {
|
|
7
|
+
NotificationCenterProviderUndefinedError,
|
|
8
|
+
useNotificationCenter,
|
|
9
|
+
} from "./notification-center.context";
|
|
10
|
+
|
|
11
|
+
describe("NotificationCenterProvider", () => {
|
|
12
|
+
const renderComponent = ({ autoHideDuration }: { autoHideDuration?: number } = {}) => {
|
|
13
|
+
const TestContent = () => {
|
|
14
|
+
const { show, hide } = useNotificationCenter();
|
|
15
|
+
|
|
16
|
+
const showNotification = (severity: AlertColor) => {
|
|
17
|
+
show({
|
|
18
|
+
title: "An alert!",
|
|
19
|
+
message: "Lorem ipsum sit amet",
|
|
20
|
+
severity,
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
return (
|
|
24
|
+
<>
|
|
25
|
+
<Button onClick={() => showNotification("success")}>success</Button>
|
|
26
|
+
<Button onClick={() => showNotification("info")}>info</Button>
|
|
27
|
+
<Button onClick={() => showNotification("warning")}>warning</Button>
|
|
28
|
+
<Button onClick={() => showNotification("error")}>error</Button>
|
|
29
|
+
<Button onClick={hide}>hide</Button>
|
|
30
|
+
</>
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
return render(
|
|
35
|
+
<NotificationCenterProvider autoHideDuration={autoHideDuration}>
|
|
36
|
+
<TestContent />
|
|
37
|
+
</NotificationCenterProvider>,
|
|
38
|
+
);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
it("would render an alert with a title and message when a notification is requested", async () => {
|
|
42
|
+
renderComponent();
|
|
43
|
+
|
|
44
|
+
await userEvent.click(screen.getByRole("button", { name: /info/i }));
|
|
45
|
+
|
|
46
|
+
await expectAlert({
|
|
47
|
+
title: /an alert/i,
|
|
48
|
+
message: /lorem ipsum sit amet/i,
|
|
49
|
+
severity: "info",
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("would hide the notification if close is called", async () => {
|
|
54
|
+
renderComponent();
|
|
55
|
+
|
|
56
|
+
await userEvent.click(screen.getByRole("button", { name: /info/i }));
|
|
57
|
+
await userEvent.click(screen.getByRole("button", { name: /hide/i }));
|
|
58
|
+
|
|
59
|
+
await waitForElementToBeRemoved(() => screen.getByRole("alert"));
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
it("would hide the notification if the user clicks the close button", async () => {
|
|
63
|
+
renderComponent();
|
|
64
|
+
|
|
65
|
+
await userEvent.click(screen.getByRole("button", { name: /info/i }));
|
|
66
|
+
await userEvent.click(screen.getByTestId("CloseIcon"));
|
|
67
|
+
|
|
68
|
+
await waitForElementToBeRemoved(() => screen.getByRole("alert"));
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it("would hide the notification after a delay", async () => {
|
|
72
|
+
renderComponent({ autoHideDuration: 100 });
|
|
73
|
+
|
|
74
|
+
await userEvent.click(screen.getByRole("button", { name: /info/i }));
|
|
75
|
+
|
|
76
|
+
await waitForElementToBeRemoved(() => screen.getByRole("alert"));
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
describe("notification severity", () => {
|
|
80
|
+
it.each([
|
|
81
|
+
["success", /success/i],
|
|
82
|
+
["info", /info/i],
|
|
83
|
+
["warning", /warning/i],
|
|
84
|
+
["error", /error/i],
|
|
85
|
+
])(
|
|
86
|
+
"would render a notification with severity %s",
|
|
87
|
+
async (severity: string, buttonName: RegExp) => {
|
|
88
|
+
renderComponent();
|
|
89
|
+
|
|
90
|
+
await userEvent.click(screen.getByRole("button", { name: buttonName }));
|
|
91
|
+
|
|
92
|
+
expect(screen.getByRole("alert", { name: severity })).toBeInTheDocument();
|
|
93
|
+
},
|
|
94
|
+
);
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
describe("useNotificationCenter", () => {
|
|
99
|
+
it("would throw an error if the component is not wrapped by a NotificationCenterContext.Provider", () => {
|
|
100
|
+
const FailingComponent = () => {
|
|
101
|
+
useNotificationCenter();
|
|
102
|
+
return <Box>FailingComponent</Box>;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
try {
|
|
106
|
+
render(<FailingComponent />);
|
|
107
|
+
fail();
|
|
108
|
+
} catch (err) {
|
|
109
|
+
expect(err).toStrictEqual(NotificationCenterProviderUndefinedError);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/* eslint-disable react/display-name */
|
|
2
|
+
import React, { FunctionComponent } from "react";
|
|
3
|
+
import { ComponentStory } from "@storybook/react";
|
|
4
|
+
import { JSXElementConstructor } from "react";
|
|
5
|
+
import { Box } from "@mui/material";
|
|
6
|
+
import { BrowserRouter } from "react-router-dom";
|
|
7
|
+
|
|
8
|
+
export function createTemplate<P>(
|
|
9
|
+
C: JSXElementConstructor<P>,
|
|
10
|
+
): ComponentStory<JSXElementConstructor<P>> {
|
|
11
|
+
return (args) => <C {...args} />;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const withBrowserRouter =
|
|
15
|
+
(basename = "iframe.html") =>
|
|
16
|
+
(Story) =>
|
|
17
|
+
(
|
|
18
|
+
<BrowserRouter basename={basename}>
|
|
19
|
+
<Story />
|
|
20
|
+
</BrowserRouter>
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
export const withFullHeight = (Story: FunctionComponent) => {
|
|
24
|
+
return (
|
|
25
|
+
<Box height="100vh">
|
|
26
|
+
<Story />
|
|
27
|
+
</Box>
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const withContainer =
|
|
32
|
+
({ width, height, bordered }: { width?: number; height?: number; bordered?: boolean }) =>
|
|
33
|
+
(Story: FunctionComponent) => {
|
|
34
|
+
let sx = {};
|
|
35
|
+
if (bordered) {
|
|
36
|
+
sx = {
|
|
37
|
+
...sx,
|
|
38
|
+
border: "solid 1px black",
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return (
|
|
42
|
+
<Box width={width} height={height} sx={sx}>
|
|
43
|
+
<Story />
|
|
44
|
+
</Box>
|
|
45
|
+
);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export const withPadding =
|
|
49
|
+
(padding = 2) =>
|
|
50
|
+
(Story: FunctionComponent) => {
|
|
51
|
+
return (
|
|
52
|
+
<Box padding={padding}>
|
|
53
|
+
<Story />
|
|
54
|
+
</Box>
|
|
55
|
+
);
|
|
56
|
+
};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { AlertColor } from "@mui/material";
|
|
2
|
+
import { ModelField } from "../generators";
|
|
3
|
+
import { screen, waitForElementToBeRemoved } from "./testing-library";
|
|
4
|
+
|
|
5
|
+
export const expectModelFieldInputExist = (fields: ModelField[]) => {
|
|
6
|
+
fields.forEach((field) => {
|
|
7
|
+
if (field.type === "group") {
|
|
8
|
+
expectModelFieldInputExist(field.value);
|
|
9
|
+
} else if (field.type === "number") {
|
|
10
|
+
expect(screen.getByRole("spinbutton", { name: field.name })).toBeInTheDocument();
|
|
11
|
+
} else {
|
|
12
|
+
expect(screen.getByRole("textbox", { name: field.name })).toBeInTheDocument();
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const expectModelFieldInputValue = (fields: ModelField[], initialValues: object) => {
|
|
18
|
+
fields.forEach((field) => {
|
|
19
|
+
const value = initialValues[field.id];
|
|
20
|
+
if (field.type === "group") {
|
|
21
|
+
expectModelFieldInputValue(field.value, value);
|
|
22
|
+
} else if (field.type === "number") {
|
|
23
|
+
expect(screen.getByDisplayValue(value.toString())).toBeInTheDocument();
|
|
24
|
+
} else {
|
|
25
|
+
expect(screen.getByDisplayValue(value.toString())).toBeInTheDocument();
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const expectModelFieldValue = (field: ModelField, instance: object) => {
|
|
31
|
+
const { id, type, name, description } = field;
|
|
32
|
+
const value = instance[id];
|
|
33
|
+
|
|
34
|
+
if (type === "group") {
|
|
35
|
+
expect(screen.getByRole("heading", { level: 1, name }));
|
|
36
|
+
expect(screen.getByRole("heading", { level: 2, name: description }));
|
|
37
|
+
field.value.forEach((groupValue) => expectModelFieldValue(groupValue, value));
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
expect(screen.getByRole("label", { name: name })).toBeInTheDocument();
|
|
42
|
+
if (type === "boolean") {
|
|
43
|
+
expect(screen.getByTestId(value ? "CheckIcon" : "CloseIcon")).toBeInTheDocument();
|
|
44
|
+
} else {
|
|
45
|
+
expect(screen.getByLabelText(name)).toHaveTextContent(value);
|
|
46
|
+
//expect(screen.getByText(value)).toBeInTheDocument();
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export const expectProgressIndicator = () => {
|
|
51
|
+
expect(screen.getByRole("progressbar")).toBeInTheDocument();
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export const waitForProgressIndicatorToBeRemoved = async () => {
|
|
55
|
+
await waitForElementToBeRemoved(() => screen.getByRole("progressbar"));
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export const expectAlert = async ({
|
|
59
|
+
title,
|
|
60
|
+
message,
|
|
61
|
+
severity,
|
|
62
|
+
}: {
|
|
63
|
+
title?: RegExp | string;
|
|
64
|
+
message: RegExp | string;
|
|
65
|
+
severity: AlertColor;
|
|
66
|
+
}) => {
|
|
67
|
+
const alertElement = await screen.findByRole("alert");
|
|
68
|
+
expect(alertElement).toBeInTheDocument();
|
|
69
|
+
expect(alertElement).toHaveAttribute("aria-label", severity);
|
|
70
|
+
title && expect(await screen.findByText(title)).toBeInTheDocument();
|
|
71
|
+
expect(await screen.findByText(message)).toBeInTheDocument();
|
|
72
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React, { PropsWithChildren } from "react";
|
|
2
|
+
import { Typography, Container, Skeleton, Grid, Box } from "@mui/material";
|
|
3
|
+
import { loremIpsum } from "lorem-ipsum";
|
|
4
|
+
import { newArrayWithSize } from "../utils";
|
|
5
|
+
|
|
6
|
+
export const Placeholder = () => {
|
|
7
|
+
return (
|
|
8
|
+
<Typography variant="body1">
|
|
9
|
+
{loremIpsum({
|
|
10
|
+
count: 3,
|
|
11
|
+
units: "paragraph",
|
|
12
|
+
})}
|
|
13
|
+
</Typography>
|
|
14
|
+
);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
interface SkeletonCardProps {
|
|
18
|
+
width?: number | string;
|
|
19
|
+
animation?: "pulse" | "wave" | false;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const SkeletonCard = ({ width = "100%", animation = false }: SkeletonCardProps) => {
|
|
23
|
+
return (
|
|
24
|
+
<Box width={width}>
|
|
25
|
+
<Skeleton animation={animation} variant="rectangular" height={118} />
|
|
26
|
+
<Skeleton animation={animation} variant="rectangular" height={16} sx={{ my: 1 }} />
|
|
27
|
+
<Skeleton animation={animation} variant="rectangular" width="80%" height={16} />
|
|
28
|
+
</Box>
|
|
29
|
+
);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
interface SkeletonGridProps {
|
|
33
|
+
size?: number;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export const SkeletonGrid = ({ size = 20 }: SkeletonGridProps) => {
|
|
37
|
+
return (
|
|
38
|
+
<Grid container spacing={2}>
|
|
39
|
+
{newArrayWithSize(size, 0).map((_, i) => (
|
|
40
|
+
<Grid item key={i} xs={4}>
|
|
41
|
+
<SkeletonCard width={1} />
|
|
42
|
+
</Grid>
|
|
43
|
+
))}
|
|
44
|
+
</Grid>
|
|
45
|
+
);
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
type ContentPlaceholderProps = PropsWithChildren<{
|
|
49
|
+
size?: number;
|
|
50
|
+
p?: number;
|
|
51
|
+
}>;
|
|
52
|
+
|
|
53
|
+
export const ContentPlaceholder = ({ size = 20, children, p }: ContentPlaceholderProps) => {
|
|
54
|
+
return (
|
|
55
|
+
<Container component="main" sx={{ p }}>
|
|
56
|
+
{children}
|
|
57
|
+
<SkeletonGrid size={size} />
|
|
58
|
+
</Container>
|
|
59
|
+
);
|
|
60
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ComponentMeta } from "@storybook/react";
|
|
2
|
+
import { createTemplate } from "../storybook";
|
|
3
|
+
import { ContentPlaceholder } from "./components";
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title: "Test/ContentPlaceholder",
|
|
7
|
+
component: ContentPlaceholder,
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: "fullscreen",
|
|
10
|
+
},
|
|
11
|
+
} as ComponentMeta<typeof ContentPlaceholder>;
|
|
12
|
+
|
|
13
|
+
const Template = createTemplate(ContentPlaceholder);
|
|
14
|
+
|
|
15
|
+
export const Default = Template.bind({});
|
|
16
|
+
Default.args = {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ComponentMeta } from "@storybook/react";
|
|
2
|
+
import { createTemplate } from "../storybook";
|
|
3
|
+
import { SkeletonCard } from "./components";
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title: "Test/SkeletonCard",
|
|
7
|
+
component: SkeletonCard,
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: "fullscreen",
|
|
10
|
+
},
|
|
11
|
+
} as ComponentMeta<typeof SkeletonCard>;
|
|
12
|
+
|
|
13
|
+
const Template = createTemplate(SkeletonCard);
|
|
14
|
+
|
|
15
|
+
export const Default = Template.bind({});
|
|
16
|
+
Default.args = {
|
|
17
|
+
width: 250,
|
|
18
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { render, RenderOptions } from "@testing-library/react";
|
|
2
|
+
import { MemoryRouter, Router } from "react-router-dom";
|
|
3
|
+
import { createMemoryHistory, MemoryHistory } from "history";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { ThemeProvider } from "@emotion/react";
|
|
6
|
+
import { Theme, createTheme, PaletteMode } from "@mui/material";
|
|
7
|
+
|
|
8
|
+
export type TestRouter = "router" | "memory";
|
|
9
|
+
|
|
10
|
+
function createMockTheme(mode: PaletteMode) {
|
|
11
|
+
return createTheme({
|
|
12
|
+
palette: {
|
|
13
|
+
mode,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function createMockHistory(): MemoryHistory {
|
|
19
|
+
return createMemoryHistory();
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const createWrapper =
|
|
23
|
+
(history: MemoryHistory, theme: Theme, router: TestRouter) =>
|
|
24
|
+
// eslint-disable-next-line react/display-name
|
|
25
|
+
({ children }: { children: React.ReactElement }) => {
|
|
26
|
+
const isMemoryRouter = router === "memory";
|
|
27
|
+
|
|
28
|
+
const R = isMemoryRouter ? MemoryRouter : Router;
|
|
29
|
+
const routerArgs = isMemoryRouter
|
|
30
|
+
? {}
|
|
31
|
+
: {
|
|
32
|
+
location: history.location,
|
|
33
|
+
navigator: history,
|
|
34
|
+
};
|
|
35
|
+
return (
|
|
36
|
+
<ThemeProvider theme={theme}>
|
|
37
|
+
<R {...routerArgs}>{children}</R>
|
|
38
|
+
</ThemeProvider>
|
|
39
|
+
);
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
interface CustomRenderOptions {
|
|
43
|
+
renderOptions?: RenderOptions;
|
|
44
|
+
mode?: PaletteMode;
|
|
45
|
+
router?: TestRouter;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const customRender = (ui: React.ReactElement, options: CustomRenderOptions = {}) => {
|
|
49
|
+
const renderOptions = options.renderOptions || {};
|
|
50
|
+
const mode = options.mode || "light";
|
|
51
|
+
const router = options.router || "router";
|
|
52
|
+
|
|
53
|
+
const history = createMockHistory();
|
|
54
|
+
const theme = createMockTheme(mode);
|
|
55
|
+
const wrapper = createWrapper(history, theme, router);
|
|
56
|
+
|
|
57
|
+
const instance = render(ui, { wrapper, ...renderOptions });
|
|
58
|
+
return { ...instance, history };
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// re-export everything
|
|
62
|
+
export * from "@testing-library/react";
|
|
63
|
+
|
|
64
|
+
// override render method
|
|
65
|
+
export { customRender as render };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { newArrayWithSize } from "./arrays";
|
|
2
|
+
|
|
3
|
+
describe("newArrayWithSize", () => {
|
|
4
|
+
it("would create a new array with size 3 filled with 5", () => {
|
|
5
|
+
const a = newArrayWithSize(3, 5);
|
|
6
|
+
expect(a).toHaveLength(3);
|
|
7
|
+
expect(a.every((x) => x === 5)).toBeTruthy();
|
|
8
|
+
});
|
|
9
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export const newArrayWithSize = <T>(size: number, fillValue: T) => new Array(size).fill(fillValue);
|
|
2
|
+
|
|
3
|
+
export const getRandomItem = <T>(items: T[]): { index: number; item: T } => {
|
|
4
|
+
const index = Math.floor(Math.random() * items.length);
|
|
5
|
+
const item = items[index];
|
|
6
|
+
return { index, item };
|
|
7
|
+
};
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"esModuleInterop": true,
|
|
4
|
+
"strict": true,
|
|
5
|
+
"skipLibCheck": true,
|
|
6
|
+
"jsx": "react",
|
|
7
|
+
"lib": ["ES2016"],
|
|
8
|
+
"module": "ESNext",
|
|
9
|
+
"declaration": true,
|
|
10
|
+
"declarationDir": "types",
|
|
11
|
+
"sourceMap": true,
|
|
12
|
+
"outDir": "dist",
|
|
13
|
+
"moduleResolution": "node",
|
|
14
|
+
"emitDeclarationOnly": true,
|
|
15
|
+
"allowSyntheticDefaultImports": true,
|
|
16
|
+
"forceConsistentCasingInFileNames": true,
|
|
17
|
+
"types": ["jest"]
|
|
18
|
+
},
|
|
19
|
+
"include": ["./jest.setup.ts"],
|
|
20
|
+
"exclude": [
|
|
21
|
+
"dist",
|
|
22
|
+
"node_modules",
|
|
23
|
+
"src/**/*.test.tsx",
|
|
24
|
+
"src/**/*.stories.tsx",
|
|
25
|
+
"src/storybook.tsx"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"esModuleInterop": true,
|
|
4
|
+
"strict": true,
|
|
5
|
+
"skipLibCheck": true,
|
|
6
|
+
"jsx": "react",
|
|
7
|
+
"module": "ESNext",
|
|
8
|
+
"declaration": true,
|
|
9
|
+
"declarationDir": "types",
|
|
10
|
+
"sourceMap": true,
|
|
11
|
+
"rootDir": "src",
|
|
12
|
+
"outDir": "dist",
|
|
13
|
+
"moduleResolution": "node",
|
|
14
|
+
"emitDeclarationOnly": true,
|
|
15
|
+
"allowSyntheticDefaultImports": true,
|
|
16
|
+
"forceConsistentCasingInFileNames": true
|
|
17
|
+
},
|
|
18
|
+
"exclude": [
|
|
19
|
+
"dist",
|
|
20
|
+
"node_modules",
|
|
21
|
+
"src/tests",
|
|
22
|
+
"src/**/*.test.tsx",
|
|
23
|
+
"src/**/*.stories.tsx",
|
|
24
|
+
"src/storybook.tsx"
|
|
25
|
+
]
|
|
26
|
+
}
|