@pautena/react-design-system 0.5.1 → 0.6.0
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/README.md +1 -1
- package/dist/cjs/index.js +4 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/alerts/expandable-alert/expandable-alert.d.ts +1 -1
- package/dist/cjs/types/components/data-display/bullet/bullet.d.ts +6 -1
- package/dist/cjs/types/components/data-display/label/label.d.ts +6 -1
- package/dist/cjs/types/components/data-display/link-card/link-card.d.ts +11 -0
- package/dist/cjs/types/components/drawers/drawer/drawer.d.ts +4 -1
- package/dist/cjs/types/components/drawers/drawer/index.d.ts +0 -4
- package/dist/cjs/types/components/drawers/drawer-app-bar/drawer-app-bar.d.ts +5 -0
- package/dist/cjs/types/components/drawers/drawer-app-bar/index.d.ts +1 -0
- package/dist/cjs/types/components/drawers/drawer-content/drawer-content.d.ts +1 -1
- package/dist/cjs/types/components/drawers/drawer-item/drawer-item-link.d.ts +50 -0
- package/dist/cjs/types/components/drawers/drawer-item/drawer-item.d.ts +8 -34
- package/dist/cjs/types/components/drawers/drawer-item/drawer-menu-item.d.ts +35 -0
- package/dist/cjs/types/components/drawers/drawer-item/index.d.ts +2 -0
- package/dist/cjs/types/components/drawers/drawer-main/drawer-main.d.ts +3 -0
- package/dist/cjs/types/components/drawers/drawer-main/index.d.ts +1 -0
- package/dist/{esm/types/components/drawers/drawer/drawer.context.d.ts → cjs/types/components/drawers/drawer-provider/drawer-context.d.ts} +9 -1
- package/dist/cjs/types/components/drawers/drawer-provider/drawer.provider.d.ts +10 -0
- package/dist/cjs/types/components/drawers/drawer-provider/index.d.ts +3 -0
- package/dist/cjs/types/components/drawers/drawer-section/drawer-section.d.ts +5 -5
- package/dist/cjs/types/components/drawers/drawer-subheader/drawer-subheader.d.ts +20 -0
- package/dist/cjs/types/components/drawers/drawer-subheader/index.d.ts +1 -0
- package/dist/cjs/types/components/drawers/drawer.mock.d.ts +13 -0
- package/dist/cjs/types/components/drawers/drawer.types.d.ts +61 -0
- package/dist/cjs/types/components/drawers/index.d.ts +6 -2
- package/dist/cjs/types/components/index.d.ts +0 -1
- package/dist/cjs/types/components/inputs/autocomplete/autocomplete.d.ts +10 -0
- package/dist/cjs/types/components/inputs/autocomplete/index.d.ts +1 -0
- package/dist/cjs/types/components/inputs/index.d.ts +2 -2
- package/dist/cjs/types/components/inputs/select/index.d.ts +1 -0
- package/dist/cjs/types/components/inputs/select/select.d.ts +15 -0
- package/dist/cjs/types/components/inputs/text-field/index.d.ts +1 -0
- package/dist/cjs/types/components/inputs/text-field/text-field.d.ts +7 -0
- package/dist/cjs/types/generators/model-router/stories/templates.d.ts +0 -2
- package/dist/cjs/types/layouts/drawer-layout/drawer-layout.d.ts +8 -0
- package/dist/cjs/types/layouts/drawer-layout/index.d.ts +1 -0
- package/dist/cjs/types/layouts/index.d.ts +1 -1
- package/dist/cjs/types/utils/arrays.d.ts +1 -1
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/alerts/expandable-alert/expandable-alert.d.ts +1 -1
- package/dist/esm/types/components/data-display/bullet/bullet.d.ts +6 -1
- package/dist/esm/types/components/data-display/label/label.d.ts +6 -1
- package/dist/esm/types/components/data-display/link-card/link-card.d.ts +11 -0
- package/dist/esm/types/components/drawers/drawer/drawer.d.ts +4 -1
- package/dist/esm/types/components/drawers/drawer/index.d.ts +0 -4
- package/dist/esm/types/components/drawers/drawer-app-bar/drawer-app-bar.d.ts +5 -0
- package/dist/esm/types/components/drawers/drawer-app-bar/index.d.ts +1 -0
- package/dist/esm/types/components/drawers/drawer-content/drawer-content.d.ts +1 -1
- package/dist/esm/types/components/drawers/drawer-item/drawer-item-link.d.ts +50 -0
- package/dist/esm/types/components/drawers/drawer-item/drawer-item.d.ts +8 -34
- package/dist/esm/types/components/drawers/drawer-item/drawer-menu-item.d.ts +35 -0
- package/dist/esm/types/components/drawers/drawer-item/index.d.ts +2 -0
- package/dist/esm/types/components/drawers/drawer-main/drawer-main.d.ts +3 -0
- package/dist/esm/types/components/drawers/drawer-main/index.d.ts +1 -0
- package/dist/{cjs/types/components/drawers/drawer/drawer.context.d.ts → esm/types/components/drawers/drawer-provider/drawer-context.d.ts} +9 -1
- package/dist/esm/types/components/drawers/drawer-provider/drawer.provider.d.ts +10 -0
- package/dist/esm/types/components/drawers/drawer-provider/index.d.ts +3 -0
- package/dist/esm/types/components/drawers/drawer-section/drawer-section.d.ts +5 -5
- package/dist/esm/types/components/drawers/drawer-subheader/drawer-subheader.d.ts +20 -0
- package/dist/esm/types/components/drawers/drawer-subheader/index.d.ts +1 -0
- package/dist/esm/types/components/drawers/drawer.mock.d.ts +13 -0
- package/dist/esm/types/components/drawers/drawer.types.d.ts +61 -0
- package/dist/esm/types/components/drawers/index.d.ts +6 -2
- package/dist/esm/types/components/index.d.ts +0 -1
- package/dist/esm/types/components/inputs/autocomplete/autocomplete.d.ts +10 -0
- package/dist/esm/types/components/inputs/autocomplete/index.d.ts +1 -0
- package/dist/esm/types/components/inputs/index.d.ts +2 -2
- package/dist/esm/types/components/inputs/select/index.d.ts +1 -0
- package/dist/esm/types/components/inputs/select/select.d.ts +15 -0
- package/dist/esm/types/components/inputs/text-field/index.d.ts +1 -0
- package/dist/esm/types/components/inputs/text-field/text-field.d.ts +7 -0
- package/dist/esm/types/generators/model-router/stories/templates.d.ts +0 -2
- package/dist/esm/types/layouts/drawer-layout/drawer-layout.d.ts +8 -0
- package/dist/esm/types/layouts/drawer-layout/index.d.ts +1 -0
- package/dist/esm/types/layouts/index.d.ts +1 -1
- package/dist/esm/types/utils/arrays.d.ts +1 -1
- package/dist/index.d.ts +99 -98
- package/package.json +24 -22
- package/setupTests.ts +22 -0
- package/src/components/alerts/expandable-alert/expandable-alert.stories.tsx +53 -27
- package/src/components/alerts/expandable-alert/expandable-alert.test.tsx +26 -3
- package/src/components/alerts/expandable-alert/expandable-alert.tsx +38 -38
- package/src/components/components.stories.mdx +0 -1
- package/src/components/containers/center-container/center-container.stories.tsx +29 -27
- package/src/components/containers/content/content.stories.tsx +6 -9
- package/src/components/data-display/board/board.stories.tsx +36 -32
- package/src/components/data-display/board/board.test.tsx +4 -3
- package/src/components/data-display/bullet/bullet.stories.tsx +27 -23
- package/src/components/data-display/bullet/bullet.tsx +7 -2
- package/src/components/data-display/data-display.stories.mdx +1 -0
- package/src/components/data-display/header/header.stories.tsx +90 -81
- package/src/components/data-display/header/header.test.tsx +2 -1
- package/src/components/data-display/label/label.stories.tsx +33 -29
- package/src/components/data-display/label/label.tsx +8 -3
- package/src/components/data-display/link-card/index.ts +0 -0
- package/src/components/data-display/link-card/link-card.stories.tsx +59 -0
- package/src/components/data-display/link-card/link-card.test.tsx +43 -0
- package/src/components/data-display/link-card/link-card.tsx +52 -0
- package/src/components/data-display/markdown/markdown.stories.tsx +11 -10
- package/src/components/data-display/markdown/markdown.test.tsx +1 -1
- package/src/components/dialogs/bootstrap-dialog/bootstrap-dialog.stories.tsx +57 -52
- package/src/components/dialogs/bootstrap-dialog/bootstrap-dialog.test.tsx +6 -5
- package/src/components/dialogs/confirm-dialog/confirm-dialog.stories.tsx +26 -23
- package/src/components/dialogs/confirm-dialog/confirm-dialog.test.tsx +3 -2
- package/src/components/dialogs/dialogs.stories.mdx +2 -2
- package/src/components/dialogs/form-dialog/form-dialog.stories.tsx +34 -32
- package/src/components/dialogs/form-dialog/form-dialog.test.tsx +3 -2
- package/src/components/drawers/drawer/drawer.stories.tsx +35 -0
- package/src/components/drawers/drawer/drawer.test.tsx +62 -76
- package/src/components/drawers/drawer/drawer.tsx +74 -10
- package/src/components/drawers/drawer/index.ts +0 -4
- package/src/components/drawers/drawer-app-bar/drawer-app-bar.stories.tsx +26 -0
- package/src/components/drawers/drawer-app-bar/drawer-app-bar.test.tsx +83 -0
- package/src/components/drawers/drawer-app-bar/drawer-app-bar.tsx +87 -0
- package/src/components/drawers/drawer-app-bar/index.ts +1 -0
- package/src/components/drawers/drawer-content/drawer-content.stories.tsx +36 -17
- package/src/components/drawers/drawer-content/drawer-content.test.tsx +7 -2
- package/src/components/drawers/drawer-content/drawer-content.tsx +3 -3
- package/src/components/drawers/drawer-demo.stories.tsx +94 -0
- package/src/components/drawers/drawer-item/drawer-item-link.tsx +149 -0
- package/src/components/drawers/drawer-item/drawer-item.stories.tsx +131 -39
- package/src/components/drawers/drawer-item/drawer-item.test.tsx +227 -75
- package/src/components/drawers/drawer-item/drawer-item.tsx +42 -78
- package/src/components/drawers/drawer-item/drawer-menu-item.tsx +137 -0
- package/src/components/drawers/drawer-item/index.ts +2 -0
- package/src/components/drawers/drawer-main/drawer-main.tsx +42 -0
- package/src/components/drawers/drawer-main/index.ts +1 -0
- package/src/components/drawers/drawer-provider/drawer-context.test.tsx +24 -0
- package/src/components/drawers/{drawer/drawer.context.ts → drawer-provider/drawer-context.ts} +9 -1
- package/src/components/drawers/drawer-provider/drawer-mixins.test.tsx +25 -0
- package/src/components/drawers/drawer-provider/drawer-provider.test.tsx +150 -0
- package/src/components/drawers/drawer-provider/drawer.provider.tsx +57 -0
- package/src/components/drawers/drawer-provider/index.ts +3 -0
- package/src/components/drawers/drawer-section/drawer-section.stories.tsx +42 -15
- package/src/components/drawers/drawer-section/drawer-section.test.tsx +56 -12
- package/src/components/drawers/drawer-section/drawer-section.tsx +25 -41
- package/src/components/drawers/drawer-subheader/drawer-subheader.stories.tsx +27 -0
- package/src/components/drawers/drawer-subheader/drawer-subheader.tsx +15 -0
- package/src/components/drawers/drawer-subheader/index.ts +1 -0
- package/src/components/drawers/drawer.mock.tsx +195 -0
- package/src/components/drawers/drawer.types.ts +78 -0
- package/src/components/drawers/drawers.stories.mdx +2 -0
- package/src/components/drawers/index.ts +6 -2
- package/src/components/feedback/loading-area/loading-area.stories.tsx +5 -7
- package/src/components/feedback/query-container/query-container.stories.tsx +47 -41
- package/src/components/index.ts +0 -1
- package/src/components/inputs/autocomplete/autocomplete.stories.tsx +115 -0
- package/src/components/inputs/{enhanced-autocomplete/enhanced-autocomplete.test.tsx → autocomplete/autocomplete.test.tsx} +5 -4
- package/src/components/inputs/{enhanced-autocomplete/enhanced-autocomplete.tsx → autocomplete/autocomplete.tsx} +12 -8
- package/src/components/inputs/autocomplete/index.ts +1 -0
- package/src/components/inputs/index.ts +2 -2
- package/src/components/inputs/inputs.stories.mdx +3 -3
- package/src/components/inputs/search-input/search-input.stories.tsx +36 -32
- package/src/components/inputs/search-input/search-input.test.tsx +2 -1
- package/src/components/inputs/select/index.ts +1 -0
- package/src/components/inputs/select/select.stories.tsx +107 -0
- package/src/components/inputs/{enhanced-select/enhanced-select.test.tsx → select/select.test.tsx} +14 -13
- package/src/components/inputs/{enhanced-select/enhanced-select.tsx → select/select.tsx} +9 -9
- package/src/components/inputs/sign-in/sign-in.stories.tsx +22 -21
- package/src/components/inputs/sign-in/sign-in.test.tsx +6 -5
- package/src/components/inputs/text-field/index.ts +1 -0
- package/src/components/inputs/text-field/text-field.stories.tsx +128 -0
- package/src/components/inputs/{enhanced-text-field/enhanced-text-field.test.tsx → text-field/text-field.test.tsx} +5 -4
- package/src/components/inputs/{enhanced-text-field/enhanced-text-field.tsx → text-field/text-field.tsx} +4 -4
- package/src/components/navigation/tab/tab-card/tab-card.stories.tsx +11 -11
- package/src/components/placeholders/content-placeholder/content-placeholder.stories.tsx +4 -6
- package/src/components/placeholders/lorem-ipsum-placeholder/lorem-ipsum-placeholder.stories.tsx +4 -6
- package/src/components/placeholders/placeholder/placeholder.stories.tsx +28 -27
- package/src/components/placeholders/placeholder/placeholder.test.tsx +2 -1
- package/src/components/placeholders/skeleton-card/skeleton-card.stories.tsx +7 -8
- package/src/components/placeholders/skeleton-grid/skeleton-grid.stories.tsx +4 -6
- package/src/components/tables/enhanced-remote-table/enhanced-remote-table.stories.tsx +12 -14
- package/src/components/tables/enhanced-remote-table/enhanced-remote-table.test.tsx +2 -1
- package/src/components/tables/enhanced-table/enhanced-table.stories.tsx +10 -11
- package/src/components/value-displays/group-value-card/group-value-card.stories.tsx +14 -13
- package/src/components/value-displays/value-boolean/value-boolean.stories.tsx +19 -19
- package/src/components/value-displays/value-boolean/value-boolean.test.tsx +2 -1
- package/src/components/value-displays/value-card/value-card.stories.tsx +10 -10
- package/src/components/value-displays/value-content/value-content.stories.tsx +9 -7
- package/src/components/value-displays/value-datetime/value-datetime.stories.tsx +45 -40
- package/src/components/value-displays/value-datetime/value-datetime.test.tsx +2 -1
- package/src/components/value-displays/value-image/value-image.stories.tsx +15 -14
- package/src/components/value-displays/value-rating/value-rating.stories.tsx +22 -20
- package/src/components/value-displays/value-rating/value-rating.test.tsx +2 -1
- package/src/components/value-displays/value-text/value-text.stories.tsx +34 -29
- package/src/components/value-displays/value-text/value-text.test.tsx +2 -1
- package/src/generators/model-form/model-form.stories.tsx +15 -14
- package/src/generators/model-form/model-form.test.tsx +2 -1
- package/src/generators/model-router/model-router.test.tsx +16 -16
- package/src/generators/model-router/stories/details-screen.stories.tsx +17 -16
- package/src/generators/model-router/stories/list-screen.stories.tsx +73 -67
- package/src/generators/model-router/stories/model-router.stories.tsx +17 -15
- package/src/generators/model-router/stories/templates.tsx +0 -5
- package/src/generators/object-details/object-details.stories.tsx +2 -2
- package/src/generators/table-list/table-list.stories.tsx +68 -62
- package/src/generators/table-list/table-list.test.tsx +4 -3
- package/src/layouts/drawer-layout/drawer-layout.stories.tsx +57 -0
- package/src/layouts/{app-bar-with-drawer-layout/app-bar-with-drawer-layout.test.tsx → drawer-layout/drawer-layout.test.tsx} +14 -4
- package/src/layouts/drawer-layout/drawer-layout.tsx +26 -0
- package/src/layouts/drawer-layout/index.ts +1 -0
- package/src/layouts/header-layout/header-layout.stories.tsx +103 -98
- package/src/layouts/index.ts +1 -1
- package/src/layouts/layouts.stories.mdx +1 -1
- package/src/providers/notification-center/notification-center.stories.tsx +2 -2
- package/src/providers/notification-center/notification-center.test.tsx +3 -2
- package/src/stories/getting-started.stories.mdx +1 -1
- package/src/storybook.tsx +1 -9
- package/src/tests/datatable-placeholder/datatable-placeholder.stories.tsx +4 -6
- package/src/tests/mocks.ts +3 -1
- package/vitest.config.ts +11 -0
- package/dist/cjs/types/components/app-bars/app-bar/app-bar.d.ts +0 -2
- package/dist/cjs/types/components/app-bars/app-bar/app-bar.types.d.ts +0 -14
- package/dist/cjs/types/components/app-bars/app-bar/index.d.ts +0 -3
- package/dist/cjs/types/components/app-bars/app-bar/mini-app-bar/index.d.ts +0 -1
- package/dist/cjs/types/components/app-bars/app-bar/mini-app-bar/mini-app-bar.d.ts +0 -2
- package/dist/cjs/types/components/app-bars/index.d.ts +0 -1
- package/dist/cjs/types/components/drawers/drawer/drawer.mock.d.ts +0 -3
- package/dist/cjs/types/components/drawers/drawer/drawer.provider.d.ts +0 -6
- package/dist/cjs/types/components/drawers/drawer/drawer.types.d.ts +0 -51
- package/dist/cjs/types/components/drawers/drawer/mini-drawer/index.d.ts +0 -1
- package/dist/cjs/types/components/drawers/drawer/mini-drawer/mini-drawer.d.ts +0 -1
- package/dist/cjs/types/components/drawers/drawer-collapsable-item/drawer-collapsable-item.d.ts +0 -26
- package/dist/cjs/types/components/drawers/drawer-collapsable-item/index.d.ts +0 -1
- package/dist/cjs/types/components/drawers/drawer-section/drawer-section.mock.d.ts +0 -2
- package/dist/cjs/types/components/inputs/enhanced-autocomplete/enhanced-autocomplete.d.ts +0 -10
- package/dist/cjs/types/components/inputs/enhanced-autocomplete/index.d.ts +0 -1
- package/dist/cjs/types/components/inputs/enhanced-select/enhanced-select.d.ts +0 -15
- package/dist/cjs/types/components/inputs/enhanced-select/index.d.ts +0 -1
- package/dist/cjs/types/components/inputs/enhanced-text-field/enhanced-text-field.d.ts +0 -7
- package/dist/cjs/types/components/inputs/enhanced-text-field/index.d.ts +0 -1
- package/dist/cjs/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +0 -7
- package/dist/cjs/types/layouts/app-bar-with-drawer-layout/index.d.ts +0 -1
- package/dist/esm/types/components/app-bars/app-bar/app-bar.d.ts +0 -2
- package/dist/esm/types/components/app-bars/app-bar/app-bar.types.d.ts +0 -14
- package/dist/esm/types/components/app-bars/app-bar/index.d.ts +0 -3
- package/dist/esm/types/components/app-bars/app-bar/mini-app-bar/index.d.ts +0 -1
- package/dist/esm/types/components/app-bars/app-bar/mini-app-bar/mini-app-bar.d.ts +0 -2
- package/dist/esm/types/components/app-bars/index.d.ts +0 -1
- package/dist/esm/types/components/drawers/drawer/drawer.mock.d.ts +0 -3
- package/dist/esm/types/components/drawers/drawer/drawer.provider.d.ts +0 -6
- package/dist/esm/types/components/drawers/drawer/drawer.types.d.ts +0 -51
- package/dist/esm/types/components/drawers/drawer/mini-drawer/index.d.ts +0 -1
- package/dist/esm/types/components/drawers/drawer/mini-drawer/mini-drawer.d.ts +0 -1
- package/dist/esm/types/components/drawers/drawer-collapsable-item/drawer-collapsable-item.d.ts +0 -26
- package/dist/esm/types/components/drawers/drawer-collapsable-item/index.d.ts +0 -1
- package/dist/esm/types/components/drawers/drawer-section/drawer-section.mock.d.ts +0 -2
- package/dist/esm/types/components/inputs/enhanced-autocomplete/enhanced-autocomplete.d.ts +0 -10
- package/dist/esm/types/components/inputs/enhanced-autocomplete/index.d.ts +0 -1
- package/dist/esm/types/components/inputs/enhanced-select/enhanced-select.d.ts +0 -15
- package/dist/esm/types/components/inputs/enhanced-select/index.d.ts +0 -1
- package/dist/esm/types/components/inputs/enhanced-text-field/enhanced-text-field.d.ts +0 -7
- package/dist/esm/types/components/inputs/enhanced-text-field/index.d.ts +0 -1
- package/dist/esm/types/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.d.ts +0 -7
- package/dist/esm/types/layouts/app-bar-with-drawer-layout/index.d.ts +0 -1
- package/src/components/app-bars/app-bar/app-bar.stories.tsx +0 -55
- package/src/components/app-bars/app-bar/app-bar.test.tsx +0 -142
- package/src/components/app-bars/app-bar/app-bar.tsx +0 -150
- package/src/components/app-bars/app-bar/app-bar.types.ts +0 -17
- package/src/components/app-bars/app-bar/index.ts +0 -3
- package/src/components/app-bars/app-bar/mini-app-bar/index.ts +0 -1
- package/src/components/app-bars/app-bar/mini-app-bar/mini-app-bar.tsx +0 -31
- package/src/components/app-bars/app-bars.stories.mdx +0 -10
- package/src/components/app-bars/index.ts +0 -1
- package/src/components/drawers/drawer/__snapshots__/drawer.test.tsx.snap +0 -20
- package/src/components/drawers/drawer/drawer.mock.tsx +0 -127
- package/src/components/drawers/drawer/drawer.provider.tsx +0 -23
- package/src/components/drawers/drawer/drawer.types.ts +0 -62
- package/src/components/drawers/drawer/mini-drawer/index.ts +0 -1
- package/src/components/drawers/drawer/mini-drawer/mini-drawer.stories.tsx +0 -34
- package/src/components/drawers/drawer/mini-drawer/mini-drawer.tsx +0 -66
- package/src/components/drawers/drawer-collapsable-item/drawer-collapsable-item.test.tsx +0 -62
- package/src/components/drawers/drawer-collapsable-item/drawer-collapsable-item.tsx +0 -76
- package/src/components/drawers/drawer-collapsable-item/index.ts +0 -1
- package/src/components/drawers/drawer-section/drawer-section.mock.tsx +0 -39
- package/src/components/inputs/enhanced-autocomplete/enhanced-autocomplete.stories.tsx +0 -109
- package/src/components/inputs/enhanced-autocomplete/index.ts +0 -1
- package/src/components/inputs/enhanced-select/enhanced-select.stories.tsx +0 -99
- package/src/components/inputs/enhanced-select/index.ts +0 -1
- package/src/components/inputs/enhanced-text-field/enhanced-text-field.stories.tsx +0 -120
- package/src/components/inputs/enhanced-text-field/index.ts +0 -1
- package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.stories.tsx +0 -27
- package/src/layouts/app-bar-with-drawer-layout/app-bar-with-drawer-layout.tsx +0 -37
- package/src/layouts/app-bar-with-drawer-layout/index.ts +0 -1
- /package/dist/cjs/types/components/drawers/{drawer/drawer.mixins.d.ts → drawer-provider/drawer-mixins.d.ts} +0 -0
- /package/dist/esm/types/components/drawers/{drawer/drawer.mixins.d.ts → drawer-provider/drawer-mixins.d.ts} +0 -0
- /package/src/components/drawers/{drawer/drawer.mixins.ts → drawer-provider/drawer-mixins.ts} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { grey } from "@mui/material/colors";
|
|
2
|
-
import {
|
|
2
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
3
|
import React from "react";
|
|
4
4
|
import { withContainer, withLocalizationProvider } from "~/storybook";
|
|
5
5
|
import { SearchInput } from "./search-input";
|
|
@@ -14,44 +14,48 @@ export default {
|
|
|
14
14
|
parameters: {
|
|
15
15
|
layout: "centered",
|
|
16
16
|
},
|
|
17
|
-
}
|
|
17
|
+
} satisfies Meta<typeof SearchInput>;
|
|
18
|
+
type Story = StoryObj<typeof SearchInput>;
|
|
18
19
|
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
fullWidth: true,
|
|
20
|
+
export const Label: Story = {
|
|
21
|
+
args: {
|
|
22
|
+
label: "Lorem ipsum",
|
|
23
|
+
fullWidth: true,
|
|
24
|
+
},
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
export const Placeholder =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
export const Placeholder: Story = {
|
|
28
|
+
args: {
|
|
29
|
+
placeholder: "Lorem ipsum",
|
|
30
|
+
fullWidth: true,
|
|
31
|
+
},
|
|
31
32
|
};
|
|
32
33
|
|
|
33
|
-
export const HelperText =
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
export const HelperText: Story = {
|
|
35
|
+
args: {
|
|
36
|
+
placeholder: "Lorem ipsum",
|
|
37
|
+
fullWidth: true,
|
|
38
|
+
helperText: "this is a helper text",
|
|
39
|
+
},
|
|
38
40
|
};
|
|
39
41
|
|
|
40
|
-
export const Small =
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
export const Small: Story = {
|
|
43
|
+
args: {
|
|
44
|
+
placeholder: "Lorem ipsum",
|
|
45
|
+
fullWidth: true,
|
|
46
|
+
size: "small",
|
|
47
|
+
},
|
|
45
48
|
};
|
|
46
49
|
|
|
47
|
-
export const WithFilters =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
50
|
+
export const WithFilters: Story = {
|
|
51
|
+
args: {
|
|
52
|
+
placeholder: "Lorem ipsum",
|
|
53
|
+
fullWidth: true,
|
|
54
|
+
filters: [
|
|
55
|
+
{ id: "subject", type: "text", label: "Subject" },
|
|
56
|
+
{ id: "amount", type: "number", label: "Amount" },
|
|
57
|
+
{ id: "hasSomething", type: "boolean", label: "Has something" },
|
|
58
|
+
{ id: "createdBefore", type: "datetime", label: "Created before" },
|
|
59
|
+
],
|
|
60
|
+
},
|
|
57
61
|
};
|
|
@@ -4,6 +4,7 @@ import { SearchInput } from "./search-input";
|
|
|
4
4
|
import userEvent from "@testing-library/user-event";
|
|
5
5
|
import { pickDatetime, typeNumericInput } from "~/tests/actions";
|
|
6
6
|
import { assertCloseDate, AssertCloseDateUpTo } from "~/tests/assertions";
|
|
7
|
+
import { vi } from "vitest";
|
|
7
8
|
|
|
8
9
|
const datetimeFormat = "dd-MM-yyyy HH:mm:ss.SSS";
|
|
9
10
|
const createdBefore = new Date(2022, 2, 17, 12, 42);
|
|
@@ -26,7 +27,7 @@ describe("SearchInput", () => {
|
|
|
26
27
|
label = "search",
|
|
27
28
|
placeholder,
|
|
28
29
|
}: { label?: string; placeholder?: string } = {}) => {
|
|
29
|
-
const onSearch =
|
|
30
|
+
const onSearch = vi.fn();
|
|
30
31
|
render(
|
|
31
32
|
<SearchInput
|
|
32
33
|
label={label}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./select";
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { Box, MenuItem, useTheme } from "@mui/material";
|
|
2
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
|
+
import React, { ReactNode } from "react";
|
|
4
|
+
import { withContainer } from "../../../storybook";
|
|
5
|
+
import { Select, SelectProps, SelectSize } from "./select";
|
|
6
|
+
import { faker } from "@faker-js/faker";
|
|
7
|
+
|
|
8
|
+
const baseArgs = {
|
|
9
|
+
label: "Car model",
|
|
10
|
+
value: faker.vehicle.model(),
|
|
11
|
+
size: "medium" as SelectSize,
|
|
12
|
+
fetching: false,
|
|
13
|
+
loading: false,
|
|
14
|
+
fullWidth: true,
|
|
15
|
+
options: faker.definitions.vehicle?.model || [],
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
interface TemplateProps<T extends ReactNode> extends SelectProps<T> {
|
|
19
|
+
options: T[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
const DemoSelect = ({ options, ...rest }: TemplateProps<string>) => {
|
|
23
|
+
return (
|
|
24
|
+
<Select {...rest}>
|
|
25
|
+
{options.map((option) => (
|
|
26
|
+
<MenuItem key={option} value={option}>
|
|
27
|
+
{option}
|
|
28
|
+
</MenuItem>
|
|
29
|
+
))}
|
|
30
|
+
</Select>
|
|
31
|
+
);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export default {
|
|
35
|
+
title: "Components/Inputs/Select",
|
|
36
|
+
component: DemoSelect,
|
|
37
|
+
decorators: [withContainer({ width: 200 })],
|
|
38
|
+
parameters: {
|
|
39
|
+
layout: "centered",
|
|
40
|
+
},
|
|
41
|
+
} satisfies Meta<typeof DemoSelect>;
|
|
42
|
+
type Story = StoryObj<typeof DemoSelect>;
|
|
43
|
+
|
|
44
|
+
export const WithoutFullWidth: Story = {
|
|
45
|
+
args: {
|
|
46
|
+
...baseArgs,
|
|
47
|
+
fullWidth: false,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export const SelectLoaded: Story = {
|
|
52
|
+
args: {
|
|
53
|
+
...baseArgs,
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
export const Loading: Story = {
|
|
58
|
+
args: {
|
|
59
|
+
...baseArgs,
|
|
60
|
+
loading: true,
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export const Fetching: Story = {
|
|
65
|
+
args: {
|
|
66
|
+
...baseArgs,
|
|
67
|
+
fetching: true,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
export const SizeSmall: Story = {
|
|
72
|
+
args: {
|
|
73
|
+
...baseArgs,
|
|
74
|
+
size: "small",
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
type WithBackgroundProps = TemplateProps<string> & { bgcolor: "primary" | "secondary" };
|
|
79
|
+
|
|
80
|
+
export const WithBackground = {
|
|
81
|
+
render: ({ options, bgcolor: bgcolorProp, ...rest }: WithBackgroundProps) => {
|
|
82
|
+
const { palette } = useTheme();
|
|
83
|
+
const BackgroundColors: Record<"primary" | "secondary", string> = {
|
|
84
|
+
primary: palette.primary.main,
|
|
85
|
+
secondary: palette.secondary.main,
|
|
86
|
+
};
|
|
87
|
+
const bgcolor = BackgroundColors[bgcolorProp];
|
|
88
|
+
const selectColor = palette.getContrastText(bgcolor);
|
|
89
|
+
|
|
90
|
+
return (
|
|
91
|
+
<Box bgcolor={bgcolor} padding={3}>
|
|
92
|
+
<Select {...rest} color={selectColor}>
|
|
93
|
+
{options.map((option) => (
|
|
94
|
+
<MenuItem key={option} value={option}>
|
|
95
|
+
{option}
|
|
96
|
+
</MenuItem>
|
|
97
|
+
))}
|
|
98
|
+
</Select>
|
|
99
|
+
</Box>
|
|
100
|
+
);
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
args: {
|
|
104
|
+
bgcolor: "secondary",
|
|
105
|
+
...baseArgs,
|
|
106
|
+
},
|
|
107
|
+
};
|
package/src/components/inputs/{enhanced-select/enhanced-select.test.tsx → select/select.test.tsx}
RENAMED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { SelectLoaded } from "./select.stories";
|
|
3
3
|
import { render, screen } from "~/tests/testing-library";
|
|
4
4
|
import userEvent from "@testing-library/user-event";
|
|
5
|
+
import { Select } from "./select";
|
|
6
|
+
import { MenuItem } from "@mui/material";
|
|
5
7
|
|
|
6
|
-
describe("
|
|
8
|
+
describe("Select", () => {
|
|
7
9
|
const renderComponent = ({
|
|
8
|
-
label =
|
|
10
|
+
label = SelectLoaded.args?.label || "invalid",
|
|
9
11
|
loading = false,
|
|
10
12
|
fetching = false,
|
|
11
13
|
} = {}) => {
|
|
12
|
-
const options = (
|
|
13
|
-
const value =
|
|
14
|
+
const options = (SelectLoaded.args?.options as string[]) || [];
|
|
15
|
+
const value = SelectLoaded.args?.value as string;
|
|
14
16
|
|
|
15
17
|
render(
|
|
16
|
-
<
|
|
17
|
-
{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/>,
|
|
18
|
+
<Select value={value} label={label} loading={loading} fetching={fetching}>
|
|
19
|
+
{options.map((option) => (
|
|
20
|
+
<MenuItem key={option} value={option}>
|
|
21
|
+
{option}
|
|
22
|
+
</MenuItem>
|
|
23
|
+
))}
|
|
24
|
+
</Select>,
|
|
24
25
|
);
|
|
25
26
|
|
|
26
27
|
return {
|
|
@@ -5,32 +5,32 @@ import {
|
|
|
5
5
|
FormControl,
|
|
6
6
|
InputLabel,
|
|
7
7
|
LinearProgress,
|
|
8
|
-
Select,
|
|
8
|
+
Select as MuiSelect,
|
|
9
9
|
styled,
|
|
10
10
|
} from "@mui/material";
|
|
11
11
|
import { CenterContainer } from "../../containers/center-container";
|
|
12
12
|
import { SelectInputProps } from "@mui/material/Select/SelectInput";
|
|
13
13
|
|
|
14
|
-
export type
|
|
14
|
+
export type SelectSize = "small" | "medium";
|
|
15
15
|
|
|
16
|
-
export interface
|
|
16
|
+
export interface SelectProps<T> {
|
|
17
17
|
label: string;
|
|
18
18
|
value: T;
|
|
19
19
|
loading?: boolean;
|
|
20
20
|
fetching?: boolean;
|
|
21
|
-
size?:
|
|
21
|
+
size?: SelectSize;
|
|
22
22
|
color?: string;
|
|
23
23
|
fullWidth?: boolean;
|
|
24
24
|
children?: ReactNode;
|
|
25
25
|
onChange?: SelectInputProps<T>["onChange"];
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
const ProgressSize: Record<
|
|
28
|
+
const ProgressSize: Record<SelectSize, number> = {
|
|
29
29
|
small: 15,
|
|
30
30
|
medium: 20,
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
export const
|
|
33
|
+
export const Select = <T extends ReactNode>({
|
|
34
34
|
label,
|
|
35
35
|
value,
|
|
36
36
|
loading = false,
|
|
@@ -40,7 +40,7 @@ export const EnhancedSelect = <T extends ReactNode>({
|
|
|
40
40
|
color,
|
|
41
41
|
children,
|
|
42
42
|
onChange,
|
|
43
|
-
}:
|
|
43
|
+
}: SelectProps<T>) => {
|
|
44
44
|
const id = useId();
|
|
45
45
|
|
|
46
46
|
const renderValue = (value: T): ReactNode => {
|
|
@@ -91,7 +91,7 @@ export const EnhancedSelect = <T extends ReactNode>({
|
|
|
91
91
|
return (
|
|
92
92
|
<StyledFormControl fullWidth={fullWidth}>
|
|
93
93
|
<InputLabel id={id}>{label}</InputLabel>
|
|
94
|
-
<
|
|
94
|
+
<MuiSelect
|
|
95
95
|
labelId={id}
|
|
96
96
|
id={id}
|
|
97
97
|
value={value}
|
|
@@ -102,7 +102,7 @@ export const EnhancedSelect = <T extends ReactNode>({
|
|
|
102
102
|
renderValue={renderValue}
|
|
103
103
|
>
|
|
104
104
|
{children}
|
|
105
|
-
</
|
|
105
|
+
</MuiSelect>
|
|
106
106
|
</StyledFormControl>
|
|
107
107
|
);
|
|
108
108
|
};
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
2
2
|
import { SignIn } from "./sign-in";
|
|
3
|
-
import { createTemplate } from "../../../storybook";
|
|
4
3
|
|
|
5
4
|
export default {
|
|
6
5
|
title: "Components/Inputs/Sign In",
|
|
@@ -8,29 +7,31 @@ export default {
|
|
|
8
7
|
parameters: {
|
|
9
8
|
layout: "centered",
|
|
10
9
|
},
|
|
11
|
-
}
|
|
10
|
+
} satisfies Meta<typeof SignIn>;
|
|
11
|
+
type Story = StoryObj<typeof SignIn>;
|
|
12
12
|
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
subtitle: "Enter your details below",
|
|
13
|
+
export const Default: Story = {
|
|
14
|
+
args: {
|
|
15
|
+
title: "Sign in into Garmin Workouts",
|
|
16
|
+
subtitle: "Enter your details below",
|
|
17
|
+
},
|
|
19
18
|
};
|
|
20
19
|
|
|
21
|
-
export const Error =
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
export const Error: Story = {
|
|
21
|
+
args: {
|
|
22
|
+
title: "Sign in into Garmin Workouts",
|
|
23
|
+
subtitle: "Enter your details below",
|
|
24
|
+
error: {
|
|
25
|
+
name: "InvalidCredentials",
|
|
26
|
+
message: "Invalid user credentials",
|
|
27
|
+
},
|
|
28
28
|
},
|
|
29
29
|
};
|
|
30
30
|
|
|
31
|
-
export const Loading =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
export const Loading: Story = {
|
|
32
|
+
args: {
|
|
33
|
+
title: "Sign in into Garmin Workouts",
|
|
34
|
+
subtitle: "Enter your details below",
|
|
35
|
+
loading: true,
|
|
36
|
+
},
|
|
36
37
|
};
|
|
@@ -3,6 +3,7 @@ import { SignIn } from "./sign-in";
|
|
|
3
3
|
import { render, screen } from "~/tests/testing-library";
|
|
4
4
|
import userEvent from "@testing-library/user-event";
|
|
5
5
|
import { expectProgressIndicator } from "~/tests/assertions";
|
|
6
|
+
import { vi } from "vitest";
|
|
6
7
|
|
|
7
8
|
async function submitSignIn(email: string | null, password: string | null) {
|
|
8
9
|
email && (await userEvent.type(screen.getByRole("input", { name: /email/i }), email));
|
|
@@ -22,7 +23,7 @@ describe("SignIn", () => {
|
|
|
22
23
|
});
|
|
23
24
|
|
|
24
25
|
it("if I enter an email and a password and I submit onSubmitSignIn is called", async () => {
|
|
25
|
-
const onSubmitSignIn =
|
|
26
|
+
const onSubmitSignIn = vi.fn();
|
|
26
27
|
render(<SignIn title="Lorem ipsum" subtitle="Sit amet" onSubmitSignIn={onSubmitSignIn} />);
|
|
27
28
|
|
|
28
29
|
await submitSignIn("test@example.com", "password1");
|
|
@@ -32,7 +33,7 @@ describe("SignIn", () => {
|
|
|
32
33
|
});
|
|
33
34
|
|
|
34
35
|
it("if I don't enter an email and I submit an error is shown and onSubmitSignIn is not called", async () => {
|
|
35
|
-
const onSubmitSignIn =
|
|
36
|
+
const onSubmitSignIn = vi.fn();
|
|
36
37
|
render(<SignIn title="Lorem ipsum" subtitle="Sit amet" onSubmitSignIn={onSubmitSignIn} />);
|
|
37
38
|
|
|
38
39
|
await submitSignIn(null, "password1");
|
|
@@ -42,7 +43,7 @@ describe("SignIn", () => {
|
|
|
42
43
|
});
|
|
43
44
|
|
|
44
45
|
it("if I don't enter a valid email and I submit onSubmitSignIn is not called", async () => {
|
|
45
|
-
const onSubmitSignIn =
|
|
46
|
+
const onSubmitSignIn = vi.fn();
|
|
46
47
|
render(<SignIn title="Lorem ipsum" subtitle="Sit amet" onSubmitSignIn={onSubmitSignIn} />);
|
|
47
48
|
|
|
48
49
|
await submitSignIn("invalid.com", "password1");
|
|
@@ -51,7 +52,7 @@ describe("SignIn", () => {
|
|
|
51
52
|
});
|
|
52
53
|
|
|
53
54
|
it("if I don't enter an password and I submit an error is shown and onSubmitSignIn is not called", async () => {
|
|
54
|
-
const onSubmitSignIn =
|
|
55
|
+
const onSubmitSignIn = vi.fn();
|
|
55
56
|
render(<SignIn title="Lorem ipsum" subtitle="Sit amet" onSubmitSignIn={onSubmitSignIn} />);
|
|
56
57
|
|
|
57
58
|
await submitSignIn("test@example.com", null);
|
|
@@ -61,7 +62,7 @@ describe("SignIn", () => {
|
|
|
61
62
|
});
|
|
62
63
|
|
|
63
64
|
it("if I have an error and I enter the fields the errors are removed when I submit", async () => {
|
|
64
|
-
const onSubmitSignIn =
|
|
65
|
+
const onSubmitSignIn = vi.fn();
|
|
65
66
|
render(<SignIn title="Lorem ipsum" subtitle="Sit amet" onSubmitSignIn={onSubmitSignIn} />);
|
|
66
67
|
|
|
67
68
|
await userEvent.click(screen.getByRole("button", { name: /sign in/i }));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./text-field";
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { withContainer } from "../../../storybook";
|
|
3
|
+
import { TextField } from "./text-field";
|
|
4
|
+
import { faker } from "@faker-js/faker";
|
|
5
|
+
import { Box, IconButton, useTheme } from "@mui/material";
|
|
6
|
+
import ClearIcon from "@mui/icons-material/Clear";
|
|
7
|
+
import React from "react";
|
|
8
|
+
|
|
9
|
+
export default {
|
|
10
|
+
title: "Components/Inputs/TextField",
|
|
11
|
+
component: TextField,
|
|
12
|
+
decorators: [withContainer({ width: 200 })],
|
|
13
|
+
parameters: {
|
|
14
|
+
layout: "centered",
|
|
15
|
+
},
|
|
16
|
+
} satisfies Meta<typeof TextField>;
|
|
17
|
+
type Story = StoryObj<typeof TextField>;
|
|
18
|
+
|
|
19
|
+
const options: string[] = faker.definitions.vehicle?.model || [];
|
|
20
|
+
|
|
21
|
+
export const Default: Story = {
|
|
22
|
+
args: {
|
|
23
|
+
label: "Car model",
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export const HelperText: Story = {
|
|
28
|
+
args: {
|
|
29
|
+
...Default.args,
|
|
30
|
+
helperText: "This is a helper text",
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const Loading: Story = {
|
|
35
|
+
args: {
|
|
36
|
+
...Default.args,
|
|
37
|
+
loading: true,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export const LoadingWithValue: Story = {
|
|
42
|
+
args: {
|
|
43
|
+
...Default.args,
|
|
44
|
+
loading: true,
|
|
45
|
+
value: options[0],
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
export const Fetching: Story = {
|
|
50
|
+
args: {
|
|
51
|
+
...Default.args,
|
|
52
|
+
fetching: true,
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export const FetchingWithEndAdornment: Story = {
|
|
57
|
+
args: {
|
|
58
|
+
...Default.args,
|
|
59
|
+
fetching: true,
|
|
60
|
+
InputProps: {
|
|
61
|
+
endAdornment: (
|
|
62
|
+
<IconButton>
|
|
63
|
+
<ClearIcon />
|
|
64
|
+
</IconButton>
|
|
65
|
+
),
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export const SizeSmall: Story = {
|
|
71
|
+
args: {
|
|
72
|
+
...Default.args,
|
|
73
|
+
size: "small",
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
export const SizeSmallFetching: Story = {
|
|
78
|
+
args: {
|
|
79
|
+
...Default.args,
|
|
80
|
+
size: "small",
|
|
81
|
+
fetching: true,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export const Disabled: Story = {
|
|
86
|
+
args: {
|
|
87
|
+
...Default.args,
|
|
88
|
+
disabled: true,
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const SizeSmallLoading: Story = {
|
|
93
|
+
args: {
|
|
94
|
+
...Default.args,
|
|
95
|
+
size: "small",
|
|
96
|
+
loading: true,
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
type WithBackgroundProps = {
|
|
101
|
+
bgcolor: "primary" | "secondary";
|
|
102
|
+
fetching?: boolean;
|
|
103
|
+
loading?: boolean;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
export const WithBackground = {
|
|
107
|
+
render: ({ bgcolor: bgcolorProp, fetching, loading }: WithBackgroundProps) => {
|
|
108
|
+
const { palette } = useTheme();
|
|
109
|
+
const BackgroundColors: Record<"primary" | "secondary", string> = {
|
|
110
|
+
primary: palette.primary.main,
|
|
111
|
+
secondary: palette.secondary.main,
|
|
112
|
+
};
|
|
113
|
+
const bgcolor = BackgroundColors[bgcolorProp];
|
|
114
|
+
const color = palette.getContrastText(bgcolor);
|
|
115
|
+
|
|
116
|
+
return (
|
|
117
|
+
<Box bgcolor={bgcolor} padding={3}>
|
|
118
|
+
<TextField label="Car model" hexColor={color} fetching={fetching} loading={loading} />
|
|
119
|
+
</Box>
|
|
120
|
+
);
|
|
121
|
+
},
|
|
122
|
+
|
|
123
|
+
args: {
|
|
124
|
+
bgcolor: "secondary",
|
|
125
|
+
loading: true,
|
|
126
|
+
fetching: true,
|
|
127
|
+
},
|
|
128
|
+
};
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { render, screen } from "~/tests/testing-library";
|
|
2
|
-
import {
|
|
2
|
+
import { TextField } from "./text-field";
|
|
3
3
|
import { faker } from "@faker-js/faker";
|
|
4
4
|
import React from "react";
|
|
5
5
|
import userEvent from "@testing-library/user-event";
|
|
6
6
|
import { expectProgressIndicator } from "~/tests/assertions";
|
|
7
|
+
import { vi } from "vitest";
|
|
7
8
|
|
|
8
9
|
const options: string[] = faker.definitions.vehicle?.model || [];
|
|
9
10
|
|
|
10
|
-
describe("
|
|
11
|
+
describe("TextField", () => {
|
|
11
12
|
const renderComponent = ({
|
|
12
13
|
value,
|
|
13
14
|
loading,
|
|
14
15
|
fetching,
|
|
15
16
|
}: { value?: string; loading?: boolean; fetching?: boolean } = {}) => {
|
|
16
|
-
const onChange =
|
|
17
|
+
const onChange = vi.fn();
|
|
17
18
|
render(
|
|
18
|
-
<
|
|
19
|
+
<TextField
|
|
19
20
|
label="Car model"
|
|
20
21
|
loading={loading}
|
|
21
22
|
fetching={fetching}
|
|
@@ -12,18 +12,18 @@ import {
|
|
|
12
12
|
linearProgressClasses,
|
|
13
13
|
OutlinedInput,
|
|
14
14
|
outlinedInputClasses,
|
|
15
|
-
TextFieldProps,
|
|
15
|
+
TextFieldProps as MuiTextFieldProps,
|
|
16
16
|
} from "@mui/material";
|
|
17
17
|
import { unstable_useId as useId } from "@mui/utils";
|
|
18
18
|
import React from "react";
|
|
19
19
|
|
|
20
|
-
export type
|
|
20
|
+
export type TextFieldProps = MuiTextFieldProps & {
|
|
21
21
|
fetching?: boolean;
|
|
22
22
|
loading?: boolean;
|
|
23
23
|
hexColor?: string;
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
export const
|
|
26
|
+
export const TextField = ({
|
|
27
27
|
id: overrideId,
|
|
28
28
|
label,
|
|
29
29
|
InputLabelProps,
|
|
@@ -36,7 +36,7 @@ export const EnhancedTextField = ({
|
|
|
36
36
|
fullWidth,
|
|
37
37
|
sx,
|
|
38
38
|
...rest
|
|
39
|
-
}:
|
|
39
|
+
}: TextFieldProps) => {
|
|
40
40
|
const id = useId(overrideId);
|
|
41
41
|
const helperTextId = helperText && id ? `${id}-helper-text` : undefined;
|
|
42
42
|
const inputLabelId = label && id ? `${id}-label` : undefined;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
3
|
import { TabCard } from "./tab-card";
|
|
4
|
-
import { createTemplate } from "../../../../storybook";
|
|
5
4
|
import { DummyTabs, TabCardDummy, TabCardDummyProps } from "./tab-card.dummy";
|
|
6
5
|
|
|
7
6
|
export default {
|
|
8
7
|
title: "Components/Navigation/Tab card",
|
|
9
|
-
component:
|
|
8
|
+
component: TabCardDummy,
|
|
10
9
|
parameters: {
|
|
11
10
|
layout: "fullscreen",
|
|
12
11
|
},
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
render: (props: TabCardDummyProps) => {
|
|
13
|
+
return <TabCardDummy {...props} />;
|
|
14
|
+
},
|
|
15
|
+
} satisfies Meta<typeof TabCardDummy>;
|
|
16
|
+
type Story = StoryObj<typeof TabCardDummy>;
|
|
18
17
|
|
|
19
|
-
export const Default =
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
export const Default: Story = {
|
|
19
|
+
args: {
|
|
20
|
+
tabs: DummyTabs,
|
|
21
|
+
},
|
|
22
22
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createTemplate } from "../../../storybook";
|
|
1
|
+
import { Meta, StoryObj } from "@storybook/react";
|
|
3
2
|
import { ContentPlaceholder } from "./content-placeholder";
|
|
4
3
|
|
|
5
4
|
export default {
|
|
@@ -8,8 +7,7 @@ export default {
|
|
|
8
7
|
parameters: {
|
|
9
8
|
layout: "fullscreen",
|
|
10
9
|
},
|
|
11
|
-
}
|
|
10
|
+
} satisfies Meta<typeof ContentPlaceholder>;
|
|
11
|
+
type Story = StoryObj<typeof ContentPlaceholder>;
|
|
12
12
|
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
export const Default = Template.bind({});
|
|
13
|
+
export const Default: Story = {};
|