nurseitaly-components 0.0.1
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 +93 -0
- package/dist/basic/Avatar/Avatar.d.ts +12 -0
- package/dist/basic/Avatar/Avatar.js +24 -0
- package/dist/basic/Avatar/avatar.png +0 -0
- package/dist/basic/Avatar/index.d.ts +2 -0
- package/dist/basic/Avatar/index.js +2 -0
- package/dist/basic/Avatar/styles.scss +80 -0
- package/dist/basic/Badge/Badge.d.ts +13 -0
- package/dist/basic/Badge/Badge.js +17 -0
- package/dist/basic/Badge/index.d.ts +2 -0
- package/dist/basic/Badge/index.js +2 -0
- package/dist/basic/Badge/styles.scss +68 -0
- package/dist/basic/Button/Button.d.ts +25 -0
- package/dist/basic/Button/Button.js +42 -0
- package/dist/basic/Button/index.d.ts +2 -0
- package/dist/basic/Button/index.js +2 -0
- package/dist/basic/Button/logo-ud.png +0 -0
- package/dist/basic/Button/styles.scss +248 -0
- package/dist/basic/CheckboxField/CheckboxField.d.ts +10 -0
- package/dist/basic/CheckboxField/CheckboxField.js +9 -0
- package/dist/basic/CheckboxField/index.d.ts +2 -0
- package/dist/basic/CheckboxField/index.js +2 -0
- package/dist/basic/CheckboxField/style.scss +4 -0
- package/dist/basic/DatePickerField/DatePickerField.d.ts +26 -0
- package/dist/basic/DatePickerField/DatePickerField.js +90 -0
- package/dist/basic/DatePickerField/DatePickerTheme.d.ts +2 -0
- package/dist/basic/DatePickerField/DatePickerTheme.js +59 -0
- package/dist/basic/DatePickerField/index.d.ts +1 -0
- package/dist/basic/DatePickerField/index.js +1 -0
- package/dist/basic/DatePickerField/styles.scss +26 -0
- package/dist/basic/DropdownButton/DropdownButton.d.ts +18 -0
- package/dist/basic/DropdownButton/DropdownButton.js +44 -0
- package/dist/basic/DropdownButton/index.d.ts +2 -0
- package/dist/basic/DropdownButton/index.js +2 -0
- package/dist/basic/DropdownButton/styles.scss +172 -0
- package/dist/basic/DropdownList/DropdownItemList.d.ts +16 -0
- package/dist/basic/DropdownList/DropdownItemList.js +17 -0
- package/dist/basic/DropdownList/DropdownList.d.ts +9 -0
- package/dist/basic/DropdownList/DropdownList.js +10 -0
- package/dist/basic/DropdownList/index.d.ts +2 -0
- package/dist/basic/DropdownList/index.js +2 -0
- package/dist/basic/DropdownList/styles.scss +56 -0
- package/dist/basic/DropdownMenu/DropdownMenu.d.ts +13 -0
- package/dist/basic/DropdownMenu/DropdownMenu.js +12 -0
- package/dist/basic/DropdownMenu/index.d.ts +2 -0
- package/dist/basic/DropdownMenu/index.js +2 -0
- package/dist/basic/DropdownMenu/styles.scss +54 -0
- package/dist/basic/Dummy/Dummy.d.ts +9 -0
- package/dist/basic/Dummy/Dummy.js +8 -0
- package/dist/basic/Dummy/index.d.ts +2 -0
- package/dist/basic/Dummy/index.js +2 -0
- package/dist/basic/Dummy/styles.scss +4 -0
- package/dist/basic/FilterDropdown/FilterDropdown.d.ts +16 -0
- package/dist/basic/FilterDropdown/FilterDropdown.js +56 -0
- package/dist/basic/FilterDropdown/index.d.ts +2 -0
- package/dist/basic/FilterDropdown/index.js +2 -0
- package/dist/basic/FilterDropdown/styles.scss +97 -0
- package/dist/basic/Icon/Icon.d.ts +15 -0
- package/dist/basic/Icon/Icon.js +20 -0
- package/dist/basic/Icon/IconSizes.d.ts +10 -0
- package/dist/basic/Icon/IconSizes.js +11 -0
- package/dist/basic/Icon/index.d.ts +2 -0
- package/dist/basic/Icon/index.js +2 -0
- package/dist/basic/Icon/styles.scss +249 -0
- package/dist/basic/IconButton/IconButton.d.ts +24 -0
- package/dist/basic/IconButton/IconButton.js +42 -0
- package/dist/basic/IconButton/index.d.ts +2 -0
- package/dist/basic/IconButton/index.js +2 -0
- package/dist/basic/IconButton/styles.scss +192 -0
- package/dist/basic/Pill/Pill.d.ts +17 -0
- package/dist/basic/Pill/Pill.js +22 -0
- package/dist/basic/Pill/index.d.ts +2 -0
- package/dist/basic/Pill/index.js +2 -0
- package/dist/basic/Pill/styles.scss +70 -0
- package/dist/basic/SelectField/AsyncSelectField.d.ts +21 -0
- package/dist/basic/SelectField/AsyncSelectField.js +131 -0
- package/dist/basic/SelectField/SelectAutocompleteTheme.d.ts +2 -0
- package/dist/basic/SelectField/SelectAutocompleteTheme.js +78 -0
- package/dist/basic/SelectField/SelectField.d.ts +27 -0
- package/dist/basic/SelectField/SelectField.js +81 -0
- package/dist/basic/SelectField/SelectFieldTheme.d.ts +7 -0
- package/dist/basic/SelectField/SelectFieldTheme.js +57 -0
- package/dist/basic/SelectField/SelectMultipleField.d.ts +28 -0
- package/dist/basic/SelectField/SelectMultipleField.js +98 -0
- package/dist/basic/SelectField/index.d.ts +2 -0
- package/dist/basic/SelectField/index.js +2 -0
- package/dist/basic/SelectField/styles.scss +38 -0
- package/dist/basic/Spinner/Spinner.d.ts +14 -0
- package/dist/basic/Spinner/Spinner.js +37 -0
- package/dist/basic/Spinner/index.d.ts +2 -0
- package/dist/basic/Spinner/index.js +2 -0
- package/dist/basic/Spinner/styles.scss +37 -0
- package/dist/basic/SwitchField/SwitchField.d.ts +11 -0
- package/dist/basic/SwitchField/SwitchField.js +13 -0
- package/dist/basic/SwitchField/index.d.ts +2 -0
- package/dist/basic/SwitchField/index.js +2 -0
- package/dist/basic/SwitchField/style.scss +4 -0
- package/dist/basic/Tabs/Tabs.d.ts +17 -0
- package/dist/basic/Tabs/Tabs.js +9 -0
- package/dist/basic/Tabs/index.d.ts +2 -0
- package/dist/basic/Tabs/index.js +2 -0
- package/dist/basic/Tabs/styles.scss +51 -0
- package/dist/basic/Tag/Tag.d.ts +18 -0
- package/dist/basic/Tag/Tag.js +30 -0
- package/dist/basic/Tag/index.d.ts +2 -0
- package/dist/basic/Tag/index.js +2 -0
- package/dist/basic/Tag/styles.scss +101 -0
- package/dist/basic/TextField/TextField.d.ts +34 -0
- package/dist/basic/TextField/TextField.js +164 -0
- package/dist/basic/TextField/TextFieldTheme.d.ts +6 -0
- package/dist/basic/TextField/TextFieldTheme.js +70 -0
- package/dist/basic/TextField/index.d.ts +2 -0
- package/dist/basic/TextField/index.js +2 -0
- package/dist/basic/TextField/inputRefManager.d.ts +4 -0
- package/dist/basic/TextField/inputRefManager.js +18 -0
- package/dist/basic/TextField/styles.scss +44 -0
- package/dist/basic/Tooltip/Tooltip.d.ts +26 -0
- package/dist/basic/Tooltip/Tooltip.js +37 -0
- package/dist/basic/Tooltip/index.d.ts +2 -0
- package/dist/basic/Tooltip/index.js +2 -0
- package/dist/basic/Tooltip/styles.scss +73 -0
- package/dist/basic/VerticalButton/VerticalButton.d.ts +6 -0
- package/dist/basic/VerticalButton/VerticalButton.js +8 -0
- package/dist/basic/VerticalButton/index.d.ts +2 -0
- package/dist/basic/VerticalButton/index.js +2 -0
- package/dist/basic/VerticalButton/styles.scss +24 -0
- package/dist/basic/fonts/material-symbols-outlined.woff2 +0 -0
- package/dist/basic/fonts/work-sans-latin-ext.woff2 +0 -0
- package/dist/basic/fonts/work-sans-latin.woff2 +0 -0
- package/dist/basic/fonts/work-sans-vietnamese.woff2 +0 -0
- package/dist/basic/fonts.d.ts +1 -0
- package/dist/basic/fonts.js +111 -0
- package/dist/basic/index.d.ts +33 -0
- package/dist/basic/index.js +29 -0
- package/dist/common/AppAnalytics/AppAnalytics.d.ts +1 -0
- package/dist/common/AppAnalytics/AppAnalytics.js +25 -0
- package/dist/common/AppAnalytics/index.d.ts +2 -0
- package/dist/common/AppAnalytics/index.js +2 -0
- package/dist/common/AppCard/AppCard.d.ts +13 -0
- package/dist/common/AppCard/AppCard.js +7 -0
- package/dist/common/AppCard/index.d.ts +2 -0
- package/dist/common/AppCard/index.js +2 -0
- package/dist/common/AppCard/style.scss +33 -0
- package/dist/common/AppClipboard/AppClipboard.d.ts +7 -0
- package/dist/common/AppClipboard/AppClipboard.js +23 -0
- package/dist/common/AppClipboard/index.d.ts +2 -0
- package/dist/common/AppClipboard/index.js +2 -0
- package/dist/common/AppColorpicker/AppColorpicker.d.ts +9 -0
- package/dist/common/AppColorpicker/AppColorpicker.js +22 -0
- package/dist/common/AppColorpicker/index.d.ts +2 -0
- package/dist/common/AppColorpicker/index.js +2 -0
- package/dist/common/AppColorpicker/style.scss +26 -0
- package/dist/common/AppCopyText/AppCopyText.d.ts +11 -0
- package/dist/common/AppCopyText/AppCopyText.js +35 -0
- package/dist/common/AppCopyText/index.d.ts +2 -0
- package/dist/common/AppCopyText/index.js +2 -0
- package/dist/common/AppCopyText/styles.scss +55 -0
- package/dist/common/AppDropzone/AppDropzone.d.ts +19 -0
- package/dist/common/AppDropzone/AppDropzone.js +13 -0
- package/dist/common/AppDropzone/AppDropzoneBody.d.ts +22 -0
- package/dist/common/AppDropzone/AppDropzoneBody.js +74 -0
- package/dist/common/AppDropzone/UploadService.d.ts +6 -0
- package/dist/common/AppDropzone/UploadService.js +18 -0
- package/dist/common/AppDropzone/UploadedFile.d.ts +14 -0
- package/dist/common/AppDropzone/UploadedFile.js +1 -0
- package/dist/common/AppDropzone/index.d.ts +4 -0
- package/dist/common/AppDropzone/index.js +4 -0
- package/dist/common/AppDropzone/style.scss +42 -0
- package/dist/common/AppDropzoneLocal/AppDropzoneBodyLocal.d.ts +15 -0
- package/dist/common/AppDropzoneLocal/AppDropzoneBodyLocal.js +55 -0
- package/dist/common/AppDropzoneLocal/AppDropzoneLocal.d.ts +15 -0
- package/dist/common/AppDropzoneLocal/AppDropzoneLocal.js +13 -0
- package/dist/common/AppDropzoneLocal/UploadedFileLocal.d.ts +5 -0
- package/dist/common/AppDropzoneLocal/UploadedFileLocal.js +1 -0
- package/dist/common/AppDropzoneLocal/index.d.ts +5 -0
- package/dist/common/AppDropzoneLocal/index.js +4 -0
- package/dist/common/AppDropzoneLocal/style.scss +75 -0
- package/dist/common/AppForm/AppForm.d.ts +16 -0
- package/dist/common/AppForm/AppForm.js +67 -0
- package/dist/common/AppForm/AppFormField.d.ts +37 -0
- package/dist/common/AppForm/AppFormField.js +10 -0
- package/dist/common/AppForm/AppFormInfo.d.ts +9 -0
- package/dist/common/AppForm/AppFormInfo.js +45 -0
- package/dist/common/AppForm/FormColorField.d.ts +12 -0
- package/dist/common/AppForm/FormColorField.js +23 -0
- package/dist/common/AppForm/index.d.ts +2 -0
- package/dist/common/AppForm/index.js +2 -0
- package/dist/common/AppForm/style.scss +60 -0
- package/dist/common/AppLoading/AppLoading.d.ts +7 -0
- package/dist/common/AppLoading/AppLoading.js +8 -0
- package/dist/common/AppLoading/index.d.ts +2 -0
- package/dist/common/AppLoading/index.js +2 -0
- package/dist/common/AppLoading/style.scss +5 -0
- package/dist/common/AppModal/AppModal.d.ts +27 -0
- package/dist/common/AppModal/AppModal.js +42 -0
- package/dist/common/AppModal/AppModalConfirm.d.ts +15 -0
- package/dist/common/AppModal/AppModalConfirm.js +37 -0
- package/dist/common/AppModal/AppModalRemove.d.ts +22 -0
- package/dist/common/AppModal/AppModalRemove.js +35 -0
- package/dist/common/AppModal/AppModalUtils.d.ts +2 -0
- package/dist/common/AppModal/AppModalUtils.js +17 -0
- package/dist/common/AppModal/index.d.ts +2 -0
- package/dist/common/AppModal/index.js +2 -0
- package/dist/common/AppModal/style.scss +100 -0
- package/dist/common/AppPagination/AppPagination.d.ts +12 -0
- package/dist/common/AppPagination/AppPagination.js +212 -0
- package/dist/common/AppPagination/index.d.ts +2 -0
- package/dist/common/AppPagination/index.js +2 -0
- package/dist/common/AppPagination/styles.scss +230 -0
- package/dist/common/AppPicture/AppPicture.d.ts +10 -0
- package/dist/common/AppPicture/AppPicture.js +18 -0
- package/dist/common/AppPicture/index.d.ts +2 -0
- package/dist/common/AppPicture/index.js +2 -0
- package/dist/common/AppPicture/style.scss +0 -0
- package/dist/common/AppPlaceholder/AppPlaceholder.d.ts +12 -0
- package/dist/common/AppPlaceholder/AppPlaceholder.js +7 -0
- package/dist/common/AppPlaceholder/index.d.ts +2 -0
- package/dist/common/AppPlaceholder/index.js +2 -0
- package/dist/common/AppPlaceholder/style.scss +25 -0
- package/dist/common/AppSwitchGroup/AppSwitchGroup.d.ts +12 -0
- package/dist/common/AppSwitchGroup/AppSwitchGroup.js +8 -0
- package/dist/common/AppSwitchGroup/index.d.ts +2 -0
- package/dist/common/AppSwitchGroup/index.js +2 -0
- package/dist/common/AppSwitchGroup/style.scss +18 -0
- package/dist/common/AppTable/AppTable.d.ts +19 -0
- package/dist/common/AppTable/AppTable.js +62 -0
- package/dist/common/AppTable/AppTableList.d.ts +14 -0
- package/dist/common/AppTable/AppTableList.js +48 -0
- package/dist/common/AppTable/AppTableTheme.d.ts +1 -0
- package/dist/common/AppTable/AppTableTheme.js +45 -0
- package/dist/common/AppTable/AppTableUtils.d.ts +8 -0
- package/dist/common/AppTable/AppTableUtils.js +24 -0
- package/dist/common/AppTable/index.d.ts +2 -0
- package/dist/common/AppTable/index.js +2 -0
- package/dist/common/AppTable/styles.scss +65 -0
- package/dist/common/AppTable/types/AppPage.d.ts +29 -0
- package/dist/common/AppTable/types/AppPage.js +18 -0
- package/dist/common/AppTable/types/AppPageable.d.ts +15 -0
- package/dist/common/AppTable/types/AppPageable.js +19 -0
- package/dist/common/AppTextArea/AppTextArea.d.ts +11 -0
- package/dist/common/AppTextArea/AppTextArea.js +29 -0
- package/dist/common/AppTextArea/index.d.ts +1 -0
- package/dist/common/AppTextArea/index.js +1 -0
- package/dist/common/AppTextArea/style.scss +47 -0
- package/dist/common/AppToast/AppToast.d.ts +2 -0
- package/dist/common/AppToast/AppToast.js +81 -0
- package/dist/common/AppToast/ToastMessage.d.ts +8 -0
- package/dist/common/AppToast/ToastMessage.js +4 -0
- package/dist/common/AppToast/index.d.ts +2 -0
- package/dist/common/AppToast/index.js +2 -0
- package/dist/common/AppToast/style.scss +0 -0
- package/dist/common/index.d.ts +27 -0
- package/dist/common/index.js +23 -0
- package/dist/configs/CommonContext.d.ts +10 -0
- package/dist/configs/CommonContext.js +9 -0
- package/dist/configs/CookieStorage.d.ts +15 -0
- package/dist/configs/CookieStorage.js +45 -0
- package/dist/configs/Localization.d.ts +28 -0
- package/dist/configs/Localization.js +63 -0
- package/dist/configs/Storage.d.ts +9 -0
- package/dist/configs/Storage.js +16 -0
- package/dist/configs/api.d.ts +10 -0
- package/dist/configs/api.js +52 -0
- package/dist/configs/index.d.ts +8 -0
- package/dist/configs/index.js +7 -0
- package/dist/configs/localization/BaseTexts.d.ts +44 -0
- package/dist/configs/localization/BaseTexts.js +44 -0
- package/dist/configs/localization/CommentsTexts.d.ts +95 -0
- package/dist/configs/localization/CommentsTexts.js +95 -0
- package/dist/configs/localization/CommonTexts.d.ts +239 -0
- package/dist/configs/localization/CommonTexts.js +239 -0
- package/dist/configs/localization/ConsentTexts.d.ts +116 -0
- package/dist/configs/localization/ConsentTexts.js +203 -0
- package/dist/configs/localization/HeaderAppTexts.d.ts +106 -0
- package/dist/configs/localization/HeaderAppTexts.js +106 -0
- package/dist/configs/localization/HeaderTexts.d.ts +68 -0
- package/dist/configs/localization/HeaderTexts.js +68 -0
- package/dist/configs/localization/HelpTexts.d.ts +38 -0
- package/dist/configs/localization/HelpTexts.js +38 -0
- package/dist/configs/localization/HistoryTexts.d.ts +428 -0
- package/dist/configs/localization/HistoryTexts.js +428 -0
- package/dist/configs/localization/ParametersTexts.d.ts +137 -0
- package/dist/configs/localization/ParametersTexts.js +137 -0
- package/dist/configs/localization/SentenceTexts.d.ts +56 -0
- package/dist/configs/localization/SentenceTexts.js +56 -0
- package/dist/configs/localization/TreeTexts.d.ts +46 -0
- package/dist/configs/localization/TreeTexts.js +46 -0
- package/dist/configs/localization/UploadTexts.d.ts +23 -0
- package/dist/configs/localization/UploadTexts.js +23 -0
- package/dist/configs/services/ProfileService.d.ts +5 -0
- package/dist/configs/services/ProfileService.js +8 -0
- package/dist/configs/sessionTypes.d.ts +42 -0
- package/dist/configs/sessionTypes.js +63 -0
- package/dist/configs/useLoggedUtils.d.ts +7 -0
- package/dist/configs/useLoggedUtils.js +24 -0
- package/dist/configs/useMessageUtils.d.ts +22 -0
- package/dist/configs/useMessageUtils.js +71 -0
- package/dist/fonts/material-symbols-outlined.woff2 +0 -0
- package/dist/fonts/work-sans-latin-ext.woff2 +0 -0
- package/dist/fonts/work-sans-latin.woff2 +0 -0
- package/dist/fonts/work-sans-vietnamese.woff2 +0 -0
- package/dist/functions/DateUtils.d.ts +15 -0
- package/dist/functions/DateUtils.js +52 -0
- package/dist/functions/FilterUtils.d.ts +13 -0
- package/dist/functions/FilterUtils.js +56 -0
- package/dist/functions/FormUtils.d.ts +13 -0
- package/dist/functions/FormUtils.js +58 -0
- package/dist/functions/ImageUtils.d.ts +5 -0
- package/dist/functions/ImageUtils.js +13 -0
- package/dist/functions/SecurityUtils.d.ts +6 -0
- package/dist/functions/SecurityUtils.js +28 -0
- package/dist/functions/UsabilityUtils.d.ts +10 -0
- package/dist/functions/UsabilityUtils.js +47 -0
- package/dist/functions/index.d.ts +6 -0
- package/dist/functions/index.js +6 -0
- package/dist/functions/logo-ud.png +0 -0
- package/dist/functions/placeholder-image.png +0 -0
- package/dist/functions/placeholder-person.png +0 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/styles/base/_borders.scss +30 -0
- package/dist/styles/base/_colors.scss +100 -0
- package/dist/styles/base/_displays.scss +207 -0
- package/dist/styles/base/_margins.css +174 -0
- package/dist/styles/base/_spacing.scss +26 -0
- package/dist/styles/base/_tokens.scss +330 -0
- package/dist/styles/base/_typographs.scss +376 -0
- package/dist/styles/font-googleapis.scss +222 -0
- package/dist/styles/main.scss +112 -0
- package/dist/vendor/index.d.ts +5 -0
- package/dist/vendor/index.js +4 -0
- package/package.json +118 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export { default as Avatar } from './Avatar';
|
|
2
|
+
export { default as Badge } from './Badge';
|
|
3
|
+
export { default as Button } from './Button';
|
|
4
|
+
export type { ButtonDSColors, ButtonDSModes, ButtonDSPositions, ButtonDSSizes, } from './Button/Button';
|
|
5
|
+
export { default as CheckboxField } from './CheckboxField';
|
|
6
|
+
export { default as DatePickerField } from './DatePickerField';
|
|
7
|
+
export { default as DropdownButton } from './DropdownButton';
|
|
8
|
+
export { default as DropdownList } from './DropdownList';
|
|
9
|
+
export type { DropdownItem } from './DropdownList/DropdownItemList';
|
|
10
|
+
export { default as DropdownMenu } from './DropdownMenu';
|
|
11
|
+
export type { DropdownMenuItem } from './DropdownMenu/DropdownMenu';
|
|
12
|
+
export { default as FilterDropdown } from './FilterDropdown';
|
|
13
|
+
export { default as Icon } from './Icon';
|
|
14
|
+
export { IconSizes } from './Icon/Icon';
|
|
15
|
+
export { ICON_SIZE_PX, iconSizeToPx } from './Icon/IconSizes';
|
|
16
|
+
export { default as IconButton } from './IconButton';
|
|
17
|
+
export { default as Pill } from './Pill';
|
|
18
|
+
export { default as SelectField } from './SelectField';
|
|
19
|
+
export { default as AsyncSelectField } from './SelectField/AsyncSelectField';
|
|
20
|
+
export type { SelectItem } from './SelectField/SelectField';
|
|
21
|
+
export { default as SelectMultipleField } from './SelectField/SelectMultipleField';
|
|
22
|
+
export { default as Spinner } from './Spinner';
|
|
23
|
+
export { default as SwitchField } from './SwitchField';
|
|
24
|
+
export { default as Tabs } from './Tabs';
|
|
25
|
+
export { default as Tag } from './Tag';
|
|
26
|
+
export type { TagColors } from './Tag/Tag';
|
|
27
|
+
export { default as TextField } from './TextField';
|
|
28
|
+
export type { MaskFunction } from './TextField/TextField';
|
|
29
|
+
export { default as Tooltip } from './Tooltip';
|
|
30
|
+
export { TooltipPlacements } from './Tooltip/Tooltip';
|
|
31
|
+
export { default as VerticalButton } from './VerticalButton';
|
|
32
|
+
export * from './SelectField/SelectFieldTheme';
|
|
33
|
+
export * from './TextField/inputRefManager';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { injectFontFaces } from './fonts';
|
|
2
|
+
injectFontFaces();
|
|
3
|
+
export { default as Avatar } from './Avatar';
|
|
4
|
+
export { default as Badge } from './Badge';
|
|
5
|
+
export { default as Button } from './Button';
|
|
6
|
+
export { default as CheckboxField } from './CheckboxField';
|
|
7
|
+
export { default as DatePickerField } from './DatePickerField';
|
|
8
|
+
export { default as DropdownButton } from './DropdownButton';
|
|
9
|
+
export { default as DropdownList } from './DropdownList';
|
|
10
|
+
export { default as DropdownMenu } from './DropdownMenu';
|
|
11
|
+
export { default as FilterDropdown } from './FilterDropdown';
|
|
12
|
+
export { default as Icon } from './Icon';
|
|
13
|
+
export { IconSizes } from './Icon/Icon';
|
|
14
|
+
export { ICON_SIZE_PX, iconSizeToPx } from './Icon/IconSizes';
|
|
15
|
+
export { default as IconButton } from './IconButton';
|
|
16
|
+
export { default as Pill } from './Pill';
|
|
17
|
+
export { default as SelectField } from './SelectField';
|
|
18
|
+
export { default as AsyncSelectField } from './SelectField/AsyncSelectField';
|
|
19
|
+
export { default as SelectMultipleField } from './SelectField/SelectMultipleField';
|
|
20
|
+
export { default as Spinner } from './Spinner';
|
|
21
|
+
export { default as SwitchField } from './SwitchField';
|
|
22
|
+
export { default as Tabs } from './Tabs';
|
|
23
|
+
export { default as Tag } from './Tag';
|
|
24
|
+
export { default as TextField } from './TextField';
|
|
25
|
+
export { default as Tooltip } from './Tooltip';
|
|
26
|
+
export { TooltipPlacements } from './Tooltip/Tooltip';
|
|
27
|
+
export { default as VerticalButton } from './VerticalButton';
|
|
28
|
+
export * from './SelectField/SelectFieldTheme';
|
|
29
|
+
export * from './TextField/inputRefManager';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function AppAnalytics(): null;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
export default function AppAnalytics() {
|
|
3
|
+
const GA_ID = import.meta.env.VITE_APP_GA_ID;
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (!GA_ID) {
|
|
6
|
+
console.warn('Google Analytics ID not set.');
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
// Inject the gtag.js script
|
|
10
|
+
const script = document.createElement('script');
|
|
11
|
+
script.src = `https://www.googletagmanager.com/gtag/js?id=${GA_ID}`;
|
|
12
|
+
script.async = true;
|
|
13
|
+
document.head.appendChild(script);
|
|
14
|
+
// Inject the inline gtag config script exactly like GA docs do
|
|
15
|
+
const inlineScript = document.createElement('script');
|
|
16
|
+
inlineScript.innerHTML = `
|
|
17
|
+
window.dataLayer = window.dataLayer || [];
|
|
18
|
+
function gtag(){dataLayer.push(arguments);}
|
|
19
|
+
gtag('js', new Date());
|
|
20
|
+
gtag('config', '${GA_ID}');
|
|
21
|
+
`;
|
|
22
|
+
document.head.appendChild(inlineScript);
|
|
23
|
+
}, []);
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { DropdownMenuItem } from '../../basic/DropdownMenu/DropdownMenu';
|
|
2
|
+
import './style.scss';
|
|
3
|
+
type Props = {
|
|
4
|
+
title?: string | React.ReactNode;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
extraHeaderActions?: React.ReactNode;
|
|
7
|
+
footer?: React.ReactNode;
|
|
8
|
+
options?: DropdownMenuItem[];
|
|
9
|
+
className?: string;
|
|
10
|
+
onClick?: () => void;
|
|
11
|
+
};
|
|
12
|
+
export default function AppCard({ title, children, extraHeaderActions, footer, options, className, onClick, }: Props): import("react").JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import cx from 'classnames';
|
|
3
|
+
import { DropdownMenu } from '../../basic';
|
|
4
|
+
import './style.scss';
|
|
5
|
+
export default function AppCard({ title, children, extraHeaderActions, footer, options, className, onClick, }) {
|
|
6
|
+
return (_jsxs("div", { className: cx('ds-app-card', className), onClick: onClick, children: [title && (_jsxs("div", { className: "header", children: [_jsx("div", { className: "title", children: title }), extraHeaderActions && (_jsx("div", { className: "extra-header-actions", children: extraHeaderActions })), options && _jsx(DropdownMenu, { list: options })] })), _jsx("div", { className: "body", children: children }), footer && _jsx("div", { className: "footer", children: footer })] }));
|
|
7
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
.ds-app-card {
|
|
2
|
+
border: 1px solid var(--border-subtle-1);
|
|
3
|
+
border-radius: var(--radius-100);
|
|
4
|
+
|
|
5
|
+
> .header {
|
|
6
|
+
display: flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
justify-content: space-between;
|
|
9
|
+
padding: 8px 16px;
|
|
10
|
+
background-color: var(--layer-layer-2);
|
|
11
|
+
border-bottom: 1px solid var(--border-subtle-1);
|
|
12
|
+
gap: 12px;
|
|
13
|
+
|
|
14
|
+
> .title {
|
|
15
|
+
@include label-large-2;
|
|
16
|
+
flex: 1;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
> .extra-header-actions {
|
|
20
|
+
display: flex;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
> .body {
|
|
25
|
+
padding: 16px;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
> .footer {
|
|
29
|
+
display: flex;
|
|
30
|
+
padding: 8px 16px;
|
|
31
|
+
border-top: 1px solid var(--border-subtle-1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import { IconButton } from '../../basic';
|
|
5
|
+
export default function AppClipboard({ text, size = 'x-small' }) {
|
|
6
|
+
const { t } = useTranslation('common');
|
|
7
|
+
const [copied, setCopied] = useState(false);
|
|
8
|
+
const handleCopy = () => {
|
|
9
|
+
navigator.clipboard
|
|
10
|
+
.writeText(text)
|
|
11
|
+
.then(() => {
|
|
12
|
+
setCopied(true);
|
|
13
|
+
setTimeout(() => {
|
|
14
|
+
setCopied(false);
|
|
15
|
+
}, 2000);
|
|
16
|
+
})
|
|
17
|
+
.catch((err) => {
|
|
18
|
+
console.error('Failed to copy text:', err);
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
const tooltipTitle = copied ? t('tooltip.copied') : t('tooltip.copy');
|
|
22
|
+
return (_jsx(IconButton, { name: "content_copy", title: tooltipTitle, onClick: handleCopy, size: size }));
|
|
23
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AppFormField } from '../AppForm/AppFormField';
|
|
2
|
+
import './style.scss';
|
|
3
|
+
type AppColorpickerProps = {
|
|
4
|
+
item: Record<string, unknown>;
|
|
5
|
+
field: AppFormField;
|
|
6
|
+
handleSave: (value: string, field: AppFormField) => void;
|
|
7
|
+
};
|
|
8
|
+
export default function AppColorpicker({ field, item, handleSave, }: AppColorpickerProps): import("react").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { HexColorPicker } from 'react-colorful';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
import { Button } from '../../basic';
|
|
6
|
+
import './style.scss';
|
|
7
|
+
const defaultColor = '#FFFFFF';
|
|
8
|
+
export default function AppColorpicker({ field, item, handleSave, }) {
|
|
9
|
+
const { t } = useTranslation('common');
|
|
10
|
+
const [openColor, setOpenColor] = useState(false);
|
|
11
|
+
const [color, setColor] = useState(defaultColor);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (item[field.name])
|
|
14
|
+
setColor(item[field.name]);
|
|
15
|
+
else
|
|
16
|
+
setColor(defaultColor);
|
|
17
|
+
}, [item]);
|
|
18
|
+
return (_jsxs("div", { className: "color-picker-container", children: [_jsx("div", { className: "swatch", style: { backgroundColor: color }, onClick: () => setOpenColor(!openColor), onKeyDown: () => setOpenColor(!openColor), role: "link", "aria-label": "open color picker", tabIndex: 0 }), openColor && (_jsxs(_Fragment, { children: [_jsx(HexColorPicker, { color: color, onChange: setColor }), _jsxs("div", { className: "buttons", children: [_jsx(Button, { text: t('button.confirm'), onClick: () => {
|
|
19
|
+
handleSave(color, field);
|
|
20
|
+
setOpenColor(false);
|
|
21
|
+
}, size: "x-small" }), _jsx(Button, { text: t('button.cancel'), onClick: () => setOpenColor(false), color: "danger", size: "x-small" })] })] }))] }));
|
|
22
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
.color-picker-container {
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
|
|
5
|
+
.swatch {
|
|
6
|
+
width: 28px;
|
|
7
|
+
height: 28px;
|
|
8
|
+
border-radius: 8px;
|
|
9
|
+
border: 3px solid #fff;
|
|
10
|
+
box-shadow:
|
|
11
|
+
0 0 0 1px rgba(0, 0, 0, 0.1),
|
|
12
|
+
inset 0 0 0 1px rgba(0, 0, 0, 0.1);
|
|
13
|
+
cursor: pointer;
|
|
14
|
+
margin-bottom: 8px;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.react-colorful {
|
|
18
|
+
margin-bottom: 8px;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.buttons {
|
|
22
|
+
display: flex;
|
|
23
|
+
justify-content: center;
|
|
24
|
+
gap: 8px;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import "./styles.scss";
|
|
2
|
+
export declare const TitlePositions: readonly ["top", "right"];
|
|
3
|
+
type TitlePosition = (typeof TitlePositions)[number];
|
|
4
|
+
export type Props = {
|
|
5
|
+
className?: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
content: string;
|
|
8
|
+
titlePosition?: TitlePosition;
|
|
9
|
+
};
|
|
10
|
+
export default function AppCopyText({ className, title, content, titlePosition, }: Props): import("react").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import cx from "classnames";
|
|
4
|
+
import "./styles.scss";
|
|
5
|
+
import { Icon, Tooltip } from '../../basic';
|
|
6
|
+
import { useTranslation } from "react-i18next";
|
|
7
|
+
export const TitlePositions = ["top", "right"];
|
|
8
|
+
export default function AppCopyText({ className, title, content, titlePosition = "right", }) {
|
|
9
|
+
const [copied, setCopied] = useState(false);
|
|
10
|
+
const [isHovered, setIsHovered] = useState(false);
|
|
11
|
+
const { t } = useTranslation("common");
|
|
12
|
+
const getClassNames = cx("ds-copy-text", className, {
|
|
13
|
+
"title-top": titlePosition === "top" && title,
|
|
14
|
+
"title-right": titlePosition === "right" && title,
|
|
15
|
+
"no-title": !title,
|
|
16
|
+
});
|
|
17
|
+
const handleClipboard = () => {
|
|
18
|
+
navigator.clipboard
|
|
19
|
+
.writeText(content)
|
|
20
|
+
.then(() => {
|
|
21
|
+
setCopied(true);
|
|
22
|
+
setTimeout(() => {
|
|
23
|
+
setCopied(false);
|
|
24
|
+
}, 2000);
|
|
25
|
+
})
|
|
26
|
+
.catch((err) => {
|
|
27
|
+
console.error("Failed to copy text:", err);
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const tooltipTitle = copied ? t("tooltip.copied") : t("tooltip.copy");
|
|
31
|
+
const iconName = copied ? "check" : "content_copy";
|
|
32
|
+
const iconFilled = isHovered && !copied;
|
|
33
|
+
const contentElement = (_jsxs("div", { className: getClassNames, onClick: handleClipboard, onMouseEnter: () => setIsHovered(true), onMouseLeave: () => setIsHovered(false), children: [title && _jsx("span", { className: "ds-copy-text__title", children: title }), title && titlePosition === "right" && (_jsx("span", { className: "ds-copy-text__separator", children: "|" })), _jsxs("div", { className: "group-content", children: [_jsx("span", { className: "ds-copy-text__content", children: content }), _jsx(Icon, { name: iconName, size: "small", className: "ds-copy-text__icon", filled: iconFilled })] })] }));
|
|
34
|
+
return (_jsx(Tooltip, { title: tooltipTitle, placement: "top", mode: "simple", triggerOpen: copied ? true : undefined, children: contentElement }));
|
|
35
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
.ds-copy-text {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
gap: 4px;
|
|
5
|
+
cursor: pointer;
|
|
6
|
+
width: fit-content;
|
|
7
|
+
|
|
8
|
+
&__title {
|
|
9
|
+
@include helper-small-1;
|
|
10
|
+
color: var(--text-secondary);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
&__separator {
|
|
14
|
+
color: var(--text-secondary);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
&__content {
|
|
18
|
+
color: var(--text-primary);
|
|
19
|
+
@include body-small-1;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
&__icon {
|
|
23
|
+
color: var(--icon-accent);
|
|
24
|
+
transition: all 0.2s ease;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
&:hover {
|
|
28
|
+
.ds-copy-text__icon {
|
|
29
|
+
color: var(--text-primary);
|
|
30
|
+
background-color: var(--button-secondary-default);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.group-content {
|
|
35
|
+
display: flex;
|
|
36
|
+
align-items: center;
|
|
37
|
+
gap: 4px;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
&.title-top {
|
|
41
|
+
flex-direction: column;
|
|
42
|
+
align-items: flex-start;
|
|
43
|
+
gap: var(--spacing-50, 4px);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&.title-right {
|
|
47
|
+
flex-direction: row;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&.no-title {
|
|
51
|
+
.ds-copy-text__separator {
|
|
52
|
+
display: none;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { UploadedFile } from './UploadedFile';
|
|
2
|
+
type Props = {
|
|
3
|
+
folder: string;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
onSuccess: (response: UploadedFile) => void;
|
|
6
|
+
onError?: (err: any) => void;
|
|
7
|
+
accept: Record<string, string[]>;
|
|
8
|
+
messages?: Partial<Record<'label.dropzone' | 'label.uploaded.file', string>>;
|
|
9
|
+
onDrop?: () => void;
|
|
10
|
+
keepName?: boolean;
|
|
11
|
+
title?: string;
|
|
12
|
+
alternativeButton?: {
|
|
13
|
+
title: string;
|
|
14
|
+
action: () => void;
|
|
15
|
+
};
|
|
16
|
+
disableConfirm?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export default function AppDropzone({ folder, onClose, onSuccess, onError, accept, messages, onDrop, keepName, title, alternativeButton, disableConfirm, }: Props): import("react").JSX.Element;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef } from 'react';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
4
|
+
import AppModal from '../AppModal';
|
|
5
|
+
import AppDropzoneBody from './AppDropzoneBody';
|
|
6
|
+
export default function AppDropzone({ folder, onClose, onSuccess, onError, accept, messages, onDrop, keepName, title, alternativeButton, disableConfirm = false, }) {
|
|
7
|
+
const { t } = useTranslation('upload');
|
|
8
|
+
const bodyRef = useRef(null);
|
|
9
|
+
const handleConfirm = () => {
|
|
10
|
+
bodyRef.current?.upload();
|
|
11
|
+
};
|
|
12
|
+
return (_jsx(AppModal, { title: title || t('modal.title'), className: "modal-upload", close: onClose, confirm: handleConfirm, disableConfirm: disableConfirm, alternativeButton: alternativeButton, children: _jsx(AppDropzoneBody, { ref: bodyRef, folder: folder, onSuccess: onSuccess, onError: onError, accept: accept, messages: messages, onDrop: onDrop, keepName: keepName, showConfirmButton: false }) }));
|
|
13
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { UploadedFile } from './UploadedFile';
|
|
2
|
+
import './style.scss';
|
|
3
|
+
export type AppDropzoneBodyProps = {
|
|
4
|
+
folder: string;
|
|
5
|
+
onSuccess: (response: UploadedFile) => void;
|
|
6
|
+
onError?: (err: any) => void;
|
|
7
|
+
accept: Record<string, string[]>;
|
|
8
|
+
messages?: Partial<Record<'label.dropzone' | 'label.uploaded.file', string>>;
|
|
9
|
+
onDrop?: () => void;
|
|
10
|
+
keepName?: boolean;
|
|
11
|
+
/** When false, the confirm button is hidden (e.g. when used inside modal with its own confirm) */
|
|
12
|
+
showConfirmButton?: boolean;
|
|
13
|
+
/** When true, image preview is not rendered and filename message is shown instead */
|
|
14
|
+
disablePreview?: boolean;
|
|
15
|
+
/** When true, confirm button is visible but disabled */
|
|
16
|
+
disableConfirm?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export type AppDropzoneBodyRef = {
|
|
19
|
+
upload: () => Promise<void>;
|
|
20
|
+
};
|
|
21
|
+
declare const AppDropzoneBody: import("react").ForwardRefExoticComponent<AppDropzoneBodyProps & import("react").RefAttributes<AppDropzoneBodyRef>>;
|
|
22
|
+
export default AppDropzoneBody;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useContext, useEffect, useImperativeHandle, useRef, useState, } from 'react';
|
|
3
|
+
import Dropzone from 'react-dropzone';
|
|
4
|
+
import { useTranslation } from 'react-i18next';
|
|
5
|
+
import { Button } from '../../basic';
|
|
6
|
+
import CommonContext from '../../configs/CommonContext';
|
|
7
|
+
import { toastLoadingAction } from '../../configs/sessionTypes';
|
|
8
|
+
import { useMessageUtils } from '../../configs/useMessageUtils';
|
|
9
|
+
import UploadService from './UploadService';
|
|
10
|
+
import './style.scss';
|
|
11
|
+
function AppDropzoneBodyInner({ folder, onSuccess, onError, accept, messages, onDrop, keepName, showConfirmButton = true, disablePreview = false, disableConfirm = false, }, ref) {
|
|
12
|
+
const { t } = useTranslation('upload');
|
|
13
|
+
const { state, dispatch } = useContext(CommonContext);
|
|
14
|
+
const { dispatchError } = useMessageUtils();
|
|
15
|
+
const [file, setFile] = useState();
|
|
16
|
+
const [preview, setPreview] = useState();
|
|
17
|
+
const fileRef = useRef();
|
|
18
|
+
fileRef.current = file;
|
|
19
|
+
const isImageFile = (f) => {
|
|
20
|
+
return f.type?.startsWith('image/') ?? false;
|
|
21
|
+
};
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (!file) {
|
|
24
|
+
setPreview(undefined);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (!disablePreview && isImageFile(file)) {
|
|
28
|
+
const url = URL.createObjectURL(file);
|
|
29
|
+
setPreview(url);
|
|
30
|
+
return () => URL.revokeObjectURL(url);
|
|
31
|
+
}
|
|
32
|
+
setPreview(undefined);
|
|
33
|
+
}, [file, disablePreview]);
|
|
34
|
+
const upload = async () => {
|
|
35
|
+
const currentFile = fileRef.current;
|
|
36
|
+
if (!currentFile || state.toastLoading)
|
|
37
|
+
return;
|
|
38
|
+
dispatch(toastLoadingAction(true));
|
|
39
|
+
const data = new FormData();
|
|
40
|
+
data.append('file', currentFile);
|
|
41
|
+
data.append('folder', folder);
|
|
42
|
+
keepName && data.append('keepOriginalName', 'true');
|
|
43
|
+
UploadService.execute(data)
|
|
44
|
+
.then((r) => {
|
|
45
|
+
onSuccess(r.data);
|
|
46
|
+
})
|
|
47
|
+
.catch((err) => {
|
|
48
|
+
dispatchError({ err: 'error.uploading.image', t, key: 'upload' });
|
|
49
|
+
onError?.(err);
|
|
50
|
+
})
|
|
51
|
+
.finally(() => {
|
|
52
|
+
dispatch(toastLoadingAction(false));
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
useImperativeHandle(ref, () => ({
|
|
56
|
+
upload,
|
|
57
|
+
}));
|
|
58
|
+
const handleDrop = (files) => {
|
|
59
|
+
if (files.length === 0)
|
|
60
|
+
return;
|
|
61
|
+
setFile(files[0]);
|
|
62
|
+
onDrop?.();
|
|
63
|
+
};
|
|
64
|
+
const handleCancel = () => {
|
|
65
|
+
setFile(undefined);
|
|
66
|
+
};
|
|
67
|
+
const resolveMessage = (key) => {
|
|
68
|
+
const customMessage = messages?.[key]?.trim();
|
|
69
|
+
return customMessage || t(key);
|
|
70
|
+
};
|
|
71
|
+
return (_jsxs("div", { className: "dropzone-container", children: [!file && (_jsx(Dropzone, { onDrop: (acceptedFiles) => handleDrop(acceptedFiles), accept: accept, maxFiles: 1, children: ({ getRootProps, getInputProps }) => (_jsxs("div", { ...getRootProps(), className: "dropzone", children: [_jsx("input", { ...getInputProps() }), _jsx("span", { children: resolveMessage('label.dropzone') })] })) })), file && (_jsxs("div", { className: "uploaded-file", children: [preview && _jsx("img", { className: "preview", src: preview, alt: "" }), !preview && (_jsxs(_Fragment, { children: [_jsx("b", { children: resolveMessage('label.uploaded.file') }), _jsx("span", { children: file.name })] })), showConfirmButton && (_jsxs("div", { className: "buttons", children: [_jsx(Button, { onClick: handleCancel, text: t('common:button.cancel'), size: "small", mode: "outlined", color: "danger" }), _jsx(Button, { onClick: upload, text: t('common:button.confirm'), size: "small", mode: "outlined", disabled: disableConfirm })] }))] }))] }));
|
|
72
|
+
}
|
|
73
|
+
const AppDropzoneBody = forwardRef(AppDropzoneBodyInner);
|
|
74
|
+
export default AppDropzoneBody;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
import Cookies from 'js-cookie';
|
|
3
|
+
const JWT_TOKEN = 'jwt_token_tycho';
|
|
4
|
+
const getJwtToken = () => {
|
|
5
|
+
const cookie = Cookies.get(JWT_TOKEN);
|
|
6
|
+
return cookie === 'undefined' ? '' : cookie;
|
|
7
|
+
};
|
|
8
|
+
function execute(data) {
|
|
9
|
+
const token = getJwtToken() || '';
|
|
10
|
+
const header = {
|
|
11
|
+
Authorization: `Bearer ${token}`,
|
|
12
|
+
};
|
|
13
|
+
return axios.post(import.meta.env.VITE_APP_UPLOAD_URL, data, {
|
|
14
|
+
headers: header,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
const UploadService = { execute };
|
|
18
|
+
export default UploadService;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
.dropzone-container {
|
|
2
|
+
display: flex;
|
|
3
|
+
align-items: center;
|
|
4
|
+
justify-content: center;
|
|
5
|
+
|
|
6
|
+
.dropzone {
|
|
7
|
+
display: flex;
|
|
8
|
+
align-items: center;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
text-align: center;
|
|
11
|
+
width: 100%;
|
|
12
|
+
padding: var(--spacing-700);
|
|
13
|
+
border-radius: var(--radius-100);
|
|
14
|
+
border: 2px dashed var(--border-subtle-3);
|
|
15
|
+
background-color: var(--layer-layer-2);
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.preview {
|
|
20
|
+
margin: 0 auto;
|
|
21
|
+
width: 400px;
|
|
22
|
+
height: 400px;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.uploaded-file {
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
align-items: center;
|
|
29
|
+
width: 100%;
|
|
30
|
+
text-align: center;
|
|
31
|
+
border: 1px solid var(--border-subtle-3);
|
|
32
|
+
border-radius: var(--radius-100);
|
|
33
|
+
padding: 16px;
|
|
34
|
+
gap: 16px;
|
|
35
|
+
|
|
36
|
+
.buttons {
|
|
37
|
+
display: flex;
|
|
38
|
+
gap: 16px;
|
|
39
|
+
margin-top: 16px;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import './style.scss';
|
|
2
|
+
import type { UploadedFileLocal } from './UploadedFileLocal';
|
|
3
|
+
export type AppDropzoneBodyLocalProps = {
|
|
4
|
+
onSuccess: (files: UploadedFileLocal[]) => void;
|
|
5
|
+
onError?: (err: unknown) => void;
|
|
6
|
+
accept: Record<string, string[]>;
|
|
7
|
+
onDrop?: () => void;
|
|
8
|
+
/** When false, the confirm button is hidden (e.g. when used inside modal with its own confirm) */
|
|
9
|
+
showConfirmButton?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export type AppDropzoneBodyLocalRef = {
|
|
12
|
+
upload: () => Promise<void>;
|
|
13
|
+
};
|
|
14
|
+
declare const AppDropzoneBodyLocal: import("react").ForwardRefExoticComponent<AppDropzoneBodyLocalProps & import("react").RefAttributes<AppDropzoneBodyLocalRef>>;
|
|
15
|
+
export default AppDropzoneBodyLocal;
|