@innovaccer/design-system 2.5.0 → 2.7.0-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/.eslintrc.json +54 -0
- package/.github/workflows/chromatic.yml +5 -0
- package/.github/workflows/main.yml +2 -2
- package/.github/workflows/pull_request.yml +2 -2
- package/.github/workflows/test.yml +1 -1
- package/.husky/commit-msg +4 -0
- package/.prettierrc +2 -2
- package/.storybook/main.js +4 -0
- package/.vscode/settings.json +11 -0
- package/CHANGELOG.md +78 -0
- package/CONTRIBUTING.md +180 -98
- package/commitlint.config.js +1 -0
- package/core/accessibility/utils/index.ts +5 -0
- package/core/accessibility/utils/isEnterKey.ts +5 -0
- package/core/accessibility/utils/isSpaceKey.ts +5 -0
- package/core/accessibility/utils/useAccessibilityProps.ts +33 -0
- package/core/common.type.tsx +22 -0
- package/core/components/atoms/_chip/__tests__/__snapshots__/_chip.test.tsx.snap +17 -9
- package/core/components/atoms/_chip/index.tsx +19 -3
- package/core/components/atoms/avatar/Avatar.tsx +4 -14
- package/core/components/atoms/avatar/__stories__/variants/Appearance.story.tsx +3 -2
- package/core/components/atoms/avatar/__tests__/Avatar.test.tsx +14 -9
- package/core/components/atoms/avatarGroup/AvatarGroup.tsx +3 -5
- package/core/components/atoms/badge/Badge.tsx +2 -12
- package/core/components/atoms/badge/__tests__/Badge.test.tsx +22 -7
- package/core/components/atoms/badge/_stories_/variants/Appearance.story.tsx +3 -2
- package/core/components/atoms/badge/_stories_/variants/Subtle.story.tsx +3 -2
- package/core/components/atoms/button/Button.tsx +10 -7
- package/core/components/atoms/button/__stories__/Alert.story.tsx +8 -1
- package/core/components/atoms/button/__stories__/Cancel.story.tsx +4 -1
- package/core/components/atoms/button/__stories__/IconButtonGroup.story.tsx +12 -3
- package/core/components/atoms/button/__stories__/IconButtonSecondary.story.tsx +6 -1
- package/core/components/atoms/button/__stories__/IconLeftSecondary.story.tsx +4 -1
- package/core/components/atoms/button/__stories__/IconRightSecondary.story.tsx +4 -1
- package/core/components/atoms/button/__stories__/IconTransparent.story.tsx +4 -1
- package/core/components/atoms/button/__stories__/LabelButtonGroup.story.tsx +14 -3
- package/core/components/atoms/button/__stories__/LargeIconExpanded.story.tsx +4 -1
- package/core/components/atoms/button/__stories__/LoadingPrimary.story.tsx +4 -1
- package/core/components/atoms/button/__stories__/Primary.story.tsx +5 -2
- package/core/components/atoms/button/__stories__/SplitButton.story.tsx +6 -1
- package/core/components/atoms/button/__stories__/Transparent.story.tsx +8 -1
- package/core/components/atoms/button/__stories__/index.story.tsx +12 -2
- package/core/components/atoms/button/__stories__/variants/Appearance.story.tsx +6 -2
- package/core/components/atoms/button/__stories__/variants/Expanded.story.tsx +6 -2
- package/core/components/atoms/button/__stories__/variants/Size.story.tsx +4 -0
- package/core/components/atoms/button/__stories__/variants/icon/Icon.story.tsx +15 -0
- package/core/components/atoms/button/__stories__/variants/icon/IconLeft.story.tsx +6 -2
- package/core/components/atoms/button/__stories__/variants/icon/IconRight.story.tsx +6 -2
- package/core/components/atoms/button/__stories__/variants/state/Alert.story.tsx +7 -17
- package/core/components/atoms/button/__stories__/variants/state/Basic.story.tsx +9 -17
- package/core/components/atoms/button/__stories__/variants/state/Primary.story.tsx +7 -17
- package/core/components/atoms/button/__stories__/variants/state/Transparent.story.tsx +13 -17
- package/core/components/atoms/button/__tests__/Button.test.tsx +1 -1
- package/core/components/atoms/button/__tests__/__snapshots__/Button.test.tsx.snap +0 -137
- package/core/components/atoms/card/__stories__/empty.story.tsx +1 -1
- package/core/components/atoms/card/__stories__/nested.story.tsx +1 -1
- package/core/components/atoms/card/__stories__/scroll.story.tsx +1 -1
- package/core/components/atoms/checkbox/Checkbox.tsx +8 -9
- package/core/components/atoms/checkbox/__stories__/variants/Size.story.tsx +2 -2
- package/core/components/atoms/chip/Chip.tsx +3 -2
- package/core/components/atoms/chip/__stories__/variants/Selection.story.tsx +17 -0
- package/core/components/atoms/chip/__stories__/variants/Type.story.tsx +2 -2
- package/core/components/atoms/chip/__tests__/Chip.test.tsx +7 -0
- package/core/components/atoms/chipGroup/__tests__/__snapshots__/chipGroup.test.tsx.snap +11 -5
- package/core/components/atoms/chipGroup/__tests__/chipGroup.test.tsx +2 -2
- package/core/components/atoms/chipGroup/_stories_/index.story.tsx +2 -2
- package/core/components/atoms/collapsible/__tests__/__snapshots__/Collapsible.test.tsx.snap +8 -0
- package/core/components/atoms/divider/Divider.tsx +44 -0
- package/core/components/atoms/divider/__stories__/BasicDividerInCard.story.tsx +74 -0
- package/core/components/atoms/divider/__stories__/HeaderDividerInCard.story.tsx +35 -0
- package/core/components/atoms/divider/__stories__/IndentedDivider.story.tsx +49 -0
- package/core/components/atoms/divider/__stories__/Vertical.story.tsx +51 -0
- package/core/components/atoms/divider/__stories__/index.story.tsx +91 -0
- package/core/components/atoms/divider/__stories__/variants/HorizontalDivider.story.tsx +27 -0
- package/core/components/atoms/divider/__tests__/Divider.test.tsx +50 -0
- package/core/components/atoms/divider/__tests__/__snapshots__/Divider.test.tsx.snap +53 -0
- package/core/components/atoms/divider/index.tsx +2 -0
- package/core/components/atoms/dropdown/Dropdown.tsx +18 -17
- package/core/components/atoms/dropdown/DropdownButton.tsx +2 -2
- package/core/components/atoms/dropdown/DropdownList.tsx +18 -7
- package/core/components/atoms/dropdown/Loading.tsx +1 -1
- package/core/components/atoms/dropdown/__stories__/CustomSearchPlaceholder.story.tsx +45 -0
- package/core/components/atoms/dropdown/__stories__/_common_/types.tsx +3 -0
- package/core/components/atoms/dropdown/__stories__/variants/Size.story.tsx +2 -2
- package/core/components/atoms/dropdown/__stories__/variants/controlledDropdown/MultiSelect.story.tsx +28 -18
- package/core/components/atoms/dropdown/__tests__/Dropdown.test.tsx +12 -1
- package/core/components/atoms/dropdown/__tests__/Loading.test.tsx +0 -1
- package/core/components/atoms/dropdown/option/DefaultOption.tsx +3 -0
- package/core/components/atoms/dropdown/option/IconOption.tsx +3 -0
- package/core/components/atoms/dropdown/option/IconWithMetaOption.tsx +3 -0
- package/core/components/atoms/dropdown/option/MetaOption.tsx +3 -0
- package/core/components/atoms/dropdown/option/index.tsx +1 -1
- package/core/components/atoms/editable/Editable.tsx +3 -0
- package/core/components/atoms/heading/Heading.tsx +4 -4
- package/core/components/atoms/heading/__stories__/variants/Appearance.story.tsx +3 -2
- package/core/components/atoms/heading/__tests__/Heading.test.tsx +4 -3
- package/core/components/atoms/icon/Icon.tsx +16 -5
- package/core/components/atoms/icon/__stories__/variants/Image.story.tsx +6 -1
- package/core/components/atoms/icon/__tests__/__snapshots__/Icon.test.tsx.snap +74 -0
- package/core/components/atoms/input/Input.tsx +17 -7
- package/core/components/atoms/input/__stories__/BasicInput.story.tsx +2 -1
- package/core/components/atoms/input/__stories__/InputWithCaption.story.tsx +91 -9
- package/core/components/atoms/input/__stories__/InputWithLabel.story.tsx +11 -3
- package/core/components/atoms/input/__stories__/LabelPosition.story.tsx +46 -4
- package/core/components/atoms/input/__stories__/RequiredVsOptional.story.tsx +12 -8
- package/core/components/atoms/input/__stories__/variants/controlledInput.story.tsx +46 -0
- package/core/components/atoms/input/__stories__/variants/types/BasicInput.story.tsx +2 -2
- package/core/components/atoms/input/__stories__/variants/types/IconLeft.story.tsx +2 -10
- package/core/components/atoms/input/__stories__/variants/types/WithLabel.story.tsx +1 -9
- package/core/components/atoms/input/__tests__/__snapshots__/Input.test.tsx.snap +19 -0
- package/core/components/atoms/label/Label.tsx +1 -1
- package/core/components/atoms/legend/Legend.tsx +5 -2
- package/core/components/atoms/legend/__stories__/variants/labelAppearance.story.tsx +2 -2
- package/core/components/atoms/link/Link.tsx +4 -4
- package/core/components/atoms/message/Message.tsx +12 -12
- package/core/components/atoms/message/__stories__/index.story.tsx +1 -1
- package/core/components/atoms/message/__stories__/variants/Appearance.story.tsx +1 -1
- package/core/components/atoms/message/__stories__/variants/AppearanceTitle.story.tsx +1 -1
- package/core/components/atoms/message/__tests__/Message.test.tsx +1 -6
- package/core/components/atoms/message/__tests__/__snapshots__/Message.test.tsx.snap +0 -45
- package/core/components/atoms/metaList/__tests__/MetaList.test.tsx +2 -2
- package/core/components/atoms/metricInput/MetricInput.tsx +17 -7
- package/core/components/atoms/metricInput/__stories__/DefaultMetric.story.tsx +8 -2
- package/core/components/atoms/metricInput/__stories__/WithPrefix.story.tsx +6 -2
- package/core/components/atoms/metricInput/__stories__/index.story.tsx +1 -0
- package/core/components/atoms/metricInput/__stories__/variants/Controlled.story.tsx +2 -0
- package/core/components/atoms/metricInput/__stories__/variants/Size.story.tsx +2 -2
- package/core/components/atoms/metricInput/__stories__/withSuffix.story.tsx +6 -2
- package/core/components/atoms/metricInput/__tests__/__snapshots__/MetricInput.test.tsx.snap +20 -4
- package/core/components/atoms/multiSlider/Handle.tsx +3 -0
- package/core/components/atoms/multiSlider/SliderUtils.tsx +1 -4
- package/core/components/atoms/multiSlider/index.tsx +9 -4
- package/core/components/atoms/outsideClick/OutsideClick.tsx +1 -2
- package/core/components/atoms/paragraph/Paragraph.tsx +2 -2
- package/core/components/atoms/paragraph/__stories__/variants/Appearance.story.tsx +2 -2
- package/core/components/atoms/paragraph/__tests__/Paragraph.test.tsx +2 -2
- package/core/components/atoms/pills/Pills.tsx +2 -12
- package/core/components/atoms/pills/__stories__/variants/Appearance.story.tsx +3 -2
- package/core/components/atoms/pills/__stories__/variants/Subtle.story.tsx +3 -2
- package/core/components/atoms/pills/__tests__/Pills.test.tsx +3 -2
- package/core/components/atoms/placeholderImage/PlaceholderImage.tsx +2 -2
- package/core/components/atoms/placeholderImage/__stories__/variants/Size.story.tsx +2 -2
- package/core/components/atoms/placeholderParagraph/PlaceholderParagraph.tsx +2 -2
- package/core/components/atoms/placeholderParagraph/__stories__/variants/Size.story.tsx +2 -2
- package/core/components/atoms/popperWrapper/PopperWrapper.tsx +2 -6
- package/core/components/atoms/progressRing/ProgressRing.tsx +2 -2
- package/core/components/atoms/progressRing/__stories__/variants/Size.story.tsx +1 -1
- package/core/components/atoms/radio/Radio.tsx +4 -5
- package/core/components/atoms/rangeSlider/RangeSlider.tsx +1 -2
- package/core/components/atoms/rangeSlider/__stories__/index.story.tsx +1 -2
- package/core/components/atoms/rangeSlider/__stories__/variants/Controlled.story.tsx +1 -2
- package/core/components/atoms/rangeSlider/__stories__/variants/CustomLabels.story.tsx +1 -2
- package/core/components/atoms/spinner/Spinner.tsx +4 -4
- package/core/components/atoms/spinner/__stories__/variants/Appearance.story.tsx +2 -2
- package/core/components/atoms/spinner/__stories__/variants/Size.story.tsx +1 -1
- package/core/components/atoms/statusHint/StatusHint.tsx +5 -3
- package/core/components/atoms/statusHint/__stories__/variants/Appearance.story.tsx +3 -2
- package/core/components/atoms/statusHint/__tests__/StatusHint.test.tsx +3 -2
- package/core/components/atoms/subheading/Subheading.tsx +2 -2
- package/core/components/atoms/subheading/__stories__/variants/Appearance.story.tsx +3 -2
- package/core/components/atoms/subheading/__tests__/Subheading.test.tsx +3 -2
- package/core/components/atoms/switchInput/Switch.tsx +14 -9
- package/core/components/atoms/switchInput/__stories__/DefaultSwitch.story.tsx +4 -1
- package/core/components/atoms/switchInput/__stories__/OffState.story.tsx +4 -1
- package/core/components/atoms/switchInput/__stories__/index.story.tsx +26 -3
- package/core/components/atoms/switchInput/__stories__/variants/Size.story.tsx +10 -1
- package/core/components/atoms/switchInput/__stories__/variants/State.story.tsx +9 -2
- package/core/components/atoms/text/Text.tsx +4 -4
- package/core/components/atoms/text/__stories__/variants/Appearance.story.tsx +2 -2
- package/core/components/atoms/text/__tests__/Text.test.tsx +2 -3
- package/core/components/atoms/textarea/__stories__/TextareaWithCaption.story.tsx +9 -3
- package/core/components/atoms/textarea/__stories__/defaultTextarea.story.tsx +10 -2
- package/core/components/atoms/textarea/__stories__/index.story.tsx +1 -0
- package/core/components/atoms/textarea/__stories__/variants/Disable.story.tsx +1 -0
- package/core/components/atoms/toast/ActionButton.tsx +2 -2
- package/core/components/atoms/toast/Toast.tsx +11 -6
- package/core/components/atoms/toast/__stories__/index.story.tsx +2 -6
- package/core/components/atoms/toast/__stories__/variants/Appearance.story.tsx +3 -2
- package/core/components/atoms/toast/__stories__/variants/ToastMessage.story.tsx +3 -2
- package/core/components/atoms/toast/__stories__/variants/ToastWithAction.story.tsx +3 -2
- package/core/components/atoms/toast/__tests__/Toast.test.tsx +1 -1
- package/core/components/atoms/toast/__tests__/__snapshots__/Toast.test.tsx.snap +24 -125
- package/core/components/css-utilities/Schema.tsx +1 -1
- package/core/components/css-utilities/Spacing/Schema.tsx +1 -1
- package/core/components/molecules/chatMessage/Box.tsx +3 -0
- package/core/components/molecules/chipInput/ChipInput.tsx +3 -0
- package/core/components/molecules/chipInput/__tests__/__snapshots__/ChipInput.test.tsx.snap +14 -2
- package/core/components/molecules/dropzone/Dropzone.tsx +6 -3
- package/core/components/molecules/dropzone/DropzoneBase.tsx +22 -38
- package/core/components/molecules/dropzone/FileSelectorUtils.tsx +1 -1
- package/core/components/molecules/dropzone/__stories__/index.story.tsx +151 -41
- package/core/components/molecules/dropzone/__tests__/Dropzone.test.tsx +2 -2
- package/core/components/molecules/dropzone/utils.tsx +6 -4
- package/core/components/molecules/editableChipInput/EditableChipInput.tsx +9 -5
- package/core/components/molecules/editableChipInput/__stories__/Uncontrolled.story.tsx +1 -1
- package/core/components/molecules/editableChipInput/__tests__/__snapshots__/EditableChipInput.test.tsx.snap +12 -4
- package/core/components/molecules/editableDropdown/EditableDropdown.tsx +2 -2
- package/core/components/molecules/editableInput/EditableInput.tsx +13 -4
- package/core/components/molecules/emptyState/EmptyState.tsx +9 -5
- package/core/components/molecules/emptyState/__stories__/pageNotLoadedWithSVG.story.tsx +26 -26
- package/core/components/molecules/fileList/FileListItem.tsx +3 -2
- package/core/components/molecules/fileUploader/FileUploaderItem.tsx +3 -2
- package/core/components/molecules/fileUploader/FileUploaderStatus.tsx +1 -1
- package/core/components/molecules/fileUploader/__stories__/_common_/types.tsx +3 -0
- package/core/components/molecules/fileUploader/__stories__/index.story.tsx +3 -222
- package/core/components/molecules/fullscreenModal/FullscreenModal.tsx +5 -7
- package/core/components/molecules/inputMask/InputMask.tsx +212 -146
- package/core/components/molecules/inputMask/__stories__/index.story.tsx +24 -0
- package/core/components/molecules/inputMask/__tests__/__snapshots__/InputMask.test.tsx.snap +1 -0
- package/core/components/molecules/modal/Modal.tsx +4 -6
- package/core/components/molecules/modal/__stories__/Confirmation.story.tsx +1 -1
- package/core/components/molecules/pagination/__tests__/__snapshots__/Pagination.test.tsx.snap +5 -1
- package/core/components/molecules/placeholder/Placeholder.tsx +2 -2
- package/core/components/molecules/popover/Popover.tsx +2 -9
- package/core/components/molecules/sidesheet/Sidesheet.tsx +5 -7
- package/core/components/molecules/sidesheet/__stories__/variants/CustomHeader.story.tsx +172 -0
- package/core/components/molecules/stepper/Step.tsx +2 -0
- package/core/components/molecules/tabs/Tabs.tsx +2 -0
- package/core/components/molecules/tabs/TabsWrapper.tsx +2 -0
- package/core/components/molecules/tabs/__stories__/CustomLabels.story.tsx +1 -1
- package/core/components/molecules/tooltip/Tooltip.tsx +4 -4
- package/core/components/molecules/verificationCodeInput/VerificationCodeInput.tsx +8 -4
- package/core/components/molecules/verificationCodeInput/__stories__/index.story.tsx +3 -1
- package/core/components/molecules/verificationCodeInput/__tests__/__snapshots__/VerificationCodeInput.test.tsx.snap +1 -0
- package/core/components/organisms/calendar/Calendar.tsx +130 -8
- package/core/components/organisms/calendar/__stories__/variants/firstDayOfWeek.story.tsx +2 -2
- package/core/components/organisms/calendar/__tests__/Calendar.test.tsx +27 -0
- package/core/components/organisms/calendar/utility.ts +3 -3
- package/core/components/organisms/choiceList/ChoiceList.tsx +12 -12
- package/core/components/organisms/datePicker/DatePicker.tsx +31 -16
- package/core/components/organisms/datePicker/Trigger.tsx +1 -5
- package/core/components/organisms/datePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +4518 -4479
- package/core/components/organisms/dateRangePicker/DateRangePicker.tsx +9 -10
- package/core/components/organisms/dateRangePicker/SingleInputTrigger.tsx +0 -1
- package/core/components/organisms/dateRangePicker/Trigger.tsx +2 -2
- package/core/components/organisms/dateRangePicker/__stories__/variants/monthsInView.story.tsx +2 -2
- package/core/components/organisms/dateRangePicker/__tests__/__snapshots__/DateRangePicker.test.tsx.snap +112 -40
- package/core/components/organisms/grid/Cell.tsx +23 -19
- package/core/components/organisms/grid/Grid.tsx +3 -4
- package/core/components/organisms/grid/GridBody.tsx +0 -1
- package/core/components/organisms/grid/GridContext.ts +1 -1
- package/core/components/organisms/grid/GridRow.tsx +4 -0
- package/core/components/organisms/grid/__stories__/_common_/editableSchema.tsx +1 -3
- package/core/components/organisms/grid/__stories__/_common_/fetchData.ts +3 -3
- package/core/components/organisms/grid/__stories__/_common_/loaderSchema.ts +0 -2
- package/core/components/organisms/grid/__stories__/_common_/schema.tsx +1 -3
- package/core/components/organisms/grid/__stories__/_common_/simpleLoaderSchema.ts +0 -2
- package/core/components/organisms/grid/__stories__/_common_/statusSchema.ts +0 -2
- package/core/components/organisms/horizontalNav/HorizontalNav.tsx +2 -0
- package/core/components/organisms/inlineMessage/InlineMessage.tsx +5 -7
- package/core/components/organisms/inlineMessage/__tests__/InlineMessage.test.tsx +3 -2
- package/core/components/organisms/inlineMessage/__tests__/__snapshots__/InlineMessage.test.tsx.snap +30 -40
- package/core/components/organisms/list/__stories__/_common_/types.tsx +3 -0
- package/core/components/organisms/list/__stories__/index.story.tsx +0 -16
- package/core/components/organisms/navigation/VerticalNavigation.tsx +4 -0
- package/core/components/organisms/table/Table.tsx +3 -2
- package/core/components/organisms/table/__stories__/CompressedTable.story.tsx +1 -1
- package/core/components/organisms/table/__stories__/DataTable.story.tsx +1 -1
- package/core/components/organisms/table/__stories__/NestedTableWithNestedCard.story.tsx +1 -1
- package/core/components/organisms/table/__stories__/PinnedColumn.story.tsx +1 -1
- package/core/components/organisms/table/__stories__/ResourceTable.story.tsx +4 -3
- package/core/components/organisms/table/__stories__/Selection.story.tsx +2 -2
- package/core/components/organisms/table/__stories__/StandardTable.story.tsx +1 -1
- package/core/components/organisms/table/__stories__/TableAsDescriptionList.story.tsx +2 -2
- package/core/components/organisms/table/__stories__/TableAsOptionList.story.tsx +2 -2
- package/core/components/organisms/table/__stories__/TightStory.story.tsx +1 -1
- package/core/components/organisms/table/__stories__/_common_/types.tsx +3 -0
- package/core/components/organisms/table/__stories__/syncTable.story.tsx +14 -6
- package/core/components/organisms/table/__stories__/variants/showHead.story.tsx +2 -2
- package/core/components/organisms/table/__stories__/variants/showMenu.story.tsx +2 -2
- package/core/components/organisms/table/__stories__/variants/size.story.tsx +2 -2
- package/core/components/organisms/table/__stories__/variants/type.story.tsx +2 -2
- package/core/components/organisms/table/__stories__/variants/withCheckbox.story.tsx +2 -2
- package/core/components/organisms/table/__stories__/variants/withHeader.story.tsx +0 -2
- package/core/components/organisms/table/__stories__/variants/withPagination.story.tsx +2 -2
- package/core/components/organisms/timePicker/TimePicker.tsx +4 -8
- package/core/components/organisms/timePicker/__tests__/__snapshots__/TimePicker.test.tsx.snap +14 -2
- package/core/components/organisms/verticalNav/MenuItem.tsx +2 -0
- package/core/components/organisms/verticalNav/__stories__/schema.tsx +0 -2
- package/core/components/organisms/verticalNav/__tests__/VerticalNav.test.tsx +1 -2
- package/core/components/patterns/datePicker/datePickerWithPresets.story.tsx +126 -0
- package/core/components/patterns/dateRangePicker/withCustomPopover.story.tsx +8 -8
- package/core/components/patterns/forms/CreatePassword.story.tsx +1 -1
- package/core/components/patterns/forms/VerificationCodeInput.story.tsx +2 -2
- package/core/components/patterns/table/Table with Header/tableWithHeader.story.jsx +7 -7
- package/core/global.d.ts +9 -0
- package/core/index.tsx +2 -1
- package/core/index.type.tsx +1 -0
- package/core/utils/Keys.ts +4 -0
- package/core/utils/__tests__/__snapshots__/TS.test.tsx.snap +562 -541
- package/core/utils/docPage/generateImports.tsx +2 -3
- package/core/utils/docPage/index.tsx +52 -37
- package/core/utils/docPage/sandbox.tsx +14 -7
- package/core/utils/overlayHelper.ts +7 -3
- package/core/utils/testHelper.ts +2 -2
- package/core/utils/types.tsx +1 -1
- package/core/utils/validators.ts +37 -34
- package/css/dist/index.css +1550 -1415
- package/css/dist/index.css.map +1 -1
- package/css/src/components/Legend.css +7 -7
- package/css/src/components/ProgressBar.css +1 -1
- package/css/src/components/avatarGroup.css +1 -1
- package/css/src/components/backdrop.css +12 -6
- package/css/src/components/badge.css +52 -52
- package/css/src/components/button.css +95 -94
- package/css/src/components/calendar.css +137 -126
- package/css/src/components/card.css +0 -1
- package/css/src/components/cardSubdued.css +3 -5
- package/css/src/components/chat.css +1 -1
- package/css/src/components/checkbox.css +71 -70
- package/css/src/components/chip.css +20 -17
- package/css/src/components/chipGroup.css +5 -5
- package/css/src/components/chipInput.css +1 -1
- package/css/src/components/choiceList.css +4 -4
- package/css/src/components/dateRangePicker.css +13 -13
- package/css/src/components/divider.css +20 -0
- package/css/src/components/dropdown.css +61 -61
- package/css/src/components/dropdownButton.css +36 -36
- package/css/src/components/dropzone.css +16 -20
- package/css/src/components/editableChipInput.css +10 -9
- package/css/src/components/editableDropdown.css +1 -1
- package/css/src/components/editableInput.css +1 -1
- package/css/src/components/emptyState.css +15 -15
- package/css/src/components/fileList.css +44 -45
- package/css/src/components/fullscreenModal.css +4 -3
- package/css/src/components/grid.css +217 -199
- package/css/src/components/horizontalNav.css +0 -1
- package/css/src/components/icon.css +1 -7
- package/css/src/components/inlineMessage.css +2 -1
- package/css/src/components/input.css +62 -62
- package/css/src/components/link.css +1 -1
- package/css/src/components/list.css +10 -10
- package/css/src/components/message.css +64 -70
- package/css/src/components/metaList.css +26 -26
- package/css/src/components/metricInput.css +3 -4
- package/css/src/components/modal.css +1 -1
- package/css/src/components/navigation.css +3 -3
- package/css/src/components/pageHeader.css +1 -2
- package/css/src/components/pagination.css +36 -36
- package/css/src/components/pills.css +19 -19
- package/css/src/components/placeholder.css +10 -5
- package/css/src/components/popover.css +2 -2
- package/css/src/components/progressRing.css +1 -1
- package/css/src/components/radio.css +74 -74
- package/css/src/components/slider.css +5 -5
- package/css/src/components/statusHints.css +15 -15
- package/css/src/components/switch.css +66 -41
- package/css/src/components/table.css +15 -15
- package/css/src/components/tabs.css +53 -53
- package/css/src/components/textarea.css +1 -1
- package/css/src/components/toast.css +51 -56
- package/css/src/components/verificationCodeInput.css +5 -6
- package/css/src/components/verticalNav.css +1 -2
- package/css/src/core/base.css +3 -0
- package/css/src/core/typography.css +1 -1
- package/css/src/core/utilities.css +1 -1
- package/css/src/tokens/index.css +63 -63
- package/css/src/utils/align.css +1 -1
- package/css/src/utils/background.css +1 -1
- package/css/src/utils/cursor.css +1 -1
- package/css/src/utils/display.css +1 -1
- package/css/src/utils/flex.css +1 -1
- package/css/src/utils/grid.css +1 -1
- package/css/src/utils/overflow.css +1 -1
- package/css/src/utils/position.css +1 -1
- package/css/src/utils/spacing.css +1 -1
- package/css/src/utils/utility.css +13 -13
- package/css/src/variables/index.css +6 -3
- package/dist/core/accessibility/utils/index.d.ts +4 -0
- package/dist/core/accessibility/utils/isEnterKey.d.ts +3 -0
- package/dist/core/accessibility/utils/isSpaceKey.d.ts +3 -0
- package/dist/core/accessibility/utils/useAccessibilityProps.d.ts +18 -0
- package/dist/core/common.type.d.ts +12 -0
- package/dist/core/components/atoms/avatar/Avatar.d.ts +4 -4
- package/dist/core/components/atoms/avatarGroup/AvatarGroup.d.ts +2 -3
- package/dist/core/components/atoms/badge/Badge.d.ts +2 -2
- package/dist/core/components/atoms/button/Button.d.ts +6 -6
- package/dist/core/components/atoms/checkbox/Checkbox.d.ts +3 -3
- package/dist/core/components/atoms/chip/Chip.d.ts +2 -2
- package/dist/core/components/atoms/divider/Divider.d.ts +15 -0
- package/dist/core/components/atoms/divider/index.d.ts +2 -0
- package/dist/core/components/atoms/dropdown/Dropdown.d.ts +18 -17
- package/dist/core/components/atoms/dropdown/DropdownButton.d.ts +2 -2
- package/dist/core/components/atoms/dropdown/DropdownList.d.ts +4 -3
- package/dist/core/components/atoms/dropdown/option/index.d.ts +1 -1
- package/dist/core/components/atoms/heading/Heading.d.ts +4 -4
- package/dist/core/components/atoms/icon/Icon.d.ts +5 -3
- package/dist/core/components/atoms/input/Input.d.ts +4 -4
- package/dist/core/components/atoms/legend/Legend.d.ts +2 -2
- package/dist/core/components/atoms/link/Link.d.ts +4 -4
- package/dist/core/components/atoms/message/Message.d.ts +2 -2
- package/dist/core/components/atoms/metricInput/MetricInput.d.ts +3 -3
- package/dist/core/components/atoms/multiSlider/SliderUtils.d.ts +1 -1
- package/dist/core/components/atoms/multiSlider/index.d.ts +3 -3
- package/dist/core/components/atoms/paragraph/Paragraph.d.ts +2 -2
- package/dist/core/components/atoms/pills/Pills.d.ts +2 -2
- package/dist/core/components/atoms/placeholderImage/PlaceholderImage.d.ts +2 -2
- package/dist/core/components/atoms/placeholderParagraph/PlaceholderParagraph.d.ts +2 -2
- package/dist/core/components/atoms/popperWrapper/PopperWrapper.d.ts +51 -51
- package/dist/core/components/atoms/progressRing/ProgressRing.d.ts +2 -2
- package/dist/core/components/atoms/radio/Radio.d.ts +4 -4
- package/dist/core/components/atoms/rangeSlider/RangeSlider.d.ts +1 -1
- package/dist/core/components/atoms/spinner/Spinner.d.ts +4 -4
- package/dist/core/components/atoms/statusHint/StatusHint.d.ts +2 -2
- package/dist/core/components/atoms/subheading/Subheading.d.ts +2 -2
- package/dist/core/components/atoms/switchInput/Switch.d.ts +7 -6
- package/dist/core/components/atoms/text/Text.d.ts +4 -4
- package/dist/core/components/atoms/toast/ActionButton.d.ts +2 -2
- package/dist/core/components/atoms/toast/Toast.d.ts +2 -2
- package/dist/core/components/molecules/dropzone/Dropzone.d.ts +3 -3
- package/dist/core/components/molecules/dropzone/DropzoneBase.d.ts +1 -1
- package/dist/core/components/molecules/dropzone/utils.d.ts +5 -3
- package/dist/core/components/molecules/emptyState/EmptyState.d.ts +4 -4
- package/dist/core/components/molecules/fileList/FileListItem.d.ts +1 -1
- package/dist/core/components/molecules/fileUploader/FileUploaderItem.d.ts +1 -1
- package/dist/core/components/molecules/fileUploader/FileUploaderStatus.d.ts +1 -1
- package/dist/core/components/molecules/fullscreenModal/FullscreenModal.d.ts +4 -7
- package/dist/core/components/molecules/inputMask/InputMask.d.ts +10 -2
- package/dist/core/components/molecules/modal/Modal.d.ts +3 -6
- package/dist/core/components/molecules/placeholder/Placeholder.d.ts +2 -2
- package/dist/core/components/molecules/popover/Popover.d.ts +0 -1
- package/dist/core/components/molecules/sidesheet/Sidesheet.d.ts +3 -6
- package/dist/core/components/molecules/tooltip/Tooltip.d.ts +3 -3
- package/dist/core/components/organisms/calendar/Calendar.d.ts +31 -0
- package/dist/core/components/organisms/choiceList/ChoiceList.d.ts +5 -6
- package/dist/core/components/organisms/datePicker/DatePicker.d.ts +2 -0
- package/dist/core/components/organisms/dateRangePicker/DateRangePicker.d.ts +24 -0
- package/dist/core/components/organisms/grid/Cell.d.ts +1 -1
- package/dist/core/components/organisms/grid/Grid.d.ts +3 -3
- package/dist/core/components/organisms/grid/GridContext.d.ts +1 -1
- package/dist/core/components/organisms/inlineMessage/InlineMessage.d.ts +2 -2
- package/dist/core/components/organisms/table/Table.d.ts +2 -2
- package/dist/core/components/patterns/datePicker/datePickerWithPresets.story.d.ts +15 -0
- package/dist/core/components/patterns/dateRangePicker/withCustomPopover.story.d.ts +5 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.type.d.ts +1 -0
- package/dist/core/utils/docPage/generateImports.d.ts +1 -1
- package/dist/core/utils/overlayHelper.d.ts +1 -1
- package/dist/core/utils/types.d.ts +1 -1
- package/dist/index.esm.js +1039 -729
- package/dist/index.js +532 -371
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.br +0 -0
- package/dist/index.umd.js.gz +0 -0
- package/dts.config.js +11 -2
- package/package.json +32 -27
- package/tsconfig.json +3 -16
- package/tsconfig.type.json +2 -1
- package/types/index.d.ts +2217 -0
- package/types/{innovaccer-design-system/tsconfig.json → tsconfig.json} +1 -1
- package/types/{innovaccer-design-system/tslint.json → tslint.json} +0 -0
- package/types/types-tests.tsx +936 -0
- package/.husky/prepare-commit-msg +0 -6
- package/core/components/atoms/button/__stories__/variants/state/Success.story.tsx +0 -99
- package/core/components/atoms/message/__stories__/default.story.tsx +0 -16
- package/core/components/atoms/toast/__stories__/DefaultToast.story.tsx +0 -16
- package/core/components/molecules/dropzone/__stories__/variants/DropzoneWithFileList.story.tsx +0 -176
- package/core/components/molecules/fileUploader/__stories__/variants/FileUploaderList.story.tsx +0 -80
- package/tslint.json +0 -30
- package/types/innovaccer-design-system/index.d.ts +0 -39
- package/types/innovaccer-design-system/innovaccer-design-system-tests.ts +0 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { boolean } from '@storybook/addon-knobs';
|
|
3
|
+
import { action } from '@storybook/addon-actions';
|
|
4
|
+
import { updateKnob } from '@/utils/storybookEventEmitter';
|
|
5
|
+
import { Text, Paragraph, Sidesheet, ModalDescription, Button, Badge, Heading, Divider } from '@/index';
|
|
6
|
+
|
|
7
|
+
export const customHeader = () => {
|
|
8
|
+
const open = boolean('open', true);
|
|
9
|
+
const seperator = boolean('seperator', false);
|
|
10
|
+
const stickFooter = boolean('stick bottom', false);
|
|
11
|
+
const backdropClose = boolean('backdropClose', false);
|
|
12
|
+
|
|
13
|
+
const onClose = () => {
|
|
14
|
+
updateKnob('open', false);
|
|
15
|
+
action('on close triggered')();
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const options = {
|
|
19
|
+
onClose,
|
|
20
|
+
open,
|
|
21
|
+
seperator,
|
|
22
|
+
stickFooter,
|
|
23
|
+
backdropClose,
|
|
24
|
+
footer: (
|
|
25
|
+
<>
|
|
26
|
+
<Button appearance="primary" className="mr-4">
|
|
27
|
+
Primary
|
|
28
|
+
</Button>
|
|
29
|
+
<Button appearance="basic">Basic</Button>
|
|
30
|
+
</>
|
|
31
|
+
),
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const modalDescriptionOptions = {
|
|
35
|
+
title: 'Description Title',
|
|
36
|
+
description: 'Adding a subheading clearly indicates the hierarchy of the information.',
|
|
37
|
+
removePadding: true,
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const modalDescriptionOptionsWithoutTitle = {
|
|
41
|
+
description: 'Card Sections include supporting text like an article summary or a restaurant description.',
|
|
42
|
+
removePadding: true,
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<div>
|
|
47
|
+
<Paragraph>
|
|
48
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
49
|
+
magna aliqua.
|
|
50
|
+
<br />
|
|
51
|
+
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
|
|
52
|
+
<br />
|
|
53
|
+
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. <br />
|
|
54
|
+
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
|
|
55
|
+
<br />
|
|
56
|
+
</Paragraph>
|
|
57
|
+
<Sidesheet
|
|
58
|
+
{...options}
|
|
59
|
+
dimension="regular"
|
|
60
|
+
header={
|
|
61
|
+
<div className="pl-7">
|
|
62
|
+
<Heading size="s">Untitled document</Heading>
|
|
63
|
+
<div className="d-flex">
|
|
64
|
+
<div className="mr-3">
|
|
65
|
+
<Badge appearance="primary">User Interface</Badge>
|
|
66
|
+
</div>
|
|
67
|
+
<div className="mr-3">
|
|
68
|
+
<Badge>Design</Badge>
|
|
69
|
+
</div>
|
|
70
|
+
<div className="mr-3">
|
|
71
|
+
<Badge>Development</Badge>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
<Divider></Divider>
|
|
75
|
+
</div>
|
|
76
|
+
}
|
|
77
|
+
>
|
|
78
|
+
<Text>Modal Body</Text>
|
|
79
|
+
<ModalDescription {...modalDescriptionOptions} />
|
|
80
|
+
<ModalDescription {...modalDescriptionOptionsWithoutTitle} />
|
|
81
|
+
</Sidesheet>
|
|
82
|
+
</div>
|
|
83
|
+
);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const customCode = `() => {
|
|
87
|
+
const [open, setOpen] = React.useState(true);
|
|
88
|
+
|
|
89
|
+
const onClose = () => {
|
|
90
|
+
setOpen(!open);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
const options = {
|
|
94
|
+
onClose,
|
|
95
|
+
open,
|
|
96
|
+
footer: (
|
|
97
|
+
<>
|
|
98
|
+
<Button appearance="primary" className="mr-4">
|
|
99
|
+
Primary
|
|
100
|
+
</Button>
|
|
101
|
+
<Button appearance="basic">Basic</Button>
|
|
102
|
+
</>
|
|
103
|
+
),
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const modalDescriptionOptions = {
|
|
107
|
+
title: 'Description Title',
|
|
108
|
+
description: 'Adding a subheading clearly indicates the hierarchy of the information.',
|
|
109
|
+
removePadding: true,
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const modalDescriptionOptionsWithoutTitle = {
|
|
113
|
+
description: 'Card Sections include supporting text like an article summary or a restaurant description.',
|
|
114
|
+
removePadding: true,
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
return (
|
|
118
|
+
<div>
|
|
119
|
+
<Paragraph>
|
|
120
|
+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
|
|
121
|
+
magna aliqua. <br />
|
|
122
|
+
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.{' '}
|
|
123
|
+
<br />
|
|
124
|
+
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. <br />
|
|
125
|
+
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.{' '}
|
|
126
|
+
<br />
|
|
127
|
+
<Button appearance="primary" onClick={() => setOpen(true)}>
|
|
128
|
+
Open
|
|
129
|
+
</Button>
|
|
130
|
+
</Paragraph>
|
|
131
|
+
<Sidesheet
|
|
132
|
+
{...options}
|
|
133
|
+
dimension="regular"
|
|
134
|
+
header={
|
|
135
|
+
<div className="pl-7">
|
|
136
|
+
<Heading size="s">Untitled document</Heading>
|
|
137
|
+
<div className="d-flex">
|
|
138
|
+
<div className="mr-3">
|
|
139
|
+
<Badge appearance="primary">User Interface</Badge>
|
|
140
|
+
</div>
|
|
141
|
+
<div className="mr-3">
|
|
142
|
+
<Badge>Design</Badge>
|
|
143
|
+
</div>
|
|
144
|
+
<div className="mr-3">
|
|
145
|
+
<Badge>Development</Badge>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
<Divider></Divider>
|
|
149
|
+
</div>
|
|
150
|
+
}
|
|
151
|
+
>
|
|
152
|
+
<Text>Modal Body</Text>
|
|
153
|
+
<ModalDescription {...modalDescriptionOptions} />
|
|
154
|
+
<ModalDescription {...modalDescriptionOptionsWithoutTitle} />
|
|
155
|
+
</Sidesheet>
|
|
156
|
+
</div>
|
|
157
|
+
);
|
|
158
|
+
}`;
|
|
159
|
+
|
|
160
|
+
export default {
|
|
161
|
+
title: 'Components/Sidesheet/Custom Header',
|
|
162
|
+
component: Sidesheet,
|
|
163
|
+
parameters: {
|
|
164
|
+
docs: {
|
|
165
|
+
docPage: {
|
|
166
|
+
customCode,
|
|
167
|
+
title: 'Modal',
|
|
168
|
+
noHtml: true,
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
};
|
|
@@ -30,6 +30,8 @@ export const Step = (props: StepProps) => {
|
|
|
30
30
|
const appearance = active ? 'link' : disabled ? 'disabled' : 'default';
|
|
31
31
|
|
|
32
32
|
return (
|
|
33
|
+
// TODO(a11y)
|
|
34
|
+
// eslint-disable-next-line
|
|
33
35
|
<div data-test="DesignSystem-Step" className={StepClass} onClick={onClickHandle}>
|
|
34
36
|
<Icon
|
|
35
37
|
data-test="DesignSystem-Step--Icon"
|
|
@@ -3,7 +3,7 @@ import { Popover, Text } from '@/index';
|
|
|
3
3
|
import { PopoverProps } from '@/index.type';
|
|
4
4
|
import { BaseProps, filterProps } from '@/utils/types';
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const tooltipPropsList = [
|
|
7
7
|
'trigger',
|
|
8
8
|
'on',
|
|
9
9
|
'open',
|
|
@@ -15,8 +15,8 @@ const propsList = [
|
|
|
15
15
|
'hideOnReferenceEscape',
|
|
16
16
|
'closeOnScroll',
|
|
17
17
|
] as const;
|
|
18
|
-
type
|
|
19
|
-
export interface TooltipProps extends Omit<PopoverProps,
|
|
18
|
+
type TooltipPopperProps = typeof tooltipPropsList[number];
|
|
19
|
+
export interface TooltipProps extends Omit<PopoverProps, TooltipPopperProps>, BaseProps {
|
|
20
20
|
/**
|
|
21
21
|
* Text to be rendered in `Tooltip`
|
|
22
22
|
*/
|
|
@@ -49,7 +49,7 @@ export const Tooltip = (props: TooltipProps) => {
|
|
|
49
49
|
// ...Popover.defaultProps,
|
|
50
50
|
// hoverable: false
|
|
51
51
|
// }, propsList);
|
|
52
|
-
Tooltip.defaultProps = Object.assign({}, filterProps(Popover.defaultProps,
|
|
52
|
+
Tooltip.defaultProps = Object.assign({}, filterProps(Popover.defaultProps, tooltipPropsList), {
|
|
53
53
|
hoverable: false,
|
|
54
54
|
});
|
|
55
55
|
|
|
@@ -156,7 +156,7 @@ const VerificationCodeInput = (props: VerificationCodeInputProps) => {
|
|
|
156
156
|
const prev = refs[prevIndex];
|
|
157
157
|
const nextRef = refs[nextIndex];
|
|
158
158
|
switch (e.key) {
|
|
159
|
-
case KEY_CODE.backspace:
|
|
159
|
+
case KEY_CODE.backspace: {
|
|
160
160
|
e.preventDefault();
|
|
161
161
|
const vals = [...values];
|
|
162
162
|
if (values[index]) {
|
|
@@ -168,26 +168,30 @@ const VerificationCodeInput = (props: VerificationCodeInputProps) => {
|
|
|
168
168
|
setValues(vals);
|
|
169
169
|
}
|
|
170
170
|
break;
|
|
171
|
-
|
|
171
|
+
}
|
|
172
|
+
case KEY_CODE.left: {
|
|
172
173
|
e.preventDefault();
|
|
173
174
|
if (prev && prev.current) {
|
|
174
175
|
prev.current.focus({ preventScroll: true });
|
|
175
176
|
}
|
|
176
177
|
break;
|
|
177
|
-
|
|
178
|
+
}
|
|
179
|
+
case KEY_CODE.right: {
|
|
178
180
|
e.preventDefault();
|
|
179
181
|
if (nextRef && nextRef.current) {
|
|
180
182
|
nextRef.current.focus({ preventScroll: true });
|
|
181
183
|
}
|
|
182
184
|
break;
|
|
185
|
+
}
|
|
183
186
|
case KEY_CODE.up:
|
|
184
187
|
case KEY_CODE.down:
|
|
185
188
|
case KEY_CODE.e:
|
|
186
|
-
case KEY_CODE.E:
|
|
189
|
+
case KEY_CODE.E: {
|
|
187
190
|
if (type === 'number') {
|
|
188
191
|
e.preventDefault();
|
|
189
192
|
}
|
|
190
193
|
break;
|
|
194
|
+
}
|
|
191
195
|
default:
|
|
192
196
|
break;
|
|
193
197
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { VerificationCodeInput, Label } from '@/index';
|
|
3
|
-
import { select, text, boolean
|
|
3
|
+
import { select, text, boolean } from '@storybook/addon-knobs';
|
|
4
4
|
import { action } from '@storybook/addon-actions';
|
|
5
5
|
|
|
6
6
|
// CSF format story
|
|
@@ -38,6 +38,8 @@ export const all = () => {
|
|
|
38
38
|
placeholder={placeholder}
|
|
39
39
|
error={error}
|
|
40
40
|
pattern={pattern}
|
|
41
|
+
// TODO(a11y)
|
|
42
|
+
// eslint-disable-next-line
|
|
41
43
|
autoFocus={autoFocus}
|
|
42
44
|
/>
|
|
43
45
|
</>
|
|
@@ -16,6 +16,31 @@ import {
|
|
|
16
16
|
convertToDate,
|
|
17
17
|
} from './utility';
|
|
18
18
|
|
|
19
|
+
type OnHover = React.MouseEvent<HTMLSpanElement> | React.MouseEvent<HTMLDivElement>;
|
|
20
|
+
interface hoveredDateProps {
|
|
21
|
+
value: number;
|
|
22
|
+
isToday: boolean;
|
|
23
|
+
isDisabled: boolean;
|
|
24
|
+
todayDate?: Date;
|
|
25
|
+
fullDate: Date;
|
|
26
|
+
date: number;
|
|
27
|
+
month: string;
|
|
28
|
+
year: number;
|
|
29
|
+
dayName: string;
|
|
30
|
+
}
|
|
31
|
+
interface hoveredMonthProps {
|
|
32
|
+
value: string;
|
|
33
|
+
month: string;
|
|
34
|
+
year?: number;
|
|
35
|
+
isCurrentMonth: boolean;
|
|
36
|
+
isDisabled: boolean;
|
|
37
|
+
}
|
|
38
|
+
interface hoveredYearProps {
|
|
39
|
+
value: number;
|
|
40
|
+
year: number;
|
|
41
|
+
isCurrentYear: boolean;
|
|
42
|
+
isDisabled: boolean;
|
|
43
|
+
}
|
|
19
44
|
export interface SharedProps extends BaseProps {
|
|
20
45
|
/**
|
|
21
46
|
* Size of `Calendar`
|
|
@@ -73,6 +98,18 @@ export type CalendarProps = {
|
|
|
73
98
|
* Callback function called when range is changed
|
|
74
99
|
*/
|
|
75
100
|
onRangeChange?: (startDate: Date | undefined, endDate: Date | undefined) => void;
|
|
101
|
+
/**
|
|
102
|
+
* Callback function called when a date is hovered
|
|
103
|
+
*/
|
|
104
|
+
onDateHover?: (dateData: hoveredDateProps, evnt: OnHover) => void;
|
|
105
|
+
/**
|
|
106
|
+
* Callback function called when a month is hovered
|
|
107
|
+
*/
|
|
108
|
+
onMonthHover?: (monthData: hoveredMonthProps, evnt: OnHover) => void;
|
|
109
|
+
/**
|
|
110
|
+
* Callback function called when a year is hovered
|
|
111
|
+
*/
|
|
112
|
+
onYearHover?: (yearData: hoveredYearProps, evnt: OnHover) => void;
|
|
76
113
|
/**
|
|
77
114
|
* Selected date
|
|
78
115
|
*/
|
|
@@ -351,6 +388,22 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
351
388
|
});
|
|
352
389
|
};
|
|
353
390
|
|
|
391
|
+
yearMouseOverHandler = (
|
|
392
|
+
year: number,
|
|
393
|
+
isCurrentYear: boolean,
|
|
394
|
+
isDisabled: boolean,
|
|
395
|
+
ev: React.MouseEvent<HTMLDivElement>
|
|
396
|
+
) => {
|
|
397
|
+
const { onYearHover } = this.props;
|
|
398
|
+
const yearData = {
|
|
399
|
+
value: year,
|
|
400
|
+
year: year,
|
|
401
|
+
isCurrentYear: isCurrentYear,
|
|
402
|
+
isDisabled: isDisabled,
|
|
403
|
+
};
|
|
404
|
+
if (onYearHover) onYearHover(yearData, ev);
|
|
405
|
+
};
|
|
406
|
+
|
|
354
407
|
selectMonth = (month: number) => () => {
|
|
355
408
|
this.updateState(this.state.yearNav, month);
|
|
356
409
|
this.setState({
|
|
@@ -358,7 +411,38 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
358
411
|
});
|
|
359
412
|
};
|
|
360
413
|
|
|
414
|
+
monthMouseOverHandler = (
|
|
415
|
+
month: number,
|
|
416
|
+
isCurrentMonth: boolean,
|
|
417
|
+
isDisabled: boolean,
|
|
418
|
+
ev: React.MouseEvent<HTMLDivElement>
|
|
419
|
+
) => {
|
|
420
|
+
const { months } = config;
|
|
421
|
+
const { onMonthHover } = this.props;
|
|
422
|
+
const monthData = {
|
|
423
|
+
value: months[month],
|
|
424
|
+
month: months[month],
|
|
425
|
+
year: this.state.year,
|
|
426
|
+
isCurrentMonth: isCurrentMonth,
|
|
427
|
+
isDisabled: isDisabled,
|
|
428
|
+
};
|
|
429
|
+
if (onMonthHover) onMonthHover(monthData, ev);
|
|
430
|
+
};
|
|
431
|
+
|
|
361
432
|
selectDate = (index: number, date: number, prevMonthDayRange: number, dayRange: number) => {
|
|
433
|
+
const d = this.calculateDate(index, date, prevMonthDayRange, dayRange, false);
|
|
434
|
+
this.setState({
|
|
435
|
+
currDate: d,
|
|
436
|
+
});
|
|
437
|
+
};
|
|
438
|
+
|
|
439
|
+
calculateDate = (
|
|
440
|
+
index: number,
|
|
441
|
+
date: number,
|
|
442
|
+
prevMonthDayRange: number,
|
|
443
|
+
dayRange: number,
|
|
444
|
+
isDateHovered: boolean
|
|
445
|
+
) => {
|
|
362
446
|
let neighbouringMonthIndex;
|
|
363
447
|
let neighbouringMonthDate;
|
|
364
448
|
let type = '';
|
|
@@ -375,12 +459,12 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
375
459
|
neighbouringMonthDate = date;
|
|
376
460
|
}
|
|
377
461
|
const { year, month } = this.getNavDateInfo(neighbouringMonthIndex);
|
|
378
|
-
|
|
379
|
-
|
|
462
|
+
if (isDateHovered === false) {
|
|
463
|
+
this.updateState(year, month, neighbouringMonthDate);
|
|
464
|
+
this.onNavIconClickHandler(type)();
|
|
465
|
+
}
|
|
380
466
|
const d = this.getDateValue(year, month, neighbouringMonthDate);
|
|
381
|
-
|
|
382
|
-
currDate: d,
|
|
383
|
-
});
|
|
467
|
+
return d;
|
|
384
468
|
};
|
|
385
469
|
|
|
386
470
|
onNavIconClickHandler = (type: string) => () => {
|
|
@@ -525,6 +609,8 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
525
609
|
return (
|
|
526
610
|
<div className={headerContentClass}>
|
|
527
611
|
{view !== 'date' && (
|
|
612
|
+
// TODO(a11y)
|
|
613
|
+
// eslint-disable-next-line
|
|
528
614
|
<div
|
|
529
615
|
className="d-flex justify-content-center align-items-center"
|
|
530
616
|
onClick={this.onNavHeadingClickHandler(view)}
|
|
@@ -532,14 +618,19 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
532
618
|
{renderHeading(headerContent)}
|
|
533
619
|
</div>
|
|
534
620
|
)}
|
|
621
|
+
|
|
535
622
|
{view === 'date' && (
|
|
536
623
|
<>
|
|
624
|
+
{/* TODO(a11y) */}
|
|
625
|
+
{/* eslint-disable-next-line */}
|
|
537
626
|
<div
|
|
538
627
|
onClick={this.onNavHeadingClickHandler(view)}
|
|
539
628
|
className="d-flex justify-content-center align-items-center"
|
|
540
629
|
>
|
|
541
630
|
{renderHeading(months[monthNavVal])}
|
|
542
631
|
</div>
|
|
632
|
+
{/* TODO(a11y) */}
|
|
633
|
+
{/* eslint-disable-next-line */}
|
|
543
634
|
<div
|
|
544
635
|
className="ml-4 d-flex justify-content-center align-items-center"
|
|
545
636
|
onClick={this.onNavHeadingClickHandler('month')}
|
|
@@ -584,11 +675,14 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
584
675
|
});
|
|
585
676
|
|
|
586
677
|
return (
|
|
678
|
+
// TODO(a11y)
|
|
679
|
+
// eslint-disable-next-line
|
|
587
680
|
<div
|
|
588
681
|
key={`${row}-${col}`}
|
|
589
682
|
data-test="DesignSystem-Calendar--yearValue"
|
|
590
683
|
className={valueClass}
|
|
591
684
|
onClick={this.selectYear(year)}
|
|
685
|
+
onMouseOver={this.yearMouseOverHandler.bind(this, year, isCurrentYear(), disabled)}
|
|
592
686
|
>
|
|
593
687
|
<Text
|
|
594
688
|
size={size === 'small' ? 'small' : 'regular'}
|
|
@@ -632,11 +726,14 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
632
726
|
});
|
|
633
727
|
|
|
634
728
|
return (
|
|
729
|
+
//TODO(a11y)
|
|
730
|
+
//eslint-disable-next-line
|
|
635
731
|
<div
|
|
636
732
|
key={`${row}-${col}`}
|
|
637
733
|
data-test="DesignSystem-Calendar--monthValue"
|
|
638
734
|
className={valueClass}
|
|
639
735
|
onClick={this.selectMonth(month)}
|
|
736
|
+
onMouseOver={this.monthMouseOverHandler.bind(this, month, isCurrentMonth(), disabled)}
|
|
640
737
|
>
|
|
641
738
|
<Text
|
|
642
739
|
size={size === 'small' ? 'small' : 'regular'}
|
|
@@ -703,7 +800,7 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
703
800
|
renderDateValues = (index: number) => {
|
|
704
801
|
const { daysInRow, monthBlock } = config;
|
|
705
802
|
|
|
706
|
-
const { size, rangePicker, firstDayOfWeek, disabledBefore, disabledAfter, monthsInView } = this.props;
|
|
803
|
+
const { size, rangePicker, firstDayOfWeek, disabledBefore, disabledAfter, monthsInView, onDateHover } = this.props;
|
|
707
804
|
|
|
708
805
|
const {
|
|
709
806
|
startDate,
|
|
@@ -727,10 +824,10 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
727
824
|
const dayDiff = getFirstDayOfMonth(yearNavVal, monthNavVal) - getIndexOfDay(firstDayOfWeek);
|
|
728
825
|
const dummyDays = Math.abs(dayDiff);
|
|
729
826
|
let noOfRows = Math.ceil((dayRange + dummyDays) / daysInRow);
|
|
827
|
+
// TODO: @veekays
|
|
828
|
+
// if(noOfRows !== 6 && monthsInView <= 1) ?
|
|
730
829
|
if (noOfRows === 6) {
|
|
731
|
-
noOfRows = noOfRows;
|
|
732
830
|
} else if (monthsInView > 1) {
|
|
733
|
-
noOfRows = noOfRows;
|
|
734
831
|
} else {
|
|
735
832
|
noOfRows = noOfRows + 1;
|
|
736
833
|
}
|
|
@@ -761,6 +858,29 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
761
858
|
}
|
|
762
859
|
};
|
|
763
860
|
|
|
861
|
+
const onMouseEnterHandler = (
|
|
862
|
+
date: number,
|
|
863
|
+
isToday: boolean,
|
|
864
|
+
isDisabled: boolean,
|
|
865
|
+
ev: React.MouseEvent<HTMLSpanElement>
|
|
866
|
+
) => {
|
|
867
|
+
const d = this.calculateDate(index, date, prevMonthDayRange, dayRange, true) || new Date();
|
|
868
|
+
const { months, days } = config;
|
|
869
|
+
const dayName = days.large[d.getDay()];
|
|
870
|
+
const dateData = {
|
|
871
|
+
value: d.getDate(),
|
|
872
|
+
isToday: isToday,
|
|
873
|
+
isDisabled: isDisabled,
|
|
874
|
+
todayDate: this.state.currDate,
|
|
875
|
+
fullDate: d,
|
|
876
|
+
date: d.getDate(),
|
|
877
|
+
month: months[d.getMonth()],
|
|
878
|
+
year: d.getFullYear(),
|
|
879
|
+
dayName: dayName,
|
|
880
|
+
};
|
|
881
|
+
if (onDateHover) onDateHover(dateData, ev);
|
|
882
|
+
};
|
|
883
|
+
|
|
764
884
|
return Array.from({ length: noOfRows }, (_y, row) => {
|
|
765
885
|
return (
|
|
766
886
|
<div key={row} className="Calendar-valueRow">
|
|
@@ -876,6 +996,7 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
876
996
|
className={valueClass}
|
|
877
997
|
onClick={onClickHandler(date)}
|
|
878
998
|
onMouseOver={onMouseOverHandler(date)}
|
|
999
|
+
onMouseEnter={onMouseEnterHandler.bind(this, date, today(), disabled)}
|
|
879
1000
|
>
|
|
880
1001
|
{date}
|
|
881
1002
|
</Text>
|
|
@@ -891,6 +1012,7 @@ export class Calendar extends React.Component<CalendarProps, CalendarState> {
|
|
|
891
1012
|
className={valueClass}
|
|
892
1013
|
onClick={onClickHandler(date)}
|
|
893
1014
|
onMouseOver={onMouseOverHandler(date)}
|
|
1015
|
+
onMouseEnter={onMouseEnterHandler.bind(this, date, today(), disabled)}
|
|
894
1016
|
>
|
|
895
1017
|
{date <= 0 ? prevMonthDayRange + date : date - dayRange}
|
|
896
1018
|
</Text>
|
|
@@ -9,10 +9,10 @@ export const firstDayOfWeek = () => {
|
|
|
9
9
|
|
|
10
10
|
const style = {
|
|
11
11
|
flexWrap: 'wrap',
|
|
12
|
-
};
|
|
12
|
+
} as const;
|
|
13
|
+
// to freeze the object for typescript
|
|
13
14
|
|
|
14
15
|
return (
|
|
15
|
-
// @ts-ignore
|
|
16
16
|
<div className="d-flex" style={style}>
|
|
17
17
|
{values.map((v, index) => (
|
|
18
18
|
<div className="mr-9 mt-5" key={index}>
|
|
@@ -214,4 +214,31 @@ describe('Calendar compoennt', () => {
|
|
|
214
214
|
fireEvent.click(month);
|
|
215
215
|
expect(FunctionValue).toHaveBeenCalled();
|
|
216
216
|
});
|
|
217
|
+
|
|
218
|
+
it('calls onMouseOver handler when date value is hovered', () => {
|
|
219
|
+
const { getAllByTestId } = render(
|
|
220
|
+
<Calendar date={new Date(2020, 2, 15)} rangePicker={false} onDateHover={FunctionValue} view="date" />
|
|
221
|
+
);
|
|
222
|
+
const date = getAllByTestId('DesignSystem-Calendar--dateValue')[0];
|
|
223
|
+
fireEvent.mouseOver(date);
|
|
224
|
+
expect(FunctionValue).toHaveBeenCalled();
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
it('calls onMouseOver handler when month value is hovered', () => {
|
|
228
|
+
const { getAllByTestId } = render(
|
|
229
|
+
<Calendar date={new Date(2020, 2, 15)} rangePicker={false} onMonthHover={FunctionValue} view="month" />
|
|
230
|
+
);
|
|
231
|
+
const month = getAllByTestId('DesignSystem-Calendar--monthValue')[0];
|
|
232
|
+
fireEvent.mouseOver(month);
|
|
233
|
+
expect(FunctionValue).toHaveBeenCalled();
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
it('calls onMouseOver handler when year value is hovered', () => {
|
|
237
|
+
const { getAllByTestId } = render(
|
|
238
|
+
<Calendar date={new Date(2020, 2, 15)} rangePicker={false} onYearHover={FunctionValue} view="year" />
|
|
239
|
+
);
|
|
240
|
+
const year = getAllByTestId('DesignSystem-Calendar--yearValue')[0];
|
|
241
|
+
fireEvent.mouseOver(year);
|
|
242
|
+
expect(FunctionValue).toHaveBeenCalled();
|
|
243
|
+
});
|
|
217
244
|
});
|
|
@@ -151,9 +151,9 @@ export const translateToDate = (format: string, val: string, validators: Validat
|
|
|
151
151
|
if (isValid(validators, val, format)) {
|
|
152
152
|
const separator = format.includes('/') ? '/' : '-';
|
|
153
153
|
|
|
154
|
-
let year
|
|
155
|
-
month
|
|
156
|
-
date
|
|
154
|
+
let year = -1,
|
|
155
|
+
month = -1,
|
|
156
|
+
date = -1;
|
|
157
157
|
const v = val.split(separator);
|
|
158
158
|
format.split(separator).forEach((f, i) => {
|
|
159
159
|
switch (f) {
|