@orbe-agro/client-core 5.3.85 → 5.3.89
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/dist/@ecme/assets/styles/app.css +1 -1
- package/dist/@ecme/assets/styles/components/_dialog.css +1 -1
- package/dist/@ecme/assets/styles/components/_drawer.css +1 -1
- package/dist/@ecme/assets/styles/components/_scrollbar.css +1 -1
- package/dist/@ecme/assets/styles/components/_switcher.css +1 -1
- package/dist/@ecme/assets/styles/components/_upload.css +1 -1
- package/dist/@ecme/assets/styles/components/index.css +1 -1
- package/dist/@ecme/assets/styles/tailwind/index.css +1 -1
- package/dist/@ecme/auth/AuthProvider.js +58 -62
- package/dist/@ecme/auth/AuthProvider.js.map +1 -1
- package/dist/@ecme/components/docs/DemoCard/DemoCard.js +18 -19
- package/dist/@ecme/components/docs/DemoCard/DemoCard.js.map +1 -1
- package/dist/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.js +29 -30
- package/dist/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.js.map +1 -1
- package/dist/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.js +56 -56
- package/dist/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.js.map +1 -1
- package/dist/@ecme/components/shared/Affix.js +9 -10
- package/dist/@ecme/components/shared/Affix.js.map +1 -1
- package/dist/@ecme/components/shared/AutoComplete.js +27 -28
- package/dist/@ecme/components/shared/AutoComplete.js.map +1 -1
- package/dist/@ecme/components/shared/CalendarView.js +19 -20
- package/dist/@ecme/components/shared/CalendarView.js.map +1 -1
- package/dist/@ecme/components/shared/ConfirmDialog.js +16 -16
- package/dist/@ecme/components/shared/ConfirmDialog.js.map +1 -1
- package/dist/@ecme/components/shared/DataTable.js +151 -151
- package/dist/@ecme/components/shared/DataTable.js.map +1 -1
- package/dist/@ecme/components/shared/DebounceInput.js +11 -12
- package/dist/@ecme/components/shared/DebounceInput.js.map +1 -1
- package/dist/@ecme/components/shared/GanttChart/GanttChart.js +20 -20
- package/dist/@ecme/components/shared/GanttChart/GanttChart.js.map +1 -1
- package/dist/@ecme/components/shared/GanttChart/TaskListTable.js +22 -22
- package/dist/@ecme/components/shared/GanttChart/TaskListTable.js.map +1 -1
- package/dist/@ecme/components/shared/ImageGallery.js +18 -18
- package/dist/@ecme/components/shared/ImageGallery.js.map +1 -1
- package/dist/@ecme/components/shared/Masonry/Masonry.js +25 -25
- package/dist/@ecme/components/shared/Masonry/Masonry.js.map +1 -1
- package/dist/@ecme/components/shared/OtpInput.js +54 -56
- package/dist/@ecme/components/shared/OtpInput.js.map +1 -1
- package/dist/@ecme/components/shared/PasswordInput.js +6 -6
- package/dist/@ecme/components/shared/PasswordInput.js.map +1 -1
- package/dist/@ecme/components/shared/RegionMap.js +9 -9
- package/dist/@ecme/components/shared/RegionMap.js.map +1 -1
- package/dist/@ecme/components/shared/RichTextEditor/RichTextEditor.js +47 -47
- package/dist/@ecme/components/shared/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/@ecme/components/shared/UsersAvatarGroup.js +24 -24
- package/dist/@ecme/components/shared/UsersAvatarGroup.js.map +1 -1
- package/dist/@ecme/components/template/HorizontalMenuContent/HorizontalMenuContent.js +63 -69
- package/dist/@ecme/components/template/HorizontalMenuContent/HorizontalMenuContent.js.map +1 -1
- package/dist/@ecme/components/template/HorizontalMenuContent/HorizontalMenuDropdown.js +48 -48
- package/dist/@ecme/components/template/HorizontalMenuContent/HorizontalMenuDropdown.js.map +1 -1
- package/dist/@ecme/components/template/HorizontalMenuContent/HorizontalMenuDropdownContent.js +220 -231
- package/dist/@ecme/components/template/HorizontalMenuContent/HorizontalMenuDropdownContent.js.map +1 -1
- package/dist/@ecme/components/template/LanguageSelector.js +10 -13
- package/dist/@ecme/components/template/LanguageSelector.js.map +1 -1
- package/dist/@ecme/components/template/Search.js +85 -92
- package/dist/@ecme/components/template/Search.js.map +1 -1
- package/dist/@ecme/components/template/ThemeConfigurator/DirectionSwitcher.js +18 -18
- package/dist/@ecme/components/template/ThemeConfigurator/DirectionSwitcher.js.map +1 -1
- package/dist/@ecme/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.js +17 -17
- package/dist/@ecme/components/template/VerticalMenuContent/VerticalCollapsedMenuItem.js.map +1 -1
- package/dist/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.js +59 -59
- package/dist/@ecme/components/template/VerticalMenuContent/VerticalMenuContent.js.map +1 -1
- package/dist/@ecme/components/template/VerticalMenuContent/VerticalSingleMenuItem.js +34 -34
- package/dist/@ecme/components/template/VerticalMenuContent/VerticalSingleMenuItem.js.map +1 -1
- package/dist/@ecme/components/ui/Alert/Alert.js +29 -29
- package/dist/@ecme/components/ui/Alert/Alert.js.map +1 -1
- package/dist/@ecme/components/ui/Avatar/AvatarGroup.js +30 -30
- package/dist/@ecme/components/ui/Avatar/AvatarGroup.js.map +1 -1
- package/dist/@ecme/components/ui/Button/Button.js +66 -67
- package/dist/@ecme/components/ui/Button/Button.js.map +1 -1
- package/dist/@ecme/components/ui/Card/Card.js +39 -40
- package/dist/@ecme/components/ui/Card/Card.js.map +1 -1
- package/dist/@ecme/components/ui/Checkbox/Checkbox.js +42 -42
- package/dist/@ecme/components/ui/Checkbox/Checkbox.js.map +1 -1
- package/dist/@ecme/components/ui/Checkbox/Group.js +27 -27
- package/dist/@ecme/components/ui/Checkbox/Group.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/BasePicker.js +67 -67
- package/dist/@ecme/components/ui/DatePicker/BasePicker.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/Calendar.js +18 -18
- package/dist/@ecme/components/ui/DatePicker/Calendar.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/CalendarBase.js +77 -78
- package/dist/@ecme/components/ui/DatePicker/CalendarBase.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/DatePicker.js +67 -71
- package/dist/@ecme/components/ui/DatePicker/DatePicker.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/DatePickerRange.js +94 -98
- package/dist/@ecme/components/ui/DatePicker/DatePickerRange.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/DateTimepicker.js +51 -58
- package/dist/@ecme/components/ui/DatePicker/DateTimepicker.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/tables/DateTable.js +67 -67
- package/dist/@ecme/components/ui/DatePicker/tables/DateTable.js.map +1 -1
- package/dist/@ecme/components/ui/DatePicker/tables/components/Day.js +12 -12
- package/dist/@ecme/components/ui/DatePicker/tables/components/Day.js.map +1 -1
- package/dist/@ecme/components/ui/Dialog/Dialog.js +25 -25
- package/dist/@ecme/components/ui/Dialog/Dialog.js.map +1 -1
- package/dist/@ecme/components/ui/Drawer/Drawer.js +32 -32
- package/dist/@ecme/components/ui/Drawer/Drawer.js.map +1 -1
- package/dist/@ecme/components/ui/Dropdown/DropdownItem.js +58 -58
- package/dist/@ecme/components/ui/Dropdown/DropdownItem.js.map +1 -1
- package/dist/@ecme/components/ui/Dropdown/DropdownMenu.js +99 -100
- package/dist/@ecme/components/ui/Dropdown/DropdownMenu.js.map +1 -1
- package/dist/@ecme/components/ui/Dropdown/DropdownSubItem.js +26 -26
- package/dist/@ecme/components/ui/Dropdown/DropdownSubItem.js.map +1 -1
- package/dist/@ecme/components/ui/Form/FormContainer.js +17 -17
- package/dist/@ecme/components/ui/Form/FormContainer.js.map +1 -1
- package/dist/@ecme/components/ui/Form/FormItem.js +38 -38
- package/dist/@ecme/components/ui/Form/FormItem.js.map +1 -1
- package/dist/@ecme/components/ui/Input/Input.js +50 -52
- package/dist/@ecme/components/ui/Input/Input.js.map +1 -1
- package/dist/@ecme/components/ui/InputGroup/Addon.js +12 -13
- package/dist/@ecme/components/ui/InputGroup/Addon.js.map +1 -1
- package/dist/@ecme/components/ui/InputGroup/InputGroup.js +10 -11
- package/dist/@ecme/components/ui/InputGroup/InputGroup.js.map +1 -1
- package/dist/@ecme/components/ui/Notification/Notification.js +19 -19
- package/dist/@ecme/components/ui/Notification/Notification.js.map +1 -1
- package/dist/@ecme/components/ui/Pagination/Pagination.js +45 -45
- package/dist/@ecme/components/ui/Pagination/Pagination.js.map +1 -1
- package/dist/@ecme/components/ui/Radio/Group.js +28 -28
- package/dist/@ecme/components/ui/Radio/Group.js.map +1 -1
- package/dist/@ecme/components/ui/Radio/Radio.js +42 -42
- package/dist/@ecme/components/ui/Radio/Radio.js.map +1 -1
- package/dist/@ecme/components/ui/Segment/SegmentItem.js +53 -53
- package/dist/@ecme/components/ui/Segment/SegmentItem.js.map +1 -1
- package/dist/@ecme/components/ui/Select/Select.js +40 -41
- package/dist/@ecme/components/ui/Select/Select.js.map +1 -1
- package/dist/@ecme/components/ui/Steps/StepItem.js +33 -33
- package/dist/@ecme/components/ui/Steps/StepItem.js.map +1 -1
- package/dist/@ecme/components/ui/Switcher/Switcher.js +24 -24
- package/dist/@ecme/components/ui/Switcher/Switcher.js.map +1 -1
- package/dist/@ecme/components/ui/Tabs/TabNav.js +22 -22
- package/dist/@ecme/components/ui/Tabs/TabNav.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/AmPmInput.js +25 -27
- package/dist/@ecme/components/ui/TimeInput/AmPmInput.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/TimeInput.js +130 -135
- package/dist/@ecme/components/ui/TimeInput/TimeInput.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/TimeInputField.js +22 -24
- package/dist/@ecme/components/ui/TimeInput/TimeInputField.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/TimeInputRange.js +65 -68
- package/dist/@ecme/components/ui/TimeInput/TimeInputRange.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/utils/createAmPmHandler.js +11 -12
- package/dist/@ecme/components/ui/TimeInput/utils/createAmPmHandler.js.map +1 -1
- package/dist/@ecme/components/ui/TimeInput/utils/createTimeHandler.js +19 -20
- package/dist/@ecme/components/ui/TimeInput/utils/createTimeHandler.js.map +1 -1
- package/dist/@ecme/components/ui/Upload/Upload.js +67 -68
- package/dist/@ecme/components/ui/Upload/Upload.js.map +1 -1
- package/dist/@ecme/components/ui/hooks/useCallbackRef.js +7 -10
- package/dist/@ecme/components/ui/hooks/useCallbackRef.js.map +1 -1
- package/dist/@ecme/components/ui/hooks/useRootClose.js +32 -32
- package/dist/@ecme/components/ui/hooks/useRootClose.js.map +1 -1
- package/dist/@ecme/components/ui/hooks/useTimeout.js +12 -13
- package/dist/@ecme/components/ui/hooks/useTimeout.js.map +1 -1
- package/dist/@ecme/components/ui/toast/ToastWrapper.js +58 -61
- package/dist/@ecme/components/ui/toast/ToastWrapper.js.map +1 -1
- package/dist/@ecme/components/ui/toast/toast.js +16 -19
- package/dist/@ecme/components/ui/toast/toast.js.map +1 -1
- package/dist/@ecme/components/view/Activity/ActivityEvent.js +63 -67
- package/dist/@ecme/components/view/Activity/ActivityEvent.js.map +1 -1
- package/dist/@ecme/components/view/ChatBox/components/Attachment.js +8 -9
- package/dist/@ecme/components/view/ChatBox/components/Attachment.js.map +1 -1
- package/dist/@ecme/components/view/ChatBox/components/ChatInput.js +37 -39
- package/dist/@ecme/components/view/ChatBox/components/ChatInput.js.map +1 -1
- package/dist/@ecme/components/view/ChatBox/components/Message.js +10 -10
- package/dist/@ecme/components/view/ChatBox/components/Message.js.map +1 -1
- package/dist/@ecme/components/view/CreditCardDialog/CreditCardDialog.js +36 -37
- package/dist/@ecme/components/view/CreditCardDialog/CreditCardDialog.js.map +1 -1
- package/dist/@ecme/components/view/TaskItem/TaskItem.js +33 -33
- package/dist/@ecme/components/view/TaskItem/TaskItem.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/chatFakeApi.js +16 -18
- package/dist/@ecme/mock/fakeApi/chatFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/customersFakeApi.js +10 -11
- package/dist/@ecme/mock/fakeApi/customersFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/helpCenterFakeApi.js +10 -11
- package/dist/@ecme/mock/fakeApi/helpCenterFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/mailFakeApi.js +9 -10
- package/dist/@ecme/mock/fakeApi/mailFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/ordersFakeApi.js +9 -10
- package/dist/@ecme/mock/fakeApi/ordersFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/productsFakeApi.js +7 -8
- package/dist/@ecme/mock/fakeApi/productsFakeApi.js.map +1 -1
- package/dist/@ecme/mock/fakeApi/projectsFakeApi.js +10 -11
- package/dist/@ecme/mock/fakeApi/projectsFakeApi.js.map +1 -1
- package/dist/@ecme/utils/hooks/useInfiniteScroll.js +11 -11
- package/dist/@ecme/utils/hooks/useInfiniteScroll.js.map +1 -1
- package/dist/@ecme/utils/hooks/useMenuActive.js +11 -12
- package/dist/@ecme/utils/hooks/useMenuActive.js.map +1 -1
- package/dist/@ecme/views/auth/ForgotPassword/components/ForgotPasswordForm.js +36 -37
- package/dist/@ecme/views/auth/ForgotPassword/components/ForgotPasswordForm.js.map +1 -1
- package/dist/@ecme/views/auth/OtpVerification/OtpVerification.js +14 -14
- package/dist/@ecme/views/auth/OtpVerification/OtpVerification.js.map +1 -1
- package/dist/@ecme/views/auth/OtpVerification/components/OtpVerificationForm.js +41 -42
- package/dist/@ecme/views/auth/OtpVerification/components/OtpVerificationForm.js.map +1 -1
- package/dist/@ecme/views/auth/ResetPassword/components/ResetPasswordForm.js +59 -60
- package/dist/@ecme/views/auth/ResetPassword/components/ResetPasswordForm.js.map +1 -1
- package/dist/@ecme/views/auth/SignIn/components/OauthSignIn.js +27 -27
- package/dist/@ecme/views/auth/SignIn/components/OauthSignIn.js.map +1 -1
- package/dist/@ecme/views/auth/SignIn/components/SignInForm.js +57 -58
- package/dist/@ecme/views/auth/SignIn/components/SignInForm.js.map +1 -1
- package/dist/@ecme/views/auth/SignUp/components/SignUpForm.js +37 -38
- package/dist/@ecme/views/auth/SignUp/components/SignUpForm.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Pricing/components/PaymentDialog.js +44 -45
- package/dist/@ecme/views/concepts/accounts/Pricing/components/PaymentDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Pricing/components/Plans.js +5 -5
- package/dist/@ecme/views/concepts/accounts/Pricing/components/Plans.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsAccessDialog.js +34 -35
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsAccessDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsUserAction.js +26 -26
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsUserAction.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsUserTable.js +28 -29
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/components/RolesPermissionsUserTable.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/hooks/useRolePermissonsUsers.js +8 -8
- package/dist/@ecme/views/concepts/accounts/RolesPermissions/hooks/useRolePermissonsUsers.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingMobileMenu.js +10 -11
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingMobileMenu.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsBilling.js +48 -49
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsBilling.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsMenu.js +14 -14
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsMenu.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsProfile.js +102 -103
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsProfile.js.map +1 -1
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsSecurity.js +34 -35
- package/dist/@ecme/views/concepts/accounts/Settings/components/SettingsSecurity.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatCustomAction.js +16 -16
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatCustomAction.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatCustomContent.js +76 -78
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatCustomContent.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistory.js +23 -23
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistory.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistoryItem.js +48 -49
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistoryItem.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistoryRenameDialog.js +34 -35
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistoryRenameDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatMobileNav.js +11 -14
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatMobileNav.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatSideNav.js +19 -19
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatSideNav.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatView.js +22 -26
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatView.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/store/generativeChatStore.js +18 -24
- package/dist/@ecme/views/concepts/ai/Chat/store/generativeChatStore.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Image/components/ConfigDropdown.js +22 -22
- package/dist/@ecme/views/concepts/ai/Image/components/ConfigDropdown.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Image/components/GeneratorPrompt.js +31 -32
- package/dist/@ecme/views/concepts/ai/Image/components/GeneratorPrompt.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Image/components/ImageDialog.js +31 -32
- package/dist/@ecme/views/concepts/ai/Image/components/ImageDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/calendar/Calendar/Calendar.js +38 -39
- package/dist/@ecme/views/concepts/calendar/Calendar/Calendar.js.map +1 -1
- package/dist/@ecme/views/concepts/calendar/Calendar/components/EventDialog.js +68 -69
- package/dist/@ecme/views/concepts/calendar/Calendar/components/EventDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/chat/Chat/components/ChatBody.js +63 -66
- package/dist/@ecme/views/concepts/chat/Chat/components/ChatBody.js.map +1 -1
- package/dist/@ecme/views/concepts/chat/Chat/components/ChatList.js +21 -22
- package/dist/@ecme/views/concepts/chat/Chat/components/ChatList.js.map +1 -1
- package/dist/@ecme/views/concepts/chat/Chat/components/ContactInfoDrawer.js +84 -85
- package/dist/@ecme/views/concepts/chat/Chat/components/ContactInfoDrawer.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerDetails/ActivitySection.js +19 -19
- package/dist/@ecme/views/concepts/customers/CustomerDetails/ActivitySection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerDetails/BillingSection.js +51 -58
- package/dist/@ecme/views/concepts/customers/CustomerDetails/BillingSection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerDetails/ProfileSection.js +76 -89
- package/dist/@ecme/views/concepts/customers/CustomerDetails/ProfileSection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerForm/AddressSection.js +104 -107
- package/dist/@ecme/views/concepts/customers/CustomerForm/AddressSection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerForm/CustomerForm.js +22 -22
- package/dist/@ecme/views/concepts/customers/CustomerForm/CustomerForm.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerForm/OverviewSection.js +38 -39
- package/dist/@ecme/views/concepts/customers/CustomerForm/OverviewSection.js.map +1 -1
- package/dist/@ecme/views/concepts/customers/CustomerList/hooks/useCustomerList.js +20 -20
- package/dist/@ecme/views/concepts/customers/CustomerList/hooks/useCustomerList.js.map +1 -1
- package/dist/@ecme/views/concepts/files/FileManager/components/FileItemDropdown.js +32 -33
- package/dist/@ecme/views/concepts/files/FileManager/components/FileItemDropdown.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/EditArticle/components/EditArticleHeader.js +17 -18
- package/dist/@ecme/views/concepts/help-center/EditArticle/components/EditArticleHeader.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/ManageArticle/hooks/useManageArticle.js +5 -5
- package/dist/@ecme/views/concepts/help-center/ManageArticle/hooks/useManageArticle.js.map +1 -1
- package/dist/@ecme/views/concepts/help-center/SupportHub/components/TopSection.js +12 -13
- package/dist/@ecme/views/concepts/help-center/SupportHub/components/TopSection.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailDetailAction.js +28 -29
- package/dist/@ecme/views/concepts/mail/Mail/components/MailDetailAction.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailDetailContent.js +63 -67
- package/dist/@ecme/views/concepts/mail/Mail/components/MailDetailContent.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailDetailTitle.js +8 -8
- package/dist/@ecme/views/concepts/mail/Mail/components/MailDetailTitle.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailEditor.js +36 -37
- package/dist/@ecme/views/concepts/mail/Mail/components/MailEditor.js.map +1 -1
- package/dist/@ecme/views/concepts/mail/Mail/components/MailList.js +134 -137
- package/dist/@ecme/views/concepts/mail/Mail/components/MailList.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderDetails/components/OrderDetailProducts.js +17 -17
- package/dist/@ecme/views/concepts/orders/OrderDetails/components/OrderDetailProducts.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderEdit/OrderEdit.js +35 -35
- package/dist/@ecme/views/concepts/orders/OrderEdit/OrderEdit.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderForm/OrderForm.js +38 -38
- package/dist/@ecme/views/concepts/orders/OrderForm/OrderForm.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderForm/components/BillingAddressSection.js +108 -111
- package/dist/@ecme/views/concepts/orders/OrderForm/components/BillingAddressSection.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderForm/components/CustomerDetailSection.js +44 -45
- package/dist/@ecme/views/concepts/orders/OrderForm/components/CustomerDetailSection.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderForm/components/PaymentMethodSection.js +211 -214
- package/dist/@ecme/views/concepts/orders/OrderForm/components/PaymentMethodSection.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderList/components/OrderListTableFilter.js +17 -17
- package/dist/@ecme/views/concepts/orders/OrderList/components/OrderListTableFilter.js.map +1 -1
- package/dist/@ecme/views/concepts/orders/OrderList/hooks/useOrderlist.js +15 -15
- package/dist/@ecme/views/concepts/orders/OrderList/hooks/useOrderlist.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductForm/ProductForm.js +4 -4
- package/dist/@ecme/views/concepts/products/ProductForm/ProductForm.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductForm/components/AttributeSection.js +97 -100
- package/dist/@ecme/views/concepts/products/ProductForm/components/AttributeSection.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductForm/components/GeneralSection.js +68 -71
- package/dist/@ecme/views/concepts/products/ProductForm/components/GeneralSection.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductForm/components/ImageSection.js +85 -86
- package/dist/@ecme/views/concepts/products/ProductForm/components/ImageSection.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductForm/components/PricingSection.js +121 -124
- package/dist/@ecme/views/concepts/products/ProductForm/components/PricingSection.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductList/components/ProductListSearch.js +11 -11
- package/dist/@ecme/views/concepts/products/ProductList/components/ProductListSearch.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductList/components/ProductTableFilter.js +17 -17
- package/dist/@ecme/views/concepts/products/ProductList/components/ProductTableFilter.js.map +1 -1
- package/dist/@ecme/views/concepts/products/ProductList/hooks/useProductList.js +17 -17
- package/dist/@ecme/views/concepts/products/ProductList/hooks/useProductList.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Issue/components/IssueBody.js +101 -105
- package/dist/@ecme/views/concepts/projects/Issue/components/IssueBody.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Issue/components/IssueFooter.js +57 -58
- package/dist/@ecme/views/concepts/projects/Issue/components/IssueFooter.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsHeader.js +51 -52
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsHeader.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsOverview.js +22 -23
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsOverview.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsSetting.js +45 -46
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsSetting.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsTask.js +62 -65
- package/dist/@ecme/views/concepts/projects/ProjectDetails/components/ProjectDetailsTask.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/components/NewProjectForm.js +52 -53
- package/dist/@ecme/views/concepts/projects/ProjectList/components/NewProjectForm.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/components/NewTaskField.js +23 -25
- package/dist/@ecme/views/concepts/projects/ProjectList/components/NewTaskField.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/components/ProjectListContent.js +15 -15
- package/dist/@ecme/views/concepts/projects/ProjectList/components/ProjectListContent.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/components/ProjectListHeader.js +16 -16
- package/dist/@ecme/views/concepts/projects/ProjectList/components/ProjectListHeader.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ProjectList/hooks/useProjectList.js +9 -9
- package/dist/@ecme/views/concepts/projects/ProjectList/hooks/useProjectList.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/AddNewColumnContent.js +40 -41
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/AddNewColumnContent.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/AddNewTicketContent.js +33 -34
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/AddNewTicketContent.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/BoardCardList.js +33 -33
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/BoardCardList.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/TicketContent.js +203 -210
- package/dist/@ecme/views/concepts/projects/ScrumBoard/components/TicketContent.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Tasks/components/AddTask.js +53 -56
- package/dist/@ecme/views/concepts/projects/Tasks/components/AddTask.js.map +1 -1
- package/dist/@ecme/views/concepts/projects/Tasks/components/TaskList.js +80 -83
- package/dist/@ecme/views/concepts/projects/Tasks/components/TaskList.js.map +1 -1
- package/dist/@ecme/views/dashboards/AnalyticDashboard/components/AnalyticHeader.js +6 -6
- package/dist/@ecme/views/dashboards/AnalyticDashboard/components/AnalyticHeader.js.map +1 -1
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/Overview.js +21 -21
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/Overview.js.map +1 -1
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/RevenueByChannel.js +27 -27
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/RevenueByChannel.js.map +1 -1
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/SalesTarget.js +27 -27
- package/dist/@ecme/views/dashboards/EcommerceDashboard/components/SalesTarget.js.map +1 -1
- package/dist/@ecme/views/dashboards/MarketingDashboard/components/CreateCampaign.js +59 -60
- package/dist/@ecme/views/dashboards/MarketingDashboard/components/CreateCampaign.js.map +1 -1
- package/dist/@ecme/views/dashboards/ProjectDashboard/components/CreateEventDialog.js +76 -77
- package/dist/@ecme/views/dashboards/ProjectDashboard/components/CreateEventDialog.js.map +1 -1
- package/dist/@ecme/views/dashboards/ProjectDashboard/components/UpcomingSchedule.js +30 -30
- package/dist/@ecme/views/dashboards/ProjectDashboard/components/UpcomingSchedule.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/CustomFormatInputDoc/WithForm.js +21 -22
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/CustomFormatInputDoc/WithForm.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/ImageGalleryDoc/Example.js +15 -15
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/ImageGalleryDoc/Example.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/NumericInputDoc/WithForm.js +20 -21
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/NumericInputDoc/WithForm.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/PatternInputDoc/WithForm.js +20 -21
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/PatternInputDoc/WithForm.js.map +1 -1
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/RichTextEditorDoc/WithForm.js +20 -21
- package/dist/@ecme/views/guide/SharedComponentsDoc/components/RichTextEditorDoc/WithForm.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/Editable.js +17 -18
- package/dist/@ecme/views/ui-components/data-display/Table/Editable.js.map +1 -1
- package/dist/@ecme/views/ui-components/data-display/Table/PaginationTable.js +12 -12
- package/dist/@ecme/views/ui-components/data-display/Table/PaginationTable.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/AsyncValidation.js +28 -29
- package/dist/@ecme/views/ui-components/forms/FormControl/AsyncValidation.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/Basic.js +21 -22
- package/dist/@ecme/views/ui-components/forms/FormControl/Basic.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/DependentValidation.js +24 -25
- package/dist/@ecme/views/ui-components/forms/FormControl/DependentValidation.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/DynamicForm.js +75 -79
- package/dist/@ecme/views/ui-components/forms/FormControl/DynamicForm.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/FieldValidation.js +19 -20
- package/dist/@ecme/views/ui-components/forms/FormControl/FieldValidation.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/MixedFormControl.js +90 -91
- package/dist/@ecme/views/ui-components/forms/FormControl/MixedFormControl.js.map +1 -1
- package/dist/@ecme/views/ui-components/forms/FormControl/SchemaValidation.js +22 -23
- package/dist/@ecme/views/ui-components/forms/FormControl/SchemaValidation.js.map +1 -1
- package/dist/@types/base/configs/api.config.d.ts +0 -19
- package/dist/@types/base/configs/api.config.d.ts.map +1 -1
- package/dist/base/assets/styles/init.css +1 -1
- package/dist/base/components/forms/ArraysForms/GenericArrayNumberFormSection.js +24 -25
- package/dist/base/components/forms/ArraysForms/GenericArrayNumberFormSection.js.map +1 -1
- package/dist/base/components/forms/ArraysForms/GenericArrayStringFormSection.js +23 -24
- package/dist/base/components/forms/ArraysForms/GenericArrayStringFormSection.js.map +1 -1
- package/dist/base/components/forms/GenericFomrsSetValue/GenericNumberFormSectionPrice.js +30 -31
- package/dist/base/components/forms/GenericFomrsSetValue/GenericNumberFormSectionPrice.js.map +1 -1
- package/dist/base/components/forms/GenericFomrsSetValue/GenericStringFormSection.js +25 -26
- package/dist/base/components/forms/GenericFomrsSetValue/GenericStringFormSection.js.map +1 -1
- package/dist/base/components/forms/GenericForms/GenericArrayFormSection.js +49 -50
- package/dist/base/components/forms/GenericForms/GenericArrayFormSection.js.map +1 -1
- package/dist/base/components/forms/GenericForms/GenericNumberFormSection.js +27 -28
- package/dist/base/components/forms/GenericForms/GenericNumberFormSection.js.map +1 -1
- package/dist/base/components/forms/GenericForms/GenericStringFormSection.js +23 -24
- package/dist/base/components/forms/GenericForms/GenericStringFormSection.js.map +1 -1
- package/dist/base/components/forms/GenericForms/GenericUploadFormSection.js +27 -28
- package/dist/base/components/forms/GenericForms/GenericUploadFormSection.js.map +1 -1
- package/dist/base/components/forms/NumberFormVariant/GenericNumberFormSectionPercentage.js +29 -30
- package/dist/base/components/forms/NumberFormVariant/GenericNumberFormSectionPercentage.js.map +1 -1
- package/dist/base/components/forms/NumberFormVariant/GenericNumberFormSectionPrice.js +27 -28
- package/dist/base/components/forms/NumberFormVariant/GenericNumberFormSectionPrice.js.map +1 -1
- package/dist/base/components/forms/NumberFormVariant/GenericNumberFormSectionWeight.js +27 -28
- package/dist/base/components/forms/NumberFormVariant/GenericNumberFormSectionWeight.js.map +1 -1
- package/dist/base/components/shared/TransferirProcessoDialog.js +10 -10
- package/dist/base/components/shared/TransferirProcessoDialog.js.map +1 -1
- package/dist/base/components/tools/NavFilter.js +68 -75
- package/dist/base/components/tools/NavFilter.js.map +1 -1
- package/dist/base/configs/api.config.js +11 -14
- package/dist/base/configs/api.config.js.map +1 -1
- package/dist/base/hooks/adm/roles/useRolesList.js +11 -11
- package/dist/base/hooks/adm/roles/useRolesList.js.map +1 -1
- package/dist/base/hooks/adm/users/useUsersList.js +10 -10
- package/dist/base/hooks/adm/users/useUsersList.js.map +1 -1
- package/dist/base/hooks/dm/businessPartner/useBusinessPartnerClienteList.js +5 -5
- package/dist/base/hooks/dm/businessPartner/useBusinessPartnerClienteList.js.map +1 -1
- package/dist/base/hooks/dm/businessPartner/useBusinessPartnerFornecedorList.js +7 -7
- package/dist/base/hooks/dm/businessPartner/useBusinessPartnerFornecedorList.js.map +1 -1
- package/dist/base/hooks/dm/businessPartner/useBusinessPartnerList.js +10 -10
- package/dist/base/hooks/dm/businessPartner/useBusinessPartnerList.js.map +1 -1
- package/dist/base/hooks/dm/canalDistribuicao/useCanalDistribuicaoByCodigoList.js +8 -8
- package/dist/base/hooks/dm/canalDistribuicao/useCanalDistribuicaoByCodigoList.js.map +1 -1
- package/dist/base/hooks/dm/canalDistribuicao/useCanalDistribuicaoList.js +8 -8
- package/dist/base/hooks/dm/canalDistribuicao/useCanalDistribuicaoList.js.map +1 -1
- package/dist/base/hooks/dm/centro/useCentroByCodigoList.js +13 -13
- package/dist/base/hooks/dm/centro/useCentroByCodigoList.js.map +1 -1
- package/dist/base/hooks/dm/centro/useCentroList.js +6 -6
- package/dist/base/hooks/dm/centro/useCentroList.js.map +1 -1
- package/dist/base/hooks/dm/condicaoPagamento/useCondicaoPagamentoList.js +4 -4
- package/dist/base/hooks/dm/condicaoPagamento/useCondicaoPagamentoList.js.map +1 -1
- package/dist/base/hooks/dm/deposito/useDepositoByCodigoList.js +9 -9
- package/dist/base/hooks/dm/deposito/useDepositoByCodigoList.js.map +1 -1
- package/dist/base/hooks/dm/deposito/useDepositoList.js +5 -5
- package/dist/base/hooks/dm/deposito/useDepositoList.js.map +1 -1
- package/dist/base/hooks/dm/deposito/useDepositosByCodigoCentroList.js +13 -13
- package/dist/base/hooks/dm/deposito/useDepositosByCodigoCentroList.js.map +1 -1
- package/dist/base/hooks/dm/equipeVenda/useEquipeVendaByCodigoList.js +8 -8
- package/dist/base/hooks/dm/equipeVenda/useEquipeVendaByCodigoList.js.map +1 -1
- package/dist/base/hooks/dm/equipeVenda/useEquipeVendaList.js +6 -6
- package/dist/base/hooks/dm/equipeVenda/useEquipeVendaList.js.map +1 -1
- package/dist/base/hooks/dm/escritorioVenda/useEscritorioVendaByCodigoList.js +10 -10
- package/dist/base/hooks/dm/escritorioVenda/useEscritorioVendaByCodigoList.js.map +1 -1
- package/dist/base/hooks/dm/escritorioVenda/useEscritorioVendaList.js +7 -7
- package/dist/base/hooks/dm/escritorioVenda/useEscritorioVendaList.js.map +1 -1
- package/dist/base/hooks/dm/formaPagamento/useFormaPagamentoByCodigoList.js +10 -10
- package/dist/base/hooks/dm/formaPagamento/useFormaPagamentoByCodigoList.js.map +1 -1
- package/dist/base/hooks/dm/formaPagamento/useFormaPagamentoList.js +1 -1
- package/dist/base/hooks/dm/formaPagamento/useFormaPagamentoList.js.map +1 -1
- package/dist/base/hooks/dm/grupoVenda/useGrupoVendaByCodigoList.js +11 -11
- package/dist/base/hooks/dm/grupoVenda/useGrupoVendaByCodigoList.js.map +1 -1
- package/dist/base/hooks/dm/grupoVenda/useGrupoVendaList.js +9 -9
- package/dist/base/hooks/dm/grupoVenda/useGrupoVendaList.js.map +1 -1
- package/dist/base/hooks/dm/incoterms/useIncotermsList.js +17 -18
- package/dist/base/hooks/dm/incoterms/useIncotermsList.js.map +1 -1
- package/dist/base/hooks/dm/produto/useProdutoByCodigoList.js +13 -13
- package/dist/base/hooks/dm/produto/useProdutoByCodigoList.js.map +1 -1
- package/dist/base/hooks/dm/produto/useProdutoByGrupoProdutoList.js +21 -21
- package/dist/base/hooks/dm/produto/useProdutoByGrupoProdutoList.js.map +1 -1
- package/dist/base/hooks/dm/produto/useProdutoFindList.js +8 -8
- package/dist/base/hooks/dm/produto/useProdutoFindList.js.map +1 -1
- package/dist/base/hooks/dm/produto/useProdutoFindMonitorList.js +11 -11
- package/dist/base/hooks/dm/produto/useProdutoFindMonitorList.js.map +1 -1
- package/dist/base/hooks/dm/produto/useProdutoIsPrecificadoRacaoList.js +9 -9
- package/dist/base/hooks/dm/produto/useProdutoIsPrecificadoRacaoList.js.map +1 -1
- package/dist/base/hooks/dm/setorAtividade/useSetorAtividadeList.js +5 -5
- package/dist/base/hooks/dm/setorAtividade/useSetorAtividadeList.js.map +1 -1
- package/dist/base/hooks/dm/tipoDocumentoVenda/useTipoDocumentoVendaByCodigoList.js +9 -9
- package/dist/base/hooks/dm/tipoDocumentoVenda/useTipoDocumentoVendaByCodigoList.js.map +1 -1
- package/dist/base/hooks/dm/tipoDocumentoVenda/useTipoDocumentoVendaList.js +9 -9
- package/dist/base/hooks/dm/tipoDocumentoVenda/useTipoDocumentoVendaList.js.map +1 -1
- package/dist/base/hooks/dm/tipoOrdemVenda/useTipoOrdemVendaByCodigoList.js +10 -10
- package/dist/base/hooks/dm/tipoOrdemVenda/useTipoOrdemVendaByCodigoList.js.map +1 -1
- package/dist/base/hooks/dm/tipoOrdemVenda/useTipoOrdemVendaList.js +9 -9
- package/dist/base/hooks/dm/tipoOrdemVenda/useTipoOrdemVendaList.js.map +1 -1
- package/dist/base/hooks/useList.js +10 -10
- package/dist/base/hooks/useList.js.map +1 -1
- package/dist/base/services/modules/transportadora/ControleDescarga/ControleDescargaService.js +15 -15
- package/dist/base/services/modules/transportadora/ControleDescarga/ControleDescargaService.js.map +1 -1
- package/dist/base/services/modules/transportadora/ControleEmbarque/ControleEmbarqueService.js +7 -7
- package/dist/base/services/modules/transportadora/ControleEmbarque/ControleEmbarqueService.js.map +1 -1
- package/dist/base/services/modules/transportadora/NaturezaCarga/NaturezaCargaService.js +5 -5
- package/dist/base/services/modules/transportadora/NaturezaCarga/NaturezaCargaService.js.map +1 -1
- package/dist/base/utils/functions/stringUtils.js +14 -15
- package/dist/base/utils/functions/stringUtils.js.map +1 -1
- package/lib/base/configs/api.config.ts +6 -7
- package/package.json +1 -1
- package/tsconfig.json +6 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventDialog.js","sources":["../../../../../../../lib/@ecme/views/concepts/calendar/Calendar/components/EventDialog.tsx"],"sourcesContent":["import { useEffect } from 'react'\nimport Input from '@/components/ui/Input'\nimport Button from '@/components/ui/Button'\nimport Select from '@/components/ui/Select'\nimport DatePicker from '@/components/ui/DatePicker'\nimport Dialog from '@/components/ui/Dialog'\nimport { Form, FormItem } from '@/components/ui/Form'\nimport Badge from '@/components/ui/Badge'\nimport hooks from '@/components/ui/hooks'\nimport { Controller, useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\nimport { TbChecks } from 'react-icons/tb'\nimport { components } from 'react-select'\nimport dayjs from 'dayjs'\nimport type { SelectedCell } from '../types'\nimport type { ControlProps, OptionProps } from 'react-select'\n\ntype FormModel = {\n title: string\n startDate: Date\n endDate: Date\n color: string\n}\n\nexport type EventParam = {\n id: string\n title: string\n start: string\n eventColor: string\n end?: string\n}\n\ntype ColorOption = {\n value: string\n label: string\n color: string\n}\n\ntype EventDialogProps = {\n open: boolean\n selected: SelectedCell\n onDialogOpen: (open: boolean) => void\n submit: (eventData: EventParam, type: string) => void\n}\n\nconst { Control } = components\n\nconst { useUniqueId } = hooks\n\nconst colorOptions = [\n {\n value: 'red',\n label: 'red',\n color: 'bg-red-400',\n },\n {\n value: 'orange',\n label: 'orange',\n color: 'bg-orange-400',\n },\n {\n value: 'yellow',\n label: 'yellow',\n color: 'bg-yellow-400',\n },\n {\n value: 'green',\n label: 'green',\n color: 'bg-green-400',\n },\n {\n value: 'blue',\n label: 'blue',\n color: 'bg-blue-400',\n },\n {\n value: 'purple',\n label: 'purple',\n color: 'bg-purple-400',\n },\n]\n\nconst CustomSelectOption = ({\n innerProps,\n label,\n data,\n isSelected,\n}: OptionProps<ColorOption>) => {\n return (\n <div\n className={`flex items-center justify-between rounded-lg p-2 ${\n isSelected\n ? 'bg-gray-100 dark:bg-gray-500'\n : 'hover:bg-gray-50 dark:hover:bg-gray-600'\n }`}\n {...innerProps}\n >\n <div className=\"flex items-center\">\n <Badge className={data.color} />\n <span className=\"ml-2 rtl:mr-2 capitalize\">{label}</span>\n </div>\n {isSelected && <TbChecks className=\"text-emerald-500 text-xl\" />}\n </div>\n )\n}\n\nconst CustomControl = ({ children, ...props }: ControlProps<ColorOption>) => {\n const selected = props.getValue()[0]\n\n return (\n <Control className=\"capitalize\" {...props}>\n {selected && (\n <Badge className={`${selected.color} ltr:ml-4 rtl:mr-4`} />\n )}\n {children}\n </Control>\n )\n}\n\nconst validationSchema = z.object({\n title: z.string().min(1, { message: 'Event title required' }),\n startDate: z.date({\n required_error: 'Please select a date',\n invalid_type_error: \"That's not a date!\",\n }),\n endDate: z.date({\n required_error: 'Please select a date',\n invalid_type_error: \"That's not a date!\",\n }),\n color: z.string().min(1, { message: 'Color required' }),\n})\n\nconst EventDialog = (props: EventDialogProps) => {\n const { submit, open, selected, onDialogOpen } = props\n\n const newId = useUniqueId('event-')\n\n const handleDialogClose = () => {\n onDialogOpen(false)\n }\n\n const onSubmit = (values: FormModel) => {\n const eventData: EventParam = {\n id: selected.id || newId,\n title: values.title,\n start: dayjs(values.startDate).format(),\n eventColor: values.color,\n }\n if (values.endDate) {\n eventData.end = dayjs(values.endDate).format()\n }\n console.log('eventData', eventData)\n submit?.(eventData, selected.type)\n handleDialogClose()\n }\n\n const {\n handleSubmit,\n reset,\n formState: { errors },\n control,\n } = useForm<FormModel>({\n resolver: zodResolver(validationSchema),\n })\n\n useEffect(() => {\n if (selected) {\n reset({\n title: selected.title || '',\n startDate: (selected.start &&\n dayjs(selected.start).toDate()) as Date,\n endDate: (selected.end && dayjs(selected.end).toDate()) as Date,\n color: selected.eventColor || colorOptions[0].value,\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selected])\n\n return (\n <Dialog\n isOpen={open}\n onClose={handleDialogClose}\n onRequestClose={handleDialogClose}\n >\n <h5 className=\"mb-4\">\n {selected.type === 'NEW' ? 'Add New Event' : 'Edit Event'}\n </h5>\n <Form\n className=\"flex-1 flex flex-col\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <FormItem\n label=\"Event title\"\n invalid={Boolean(errors.title)}\n errorMessage={errors.title?.message}\n >\n <Controller\n name=\"title\"\n control={control}\n render={({ field }) => (\n <Input\n type=\"text\"\n autoComplete=\"off\"\n placeholder=\"Event title\"\n {...field}\n />\n )}\n />\n </FormItem>\n <FormItem\n label=\"Start date\"\n invalid={Boolean(errors.startDate)}\n errorMessage={errors.startDate?.message}\n >\n <Controller\n name=\"startDate\"\n control={control}\n render={({ field }) => (\n <DatePicker\n value={field.value}\n onChange={field.onChange}\n />\n )}\n />\n </FormItem>\n <FormItem\n label=\"End date\"\n invalid={Boolean(errors.endDate)}\n errorMessage={errors.endDate?.message}\n >\n <Controller\n name=\"endDate\"\n control={control}\n render={({ field }) => (\n <DatePicker\n value={field.value}\n onChange={field.onChange}\n />\n )}\n />\n </FormItem>\n <FormItem\n label=\"Event color\"\n asterisk={true}\n invalid={Boolean(errors.color)}\n errorMessage={errors.color?.message}\n >\n <Controller\n name=\"color\"\n control={control}\n render={({ field }) => (\n <Select<ColorOption>\n options={colorOptions}\n value={colorOptions.filter(\n (option) => option.value === field.value,\n )}\n components={{\n Option: CustomSelectOption,\n Control: CustomControl,\n }}\n onChange={(selected) => {\n field.onChange(selected?.value)\n }}\n />\n )}\n />\n </FormItem>\n <FormItem className=\"mb-0 text-right rtl:text-left\">\n <Button block variant=\"solid\" type=\"submit\">\n {selected.type === 'NEW' ? 'Create' : 'Update'}\n </Button>\n </FormItem>\n </Form>\n </Dialog>\n )\n}\n\nexport default EventDialog\n"],"names":["Control","components","useUniqueId","hooks","colorOptions","CustomSelectOption","innerProps","label","data","isSelected","jsxs","jsx","Badge","TbChecks","CustomControl","children","props","selected","validationSchema","z","EventDialog","submit","open","onDialogOpen","newId","handleDialogClose","onSubmit","values","eventData","dayjs","handleSubmit","reset","errors","control","useForm","zodResolver","useEffect","Dialog","Form","FormItem","_a","Controller","field","Input","_b","DatePicker","_c","_d","Select","option","Button"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EventDialog.js","sources":["../../../../../../../lib/@ecme/views/concepts/calendar/Calendar/components/EventDialog.tsx"],"sourcesContent":["import { useEffect } from 'react'\nimport Input from '@/components/ui/Input'\nimport Button from '@/components/ui/Button'\nimport Select from '@/components/ui/Select'\nimport DatePicker from '@/components/ui/DatePicker'\nimport Dialog from '@/components/ui/Dialog'\nimport { Form, FormItem } from '@/components/ui/Form'\nimport Badge from '@/components/ui/Badge'\nimport hooks from '@/components/ui/hooks'\nimport { Controller, useForm } from 'react-hook-form'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\nimport { TbChecks } from 'react-icons/tb'\nimport { components } from 'react-select'\nimport dayjs from 'dayjs'\nimport type { SelectedCell } from '../types'\nimport type { ControlProps, OptionProps } from 'react-select'\n\ntype FormModel = {\n title: string\n startDate: Date\n endDate: Date\n color: string\n}\n\nexport type EventParam = {\n id: string\n title: string\n start: string\n eventColor: string\n end?: string\n}\n\ntype ColorOption = {\n value: string\n label: string\n color: string\n}\n\ntype EventDialogProps = {\n open: boolean\n selected: SelectedCell\n onDialogOpen: (open: boolean) => void\n submit: (eventData: EventParam, type: string) => void\n}\n\nconst { Control } = components\n\nconst { useUniqueId } = hooks\n\nconst colorOptions = [\n {\n value: 'red',\n label: 'red',\n color: 'bg-red-400',\n },\n {\n value: 'orange',\n label: 'orange',\n color: 'bg-orange-400',\n },\n {\n value: 'yellow',\n label: 'yellow',\n color: 'bg-yellow-400',\n },\n {\n value: 'green',\n label: 'green',\n color: 'bg-green-400',\n },\n {\n value: 'blue',\n label: 'blue',\n color: 'bg-blue-400',\n },\n {\n value: 'purple',\n label: 'purple',\n color: 'bg-purple-400',\n },\n]\n\nconst CustomSelectOption = ({\n innerProps,\n label,\n data,\n isSelected,\n}: OptionProps<ColorOption>) => {\n return (\n <div\n className={`flex items-center justify-between rounded-lg p-2 ${\n isSelected\n ? 'bg-gray-100 dark:bg-gray-500'\n : 'hover:bg-gray-50 dark:hover:bg-gray-600'\n }`}\n {...innerProps}\n >\n <div className=\"flex items-center\">\n <Badge className={data.color} />\n <span className=\"ml-2 rtl:mr-2 capitalize\">{label}</span>\n </div>\n {isSelected && <TbChecks className=\"text-emerald-500 text-xl\" />}\n </div>\n )\n}\n\nconst CustomControl = ({ children, ...props }: ControlProps<ColorOption>) => {\n const selected = props.getValue()[0]\n\n return (\n <Control className=\"capitalize\" {...props}>\n {selected && (\n <Badge className={`${selected.color} ltr:ml-4 rtl:mr-4`} />\n )}\n {children}\n </Control>\n )\n}\n\nconst validationSchema = z.object({\n title: z.string().min(1, { message: 'Event title required' }),\n startDate: z.date({\n required_error: 'Please select a date',\n invalid_type_error: \"That's not a date!\",\n }),\n endDate: z.date({\n required_error: 'Please select a date',\n invalid_type_error: \"That's not a date!\",\n }),\n color: z.string().min(1, { message: 'Color required' }),\n})\n\nconst EventDialog = (props: EventDialogProps) => {\n const { submit, open, selected, onDialogOpen } = props\n\n const newId = useUniqueId('event-')\n\n const handleDialogClose = () => {\n onDialogOpen(false)\n }\n\n const onSubmit = (values: FormModel) => {\n const eventData: EventParam = {\n id: selected.id || newId,\n title: values.title,\n start: dayjs(values.startDate).format(),\n eventColor: values.color,\n }\n if (values.endDate) {\n eventData.end = dayjs(values.endDate).format()\n }\n console.log('eventData', eventData)\n submit?.(eventData, selected.type)\n handleDialogClose()\n }\n\n const {\n handleSubmit,\n reset,\n formState: { errors },\n control,\n } = useForm<FormModel>({\n resolver: zodResolver(validationSchema),\n })\n\n useEffect(() => {\n if (selected) {\n reset({\n title: selected.title || '',\n startDate: (selected.start &&\n dayjs(selected.start).toDate()) as Date,\n endDate: (selected.end && dayjs(selected.end).toDate()) as Date,\n color: selected.eventColor || colorOptions[0].value,\n })\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selected])\n\n return (\n <Dialog\n isOpen={open}\n onClose={handleDialogClose}\n onRequestClose={handleDialogClose}\n >\n <h5 className=\"mb-4\">\n {selected.type === 'NEW' ? 'Add New Event' : 'Edit Event'}\n </h5>\n <Form\n className=\"flex-1 flex flex-col\"\n onSubmit={handleSubmit(onSubmit)}\n >\n <FormItem\n label=\"Event title\"\n invalid={Boolean(errors.title)}\n errorMessage={errors.title?.message}\n >\n <Controller\n name=\"title\"\n control={control}\n render={({ field }) => (\n <Input\n type=\"text\"\n autoComplete=\"off\"\n placeholder=\"Event title\"\n {...field}\n />\n )}\n />\n </FormItem>\n <FormItem\n label=\"Start date\"\n invalid={Boolean(errors.startDate)}\n errorMessage={errors.startDate?.message}\n >\n <Controller\n name=\"startDate\"\n control={control}\n render={({ field }) => (\n <DatePicker\n value={field.value}\n onChange={field.onChange}\n />\n )}\n />\n </FormItem>\n <FormItem\n label=\"End date\"\n invalid={Boolean(errors.endDate)}\n errorMessage={errors.endDate?.message}\n >\n <Controller\n name=\"endDate\"\n control={control}\n render={({ field }) => (\n <DatePicker\n value={field.value}\n onChange={field.onChange}\n />\n )}\n />\n </FormItem>\n <FormItem\n label=\"Event color\"\n asterisk={true}\n invalid={Boolean(errors.color)}\n errorMessage={errors.color?.message}\n >\n <Controller\n name=\"color\"\n control={control}\n render={({ field }) => (\n <Select<ColorOption>\n options={colorOptions}\n value={colorOptions.filter(\n (option) => option.value === field.value,\n )}\n components={{\n Option: CustomSelectOption,\n Control: CustomControl,\n }}\n onChange={(selected) => {\n field.onChange(selected?.value)\n }}\n />\n )}\n />\n </FormItem>\n <FormItem className=\"mb-0 text-right rtl:text-left\">\n <Button block variant=\"solid\" type=\"submit\">\n {selected.type === 'NEW' ? 'Create' : 'Update'}\n </Button>\n </FormItem>\n </Form>\n </Dialog>\n )\n}\n\nexport default EventDialog\n"],"names":["Control","components","useUniqueId","hooks","colorOptions","CustomSelectOption","innerProps","label","data","isSelected","jsxs","jsx","Badge","TbChecks","CustomControl","children","props","selected","validationSchema","z","EventDialog","submit","open","onDialogOpen","newId","handleDialogClose","onSubmit","values","eventData","dayjs","handleSubmit","reset","errors","control","useForm","zodResolver","useEffect","Dialog","Form","FormItem","Controller","field","Input","DatePicker","Select","option","Button"],"mappings":"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"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { jsx as r, jsxs as
|
|
2
|
-
import { useRef as
|
|
3
|
-
import { Avatar as
|
|
1
|
+
import { jsx as r, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as k, useState as u, useEffect as M, useMemo as R } from "react";
|
|
3
|
+
import { Avatar as S } from "../../../../../components/ui/Avatar/index.js";
|
|
4
4
|
import "../../../../../components/ui/Card/index.js";
|
|
5
5
|
import "../../../../../components/view/ChatBox/index.js";
|
|
6
|
-
import
|
|
7
|
-
import
|
|
6
|
+
import T from "./ChatAction.js";
|
|
7
|
+
import A from "../../../../../assets/svg/StartConverstation.js";
|
|
8
8
|
import { useChatStore as n } from "../store/chatStore.js";
|
|
9
|
-
import { apiGetConversation as
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import
|
|
14
|
-
import { TbChevronLeft as
|
|
15
|
-
import
|
|
16
|
-
import
|
|
17
|
-
const
|
|
9
|
+
import { apiGetConversation as E } from "../../../../../services/ChatService.js";
|
|
10
|
+
import L from "../../../../../utils/classNames.js";
|
|
11
|
+
import U from "../../../../../utils/hooks/useResponsive.js";
|
|
12
|
+
import h from "dayjs";
|
|
13
|
+
import B from "lodash/uniqueId";
|
|
14
|
+
import { TbChevronLeft as D } from "react-icons/tb";
|
|
15
|
+
import P from "../../../../../components/ui/Card/Card.js";
|
|
16
|
+
import G from "../../../../../components/view/ChatBox/ChatBox.js";
|
|
17
|
+
const F = (s) => {
|
|
18
18
|
switch (console.log("file.type", s.type), s.type) {
|
|
19
19
|
case "image/jpg":
|
|
20
20
|
case "image/jpeg":
|
|
@@ -30,132 +30,129 @@ const O = (s) => {
|
|
|
30
30
|
default:
|
|
31
31
|
return "misc";
|
|
32
32
|
}
|
|
33
|
-
},
|
|
34
|
-
|
|
35
|
-
const s = R(null), t = n((e) => e.selectedChat), g = n((e) => e.conversationRecord), v = n(
|
|
33
|
+
}, ae = () => {
|
|
34
|
+
const s = k(null), t = n((e) => e.selectedChat), p = n((e) => e.conversationRecord), f = n(
|
|
36
35
|
(e) => e.pushConversationRecord
|
|
37
|
-
),
|
|
36
|
+
), g = n((e) => e.setSelectedChat), v = n(
|
|
38
37
|
(e) => e.pushConversationMessage
|
|
39
|
-
),
|
|
38
|
+
), C = n(
|
|
40
39
|
(e) => e.setContactInfoDrawer
|
|
41
|
-
), [
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
a && (a.scrollTop = a.scrollHeight);
|
|
40
|
+
), [H, m] = u(!1), [l, i] = u([]), { smaller: x } = U(), y = () => {
|
|
41
|
+
if (s.current?.getScrollElement) {
|
|
42
|
+
const e = s.current.getScrollElement();
|
|
43
|
+
e && (e.scrollTop = e.scrollHeight);
|
|
46
44
|
}
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
userId: (e = t.user) == null ? void 0 : e.id,
|
|
45
|
+
}, b = () => {
|
|
46
|
+
C({
|
|
47
|
+
userId: t.user?.id,
|
|
51
48
|
chatId: t.id,
|
|
52
49
|
chatType: t.chatType,
|
|
53
50
|
open: !0
|
|
54
51
|
});
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
},
|
|
52
|
+
}, w = (e) => {
|
|
53
|
+
v(t.id, e), i((a) => (a.push(e), structuredClone(a)));
|
|
54
|
+
}, N = async ({
|
|
58
55
|
value: e,
|
|
59
56
|
attachments: a
|
|
60
57
|
}) => {
|
|
61
58
|
const o = {
|
|
62
|
-
id:
|
|
59
|
+
id: B("chat-conversation-"),
|
|
63
60
|
sender: {
|
|
64
61
|
id: "1",
|
|
65
62
|
name: "Angelina Gotelli",
|
|
66
63
|
avatarImageUrl: "/img/avatars/thumb-1.jpg"
|
|
67
64
|
},
|
|
68
65
|
content: e,
|
|
69
|
-
attachments: a
|
|
70
|
-
type:
|
|
66
|
+
attachments: a?.map((d) => ({
|
|
67
|
+
type: F(d),
|
|
71
68
|
source: d,
|
|
72
69
|
mediaUrl: URL.createObjectURL(d)
|
|
73
70
|
})),
|
|
74
|
-
timestamp:
|
|
71
|
+
timestamp: h().toDate(),
|
|
75
72
|
type: "regular",
|
|
76
73
|
isMyMessage: !0
|
|
77
74
|
};
|
|
78
|
-
|
|
79
|
-
},
|
|
75
|
+
w(o);
|
|
76
|
+
}, I = {
|
|
80
77
|
header: {
|
|
81
|
-
content: /* @__PURE__ */
|
|
82
|
-
|
|
78
|
+
content: /* @__PURE__ */ c("div", { className: "flex items-center gap-2", children: [
|
|
79
|
+
x.md && /* @__PURE__ */ r(
|
|
83
80
|
"button",
|
|
84
81
|
{
|
|
85
82
|
className: "text-xl hover:text-primary",
|
|
86
|
-
onClick: () =>
|
|
87
|
-
children: /* @__PURE__ */ r(
|
|
83
|
+
onClick: () => g({}),
|
|
84
|
+
children: /* @__PURE__ */ r(D, {})
|
|
88
85
|
}
|
|
89
86
|
),
|
|
90
|
-
/* @__PURE__ */
|
|
87
|
+
/* @__PURE__ */ c(
|
|
91
88
|
"button",
|
|
92
89
|
{
|
|
93
90
|
className: "flex items-center gap-2",
|
|
94
91
|
role: "button",
|
|
95
|
-
onClick:
|
|
92
|
+
onClick: b,
|
|
96
93
|
children: [
|
|
97
|
-
/* @__PURE__ */ r("div", { children: /* @__PURE__ */ r(
|
|
98
|
-
/* @__PURE__ */
|
|
99
|
-
/* @__PURE__ */ r("div", { className: "flex justify-between", children: /* @__PURE__ */ r("div", { className: "font-bold heading-text truncate", children:
|
|
100
|
-
/* @__PURE__ */ r("div", { children:
|
|
94
|
+
/* @__PURE__ */ r("div", { children: /* @__PURE__ */ r(S, { src: t.user?.avatarImageUrl }) }),
|
|
95
|
+
/* @__PURE__ */ c("div", { className: "min-w-0 flex-1", children: [
|
|
96
|
+
/* @__PURE__ */ r("div", { className: "flex justify-between", children: /* @__PURE__ */ r("div", { className: "font-bold heading-text truncate", children: t.user?.name }) }),
|
|
97
|
+
/* @__PURE__ */ r("div", { children: t?.chatType === "groups" ? "click here for group info" : "last seen recently" })
|
|
101
98
|
] })
|
|
102
99
|
]
|
|
103
100
|
}
|
|
104
101
|
)
|
|
105
102
|
] }),
|
|
106
|
-
extra: /* @__PURE__ */ r(
|
|
103
|
+
extra: /* @__PURE__ */ r(T, { muted: t.muted }),
|
|
107
104
|
className: "bg-gray-100 dark:bg-gray-600 h-[100px]"
|
|
108
105
|
}
|
|
109
106
|
};
|
|
110
|
-
|
|
107
|
+
M(() => {
|
|
111
108
|
const e = async () => {
|
|
112
109
|
m(!0);
|
|
113
|
-
const a =
|
|
110
|
+
const a = p.find(
|
|
114
111
|
(o) => o.id === t.id
|
|
115
112
|
);
|
|
116
113
|
if (a)
|
|
117
|
-
|
|
114
|
+
i(a.conversation);
|
|
118
115
|
else {
|
|
119
|
-
const o = await
|
|
116
|
+
const o = await E({
|
|
120
117
|
id: t.id
|
|
121
118
|
});
|
|
122
|
-
|
|
119
|
+
i(o.conversation), f(o);
|
|
123
120
|
}
|
|
124
|
-
m(!1),
|
|
121
|
+
m(!1), y();
|
|
125
122
|
};
|
|
126
|
-
t.id && (
|
|
123
|
+
t.id && (i([]), e());
|
|
127
124
|
}, [t.id, l]);
|
|
128
|
-
const
|
|
125
|
+
const j = R(() => l.map((e) => (e.timestamp = h.unix(e.timestamp).toDate(), e.isMyMessage && (e.showAvatar = !1), e)), [l]);
|
|
129
126
|
return /* @__PURE__ */ r(
|
|
130
127
|
"div",
|
|
131
128
|
{
|
|
132
|
-
className:
|
|
129
|
+
className: L(
|
|
133
130
|
"w-full md:block",
|
|
134
131
|
!t.id && "hidden"
|
|
135
132
|
),
|
|
136
133
|
children: t.id ? /* @__PURE__ */ r(
|
|
137
|
-
|
|
134
|
+
P,
|
|
138
135
|
{
|
|
139
136
|
className: "flex-1 h-full max-h-full dark:border-gray-700",
|
|
140
137
|
bodyClass: "h-[calc(100%-100px)] relative",
|
|
141
|
-
...
|
|
138
|
+
...I,
|
|
142
139
|
children: /* @__PURE__ */ r(
|
|
143
|
-
|
|
140
|
+
G,
|
|
144
141
|
{
|
|
145
142
|
ref: s,
|
|
146
|
-
messageList:
|
|
143
|
+
messageList: j,
|
|
147
144
|
placeholder: "Enter a prompt here",
|
|
148
145
|
showAvatar: !0,
|
|
149
146
|
avatarGap: !0,
|
|
150
147
|
messageListClass: "h-[calc(100%-100px)]",
|
|
151
148
|
bubbleClass: "max-w-[300px]",
|
|
152
|
-
onInputChange:
|
|
149
|
+
onInputChange: N
|
|
153
150
|
}
|
|
154
151
|
)
|
|
155
152
|
}
|
|
156
|
-
) : /* @__PURE__ */
|
|
157
|
-
/* @__PURE__ */ r(
|
|
158
|
-
/* @__PURE__ */
|
|
153
|
+
) : /* @__PURE__ */ c("div", { className: "flex-1 h-full max-h-full flex flex-col items-center justify-center rounded-2xl border border-gray-200 dark:border-gray-800", children: [
|
|
154
|
+
/* @__PURE__ */ r(A, { height: 250, width: 250 }),
|
|
155
|
+
/* @__PURE__ */ c("div", { className: "mt-10 text-center", children: [
|
|
159
156
|
/* @__PURE__ */ r("h3", { children: "Start Chatting!" }),
|
|
160
157
|
/* @__PURE__ */ r("p", { className: "mt-2 text-base", children: "Pick a Conversation or Begin a New One" })
|
|
161
158
|
] })
|
|
@@ -164,6 +161,6 @@ const O = (s) => {
|
|
|
164
161
|
);
|
|
165
162
|
};
|
|
166
163
|
export {
|
|
167
|
-
|
|
164
|
+
ae as default
|
|
168
165
|
};
|
|
169
166
|
//# sourceMappingURL=ChatBody.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatBody.js","sources":["../../../../../../../lib/@ecme/views/concepts/chat/Chat/components/ChatBody.tsx"],"sourcesContent":["import { useState, useEffect, useRef, useMemo } from 'react'\nimport Avatar from '@/components/ui/Avatar'\nimport Card from '@/components/ui/Card'\nimport ChatBox from '@/components/view/ChatBox'\nimport ChatAction from './ChatAction'\nimport StartConverstation from '@/assets/svg/StartConverstation'\nimport { useChatStore } from '../store/chatStore'\nimport { apiGetConversation } from '@/services/ChatService'\nimport classNames from '@/utils/classNames'\nimport useResponsive from '@/utils/hooks/useResponsive'\nimport dayjs from 'dayjs'\nimport uniqueId from 'lodash/uniqueId'\nimport { TbChevronLeft } from 'react-icons/tb'\nimport type { GetConversationResponse, Message, ChatType } from '../types'\nimport type { ScrollBarRef } from '@/components/ui/ScrollBar'\n\nconst getFileType = (file: File) => {\n console.log('file.type', file.type)\n switch (file.type) {\n case 'image/jpg':\n case 'image/jpeg':\n case 'image/png':\n case 'image/webp':\n return 'image'\n case 'video/mp4':\n case 'video/avi':\n return 'video'\n case 'audio/mp3':\n case 'audio/wav':\n return 'audio'\n default:\n return 'misc'\n }\n}\n\nconst ChatBody = () => {\n const scrollRef = useRef<ScrollBarRef>(null)\n const selectedChat = useChatStore((state) => state.selectedChat)\n const conversationRecord = useChatStore((state) => state.conversationRecord)\n const pushConversationRecord = useChatStore(\n (state) => state.pushConversationRecord,\n )\n const setSelectedChat = useChatStore((state) => state.setSelectedChat)\n const pushConversationMessage = useChatStore(\n (state) => state.pushConversationMessage,\n )\n const setContactInfoDrawer = useChatStore(\n (state) => state.setContactInfoDrawer,\n )\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, setIsFetchingConversation] = useState(false)\n const [conversation, setConversation] = useState<Message[]>([])\n\n const { smaller } = useResponsive()\n\n const scrollToBottom = () => {\n if (scrollRef.current?.getScrollElement) {\n const scrollElement = scrollRef.current.getScrollElement()\n if (scrollElement) {\n scrollElement.scrollTop = scrollElement.scrollHeight\n }\n }\n }\n\n const handleProfileClick = () => {\n setContactInfoDrawer({\n userId: selectedChat.user?.id as string,\n chatId: selectedChat.id as string,\n chatType: selectedChat.chatType as ChatType,\n open: true,\n })\n }\n\n const handlePushMessage = (message: Message) => {\n pushConversationMessage(selectedChat.id as string, message)\n setConversation((prevConversation) => {\n prevConversation.push(message)\n return structuredClone(prevConversation)\n })\n }\n\n const handleInputChange = async ({\n value,\n attachments,\n }: {\n value: string\n attachments?: File[]\n }) => {\n const newMessage: Message = {\n id: uniqueId('chat-conversation-'),\n sender: {\n id: '1',\n name: 'Angelina Gotelli',\n avatarImageUrl: '/img/avatars/thumb-1.jpg',\n },\n content: value,\n attachments: attachments?.map((attachment) => {\n return {\n type: getFileType(attachment),\n source: attachment,\n mediaUrl: URL.createObjectURL(attachment),\n }\n }),\n timestamp: dayjs().toDate(),\n type: 'regular',\n isMyMessage: true,\n }\n handlePushMessage(newMessage)\n }\n\n const cardHeaderProps = {\n header: {\n content: (\n <div className=\"flex items-center gap-2\">\n {smaller.md && (\n <button\n className=\"text-xl hover:text-primary\"\n onClick={() => setSelectedChat({})}\n >\n <TbChevronLeft />\n </button>\n )}\n <button\n className=\"flex items-center gap-2\"\n role=\"button\"\n onClick={handleProfileClick}\n >\n <div>\n <Avatar src={selectedChat.user?.avatarImageUrl} />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex justify-between\">\n <div className=\"font-bold heading-text truncate\">\n {selectedChat.user?.name}\n </div>\n </div>\n <div>\n {selectedChat?.chatType === 'groups'\n ? 'click here for group info'\n : 'last seen recently'}\n </div>\n </div>\n </button>\n </div>\n ),\n extra: <ChatAction muted={selectedChat.muted} />,\n className: 'bg-gray-100 dark:bg-gray-600 h-[100px]',\n },\n }\n\n useEffect(() => {\n const fetchConvesation = async () => {\n setIsFetchingConversation(true)\n\n const record = conversationRecord.find(\n (item) => item.id === selectedChat.id,\n )\n\n if (record) {\n setConversation(record.conversation)\n } else {\n const resp = await apiGetConversation<GetConversationResponse>({\n id: selectedChat.id as string,\n })\n setConversation(resp.conversation)\n pushConversationRecord(resp)\n }\n\n setIsFetchingConversation(false)\n scrollToBottom()\n }\n\n if (selectedChat.id) {\n setConversation([])\n fetchConvesation()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedChat.id, conversation])\n\n const messageList = useMemo(() => {\n return conversation.map((item) => {\n item.timestamp = dayjs\n .unix(item.timestamp as number)\n .toDate() as Date\n if (item.isMyMessage) {\n item.showAvatar = false\n }\n return item\n })\n }, [conversation])\n\n return (\n <div\n className={classNames(\n 'w-full md:block',\n !selectedChat.id && 'hidden',\n )}\n >\n {selectedChat.id ? (\n <Card\n className=\"flex-1 h-full max-h-full dark:border-gray-700\"\n bodyClass=\"h-[calc(100%-100px)] relative\"\n {...cardHeaderProps}\n >\n <ChatBox\n ref={scrollRef}\n messageList={messageList}\n placeholder=\"Enter a prompt here\"\n showAvatar={true}\n avatarGap={true}\n messageListClass=\"h-[calc(100%-100px)]\"\n bubbleClass=\"max-w-[300px]\"\n onInputChange={handleInputChange}\n />\n </Card>\n ) : (\n <div className=\"flex-1 h-full max-h-full flex flex-col items-center justify-center rounded-2xl border border-gray-200 dark:border-gray-800\">\n <StartConverstation height={250} width={250} />\n <div className=\"mt-10 text-center\">\n <h3>Start Chatting!</h3>\n <p className=\"mt-2 text-base\">\n Pick a Conversation or Begin a New One\n </p>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport default ChatBody\n"],"names":["getFileType","file","ChatBody","scrollRef","useRef","selectedChat","useChatStore","state","conversationRecord","pushConversationRecord","setSelectedChat","pushConversationMessage","setContactInfoDrawer","_","setIsFetchingConversation","useState","conversation","setConversation","smaller","useResponsive","scrollToBottom","_a","scrollElement","handleProfileClick","handlePushMessage","message","prevConversation","handleInputChange","value","attachments","newMessage","uniqueId","attachment","dayjs","cardHeaderProps","jsxs","jsx","TbChevronLeft","Avatar","_b","ChatAction","useEffect","fetchConvesation","record","item","resp","apiGetConversation","messageList","useMemo","classNames","Card","ChatBox","StartConverstation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChatBody.js","sources":["../../../../../../../lib/@ecme/views/concepts/chat/Chat/components/ChatBody.tsx"],"sourcesContent":["import { useState, useEffect, useRef, useMemo } from 'react'\nimport Avatar from '@/components/ui/Avatar'\nimport Card from '@/components/ui/Card'\nimport ChatBox from '@/components/view/ChatBox'\nimport ChatAction from './ChatAction'\nimport StartConverstation from '@/assets/svg/StartConverstation'\nimport { useChatStore } from '../store/chatStore'\nimport { apiGetConversation } from '@/services/ChatService'\nimport classNames from '@/utils/classNames'\nimport useResponsive from '@/utils/hooks/useResponsive'\nimport dayjs from 'dayjs'\nimport uniqueId from 'lodash/uniqueId'\nimport { TbChevronLeft } from 'react-icons/tb'\nimport type { GetConversationResponse, Message, ChatType } from '../types'\nimport type { ScrollBarRef } from '@/components/ui/ScrollBar'\n\nconst getFileType = (file: File) => {\n console.log('file.type', file.type)\n switch (file.type) {\n case 'image/jpg':\n case 'image/jpeg':\n case 'image/png':\n case 'image/webp':\n return 'image'\n case 'video/mp4':\n case 'video/avi':\n return 'video'\n case 'audio/mp3':\n case 'audio/wav':\n return 'audio'\n default:\n return 'misc'\n }\n}\n\nconst ChatBody = () => {\n const scrollRef = useRef<ScrollBarRef>(null)\n const selectedChat = useChatStore((state) => state.selectedChat)\n const conversationRecord = useChatStore((state) => state.conversationRecord)\n const pushConversationRecord = useChatStore(\n (state) => state.pushConversationRecord,\n )\n const setSelectedChat = useChatStore((state) => state.setSelectedChat)\n const pushConversationMessage = useChatStore(\n (state) => state.pushConversationMessage,\n )\n const setContactInfoDrawer = useChatStore(\n (state) => state.setContactInfoDrawer,\n )\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [_, setIsFetchingConversation] = useState(false)\n const [conversation, setConversation] = useState<Message[]>([])\n\n const { smaller } = useResponsive()\n\n const scrollToBottom = () => {\n if (scrollRef.current?.getScrollElement) {\n const scrollElement = scrollRef.current.getScrollElement()\n if (scrollElement) {\n scrollElement.scrollTop = scrollElement.scrollHeight\n }\n }\n }\n\n const handleProfileClick = () => {\n setContactInfoDrawer({\n userId: selectedChat.user?.id as string,\n chatId: selectedChat.id as string,\n chatType: selectedChat.chatType as ChatType,\n open: true,\n })\n }\n\n const handlePushMessage = (message: Message) => {\n pushConversationMessage(selectedChat.id as string, message)\n setConversation((prevConversation) => {\n prevConversation.push(message)\n return structuredClone(prevConversation)\n })\n }\n\n const handleInputChange = async ({\n value,\n attachments,\n }: {\n value: string\n attachments?: File[]\n }) => {\n const newMessage: Message = {\n id: uniqueId('chat-conversation-'),\n sender: {\n id: '1',\n name: 'Angelina Gotelli',\n avatarImageUrl: '/img/avatars/thumb-1.jpg',\n },\n content: value,\n attachments: attachments?.map((attachment) => {\n return {\n type: getFileType(attachment),\n source: attachment,\n mediaUrl: URL.createObjectURL(attachment),\n }\n }),\n timestamp: dayjs().toDate(),\n type: 'regular',\n isMyMessage: true,\n }\n handlePushMessage(newMessage)\n }\n\n const cardHeaderProps = {\n header: {\n content: (\n <div className=\"flex items-center gap-2\">\n {smaller.md && (\n <button\n className=\"text-xl hover:text-primary\"\n onClick={() => setSelectedChat({})}\n >\n <TbChevronLeft />\n </button>\n )}\n <button\n className=\"flex items-center gap-2\"\n role=\"button\"\n onClick={handleProfileClick}\n >\n <div>\n <Avatar src={selectedChat.user?.avatarImageUrl} />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex justify-between\">\n <div className=\"font-bold heading-text truncate\">\n {selectedChat.user?.name}\n </div>\n </div>\n <div>\n {selectedChat?.chatType === 'groups'\n ? 'click here for group info'\n : 'last seen recently'}\n </div>\n </div>\n </button>\n </div>\n ),\n extra: <ChatAction muted={selectedChat.muted} />,\n className: 'bg-gray-100 dark:bg-gray-600 h-[100px]',\n },\n }\n\n useEffect(() => {\n const fetchConvesation = async () => {\n setIsFetchingConversation(true)\n\n const record = conversationRecord.find(\n (item) => item.id === selectedChat.id,\n )\n\n if (record) {\n setConversation(record.conversation)\n } else {\n const resp = await apiGetConversation<GetConversationResponse>({\n id: selectedChat.id as string,\n })\n setConversation(resp.conversation)\n pushConversationRecord(resp)\n }\n\n setIsFetchingConversation(false)\n scrollToBottom()\n }\n\n if (selectedChat.id) {\n setConversation([])\n fetchConvesation()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedChat.id, conversation])\n\n const messageList = useMemo(() => {\n return conversation.map((item) => {\n item.timestamp = dayjs\n .unix(item.timestamp as number)\n .toDate() as Date\n if (item.isMyMessage) {\n item.showAvatar = false\n }\n return item\n })\n }, [conversation])\n\n return (\n <div\n className={classNames(\n 'w-full md:block',\n !selectedChat.id && 'hidden',\n )}\n >\n {selectedChat.id ? (\n <Card\n className=\"flex-1 h-full max-h-full dark:border-gray-700\"\n bodyClass=\"h-[calc(100%-100px)] relative\"\n {...cardHeaderProps}\n >\n <ChatBox\n ref={scrollRef}\n messageList={messageList}\n placeholder=\"Enter a prompt here\"\n showAvatar={true}\n avatarGap={true}\n messageListClass=\"h-[calc(100%-100px)]\"\n bubbleClass=\"max-w-[300px]\"\n onInputChange={handleInputChange}\n />\n </Card>\n ) : (\n <div className=\"flex-1 h-full max-h-full flex flex-col items-center justify-center rounded-2xl border border-gray-200 dark:border-gray-800\">\n <StartConverstation height={250} width={250} />\n <div className=\"mt-10 text-center\">\n <h3>Start Chatting!</h3>\n <p className=\"mt-2 text-base\">\n Pick a Conversation or Begin a New One\n </p>\n </div>\n </div>\n )}\n </div>\n )\n}\n\nexport default ChatBody\n"],"names":["getFileType","file","ChatBody","scrollRef","useRef","selectedChat","useChatStore","state","conversationRecord","pushConversationRecord","setSelectedChat","pushConversationMessage","setContactInfoDrawer","_","setIsFetchingConversation","useState","conversation","setConversation","smaller","useResponsive","scrollToBottom","scrollElement","handleProfileClick","handlePushMessage","message","prevConversation","handleInputChange","value","attachments","newMessage","uniqueId","attachment","dayjs","cardHeaderProps","jsxs","jsx","TbChevronLeft","Avatar","ChatAction","useEffect","fetchConvesation","record","item","resp","apiGetConversation","messageList","useMemo","classNames","Card","ChatBox","StartConverstation"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsxs as a, jsx as t } from "react/jsx-runtime";
|
|
2
|
-
import { useRef as k, useState as
|
|
2
|
+
import { useRef as k, useState as o, useEffect as d } from "react";
|
|
3
3
|
import { Avatar as I } from "../../../../../components/ui/Avatar/index.js";
|
|
4
4
|
import "../../../../../components/ui/Badge/index.js";
|
|
5
5
|
import "../../../../../components/ui/ScrollBar/index.js";
|
|
@@ -14,44 +14,43 @@ import E from "dayjs";
|
|
|
14
14
|
import O from "../../../../../components/ui/ScrollBar/ScrollBar.js";
|
|
15
15
|
import Q from "../../../../../components/ui/Badge/Badge.js";
|
|
16
16
|
const re = () => {
|
|
17
|
-
const
|
|
17
|
+
const h = r((e) => e.chats), i = r((e) => e.chatsFetched), f = r((e) => e.selectedChat), m = r((e) => e.setSelectedChat), u = r((e) => e.setMobileSidebar), p = r((e) => e.selectedChatType), c = r(
|
|
18
18
|
(e) => e.setSelectedChatType
|
|
19
|
-
),
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}, []),
|
|
23
|
-
|
|
24
|
-
l ? (e = c.current) == null || e.focus() : (s = c.current) == null || s.blur();
|
|
19
|
+
), g = r((e) => e.setChatRead), s = k(null), [l, b] = o(!1), [n, C] = o(""), { fetchChats: x } = R();
|
|
20
|
+
d(() => {
|
|
21
|
+
i || x();
|
|
22
|
+
}, []), d(() => {
|
|
23
|
+
l ? s.current?.focus() : s.current?.blur();
|
|
25
24
|
}, [l]);
|
|
26
|
-
const
|
|
25
|
+
const v = ({
|
|
27
26
|
id: e,
|
|
28
|
-
user:
|
|
27
|
+
user: S,
|
|
29
28
|
muted: T,
|
|
30
29
|
chatType: w,
|
|
31
30
|
unread: j
|
|
32
31
|
}) => {
|
|
33
|
-
j > 0 &&
|
|
32
|
+
j > 0 && g(e), m({
|
|
34
33
|
id: e,
|
|
35
|
-
user:
|
|
34
|
+
user: S,
|
|
36
35
|
muted: T,
|
|
37
36
|
chatType: w
|
|
38
|
-
}),
|
|
37
|
+
}), u(!1);
|
|
39
38
|
};
|
|
40
|
-
function
|
|
41
|
-
e.target.value.length > 0 &&
|
|
39
|
+
function y(e) {
|
|
40
|
+
e.target.value.length > 0 && c(""), e.target.value.length === 0 && c("personal"), C(e.target.value);
|
|
42
41
|
}
|
|
43
|
-
const
|
|
42
|
+
const N = D(y, 500);
|
|
44
43
|
return /* @__PURE__ */ a("div", { className: "flex flex-col justify-between h-full", children: [
|
|
45
44
|
/* @__PURE__ */ a("div", { className: "mb-4", children: [
|
|
46
45
|
/* @__PURE__ */ a("div", { className: "flex items-center justify-between mb-4", children: [
|
|
47
46
|
l ? /* @__PURE__ */ t(
|
|
48
47
|
"input",
|
|
49
48
|
{
|
|
50
|
-
ref:
|
|
49
|
+
ref: s,
|
|
51
50
|
className: "flex-1 h-full placeholder:text-gray-400 placeholder:text-base placeholder:font-normal bg-transparent focus:outline-none heading-text font-bold",
|
|
52
51
|
placeholder: "Search chat",
|
|
53
52
|
onChange: (e) => {
|
|
54
|
-
|
|
53
|
+
N(e);
|
|
55
54
|
}
|
|
56
55
|
}
|
|
57
56
|
) : /* @__PURE__ */ t("h4", { children: "Chat" }),
|
|
@@ -61,7 +60,7 @@ const re = () => {
|
|
|
61
60
|
className: "close-button text-lg",
|
|
62
61
|
type: "button",
|
|
63
62
|
onClick: () => {
|
|
64
|
-
|
|
63
|
+
b(!l);
|
|
65
64
|
},
|
|
66
65
|
children: l ? /* @__PURE__ */ t(L, {}) : /* @__PURE__ */ t(M, {})
|
|
67
66
|
}
|
|
@@ -69,15 +68,15 @@ const re = () => {
|
|
|
69
68
|
] }),
|
|
70
69
|
/* @__PURE__ */ t(B, {})
|
|
71
70
|
] }),
|
|
72
|
-
/* @__PURE__ */ t(O, { className: "h-[calc(100%-150px)] overflow-y-auto", children: /* @__PURE__ */ t("div", { className: "flex flex-col gap-2 h-full", children:
|
|
71
|
+
/* @__PURE__ */ t(O, { className: "h-[calc(100%-150px)] overflow-y-auto", children: /* @__PURE__ */ t("div", { className: "flex flex-col gap-2 h-full", children: h.filter((e) => n ? e.name.toLowerCase().includes(n) : p === e.chatType).map((e) => /* @__PURE__ */ a(
|
|
73
72
|
"div",
|
|
74
73
|
{
|
|
75
74
|
className: A(
|
|
76
75
|
"py-3 px-2 flex items-center gap-2 justify-between rounded-xl hover:bg-gray-100 dark:hover:bg-gray-700 relative cursor-pointer select-none",
|
|
77
|
-
|
|
76
|
+
f.id === e.id && "bg-gray-100 dark:bg-gray-700"
|
|
78
77
|
),
|
|
79
78
|
role: "button",
|
|
80
|
-
onClick: () =>
|
|
79
|
+
onClick: () => v({
|
|
81
80
|
id: e.id,
|
|
82
81
|
user: {
|
|
83
82
|
id: e.userId || e.groupId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatList.js","sources":["../../../../../../../lib/@ecme/views/concepts/chat/Chat/components/ChatList.tsx"],"sourcesContent":["import { useRef, useState, useEffect } from 'react'\nimport Avatar from '@/components/ui/Avatar'\nimport Badge from '@/components/ui/Badge'\nimport ScrollBar from '@/components/ui/ScrollBar'\nimport ChatSegment from './ChatSegment'\nimport NewChat from './NewChat'\nimport { useChatStore } from '../store/chatStore'\nimport useChat from '../hooks/useChat'\nimport classNames from '@/utils/classNames'\nimport useDebounce from '@/utils/hooks/useDebounce'\nimport { TbVolumeOff, TbSearch, TbX } from 'react-icons/tb'\nimport dayjs from 'dayjs'\nimport type { ChatType } from '../types'\nimport type { ChangeEvent } from 'react'\n\nconst ChatList = () => {\n const chats = useChatStore((state) => state.chats)\n const chatsFetched = useChatStore((state) => state.chatsFetched)\n const selectedChat = useChatStore((state) => state.selectedChat)\n const setSelectedChat = useChatStore((state) => state.setSelectedChat)\n const setMobileSidebar = useChatStore((state) => state.setMobileSidebar)\n const selectedChatType = useChatStore((state) => state.selectedChatType)\n const setSelectedChatType = useChatStore(\n (state) => state.setSelectedChatType,\n )\n const setChatRead = useChatStore((state) => state.setChatRead)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const [showSearchBar, setShowSearchBar] = useState(false)\n const [queryText, setQueryText] = useState('')\n\n const { fetchChats } = useChat()\n\n useEffect(() => {\n if (!chatsFetched) {\n fetchChats()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n useEffect(() => {\n if (showSearchBar) {\n inputRef.current?.focus()\n } else {\n inputRef.current?.blur()\n }\n }, [showSearchBar])\n\n const handleChatClick = ({\n id,\n user,\n muted,\n chatType,\n unread,\n }: {\n id: string\n user: { id: string; avatarImageUrl: string; name: string }\n muted: boolean\n chatType: ChatType\n unread: number\n }) => {\n if (unread > 0) {\n setChatRead(id)\n }\n\n setSelectedChat({\n id,\n user,\n muted,\n chatType,\n })\n setMobileSidebar(false)\n }\n\n function handleDebounceFn(e: ChangeEvent<HTMLInputElement>) {\n if (e.target.value.length > 0) {\n setSelectedChatType('')\n }\n\n if (e.target.value.length === 0) {\n setSelectedChatType('personal')\n }\n\n setQueryText(e.target.value)\n }\n\n const debounceFn = useDebounce(handleDebounceFn, 500)\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n debounceFn(e)\n }\n\n const handleSearchToggleClick = () => {\n setShowSearchBar(!showSearchBar)\n }\n\n return (\n <div className=\"flex flex-col justify-between h-full\">\n <div className=\"mb-4\">\n <div className=\"flex items-center justify-between mb-4\">\n {showSearchBar ? (\n <input\n ref={inputRef}\n className=\"flex-1 h-full placeholder:text-gray-400 placeholder:text-base placeholder:font-normal bg-transparent focus:outline-none heading-text font-bold\"\n placeholder=\"Search chat\"\n onChange={handleInputChange}\n />\n ) : (\n <h4>Chat</h4>\n )}\n <button\n className=\"close-button text-lg\"\n type=\"button\"\n onClick={handleSearchToggleClick}\n >\n {showSearchBar ? <TbX /> : <TbSearch />}\n </button>\n </div>\n <ChatSegment />\n </div>\n <ScrollBar className=\"h-[calc(100%-150px)] overflow-y-auto\">\n <div className=\"flex flex-col gap-2 h-full\">\n {chats\n .filter((item) => {\n if (queryText) {\n return item.name\n .toLowerCase()\n .includes(queryText)\n }\n\n return selectedChatType === item.chatType\n })\n .map((item) => (\n <div\n key={item.id}\n className={classNames(\n 'py-3 px-2 flex items-center gap-2 justify-between rounded-xl hover:bg-gray-100 dark:hover:bg-gray-700 relative cursor-pointer select-none',\n selectedChat.id === item.id &&\n 'bg-gray-100 dark:bg-gray-700',\n )}\n role=\"button\"\n onClick={() =>\n handleChatClick({\n id: item.id,\n user: {\n id: item.userId || item.groupId,\n avatarImageUrl: item.avatar,\n name: item.name,\n },\n muted: item.muted,\n chatType: item.chatType,\n unread: item.unread,\n })\n }\n >\n <div className=\"flex items-center gap-2 min-w-0 flex-1\">\n <div>\n <Avatar src={item.avatar} />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex justify-between\">\n <div className=\"font-bold heading-text truncate flex gap-2 items-center\">\n <span>{item.name}</span>\n {item.muted && (\n <TbVolumeOff className=\"opacity-60\" />\n )}\n </div>\n </div>\n <div className=\"truncate\">\n {item.lastConversation}\n </div>\n </div>\n </div>\n <div className=\"flex gap-1 items-center\">\n <small className=\"font-semibold\">\n {dayjs\n .unix(item.time)\n .format('hh:mm A')}\n </small>\n {item.unread > 0 && (\n <Badge className=\"bg-primary\" />\n )}\n </div>\n </div>\n ))}\n </div>\n </ScrollBar>\n <NewChat />\n </div>\n )\n}\n\nexport default ChatList\n"],"names":["ChatList","chats","useChatStore","state","chatsFetched","selectedChat","setSelectedChat","setMobileSidebar","selectedChatType","setSelectedChatType","setChatRead","inputRef","useRef","showSearchBar","setShowSearchBar","useState","queryText","setQueryText","fetchChats","useChat","useEffect","_a","_b","handleChatClick","id","user","muted","chatType","unread","handleDebounceFn","debounceFn","useDebounce","jsxs","jsx","TbX","TbSearch","ChatSegment","ScrollBar","item","classNames","Avatar","TbVolumeOff","dayjs","Badge","NewChat"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChatList.js","sources":["../../../../../../../lib/@ecme/views/concepts/chat/Chat/components/ChatList.tsx"],"sourcesContent":["import { useRef, useState, useEffect } from 'react'\nimport Avatar from '@/components/ui/Avatar'\nimport Badge from '@/components/ui/Badge'\nimport ScrollBar from '@/components/ui/ScrollBar'\nimport ChatSegment from './ChatSegment'\nimport NewChat from './NewChat'\nimport { useChatStore } from '../store/chatStore'\nimport useChat from '../hooks/useChat'\nimport classNames from '@/utils/classNames'\nimport useDebounce from '@/utils/hooks/useDebounce'\nimport { TbVolumeOff, TbSearch, TbX } from 'react-icons/tb'\nimport dayjs from 'dayjs'\nimport type { ChatType } from '../types'\nimport type { ChangeEvent } from 'react'\n\nconst ChatList = () => {\n const chats = useChatStore((state) => state.chats)\n const chatsFetched = useChatStore((state) => state.chatsFetched)\n const selectedChat = useChatStore((state) => state.selectedChat)\n const setSelectedChat = useChatStore((state) => state.setSelectedChat)\n const setMobileSidebar = useChatStore((state) => state.setMobileSidebar)\n const selectedChatType = useChatStore((state) => state.selectedChatType)\n const setSelectedChatType = useChatStore(\n (state) => state.setSelectedChatType,\n )\n const setChatRead = useChatStore((state) => state.setChatRead)\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const [showSearchBar, setShowSearchBar] = useState(false)\n const [queryText, setQueryText] = useState('')\n\n const { fetchChats } = useChat()\n\n useEffect(() => {\n if (!chatsFetched) {\n fetchChats()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n useEffect(() => {\n if (showSearchBar) {\n inputRef.current?.focus()\n } else {\n inputRef.current?.blur()\n }\n }, [showSearchBar])\n\n const handleChatClick = ({\n id,\n user,\n muted,\n chatType,\n unread,\n }: {\n id: string\n user: { id: string; avatarImageUrl: string; name: string }\n muted: boolean\n chatType: ChatType\n unread: number\n }) => {\n if (unread > 0) {\n setChatRead(id)\n }\n\n setSelectedChat({\n id,\n user,\n muted,\n chatType,\n })\n setMobileSidebar(false)\n }\n\n function handleDebounceFn(e: ChangeEvent<HTMLInputElement>) {\n if (e.target.value.length > 0) {\n setSelectedChatType('')\n }\n\n if (e.target.value.length === 0) {\n setSelectedChatType('personal')\n }\n\n setQueryText(e.target.value)\n }\n\n const debounceFn = useDebounce(handleDebounceFn, 500)\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n debounceFn(e)\n }\n\n const handleSearchToggleClick = () => {\n setShowSearchBar(!showSearchBar)\n }\n\n return (\n <div className=\"flex flex-col justify-between h-full\">\n <div className=\"mb-4\">\n <div className=\"flex items-center justify-between mb-4\">\n {showSearchBar ? (\n <input\n ref={inputRef}\n className=\"flex-1 h-full placeholder:text-gray-400 placeholder:text-base placeholder:font-normal bg-transparent focus:outline-none heading-text font-bold\"\n placeholder=\"Search chat\"\n onChange={handleInputChange}\n />\n ) : (\n <h4>Chat</h4>\n )}\n <button\n className=\"close-button text-lg\"\n type=\"button\"\n onClick={handleSearchToggleClick}\n >\n {showSearchBar ? <TbX /> : <TbSearch />}\n </button>\n </div>\n <ChatSegment />\n </div>\n <ScrollBar className=\"h-[calc(100%-150px)] overflow-y-auto\">\n <div className=\"flex flex-col gap-2 h-full\">\n {chats\n .filter((item) => {\n if (queryText) {\n return item.name\n .toLowerCase()\n .includes(queryText)\n }\n\n return selectedChatType === item.chatType\n })\n .map((item) => (\n <div\n key={item.id}\n className={classNames(\n 'py-3 px-2 flex items-center gap-2 justify-between rounded-xl hover:bg-gray-100 dark:hover:bg-gray-700 relative cursor-pointer select-none',\n selectedChat.id === item.id &&\n 'bg-gray-100 dark:bg-gray-700',\n )}\n role=\"button\"\n onClick={() =>\n handleChatClick({\n id: item.id,\n user: {\n id: item.userId || item.groupId,\n avatarImageUrl: item.avatar,\n name: item.name,\n },\n muted: item.muted,\n chatType: item.chatType,\n unread: item.unread,\n })\n }\n >\n <div className=\"flex items-center gap-2 min-w-0 flex-1\">\n <div>\n <Avatar src={item.avatar} />\n </div>\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex justify-between\">\n <div className=\"font-bold heading-text truncate flex gap-2 items-center\">\n <span>{item.name}</span>\n {item.muted && (\n <TbVolumeOff className=\"opacity-60\" />\n )}\n </div>\n </div>\n <div className=\"truncate\">\n {item.lastConversation}\n </div>\n </div>\n </div>\n <div className=\"flex gap-1 items-center\">\n <small className=\"font-semibold\">\n {dayjs\n .unix(item.time)\n .format('hh:mm A')}\n </small>\n {item.unread > 0 && (\n <Badge className=\"bg-primary\" />\n )}\n </div>\n </div>\n ))}\n </div>\n </ScrollBar>\n <NewChat />\n </div>\n )\n}\n\nexport default ChatList\n"],"names":["ChatList","chats","useChatStore","state","chatsFetched","selectedChat","setSelectedChat","setMobileSidebar","selectedChatType","setSelectedChatType","setChatRead","inputRef","useRef","showSearchBar","setShowSearchBar","useState","queryText","setQueryText","fetchChats","useChat","useEffect","handleChatClick","id","user","muted","chatType","unread","handleDebounceFn","debounceFn","useDebounce","jsxs","jsx","TbX","TbSearch","ChatSegment","ScrollBar","item","classNames","Avatar","TbVolumeOff","dayjs","Badge","NewChat"],"mappings":"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"}
|