@innovaccer/design-system 2.5.0-4 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.all-contributorsrc +1 -1
- package/.eslintrc.json +53 -0
- package/.github/workflows/jira.yml +1 -2
- package/.github/workflows/main.yml +2 -2
- package/.github/workflows/pull_request.yml +1 -1
- package/.github/workflows/test.yml +1 -1
- package/.husky/commit-msg +4 -0
- package/.prettierrc +2 -2
- package/CHANGELOG.md +38 -88
- package/CONTRIBUTING.md +173 -97
- package/README.md +1 -1
- 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 +31 -0
- package/core/components/atoms/_chip/__tests__/__snapshots__/_chip.test.tsx.snap +8 -0
- package/core/components/atoms/_chip/index.tsx +2 -0
- 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 +11 -1
- package/core/components/atoms/button/__stories__/variants/Appearance.story.tsx +4 -0
- package/core/components/atoms/button/__stories__/variants/Expanded.story.tsx +4 -0
- 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 +4 -0
- package/core/components/atoms/button/__stories__/variants/icon/IconRight.story.tsx +4 -0
- 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/Success.story.tsx +7 -17
- package/core/components/atoms/button/__stories__/variants/state/Transparent.story.tsx +13 -17
- package/core/components/atoms/chipGroup/__tests__/__snapshots__/chipGroup.test.tsx.snap +6 -0
- package/core/components/atoms/collapsible/__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/DropdownList.tsx +8 -2
- package/core/components/atoms/dropdown/__stories__/variants/controlledDropdown/MultiSelect.story.tsx +27 -17
- 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/editable/Editable.tsx +3 -0
- package/core/components/atoms/icon/Icon.tsx +14 -3
- 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 +14 -4
- package/core/components/atoms/input/__stories__/BasicInput.story.tsx +2 -1
- package/core/components/atoms/input/__stories__/InputWithCaption.story.tsx +29 -9
- package/core/components/atoms/input/__stories__/InputWithLabel.story.tsx +11 -3
- package/core/components/atoms/input/__stories__/LabelPosition.story.tsx +8 -4
- package/core/components/atoms/input/__stories__/RequiredVsOptional.story.tsx +12 -8
- package/core/components/atoms/input/__tests__/__snapshots__/Input.test.tsx.snap +19 -0
- package/core/components/atoms/legend/Legend.tsx +3 -0
- package/core/components/atoms/message/__stories__/CustomDescription.tsx +25 -0
- package/core/components/atoms/metricInput/MetricInput.tsx +12 -2
- 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/index.tsx +6 -0
- package/core/components/atoms/outsideClick/__stories__/index.story.tsx +1 -1
- package/core/components/atoms/statusHint/StatusHint.tsx +3 -0
- package/core/components/atoms/switchInput/Switch.tsx +10 -4
- 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/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/__tests__/__snapshots__/Toast.test.tsx.snap +30 -0
- package/core/components/css-utilities/Align/Align.story.tsx +1 -1
- package/core/components/css-utilities/Background/Background.story.tsx +1 -1
- package/core/components/css-utilities/Border/Border.story.tsx +1 -1
- package/core/components/css-utilities/Display/Display.story.tsx +1 -1
- package/core/components/css-utilities/Flex/Flex.story.tsx +1 -1
- package/core/components/css-utilities/Miscellaneous/Miscellaneous.story.tsx +1 -1
- package/core/components/css-utilities/Overflow/Overflow.story.tsx +1 -1
- package/core/components/css-utilities/Position/Position.story.tsx +1 -1
- package/core/components/css-utilities/Sizing/Sizing.story.tsx +1 -1
- package/core/components/css-utilities/Spacing/Spacing.story.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 +12 -0
- package/core/components/molecules/dropzone/Dropzone.tsx +3 -0
- package/core/components/molecules/dropzone/FileSelectorUtils.tsx +1 -1
- 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 +8 -0
- 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 +5 -1
- package/core/components/molecules/fileList/FileListItem.tsx +2 -0
- package/core/components/molecules/fileUploader/FileUploaderItem.tsx +2 -0
- package/core/components/molecules/fileUploader/__stories__/index.story.tsx +156 -21
- package/core/components/molecules/inputMask/InputMask.tsx +1 -1
- package/core/components/molecules/inputMask/__tests__/__snapshots__/InputMask.test.tsx.snap +1 -0
- package/core/components/molecules/pagination/__tests__/__snapshots__/Pagination.test.tsx.snap +5 -1
- 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/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/__tests__/Calendar.test.tsx +27 -0
- package/core/components/organisms/choiceList/ChoiceList.tsx +1 -1
- package/core/components/organisms/datePicker/DatePicker.tsx +30 -15
- package/core/components/organisms/datePicker/__tests__/DatePicker.test.tsx +136 -46
- package/core/components/organisms/datePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +4388 -1857
- package/core/components/organisms/dateRangePicker/__tests__/__snapshots__/DateRangePicker.test.tsx.snap +112 -40
- package/core/components/organisms/grid/Cell.tsx +4 -0
- package/core/components/organisms/grid/GridRow.tsx +4 -0
- package/core/components/organisms/grid/__stories__/_common_/fetchData.ts +2 -2
- package/core/components/organisms/horizontalNav/HorizontalNav.tsx +2 -0
- package/core/components/organisms/inlineMessage/InlineMessage.tsx +3 -5
- package/core/components/organisms/inlineMessage/__tests__/__snapshots__/InlineMessage.test.tsx.snap +30 -40
- package/core/components/organisms/navigation/VerticalNavigation.tsx +4 -0
- package/core/components/organisms/table/Table.tsx +1 -0
- package/core/components/organisms/table/__stories__/NestedTableWithNestedCard.story.tsx +4 -1
- package/core/components/organisms/table/__stories__/ResourceTable.story.tsx +3 -2
- package/core/components/organisms/table/__stories__/Selection.story.tsx +2 -2
- 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__/syncTable.story.tsx +14 -6
- package/core/components/organisms/table/__stories__/variants/nestedRows.story.tsx +5 -2
- package/core/components/organisms/table/__stories__/variants/withHeader.story.tsx +0 -2
- package/core/components/organisms/timePicker/TimePicker.tsx +1 -1
- 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/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/index.tsx +1 -0
- package/core/index.type.tsx +1 -0
- package/core/utils/Keys.ts +4 -0
- package/core/utils/__tests__/__snapshots__/TS.test.tsx.snap +544 -536
- package/core/utils/docPage/index.tsx +22 -17
- package/core/utils/testHelper.ts +1 -1
- package/core/utils/validators.ts +37 -34
- package/css/dist/index.css +1523 -1402
- 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 +99 -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 +14 -13
- 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/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 +69 -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 +45 -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 +53 -53
- 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 +1 -1
- 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 +15 -0
- 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/icon/Icon.d.ts +3 -1
- package/dist/core/components/atoms/input/Input.d.ts +1 -1
- package/dist/core/components/atoms/popperWrapper/PopperWrapper.d.ts +50 -49
- package/dist/core/components/atoms/switchInput/Switch.d.ts +2 -1
- package/dist/core/components/organisms/calendar/Calendar.d.ts +31 -0
- package/dist/core/components/organisms/datePicker/DatePicker.d.ts +2 -0
- package/dist/core/components/patterns/datePicker/datePickerWithPresets.story.d.ts +15 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.type.d.ts +1 -0
- package/dist/index.esm.js +829 -495
- package/dist/index.js +313 -144
- 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/package.json +17 -14
- package/.husky/prepare-commit-msg +0 -6
- package/tslint.json +0 -30
|
@@ -98,14 +98,19 @@ export const EditableInput = (props: EditableInputProps) => {
|
|
|
98
98
|
|
|
99
99
|
const onChangeHandler = (eventType: string) => {
|
|
100
100
|
switch (eventType) {
|
|
101
|
-
case 'edit':
|
|
101
|
+
case 'edit': {
|
|
102
102
|
inputRef.current?.focus();
|
|
103
103
|
setEditing(true);
|
|
104
|
-
case 'hover':
|
|
105
104
|
setShowComponent(true);
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
case 'hover': {
|
|
108
|
+
setShowComponent(true);
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
case 'default': {
|
|
108
112
|
setShowComponent(false);
|
|
113
|
+
}
|
|
109
114
|
}
|
|
110
115
|
};
|
|
111
116
|
|
|
@@ -114,6 +119,8 @@ export const EditableInput = (props: EditableInputProps) => {
|
|
|
114
119
|
defaultValue={inputValue}
|
|
115
120
|
placeholder={placeholder}
|
|
116
121
|
className={InputClass}
|
|
122
|
+
// TODO(a11y)
|
|
123
|
+
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
117
124
|
autoFocus={editing}
|
|
118
125
|
size={size}
|
|
119
126
|
onChange={onInputChangeHandler}
|
|
@@ -159,6 +166,8 @@ export const EditableInput = (props: EditableInputProps) => {
|
|
|
159
166
|
};
|
|
160
167
|
|
|
161
168
|
return (
|
|
169
|
+
// TODO(a11y)
|
|
170
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
162
171
|
<div data-test="DesignSystem-EditableInput" {...baseProps} className={EditableInputClass} onKeyDown={onKeyDown}>
|
|
163
172
|
<Editable onChange={onChangeHandler} editing={editing}>
|
|
164
173
|
{renderChildren()}
|
|
@@ -75,7 +75,11 @@ export const EmptyState = (props: EmptyStateProps) => {
|
|
|
75
75
|
return (
|
|
76
76
|
<div data-test="DesignSystem-EmptyState" {...baseProps} className={WrapperClass}>
|
|
77
77
|
{image && <div style={{ height: imageHeight[size] }}>{image}</div>}
|
|
78
|
-
{imageSrc && !image &&
|
|
78
|
+
{imageSrc && !image && (
|
|
79
|
+
//TODO(a11y)
|
|
80
|
+
//eslint-disable-next-line
|
|
81
|
+
<img src={imageSrc} height={imageHeight[size]} data-test="DesignSystem-EmptyState--Img" />
|
|
82
|
+
)}
|
|
79
83
|
<Heading data-test="DesignSystem-EmptyState--Heading" size={HeadingSize[size]} className={HeadingClass}>
|
|
80
84
|
{title}
|
|
81
85
|
</Heading>
|
|
@@ -80,6 +80,8 @@ export const FileListItem = (props: FileListItemProps) => {
|
|
|
80
80
|
};
|
|
81
81
|
|
|
82
82
|
return (
|
|
83
|
+
// TODO(a11y)
|
|
84
|
+
// eslint-disable-next-line
|
|
83
85
|
<div {...baseProps} className={FileItemClass} onClick={onClickHandler} data-test="DesignSystem-FileListItem">
|
|
84
86
|
<div className="FileItem-file">
|
|
85
87
|
<div className="FileItem-fileContent">
|
|
@@ -2,34 +2,101 @@ import * as React from 'react';
|
|
|
2
2
|
import { text, boolean } from '@storybook/addon-knobs';
|
|
3
3
|
import { FileUploader, FileUploaderList, Link } from '@/index';
|
|
4
4
|
import { FileUploaderComponent, FileUploaderListComponent } from './_common_/types';
|
|
5
|
+
import { FileItem } from '../FileUploaderItem';
|
|
5
6
|
|
|
6
7
|
export const all = () => {
|
|
7
|
-
const [fileNames, setFileNames] = React.useState<
|
|
8
|
+
const [fileNames, setFileNames] = React.useState<FileItem[]>([]);
|
|
9
|
+
const [errorOccured, setErrorOccured] = React.useState(false);
|
|
8
10
|
|
|
9
11
|
const title = text('title', 'Upload files');
|
|
10
|
-
const formatLabel = text('formatLabel', 'Accepted formats:
|
|
12
|
+
const formatLabel = text('formatLabel', 'Accepted formats: pdf, jpg, jpeg, png');
|
|
11
13
|
const sizeLabel = text('sizeLabel', 'Maximum size: 25 MB');
|
|
12
14
|
const multiple = boolean('multiple', true);
|
|
13
15
|
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
const randomBetween = (value: number) => Math.round(Math.random() * value);
|
|
17
|
+
|
|
18
|
+
const imitateUploading = (fileItem: FileItem) => {
|
|
19
|
+
const randomProgressChunks = [5, 8, 13];
|
|
20
|
+
const randomChunkIndex = randomBetween(randomProgressChunks.length - 1);
|
|
21
|
+
const progressChunk = randomProgressChunks[randomChunkIndex];
|
|
22
|
+
let baseProgress = fileItem.progress || 0;
|
|
23
|
+
|
|
24
|
+
const increment = () => {
|
|
25
|
+
baseProgress += progressChunk;
|
|
26
|
+
setProgressFileName(fileItem, baseProgress);
|
|
27
|
+
|
|
28
|
+
if (baseProgress < 100) {
|
|
29
|
+
setTimeout(() => increment(), 100);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
increment();
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const setProgressFileName = (fileName: FileItem, progress = 0) => {
|
|
37
|
+
setFileNames((previousFileNames) => {
|
|
38
|
+
const fileNameIndex = previousFileNames.findIndex((fn) => fn.file === fileName.file);
|
|
39
|
+
|
|
40
|
+
if (fileNameIndex === -1) {
|
|
41
|
+
return [...previousFileNames, fileName];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return previousFileNames.map((previousFileName, index) => {
|
|
45
|
+
if (fileNameIndex !== index) return previousFileName;
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
...previousFileName,
|
|
49
|
+
progress,
|
|
50
|
+
status: progress >= 100 ? 'completed' : 'uploading',
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const uploadFiles = (fileList: File[]) => {
|
|
57
|
+
if (!errorOccured && (fileList.length > 1 || fileNames.length > 0)) {
|
|
58
|
+
const randomErrorIndex = randomBetween(fileList.length - 1);
|
|
59
|
+
setFileNames((previousFileNames) => [
|
|
60
|
+
...previousFileNames,
|
|
61
|
+
{ file: fileList[randomErrorIndex], status: 'error' },
|
|
62
|
+
]);
|
|
63
|
+
setErrorOccured(true);
|
|
64
|
+
|
|
65
|
+
if (fileList.length <= 1) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
fileList.splice(randomErrorIndex, 1);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
fileList.forEach((file) => {
|
|
73
|
+
const fileItem: FileItem = {
|
|
17
74
|
file,
|
|
18
|
-
status: '
|
|
75
|
+
status: 'uploading',
|
|
76
|
+
progress: 0,
|
|
19
77
|
};
|
|
78
|
+
|
|
79
|
+
imitateUploading(fileItem);
|
|
20
80
|
});
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const retryUploadFile = (file: File) => {
|
|
84
|
+
uploadFiles([file]);
|
|
85
|
+
};
|
|
21
86
|
|
|
22
|
-
|
|
87
|
+
const deleteUploadedFile = (file: File) => {
|
|
88
|
+
setFileNames((previousFileNames) => previousFileNames.filter((fileName) => fileName.file !== file));
|
|
23
89
|
};
|
|
24
90
|
|
|
25
91
|
return (
|
|
26
92
|
<div>
|
|
27
93
|
<FileUploader
|
|
28
|
-
onChange={
|
|
94
|
+
onChange={uploadFiles}
|
|
29
95
|
multiple={multiple}
|
|
30
96
|
title={title}
|
|
31
97
|
formatLabel={formatLabel}
|
|
32
98
|
sizeLabel={sizeLabel}
|
|
99
|
+
accept={['image/png', 'application/pdf', 'image/jpeg']}
|
|
33
100
|
sampleFileLink={
|
|
34
101
|
<Link
|
|
35
102
|
href="http://www.adobe.com/content/dam/Adobe/en/accessibility/pdfs/accessing-pdf-sr.pdf"
|
|
@@ -40,32 +107,100 @@ export const all = () => {
|
|
|
40
107
|
</Link>
|
|
41
108
|
}
|
|
42
109
|
/>
|
|
43
|
-
<FileUploaderList fileList={fileNames} className="mt-4" />
|
|
110
|
+
<FileUploaderList onDelete={deleteUploadedFile} onRetry={retryUploadFile} fileList={fileNames} className="mt-4" />
|
|
44
111
|
</div>
|
|
45
112
|
);
|
|
46
113
|
};
|
|
47
114
|
|
|
48
115
|
const customCode = `() => {
|
|
49
116
|
const [fileNames, setFileNames] = React.useState([]);
|
|
117
|
+
const [errorOccured, setErrorOccured] = React.useState(false);
|
|
50
118
|
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
119
|
+
const randomBetween = (value) => Math.round(Math.random() * value);
|
|
120
|
+
|
|
121
|
+
const imitateUploading = (fileItem) => {
|
|
122
|
+
const randomProgressChunks = [5, 8, 13];
|
|
123
|
+
const randomChunkIndex = randomBetween(randomProgressChunks.length - 1);
|
|
124
|
+
const progressChunk = randomProgressChunks[randomChunkIndex];
|
|
125
|
+
let baseProgress = fileItem.progress || 0;
|
|
126
|
+
|
|
127
|
+
const increment = () => {
|
|
128
|
+
baseProgress += progressChunk;
|
|
129
|
+
setProgressFileName(fileItem, baseProgress);
|
|
130
|
+
|
|
131
|
+
if (baseProgress < 100) {
|
|
132
|
+
setTimeout(() => increment(), 100);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
increment();
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
const setProgressFileName = (fileName, progress = 0) => {
|
|
140
|
+
setFileNames((previousFileNames) => {
|
|
141
|
+
const fileNameIndex = previousFileNames.findIndex((fn) => fn.file === fileName.file);
|
|
142
|
+
|
|
143
|
+
if (fileNameIndex === -1) {
|
|
144
|
+
return [...previousFileNames, fileName];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return previousFileNames.map((previousFileName, index) => {
|
|
148
|
+
if (fileNameIndex !== index) return previousFileName;
|
|
149
|
+
|
|
150
|
+
return {
|
|
151
|
+
...previousFileName,
|
|
152
|
+
status: progress >= 100 ? 'completed' : 'uploading',
|
|
153
|
+
progress,
|
|
154
|
+
};
|
|
155
|
+
});
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
const uploadFiles = (fileList) => {
|
|
160
|
+
if ((!errorOccured && (fileList.length > 1 || fileNames.length > 0))) {
|
|
161
|
+
const randomErrorIndex = randomBetween(fileList.length - 1);
|
|
162
|
+
setFileNames((previousFileNames) => [
|
|
163
|
+
...previousFileNames,
|
|
164
|
+
{ file: fileList[randomErrorIndex], status: 'error' },
|
|
165
|
+
]);
|
|
166
|
+
setErrorOccured(true);
|
|
167
|
+
|
|
168
|
+
if (fileList.length <= 1) {
|
|
169
|
+
return;
|
|
56
170
|
}
|
|
171
|
+
|
|
172
|
+
fileList.splice(randomErrorIndex, 1);
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
fileList.forEach((file) => {
|
|
176
|
+
const fileItem = {
|
|
177
|
+
file,
|
|
178
|
+
status: 'uploading',
|
|
179
|
+
progress: 0,
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
imitateUploading(fileItem);
|
|
57
183
|
});
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
const retryUploadFile = (file) => {
|
|
187
|
+
uploadFiles([file]);
|
|
188
|
+
};
|
|
58
189
|
|
|
59
|
-
|
|
190
|
+
const deleteUploadedFile = (file) => {
|
|
191
|
+
setFileNames((previousFileNames) => previousFileNames.filter(fileName => fileName.file !== file));
|
|
60
192
|
};
|
|
61
193
|
|
|
62
194
|
return (
|
|
63
195
|
<div>
|
|
64
196
|
<FileUploader
|
|
65
|
-
onChange={
|
|
66
|
-
multiple
|
|
67
|
-
|
|
68
|
-
|
|
197
|
+
onChange={uploadFiles}
|
|
198
|
+
multiple
|
|
199
|
+
title="Upload files"
|
|
200
|
+
accept={['image/png', 'application/pdf', 'image/jpeg']}
|
|
201
|
+
formatLabel="Accepted formats: pdf, jpg, jpeg, png"
|
|
202
|
+
sizeLabel="Maximum size: 25 MB"
|
|
203
|
+
sampleFileLink={
|
|
69
204
|
<Link
|
|
70
205
|
href="http://www.adobe.com/content/dam/Adobe/en/accessibility/pdfs/accessing-pdf-sr.pdf"
|
|
71
206
|
download="Test.pdf"
|
|
@@ -73,9 +208,9 @@ const customCode = `() => {
|
|
|
73
208
|
>
|
|
74
209
|
Download sample file
|
|
75
210
|
</Link>
|
|
76
|
-
|
|
211
|
+
}
|
|
77
212
|
/>
|
|
78
|
-
<FileUploaderList fileList={fileNames} className="mt-4" />
|
|
213
|
+
<FileUploaderList onDelete={deleteUploadedFile} onRetry={retryUploadFile} fileList={fileNames} className="mt-4" />
|
|
79
214
|
</div>
|
|
80
215
|
);
|
|
81
216
|
}`;
|
|
@@ -235,7 +235,7 @@ export const InputMask = React.forwardRef<HTMLInputElement, InputMaskProps>((pro
|
|
|
235
235
|
if (deferId.current) window.cancelAnimationFrame(deferId.current);
|
|
236
236
|
};
|
|
237
237
|
|
|
238
|
-
const onClearHandler = (e: React.MouseEvent<HTMLElement>) => {
|
|
238
|
+
const onClearHandler = (e: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>) => {
|
|
239
239
|
// setValue('');
|
|
240
240
|
// window.requestAnimationFrame(() => ref.current!.blur());
|
|
241
241
|
setValue(getPlaceholderValue());
|
package/core/components/molecules/pagination/__tests__/__snapshots__/Pagination.test.tsx.snap
CHANGED
|
@@ -140,6 +140,7 @@ exports[`Pagination component
|
|
|
140
140
|
<div
|
|
141
141
|
class="MetricInput MetricInput--regular Pagination-MetricInput"
|
|
142
142
|
data-test="DesignSystem-MetricInputWrapper"
|
|
143
|
+
role="presentation"
|
|
143
144
|
>
|
|
144
145
|
<input
|
|
145
146
|
class="MetricInput-input MetricInput-input--regular"
|
|
@@ -150,19 +151,22 @@ exports[`Pagination component
|
|
|
150
151
|
/>
|
|
151
152
|
<div
|
|
152
153
|
class="MetricInput-arrowIcons"
|
|
153
|
-
tabindex="0"
|
|
154
154
|
>
|
|
155
155
|
<i
|
|
156
156
|
class="material-icons material-icons-round Icon MetricInput-arrowIcon MetricInput-arrowIcon--regular MetricInput-arrowIcon--up"
|
|
157
157
|
data-test="DesignSystem-MetricInput--upIcon"
|
|
158
|
+
role="button"
|
|
158
159
|
style="font-size: 12px; width: 12px;"
|
|
160
|
+
tabindex="0"
|
|
159
161
|
>
|
|
160
162
|
keyboard_arrow_up_round
|
|
161
163
|
</i>
|
|
162
164
|
<i
|
|
163
165
|
class="material-icons material-icons-round Icon MetricInput-arrowIcon MetricInput-arrowIcon--regular MetricInput-arrowIcon--down"
|
|
164
166
|
data-test="DesignSystem-MetricInput--downIcon"
|
|
167
|
+
role="button"
|
|
165
168
|
style="font-size: 12px; width: 12px;"
|
|
169
|
+
tabindex="0"
|
|
166
170
|
>
|
|
167
171
|
keyboard_arrow_down_round
|
|
168
172
|
</i>
|
|
@@ -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"
|
|
@@ -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
|
</>
|