@innovaccer/design-system 2.6.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 +10 -9
- package/.github/workflows/chromatic.yml +5 -0
- package/.github/workflows/pull_request.yml +1 -1
- package/.storybook/main.js +4 -0
- package/.vscode/settings.json +11 -0
- package/CHANGELOG.md +36 -0
- package/CONTRIBUTING.md +7 -1
- package/core/accessibility/utils/useAccessibilityProps.ts +4 -2
- package/core/common.type.tsx +22 -0
- package/core/components/atoms/_chip/__tests__/__snapshots__/_chip.test.tsx.snap +9 -9
- package/core/components/atoms/_chip/index.tsx +17 -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__/index.story.tsx +1 -1
- package/core/components/atoms/button/__stories__/variants/Appearance.story.tsx +2 -2
- package/core/components/atoms/button/__stories__/variants/Expanded.story.tsx +2 -2
- package/core/components/atoms/button/__stories__/variants/icon/IconLeft.story.tsx +2 -2
- package/core/components/atoms/button/__stories__/variants/icon/IconRight.story.tsx +2 -2
- 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 +5 -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/dropdown/Dropdown.tsx +18 -17
- package/core/components/atoms/dropdown/DropdownButton.tsx +2 -2
- package/core/components/atoms/dropdown/DropdownList.tsx +10 -5
- 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 +1 -1
- 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/index.tsx +1 -1
- 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 +3 -3
- package/core/components/atoms/input/Input.tsx +3 -3
- package/core/components/atoms/input/__stories__/InputWithCaption.story.tsx +62 -0
- package/core/components/atoms/input/__stories__/LabelPosition.story.tsx +38 -0
- 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/label/Label.tsx +1 -1
- package/core/components/atoms/legend/Legend.tsx +2 -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 +5 -5
- package/core/components/atoms/multiSlider/SliderUtils.tsx +1 -4
- package/core/components/atoms/multiSlider/index.tsx +3 -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 +2 -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 +7 -8
- 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/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 +0 -131
- package/core/components/css-utilities/Schema.tsx +1 -1
- package/core/components/css-utilities/Spacing/Schema.tsx +1 -1
- package/core/components/molecules/chipInput/__tests__/__snapshots__/ChipInput.test.tsx.snap +2 -2
- package/core/components/molecules/dropzone/Dropzone.tsx +3 -3
- package/core/components/molecules/dropzone/DropzoneBase.tsx +22 -38
- 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/__tests__/__snapshots__/EditableChipInput.test.tsx.snap +4 -4
- package/core/components/molecules/emptyState/EmptyState.tsx +4 -4
- package/core/components/molecules/emptyState/__stories__/pageNotLoadedWithSVG.story.tsx +26 -26
- package/core/components/molecules/fileList/FileListItem.tsx +1 -2
- package/core/components/molecules/fileUploader/FileUploaderItem.tsx +1 -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/modal/Modal.tsx +4 -6
- package/core/components/molecules/modal/__stories__/Confirmation.story.tsx +1 -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/tooltip/Tooltip.tsx +4 -4
- package/core/components/organisms/calendar/__stories__/variants/firstDayOfWeek.story.tsx +2 -2
- package/core/components/organisms/calendar/utility.ts +3 -3
- package/core/components/organisms/choiceList/ChoiceList.tsx +11 -11
- package/core/components/organisms/datePicker/DatePicker.tsx +1 -1
- package/core/components/organisms/datePicker/Trigger.tsx +1 -5
- 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 +16 -16
- package/core/components/organisms/grid/Cell.tsx +19 -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/__stories__/_common_/editableSchema.tsx +1 -3
- package/core/components/organisms/grid/__stories__/_common_/fetchData.ts +1 -1
- 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/inlineMessage/InlineMessage.tsx +2 -2
- package/core/components/organisms/inlineMessage/__tests__/InlineMessage.test.tsx +3 -2
- 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/table/Table.tsx +2 -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 +1 -1
- package/core/components/organisms/table/__stories__/StandardTable.story.tsx +1 -1
- package/core/components/organisms/table/__stories__/TableAsDescriptionList.story.tsx +1 -1
- package/core/components/organisms/table/__stories__/TableAsOptionList.story.tsx +1 -1
- 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__/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/withPagination.story.tsx +2 -2
- package/core/components/organisms/timePicker/TimePicker.tsx +3 -7
- package/core/components/organisms/verticalNav/__stories__/schema.tsx +0 -2
- package/core/components/organisms/verticalNav/__tests__/VerticalNav.test.tsx +1 -2
- package/core/global.d.ts +9 -0
- package/core/index.tsx +1 -1
- package/core/utils/__tests__/__snapshots__/TS.test.tsx.snap +18 -5
- package/core/utils/docPage/generateImports.tsx +2 -3
- package/core/utils/docPage/index.tsx +30 -20
- package/core/utils/docPage/sandbox.tsx +14 -7
- package/core/utils/overlayHelper.ts +7 -3
- package/core/utils/testHelper.ts +1 -1
- package/core/utils/types.tsx +1 -1
- package/css/dist/index.css +48 -30
- package/css/dist/index.css.map +1 -1
- package/css/src/components/button.css +5 -5
- package/css/src/components/calendar.css +1 -1
- package/css/src/components/chip.css +6 -4
- package/css/src/components/fullscreenModal.css +4 -3
- package/css/src/components/message.css +0 -5
- package/css/src/components/switch.css +23 -2
- package/css/src/components/toast.css +0 -5
- package/css/src/variables/index.css +5 -2
- package/dist/core/accessibility/utils/useAccessibilityProps.d.ts +4 -1
- 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/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 +2 -2
- package/dist/core/components/atoms/input/Input.d.ts +3 -3
- 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 +1 -2
- 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 +6 -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/choiceList/ChoiceList.d.ts +5 -6
- 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/dateRangePicker/withCustomPopover.story.d.ts +5 -1
- 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 +221 -245
- package/dist/index.js +225 -233
- 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 +20 -18
- 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/core/components/atoms/button/__stories__/variants/state/Success.story.tsx +0 -89
- 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/types/innovaccer-design-system/index.d.ts +0 -39
- package/types/innovaccer-design-system/innovaccer-design-system-tests.ts +0 -0
|
@@ -4,9 +4,9 @@ import classNames from 'classnames';
|
|
|
4
4
|
import { BaseProps, BaseHtmlProps } from '@/utils/types';
|
|
5
5
|
|
|
6
6
|
export type ButtonType = 'button' | 'submit' | 'reset';
|
|
7
|
-
export type
|
|
8
|
-
export type
|
|
9
|
-
export type
|
|
7
|
+
export type ButtonAppearance = 'basic' | 'primary' | 'success' | 'alert' | 'transparent';
|
|
8
|
+
export type ButtonSize = 'tiny' | 'regular' | 'large';
|
|
9
|
+
export type ButtonAlignment = 'left' | 'right';
|
|
10
10
|
|
|
11
11
|
export interface ButtonProps extends BaseProps, BaseHtmlProps<HTMLButtonElement> {
|
|
12
12
|
/**
|
|
@@ -17,12 +17,15 @@ export interface ButtonProps extends BaseProps, BaseHtmlProps<HTMLButtonElement>
|
|
|
17
17
|
* The size of `Button`
|
|
18
18
|
* @default "regular"
|
|
19
19
|
*/
|
|
20
|
-
size?:
|
|
20
|
+
size?: ButtonSize;
|
|
21
21
|
/**
|
|
22
22
|
* Color of the `Button`
|
|
23
|
+
*
|
|
24
|
+
* **'success' has been deprecated and all success button types will now be changed to primary button automatically**
|
|
25
|
+
*
|
|
23
26
|
* @default "basic"
|
|
24
27
|
*/
|
|
25
|
-
appearance?:
|
|
28
|
+
appearance?: ButtonAppearance;
|
|
26
29
|
/**
|
|
27
30
|
* Disables the `Button`, making it unable to be pressed
|
|
28
31
|
*/
|
|
@@ -54,7 +57,7 @@ export interface ButtonProps extends BaseProps, BaseHtmlProps<HTMLButtonElement>
|
|
|
54
57
|
* Align icon left or right
|
|
55
58
|
* @default "left"
|
|
56
59
|
*/
|
|
57
|
-
iconAlign?:
|
|
60
|
+
iconAlign?: ButtonAlignment;
|
|
58
61
|
/**
|
|
59
62
|
* Determines if size of icon is large
|
|
60
63
|
*
|
|
@@ -88,7 +91,7 @@ export interface ButtonProps extends BaseProps, BaseHtmlProps<HTMLButtonElement>
|
|
|
88
91
|
onMouseLeave?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
|
|
89
92
|
}
|
|
90
93
|
|
|
91
|
-
const sizeMapping: Record<
|
|
94
|
+
const sizeMapping: Record<ButtonSize, number> = {
|
|
92
95
|
tiny: 12,
|
|
93
96
|
regular: 16,
|
|
94
97
|
large: 20,
|
|
@@ -7,7 +7,7 @@ import Button from '../Button';
|
|
|
7
7
|
export const all = () => {
|
|
8
8
|
const type = select('type', ['button', 'submit', 'reset'], undefined);
|
|
9
9
|
|
|
10
|
-
const appearance = select('appearance', ['basic', 'primary', '
|
|
10
|
+
const appearance = select('appearance', ['basic', 'primary', 'alert', 'transparent'], undefined);
|
|
11
11
|
|
|
12
12
|
const size = select('size', ['tiny', 'regular', 'large'], undefined);
|
|
13
13
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { text } from '@storybook/addon-knobs';
|
|
3
3
|
import { action } from '@storybook/addon-actions';
|
|
4
|
-
import Button, {
|
|
4
|
+
import Button, { ButtonAppearance } from '../../Button';
|
|
5
5
|
import Text from '@/components/atoms/text';
|
|
6
6
|
|
|
7
7
|
// CSF format story
|
|
@@ -10,7 +10,7 @@ export const appearance = () => {
|
|
|
10
10
|
const expanded = false;
|
|
11
11
|
const loading = false;
|
|
12
12
|
|
|
13
|
-
const appearances:
|
|
13
|
+
const appearances: ButtonAppearance[] = ['basic', 'primary', 'alert', 'transparent'];
|
|
14
14
|
|
|
15
15
|
const children = text('children', 'Button');
|
|
16
16
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { text } from '@storybook/addon-knobs';
|
|
3
3
|
import { action } from '@storybook/addon-actions';
|
|
4
|
-
import Button, {
|
|
4
|
+
import Button, { ButtonAppearance } from '../../Button';
|
|
5
5
|
import Text from '@/components/atoms/text';
|
|
6
6
|
|
|
7
7
|
// CSF format story
|
|
@@ -10,7 +10,7 @@ export const expanded = () => {
|
|
|
10
10
|
const ButtonExpanded = true;
|
|
11
11
|
const loading = false;
|
|
12
12
|
|
|
13
|
-
const appearances:
|
|
13
|
+
const appearances: ButtonAppearance[] = ['basic', 'primary', 'alert'];
|
|
14
14
|
|
|
15
15
|
const children = text('children', 'Button');
|
|
16
16
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { text } from '@storybook/addon-knobs';
|
|
3
3
|
import { action } from '@storybook/addon-actions';
|
|
4
|
-
import Button, {
|
|
4
|
+
import Button, { ButtonSize } from '../../../Button';
|
|
5
5
|
import Text from '@/components/atoms/text';
|
|
6
6
|
|
|
7
7
|
// CSF format story
|
|
@@ -11,7 +11,7 @@ export const iconLeft = () => {
|
|
|
11
11
|
const loading = false;
|
|
12
12
|
const iconAlign = 'left';
|
|
13
13
|
|
|
14
|
-
const size:
|
|
14
|
+
const size: ButtonSize[] = ['tiny', 'regular', 'large'];
|
|
15
15
|
|
|
16
16
|
const icon = text('icon', 'refresh');
|
|
17
17
|
const children = text('children', 'Button');
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { text } from '@storybook/addon-knobs';
|
|
3
3
|
import { action } from '@storybook/addon-actions';
|
|
4
|
-
import Button, {
|
|
4
|
+
import Button, { ButtonSize } from '../../../Button';
|
|
5
5
|
import Text from '@/components/atoms/text';
|
|
6
6
|
|
|
7
7
|
// CSF format story
|
|
@@ -11,7 +11,7 @@ export const iconRight = () => {
|
|
|
11
11
|
const loading = false;
|
|
12
12
|
const iconAlign = 'right';
|
|
13
13
|
|
|
14
|
-
const size:
|
|
14
|
+
const size: ButtonSize[] = ['tiny', 'regular', 'large'];
|
|
15
15
|
|
|
16
16
|
const icon = text('icon', 'refresh');
|
|
17
17
|
const children = text('children', 'Button');
|
|
@@ -10,7 +10,7 @@ const buttonType = ['button', 'submit', 'reset'];
|
|
|
10
10
|
const icon = 'events';
|
|
11
11
|
const iconAlign = ['left', 'right'];
|
|
12
12
|
const sizes: Props['size'][] = ['tiny', 'regular', 'large'];
|
|
13
|
-
const appearance = ['basic', 'primary', '
|
|
13
|
+
const appearance = ['basic', 'primary', 'alert', 'transparent'];
|
|
14
14
|
const sizeMapping: Record<MakeRequired<Props['size']>, number> = {
|
|
15
15
|
tiny: 12,
|
|
16
16
|
regular: 16,
|
|
@@ -306,108 +306,6 @@ exports[`Button component
|
|
|
306
306
|
</body>
|
|
307
307
|
`;
|
|
308
308
|
|
|
309
|
-
exports[`Button component
|
|
310
|
-
appearance: "success", disabled: true
|
|
311
|
-
1`] = `
|
|
312
|
-
<body>
|
|
313
|
-
<div>
|
|
314
|
-
<button
|
|
315
|
-
class="Button Button--regular Button--success Button--iconAlign-left"
|
|
316
|
-
data-test="DesignSystem-Button"
|
|
317
|
-
disabled=""
|
|
318
|
-
tabindex="0"
|
|
319
|
-
>
|
|
320
|
-
Button
|
|
321
|
-
</button>
|
|
322
|
-
</div>
|
|
323
|
-
</body>
|
|
324
|
-
`;
|
|
325
|
-
|
|
326
|
-
exports[`Button component
|
|
327
|
-
appearance: "success", expanded: false
|
|
328
|
-
1`] = `
|
|
329
|
-
<body>
|
|
330
|
-
<div>
|
|
331
|
-
<button
|
|
332
|
-
class="Button Button--regular Button--success Button--iconAlign-left"
|
|
333
|
-
data-test="DesignSystem-Button"
|
|
334
|
-
tabindex="0"
|
|
335
|
-
>
|
|
336
|
-
Button
|
|
337
|
-
</button>
|
|
338
|
-
</div>
|
|
339
|
-
</body>
|
|
340
|
-
`;
|
|
341
|
-
|
|
342
|
-
exports[`Button component
|
|
343
|
-
appearance: "success", expanded: true
|
|
344
|
-
1`] = `
|
|
345
|
-
<body>
|
|
346
|
-
<div>
|
|
347
|
-
<button
|
|
348
|
-
class="Button Button--expanded Button--regular Button--success Button--iconAlign-left"
|
|
349
|
-
data-test="DesignSystem-Button"
|
|
350
|
-
tabindex="0"
|
|
351
|
-
>
|
|
352
|
-
Button
|
|
353
|
-
</button>
|
|
354
|
-
</div>
|
|
355
|
-
</body>
|
|
356
|
-
`;
|
|
357
|
-
|
|
358
|
-
exports[`Button component
|
|
359
|
-
appearance: "success", loading: true
|
|
360
|
-
1`] = `
|
|
361
|
-
<body>
|
|
362
|
-
<div>
|
|
363
|
-
<button
|
|
364
|
-
class="Button Button--regular Button--success Button--iconAlign-left"
|
|
365
|
-
data-test="DesignSystem-Button"
|
|
366
|
-
disabled=""
|
|
367
|
-
tabindex="0"
|
|
368
|
-
>
|
|
369
|
-
<svg
|
|
370
|
-
class="Spinner Spinner--small Button-spinner"
|
|
371
|
-
data-test="DesignSystem-Button--Spinner"
|
|
372
|
-
viewBox="0 0 50 50"
|
|
373
|
-
>
|
|
374
|
-
<circle
|
|
375
|
-
class="Circle Circle--white"
|
|
376
|
-
cx="25"
|
|
377
|
-
cy="25"
|
|
378
|
-
fill="none"
|
|
379
|
-
r="20"
|
|
380
|
-
stroke-miterlimit="10"
|
|
381
|
-
stroke-width="4"
|
|
382
|
-
/>
|
|
383
|
-
</svg>
|
|
384
|
-
<span
|
|
385
|
-
class="Text Text--default Text--regular Button-text Button-text--hidden"
|
|
386
|
-
data-test="DesignSystem-Text"
|
|
387
|
-
>
|
|
388
|
-
Button
|
|
389
|
-
</span>
|
|
390
|
-
</button>
|
|
391
|
-
</div>
|
|
392
|
-
</body>
|
|
393
|
-
`;
|
|
394
|
-
|
|
395
|
-
exports[`Button component
|
|
396
|
-
appearance: "success", selected: true
|
|
397
|
-
1`] = `
|
|
398
|
-
<body>
|
|
399
|
-
<div>
|
|
400
|
-
<button
|
|
401
|
-
class="Button Button--regular Button--success Button--iconAlign-left"
|
|
402
|
-
data-test="DesignSystem-Button"
|
|
403
|
-
tabindex="0"
|
|
404
|
-
>
|
|
405
|
-
Button
|
|
406
|
-
</button>
|
|
407
|
-
</div>
|
|
408
|
-
</body>
|
|
409
|
-
`;
|
|
410
|
-
|
|
411
309
|
exports[`Button component
|
|
412
310
|
appearance: "transparent", disabled: true
|
|
413
311
|
1`] = `
|
|
@@ -957,41 +855,6 @@ exports[`Button component with no children
|
|
|
957
855
|
</body>
|
|
958
856
|
`;
|
|
959
857
|
|
|
960
|
-
exports[`Button component with no children
|
|
961
|
-
appearance: "success", loading: true
|
|
962
|
-
1`] = `
|
|
963
|
-
<body>
|
|
964
|
-
<div>
|
|
965
|
-
<button
|
|
966
|
-
class="Button Button--regular Button--regularSquare Button--success"
|
|
967
|
-
data-test="DesignSystem-Button"
|
|
968
|
-
disabled=""
|
|
969
|
-
tabindex="0"
|
|
970
|
-
>
|
|
971
|
-
<svg
|
|
972
|
-
class="Spinner Spinner--small Button-spinner"
|
|
973
|
-
data-test="DesignSystem-Button--Spinner"
|
|
974
|
-
viewBox="0 0 50 50"
|
|
975
|
-
>
|
|
976
|
-
<circle
|
|
977
|
-
class="Circle Circle--white"
|
|
978
|
-
cx="25"
|
|
979
|
-
cy="25"
|
|
980
|
-
fill="none"
|
|
981
|
-
r="20"
|
|
982
|
-
stroke-miterlimit="10"
|
|
983
|
-
stroke-width="4"
|
|
984
|
-
/>
|
|
985
|
-
</svg>
|
|
986
|
-
<span
|
|
987
|
-
class="Text Text--default Text--regular Button-text Button-text--hidden"
|
|
988
|
-
data-test="DesignSystem-Text"
|
|
989
|
-
/>
|
|
990
|
-
</button>
|
|
991
|
-
</div>
|
|
992
|
-
</body>
|
|
993
|
-
`;
|
|
994
|
-
|
|
995
858
|
exports[`Button component with no children
|
|
996
859
|
appearance: "transparent", loading: true
|
|
997
860
|
1`] = `
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Card, CardBody, CardHeader, Heading, Row, Column,
|
|
2
|
+
import { Card, CardBody, CardHeader, Heading, Row, Column, Button, EmptyState } from '@/index';
|
|
3
3
|
import image from './assets/empty.png';
|
|
4
4
|
|
|
5
5
|
// CSF format story
|
|
@@ -4,16 +4,15 @@ import Text from '@/components/atoms/text';
|
|
|
4
4
|
import Icon from '@/components/atoms/icon';
|
|
5
5
|
import { BaseProps, OmitNativeProps } from '@/utils/types';
|
|
6
6
|
import uidGenerator from '@/utils/uidGenerator';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
type ChangeEvent = React.ChangeEvent<HTMLInputElement>;
|
|
7
|
+
import { ChangeEvent } from '@/common.type';
|
|
8
|
+
export type CheckBoxSize = 'regular' | 'tiny';
|
|
10
9
|
|
|
11
10
|
export interface CheckboxProps extends BaseProps, OmitNativeProps<HTMLInputElement, 'onChange'> {
|
|
12
11
|
/**
|
|
13
12
|
* Size of the `Checkbox`
|
|
14
13
|
* @default "regular"
|
|
15
14
|
*/
|
|
16
|
-
size?:
|
|
15
|
+
size?: CheckBoxSize;
|
|
17
16
|
/**
|
|
18
17
|
* Default value of checked (Used in case of uncontrolled `Checkbox`)
|
|
19
18
|
*/
|
|
@@ -85,17 +84,17 @@ export const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>((props
|
|
|
85
84
|
return ref.current as HTMLInputElement;
|
|
86
85
|
});
|
|
87
86
|
|
|
88
|
-
const [checked, setChecked] = React.useState(
|
|
87
|
+
const [checked, setChecked] = React.useState(checkedProp === undefined ? defaultChecked : checkedProp);
|
|
89
88
|
|
|
90
89
|
React.useEffect(() => {
|
|
91
90
|
setIndeterminate(indeterminate);
|
|
92
91
|
}, [indeterminate]);
|
|
93
92
|
|
|
94
93
|
React.useEffect(() => {
|
|
95
|
-
if (
|
|
96
|
-
setChecked(
|
|
94
|
+
if (checkedProp !== undefined) {
|
|
95
|
+
setChecked(checkedProp);
|
|
97
96
|
}
|
|
98
|
-
}, [
|
|
97
|
+
}, [checkedProp]);
|
|
99
98
|
|
|
100
99
|
const CheckboxClass = classNames(
|
|
101
100
|
{
|
|
@@ -129,7 +128,7 @@ export const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>((props
|
|
|
129
128
|
};
|
|
130
129
|
|
|
131
130
|
const onChangeHandler = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
132
|
-
if (
|
|
131
|
+
if (checkedProp === undefined) {
|
|
133
132
|
setChecked(e.target.checked);
|
|
134
133
|
setIndeterminate(e.target.indeterminate);
|
|
135
134
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { text } from '@storybook/addon-knobs';
|
|
3
3
|
import Checkbox from '../../index';
|
|
4
|
-
import {
|
|
4
|
+
import { CheckBoxSize } from '../../Checkbox';
|
|
5
5
|
import Text from '@/components/atoms/text';
|
|
6
6
|
|
|
7
7
|
// CSF format story
|
|
8
8
|
export const size = () => {
|
|
9
|
-
const sizes:
|
|
9
|
+
const sizes: CheckBoxSize[] = ['tiny', 'regular'];
|
|
10
10
|
const label = text('label', 'Checkbox');
|
|
11
11
|
return (
|
|
12
12
|
<div className="d-flex">
|
|
@@ -3,7 +3,7 @@ import GenericChip from '../_chip';
|
|
|
3
3
|
import classNames from 'classnames';
|
|
4
4
|
import { BaseProps, extractBaseProps } from '@/utils/types';
|
|
5
5
|
|
|
6
|
-
export type
|
|
6
|
+
export type ChipType = 'action' | 'selection' | 'input';
|
|
7
7
|
export type Name = number | string;
|
|
8
8
|
|
|
9
9
|
export interface ChipProps extends BaseProps {
|
|
@@ -30,7 +30,7 @@ export interface ChipProps extends BaseProps {
|
|
|
30
30
|
/**
|
|
31
31
|
* Type of chip
|
|
32
32
|
*/
|
|
33
|
-
type:
|
|
33
|
+
type: ChipType;
|
|
34
34
|
/**
|
|
35
35
|
* Handler to be called when Chip is closed
|
|
36
36
|
*/
|
|
@@ -60,6 +60,7 @@ export const Chip = (props: ChipProps) => {
|
|
|
60
60
|
[`Chip-${type}--disabled`]: disabled,
|
|
61
61
|
[`Chip--${type}`]: type && !disabled,
|
|
62
62
|
[`Chip-${type}--selected`]: selected && !disabled,
|
|
63
|
+
[`Chip-selection--selectedDisabled`]: type === 'selection' && selected && disabled,
|
|
63
64
|
},
|
|
64
65
|
className
|
|
65
66
|
);
|
|
@@ -42,6 +42,23 @@ export const Selection = () => {
|
|
|
42
42
|
<br />
|
|
43
43
|
<Text weight="strong">Selected: true</Text>
|
|
44
44
|
</div>
|
|
45
|
+
<div className="mr-9">
|
|
46
|
+
<Chip
|
|
47
|
+
icon={icon}
|
|
48
|
+
label={label}
|
|
49
|
+
clearButton={true}
|
|
50
|
+
type="selection"
|
|
51
|
+
onClose={action(`onClose: ${name}`)}
|
|
52
|
+
onClick={action(`onClick: ${name}`)}
|
|
53
|
+
selected={true}
|
|
54
|
+
disabled={true}
|
|
55
|
+
name={'chip'}
|
|
56
|
+
/>
|
|
57
|
+
<br />
|
|
58
|
+
<Text weight="strong">Selected: true</Text>
|
|
59
|
+
<br></br>
|
|
60
|
+
<Text weight="strong">Disabled: true</Text>
|
|
61
|
+
</div>
|
|
45
62
|
</div>
|
|
46
63
|
);
|
|
47
64
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { boolean, text } from '@storybook/addon-knobs';
|
|
3
|
-
import Chip, {
|
|
3
|
+
import Chip, { ChipType } from '../../Chip';
|
|
4
4
|
import { action } from '@storybook/addon-actions';
|
|
5
5
|
import Text from '@/components/atoms/text';
|
|
6
6
|
export const Types = () => {
|
|
7
|
-
const types:
|
|
7
|
+
const types: ChipType[] = ['action', 'selection', 'input'];
|
|
8
8
|
const icon = text('icon', 'assessment');
|
|
9
9
|
const label = text('label', 'ChipLabel');
|
|
10
10
|
const clearButton = boolean('clearButton', true);
|
|
@@ -131,4 +131,11 @@ describe('Chip component', () => {
|
|
|
131
131
|
fireEvent.click(onClose);
|
|
132
132
|
expect(FunctionValue).toHaveBeenCalled();
|
|
133
133
|
});
|
|
134
|
+
|
|
135
|
+
it('renders chip component with prop: selected, disabled and type selection', () => {
|
|
136
|
+
const { queryByTestId } = render(
|
|
137
|
+
<Chip label="Chip" name="Chip" type="selection" disabled={true} selected={true} />
|
|
138
|
+
);
|
|
139
|
+
expect(queryByTestId('DesignSystem-Chip--GenericChip')).toHaveClass('Chip-selection--selectedDisabled');
|
|
140
|
+
});
|
|
134
141
|
});
|
|
@@ -39,7 +39,7 @@ exports[`ChipGroup component
|
|
|
39
39
|
data-test="DesignSystem-ChipGroup--Chip"
|
|
40
40
|
>
|
|
41
41
|
<i
|
|
42
|
-
class="material-icons material-icons-round Icon
|
|
42
|
+
class="material-icons material-icons-round Icon Chip-icon Chip-icon--left"
|
|
43
43
|
data-test="DesignSystem-GenericChip--Icon"
|
|
44
44
|
style="font-size: 16px; width: 16px;"
|
|
45
45
|
>
|
|
@@ -52,7 +52,7 @@ exports[`ChipGroup component
|
|
|
52
52
|
Input
|
|
53
53
|
</span>
|
|
54
54
|
<i
|
|
55
|
-
class="material-icons material-icons-round Icon
|
|
55
|
+
class="material-icons material-icons-round Icon Chip-icon Chip-icon--right cursor-pointer"
|
|
56
56
|
data-test="DesignSystem-GenericChip--clearButton"
|
|
57
57
|
role="button"
|
|
58
58
|
style="font-size: 16px; width: 16px;"
|
|
@@ -77,7 +77,7 @@ exports[`ChipGroup component
|
|
|
77
77
|
assessment_round
|
|
78
78
|
</i>
|
|
79
79
|
<span
|
|
80
|
-
class="Text Text--
|
|
80
|
+
class="Text Text--link Text--regular"
|
|
81
81
|
data-test="DesignSystem-GenericChip--Text"
|
|
82
82
|
>
|
|
83
83
|
Selection
|
|
@@ -101,7 +101,7 @@ exports[`ChipGroup component
|
|
|
101
101
|
data-test="DesignSystem-ChipGroup--Chip"
|
|
102
102
|
>
|
|
103
103
|
<i
|
|
104
|
-
class="material-icons material-icons-round Icon
|
|
104
|
+
class="material-icons material-icons-round Icon Chip-icon Chip-icon--left"
|
|
105
105
|
data-test="DesignSystem-GenericChip--Icon"
|
|
106
106
|
style="font-size: 16px; width: 16px;"
|
|
107
107
|
>
|
|
@@ -114,7 +114,7 @@ exports[`ChipGroup component
|
|
|
114
114
|
Selection
|
|
115
115
|
</span>
|
|
116
116
|
<i
|
|
117
|
-
class="material-icons material-icons-round Icon
|
|
117
|
+
class="material-icons material-icons-round Icon Chip-icon Chip-icon--right cursor-pointer"
|
|
118
118
|
data-test="DesignSystem-GenericChip--clearButton"
|
|
119
119
|
role="button"
|
|
120
120
|
style="font-size: 16px; width: 16px;"
|
|
@@ -3,9 +3,9 @@ import { render, fireEvent } from '@testing-library/react';
|
|
|
3
3
|
import { testHelper, filterUndefined, valueHelper, testMessageHelper } from '@/utils/testHelper';
|
|
4
4
|
import { ChipGroup } from '@/index';
|
|
5
5
|
import { ChipGroupProps as Props } from '@/index.type';
|
|
6
|
-
import {
|
|
6
|
+
import { ChipType } from '../../chip/Chip';
|
|
7
7
|
|
|
8
|
-
const type:
|
|
8
|
+
const type: ChipType[] = ['action', 'input', 'selection'];
|
|
9
9
|
const FunctionValue = jest.fn();
|
|
10
10
|
const onClick = jest.fn();
|
|
11
11
|
const onClose = jest.fn();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ChipType } from '../../chip/Chip';
|
|
3
3
|
import { action } from '@storybook/addon-actions';
|
|
4
4
|
import { ChipGroup } from '../ChipGroup';
|
|
5
5
|
export const all = () => {
|
|
6
|
-
const type:
|
|
6
|
+
const type: ChipType[] = ['action', 'input', 'selection'];
|
|
7
7
|
const list = [
|
|
8
8
|
{
|
|
9
9
|
label: 'Action',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { debounce } from 'throttle-debounce';
|
|
3
|
-
import DropdownList, { DropdownListProps, SelectAll, Selected
|
|
4
|
-
import { OptionSchema
|
|
3
|
+
import DropdownList, { DropdownListProps, SelectAll, Selected } from './DropdownList';
|
|
4
|
+
import { OptionSchema } from './option';
|
|
5
5
|
import {
|
|
6
6
|
getSearchedOptions,
|
|
7
7
|
getSelectAll,
|
|
@@ -12,11 +12,12 @@ import {
|
|
|
12
12
|
_isSelectAllPresent,
|
|
13
13
|
} from './utility';
|
|
14
14
|
import { BaseProps } from '@/utils/types';
|
|
15
|
+
import { ChangeEvent } from '@/common.type';
|
|
15
16
|
|
|
16
17
|
type fetchOptionsFunction = (searchTerm: string) => Promise<{
|
|
17
18
|
searchTerm?: string;
|
|
18
19
|
count: number;
|
|
19
|
-
options:
|
|
20
|
+
options: OptionSchema[];
|
|
20
21
|
}>;
|
|
21
22
|
|
|
22
23
|
export type EventType =
|
|
@@ -33,7 +34,7 @@ interface ControlledProps {
|
|
|
33
34
|
* Array of selected options <br/>
|
|
34
35
|
* **Denotes `Controlled Dropdown`**
|
|
35
36
|
*/
|
|
36
|
-
selected?:
|
|
37
|
+
selected?: OptionSchema[];
|
|
37
38
|
/**
|
|
38
39
|
* Callback function to handle different event types in controlled dropdown <br/>
|
|
39
40
|
* **Event type here refers to `clicking on option` / `clicking on Clear, Cancel or Apply button`** <br/>
|
|
@@ -49,7 +50,7 @@ interface ControlledProps {
|
|
|
49
50
|
* | 'apply-selected' | Array of previously selected options | Array of recently selected options |
|
|
50
51
|
* | 'cancel-selected' | Array of previously selected options | Array of recently selected options |
|
|
51
52
|
*/
|
|
52
|
-
onUpdate?: (type: EventType, options?:
|
|
53
|
+
onUpdate?: (type: EventType, options?: OptionSchema | OptionSchema[], recentSelected?: OptionSchema[]) => void;
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
interface SyncProps {
|
|
@@ -79,7 +80,7 @@ interface SyncProps {
|
|
|
79
80
|
* | disabled | Disables the option, making it unable to be pressed | |
|
|
80
81
|
* | group | Defines group to which the option belongs | |
|
|
81
82
|
*/
|
|
82
|
-
options:
|
|
83
|
+
options: OptionSchema[];
|
|
83
84
|
/**
|
|
84
85
|
* <pre style="font-family: monospace; font-size: 13px; background: #f8f8f8">
|
|
85
86
|
* Adds loaders inside `Dropdown` when waiting for an action to complete.
|
|
@@ -114,7 +115,7 @@ interface TriggerProps {
|
|
|
114
115
|
/**
|
|
115
116
|
* Callback function to change the label of trigger when options are selected
|
|
116
117
|
*/
|
|
117
|
-
customLabel?: (selected: number, totalOptions?: number, selectedOptions?:
|
|
118
|
+
customLabel?: (selected: number, totalOptions?: number, selectedOptions?: OptionSchema[]) => string;
|
|
118
119
|
/**
|
|
119
120
|
* Adds custom trigger
|
|
120
121
|
*/
|
|
@@ -206,7 +207,7 @@ export type DropdownProps = ControlledDropdownProps & UncontrolledDropdownProps;
|
|
|
206
207
|
interface DropdownState {
|
|
207
208
|
async: boolean;
|
|
208
209
|
searchInit: boolean;
|
|
209
|
-
options:
|
|
210
|
+
options: OptionSchema[];
|
|
210
211
|
loading?: boolean;
|
|
211
212
|
optionsApplied: boolean;
|
|
212
213
|
open?: boolean;
|
|
@@ -215,9 +216,9 @@ interface DropdownState {
|
|
|
215
216
|
searchedOptionsLength: number;
|
|
216
217
|
triggerLabel: string;
|
|
217
218
|
selectAll: SelectAll;
|
|
218
|
-
selected:
|
|
219
|
-
tempSelected:
|
|
220
|
-
previousSelected:
|
|
219
|
+
selected: OptionSchema[];
|
|
220
|
+
tempSelected: OptionSchema[];
|
|
221
|
+
previousSelected: OptionSchema[];
|
|
221
222
|
}
|
|
222
223
|
|
|
223
224
|
/**
|
|
@@ -326,7 +327,7 @@ export class Dropdown extends React.Component<DropdownProps, DropdownState> {
|
|
|
326
327
|
}
|
|
327
328
|
}
|
|
328
329
|
|
|
329
|
-
getDisabledOptions = (options:
|
|
330
|
+
getDisabledOptions = (options: OptionSchema[] = []) => {
|
|
330
331
|
return options.filter((option) => option.disabled);
|
|
331
332
|
};
|
|
332
333
|
|
|
@@ -342,7 +343,7 @@ export class Dropdown extends React.Component<DropdownProps, DropdownState> {
|
|
|
342
343
|
});
|
|
343
344
|
};
|
|
344
345
|
|
|
345
|
-
getUnSelectedOptions = (options:
|
|
346
|
+
getUnSelectedOptions = (options: OptionSchema[], init: boolean) => {
|
|
346
347
|
if (options.length) {
|
|
347
348
|
if (!init) {
|
|
348
349
|
return options.filter(
|
|
@@ -362,7 +363,7 @@ export class Dropdown extends React.Component<DropdownProps, DropdownState> {
|
|
|
362
363
|
return options;
|
|
363
364
|
};
|
|
364
365
|
|
|
365
|
-
getSelectedOptions = (options:
|
|
366
|
+
getSelectedOptions = (options: OptionSchema[], init: boolean) => {
|
|
366
367
|
const { selected = [] } = this.props;
|
|
367
368
|
if (options.length) {
|
|
368
369
|
if (!init) return this.state.tempSelected;
|
|
@@ -493,7 +494,7 @@ export class Dropdown extends React.Component<DropdownProps, DropdownState> {
|
|
|
493
494
|
return label;
|
|
494
495
|
};
|
|
495
496
|
|
|
496
|
-
updateSelectedOptions = (selectedArray:
|
|
497
|
+
updateSelectedOptions = (selectedArray: OptionSchema[], isSingleSelect: boolean, isControlled?: boolean) => {
|
|
497
498
|
const { optionsLength, previousSelected, selected, loading, open } = this.state;
|
|
498
499
|
|
|
499
500
|
const { onChange, withCheckbox, showApplyButton, closeOnSelect, name, onPopperToggle } = this.props;
|
|
@@ -528,7 +529,7 @@ export class Dropdown extends React.Component<DropdownProps, DropdownState> {
|
|
|
528
529
|
}
|
|
529
530
|
};
|
|
530
531
|
|
|
531
|
-
onOptionSelect = (option:
|
|
532
|
+
onOptionSelect = (option: OptionSchema) => {
|
|
532
533
|
const { onUpdate, selected } = this.props;
|
|
533
534
|
|
|
534
535
|
if (_isControlled(selected)) {
|
|
@@ -539,7 +540,7 @@ export class Dropdown extends React.Component<DropdownProps, DropdownState> {
|
|
|
539
540
|
this.updateSelectedOptions([option], true);
|
|
540
541
|
};
|
|
541
542
|
|
|
542
|
-
onSelect = (option:
|
|
543
|
+
onSelect = (option: OptionSchema, checked: boolean) => {
|
|
543
544
|
const { onUpdate, selected, showApplyButton } = this.props;
|
|
544
545
|
|
|
545
546
|
if (_isControlled(selected) && !showApplyButton) {
|