@herca/rn-kit 0.1.113 → 0.1.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -0
- package/lib/module/Accordion/Accordion.js +4 -1
- package/lib/module/Accordion/Accordion.js.map +1 -1
- package/lib/module/Accordion/AccordionItem.js +3 -1
- package/lib/module/Accordion/AccordionItem.js.map +1 -1
- package/lib/module/Accordion/README.md +2 -0
- package/lib/module/Alert/Alert.js +3 -1
- package/lib/module/Alert/Alert.js.map +1 -1
- package/lib/module/Alert/README.md +1 -0
- package/lib/module/Avatar/Avatar.js +3 -1
- package/lib/module/Avatar/Avatar.js.map +1 -1
- package/lib/module/Avatar/AvatarGroup.js +3 -1
- package/lib/module/Avatar/AvatarGroup.js.map +1 -1
- package/lib/module/Avatar/README_AVATAR.md +1 -0
- package/lib/module/Avatar/README_AVATARGROUP.md +1 -0
- package/lib/module/Badge/Badge.js +4 -1
- package/lib/module/Badge/Badge.js.map +1 -1
- package/lib/module/Badge/README.md +1 -0
- package/lib/module/BadgeIcon/BadgeIcon.js +3 -1
- package/lib/module/BadgeIcon/BadgeIcon.js.map +1 -1
- package/lib/module/BadgeIcon/README.md +1 -0
- package/lib/module/BottomSheet/BottomSheet.js +17 -8
- package/lib/module/BottomSheet/BottomSheet.js.map +1 -1
- package/lib/module/BottomSheet/README.md +1 -0
- package/lib/module/Button/Button.js +3 -1
- package/lib/module/Button/Button.js.map +1 -1
- package/lib/module/Button/README.md +1 -0
- package/lib/module/Button/type.js.map +1 -1
- package/lib/module/Calendar/Calendar.js +9 -1
- package/lib/module/Calendar/Calendar.js.map +1 -1
- package/lib/module/Calendar/README.md +2 -0
- package/lib/module/CheckBox/CheckBox.js +8 -3
- package/lib/module/CheckBox/CheckBox.js.map +1 -1
- package/lib/module/CheckBox/CheckBoxList.js +7 -2
- package/lib/module/CheckBox/CheckBoxList.js.map +1 -1
- package/lib/module/CheckBox/README_CHECKBOX.md +1 -0
- package/lib/module/CheckBox/README_CHECKBOXLIST.md +1 -0
- package/lib/module/Chip/Chip.js +19 -6
- package/lib/module/Chip/Chip.js.map +1 -1
- package/lib/module/Chip/ChipItem.js +3 -1
- package/lib/module/Chip/ChipItem.js.map +1 -1
- package/lib/module/Chip/README.md +26 -2
- package/lib/module/Chip/README_CHIP_ITEM.md +1 -0
- package/lib/module/CounterButton/CounterButton.js +6 -1
- package/lib/module/CounterButton/CounterButton.js.map +1 -1
- package/lib/module/CounterButton/README.md +1 -0
- package/lib/module/DatePicker/DatePicker.js +13 -1
- package/lib/module/DatePicker/DatePicker.js.map +1 -1
- package/lib/module/DatePicker/MonthPicker.js +7 -1
- package/lib/module/DatePicker/MonthPicker.js.map +1 -1
- package/lib/module/DatePicker/README_DATEPICKER.md +1 -0
- package/lib/module/DatePicker/README_MONTHPICKER.md +1 -0
- package/lib/module/DatePicker/README_TIMEPICKER.md +1 -0
- package/lib/module/DatePicker/README_YEARPICKER.md +1 -0
- package/lib/module/DatePicker/TimePicker.js +8 -1
- package/lib/module/DatePicker/TimePicker.js.map +1 -1
- package/lib/module/DatePicker/YearPicker.js +13 -4
- package/lib/module/DatePicker/YearPicker.js.map +1 -1
- package/lib/module/Drawing/Drawing.js +3 -1
- package/lib/module/Drawing/Drawing.js.map +1 -1
- package/lib/module/Drawing/README.md +1 -0
- package/lib/module/DropDown/DropDown.js +6 -1
- package/lib/module/DropDown/DropDown.js.map +1 -1
- package/lib/module/DropDown/README.md +1 -0
- package/lib/module/FileView/PDF_VIEW_README.md +11 -0
- package/lib/module/FileView/PdfView.js +5 -1
- package/lib/module/FileView/PdfView.js.map +1 -1
- package/lib/module/Icon/Icon.js +14 -2
- package/lib/module/Icon/Icon.js.map +1 -1
- package/lib/module/Icon/README.md +1 -0
- package/lib/module/Input/Input.js +7 -0
- package/lib/module/Input/Input.js.map +1 -1
- package/lib/module/Input/InputDate.js +35 -8
- package/lib/module/Input/InputDate.js.map +1 -1
- package/lib/module/Input/InputFile.js +28 -11
- package/lib/module/Input/InputFile.js.map +1 -1
- package/lib/module/Input/InputMonth.js +111 -1
- package/lib/module/Input/InputMonth.js.map +1 -1
- package/lib/module/Input/InputOtp.js +6 -1
- package/lib/module/Input/InputOtp.js.map +1 -1
- package/lib/module/Input/InputPassword.js +5 -1
- package/lib/module/Input/InputPassword.js.map +1 -1
- package/lib/module/Input/InputSelect.js +21 -2
- package/lib/module/Input/InputSelect.js.map +1 -1
- package/lib/module/Input/InputYear.js +94 -0
- package/lib/module/Input/InputYear.js.map +1 -0
- package/lib/module/Input/README_INPUT.md +1 -0
- package/lib/module/Input/README_INPUT_DATE.md +18 -0
- package/lib/module/Input/README_INPUT_FILE.md +1 -0
- package/lib/module/Input/README_INPUT_MONTH.md +132 -0
- package/lib/module/Input/README_INPUT_OTP.md +1 -0
- package/lib/module/Input/README_INPUT_SELECT.md +1 -0
- package/lib/module/Input/README_INPUT_YEAR.md +115 -0
- package/lib/module/Input/Switch.js +6 -2
- package/lib/module/Input/Switch.js.map +1 -1
- package/lib/module/Input/TextArea.js +5 -0
- package/lib/module/Input/TextArea.js.map +1 -1
- package/lib/module/Input/partials/InputFile/CardTrigger.js +3 -1
- package/lib/module/Input/partials/InputFile/CardTrigger.js.map +1 -1
- package/lib/module/Input/partials/InputFile/CardTriggerSmall.js +5 -2
- package/lib/module/Input/partials/InputFile/CardTriggerSmall.js.map +1 -1
- package/lib/module/Input/partials/InputFile/ItemPreview.js +6 -1
- package/lib/module/Input/partials/InputFile/ItemPreview.js.map +1 -1
- package/lib/module/Input/partials/PickerField.js +114 -0
- package/lib/module/Input/partials/PickerField.js.map +1 -0
- package/lib/module/Label/Label.js +3 -1
- package/lib/module/Label/Label.js.map +1 -1
- package/lib/module/Label/README.md +1 -0
- package/lib/module/LabelForm/LabelForm.js +3 -1
- package/lib/module/LabelForm/LabelForm.js.map +1 -1
- package/lib/module/List/List.js +3 -1
- package/lib/module/List/List.js.map +1 -1
- package/lib/module/List/ListItem.js +3 -1
- package/lib/module/List/ListItem.js.map +1 -1
- package/lib/module/List/README.md +2 -0
- package/lib/module/Loading/Loading.js +3 -1
- package/lib/module/Loading/Loading.js.map +1 -1
- package/lib/module/Modal/Modal.js +8 -2
- package/lib/module/Modal/Modal.js.map +1 -1
- package/lib/module/Modal/README.md +1 -0
- package/lib/module/Provider/RequiredUpdateAppsProvider.js +10 -1
- package/lib/module/Provider/RequiredUpdateAppsProvider.js.map +1 -1
- package/lib/module/RadioButton/README.md +1 -0
- package/lib/module/RadioButton/RadioButton.js +7 -2
- package/lib/module/RadioButton/RadioButton.js.map +1 -1
- package/lib/module/Select/README.md +1 -0
- package/lib/module/Select/README_Select.md +1 -0
- package/lib/module/Select/Select.js +12 -3
- package/lib/module/Select/Select.js.map +1 -1
- package/lib/module/Skeleton/README.md +1 -0
- package/lib/module/Skeleton/Skeleton.js +3 -1
- package/lib/module/Skeleton/Skeleton.js.map +1 -1
- package/lib/module/Spinner/Spinner.js +3 -1
- package/lib/module/Spinner/Spinner.js.map +1 -1
- package/lib/module/Step/README.md +2 -0
- package/lib/module/Step/Step.js +3 -1
- package/lib/module/Step/Step.js.map +1 -1
- package/lib/module/Step/StepItem.js +4 -1
- package/lib/module/Step/StepItem.js.map +1 -1
- package/lib/module/Tab/README.md +1 -0
- package/lib/module/Tab/Tab.js +6 -1
- package/lib/module/Tab/Tab.js.map +1 -1
- package/lib/module/TextEditor/LinkSheet.js +84 -0
- package/lib/module/TextEditor/LinkSheet.js.map +1 -0
- package/lib/module/TextEditor/README.md +52 -2
- package/lib/module/TextEditor/TextEditor.js +77 -458
- package/lib/module/TextEditor/TextEditor.js.map +1 -1
- package/lib/module/TextEditor/Toolbar.js +71 -0
- package/lib/module/TextEditor/Toolbar.js.map +1 -0
- package/lib/module/TextEditor/editorDocument.js +235 -0
- package/lib/module/TextEditor/editorDocument.js.map +1 -0
- package/lib/module/TextEditor/formatState.js +186 -0
- package/lib/module/TextEditor/formatState.js.map +1 -0
- package/lib/module/TextEditor/toolbarButtons.js +81 -0
- package/lib/module/TextEditor/toolbarButtons.js.map +1 -0
- package/lib/module/TextEditor/types.js +2 -0
- package/lib/module/Timeline/README.md +2 -0
- package/lib/module/Timeline/Timeline.js +3 -1
- package/lib/module/Timeline/Timeline.js.map +1 -1
- package/lib/module/Timeline/TimelineItem.js +3 -1
- package/lib/module/Timeline/TimelineItem.js.map +1 -1
- package/lib/module/Toast/README.md +16 -0
- package/lib/module/Toast/Toast.js +6 -1
- package/lib/module/Toast/Toast.js.map +1 -1
- package/lib/module/Typography/README.md +1 -0
- package/lib/module/Typography/Typography.js +3 -1
- package/lib/module/Typography/Typography.js.map +1 -1
- package/lib/module/Typography/type.js.map +1 -1
- package/lib/module/Ui/Card.js +4 -1
- package/lib/module/Ui/Card.js.map +1 -1
- package/lib/module/Ui/Center.js +3 -1
- package/lib/module/Ui/Center.js.map +1 -1
- package/lib/module/Ui/Col.js +3 -1
- package/lib/module/Ui/Col.js.map +1 -1
- package/lib/module/Ui/Container.js +3 -1
- package/lib/module/Ui/Container.js.map +1 -1
- package/lib/module/Ui/Devider.js +4 -1
- package/lib/module/Ui/Devider.js.map +1 -1
- package/lib/module/Ui/Footer.js +4 -2
- package/lib/module/Ui/Footer.js.map +1 -1
- package/lib/module/Ui/Gap.js +3 -1
- package/lib/module/Ui/Gap.js.map +1 -1
- package/lib/module/Ui/Grid.js +3 -1
- package/lib/module/Ui/Grid.js.map +1 -1
- package/lib/module/Ui/README_CARD.md +1 -0
- package/lib/module/Ui/README_CONTAINER.md +1 -0
- package/lib/module/Ui/README_DEVIDER.md +5 -0
- package/lib/module/Ui/README_FOOTER.md +9 -0
- package/lib/module/Ui/README_VIEWINSETS.md +1 -0
- package/lib/module/function/README_DATE_FORMATTER.md +35 -0
- package/lib/module/function/dateFormatter.js +29 -0
- package/lib/module/function/dateFormatter.js.map +1 -1
- package/lib/module/helpers/getTestID.js +15 -0
- package/lib/module/helpers/getTestID.js.map +1 -0
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/Accordion/Accordion.d.ts +1 -1
- package/lib/typescript/src/Accordion/Accordion.d.ts.map +1 -1
- package/lib/typescript/src/Accordion/AccordionItem.d.ts +1 -1
- package/lib/typescript/src/Accordion/AccordionItem.d.ts.map +1 -1
- package/lib/typescript/src/Accordion/type.d.ts +2 -0
- package/lib/typescript/src/Accordion/type.d.ts.map +1 -1
- package/lib/typescript/src/Alert/Alert.d.ts +1 -0
- package/lib/typescript/src/Alert/Alert.d.ts.map +1 -1
- package/lib/typescript/src/Avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/src/Avatar/AvatarGroup.d.ts.map +1 -1
- package/lib/typescript/src/Avatar/type.d.ts +2 -0
- package/lib/typescript/src/Avatar/type.d.ts.map +1 -1
- package/lib/typescript/src/Badge/Badge.d.ts +1 -0
- package/lib/typescript/src/Badge/Badge.d.ts.map +1 -1
- package/lib/typescript/src/BadgeIcon/BadgeIcon.d.ts +1 -0
- package/lib/typescript/src/BadgeIcon/BadgeIcon.d.ts.map +1 -1
- package/lib/typescript/src/BottomSheet/BottomSheet.d.ts +1 -1
- package/lib/typescript/src/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/lib/typescript/src/BottomSheet/type.d.ts +1 -0
- package/lib/typescript/src/BottomSheet/type.d.ts.map +1 -1
- package/lib/typescript/src/Button/Button.d.ts.map +1 -1
- package/lib/typescript/src/Button/type.d.ts +1 -0
- package/lib/typescript/src/Button/type.d.ts.map +1 -1
- package/lib/typescript/src/Calendar/Calendar.d.ts +1 -1
- package/lib/typescript/src/Calendar/Calendar.d.ts.map +1 -1
- package/lib/typescript/src/Calendar/CalendarPropsType.d.ts +6 -0
- package/lib/typescript/src/Calendar/CalendarPropsType.d.ts.map +1 -1
- package/lib/typescript/src/CheckBox/CheckBox.d.ts +1 -0
- package/lib/typescript/src/CheckBox/CheckBox.d.ts.map +1 -1
- package/lib/typescript/src/CheckBox/CheckBoxList.d.ts +1 -0
- package/lib/typescript/src/CheckBox/CheckBoxList.d.ts.map +1 -1
- package/lib/typescript/src/Chip/Chip.d.ts.map +1 -1
- package/lib/typescript/src/Chip/ChipItem.d.ts +1 -1
- package/lib/typescript/src/Chip/ChipItem.d.ts.map +1 -1
- package/lib/typescript/src/Chip/type.d.ts +2 -0
- package/lib/typescript/src/Chip/type.d.ts.map +1 -1
- package/lib/typescript/src/CounterButton/CounterButton.d.ts +1 -1
- package/lib/typescript/src/CounterButton/CounterButton.d.ts.map +1 -1
- package/lib/typescript/src/CounterButton/type.d.ts +1 -0
- package/lib/typescript/src/CounterButton/type.d.ts.map +1 -1
- package/lib/typescript/src/DatePicker/DatePicker.d.ts +2 -1
- package/lib/typescript/src/DatePicker/DatePicker.d.ts.map +1 -1
- package/lib/typescript/src/DatePicker/MonthPicker.d.ts +2 -1
- package/lib/typescript/src/DatePicker/MonthPicker.d.ts.map +1 -1
- package/lib/typescript/src/DatePicker/TimePicker.d.ts +2 -1
- package/lib/typescript/src/DatePicker/TimePicker.d.ts.map +1 -1
- package/lib/typescript/src/DatePicker/YearPicker.d.ts +5 -1
- package/lib/typescript/src/DatePicker/YearPicker.d.ts.map +1 -1
- package/lib/typescript/src/Drawing/Drawing.d.ts +2 -1
- package/lib/typescript/src/Drawing/Drawing.d.ts.map +1 -1
- package/lib/typescript/src/DropDown/DropDown.d.ts +1 -1
- package/lib/typescript/src/DropDown/DropDown.d.ts.map +1 -1
- package/lib/typescript/src/DropDown/type.d.ts +1 -0
- package/lib/typescript/src/DropDown/type.d.ts.map +1 -1
- package/lib/typescript/src/FileView/PdfView.d.ts +2 -1
- package/lib/typescript/src/FileView/PdfView.d.ts.map +1 -1
- package/lib/typescript/src/Icon/Icon.d.ts.map +1 -1
- package/lib/typescript/src/Icon/type.d.ts +1 -0
- package/lib/typescript/src/Icon/type.d.ts.map +1 -1
- package/lib/typescript/src/Input/Input.d.ts.map +1 -1
- package/lib/typescript/src/Input/InputDate.d.ts +6 -2
- package/lib/typescript/src/Input/InputDate.d.ts.map +1 -1
- package/lib/typescript/src/Input/InputFile.d.ts +1 -1
- package/lib/typescript/src/Input/InputFile.d.ts.map +1 -1
- package/lib/typescript/src/Input/InputMonth.d.ts +29 -1
- package/lib/typescript/src/Input/InputMonth.d.ts.map +1 -1
- package/lib/typescript/src/Input/InputOtp.d.ts +1 -0
- package/lib/typescript/src/Input/InputOtp.d.ts.map +1 -1
- package/lib/typescript/src/Input/InputPassword.d.ts +2 -1
- package/lib/typescript/src/Input/InputPassword.d.ts.map +1 -1
- package/lib/typescript/src/Input/InputSelect.d.ts +4 -2
- package/lib/typescript/src/Input/InputSelect.d.ts.map +1 -1
- package/lib/typescript/src/Input/InputYear.d.ts +34 -0
- package/lib/typescript/src/Input/InputYear.d.ts.map +1 -0
- package/lib/typescript/src/Input/Switch.d.ts +2 -1
- package/lib/typescript/src/Input/Switch.d.ts.map +1 -1
- package/lib/typescript/src/Input/TextArea.d.ts +1 -1
- package/lib/typescript/src/Input/TextArea.d.ts.map +1 -1
- package/lib/typescript/src/Input/partials/InputFile/CardTrigger.d.ts +2 -1
- package/lib/typescript/src/Input/partials/InputFile/CardTrigger.d.ts.map +1 -1
- package/lib/typescript/src/Input/partials/InputFile/CardTriggerSmall.d.ts +2 -1
- package/lib/typescript/src/Input/partials/InputFile/CardTriggerSmall.d.ts.map +1 -1
- package/lib/typescript/src/Input/partials/InputFile/ItemPreview.d.ts +2 -1
- package/lib/typescript/src/Input/partials/InputFile/ItemPreview.d.ts.map +1 -1
- package/lib/typescript/src/Input/partials/PickerField.d.ts +25 -0
- package/lib/typescript/src/Input/partials/PickerField.d.ts.map +1 -0
- package/lib/typescript/src/Input/type.d.ts +13 -0
- package/lib/typescript/src/Input/type.d.ts.map +1 -1
- package/lib/typescript/src/Label/Label.d.ts +2 -1
- package/lib/typescript/src/Label/Label.d.ts.map +1 -1
- package/lib/typescript/src/LabelForm/LabelForm.d.ts +2 -1
- package/lib/typescript/src/LabelForm/LabelForm.d.ts.map +1 -1
- package/lib/typescript/src/List/List.d.ts +1 -1
- package/lib/typescript/src/List/List.d.ts.map +1 -1
- package/lib/typescript/src/List/ListItem.d.ts +1 -1
- package/lib/typescript/src/List/ListItem.d.ts.map +1 -1
- package/lib/typescript/src/List/type.d.ts +2 -0
- package/lib/typescript/src/List/type.d.ts.map +1 -1
- package/lib/typescript/src/Loading/Loading.d.ts +1 -0
- package/lib/typescript/src/Loading/Loading.d.ts.map +1 -1
- package/lib/typescript/src/Modal/Modal.d.ts +1 -0
- package/lib/typescript/src/Modal/Modal.d.ts.map +1 -1
- package/lib/typescript/src/Provider/RequiredUpdateAppsProvider.d.ts.map +1 -1
- package/lib/typescript/src/RadioButton/RadioButton.d.ts +1 -0
- package/lib/typescript/src/RadioButton/RadioButton.d.ts.map +1 -1
- package/lib/typescript/src/Select/Select.d.ts +1 -1
- package/lib/typescript/src/Select/Select.d.ts.map +1 -1
- package/lib/typescript/src/Select/type.d.ts +1 -0
- package/lib/typescript/src/Select/type.d.ts.map +1 -1
- package/lib/typescript/src/Skeleton/Skeleton.d.ts.map +1 -1
- package/lib/typescript/src/Skeleton/type.d.ts +1 -0
- package/lib/typescript/src/Skeleton/type.d.ts.map +1 -1
- package/lib/typescript/src/Spinner/Spinner.d.ts +7 -4
- package/lib/typescript/src/Spinner/Spinner.d.ts.map +1 -1
- package/lib/typescript/src/Step/Step.d.ts +1 -1
- package/lib/typescript/src/Step/Step.d.ts.map +1 -1
- package/lib/typescript/src/Step/StepItem.d.ts +1 -1
- package/lib/typescript/src/Step/StepItem.d.ts.map +1 -1
- package/lib/typescript/src/Step/type.d.ts +2 -0
- package/lib/typescript/src/Step/type.d.ts.map +1 -1
- package/lib/typescript/src/Tab/Tab.d.ts.map +1 -1
- package/lib/typescript/src/Tab/type.d.ts +1 -0
- package/lib/typescript/src/Tab/type.d.ts.map +1 -1
- package/lib/typescript/src/TextEditor/LinkSheet.d.ts +26 -0
- package/lib/typescript/src/TextEditor/LinkSheet.d.ts.map +1 -0
- package/lib/typescript/src/TextEditor/TextEditor.d.ts +2 -19
- package/lib/typescript/src/TextEditor/TextEditor.d.ts.map +1 -1
- package/lib/typescript/src/TextEditor/Toolbar.d.ts +16 -0
- package/lib/typescript/src/TextEditor/Toolbar.d.ts.map +1 -0
- package/lib/typescript/src/TextEditor/editorDocument.d.ts +20 -0
- package/lib/typescript/src/TextEditor/editorDocument.d.ts.map +1 -0
- package/lib/typescript/src/TextEditor/formatState.d.ts +34 -0
- package/lib/typescript/src/TextEditor/formatState.d.ts.map +1 -0
- package/lib/typescript/src/TextEditor/toolbarButtons.d.ts +5 -0
- package/lib/typescript/src/TextEditor/toolbarButtons.d.ts.map +1 -0
- package/lib/typescript/src/TextEditor/types.d.ts +42 -0
- package/lib/typescript/src/TextEditor/types.d.ts.map +1 -1
- package/lib/typescript/src/Timeline/Timeline.d.ts +2 -1
- package/lib/typescript/src/Timeline/Timeline.d.ts.map +1 -1
- package/lib/typescript/src/Timeline/TimelineItem.d.ts +2 -1
- package/lib/typescript/src/Timeline/TimelineItem.d.ts.map +1 -1
- package/lib/typescript/src/Toast/Toast.d.ts +2 -1
- package/lib/typescript/src/Toast/Toast.d.ts.map +1 -1
- package/lib/typescript/src/Typography/Typography.d.ts.map +1 -1
- package/lib/typescript/src/Typography/type.d.ts +1 -0
- package/lib/typescript/src/Typography/type.d.ts.map +1 -1
- package/lib/typescript/src/Ui/Card.d.ts +2 -1
- package/lib/typescript/src/Ui/Card.d.ts.map +1 -1
- package/lib/typescript/src/Ui/Center.d.ts +2 -1
- package/lib/typescript/src/Ui/Center.d.ts.map +1 -1
- package/lib/typescript/src/Ui/Col.d.ts +1 -0
- package/lib/typescript/src/Ui/Col.d.ts.map +1 -1
- package/lib/typescript/src/Ui/Container.d.ts +2 -1
- package/lib/typescript/src/Ui/Container.d.ts.map +1 -1
- package/lib/typescript/src/Ui/Devider.d.ts +3 -1
- package/lib/typescript/src/Ui/Devider.d.ts.map +1 -1
- package/lib/typescript/src/Ui/Footer.d.ts +1 -0
- package/lib/typescript/src/Ui/Footer.d.ts.map +1 -1
- package/lib/typescript/src/Ui/Gap.d.ts +2 -1
- package/lib/typescript/src/Ui/Gap.d.ts.map +1 -1
- package/lib/typescript/src/Ui/Grid.d.ts +1 -0
- package/lib/typescript/src/Ui/Grid.d.ts.map +1 -1
- package/lib/typescript/src/function/dateFormatter.d.ts +11 -0
- package/lib/typescript/src/function/dateFormatter.d.ts.map +1 -1
- package/lib/typescript/src/helpers/getTestID.d.ts +10 -0
- package/lib/typescript/src/helpers/getTestID.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +6 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +16 -3
- package/src/Accordion/Accordion.tsx +6 -1
- package/src/Accordion/AccordionItem.tsx +2 -1
- package/src/Accordion/README.md +2 -0
- package/src/Accordion/type.tsx +2 -0
- package/src/Alert/Alert.tsx +3 -0
- package/src/Alert/README.md +1 -0
- package/src/Avatar/Avatar.tsx +2 -0
- package/src/Avatar/AvatarGroup.tsx +2 -1
- package/src/Avatar/README_AVATAR.md +1 -0
- package/src/Avatar/README_AVATARGROUP.md +1 -0
- package/src/Avatar/type.tsx +2 -0
- package/src/Badge/Badge.tsx +4 -0
- package/src/Badge/README.md +1 -0
- package/src/BadgeIcon/BadgeIcon.tsx +3 -0
- package/src/BadgeIcon/README.md +1 -0
- package/src/BottomSheet/BottomSheet.tsx +20 -13
- package/src/BottomSheet/README.md +1 -0
- package/src/BottomSheet/type.tsx +1 -0
- package/src/Button/Button.tsx +2 -0
- package/src/Button/README.md +1 -0
- package/src/Button/type.tsx +1 -0
- package/src/Calendar/Calendar.tsx +8 -1
- package/src/Calendar/CalendarPropsType.tsx +6 -0
- package/src/Calendar/README.md +2 -0
- package/src/CheckBox/CheckBox.tsx +13 -2
- package/src/CheckBox/CheckBoxList.tsx +7 -1
- package/src/CheckBox/README_CHECKBOX.md +1 -0
- package/src/CheckBox/README_CHECKBOXLIST.md +1 -0
- package/src/Chip/Chip.tsx +18 -5
- package/src/Chip/ChipItem.tsx +2 -0
- package/src/Chip/README.md +26 -2
- package/src/Chip/README_CHIP_ITEM.md +1 -0
- package/src/Chip/type.tsx +2 -0
- package/src/CounterButton/CounterButton.tsx +5 -0
- package/src/CounterButton/README.md +1 -0
- package/src/CounterButton/type.tsx +1 -0
- package/src/DatePicker/DatePicker.tsx +21 -5
- package/src/DatePicker/MonthPicker.tsx +7 -0
- package/src/DatePicker/README_DATEPICKER.md +1 -0
- package/src/DatePicker/README_MONTHPICKER.md +1 -0
- package/src/DatePicker/README_TIMEPICKER.md +1 -0
- package/src/DatePicker/README_YEARPICKER.md +1 -0
- package/src/DatePicker/TimePicker.tsx +8 -0
- package/src/DatePicker/YearPicker.tsx +16 -3
- package/src/Drawing/Drawing.tsx +3 -1
- package/src/Drawing/README.md +1 -0
- package/src/DropDown/DropDown.tsx +12 -1
- package/src/DropDown/README.md +1 -0
- package/src/DropDown/type.tsx +1 -0
- package/src/FileView/PDF_VIEW_README.md +11 -0
- package/src/FileView/PdfView.tsx +4 -3
- package/src/Icon/Icon.tsx +10 -2
- package/src/Icon/README.md +1 -0
- package/src/Icon/type.tsx +1 -0
- package/src/Input/Input.tsx +17 -2
- package/src/Input/InputDate.tsx +40 -15
- package/src/Input/InputFile.tsx +27 -14
- package/src/Input/InputMonth.tsx +152 -1
- package/src/Input/InputOtp.tsx +12 -2
- package/src/Input/InputPassword.tsx +6 -1
- package/src/Input/InputSelect.tsx +30 -13
- package/src/Input/InputYear.tsx +125 -0
- package/src/Input/README_INPUT.md +1 -0
- package/src/Input/README_INPUT_DATE.md +18 -0
- package/src/Input/README_INPUT_FILE.md +1 -0
- package/src/Input/README_INPUT_MONTH.md +132 -0
- package/src/Input/README_INPUT_OTP.md +1 -0
- package/src/Input/README_INPUT_SELECT.md +1 -0
- package/src/Input/README_INPUT_YEAR.md +115 -0
- package/src/Input/Switch.tsx +7 -1
- package/src/Input/TextArea.tsx +15 -2
- package/src/Input/partials/InputFile/CardTrigger.tsx +3 -0
- package/src/Input/partials/InputFile/CardTriggerSmall.tsx +4 -1
- package/src/Input/partials/InputFile/ItemPreview.tsx +12 -2
- package/src/Input/partials/PickerField.tsx +125 -0
- package/src/Input/type.tsx +14 -0
- package/src/Label/Label.tsx +3 -0
- package/src/Label/README.md +1 -0
- package/src/LabelForm/LabelForm.tsx +3 -1
- package/src/List/List.tsx +2 -2
- package/src/List/ListItem.tsx +2 -0
- package/src/List/README.md +2 -0
- package/src/List/type.tsx +2 -0
- package/src/Loading/Loading.tsx +3 -1
- package/src/Modal/Modal.tsx +15 -3
- package/src/Modal/README.md +1 -0
- package/src/Provider/RequiredUpdateAppsProvider.tsx +10 -1
- package/src/RadioButton/README.md +1 -0
- package/src/RadioButton/RadioButton.tsx +12 -2
- package/src/Select/README.md +1 -0
- package/src/Select/README_Select.md +1 -0
- package/src/Select/Select.tsx +13 -3
- package/src/Select/type.tsx +1 -0
- package/src/Skeleton/README.md +1 -0
- package/src/Skeleton/Skeleton.tsx +2 -0
- package/src/Skeleton/type.ts +1 -0
- package/src/Spinner/Spinner.tsx +15 -2
- package/src/Step/README.md +2 -0
- package/src/Step/Step.tsx +2 -2
- package/src/Step/StepItem.tsx +7 -2
- package/src/Step/type.tsx +2 -0
- package/src/Tab/README.md +1 -0
- package/src/Tab/Tab.tsx +12 -2
- package/src/Tab/type.tsx +1 -0
- package/src/TextEditor/LinkSheet.tsx +100 -0
- package/src/TextEditor/README.md +52 -2
- package/src/TextEditor/TextEditor.tsx +92 -500
- package/src/TextEditor/Toolbar.tsx +104 -0
- package/src/TextEditor/editorDocument.ts +246 -0
- package/src/TextEditor/formatState.ts +186 -0
- package/src/TextEditor/toolbarButtons.ts +41 -0
- package/src/TextEditor/types.tsx +63 -0
- package/src/Timeline/README.md +2 -0
- package/src/Timeline/Timeline.tsx +7 -2
- package/src/Timeline/TimelineItem.tsx +3 -1
- package/src/Toast/README.md +16 -0
- package/src/Toast/Toast.tsx +13 -2
- package/src/Typography/README.md +1 -0
- package/src/Typography/Typography.tsx +6 -1
- package/src/Typography/type.tsx +2 -10
- package/src/Ui/Card.tsx +4 -0
- package/src/Ui/Center.tsx +7 -2
- package/src/Ui/Col.tsx +7 -2
- package/src/Ui/Container.tsx +7 -2
- package/src/Ui/Devider.tsx +2 -2
- package/src/Ui/Footer.tsx +6 -3
- package/src/Ui/Gap.tsx +8 -2
- package/src/Ui/Grid.tsx +3 -2
- package/src/Ui/README_CARD.md +1 -0
- package/src/Ui/README_CONTAINER.md +1 -0
- package/src/Ui/README_DEVIDER.md +5 -0
- package/src/Ui/README_FOOTER.md +9 -0
- package/src/Ui/README_VIEWINSETS.md +1 -0
- package/src/function/README_DATE_FORMATTER.md +35 -0
- package/src/function/dateFormatter.ts +40 -0
- package/src/helpers/getTestID.ts +15 -0
- package/src/index.tsx +6 -0
- package/lib/module/Button/tests/Button.test.js +0 -70
- package/lib/module/Button/tests/Button.test.js.map +0 -1
- package/lib/typescript/src/Button/tests/Button.test.d.ts +0 -2
- package/lib/typescript/src/Button/tests/Button.test.d.ts.map +0 -1
- package/src/Button/tests/Button.test.tsx +0 -49
package/src/Label/README.md
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
| `color` | `'default' \| 'success' \| 'danger' \| 'primary' \| 'warning' \| 'info' \| 'purple' \| 'orange'` | `'default'` | Variasi warna latar dan teks. |
|
|
12
12
|
| `icon` | `IconNameProps` | `undefined` | Menampilkan ikon di sebelah kiri teks. |
|
|
13
13
|
| `size` | `'small' \| 'medium'` | `'medium'` | (Belum digunakan – untuk ekspansi ukuran ke depan.) |
|
|
14
|
+
| `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
|
|
14
15
|
|
|
15
16
|
---
|
|
16
17
|
|
|
@@ -6,15 +6,17 @@ interface Props {
|
|
|
6
6
|
title: string;
|
|
7
7
|
required?: boolean;
|
|
8
8
|
color?: string;
|
|
9
|
+
testID?: string;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
export default function LabelForm({
|
|
12
13
|
title,
|
|
13
14
|
required,
|
|
14
15
|
color = Color.gray[900],
|
|
16
|
+
testID,
|
|
15
17
|
}: Props) {
|
|
16
18
|
return (
|
|
17
|
-
<View>
|
|
19
|
+
<View testID={testID}>
|
|
18
20
|
<Typography variant="t2" weight="semibold" color={color}>
|
|
19
21
|
{title}{' '}
|
|
20
22
|
{required && (
|
package/src/List/List.tsx
CHANGED
|
@@ -4,13 +4,13 @@ import Color from '../Color/Color';
|
|
|
4
4
|
import Theme from '../Theme/Theme';
|
|
5
5
|
import type { ListItemProps, ListProps } from './type';
|
|
6
6
|
|
|
7
|
-
export default function List({ children, style }: ListProps) {
|
|
7
|
+
export default function List({ children, style, testID }: ListProps) {
|
|
8
8
|
const validChildren = React.Children.toArray(children).filter((child) =>
|
|
9
9
|
React.isValidElement(child)
|
|
10
10
|
);
|
|
11
11
|
|
|
12
12
|
return (
|
|
13
|
-
<View style={[styles.container, style]}>
|
|
13
|
+
<View testID={testID} style={[styles.container, style]}>
|
|
14
14
|
{React.Children.map(validChildren, (child, index) => {
|
|
15
15
|
const isLast = index === validChildren.length - 1;
|
|
16
16
|
return React.isValidElement<ListItemProps>(child)
|
package/src/List/ListItem.tsx
CHANGED
|
@@ -8,11 +8,13 @@ export default function ListItem({
|
|
|
8
8
|
onPress,
|
|
9
9
|
style,
|
|
10
10
|
isLast = false,
|
|
11
|
+
testID,
|
|
11
12
|
}: ListItemProps) {
|
|
12
13
|
const Wrapper = onPress ? TouchableOpacity : View;
|
|
13
14
|
|
|
14
15
|
return (
|
|
15
16
|
<Wrapper
|
|
17
|
+
testID={testID}
|
|
16
18
|
onPress={onPress}
|
|
17
19
|
style={[styles.container, !isLast && styles.withBorder, style]}
|
|
18
20
|
>
|
package/src/List/README.md
CHANGED
|
@@ -38,6 +38,7 @@ export default function SettingMenu() {
|
|
|
38
38
|
| ---------- | ----------- | ----- | ------- | ------------------------------ |
|
|
39
39
|
| `children` | `ReactNode` | ✅ | — | Satu atau beberapa `ListItem`. |
|
|
40
40
|
| `style` | `ViewStyle` | ❌ | — | Gaya tambahan untuk container. |
|
|
41
|
+
| `testID` | `string` | ❌ | — | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
|
|
41
42
|
|
|
42
43
|
### ListItem
|
|
43
44
|
| Prop | Type | Wajib | Default | Deskripsi |
|
|
@@ -47,3 +48,4 @@ export default function SettingMenu() {
|
|
|
47
48
|
| `style` | `StyleProp<ViewStyle>` | ❌ | — | Gaya tambahan untuk baris. |
|
|
48
49
|
| `isLast` | `boolean` | 🚫 | — | Diisi otomatis oleh `List` untuk menghapus border bawah pada baris akhir. |
|
|
49
50
|
| `index` | `number` | 🚫 | — | Tidak digunakan—disediakan untuk extensibility. |
|
|
51
|
+
| `testID` | `string` | ❌ | — | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
|
package/src/List/type.tsx
CHANGED
package/src/Loading/Loading.tsx
CHANGED
|
@@ -6,6 +6,7 @@ interface LoadingProps {
|
|
|
6
6
|
size?: 'small' | 'large' | number;
|
|
7
7
|
color?: string;
|
|
8
8
|
variant?: 'circle' | 'square';
|
|
9
|
+
testID?: string;
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
const Loading: React.FC<LoadingProps> = ({
|
|
@@ -13,9 +14,10 @@ const Loading: React.FC<LoadingProps> = ({
|
|
|
13
14
|
size = 'large',
|
|
14
15
|
color = '#007AFF',
|
|
15
16
|
variant = 'circle',
|
|
17
|
+
testID,
|
|
16
18
|
}) => {
|
|
17
19
|
return (
|
|
18
|
-
<View style={styles.wrapper}>
|
|
20
|
+
<View testID={testID} style={styles.wrapper}>
|
|
19
21
|
<View
|
|
20
22
|
style={[
|
|
21
23
|
styles.container,
|
package/src/Modal/Modal.tsx
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { Color, Icon } from '@herca/rn-kit';
|
|
2
1
|
import React, { useState, useEffect, useCallback } from 'react';
|
|
3
2
|
import {
|
|
4
3
|
View,
|
|
@@ -11,6 +10,9 @@ import {
|
|
|
11
10
|
Platform,
|
|
12
11
|
type ViewStyle,
|
|
13
12
|
} from 'react-native';
|
|
13
|
+
import Color from '../Color/Color';
|
|
14
|
+
import Icon from '../Icon/Icon';
|
|
15
|
+
import { getTestID } from '../helpers/getTestID';
|
|
14
16
|
|
|
15
17
|
interface ModalPopUpProps {
|
|
16
18
|
isOpen: boolean;
|
|
@@ -24,6 +26,7 @@ interface ModalPopUpProps {
|
|
|
24
26
|
height?: DimensionValue;
|
|
25
27
|
containerStyle?: ViewStyle;
|
|
26
28
|
modalStyle?: ViewStyle;
|
|
29
|
+
testID?: string;
|
|
27
30
|
}
|
|
28
31
|
|
|
29
32
|
const ModalPopUp: React.FC<ModalPopUpProps> = ({
|
|
@@ -37,6 +40,7 @@ const ModalPopUp: React.FC<ModalPopUpProps> = ({
|
|
|
37
40
|
width = '90%',
|
|
38
41
|
containerStyle,
|
|
39
42
|
modalStyle,
|
|
43
|
+
testID,
|
|
40
44
|
}) => {
|
|
41
45
|
const [isVisible, setIsVisible] = useState(isOpen ?? false);
|
|
42
46
|
const scaleAnim = useState(() => new Animated.Value(0))[0];
|
|
@@ -98,15 +102,23 @@ const ModalPopUp: React.FC<ModalPopUpProps> = ({
|
|
|
98
102
|
<View style={[styles.modalContainer, containerStyle]}>
|
|
99
103
|
{backdrop && (
|
|
100
104
|
<TouchableOpacity
|
|
105
|
+
testID={getTestID(testID, 'backdrop')}
|
|
101
106
|
style={[styles.backdrop, styles.backdropTouch]}
|
|
102
107
|
activeOpacity={1}
|
|
103
108
|
onPress={handleBackdropPress}
|
|
104
109
|
/>
|
|
105
110
|
)}
|
|
106
|
-
<Animated.View
|
|
111
|
+
<Animated.View
|
|
112
|
+
testID={testID}
|
|
113
|
+
style={[styles.modalContent, modalContentStyle]}
|
|
114
|
+
>
|
|
107
115
|
{closable && (
|
|
108
116
|
<View style={styles.closeButtonContainer}>
|
|
109
|
-
<TouchableOpacity
|
|
117
|
+
<TouchableOpacity
|
|
118
|
+
testID={getTestID(testID, 'close')}
|
|
119
|
+
onPress={userClose}
|
|
120
|
+
style={styles.closeButton}
|
|
121
|
+
>
|
|
110
122
|
<View style={styles.iconButtonClose}>
|
|
111
123
|
<Icon name="Times" size={13} color={Color.gray[900]} />
|
|
112
124
|
</View>
|
package/src/Modal/README.md
CHANGED
|
@@ -37,3 +37,4 @@ export default function ExampleModal() {
|
|
|
37
37
|
| `height` | `DimensionValue` | `undefined` | Tinggi modal (opsional, gunakan scroll jika tidak cukup). |
|
|
38
38
|
| `containerStyle` | `ViewStyle` | `undefined` | Gaya tambahan untuk wrapper container (pusat layar). |
|
|
39
39
|
| `modalStyle` | `ViewStyle` | `undefined` | Gaya tambahan untuk modal box. |
|
|
40
|
+
| `testID` | `string` | `undefined` | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan pada elemen konten modal (tanpa suffix); menurunkan `-backdrop` dan `-close`. |
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
import { Image, Platform, StyleSheet, View } from 'react-native';
|
|
3
|
-
|
|
3
|
+
// Imported from their own modules rather than the package barrel ('..'):
|
|
4
|
+
// index.tsx re-exports Provider, so going through the barrel here made
|
|
5
|
+
// index -> Provider -> index a cycle and dragged every native-backed export
|
|
6
|
+
// (document picker, blob util, pdf, webview) into anything that renders a
|
|
7
|
+
// Provider. Same modules, no cycle.
|
|
8
|
+
import Button from '../Button/Button';
|
|
9
|
+
import Card from '../Ui/Card';
|
|
10
|
+
import Color from '../Color/Color';
|
|
11
|
+
import Modal from '../Modal/Modal';
|
|
12
|
+
import Typography from '../Typography/Typography';
|
|
4
13
|
import type { RequiredUpdateAppsProviderProps } from './type';
|
|
5
14
|
|
|
6
15
|
export default function RequiredUpdateAppsProvider({
|
|
@@ -18,6 +18,7 @@ import RadioButton from './RadioButton';
|
|
|
18
18
|
| `selectedValue` | `string \| null` | `null` | Nilai yang saat ini dipilih oleh pengguna. |
|
|
19
19
|
| `onChange` | `(value: string) => void` | - | Fungsi callback saat item dipilih. |
|
|
20
20
|
| `direction` | `'vertical' \| 'horizontal'` | `'vertical'`| Arah layout dari item radio: vertikal atau horizontal. |
|
|
21
|
+
| `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-option-{value}` dan `-option-{value}-label` untuk tiap item. |
|
|
21
22
|
|
|
22
23
|
## 📄 Tipe `RadioButtonItem`
|
|
23
24
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React, { useEffect, useState } from 'react';
|
|
2
2
|
import { View, StyleSheet, Pressable } from 'react-native';
|
|
3
|
-
import
|
|
3
|
+
import Typography from '../Typography/Typography';
|
|
4
|
+
import Color from '../Color/Color';
|
|
5
|
+
import { getTestID } from '../helpers/getTestID';
|
|
4
6
|
|
|
5
7
|
interface RadioButtonItem {
|
|
6
8
|
label: string;
|
|
@@ -13,6 +15,7 @@ interface RadioButtonProps {
|
|
|
13
15
|
selectedValue: string | null;
|
|
14
16
|
onChange?: (value: string) => void;
|
|
15
17
|
direction?: 'vertical' | 'horizontal';
|
|
18
|
+
testID?: string;
|
|
16
19
|
}
|
|
17
20
|
|
|
18
21
|
const RadioButton: React.FC<RadioButtonProps> = ({
|
|
@@ -20,6 +23,7 @@ const RadioButton: React.FC<RadioButtonProps> = ({
|
|
|
20
23
|
selectedValue,
|
|
21
24
|
onChange,
|
|
22
25
|
direction = 'vertical',
|
|
26
|
+
testID,
|
|
23
27
|
}) => {
|
|
24
28
|
const [internalValue, setInternalValue] = useState<string | null>(
|
|
25
29
|
selectedValue
|
|
@@ -57,6 +61,7 @@ const RadioButton: React.FC<RadioButtonProps> = ({
|
|
|
57
61
|
return (
|
|
58
62
|
<View key={item.value} style={styles.item}>
|
|
59
63
|
<Pressable
|
|
64
|
+
testID={getTestID(testID, `option-${item.value}`)}
|
|
60
65
|
onPress={() => handleOnPress(item)}
|
|
61
66
|
style={[styles.radioContainer, item.disabled && styles.disabled]}
|
|
62
67
|
>
|
|
@@ -65,7 +70,12 @@ const RadioButton: React.FC<RadioButtonProps> = ({
|
|
|
65
70
|
>
|
|
66
71
|
{isChecked && <View style={styles.innerCircle} />}
|
|
67
72
|
</View>
|
|
68
|
-
<Typography
|
|
73
|
+
<Typography
|
|
74
|
+
testID={getTestID(testID, `option-${item.value}-label`)}
|
|
75
|
+
variant="t2"
|
|
76
|
+
weight="medium"
|
|
77
|
+
color={Color.gray[800]}
|
|
78
|
+
>
|
|
69
79
|
{item.label}
|
|
70
80
|
</Typography>
|
|
71
81
|
</Pressable>
|
package/src/Select/README.md
CHANGED
|
@@ -31,6 +31,7 @@ Komponen `Select` adalah komponen pemilihan data berbasis bottom sheet dengan du
|
|
|
31
31
|
| `header` | ReactElement | – | Jika ingin chip mempunyai header. |
|
|
32
32
|
| `footer` | ReactElement | – | Jika ingin chip mempunyai footer. |
|
|
33
33
|
| `value` | ChipSelectedProps | – | Nilai pilihan yang dikontrol dari luar. Cocok untuk membuat komponen controlled. Akan mensinkronkan state internal selected dengan value setiap kali berubah. |
|
|
34
|
+
| `testID` | `string` | – | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-sheet`, `-search`, `-submit`, dan `-option-{value}` (via `Chip`). |
|
|
34
35
|
|
|
35
36
|
## 📌 Contoh Penggunaan
|
|
36
37
|
|
|
@@ -34,6 +34,7 @@ Komponen `Select` adalah komponen pemilihan data berbasis bottom sheet dengan du
|
|
|
34
34
|
| `refreshing` | `boolean` | `false` | Status untuk pull-to-refresh |
|
|
35
35
|
| `onEndReached` | `() => void` | - | Dipanggil saat scroll mencapai akhir list |
|
|
36
36
|
| `onSelectedChange` | `onSelectedChange?: (value: ChipOptionProps[]) => void;` | - | Dipanggil saat selected berubah |
|
|
37
|
+
| `testID` | `string` | – | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-sheet`, `-search`, `-submit`, dan `-option-{value}` (via `Chip`). |
|
|
37
38
|
|
|
38
39
|
## 📌 Contoh Penggunaan
|
|
39
40
|
|
package/src/Select/Select.tsx
CHANGED
|
@@ -14,6 +14,7 @@ import Loading from '../Loading/Loading';
|
|
|
14
14
|
import { useToast } from '../Toast/ToastContext';
|
|
15
15
|
import { type SelectProps } from './type';
|
|
16
16
|
import { useRef } from 'react';
|
|
17
|
+
import { getTestID } from '../helpers/getTestID';
|
|
17
18
|
export default function Select({
|
|
18
19
|
isOpen,
|
|
19
20
|
data,
|
|
@@ -35,6 +36,7 @@ export default function Select({
|
|
|
35
36
|
searchValue,
|
|
36
37
|
value,
|
|
37
38
|
onSelectedChange,
|
|
39
|
+
testID,
|
|
38
40
|
}: SelectProps) {
|
|
39
41
|
const [selected, setSelected] = useState<ChipSelectedProps>();
|
|
40
42
|
const [searchQuery, setSearchQuery] = useState<string>(searchValue || '');
|
|
@@ -49,13 +51,17 @@ export default function Select({
|
|
|
49
51
|
[onClose]
|
|
50
52
|
);
|
|
51
53
|
|
|
52
|
-
const handleOnPresSubmitSelect = ()
|
|
54
|
+
const handleOnPresSubmitSelect = () => {
|
|
53
55
|
if (required && (!selected || selected.length === 0)) {
|
|
54
56
|
show('Please fill a item');
|
|
55
|
-
return
|
|
57
|
+
return;
|
|
56
58
|
}
|
|
59
|
+
|
|
57
60
|
onSubmit?.(selected ? selected : []);
|
|
58
|
-
|
|
61
|
+
|
|
62
|
+
// The single-select path closes itself right after onSubmit; this one used
|
|
63
|
+
// to just return a boolean that nothing read, so the sheet stayed open.
|
|
64
|
+
handleOnCloseBottom(false);
|
|
59
65
|
};
|
|
60
66
|
|
|
61
67
|
const searchTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
@@ -94,12 +100,14 @@ export default function Select({
|
|
|
94
100
|
}, [searchValue]);
|
|
95
101
|
return (
|
|
96
102
|
<BottomSheet
|
|
103
|
+
testID={getTestID(testID, 'sheet')}
|
|
97
104
|
onClose={(val: boolean) => handleOnCloseBottom(val)}
|
|
98
105
|
isOpen={isOpen}
|
|
99
106
|
height={height}
|
|
100
107
|
footer={
|
|
101
108
|
multiple ? (
|
|
102
109
|
<Button
|
|
110
|
+
testID={getTestID(testID, 'submit')}
|
|
103
111
|
title={submitBtnLabel ?? 'Lanjutkan'}
|
|
104
112
|
color="primary"
|
|
105
113
|
disabled={(!selected || selected.length === 0) && required}
|
|
@@ -115,6 +123,7 @@ export default function Select({
|
|
|
115
123
|
accessible={false}
|
|
116
124
|
>
|
|
117
125
|
<Input
|
|
126
|
+
testID={getTestID(testID, 'search')}
|
|
118
127
|
submitBehavior="submit"
|
|
119
128
|
icon="Search"
|
|
120
129
|
placeholder="Search"
|
|
@@ -128,6 +137,7 @@ export default function Select({
|
|
|
128
137
|
) : (
|
|
129
138
|
<View style={styles.containerChip}>
|
|
130
139
|
<Chip
|
|
140
|
+
testID={testID}
|
|
131
141
|
options={data}
|
|
132
142
|
direction="vertical"
|
|
133
143
|
scrollable={true}
|
package/src/Select/type.tsx
CHANGED
package/src/Skeleton/README.md
CHANGED
|
@@ -14,6 +14,7 @@ Komponen `Skeleton` adalah placeholder UI yang menampilkan efek shimmer animasi,
|
|
|
14
14
|
| `backgroundColor` | `string` | `"#F0F0F0"` | Warna latar belakang dari blok skeleton. |
|
|
15
15
|
| `shimmerColor` | `string` | `"rgba(255, 255, 255, 0.7)"` | Warna efek shimmer yang bergerak. |
|
|
16
16
|
| `duration` | `number` | `1500` | Durasi animasi shimmer (dalam milidetik). |
|
|
17
|
+
| `testID` | `string` | - | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
|
|
17
18
|
|
|
18
19
|
---
|
|
19
20
|
|
|
@@ -17,6 +17,7 @@ const Skeleton: React.FC<SkeletonProps> = ({
|
|
|
17
17
|
backgroundColor = '#F0F0F0',
|
|
18
18
|
shimmerColor = 'rgba(255, 255, 255, 0.7)',
|
|
19
19
|
duration = 1500,
|
|
20
|
+
testID,
|
|
20
21
|
}) => {
|
|
21
22
|
const shimmerAnimation = useRef(new Animated.Value(0)).current;
|
|
22
23
|
const skeletonWidth = useRef(0);
|
|
@@ -59,6 +60,7 @@ const Skeleton: React.FC<SkeletonProps> = ({
|
|
|
59
60
|
|
|
60
61
|
return (
|
|
61
62
|
<View
|
|
63
|
+
testID={testID}
|
|
62
64
|
onLayout={handleLayout}
|
|
63
65
|
style={[
|
|
64
66
|
styles.skeletonCard,
|
package/src/Skeleton/type.ts
CHANGED
package/src/Spinner/Spinner.tsx
CHANGED
|
@@ -2,7 +2,17 @@ import { useRef, useEffect } from 'react';
|
|
|
2
2
|
import { Animated, Easing, StyleSheet, View } from 'react-native';
|
|
3
3
|
import Svg, { Defs, LinearGradient, Stop, Circle } from 'react-native-svg';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
interface SpinnerProps {
|
|
6
|
+
size?: number;
|
|
7
|
+
color?: string;
|
|
8
|
+
testID?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export default function Spinner({
|
|
12
|
+
size = 48,
|
|
13
|
+
color = '#FFFFFF',
|
|
14
|
+
testID,
|
|
15
|
+
}: SpinnerProps) {
|
|
6
16
|
const rotateAnim = useRef(new Animated.Value(0)).current;
|
|
7
17
|
|
|
8
18
|
useEffect(() => {
|
|
@@ -29,7 +39,10 @@ export default function Spinner({ size = 48, color = '#FFFFFF' }) {
|
|
|
29
39
|
const darkerColor = '#999';
|
|
30
40
|
|
|
31
41
|
return (
|
|
32
|
-
<View
|
|
42
|
+
<View
|
|
43
|
+
testID={testID}
|
|
44
|
+
style={[styles.container, { width: size, height: size }]}
|
|
45
|
+
>
|
|
33
46
|
<Animated.View
|
|
34
47
|
style={{
|
|
35
48
|
transform: [{ rotate: rotateInterpolate }],
|
package/src/Step/README.md
CHANGED
|
@@ -40,6 +40,7 @@ export default function CheckoutWizard() {
|
|
|
40
40
|
| `children` | `ReactElement<StepItemProps>` \| array | ✅ | — | Satu atau beberapa `StepItem`. |
|
|
41
41
|
| `current` | `number` | ✅ | — | Indeks langkah aktif (dimulai dari `0`). |
|
|
42
42
|
| `onChangeStep` | `(activeIndex: number) => void` | ✅ | — | Callback yang dipicu setiap kali nilai `current` berubah di dalam komponen. |
|
|
43
|
+
| `testID` | `string` | ❌ | — | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
|
|
43
44
|
|
|
44
45
|
|
|
45
46
|
### StepItem
|
|
@@ -55,6 +56,7 @@ Sebagai konten – ditampilkan bila index-nya sama dengan current.
|
|
|
55
56
|
| `children` | `ReactNode` | ✅ | — | Konten yang muncul ketika langkah ini aktif. |
|
|
56
57
|
| `color` | `'primary' \| 'success' \| 'warning' \| 'danger' \| 'purple'` | ❌ | `'primary'` | Warna lingkaran & garis pada header. |
|
|
57
58
|
| `title` | `string` | ❌ | `''` | (Opsional) Judul untuk ditampilkan di header (bisa dikustom lagi). |
|
|
59
|
+
| `testID` | `string` | ❌ | — | ID untuk automation testing (Maestro/Detox/Appium). Diterapkan langsung ke elemen akar, tanpa suffix. |
|
|
58
60
|
|
|
59
61
|
## ⚙️ Cara Kerja
|
|
60
62
|
|
package/src/Step/Step.tsx
CHANGED
|
@@ -5,7 +5,7 @@ import type { StepItemProps, StepProps } from './type';
|
|
|
5
5
|
|
|
6
6
|
const { width: screenWidth } = Dimensions.get('window');
|
|
7
7
|
|
|
8
|
-
const Step = ({ children, current = 0, onChangeStep }: StepProps) => {
|
|
8
|
+
const Step = ({ children, current = 0, onChangeStep, testID }: StepProps) => {
|
|
9
9
|
const childrenArray = React.Children.toArray(children).filter(
|
|
10
10
|
React.isValidElement
|
|
11
11
|
) as React.ReactElement<StepItemProps>[];
|
|
@@ -25,7 +25,7 @@ const Step = ({ children, current = 0, onChangeStep }: StepProps) => {
|
|
|
25
25
|
}, [current, onChangeStep]);
|
|
26
26
|
|
|
27
27
|
return (
|
|
28
|
-
<View style={styles.container}>
|
|
28
|
+
<View testID={testID} style={styles.container}>
|
|
29
29
|
<View style={[styles.headerContainer]}>
|
|
30
30
|
<ScrollView
|
|
31
31
|
ref={scrollRef}
|
package/src/Step/StepItem.tsx
CHANGED
|
@@ -18,10 +18,11 @@ const StepItem = ({
|
|
|
18
18
|
isHeader,
|
|
19
19
|
children,
|
|
20
20
|
style,
|
|
21
|
+
testID,
|
|
21
22
|
}: StepItemProps) => {
|
|
22
23
|
if (isHeader) {
|
|
23
24
|
return (
|
|
24
|
-
<View style={[styles.headerItem, style]}>
|
|
25
|
+
<View testID={testID} style={[styles.headerItem, style]}>
|
|
25
26
|
<View
|
|
26
27
|
style={[
|
|
27
28
|
styles.circle,
|
|
@@ -56,7 +57,11 @@ const StepItem = ({
|
|
|
56
57
|
});
|
|
57
58
|
}
|
|
58
59
|
|
|
59
|
-
return
|
|
60
|
+
return (
|
|
61
|
+
<View testID={testID} style={styles.content}>
|
|
62
|
+
{children}
|
|
63
|
+
</View>
|
|
64
|
+
);
|
|
60
65
|
};
|
|
61
66
|
const styles = StyleSheet.create({
|
|
62
67
|
headerItem: {
|
package/src/Step/type.tsx
CHANGED
|
@@ -10,9 +10,11 @@ export interface StepItemProps {
|
|
|
10
10
|
children: React.ReactNode;
|
|
11
11
|
style?: StyleProp<ViewStyle>;
|
|
12
12
|
title?: string;
|
|
13
|
+
testID?: string;
|
|
13
14
|
}
|
|
14
15
|
export interface StepProps {
|
|
15
16
|
children: ReactElement<StepItemProps> | ReactElement<StepItemProps>[];
|
|
16
17
|
current: number;
|
|
17
18
|
onChangeStep: (e: any) => void;
|
|
19
|
+
testID?: string;
|
|
18
20
|
}
|
package/src/Tab/README.md
CHANGED
|
@@ -95,6 +95,7 @@ Setiap tab dibungkus dalam `ScrollView` vertikal, sehingga bisa discroll ke bawa
|
|
|
95
95
|
| `current?` | `number` | Indeks tab aktif (default: 0) |
|
|
96
96
|
| `onChangeTab?` | `(index: number) => void` | Callback saat tab berpindah |
|
|
97
97
|
| `renderHeader` | `React.ReactElement` | tambahan react element di atas tab |
|
|
98
|
+
| `testID` | `string` | ID untuk automation testing (Maestro/Detox/Appium). Menurunkan `-item-{index}` untuk tiap tab header dan `-panel-{index}` untuk tiap konten tab. |
|
|
98
99
|
|
|
99
100
|
### `TabItemProps`
|
|
100
101
|
|
package/src/Tab/Tab.tsx
CHANGED
|
@@ -10,6 +10,7 @@ import { View, Pressable, StyleSheet, ScrollView } from 'react-native';
|
|
|
10
10
|
import PagerView from 'react-native-pager-view';
|
|
11
11
|
import Color from '../Color/Color';
|
|
12
12
|
import Typography from '../Typography/Typography';
|
|
13
|
+
import { getTestID } from '../helpers/getTestID';
|
|
13
14
|
import type { TabItemProps, TabProps } from './type';
|
|
14
15
|
|
|
15
16
|
const Tab: React.FC<TabProps> = ({
|
|
@@ -18,6 +19,7 @@ const Tab: React.FC<TabProps> = ({
|
|
|
18
19
|
onChangeTab,
|
|
19
20
|
renderHeader,
|
|
20
21
|
refreshControl,
|
|
22
|
+
testID,
|
|
21
23
|
}) => {
|
|
22
24
|
const items = Children.toArray(children).filter(
|
|
23
25
|
isValidElement
|
|
@@ -63,6 +65,7 @@ const Tab: React.FC<TabProps> = ({
|
|
|
63
65
|
<React.Fragment key={index}>
|
|
64
66
|
{!item.props.renderTabName && (
|
|
65
67
|
<Pressable
|
|
68
|
+
testID={getTestID(testID, `item-${index}`)}
|
|
66
69
|
style={[
|
|
67
70
|
styles.tabButton,
|
|
68
71
|
isActive ? styles.tabActive : styles.tabInactive,
|
|
@@ -81,7 +84,10 @@ const Tab: React.FC<TabProps> = ({
|
|
|
81
84
|
)}
|
|
82
85
|
|
|
83
86
|
{item.props.renderTabName && (
|
|
84
|
-
<Pressable
|
|
87
|
+
<Pressable
|
|
88
|
+
testID={getTestID(testID, `item-${index}`)}
|
|
89
|
+
onPress={() => handleHeaderPress(index)}
|
|
90
|
+
>
|
|
85
91
|
{item.props.renderTabName({
|
|
86
92
|
isActive,
|
|
87
93
|
})}
|
|
@@ -113,7 +119,11 @@ const Tab: React.FC<TabProps> = ({
|
|
|
113
119
|
onPageSelected={(e) => updateActive(e.nativeEvent.position)}
|
|
114
120
|
>
|
|
115
121
|
{items.map((item, index) => (
|
|
116
|
-
<View
|
|
122
|
+
<View
|
|
123
|
+
key={index}
|
|
124
|
+
testID={getTestID(testID, `panel-${index}`)}
|
|
125
|
+
collapsable={false}
|
|
126
|
+
>
|
|
117
127
|
{item?.props?.children}
|
|
118
128
|
</View>
|
|
119
129
|
))}
|
package/src/Tab/type.tsx
CHANGED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { forwardRef } from 'react';
|
|
2
|
+
import { StyleSheet, TextInput, View } from 'react-native';
|
|
3
|
+
import BottomSheet from '../BottomSheet/BottomSheet';
|
|
4
|
+
import Button from '../Button/Button';
|
|
5
|
+
import Input from '../Input/Input';
|
|
6
|
+
|
|
7
|
+
interface LinkSheetProps {
|
|
8
|
+
isOpen: boolean;
|
|
9
|
+
text: string;
|
|
10
|
+
url: string;
|
|
11
|
+
onChangeText: (value: string) => void;
|
|
12
|
+
onChangeUrl: (value: string) => void;
|
|
13
|
+
onCancel: () => void;
|
|
14
|
+
onSave: () => void;
|
|
15
|
+
onClose: () => void;
|
|
16
|
+
labelText: string;
|
|
17
|
+
labelUrl: string;
|
|
18
|
+
placeholderText: string;
|
|
19
|
+
placeholderUrl: string;
|
|
20
|
+
saveText: string;
|
|
21
|
+
cancelText: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The sheet for adding or editing a hyperlink.
|
|
26
|
+
*
|
|
27
|
+
* The url input takes the forwarded ref because the editor focuses it shortly
|
|
28
|
+
* after opening.
|
|
29
|
+
*/
|
|
30
|
+
const LinkSheet = forwardRef<TextInput, LinkSheetProps>(
|
|
31
|
+
(
|
|
32
|
+
{
|
|
33
|
+
isOpen,
|
|
34
|
+
text,
|
|
35
|
+
url,
|
|
36
|
+
onChangeText,
|
|
37
|
+
onChangeUrl,
|
|
38
|
+
onCancel,
|
|
39
|
+
onSave,
|
|
40
|
+
onClose,
|
|
41
|
+
labelText,
|
|
42
|
+
labelUrl,
|
|
43
|
+
placeholderText,
|
|
44
|
+
placeholderUrl,
|
|
45
|
+
saveText,
|
|
46
|
+
cancelText,
|
|
47
|
+
},
|
|
48
|
+
ref
|
|
49
|
+
) => (
|
|
50
|
+
<BottomSheet isOpen={isOpen} onClose={onClose}>
|
|
51
|
+
<View style={styles.body}>
|
|
52
|
+
<Input
|
|
53
|
+
label={labelText}
|
|
54
|
+
value={text}
|
|
55
|
+
onChangeText={onChangeText}
|
|
56
|
+
placeholder={placeholderText}
|
|
57
|
+
autoCapitalize="none"
|
|
58
|
+
/>
|
|
59
|
+
<Input
|
|
60
|
+
ref={ref}
|
|
61
|
+
keyboardType="url"
|
|
62
|
+
label={labelUrl}
|
|
63
|
+
value={url}
|
|
64
|
+
onChangeText={onChangeUrl}
|
|
65
|
+
placeholder={placeholderUrl}
|
|
66
|
+
autoCapitalize="none"
|
|
67
|
+
/>
|
|
68
|
+
</View>
|
|
69
|
+
<View style={styles.actions}>
|
|
70
|
+
<View style={styles.flex1}>
|
|
71
|
+
<Button
|
|
72
|
+
title={cancelText}
|
|
73
|
+
color="primary"
|
|
74
|
+
onPress={onCancel}
|
|
75
|
+
variant="outline"
|
|
76
|
+
/>
|
|
77
|
+
</View>
|
|
78
|
+
<View style={styles.flex1}>
|
|
79
|
+
<Button title={saveText} color="primary" onPress={onSave} />
|
|
80
|
+
</View>
|
|
81
|
+
</View>
|
|
82
|
+
</BottomSheet>
|
|
83
|
+
)
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
export default LinkSheet;
|
|
87
|
+
|
|
88
|
+
const styles = StyleSheet.create({
|
|
89
|
+
body: {
|
|
90
|
+
gap: 12,
|
|
91
|
+
},
|
|
92
|
+
actions: {
|
|
93
|
+
flexDirection: 'row',
|
|
94
|
+
gap: 8,
|
|
95
|
+
marginTop: 16,
|
|
96
|
+
},
|
|
97
|
+
flex1: {
|
|
98
|
+
flex: 1,
|
|
99
|
+
},
|
|
100
|
+
});
|