@edvisor/product-language 0.10.0 → 0.10.2
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/.babelrc +12 -0
- package/.eslintrc.json +147 -0
- package/.release-it.json +17 -0
- package/.storybook/main.js +57 -0
- package/.storybook/manager.js +7 -0
- package/.storybook/preview.js +15 -0
- package/.storybook/tsconfig.json +30 -0
- package/jest.config.ts +15 -0
- package/jest.setup.ts +2 -0
- package/package.json +2 -27
- package/project.json +98 -0
- package/src/README.md +61 -0
- package/src/assets/svg/example_icon.svg +3 -0
- package/src/assets/svg/example_icon_white.svg +3 -0
- package/src/assets/svg/spinner.svg +3 -0
- package/src/assets/svg/spinner_white.svg +3 -0
- package/src/helpers/index.ts +4 -0
- package/src/helpers/playground.ts +26 -0
- package/src/helpers/talesOf.tsx +42 -0
- package/src/index.ts +2 -0
- package/src/lib/components/README.md +49 -0
- package/src/lib/components/alert-banner/alert-banner.test.tsx +93 -0
- package/src/lib/components/alert-banner/alert-banner.tsx +117 -0
- package/src/lib/components/alert-banner/alert-level-flags.ts +101 -0
- package/src/lib/components/alert-banner/index.ts +1 -0
- package/src/lib/components/alert-banner/storybook/alert-banner.stories.mdx +67 -0
- package/src/lib/components/alert-banner/storybook/components.tsx +124 -0
- package/src/lib/components/badge/badge-type-flags.ts +72 -0
- package/src/lib/components/badge/badge.test.tsx +29 -0
- package/src/lib/components/badge/badge.tsx +22 -0
- package/src/lib/components/badge/index.ts +1 -0
- package/src/lib/components/badge/stories/badge.stories.mdx +44 -0
- package/src/lib/components/badge/stories/components.tsx +49 -0
- package/{lib/components/card/atoms/card-frame.d.ts → src/lib/components/card/atoms/card-frame.tsx} +16 -7
- package/src/lib/components/card/atoms/index.ts +1 -0
- package/src/lib/components/card/card.test.tsx +162 -0
- package/src/lib/components/card/card.tsx +78 -0
- package/src/lib/components/card/components/card-alert-banner-slot.tsx +16 -0
- package/src/lib/components/card/components/card-controls-slot.tsx +19 -0
- package/src/lib/components/card/components/card-section-slot.tsx +51 -0
- package/src/lib/components/card/components/index.ts +3 -0
- package/src/lib/components/card/index.ts +3 -0
- package/src/lib/components/card/molecules/index.ts +1 -0
- package/src/lib/components/card/molecules/left-right-card.test.tsx +89 -0
- package/src/lib/components/card/molecules/left-right-card.tsx +63 -0
- package/src/lib/components/card/storybook/card.stories.mdx +100 -0
- package/src/lib/components/card/storybook/components.tsx +227 -0
- package/src/lib/components/checkbox/checkbox.test.tsx +39 -0
- package/src/lib/components/checkbox/checkbox.tsx +70 -0
- package/src/lib/components/checkbox/helpers.tsx +98 -0
- package/src/lib/components/checkbox/index.tsx +1 -0
- package/src/lib/components/checkbox/stories/checkbox.stories.mdx +57 -0
- package/src/lib/components/checkbox/stories/components.tsx +84 -0
- package/src/lib/components/date-picker/components/custom-calendar.tsx +193 -0
- package/src/lib/components/date-picker/components/index.ts +1 -0
- package/src/lib/components/date-picker/data-picker.test.tsx +220 -0
- package/src/lib/components/date-picker/date-picker.tsx +10 -0
- package/src/lib/components/date-picker/helpers/date-picker-factory.tsx +210 -0
- package/src/lib/components/date-picker/index.ts +1 -0
- package/src/lib/components/date-picker/storybook/components.tsx +259 -0
- package/src/lib/components/date-picker/storybook/date-picker.stories.mdx +133 -0
- package/src/lib/components/divider/divider-type-flags.tsx +37 -0
- package/src/lib/components/divider/divider.test.tsx +34 -0
- package/src/lib/components/divider/divider.tsx +37 -0
- package/src/lib/components/divider/index.tsx +1 -0
- package/src/lib/components/divider/stories/components.tsx +13 -0
- package/src/lib/components/divider/stories/divider.stories.mdx +44 -0
- package/src/lib/components/flag/flag-size-flags.tsx +55 -0
- package/src/lib/components/flag/flag.list.tsx +788 -0
- package/src/lib/components/flag/flag.test.tsx +65 -0
- package/src/lib/components/flag/flag.tsx +97 -0
- package/src/lib/components/flag/index.tsx +1 -0
- package/src/lib/components/flag/stories/components.tsx +403 -0
- package/src/lib/components/flag/stories/flag.stories.mdx +48 -0
- package/src/lib/components/flag/stories/playGround-select.tsx +145 -0
- package/src/lib/components/icon/icon-list.tsx +135 -0
- package/src/lib/components/icon/icon.test.tsx +47 -0
- package/src/lib/components/icon/icon.tsx +181 -0
- package/src/lib/components/icon/index.tsx +1 -0
- package/src/lib/components/icon/stories/components.tsx +282 -0
- package/src/lib/components/icon/stories/icon.stories.mdx +65 -0
- package/src/lib/components/index.ts +26 -0
- package/src/lib/components/input-field/components/index.ts +2 -0
- package/src/lib/components/input-field/components/labeled-input.tsx +57 -0
- package/src/lib/components/input-field/components/stepper.tsx +64 -0
- package/src/lib/components/input-field/index.ts +6 -0
- package/src/lib/components/input-field/input-field.test.tsx +107 -0
- package/src/lib/components/input-field/input-field.tsx +154 -0
- package/src/lib/components/input-field/input-number.tsx +41 -0
- package/src/lib/components/input-field/input-text.tsx +30 -0
- package/src/lib/components/input-field/storybook/components.tsx +367 -0
- package/src/lib/components/input-field/storybook/input-field.stories.mdx +120 -0
- package/src/lib/components/layout/flex.tsx +22 -0
- package/src/lib/components/layout/grid-layout.tsx +40 -0
- package/src/lib/components/layout/index.ts +3 -0
- package/src/lib/components/layout/left-right-layout.tsx +67 -0
- package/src/lib/components/link/index.ts +1 -0
- package/src/lib/components/link/link.test.tsx +29 -0
- package/src/lib/components/link/link.tsx +56 -0
- package/src/lib/components/link/storybook/link.stories.mdx +52 -0
- package/src/lib/components/modal/index.ts +3 -0
- package/src/lib/components/modal/modal-base.tsx +129 -0
- package/src/lib/components/modal/modal-destructive.tsx +70 -0
- package/src/lib/components/modal/modal.test.tsx +138 -0
- package/src/lib/components/modal/modal.tsx +114 -0
- package/src/lib/components/modal/storybook/components.tsx +105 -0
- package/src/lib/components/modal/storybook/modal-destructive.stories.mdx +31 -0
- package/src/lib/components/modal/storybook/modal.stories.mdx +50 -0
- package/src/lib/components/molecules/avatar/avatar-size-flags.tsx +55 -0
- package/src/lib/components/molecules/avatar/avatar.test.tsx +114 -0
- package/src/lib/components/molecules/avatar/avatar.tsx +80 -0
- package/src/lib/components/molecules/avatar/index.tsx +1 -0
- package/src/lib/components/molecules/avatar/stories/avatar.stories.mdx +52 -0
- package/src/lib/components/molecules/avatar/stories/components.tsx +36 -0
- package/src/lib/components/molecules/button/button-flags.tsx +340 -0
- package/src/lib/components/molecules/button/button.test.tsx +77 -0
- package/src/lib/components/molecules/button/button.tsx +212 -0
- package/src/lib/components/molecules/button/index.tsx +1 -0
- package/src/lib/components/molecules/button/stories/button.stories.mdx +105 -0
- package/src/lib/components/molecules/button/stories/components.tsx +90 -0
- package/src/lib/components/molecules/index.ts +3 -0
- package/src/lib/components/molecules/input-checkbox/index.tsx +1 -0
- package/src/lib/components/molecules/input-checkbox/input-checkbox.test.tsx +34 -0
- package/src/lib/components/molecules/input-checkbox/input-checkbox.tsx +50 -0
- package/src/lib/components/molecules/input-checkbox/stories/components.tsx +53 -0
- package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +49 -0
- package/src/lib/components/organisms/choice-list/choice-list.test.tsx +36 -0
- package/src/lib/components/organisms/choice-list/choice-list.tsx +72 -0
- package/src/lib/components/organisms/choice-list/index.tsx +1 -0
- package/src/lib/components/organisms/choice-list/stories/choice-list.stories.mdx +57 -0
- package/src/lib/components/organisms/choice-list/stories/components.tsx +45 -0
- package/src/lib/components/organisms/index.ts +2 -0
- package/src/lib/components/organisms/multi-choice-list/index.tsx +1 -0
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.test.tsx +33 -0
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.tsx +53 -0
- package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +124 -0
- package/src/lib/components/organisms/multi-choice-list/stories/multi-choice-list.stories.mdx +99 -0
- package/src/lib/components/progress-bar/index.ts +1 -0
- package/src/lib/components/progress-bar/progress-bar-size-flags.tsx +37 -0
- package/src/lib/components/progress-bar/progress-bar.test.tsx +66 -0
- package/src/lib/components/progress-bar/progress-bar.tsx +42 -0
- package/src/lib/components/progress-bar/storybook/components.tsx +62 -0
- package/src/lib/components/progress-bar/storybook/progress-bar.stories.mdx +43 -0
- package/{lib/components/spinner/index.d.ts → src/lib/components/radio-button/index.tsx} +1 -1
- package/src/lib/components/radio-button/radio-button.tsx +135 -0
- package/src/lib/components/radio-button/radio.test.tsx +59 -0
- package/src/lib/components/radio-button/stories/components.tsx +36 -0
- package/src/lib/components/radio-button/stories/radio-button.stories.mdx +44 -0
- package/src/lib/components/range-slider/components/bar-chart.tsx +50 -0
- package/src/lib/components/range-slider/components/handle.tsx +58 -0
- package/src/lib/components/range-slider/components/rail.tsx +44 -0
- package/src/lib/components/range-slider/components/slider-component.tsx +98 -0
- package/src/lib/components/range-slider/components/slider-inputs.tsx +150 -0
- package/src/lib/components/range-slider/components/tick.tsx +51 -0
- package/src/lib/components/range-slider/components/track.tsx +67 -0
- package/src/lib/components/range-slider/index.tsx +2 -0
- package/src/lib/components/range-slider/range-slider.test.tsx +185 -0
- package/src/lib/components/range-slider/range-slider.tsx +132 -0
- package/src/lib/components/range-slider/slider.test.tsx +89 -0
- package/src/lib/components/range-slider/slider.tsx +80 -0
- package/src/lib/components/range-slider/stories/components.tsx +179 -0
- package/src/lib/components/range-slider/stories/range-slider.stories.mdx +84 -0
- package/src/lib/components/range-slider/types.ts +18 -0
- package/src/lib/components/select/components/menu-container.tsx +69 -0
- package/src/lib/components/select/components/menu-list.tsx +195 -0
- package/src/lib/components/select/components/menu-row.tsx +43 -0
- package/src/lib/components/select/components/menu.tsx +151 -0
- package/src/lib/components/select/components/option.tsx +91 -0
- package/src/lib/components/select/components/select-label.tsx +10 -0
- package/src/lib/components/select/components/value-component-multi.tsx +40 -0
- package/src/lib/components/select/components/value-component-single.tsx +27 -0
- package/src/lib/components/select/components/value.tsx +370 -0
- package/src/lib/components/select/index.tsx +3 -0
- package/src/lib/components/select/select.test.tsx +148 -0
- package/src/lib/components/select/select.tsx +337 -0
- package/src/lib/components/select/storybook/components.tsx +999 -0
- package/src/lib/components/select/storybook/radio-group.tsx +157 -0
- package/src/lib/components/select/storybook/select.stories.mdx +172 -0
- package/src/lib/components/select/types.ts +149 -0
- package/src/lib/components/select/utils.ts +101 -0
- package/src/lib/components/spinner/index.tsx +1 -0
- package/src/lib/components/spinner/spinner-size-flags.tsx +39 -0
- package/src/lib/components/spinner/spinner.test.tsx +31 -0
- package/src/lib/components/spinner/spinner.tsx +54 -0
- package/src/lib/components/spinner/stories/components.tsx +39 -0
- package/src/lib/components/spinner/stories/spinner.stories.mdx +35 -0
- package/src/lib/components/tabs/components/index.ts +1 -0
- package/src/lib/components/tabs/components/tab.tsx +85 -0
- package/src/lib/components/tabs/index.tsx +1 -0
- package/src/lib/components/tabs/storybook/components.tsx +317 -0
- package/src/lib/components/tabs/storybook/tabs.stories.mdx +105 -0
- package/src/lib/components/tabs/tabs.test.tsx +86 -0
- package/src/lib/components/tabs/tabs.tsx +115 -0
- package/src/lib/components/tag/components/close-button.tsx +85 -0
- package/src/lib/components/tag/components/index.ts +2 -0
- package/src/lib/components/tag/components/tag-label.tsx +45 -0
- package/src/lib/components/tag/index.tsx +1 -0
- package/src/lib/components/tag/stories/components.tsx +86 -0
- package/src/lib/components/tag/stories/tag.stories.mdx +42 -0
- package/src/lib/components/tag/tag.test.tsx +36 -0
- package/src/lib/components/tag/tag.tsx +33 -0
- package/src/lib/components/thumbnail/index.tsx +1 -0
- package/src/lib/components/thumbnail/stories/thumbnail.stories.mdx +44 -0
- package/src/lib/components/thumbnail/thumbnail-size-flags.tsx +41 -0
- package/src/lib/components/thumbnail/thumbnail.test.tsx +51 -0
- package/src/lib/components/thumbnail/thumbnail.tsx +44 -0
- package/src/lib/components/tooltip/index.tsx +1 -0
- package/src/lib/components/tooltip/stories/components.tsx +224 -0
- package/src/lib/components/tooltip/stories/tooltip.stories.mdx +63 -0
- package/src/lib/components/tooltip/tooltip.test.tsx +22 -0
- package/src/lib/components/tooltip/tooltip.tsx +179 -0
- package/src/lib/components/tree-view/components/tree-node.tsx +203 -0
- package/src/lib/components/tree-view/helper.tsx +171 -0
- package/src/lib/components/tree-view/index.ts +2 -0
- package/src/lib/components/tree-view/stories/components.tsx +640 -0
- package/src/lib/components/tree-view/stories/tree-view.stories.mdx +127 -0
- package/src/lib/components/tree-view/tree-view.test.tsx +146 -0
- package/src/lib/components/tree-view/tree-view.tsx +168 -0
- package/src/lib/components/tree-view/types.tsx +70 -0
- package/src/lib/components/typography/index.ts +1 -0
- package/src/lib/components/typography/storybook/components.tsx +288 -0
- package/src/lib/components/typography/storybook/typography.stories.mdx +90 -0
- package/src/lib/components/typography/typography.test.tsx +97 -0
- package/src/lib/components/typography/typography.tsx +99 -0
- package/src/lib/foundations/color-system/base-palette/base-palette.stories.tsx +123 -0
- package/src/lib/foundations/color-system/base-palette/base-palette.ts +93 -0
- package/src/lib/foundations/color-system/base-palette/index.ts +1 -0
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.mdx +85 -0
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.stories.tsx +231 -0
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.ts +160 -0
- package/src/lib/foundations/color-system/color-guidelines/index.ts +1 -0
- package/src/lib/foundations/color-system/components/color-sample.tsx +99 -0
- package/src/lib/foundations/color-system/components/index.ts +1 -0
- package/src/lib/foundations/color-system/index.ts +1 -0
- package/src/lib/foundations/index.ts +4 -0
- package/src/lib/foundations/shadows/components.tsx +59 -0
- package/src/lib/foundations/shadows/index.ts +1 -0
- package/src/lib/foundations/shadows/shadows.stories.mdx +71 -0
- package/src/lib/foundations/shadows/shadows.tsx +47 -0
- package/src/lib/foundations/spacing/index.ts +1 -0
- package/src/lib/foundations/spacing/spacing-guidelines.ts +37 -0
- package/src/lib/foundations/spacing/spacing.stories.mdx +51 -0
- package/src/lib/foundations/spacing/spacing.ts +18 -0
- package/src/lib/foundations/typography/constants.ts +25 -0
- package/src/lib/foundations/typography/fonts.ts +205 -0
- package/src/lib/foundations/typography/index.tsx +1 -0
- package/src/lib/foundations/typography/text-aspect-flags.ts +61 -0
- package/src/lib/foundations/typography/typography.tsx +102 -0
- package/src/lib/helpers/generic-types.ts +44 -0
- package/src/lib/helpers/index.ts +8 -0
- package/src/lib/helpers/isReactElementOfType.test.tsx +108 -0
- package/src/lib/helpers/isReactElementOfType.ts +42 -0
- package/src/lib/helpers/nothing.tsx +22 -0
- package/{lib/helpers/numbers.d.ts → src/lib/helpers/numbers.ts} +67 -50
- package/src/lib/helpers/safe-navigation.ts +57 -0
- package/src/lib/helpers/slots.tsx +126 -0
- package/src/lib/helpers/strings.test.ts +47 -0
- package/src/lib/helpers/strings.ts +16 -0
- package/src/lib/helpers/useInputElementState.ts +56 -0
- package/src/lib/helpers/useKeyDown.ts +17 -0
- package/tsconfig.json +35 -0
- package/tsconfig.lib.json +28 -0
- package/tsconfig.spec.json +21 -0
- package/index.d.ts +0 -2
- package/index.js +0 -11246
- package/lib/components/alert-banner/alert-banner.d.ts +0 -15
- package/lib/components/alert-banner/alert-level-flags.d.ts +0 -18
- package/lib/components/alert-banner/index.d.ts +0 -1
- package/lib/components/badge/badge-type-flags.d.ts +0 -18
- package/lib/components/badge/badge.d.ts +0 -5
- package/lib/components/badge/index.d.ts +0 -1
- package/lib/components/card/atoms/index.d.ts +0 -1
- package/lib/components/card/card.d.ts +0 -14
- package/lib/components/card/components/card-alert-banner-slot.d.ts +0 -6
- package/lib/components/card/components/card-controls-slot.d.ts +0 -5
- package/lib/components/card/components/card-section-slot.d.ts +0 -11
- package/lib/components/card/components/index.d.ts +0 -3
- package/lib/components/card/index.d.ts +0 -3
- package/lib/components/card/molecules/index.d.ts +0 -1
- package/lib/components/card/molecules/left-right-card.d.ts +0 -16
- package/lib/components/checkbox/checkbox.d.ts +0 -11
- package/lib/components/checkbox/helpers.d.ts +0 -12
- package/lib/components/checkbox/index.d.ts +0 -1
- package/lib/components/date-picker/components/custom-calendar.d.ts +0 -6
- package/lib/components/date-picker/components/index.d.ts +0 -1
- package/lib/components/date-picker/date-picker.d.ts +0 -4
- package/lib/components/date-picker/helpers/date-picker-factory.d.ts +0 -34
- package/lib/components/date-picker/index.d.ts +0 -1
- package/lib/components/divider/divider-type-flags.d.ts +0 -9
- package/lib/components/divider/divider.d.ts +0 -7
- package/lib/components/divider/index.d.ts +0 -1
- package/lib/components/flag/flag-size-flags.d.ts +0 -12
- package/lib/components/flag/flag.d.ts +0 -9
- package/lib/components/flag/flag.list.d.ts +0 -782
- package/lib/components/flag/index.d.ts +0 -1
- package/lib/components/icon/icon-list.d.ts +0 -132
- package/lib/components/icon/icon.d.ts +0 -131
- package/lib/components/icon/index.d.ts +0 -1
- package/lib/components/index.d.ts +0 -24
- package/lib/components/input-field/components/index.d.ts +0 -2
- package/lib/components/input-field/components/labeled-input.d.ts +0 -10
- package/lib/components/input-field/components/stepper.d.ts +0 -7
- package/lib/components/input-field/index.d.ts +0 -3
- package/lib/components/input-field/input-field.d.ts +0 -26
- package/lib/components/input-field/input-number.d.ts +0 -18
- package/lib/components/input-field/input-text.d.ts +0 -14
- package/lib/components/layout/flex.d.ts +0 -16
- package/lib/components/layout/grid-layout.d.ts +0 -11
- package/lib/components/layout/index.d.ts +0 -3
- package/lib/components/layout/left-right-layout.d.ts +0 -34
- package/lib/components/link/index.d.ts +0 -1
- package/lib/components/link/link.d.ts +0 -14
- package/lib/components/modal/index.d.ts +0 -3
- package/lib/components/modal/modal-base.d.ts +0 -28
- package/lib/components/modal/modal-destructive.d.ts +0 -11
- package/lib/components/modal/modal.d.ts +0 -13
- package/lib/components/molecules/avatar/avatar-size-flags.d.ts +0 -12
- package/lib/components/molecules/avatar/avatar.d.ts +0 -12
- package/lib/components/molecules/avatar/index.d.ts +0 -1
- package/lib/components/molecules/button/button-flags.d.ts +0 -44
- package/lib/components/molecules/button/button.d.ts +0 -12
- package/lib/components/molecules/button/index.d.ts +0 -1
- package/lib/components/molecules/index.d.ts +0 -3
- package/lib/components/molecules/input-checkbox/index.d.ts +0 -1
- package/lib/components/molecules/input-checkbox/input-checkbox.d.ts +0 -8
- package/lib/components/organisms/choice-list/choice-list.d.ts +0 -9
- package/lib/components/organisms/choice-list/index.d.ts +0 -1
- package/lib/components/organisms/index.d.ts +0 -2
- package/lib/components/organisms/multi-choice-list/index.d.ts +0 -1
- package/lib/components/organisms/multi-choice-list/multi-choice-list.d.ts +0 -11
- package/lib/components/progress-bar/index.d.ts +0 -1
- package/lib/components/progress-bar/progress-bar-size-flags.d.ts +0 -10
- package/lib/components/progress-bar/progress-bar.d.ts +0 -8
- package/lib/components/radio-button/index.d.ts +0 -1
- package/lib/components/radio-button/radio-button.d.ts +0 -10
- package/lib/components/range-slider/components/bar-chart.d.ts +0 -8
- package/lib/components/range-slider/components/handle.d.ts +0 -12
- package/lib/components/range-slider/components/rail.d.ts +0 -9
- package/lib/components/range-slider/components/slider-component.d.ts +0 -12
- package/lib/components/range-slider/components/slider-inputs.d.ts +0 -14
- package/lib/components/range-slider/components/tick.d.ts +0 -10
- package/lib/components/range-slider/components/track.d.ts +0 -11
- package/lib/components/range-slider/index.d.ts +0 -2
- package/lib/components/range-slider/range-slider.d.ts +0 -15
- package/lib/components/range-slider/slider.d.ts +0 -11
- package/lib/components/range-slider/types.d.ts +0 -11
- package/lib/components/select/components/menu-container.d.ts +0 -3
- package/lib/components/select/components/menu-list.d.ts +0 -3
- package/lib/components/select/components/menu-row.d.ts +0 -9
- package/lib/components/select/components/menu.d.ts +0 -3
- package/lib/components/select/components/option.d.ts +0 -13
- package/lib/components/select/components/select-label.d.ts +0 -1
- package/lib/components/select/components/value-component-multi.d.ts +0 -4
- package/lib/components/select/components/value-component-single.d.ts +0 -4
- package/lib/components/select/components/value.d.ts +0 -4
- package/lib/components/select/index.d.ts +0 -3
- package/lib/components/select/select.d.ts +0 -10
- package/lib/components/select/types.d.ts +0 -133
- package/lib/components/select/utils.d.ts +0 -15
- package/lib/components/spinner/spinner-size-flags.d.ts +0 -10
- package/lib/components/spinner/spinner.d.ts +0 -9
- package/lib/components/tabs/components/index.d.ts +0 -1
- package/lib/components/tabs/components/tab.d.ts +0 -8
- package/lib/components/tabs/index.d.ts +0 -1
- package/lib/components/tabs/tabs.d.ts +0 -16
- package/lib/components/tag/components/close-button.d.ts +0 -8
- package/lib/components/tag/components/index.d.ts +0 -2
- package/lib/components/tag/components/tag-label.d.ts +0 -8
- package/lib/components/tag/index.d.ts +0 -1
- package/lib/components/tag/tag.d.ts +0 -10
- package/lib/components/thumbnail/index.d.ts +0 -1
- package/lib/components/thumbnail/thumbnail-size-flags.d.ts +0 -10
- package/lib/components/thumbnail/thumbnail.d.ts +0 -10
- package/lib/components/tooltip/index.d.ts +0 -1
- package/lib/components/tooltip/tooltip.d.ts +0 -26
- package/lib/components/tree-view/components/tree-node.d.ts +0 -3
- package/lib/components/tree-view/helper.d.ts +0 -12
- package/lib/components/tree-view/index.d.ts +0 -2
- package/lib/components/tree-view/tree-view.d.ts +0 -3
- package/lib/components/tree-view/types.d.ts +0 -63
- package/lib/components/typography/index.d.ts +0 -1
- package/lib/components/typography/typography.d.ts +0 -24
- package/lib/foundations/color-system/base-palette/base-palette.d.ts +0 -76
- package/lib/foundations/color-system/base-palette/index.d.ts +0 -1
- package/lib/foundations/color-system/color-guidelines/color-guidelines.d.ts +0 -133
- package/lib/foundations/color-system/color-guidelines/index.d.ts +0 -1
- package/lib/foundations/color-system/components/color-sample.d.ts +0 -17
- package/lib/foundations/color-system/components/index.d.ts +0 -1
- package/lib/foundations/color-system/index.d.ts +0 -1
- package/lib/foundations/index.d.ts +0 -4
- package/lib/foundations/shadows/components.d.ts +0 -8
- package/lib/foundations/shadows/index.d.ts +0 -1
- package/lib/foundations/shadows/shadows.d.ts +0 -8
- package/lib/foundations/spacing/index.d.ts +0 -1
- package/lib/foundations/spacing/spacing-guidelines.d.ts +0 -33
- package/lib/foundations/spacing/spacing.d.ts +0 -18
- package/lib/foundations/typography/constants.d.ts +0 -22
- package/lib/foundations/typography/fonts.d.ts +0 -1
- package/lib/foundations/typography/index.d.ts +0 -1
- package/lib/foundations/typography/text-aspect-flags.d.ts +0 -19
- package/lib/foundations/typography/typography.d.ts +0 -24
- package/lib/helpers/generic-types.d.ts +0 -21
- package/lib/helpers/index.d.ts +0 -8
- package/lib/helpers/isReactElementOfType.d.ts +0 -8
- package/lib/helpers/nothing.d.ts +0 -10
- package/lib/helpers/safe-navigation.d.ts +0 -17
- package/lib/helpers/slots.d.ts +0 -17
- package/lib/helpers/strings.d.ts +0 -1
- package/lib/helpers/useInputElementState.d.ts +0 -30
- package/lib/helpers/useKeyDown.d.ts +0 -1
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
import { Button, InputField, Label } from '@components'
|
|
2
|
+
import { Padding } from '@foundations'
|
|
3
|
+
import { isDefined } from '@helpers'
|
|
4
|
+
import { OverflowPlayground as Playground } from '@stories'
|
|
5
|
+
import styled from 'styled-components'
|
|
6
|
+
import { DatePicker } from '../date-picker'
|
|
7
|
+
import { datePickerFactory } from '../helpers/date-picker-factory'
|
|
8
|
+
|
|
9
|
+
export const DatePickerExample = () => (
|
|
10
|
+
<Playground
|
|
11
|
+
code={`
|
|
12
|
+
<DatePicker label='Start Date' />
|
|
13
|
+
`}
|
|
14
|
+
providerProps={{
|
|
15
|
+
renderAsComponent: true,
|
|
16
|
+
scope: {
|
|
17
|
+
DatePicker,
|
|
18
|
+
InputField,
|
|
19
|
+
},
|
|
20
|
+
}}
|
|
21
|
+
/>
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
export const DatePickerFormatExample = () => (
|
|
25
|
+
<Playground
|
|
26
|
+
code={`
|
|
27
|
+
const [value, setValue] = useState(new Date().toISOString());
|
|
28
|
+
|
|
29
|
+
<>
|
|
30
|
+
<div>You Chose: {value}</div>
|
|
31
|
+
<DatePicker format={undefined} value={value} onChange={setValue} />
|
|
32
|
+
<DatePicker format='MMMM D, YYYY' value={value} onChange={setValue} />
|
|
33
|
+
<DatePicker format={({ date }) => 'Today is: ' + date} value={value} onChange={setValue} />
|
|
34
|
+
</>
|
|
35
|
+
`}
|
|
36
|
+
providerProps={{
|
|
37
|
+
renderAsComponent: true,
|
|
38
|
+
scope: {
|
|
39
|
+
DatePicker,
|
|
40
|
+
InputField,
|
|
41
|
+
},
|
|
42
|
+
}}
|
|
43
|
+
/>
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
export const DatePickerAvailableDatesExample = () => (
|
|
47
|
+
<Playground
|
|
48
|
+
code={`
|
|
49
|
+
const today = new Date().toISOString()
|
|
50
|
+
const tomorrow = new Date(today)
|
|
51
|
+
tomorrow.setDate(tomorrow.getDate() + 1)
|
|
52
|
+
|
|
53
|
+
const isUnavailable = ({ date }) => new Date(date).getDay() === 6 || new Date(date).getDay() === 0;
|
|
54
|
+
const isTomorrow = ({ date, isSameDate }) => isSameDate(date, tomorrow);
|
|
55
|
+
|
|
56
|
+
<>
|
|
57
|
+
<div>No weekends, and we can do same day but not next day.</div>
|
|
58
|
+
<DatePicker min={today} isAvailable={(props) => !isUnavailable(props) && !isTomorrow(props)} />
|
|
59
|
+
</>
|
|
60
|
+
`}
|
|
61
|
+
providerProps={{
|
|
62
|
+
renderAsComponent: true,
|
|
63
|
+
scope: {
|
|
64
|
+
DatePicker,
|
|
65
|
+
InputField,
|
|
66
|
+
},
|
|
67
|
+
}}
|
|
68
|
+
/>
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
export const DatePickerControlledExample = () => (
|
|
72
|
+
<Playground
|
|
73
|
+
code={`
|
|
74
|
+
const [value, setValue] = useState(new Date().toISOString());
|
|
75
|
+
|
|
76
|
+
<>
|
|
77
|
+
<div>You chose: {value}</div>
|
|
78
|
+
<DatePicker value={value} onChange={setValue} label='Start Date' />
|
|
79
|
+
</>
|
|
80
|
+
`}
|
|
81
|
+
providerProps={{
|
|
82
|
+
renderAsComponent: true,
|
|
83
|
+
scope: {
|
|
84
|
+
DatePicker,
|
|
85
|
+
InputField,
|
|
86
|
+
},
|
|
87
|
+
}}
|
|
88
|
+
/>
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
export const DatePickerControlledOpenExample = () => (
|
|
92
|
+
<Playground
|
|
93
|
+
code={`
|
|
94
|
+
const [open, setOpen] = useState(false);
|
|
95
|
+
|
|
96
|
+
<>
|
|
97
|
+
<Button onClick={() => setOpen(!open)}>{open ? 'Close' : 'Open'} Sesame!</Button>
|
|
98
|
+
<DatePicker isOpen={open} onClick={() => setOpen(!open)} label='Start Date' />
|
|
99
|
+
</>
|
|
100
|
+
`}
|
|
101
|
+
providerProps={{
|
|
102
|
+
renderAsComponent: true,
|
|
103
|
+
scope: {
|
|
104
|
+
Button,
|
|
105
|
+
DatePicker,
|
|
106
|
+
InputField,
|
|
107
|
+
},
|
|
108
|
+
}}
|
|
109
|
+
/>
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
export const DatePickerCustomHandleExample = () => (
|
|
113
|
+
<Playground
|
|
114
|
+
code={`
|
|
115
|
+
<DatePicker>
|
|
116
|
+
<DatePicker.Controls>
|
|
117
|
+
<Label>Click Me</Label>
|
|
118
|
+
</DatePicker.Controls>
|
|
119
|
+
</DatePicker>
|
|
120
|
+
`}
|
|
121
|
+
providerProps={{
|
|
122
|
+
renderAsComponent: true,
|
|
123
|
+
scope: {
|
|
124
|
+
DatePicker,
|
|
125
|
+
Label,
|
|
126
|
+
},
|
|
127
|
+
}}
|
|
128
|
+
/>
|
|
129
|
+
)
|
|
130
|
+
|
|
131
|
+
const Controls = styled.div`
|
|
132
|
+
padding: ${Padding.l};
|
|
133
|
+
`
|
|
134
|
+
|
|
135
|
+
export const DatePickerWithExtraStuffInTheCalendar = () => (
|
|
136
|
+
<Playground
|
|
137
|
+
code={`
|
|
138
|
+
const [open, setOpen] = useState(false)
|
|
139
|
+
const [value, setValue] = useState(new Date().toISOString())
|
|
140
|
+
const [draft, setDraft] = useState(value);
|
|
141
|
+
const publish = (date) => {
|
|
142
|
+
setValue(date)
|
|
143
|
+
setDraft(date)
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const NULL_DATE = ''
|
|
147
|
+
const format = ({ date, defaultFormatter }) => date === NULL_DATE
|
|
148
|
+
? 'Next Available'
|
|
149
|
+
: defaultFormatter(date, 'MMMM D, YYYY');
|
|
150
|
+
|
|
151
|
+
<>
|
|
152
|
+
<DatePicker
|
|
153
|
+
format={format}
|
|
154
|
+
value={draft}
|
|
155
|
+
onChange={setDraft}
|
|
156
|
+
label='Start Date'
|
|
157
|
+
isOpen={open}
|
|
158
|
+
onClick={setOpen}
|
|
159
|
+
>
|
|
160
|
+
<Controls>
|
|
161
|
+
<Button onClick={() => publish(NULL_DATE)}>Next Available</Button>
|
|
162
|
+
<Button onClick={() => { setDraft(value); setOpen(false) }}>Cancel</Button>
|
|
163
|
+
<Button onClick={() => { publish(draft); setOpen(false) }}>Confirm</Button>
|
|
164
|
+
</Controls>
|
|
165
|
+
</DatePicker>
|
|
166
|
+
</>
|
|
167
|
+
`}
|
|
168
|
+
providerProps={{
|
|
169
|
+
renderAsComponent: true,
|
|
170
|
+
scope: {
|
|
171
|
+
DatePicker,
|
|
172
|
+
Controls,
|
|
173
|
+
Button,
|
|
174
|
+
InputField,
|
|
175
|
+
},
|
|
176
|
+
}}
|
|
177
|
+
/>
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
const EpochDatePicker = datePickerFactory<number>({
|
|
181
|
+
toDate: (n) => new Date(n),
|
|
182
|
+
fromDate: (date) => isDefined(date) ? date.valueOf() : 0,
|
|
183
|
+
empty: (date) => date.valueOf() === 0,
|
|
184
|
+
})
|
|
185
|
+
|
|
186
|
+
export const DatePickerFactoryExample = () => (
|
|
187
|
+
<Playground
|
|
188
|
+
code={`
|
|
189
|
+
const [open, setOpen] = useState(false)
|
|
190
|
+
const [value, setValue] = useState(new Date().valueOf())
|
|
191
|
+
const [draft, setDraft] = useState(value)
|
|
192
|
+
const publish = (date) => {
|
|
193
|
+
setValue(date)
|
|
194
|
+
setDraft(date)
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
const format = ({ date, defaultFormatter }) => date.valueOf() === 0
|
|
198
|
+
? 'Next Available'
|
|
199
|
+
: defaultFormatter(date, 'MMMM D, YYYY');
|
|
200
|
+
|
|
201
|
+
<>
|
|
202
|
+
You Chose: {value}
|
|
203
|
+
<EpochDatePicker
|
|
204
|
+
format={format}
|
|
205
|
+
value={draft}
|
|
206
|
+
onChange={setDraft}
|
|
207
|
+
label='Start Date'
|
|
208
|
+
isOpen={open}
|
|
209
|
+
onClick={setOpen}
|
|
210
|
+
>
|
|
211
|
+
<Controls>
|
|
212
|
+
<Button onClick={() => publish(0)}>Next Available</Button>
|
|
213
|
+
<Button onClick={() => { setDraft(value); setOpen(false) }}>Cancel</Button>
|
|
214
|
+
<Button onClick={() => { publish(draft); setOpen(false) }}>Confirm</Button>
|
|
215
|
+
</Controls>
|
|
216
|
+
</EpochDatePicker>
|
|
217
|
+
</>
|
|
218
|
+
`}
|
|
219
|
+
providerProps={{
|
|
220
|
+
renderAsComponent: true,
|
|
221
|
+
scope: {
|
|
222
|
+
EpochDatePicker,
|
|
223
|
+
Controls,
|
|
224
|
+
Button,
|
|
225
|
+
InputField,
|
|
226
|
+
},
|
|
227
|
+
}}
|
|
228
|
+
/>
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
export const DatePickerFormExample = () => (
|
|
232
|
+
<Playground
|
|
233
|
+
code={`
|
|
234
|
+
const [min, setMin] = useState(new Date().toISOString())
|
|
235
|
+
const [max, setMax] = useState(new Date().toISOString());
|
|
236
|
+
|
|
237
|
+
<form onSubmit={(e) => e.preventDefault()}>
|
|
238
|
+
<DatePicker max={max} label='min' value={min} onChange={setMin} />
|
|
239
|
+
<DatePicker min={min} label='max' value={max} onChange={setMax} />
|
|
240
|
+
<DatePicker
|
|
241
|
+
label='Start Date'
|
|
242
|
+
required
|
|
243
|
+
min={min}
|
|
244
|
+
max={max}
|
|
245
|
+
/>
|
|
246
|
+
<Button primary type='submit'>Submit</Button>
|
|
247
|
+
</form>
|
|
248
|
+
`}
|
|
249
|
+
providerProps={{
|
|
250
|
+
renderAsComponent: true,
|
|
251
|
+
scope: {
|
|
252
|
+
DatePicker,
|
|
253
|
+
Button,
|
|
254
|
+
InputField,
|
|
255
|
+
Label,
|
|
256
|
+
},
|
|
257
|
+
}}
|
|
258
|
+
/>
|
|
259
|
+
)
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { Meta, Canvas } from '@storybook/addon-docs';
|
|
2
|
+
import { AlertBanner } from 'components/alert-banner'
|
|
3
|
+
import {
|
|
4
|
+
DatePickerExample,
|
|
5
|
+
DatePickerFormatExample,
|
|
6
|
+
DatePickerCustomHandleExample,
|
|
7
|
+
DatePickerRangeExample,
|
|
8
|
+
DatePickerControlledExample,
|
|
9
|
+
DatePickerControlledOpenExample,
|
|
10
|
+
DatePickerWithExtraStuffInTheCalendar,
|
|
11
|
+
DatePickerFactoryExample,
|
|
12
|
+
DatePickerAvailableDatesExample,
|
|
13
|
+
DatePickerFormExample,
|
|
14
|
+
} from './components'
|
|
15
|
+
import { DatePicker } from '../date-picker'
|
|
16
|
+
|
|
17
|
+
<Meta title="Components/Date Picker"/>
|
|
18
|
+
|
|
19
|
+
# Date Picker
|
|
20
|
+
|
|
21
|
+
Date Pickers let merchants choose dates from a visual calendar that’s consistently applied wherever dates need to be selected across Edvisor. For more details refer to <a href='https://www.figma.com/file/ue1CurHfZ426o2T2l8Dk64/Edvisor-Product-Language?node-id=734%3A7365&t=Cz5qnAbrJNBJj8b1-0'>figma</a>.
|
|
22
|
+
|
|
23
|
+
## How to Use It
|
|
24
|
+
|
|
25
|
+
```tsx
|
|
26
|
+
import { DatePicker } from '@edvisor/product-language'
|
|
27
|
+
|
|
28
|
+
<DatePicker />
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Uncontrolled
|
|
32
|
+
|
|
33
|
+
Drop it into your project uncontrolled.
|
|
34
|
+
|
|
35
|
+
<DatePickerExample />
|
|
36
|
+
|
|
37
|
+
### Controlled
|
|
38
|
+
|
|
39
|
+
Add state to control the date picker. By default the DatePicker takes a string as value.
|
|
40
|
+
|
|
41
|
+
<DatePickerControlledExample />
|
|
42
|
+
|
|
43
|
+
### Familiar HTML Input Interface
|
|
44
|
+
|
|
45
|
+
Wrap it in a form and mark it required. Pass in a min/max to restrict input to that range.
|
|
46
|
+
|
|
47
|
+
<DatePickerFormExample />
|
|
48
|
+
|
|
49
|
+
### Specify Available Dates
|
|
50
|
+
|
|
51
|
+
In addition to the min/max prop, you can pass in an `isAvailable` callback to apply specific restrictions.
|
|
52
|
+
|
|
53
|
+
<DatePickerAvailableDatesExample />
|
|
54
|
+
|
|
55
|
+
## Props
|
|
56
|
+
|
|
57
|
+
extends `InputHTMLAttributes<HTMLInputElement>` except where described below.
|
|
58
|
+
|
|
59
|
+
| Prop | Type | Description |
|
|
60
|
+
| --------------- | --------------------------- | ------------------------------------------------- |
|
|
61
|
+
| `value?` | `string` | The date |
|
|
62
|
+
| `defaultValue?` | `string` | Provide a value for the uncontrolled component |
|
|
63
|
+
| `onChange?` | `(change: string) => void` | Receive the value when it changes |
|
|
64
|
+
| `min?` | `string` | The earliest date the user can choose |
|
|
65
|
+
| `max?` | `string` | The latest date the user can choose |
|
|
66
|
+
| `isAvailable?` | `(date: string) => boolean` | A predicate that determines if a date is disabled |
|
|
67
|
+
|
|
68
|
+
## Customization
|
|
69
|
+
|
|
70
|
+
The default is sufficient for most cases, but you can also customize the DatePicker.
|
|
71
|
+
|
|
72
|
+
### Custom Open/Close
|
|
73
|
+
|
|
74
|
+
By controlling the open state you can open or close the input from outside.
|
|
75
|
+
|
|
76
|
+
<DatePickerControlledOpenExample />
|
|
77
|
+
|
|
78
|
+
### Custom Format
|
|
79
|
+
|
|
80
|
+
Pass in a format string or a custom formatting function. This only affects the visual format of the data.
|
|
81
|
+
|
|
82
|
+
<DatePickerFormatExample />
|
|
83
|
+
|
|
84
|
+
### Custom Input/Handle
|
|
85
|
+
|
|
86
|
+
The input/handle can be replaced using the Controls slot.
|
|
87
|
+
|
|
88
|
+
<DatePickerCustomHandleExample />
|
|
89
|
+
|
|
90
|
+
### Custom Calendar Controls
|
|
91
|
+
|
|
92
|
+
Children are rendered inside the calendar>
|
|
93
|
+
|
|
94
|
+
<DatePickerWithExtraStuffInTheCalendar />
|
|
95
|
+
|
|
96
|
+
### Props
|
|
97
|
+
|
|
98
|
+
| Prop | Type | Description |
|
|
99
|
+
| ---------- | ------------------------ | ------------------------------------------------ |
|
|
100
|
+
| `isOpen?` | `boolean` | Determines if the Calendar is visible |
|
|
101
|
+
| `onClick?` | `() => void` | Called when the input/handle is clicked |
|
|
102
|
+
| `format?` | `string | DateFormatter` | Called to render the date visually in the handle |
|
|
103
|
+
|
|
104
|
+
### Slots
|
|
105
|
+
|
|
106
|
+
| Slot | Description |
|
|
107
|
+
| ---------- | -------------------------------------------- |
|
|
108
|
+
| `Controls` | Completely replaces the default input/handle |
|
|
109
|
+
| `children` | Adds UI elements inside the Calendar |
|
|
110
|
+
|
|
111
|
+
## DatePicker Factory
|
|
112
|
+
|
|
113
|
+
In all the previous examples, the date picker used string as input and output. You can create a DatePicker for any data type using datePickerFactory. For example, you could use number:
|
|
114
|
+
|
|
115
|
+
```ts
|
|
116
|
+
const EpochDatePicker = datePickerFactory<number>({
|
|
117
|
+
toDate: (n) => new Date(n),
|
|
118
|
+
fromDate: (date) => isDefined(date) ? date.valueOf() : 0,
|
|
119
|
+
empty: (date) => date.valueOf() === 0,
|
|
120
|
+
})
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
This makes it relatively easy to use the DatePicker with date libraries like Luxon.
|
|
124
|
+
|
|
125
|
+
<DatePickerFactoryExample />
|
|
126
|
+
|
|
127
|
+
## Props
|
|
128
|
+
|
|
129
|
+
| Prop | Type | Description |
|
|
130
|
+
| ---------- | ------------------------- | ---------------------------------------------------------------------------------- |
|
|
131
|
+
| `toDate` | `(el: T) => Date` | Maps your type to date |
|
|
132
|
+
| `fromDate` | `(date: Date) => T` | Maps date to your type |
|
|
133
|
+
| `empty` | `(date: Date) => boolean` | Returns true if you give it the empty element of your type (such as '' for string) |
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// this file was generated, but it is safe to modify
|
|
2
|
+
import { bitwiseOr, MappedEnum, RequireOnlyOne, PropsWithChildren } from '@helpers'
|
|
3
|
+
import { Borders } from '@foundations'
|
|
4
|
+
|
|
5
|
+
const enum DividerType {
|
|
6
|
+
default = 1,
|
|
7
|
+
subdued = 2,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
type DividerTypes<T> = MappedEnum<typeof DividerType, T>
|
|
11
|
+
|
|
12
|
+
function toDividerType(n: number): DividerType {
|
|
13
|
+
switch (n) {
|
|
14
|
+
case DividerType.default:
|
|
15
|
+
return DividerType.default
|
|
16
|
+
case DividerType.subdued:
|
|
17
|
+
return DividerType.subdued
|
|
18
|
+
default:
|
|
19
|
+
return DividerType.default
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const DividerTypeColor = {
|
|
24
|
+
[DividerType.default]: Borders.Default.Default,
|
|
25
|
+
[DividerType.subdued]: Borders.Default.Subdued,
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export type DivideTypeProps = Partial<RequireOnlyOne<DividerTypes<boolean>>> &
|
|
29
|
+
PropsWithChildren
|
|
30
|
+
|
|
31
|
+
export function getColor(props: DivideTypeProps): string {
|
|
32
|
+
return DividerTypeColor[
|
|
33
|
+
toDividerType(
|
|
34
|
+
bitwiseOr([props.default, props.subdued])
|
|
35
|
+
)
|
|
36
|
+
]
|
|
37
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react'
|
|
2
|
+
import { Divider } from './index'
|
|
3
|
+
import { Borders } from '@foundations'
|
|
4
|
+
|
|
5
|
+
describe('Divider Tests', () => {
|
|
6
|
+
describe('Divider Tests', () => {
|
|
7
|
+
it('should render the Divider with default color', async () => {
|
|
8
|
+
render(
|
|
9
|
+
<Divider/>
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
expect(screen.getByTestId('divider-test')).toBeInTheDocument()
|
|
13
|
+
expect(screen.getByTestId('divider-test')).toHaveStyle(`border: 1px solid ${Borders.Default.Default}`)
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
it('should render the Divider with default color using parameter', async () => {
|
|
17
|
+
render(
|
|
18
|
+
<Divider default/>
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
expect(screen.getByTestId('divider-test')).toBeInTheDocument()
|
|
22
|
+
expect(screen.getByTestId('divider-test')).toHaveStyle(`border: 1px solid ${Borders.Default.Default}`)
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
it('should render the Divider with subdued color', async () => {
|
|
26
|
+
render(
|
|
27
|
+
<Divider subdued/>
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
expect(screen.getByTestId('divider-test')).toBeInTheDocument()
|
|
31
|
+
expect(screen.getByTestId('divider-test')).toHaveStyle(`border: 1px solid ${Borders.Default.Subdued}`)
|
|
32
|
+
})
|
|
33
|
+
})
|
|
34
|
+
})
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import styled from 'styled-components'
|
|
2
|
+
import { FC } from '@helpers'
|
|
3
|
+
import { DivideTypeProps, getColor } from './divider-type-flags'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @TODO I added flex here because without it the bottom margin was
|
|
7
|
+
* being collapsed with the next sibling (when I applied margins to the divider,
|
|
8
|
+
* which I expect we basically _always_ will)
|
|
9
|
+
*
|
|
10
|
+
* I'm not confident with reasoning about margin-collapse so if you see
|
|
11
|
+
* this comment and feel like experimenting, go crazy. Check out the
|
|
12
|
+
* card stories for an example of the divider (it's way at the bottom)
|
|
13
|
+
*/
|
|
14
|
+
const DividerWrapper = styled.div`
|
|
15
|
+
position: relative;
|
|
16
|
+
width:100%;
|
|
17
|
+
`
|
|
18
|
+
|
|
19
|
+
const DividerLine = styled.hr<{ color: string }>`
|
|
20
|
+
position: absolute;
|
|
21
|
+
left: 0;
|
|
22
|
+
right: 0;
|
|
23
|
+
margin: unset;
|
|
24
|
+
border: 1px solid ${({ color }) => color};
|
|
25
|
+
`
|
|
26
|
+
|
|
27
|
+
type IProps = { className?: string } & DivideTypeProps
|
|
28
|
+
|
|
29
|
+
export const Divider: FC<IProps> = (props) => {
|
|
30
|
+
const color = getColor(props)
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<DividerWrapper className={props.className}>
|
|
34
|
+
<DividerLine color={color} data-testid="divider-test"/>
|
|
35
|
+
</DividerWrapper>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './divider'
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Canvas, Meta } from '@storybook/addon-docs';
|
|
2
|
+
import { Divider } from '../index'
|
|
3
|
+
import { WrapperStories, AvatarsWithText, AvatarsWithImage, WrapperStoriesWithLabel } from './components'
|
|
4
|
+
|
|
5
|
+
<Meta
|
|
6
|
+
title="Components/Divider"
|
|
7
|
+
component={Divider}
|
|
8
|
+
/>
|
|
9
|
+
|
|
10
|
+
# Divider
|
|
11
|
+
|
|
12
|
+
For more details, check out the component page on [Figma](https://www.figma.com/file/ue1CurHfZ426o2T2l8Dk64/Edvisor-Product-Language?node-id=1194%3A1611)
|
|
13
|
+
|
|
14
|
+
## How to use
|
|
15
|
+
|
|
16
|
+
```javascript
|
|
17
|
+
// Import the component
|
|
18
|
+
import { Divider } from './index'
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
// Render the component sending the parameters
|
|
22
|
+
<Divider default/>
|
|
23
|
+
|
|
24
|
+
//or
|
|
25
|
+
|
|
26
|
+
<Divider subdued/>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
Default Divider
|
|
32
|
+
<Canvas>
|
|
33
|
+
<WrapperStories>
|
|
34
|
+
<Divider default/>
|
|
35
|
+
</WrapperStories>
|
|
36
|
+
</Canvas>
|
|
37
|
+
|
|
38
|
+
Subdued Divider
|
|
39
|
+
<Canvas>
|
|
40
|
+
<WrapperStories>
|
|
41
|
+
<Divider subdued/>
|
|
42
|
+
</WrapperStories>
|
|
43
|
+
</Canvas>
|
|
44
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { bitwiseOr, MappedEnum, RequireOnlyOne, PropsWithChildren } from '@helpers'
|
|
2
|
+
|
|
3
|
+
export const enum FlagSize {
|
|
4
|
+
small = 1,
|
|
5
|
+
medium = 2,
|
|
6
|
+
large = 4,
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
type FlagSizes<T> = MappedEnum<typeof FlagSize, T>
|
|
10
|
+
|
|
11
|
+
function toFlag(n: number): FlagSize {
|
|
12
|
+
switch (n) {
|
|
13
|
+
case FlagSize.small:
|
|
14
|
+
return FlagSize.small
|
|
15
|
+
case FlagSize.medium:
|
|
16
|
+
return FlagSize.medium
|
|
17
|
+
case FlagSize.large:
|
|
18
|
+
return FlagSize.large
|
|
19
|
+
default:
|
|
20
|
+
return FlagSize.medium
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const FlagWidthValues = {
|
|
25
|
+
[FlagSize.small]: '20',
|
|
26
|
+
[FlagSize.medium]: '20',
|
|
27
|
+
[FlagSize.large]: '32',
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const FlagHeightValues = {
|
|
31
|
+
[FlagSize.small]: '20',
|
|
32
|
+
[FlagSize.medium]: '20',
|
|
33
|
+
[FlagSize.large]: '24',
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export type FlagProps = Partial<RequireOnlyOne<FlagSizes<boolean>>> &
|
|
37
|
+
PropsWithChildren
|
|
38
|
+
|
|
39
|
+
export function getHeigthBySize(props: FlagProps): string {
|
|
40
|
+
return FlagHeightValues[
|
|
41
|
+
getFlagSize(props)
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function getWidthBySize(props: FlagProps): string {
|
|
46
|
+
return FlagWidthValues[
|
|
47
|
+
getFlagSize(props)
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function getFlagSize(props: FlagProps) {
|
|
52
|
+
return toFlag(
|
|
53
|
+
bitwiseOr([props.small, props.medium, props.large])
|
|
54
|
+
)
|
|
55
|
+
}
|