@fernir2/saas-kit-cli 0.1.4 → 0.1.6
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/package.json +211 -7
- package/cli/.gitlab-ci.yml +0 -14
- package/cli/.husky/commit-msg +0 -1
- package/cli/.husky/pre-commit +0 -1
- package/cli/README.md +0 -101
- package/cli/bin/index.ts +0 -358
- package/cli/drizzle.config.ts +0 -12
- package/cli/global-setup.ts +0 -25
- package/cli/npm-commands/gen-meta/index.ts +0 -3
- package/cli/npm-commands/gen-schema/index.ts +0 -5
- package/cli/npm-commands/migrate-db/index.ts +0 -5
- package/cli/npm-commands/migrate-db/migrate-db.ts +0 -15
- package/cli/npm-commands/seed-db/index.ts +0 -5
- package/cli/npm-commands/seed-db/seed-db.ts +0 -15
- package/cli/playwright.config.ts +0 -34
- package/cli/postcss.config.mjs +0 -9
- package/cli/server.ts +0 -41
- package/cli/src/app/api/v1/[resourceName]/[id]/route.ts/route.ts +0 -11
- package/cli/src/app/api/v1/[resourceName]/route.ts/route.ts +0 -14
- package/cli/src/app/api/v1/[resourceName]/upsert/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/log/route.ts/route.ts +0 -7
- package/cli/src/app/api/v1/otheruser/[id]/route.ts/route.ts +0 -14
- package/cli/src/app/api/v1/otheruser/route.ts/route.ts +0 -7
- package/cli/src/app/api/v1/password/forgotpassword/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/password/resetpassword/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/payment/method/route.ts/route.ts +0 -4
- package/cli/src/app/api/v1/payment/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/payment/verify-fail/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/payment/verify-success/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/preload/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/searchable-resources/route.ts/route.ts +0 -11
- package/cli/src/app/api/v1/searchresult/route.ts/route.ts +0 -35
- package/cli/src/app/api/v1/sign-in/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/sign-out/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/sign-up/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/subscription/cancel/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/subscription/create/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/subscription/update/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/uimeta/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/uimetas/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/userpermission/route.ts/route.ts +0 -3
- package/cli/src/app/api/v1/visible-workspace/route.ts/route.ts +0 -5
- package/cli/src/app/api/v1/workspace/change/route.ts/route.ts +0 -5
- package/cli/src/app/favicon.ico +0 -0
- package/cli/src/app/layout.tsx +0 -42
- package/cli/src/app/page.tsx +0 -9
- package/cli/tailwind.config.ts +0 -13
- package/packages/base-repo/tools/git/commit-msg-script.ts +0 -42
- package/packages/base-repo/tools/git/pre-commit-script.ts +0 -431
- package/packages/level2/client/components/error-fallback/FdErrorFallback.jsx +0 -14
- package/packages/level2/client/components/feed/FdFeed.funcs.jsx +0 -65
- package/packages/level2/client/components/feed/FdFeed.jsx +0 -34
- package/packages/level2/client/components/feed/FdFeedActions.jsx +0 -15
- package/packages/level2/client/components/feed/FdFeedComments.jsx +0 -6
- package/packages/level2/client/components/feed/FdFeedEntry.jsx +0 -36
- package/packages/level2/client/components/feed/FdFeedHeader.jsx +0 -23
- package/packages/level2/client/components/feed/FdFeedReactionsSummary.jsx +0 -16
- package/packages/level2/client/components/providers/FdProviders.jsx +0 -28
- package/packages/level2/client/components/subscription-plan/FdSubscriptionPlan.jsx +0 -163
- package/packages/level2/client/components/wizard/FdWizard.jsx +0 -45
- package/packages/level2/client/components/wizard/FdWizardStepper.jsx +0 -55
- package/packages/level2/client/pages/dashboard-page/DashbordPage.jsx +0 -46
- package/packages/level2/client/pages/dynamic-layout-page/DynamicLayoutPage.jsx +0 -22
- package/packages/level2/client/pages/edit-password-page/EditPasswordPage.jsx +0 -8
- package/packages/level2/client/pages/edit-user-by-id-page/EditUserByIdPage.jsx +0 -14
- package/packages/level2/client/pages/edit-user-page/EditUserPage.jsx +0 -6
- package/packages/level2/client/pages/feed-page/FeedPage.jsx +0 -8
- package/packages/level2/client/pages/file-upload-page/FileUploadPage.jsx +0 -7
- package/packages/level2/client/pages/forgot-password-page/ForgotPasswordPage.jsx +0 -8
- package/packages/level2/client/pages/leads-viw-page/LeadsViewPage.jsx +0 -6
- package/packages/level2/client/pages/microsoft-page/MicrosoftPage.jsx +0 -16
- package/packages/level2/client/pages/payment-plan-page/PaymentPlanPage.jsx +0 -18
- package/packages/level2/client/pages/preload-page/PreloadPage.jsx +0 -25
- package/packages/level2/client/pages/reset-password-page/ResetPasswordPage.jsx +0 -8
- package/packages/level2/client/pages/screenshot-page/TestScreenshotPage.jsx +0 -23
- package/packages/level2/client/pages/sign-in-page/SignInPage.jsx +0 -24
- package/packages/level2/client/pages/sign-up-page/SignUpPage.jsx +0 -9
- package/packages/level2/client/pages/status-board-page/StatusBoardPage.jsx +0 -6
- package/packages/level2/client/pages/test-layout/TestLayout.jsx +0 -11
- package/packages/level2/client/pages/test-page/TestPage.jsx +0 -12
- package/packages/level2/client/pages/user-list-page/UserListPage.jsx +0 -4
- package/packages/level2/client/pages/view-page/ViewPage.jsx +0 -21
- package/packages/level2/client/payments/change-payment-method-field/ChangePaymentMethodField.jsx +0 -48
- package/packages/level2/client/payments/checkout-form/CheckoutForm.jsx +0 -95
- package/packages/level2/client/payments/checkout-form/CheckoutFormSubmit.jsx +0 -11
- package/packages/level2/client/payments/checkout-form/checkout-form-fields.jsx +0 -68
- package/packages/level2/client/website-scan/FdWebsiteScanResult.funcs.jsx +0 -12
- package/packages/level2/client/website-scan/FdWebsiteScanResult.jsx +0 -33
- package/packages/level2/client/website-scan/website-scan-data.jsx +0 -28
- package/packages/level2/client/website-scan/website-scan-icons/FacebookIcon.jsx +0 -6
- package/packages/level2/client/website-scan/website-scan-icons/FacebookPixelIcon.jsx +0 -49
- package/packages/level2/client/website-scan/website-scan-icons/GoogleAnalyticsIcon.jsx +0 -7
- package/packages/level2/client/website-scan/website-scan-icons/InstagramIcon.jsx +0 -32
- package/packages/level2/client/website-scan/website-scan-icons/LinkedinIcon.jsx +0 -6
- package/packages/level2/client/website-scan/website-scan-icons/OtherPlatformIcon.jsx +0 -110
- package/packages/level2/client/website-scan/website-scan-icons/ShopifyIcon.jsx +0 -46
- package/packages/level2/client/website-scan/website-scan-icons/SquarespaceIcon.jsx +0 -57
- package/packages/level2/client/website-scan/website-scan-icons/TiktokIcon.jsx +0 -15
- package/packages/level2/client/website-scan/website-scan-icons/WixIcon.jsx +0 -62
- package/packages/level2/client/website-scan/website-scan-icons/WordpressIcon.jsx +0 -53
- package/packages/level2/client/website-scan/website-scan-icons/XIcon.jsx +0 -6
- package/packages/level2/fd-app-toolbox/edit-other-user/EditOtherUser.jsx +0 -7
- package/packages/level2/fd-app-toolbox/edit-password-form/EditPasswordForm.jsx +0 -68
- package/packages/level2/fd-app-toolbox/edit-user-form/EditUserForm.jsx +0 -122
- package/packages/level2/fd-app-toolbox/edit-user-sheet/EditUserSheet.jsx +0 -35
- package/packages/level2/fd-app-toolbox/forgot-password-form/ForgotPasswordForm.jsx +0 -87
- package/packages/level2/fd-app-toolbox/layout/client-layout/ClientLayout.jsx +0 -19
- package/packages/level2/fd-app-toolbox/layout/client-root/ClientRoot.jsx +0 -32
- package/packages/level2/fd-app-toolbox/layout/hamburger-menu/FdHamburgerMenu.jsx +0 -47
- package/packages/level2/fd-app-toolbox/layout/navbar/FdNarrowNavbar.jsx +0 -40
- package/packages/level2/fd-app-toolbox/layout/sidebar/FdSidebar.jsx +0 -48
- package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-dropdown-menu/FdDropdownMenuItemTitle.jsx +0 -12
- package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-dropdown-menu/FdSidebarDropdownMenu.jsx +0 -81
- package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-resources-provider.jsx +0 -30
- package/packages/level2/fd-app-toolbox/layout/toolbar/FdToolbar.jsx +0 -89
- package/packages/level2/fd-app-toolbox/layout/toolbar/FdTopNav.jsx +0 -42
- package/packages/level2/fd-app-toolbox/layout/toolbar/title-provider/ToolbarTitleProvider.jsx +0 -10
- package/packages/level2/fd-app-toolbox/login-form/LoginForm.jsx +0 -165
- package/packages/level2/fd-app-toolbox/menu/notifications-menu/FdNotificationMenu.jsx +0 -43
- package/packages/level2/fd-app-toolbox/menu/notifications-menu/notification-list/FdNotificationList.jsx +0 -53
- package/packages/level2/fd-app-toolbox/menu/top-menu/FdTopMenu.jsx +0 -28
- package/packages/level2/fd-app-toolbox/menu/top-menu/top-menu-group/FdTopMenuGroup.jsx +0 -35
- package/packages/level2/fd-app-toolbox/menu/top-menu/top-menu-item/FdTopMenuItem.jsx +0 -47
- package/packages/level2/fd-app-toolbox/menu/user-dropdown-menu/FdUserDropdownMenu.jsx +0 -122
- package/packages/level2/fd-app-toolbox/menu/user-dropdown-menu/user-dropdown-menu-item/FdUserDropdownMenuItem.jsx +0 -56
- package/packages/level2/fd-app-toolbox/menu/visible-workspace-picker/FdVisibleWorkspacePicker.jsx +0 -36
- package/packages/level2/fd-app-toolbox/menu/workspace-picker/FdWorkspacePicker.jsx +0 -47
- package/packages/level2/fd-app-toolbox/providers/ThemeProvider/ThemeProvider.jsx +0 -27
- package/packages/level2/fd-app-toolbox/providers/auth-provider/AuthProvider.jsx +0 -38
- package/packages/level2/fd-app-toolbox/providers/sidebar-provider/FdSidebarContext.jsx +0 -17
- package/packages/level2/fd-app-toolbox/register-form/RegisterForm.jsx +0 -119
- package/packages/level2/fd-app-toolbox/report/FdChart.jsx +0 -120
- package/packages/level2/fd-app-toolbox/report/ReportChart.jsx +0 -29
- package/packages/level2/fd-app-toolbox/reset-password-form/ResetPasswordForm.jsx +0 -81
- package/packages/level2/fd-app-toolbox/search/FdSearch.jsx +0 -56
- package/packages/level2/fd-app-toolbox/search/search-dialog/FdSearchDialog.jsx +0 -72
- package/packages/level2/fd-app-toolbox/search/search-dialog-provider.jsx +0 -16
- package/packages/level2/fd-app-toolbox/search/search-input/FdSearchInput.jsx +0 -49
- package/packages/level2/fd-app-toolbox/search/search-resource-results/FdSearchResourcesResults.jsx +0 -36
- package/packages/level2/fd-app-toolbox/search/search-result/FdSearchResult.jsx +0 -46
- package/packages/level2/fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResult.jsx +0 -43
- package/packages/level2/fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResults.jsx +0 -22
- package/packages/level2/fd-app-toolbox/server/layout/private-layout/PrivateLayout.jsx +0 -32
- package/packages/level2/fd-app-toolbox/status-board/FdStatusBoard.jsx +0 -49
- package/packages/level2/fd-app-toolbox/status-board/status-board-item/FdStatusBoardItem.jsx +0 -17
- package/packages/level2/fd-app-toolbox/status-board/status-board-status/FdStatusBoardStatus.jsx +0 -27
- package/packages/level2/fd-app-toolbox/user-list/UserList.jsx +0 -58
- package/packages/level2/fd-component-toolbox/animation/FdLabelAnimation.jsx +0 -55
- package/packages/level2/fd-component-toolbox/avatar/FdAvatar.jsx +0 -50
- package/packages/level2/fd-component-toolbox/back-button/FdBackButton.jsx +0 -21
- package/packages/level2/fd-component-toolbox/badge/FdBadge.jsx +0 -19
- package/packages/level2/fd-component-toolbox/badge-toggle-list/FdBadgeToggleList.jsx +0 -47
- package/packages/level2/fd-component-toolbox/button/FdButton.jsx +0 -64
- package/packages/level2/fd-component-toolbox/calendar/FdCalendar.jsx +0 -68
- package/packages/level2/fd-component-toolbox/card/FdCard.jsx +0 -56
- package/packages/level2/fd-component-toolbox/card/FdCardBigDigits.jsx +0 -25
- package/packages/level2/fd-component-toolbox/chart/FdChart.jsx +0 -269
- package/packages/level2/fd-component-toolbox/checkbox/FdCheckbox.jsx +0 -39
- package/packages/level2/fd-component-toolbox/command/FdCommand.jsx +0 -123
- package/packages/level2/fd-component-toolbox/datepicker/FdDatePicker.jsx +0 -155
- package/packages/level2/fd-component-toolbox/dialog/FdDialog.jsx +0 -106
- package/packages/level2/fd-component-toolbox/dialog/YesOrNoDialog.jsx +0 -57
- package/packages/level2/fd-component-toolbox/drag-and-drop/FdDragDropContext.jsx +0 -19
- package/packages/level2/fd-component-toolbox/drag-and-drop/FdDraggable.jsx +0 -27
- package/packages/level2/fd-component-toolbox/drag-and-drop/FdDroppable.jsx +0 -22
- package/packages/level2/fd-component-toolbox/dropdown-menu/FdDropdownMenu.jsx +0 -198
- package/packages/level2/fd-component-toolbox/dynamic-layout/FdDynamicComponent.jsx +0 -27
- package/packages/level2/fd-component-toolbox/dynamic-layout/FdDynamicLayoutDragAndDrop.jsx +0 -78
- package/packages/level2/fd-component-toolbox/fade-out-text/FdFadeOutText.jsx +0 -52
- package/packages/level2/fd-component-toolbox/form/FdForm.jsx +0 -146
- package/packages/level2/fd-component-toolbox/icon/FdIcon.jsx +0 -192
- package/packages/level2/fd-component-toolbox/icon/custom-icons/FdFilterIcon.jsx +0 -11
- package/packages/level2/fd-component-toolbox/image/FdImage.jsx +0 -15
- package/packages/level2/fd-component-toolbox/input/FdInput.jsx +0 -94
- package/packages/level2/fd-component-toolbox/label/FdLabel.jsx +0 -19
- package/packages/level2/fd-component-toolbox/link/FdLink.jsx +0 -23
- package/packages/level2/fd-component-toolbox/list/FdList.jsx +0 -20
- package/packages/level2/fd-component-toolbox/list/list-item/FdListItem.jsx +0 -46
- package/packages/level2/fd-component-toolbox/loading/FdLoadingIndicator.jsx +0 -7
- package/packages/level2/fd-component-toolbox/logos/FacebookLogo.jsx +0 -11
- package/packages/level2/fd-component-toolbox/logos/GoogleLogo.jsx +0 -12
- package/packages/level2/fd-component-toolbox/logos/MicrosoftLogo.jsx +0 -11
- package/packages/level2/fd-component-toolbox/markdown/FdMarkdown.jsx +0 -105
- package/packages/level2/fd-component-toolbox/markdown/markdown-parser.jsx +0 -72
- package/packages/level2/fd-component-toolbox/multiselect/FdMultiselect.jsx +0 -240
- package/packages/level2/fd-component-toolbox/navigation/FdNavigation.jsx +0 -43
- package/packages/level2/fd-component-toolbox/navigation/navigation-item/FdNavigationItem.jsx +0 -23
- package/packages/level2/fd-component-toolbox/radio-group/FdRadioGroup.jsx +0 -46
- package/packages/level2/fd-component-toolbox/rich-text/FdRichText.jsx +0 -58
- package/packages/level2/fd-component-toolbox/save-status/FdSaveStatus.jsx +0 -40
- package/packages/level2/fd-component-toolbox/select/FdSelect.jsx +0 -173
- package/packages/level2/fd-component-toolbox/separator/FdSeparator.jsx +0 -19
- package/packages/level2/fd-component-toolbox/sheet/FdSheet.jsx +0 -121
- package/packages/level2/fd-component-toolbox/slide-toggle/FdSlideToggle.jsx +0 -57
- package/packages/level2/fd-component-toolbox/spinner/Spinner.jsx +0 -36
- package/packages/level2/fd-component-toolbox/subheading/FdSubHeading.jsx +0 -12
- package/packages/level2/fd-component-toolbox/switch/FdSwitch.jsx +0 -55
- package/packages/level2/fd-component-toolbox/tabs/FdTabs.jsx +0 -53
- package/packages/level2/fd-component-toolbox/textarea/FdTextArea.jsx +0 -42
- package/packages/level2/fd-component-toolbox/toaster/FdToaster.jsx +0 -20
- package/packages/level2/fd-component-toolbox/tooltip/FdTooltip.jsx +0 -80
- package/packages/level2/meta/browsers/base-multi-browser/FdBaseMultiBrowser.jsx +0 -72
- package/packages/level2/meta/browsers/base-multi-browser/base-multi-browser-dialog/FdBaseMultiBrowserDialog.jsx +0 -159
- package/packages/level2/meta/browsers/browser/FdBrowser.jsx +0 -58
- package/packages/level2/meta/browsers/browser/browser-dialog/FdBrowserDialog.jsx +0 -89
- package/packages/level2/meta/browsers/many-to-many-browser/FdManyToManyBrowser.jsx +0 -33
- package/packages/level2/meta/browsers/multi-browser/FdMultiBrowser.jsx +0 -32
- package/packages/level2/meta/card-list/FdCardList.jsx +0 -40
- package/packages/level2/meta/card-list/card/FdCard.jsx +0 -44
- package/packages/level2/meta/card-list/card/action-block/FdCardActionBlock.jsx +0 -70
- package/packages/level2/meta/card-list/card/content-block/FdCardContentBlock.jsx +0 -64
- package/packages/level2/meta/card-list/card/image-block/FdCardImage.jsx +0 -10
- package/packages/level2/meta/client/framework/hooks.jsx +0 -39
- package/packages/level2/meta/comment/FdComment.jsx +0 -16
- package/packages/level2/meta/comment/FdCommentList.jsx +0 -32
- package/packages/level2/meta/components/edit-image/FdEditImage.jsx +0 -42
- package/packages/level2/meta/components/edit-image/FdEditImageActionMenu.jsx +0 -31
- package/packages/level2/meta/components/edit-image/FdEditImageDropdownMenu.jsx +0 -42
- package/packages/level2/meta/components/file-upload/FileUpload.jsx +0 -103
- package/packages/level2/meta/components/file-upload/PreviewMedia.jsx +0 -36
- package/packages/level2/meta/components/multi-list/FdMultiList.jsx +0 -65
- package/packages/level2/meta/components/multi-list/FdMultiListEditResource.jsx +0 -31
- package/packages/level2/meta/edit-resource/FdEditResource.jsx +0 -135
- package/packages/level2/meta/edit-resource/FdEditResourceFormBody.jsx +0 -8
- package/packages/level2/meta/edit-resource/FdEditResourceHeader.jsx +0 -43
- package/packages/level2/meta/edit-resource/FdEditResourceSheet.jsx +0 -70
- package/packages/level2/meta/edit-resource/SaveCompleteProvider.jsx +0 -16
- package/packages/level2/meta/edit-resource/edit-link/FdEditLink.jsx +0 -48
- package/packages/level2/meta/edit-resource/edit-link/FdEditLinkResource.jsx +0 -18
- package/packages/level2/meta/edit-resource/edit-resource-dialog/FdEditResourceDialog.jsx +0 -34
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceBlobField.jsx +0 -15
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceEnumField.jsx +0 -35
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceFlagsEnumField.jsx +0 -23
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceImageField.jsx +0 -7
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourcePropertyBlock.jsx +0 -38
- package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceRichTextField.jsx +0 -16
- package/packages/level2/meta/edit-resource/edit-resource-property-block/edit-resource-fields.jsx +0 -53
- package/packages/level2/meta/edit-resource/edit-resource-property-field/FdEditResourcePropertyField.jsx +0 -105
- package/packages/level2/meta/filtering/filter/FdEnumFlagFilter.jsx +0 -40
- package/packages/level2/meta/filtering/filter/FdFilter.jsx +0 -123
- package/packages/level2/meta/filtering/filter/filters/BooleanFilter.jsx +0 -25
- package/packages/level2/meta/filtering/filter/filters/DateFilter.jsx +0 -10
- package/packages/level2/meta/filtering/filter/filters/EnumFilter.jsx +0 -44
- package/packages/level2/meta/filtering/filter/filters/GuidFilter.jsx +0 -28
- package/packages/level2/meta/filtering/filter/filters/IntegerFilter.jsx +0 -28
- package/packages/level2/meta/filtering/filter/filters/TextFilter.jsx +0 -11
- package/packages/level2/meta/filtering/resource-filter-list/FdResourceFilterList.jsx +0 -120
- package/packages/level2/meta/filtering/resource-filter-list/resource-list-dropdown-menu/ResourceListDropdownMenu.funcs.jsx +0 -4
- package/packages/level2/meta/filtering/resource-filter-list/resource-list-dropdown-menu/ResourceListDropdownMenu.jsx +0 -43
- package/packages/level2/meta/providers/global-provider/FdGlobalContext.jsx +0 -17
- package/packages/level2/meta/resource-list/ResourceList.jsx +0 -63
- package/packages/level2/meta/resource-list/resource-add-button.jsx +0 -11
- package/packages/level2/meta/resource-list/resource-list-card/FdResourceListCard.jsx +0 -7
- package/packages/level2/meta/resource-list/resource-list-filter/FdResourceListFilter.jsx +0 -11
- package/packages/level2/meta/resource-list/resource-table-list/FdResourceTableList.jsx +0 -14
- package/packages/level2/meta/table/FdTable.jsx +0 -147
- package/packages/level2/meta/table/body/FdTableBody.jsx +0 -9
- package/packages/level2/meta/table/body-cell/FdActionBodyCell.jsx +0 -145
- package/packages/level2/meta/table/body-cell/FdBlobBodyCell.jsx +0 -27
- package/packages/level2/meta/table/body-cell/FdBodyCell.jsx +0 -133
- package/packages/level2/meta/table/body-cell/FdBodyCellValue.jsx +0 -59
- package/packages/level2/meta/table/body-cell/FdBodyExpandCell.jsx +0 -6
- package/packages/level2/meta/table/body-cell/FdBodyExpandPropertyCell.jsx +0 -22
- package/packages/level2/meta/table/body-cell/FdCustomActionLink.jsx +0 -16
- package/packages/level2/meta/table/body-cell/FdMultiselectCellTemplate.jsx +0 -39
- package/packages/level2/meta/table/body-cell/FdViewCell.jsx +0 -12
- package/packages/level2/meta/table/body-row/FdTableBodyRow.jsx +0 -49
- package/packages/level2/meta/table/header/FdTableHeader.jsx +0 -54
- package/packages/level2/meta/table/header-cell/FdResizable.jsx +0 -18
- package/packages/level2/meta/table/header-cell/FdResizableEdgeHandle.jsx +0 -4
- package/packages/level2/meta/table/header-cell/FdTableHeaderActionCell.jsx +0 -49
- package/packages/level2/meta/table/header-cell/FdTableHeaderCell.jsx +0 -89
- package/packages/level2/meta/table/header-cell/FdTableHeaderCellActionButton.jsx +0 -23
- package/packages/level2/meta/table/pager/FdPager.jsx +0 -72
- package/packages/level2/meta/table/table-custom-action/TableCustomAction.jsx +0 -26
- package/packages/level2/meta/view/FdView.jsx +0 -31
- package/packages/level2/meta/view/FdViewSheet.jsx +0 -103
- package/packages/level2/meta/view/view-resource/FdViewResource.jsx +0 -108
- package/packages/level2/meta/view/view-resource/templates/ManyToOneTableHeaderCellTemplate.jsx +0 -13
- package/src/app/error.jsx +0 -5
- package/src/app/global-error.jsx +0 -5
- package/src/app/loading.jsx +0 -11
- package/src/hd/footer/HdFooter.jsx +0 -27
- package/src/hd/footer/hd-footer-item/HdFooterItem.jsx +0 -14
- package/src/lm/ai-scan/AiScanAction.jsx +0 -21
- package/src/lm/ai-scan/cell-templates/AiScanWebsiteResultCellTemplate.jsx +0 -31
- package/src/lm/components/LmCardReport.jsx +0 -12
- package/src/lm/configs/lm-list-configs.jsx +0 -72
- package/src/lm/google-place/action-dropdown/GooglePlaceActionDropdown.jsx +0 -42
- package/src/lm/google-place/actions/GooglePlaceSaveToGroupAction.jsx +0 -22
- package/src/lm/google-place/cell-templates/GooglePlaceBusinessInfoCellTemplate.jsx +0 -59
- package/src/lm/google-place/cell-templates/GooglePlaceEmailsCellTemplate.jsx +0 -34
- package/src/lm/google-place/cell-templates/GooglePlaceScanAction.jsx +0 -15
- package/src/lm/lead/action-dropdown/LeadActionDropdown.jsx +0 -39
- package/src/lm/lead/actions/move-to-group-action/LeadMoveToGroupAction.jsx +0 -28
- package/src/lm/lead/cell-templates/LeadBusinessInfoCellTemplate.jsx +0 -64
- package/src/lm/lead/cell-templates/LeadScanAction.jsx +0 -15
- package/src/lm/lead/lead-google-place/LeadGooglePlaceIndicator.jsx +0 -8
- package/src/lm/lead/lead-google-place/LeadGooglePlaceIndicators.jsx +0 -17
- package/src/lm/lead/lead-google-place/LeadGooglePlaceInfo.jsx +0 -15
- package/src/lm/lead/view/LeadsView.jsx +0 -8
- package/src/lm/pages/HomePage.jsx +0 -53
- package/types-output/tsconfig.tsbuildinfo +0 -1
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { fetchUiResourceMeta } from "@meta/ui-meta-providers";
|
|
2
|
-
import { useState } from "react";
|
|
3
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
4
|
-
import { FdEditResource } from "@meta/edit-resource/FdEditResource";
|
|
5
|
-
import { useGlobalConfig } from "@meta/providers/global-provider/FdGlobalContext";
|
|
6
|
-
import { getMultiListEditResourceConfig } from "@meta/components/multi-list/FdMultiListEditResource.funcs";
|
|
7
|
-
/**
|
|
8
|
-
* Component for displaying and editing a single resource as part of a multi-list display
|
|
9
|
-
*
|
|
10
|
-
* @param FdMultiListEditResourceProps {@link FdMultiListEditResourceProps}
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```tsx
|
|
14
|
-
* <FdMultiListEditResource multiListItem={{...}} />
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
export default function FdMultiListEditResource({ multiListItem, onSavingStarting, onSavingEnding, }) {
|
|
18
|
-
const [uiResourceMeta, setUiResourceMeta] = useState();
|
|
19
|
-
const config = useGlobalConfig();
|
|
20
|
-
const multiListEditResourceConfig = getMultiListEditResourceConfig(multiListItem.resourceName, config.globalConfig);
|
|
21
|
-
useAsyncEffect(async () => {
|
|
22
|
-
if (multiListItem.filters[0].rightSide) {
|
|
23
|
-
setUiResourceMeta(await fetchUiResourceMeta(multiListItem.resourceName));
|
|
24
|
-
}
|
|
25
|
-
}, []);
|
|
26
|
-
return (<div id={multiListItem.resourceId || ""}>
|
|
27
|
-
{uiResourceMeta ? (<div className="w-[calc(100%-1rem)] px-4">
|
|
28
|
-
<FdEditResource uiResourceMeta={uiResourceMeta} resourceId={multiListItem.resourceId} config={multiListEditResourceConfig} columns={2} isNew={false} onSavingStarting={onSavingStarting} onSavingEnding={onSavingEnding}/>
|
|
29
|
-
</div>) : ("")}
|
|
30
|
-
</div>);
|
|
31
|
-
}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
|
|
3
|
-
import { getEditResourceId, handleCancelImageEdit, handleResourceSave, handleSaveResourceOnChange, onConfigChange, withIndexerFilter, } from "@meta/edit-resource/FdEditResource.funcs";
|
|
4
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
5
|
-
import { FormProvider, useForm } from "react-hook-form";
|
|
6
|
-
import { deleteResource, shouldEditResourceShowCreateButton, shouldEditResourceShowDeleteButton, shouldEditResourceShowSaveCancelButtons, } from "@meta/edit-resource/services/edit-resources";
|
|
7
|
-
import { getEditResourceConfig } from "@meta/edit-resource/config/fd-edit-resource-configs";
|
|
8
|
-
import { isReadOnlyResource } from "@meta/resource-list/resource-list-checkers";
|
|
9
|
-
import { cn } from "@fd-toolbox/lib/utils";
|
|
10
|
-
import { elementSuffixes } from "@fd-toolbox/constants/element-suffixes";
|
|
11
|
-
import { FdEditResourceHeader } from "@meta/edit-resource/FdEditResourceHeader";
|
|
12
|
-
import { useSaveComplete } from "@meta/edit-resource/save-complete-context";
|
|
13
|
-
import { FdEditResourceFormBody } from "@meta/edit-resource/FdEditResourceFormBody";
|
|
14
|
-
import { getRequiredFields, onValidation } from "@meta/edit-resource/edit-resource-validation";
|
|
15
|
-
const instanceNumber = { value: 0 };
|
|
16
|
-
const FdEditResourceDisplayName = "FdEditResource";
|
|
17
|
-
/**
|
|
18
|
-
* Form component for creating or editing resources
|
|
19
|
-
*
|
|
20
|
-
* @see {@link FdEditResourceProps} for all available props
|
|
21
|
-
* @see {@link FdEditResourceComponent} for methods available via ref
|
|
22
|
-
* @see {@link EditResourceConfig} for customization options
|
|
23
|
-
*/
|
|
24
|
-
export function FdEditResource({ resourceId, onDeleteComplete, onCancelClick, onSaveClick, onSaveComplete, onLoadComplete, config: configProp, isNew: isNewProp, columns, onRefreshResource, uiResourceMeta, resource: resourceFromProp, relatedResourceId, relatedResourceName, setIsFormValid, onPropertyUpdateComplete, onSavingStarting, onSavingEnding, showSavingStatus, ref, }) {
|
|
25
|
-
const [showHiddenProperties, setShowHiddenProperties] = useState(false);
|
|
26
|
-
const [isNew, setIsNew] = useState(isNewProp ?? false);
|
|
27
|
-
const [loadComplete, setLoadComplete] = useState(false);
|
|
28
|
-
const [resource, setResource] = useState(resourceFromProp ?? { id: resourceId });
|
|
29
|
-
const [leftUiPropertyMetas, setLeftUiPropertyMetas] = useState({});
|
|
30
|
-
const [rightUiPropertyMetas, setRightUiPropertyMetas] = useState({});
|
|
31
|
-
const [leftCustomFields, setLeftCustomFields] = useState([]);
|
|
32
|
-
const [rightCustomFields, setRightCustomFields] = useState([]);
|
|
33
|
-
const [formFieldOptions, setFormFieldOptions] = useState({});
|
|
34
|
-
const [displayingColumns, setDisplayingColumns] = useState(columns ?? 1);
|
|
35
|
-
const [activeSaveOperations, setActiveSaveOperations] = useState(0);
|
|
36
|
-
const [hasSavedOnce, setHasSavedOnce] = useState(false);
|
|
37
|
-
const resourceName = uiResourceMeta.resourceMeta.resourceName;
|
|
38
|
-
const iconId = `${uiResourceMeta.resourceMeta.resourceName}${elementSuffixes.expandRelation}`;
|
|
39
|
-
const editResourceId = getEditResourceId(resourceName, resourceId);
|
|
40
|
-
const resourceRelations = useRef({});
|
|
41
|
-
const { notifySaveComplete } = useSaveComplete();
|
|
42
|
-
const config = useMemo(() => configProp ?? getEditResourceConfig(resourceName), [configProp, resourceName]);
|
|
43
|
-
const isReadOnly = useMemo(() => (uiResourceMeta.resourceMeta ? isReadOnlyResource(uiResourceMeta.resourceMeta) : true), [uiResourceMeta]);
|
|
44
|
-
const form = useForm({
|
|
45
|
-
mode: "onChange",
|
|
46
|
-
});
|
|
47
|
-
useEffect(() => {
|
|
48
|
-
if (relatedResourceName && !form.getValues(relatedResourceName)) {
|
|
49
|
-
form.setValue(relatedResourceName, relatedResourceId);
|
|
50
|
-
}
|
|
51
|
-
}, [form, relatedResourceId, relatedResourceName]);
|
|
52
|
-
useEffect(() => {
|
|
53
|
-
setIsFormValid?.(form.formState.isValid);
|
|
54
|
-
}, [form.formState.isValid, setIsFormValid]);
|
|
55
|
-
const setResourceRelation = (relations) => (resourceRelations.current = relations);
|
|
56
|
-
useAsyncEffect(async () => {
|
|
57
|
-
onConfigChange(resourceId, setIsNew, config, resource, setResource, setLoadComplete, leftUiPropertyMetas, rightUiPropertyMetas, setLeftUiPropertyMetas, setRightUiPropertyMetas, setFormFieldOptions, form.setValue, form.getValues, setDisplayingColumns, instanceNumber, uiResourceMeta, setResourceRelation, setLeftCustomFields, setRightCustomFields, onLoadComplete, columns ?? 1, resourceFromProp);
|
|
58
|
-
}, [config]);
|
|
59
|
-
const onToggleHiddenProperties = useCallback(() => {
|
|
60
|
-
setShowHiddenProperties(!showHiddenProperties);
|
|
61
|
-
}, [setShowHiddenProperties, showHiddenProperties]);
|
|
62
|
-
const onDeleteDialogResponse = useCallback(async (isYes) => {
|
|
63
|
-
if (isYes) {
|
|
64
|
-
await deleteResource(uiResourceMeta.resourceMeta.resourceName, resource);
|
|
65
|
-
onDeleteComplete?.();
|
|
66
|
-
}
|
|
67
|
-
}, [onDeleteComplete, resource, uiResourceMeta]);
|
|
68
|
-
const onCancel = useCallback(async () => {
|
|
69
|
-
handleCancelImageEdit(form, resource, onCancelClick);
|
|
70
|
-
}, [form, onCancelClick, resource]);
|
|
71
|
-
const isShowDeleteButton = useCallback(() => {
|
|
72
|
-
return shouldEditResourceShowDeleteButton(isNew, uiResourceMeta.resourceMeta);
|
|
73
|
-
}, [isNew, uiResourceMeta]);
|
|
74
|
-
const shouldShowSaveCancelButtons = useCallback(() => {
|
|
75
|
-
if (isNew) {
|
|
76
|
-
return shouldEditResourceShowCreateButton(uiResourceMeta.resourceMeta);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
return shouldEditResourceShowSaveCancelButtons(uiResourceMeta.resourceMeta);
|
|
80
|
-
}
|
|
81
|
-
}, [isNew, uiResourceMeta.resourceMeta]);
|
|
82
|
-
const getRequiredFieldsCallback = useCallback((metas) => {
|
|
83
|
-
return withIndexerFilter(metas, (value) => {
|
|
84
|
-
return getRequiredFields(value, uiResourceMeta.resourceMeta);
|
|
85
|
-
});
|
|
86
|
-
}, [uiResourceMeta]);
|
|
87
|
-
const onValidationCallback = useCallback((formValues) => {
|
|
88
|
-
return onValidation(uiResourceMeta.resourceMeta, form, getRequiredFieldsCallback, leftUiPropertyMetas, rightUiPropertyMetas, formValues);
|
|
89
|
-
}, [form, getRequiredFieldsCallback, leftUiPropertyMetas, rightUiPropertyMetas, uiResourceMeta]);
|
|
90
|
-
const resourceSave = useCallback(async () => {
|
|
91
|
-
await handleResourceSave(onValidationCallback, form, resource, isNew, uiResourceMeta.resourceMeta, setActiveSaveOperations, hasSavedOnce, setHasSavedOnce, onSaveClick, onSaveComplete, notifySaveComplete, onSavingStarting, onSavingEnding);
|
|
92
|
-
}, [
|
|
93
|
-
onValidationCallback,
|
|
94
|
-
form,
|
|
95
|
-
resource,
|
|
96
|
-
isNew,
|
|
97
|
-
uiResourceMeta,
|
|
98
|
-
onSaveClick,
|
|
99
|
-
onSaveComplete,
|
|
100
|
-
onSavingStarting,
|
|
101
|
-
onSavingEnding,
|
|
102
|
-
hasSavedOnce,
|
|
103
|
-
notifySaveComplete,
|
|
104
|
-
]);
|
|
105
|
-
const saveResourceOnChange = useCallback(async (val, name) => {
|
|
106
|
-
await handleSaveResourceOnChange(val, name, onValidationCallback, form, resource, isNew, uiResourceMeta.resourceMeta, setResource, resourceRelations.current, setResourceRelation, setActiveSaveOperations, config, onRefreshResource, notifySaveComplete, onSavingStarting, onSavingEnding, onPropertyUpdateComplete);
|
|
107
|
-
}, [
|
|
108
|
-
onValidationCallback,
|
|
109
|
-
form,
|
|
110
|
-
resource,
|
|
111
|
-
isNew,
|
|
112
|
-
uiResourceMeta,
|
|
113
|
-
config,
|
|
114
|
-
onRefreshResource,
|
|
115
|
-
onSavingStarting,
|
|
116
|
-
onSavingEnding,
|
|
117
|
-
notifySaveComplete,
|
|
118
|
-
onPropertyUpdateComplete,
|
|
119
|
-
]);
|
|
120
|
-
useImperativeHandle(ref, () => ({
|
|
121
|
-
save: resourceSave,
|
|
122
|
-
getAllFormValues: () => form.getValues(),
|
|
123
|
-
}), [resourceSave, form]);
|
|
124
|
-
const resourceDisplayName = uiResourceMeta?.resourceMeta.display.displayName ?? "";
|
|
125
|
-
return (<FormProvider {...form}>
|
|
126
|
-
<div className={cn("flex w-full flex-col items-center gap-y-6", !(columns ?? 1) && "sm:max-w-xs md:max-w-sm lg:max-w-md xl:max-w-none", !onRefreshResource &&
|
|
127
|
-
!(columns ?? 1) &&
|
|
128
|
-
(displayingColumns > 1 ? "xl:w-9/12" : "xl:w-2/5"))}>
|
|
129
|
-
<FdEditResourceHeader config={config} onCancel={onCancel} resourceDisplayName={resourceDisplayName} resourceName={resourceName} parentContextName={editResourceId} onToggleHiddenProperties={onToggleHiddenProperties} showHiddenProperties={showHiddenProperties} iconId={iconId} isNew={isNew} form={form} resourceMeta={uiResourceMeta.resourceMeta} shouldShowSaveCancelButtons={shouldShowSaveCancelButtons} isShowDeleteButton={isShowDeleteButton} onDeleteDialogResponse={onDeleteDialogResponse} onSaveResource={resourceSave} onChange={saveResourceOnChange} isSaved={activeSaveOperations === 0} showSavingStatus={showSavingStatus} hasSavedOnce={hasSavedOnce} backArrowUrl={config.backArrowUrl}/>
|
|
130
|
-
|
|
131
|
-
<FdEditResourceFormBody displayingColumns={displayingColumns} resourceMeta={uiResourceMeta.resourceMeta} leftUiPropertyMetas={leftUiPropertyMetas} rightUiPropertyMetas={rightUiPropertyMetas} isNew={isNew} form={form} resource={resource} formFieldOptions={formFieldOptions} parentContextName={FdEditResourceDisplayName} config={config} showHiddenProperties={showHiddenProperties} loadComplete={loadComplete} isReadOnly={isReadOnly} onChangeSaveResource={saveResourceOnChange} leftCustomFields={leftCustomFields} rightCustomFields={rightCustomFields}/>
|
|
132
|
-
</div>
|
|
133
|
-
</FormProvider>);
|
|
134
|
-
}
|
|
135
|
-
FdEditResource.displayName = FdEditResourceDisplayName;
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { FdEditResourcePropertyBlock } from "@meta/edit-resource/edit-resource-property-block/FdEditResourcePropertyBlock";
|
|
3
|
-
export function FdEditResourceFormBody({ displayingColumns, resourceMeta, leftUiPropertyMetas, rightUiPropertyMetas, isNew, form, resource, formFieldOptions, parentContextName, config, showHiddenProperties, loadComplete, isReadOnly, onChangeSaveResource, leftCustomFields, rightCustomFields, }) {
|
|
4
|
-
return (<div className="flex w-full flex-col gap-3 md:flex-row">
|
|
5
|
-
<FdEditResourcePropertyBlock resourceMeta={resourceMeta} uiPropertyMetas={leftUiPropertyMetas} isNew={isNew} form={form} resource={resource} formFieldOptions={formFieldOptions} config={config} showHiddenProperties={showHiddenProperties} loadComplete={loadComplete} readOnlyResource={isReadOnly} onChange={onChangeSaveResource} className="gap-y-4" parentContextName={parentContextName} customActionFields={leftCustomFields}/>
|
|
6
|
-
{displayingColumns > 1 && (<FdEditResourcePropertyBlock resourceMeta={resourceMeta} uiPropertyMetas={rightUiPropertyMetas} isNew={isNew} form={form} resource={resource} formFieldOptions={formFieldOptions} config={config} showHiddenProperties={showHiddenProperties} loadComplete={loadComplete} readOnlyResource={isReadOnly} onChange={onChangeSaveResource} className="gap-y-4" customActionFields={rightCustomFields} parentContextName={parentContextName}/>)}
|
|
7
|
-
</div>);
|
|
8
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { FdBackButton } from "@fd-component-toolbox/back-button/FdBackButton";
|
|
3
|
-
import { FdButton } from "@fd-component-toolbox/button/FdButton";
|
|
4
|
-
import { FdIcon, iconNames } from "@fd-component-toolbox/icon/FdIcon";
|
|
5
|
-
import { FdSubHeading } from "@fd-component-toolbox/subheading/FdSubHeading";
|
|
6
|
-
import { messages } from "@fd-toolbox-core/constants/messages-constants";
|
|
7
|
-
import { YesOrNoDialog } from "@fd-component-toolbox/dialog/YesOrNoDialog";
|
|
8
|
-
import { elementSuffixes } from "@fd-toolbox/constants/element-suffixes";
|
|
9
|
-
import { wellKnownMetaProps } from "@fd-toolbox-core/constants/meta-constants";
|
|
10
|
-
import { FdSaveStatus } from "@fd-component-toolbox/save-status/FdSaveStatus";
|
|
11
|
-
import { FdEditImage } from "@meta/components/edit-image/FdEditImage";
|
|
12
|
-
export function FdEditResourceHeader({ config, onCancel, resourceDisplayName, resourceName, parentContextName, onToggleHiddenProperties, showHiddenProperties, iconId, isNew, form, resourceMeta, backArrowUrl, shouldShowSaveCancelButtons, isShowDeleteButton, onDeleteDialogResponse, onSaveResource, onChange, isSaved, showSavingStatus, hasSavedOnce, }) {
|
|
13
|
-
return (<div className="flex w-full flex-col gap-y-3">
|
|
14
|
-
<div className="flex w-full items-center justify-between">
|
|
15
|
-
<div className="flex min-h-9 items-center justify-start gap-2">
|
|
16
|
-
{config && config.showBackArrow && (<FdBackButton id={`${resourceName}${elementSuffixes.back}`} className="flex size-5 items-center" onClick={onCancel} href={backArrowUrl}/>)}
|
|
17
|
-
{config && config.showTitle && (<FdSubHeading className="pb-0">{resourceDisplayName}</FdSubHeading>)}
|
|
18
|
-
{config && config.propertyConfigs.size !== 0 && !config.hideExpandButton && (<FdButton size="icon" variant="icon" onClick={onToggleHiddenProperties}>
|
|
19
|
-
{showHiddenProperties ? (<FdIcon name={iconNames.caretUp}/>) : (<FdIcon name={iconNames.caretDown} id={iconId}/>)}
|
|
20
|
-
</FdButton>)}
|
|
21
|
-
</div>
|
|
22
|
-
{hasSavedOnce && showSavingStatus && (<div>
|
|
23
|
-
<FdSaveStatus isSaved={!!isSaved}/>
|
|
24
|
-
</div>)}
|
|
25
|
-
</div>
|
|
26
|
-
<div className="flex flex-col justify-start gap-y-4">
|
|
27
|
-
{!isNew &&
|
|
28
|
-
resourceMeta?.description.useImage &&
|
|
29
|
-
(config?.propertyConfigs.get(wellKnownMetaProps.imageUrl)?.isVisible ?? true) && (<FdEditImage parentContextName={parentContextName} form={form} initialImageUrl={form.getValues(wellKnownMetaProps.imageUrl)} onChange={onChange}/>)}
|
|
30
|
-
{config && (<div className="flex flex-row gap-2">
|
|
31
|
-
{isNew && shouldShowSaveCancelButtons() && !config.hideTopSaveButton && (<FdButton id={`${resourceName}${elementSuffixes.save}`} onClick={onSaveResource} type="submit">
|
|
32
|
-
Save
|
|
33
|
-
</FdButton>)}
|
|
34
|
-
{isNew && shouldShowSaveCancelButtons() && !config.hideTopCancelButton && (<FdButton id={`${resourceDisplayName}${elementSuffixes.cancel}`} onClick={onCancel} variant="outline">
|
|
35
|
-
Cancel
|
|
36
|
-
</FdButton>)}
|
|
37
|
-
{isNew && isShowDeleteButton() && !config.hideTopDeleteButton && (<YesOrNoDialog asTriggerChild title={messages.deleteConfirmation || ""} onResponse={onDeleteDialogResponse} trigger={<FdButton id={`${resourceDisplayName}Delete`} variant="destructive">
|
|
38
|
-
Delete
|
|
39
|
-
</FdButton>}/>)}
|
|
40
|
-
</div>)}
|
|
41
|
-
</div>
|
|
42
|
-
</div>);
|
|
43
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { FdSheet, FdSheetTrigger, FdSheetContent, FdSheetTitle, FdSheetDescription, FdSheetHeader, } from "@fd-component-toolbox/sheet/FdSheet";
|
|
2
|
-
import React, { useCallback, useState } from "react";
|
|
3
|
-
import { FdEditResource } from "@meta/edit-resource/FdEditResource";
|
|
4
|
-
import { emptyGuid } from "@fd-toolbox/constants/constants";
|
|
5
|
-
import { metaQueryParams } from "@fd-toolbox/constants/meta-query-params";
|
|
6
|
-
import { onClick, onSheetOpenChange } from "@meta/edit-resource/FdEditResourceSheet.funcs";
|
|
7
|
-
import { useFdSearchParams } from "@meta/client/framework/hooks";
|
|
8
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
9
|
-
import { fetchUiResourceMeta } from "@meta/ui-meta-providers";
|
|
10
|
-
import { isUuidSet } from "@fd-toolbox/functions/value-checking-functions";
|
|
11
|
-
/**
|
|
12
|
-
* A sheet component that provides a modal interface for editing resources.
|
|
13
|
-
* This component wraps {@link FdEditResource} in a sliding panel overlay.
|
|
14
|
-
*
|
|
15
|
-
* @param props - {@link FdEditResourceSheetProps}
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```tsx
|
|
19
|
-
* <FdEditResourceSheet
|
|
20
|
-
* id="d4507481-8b33-46e7-9c2e-606daab170cc"
|
|
21
|
-
* resourceName={resourceNames.student}
|
|
22
|
-
* onEditClick={onEditClick}
|
|
23
|
-
* >
|
|
24
|
-
* <FdButton variant="outline">
|
|
25
|
-
* Edit Student
|
|
26
|
-
* </FdButton>
|
|
27
|
-
* </FdEditResourceSheet>
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export function FdEditResourceSheet({ id: propId, resourceName, children, onEditClick, onRefreshResources, onCloseClick, }) {
|
|
31
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
32
|
-
const params = useFdSearchParams();
|
|
33
|
-
const paramsId = params.get(metaQueryParams.id);
|
|
34
|
-
const resolvedResourceName = resourceName ?? params.get(metaQueryParams.resource) ?? "";
|
|
35
|
-
const resourceId = (isUuidSet(propId) && propId) || (isUuidSet(paramsId) && paramsId) || emptyGuid;
|
|
36
|
-
const [uiResourceMeta, setUiResourceMeta] = useState();
|
|
37
|
-
const isNew = !isUuidSet(resourceId);
|
|
38
|
-
useAsyncEffect(async () => {
|
|
39
|
-
setUiResourceMeta(await fetchUiResourceMeta(resolvedResourceName));
|
|
40
|
-
});
|
|
41
|
-
const onOpenChange = useCallback((open) => {
|
|
42
|
-
onSheetOpenChange(open, resolvedResourceName, setIsOpen, propId, onEditClick, "", onCloseClick);
|
|
43
|
-
}, [propId, onEditClick, resolvedResourceName, onCloseClick]);
|
|
44
|
-
const onSaveClick = useCallback(() => {
|
|
45
|
-
onClick(onOpenChange, onCloseClick);
|
|
46
|
-
}, [onCloseClick, onOpenChange]);
|
|
47
|
-
const onSaveComplete = useCallback(() => {
|
|
48
|
-
onRefreshResources?.();
|
|
49
|
-
}, [onRefreshResources]);
|
|
50
|
-
const onCancelClick = useCallback(() => {
|
|
51
|
-
onClick(onOpenChange, onCloseClick);
|
|
52
|
-
}, [onOpenChange, onCloseClick]);
|
|
53
|
-
const onDeleteComplete = useCallback(() => {
|
|
54
|
-
onClick(onOpenChange, onCloseClick);
|
|
55
|
-
}, [onOpenChange, onCloseClick]);
|
|
56
|
-
return (<FdSheet open={isOpen} onOpenChange={onOpenChange}>
|
|
57
|
-
<FdSheetTrigger asChild>{children}</FdSheetTrigger>
|
|
58
|
-
<FdSheetContent className="w-full overflow-y-auto sm:w-2/4 lg:w-2/6 xl:w-1/4">
|
|
59
|
-
<FdSheetHeader>
|
|
60
|
-
<FdSheetDescription></FdSheetDescription>
|
|
61
|
-
</FdSheetHeader>
|
|
62
|
-
<FdSheetTitle className="absolute -m-px size-px overflow-hidden whitespace-nowrap border-0 p-0 text-transparent">
|
|
63
|
-
SheetContent
|
|
64
|
-
</FdSheetTitle>
|
|
65
|
-
<div>
|
|
66
|
-
{uiResourceMeta && (<FdEditResource uiResourceMeta={uiResourceMeta} resourceId={resourceId} isNew={isNew} onSaveClick={onSaveClick} onSaveComplete={onSaveComplete} onDeleteComplete={onDeleteComplete} onCancelClick={onCancelClick} onRefreshResource={onRefreshResources}/>)}
|
|
67
|
-
</div>
|
|
68
|
-
</FdSheetContent>
|
|
69
|
-
</FdSheet>);
|
|
70
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React, { useCallback, useMemo, useRef } from "react";
|
|
2
|
-
import { SaveCompleteContext } from "@meta/edit-resource/save-complete-context";
|
|
3
|
-
export function SaveCompleteProvider({ children }) {
|
|
4
|
-
const saveComplete = useRef(0);
|
|
5
|
-
const notifySaveComplete = useCallback(() => {
|
|
6
|
-
saveComplete.current += 1;
|
|
7
|
-
}, []);
|
|
8
|
-
const saveCompleteContextValue = useMemo(() => {
|
|
9
|
-
return {
|
|
10
|
-
notifySaveComplete,
|
|
11
|
-
};
|
|
12
|
-
}, [notifySaveComplete]);
|
|
13
|
-
return (<SaveCompleteContext.Provider value={saveCompleteContextValue}>
|
|
14
|
-
{children}
|
|
15
|
-
</SaveCompleteContext.Provider>);
|
|
16
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import React, { useCallback, useState } from "react";
|
|
2
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
3
|
-
import { FdIcon, iconNames } from "@fd-component-toolbox/icon/FdIcon";
|
|
4
|
-
import { FdButton } from "@fd-component-toolbox/button/FdButton";
|
|
5
|
-
import { getDefaultEditResourceConfig } from "@meta/edit-resource/config/fd-edit-resource-configs";
|
|
6
|
-
import { addEditLinkNewResource, deleteEditLinkResource, loadEditLinkRelatedResource, } from "@meta/edit-resource/edit-link/FdEditLink.funcs";
|
|
7
|
-
import { FdEditLinkResource } from "@meta/edit-resource/edit-link/FdEditLinkResource";
|
|
8
|
-
const editResourceConfig = {
|
|
9
|
-
...getDefaultEditResourceConfig(""),
|
|
10
|
-
hideBottomCancelButton: true,
|
|
11
|
-
hideBottomDeleteButton: true,
|
|
12
|
-
hideBottomSaveButton: true,
|
|
13
|
-
hideTopCancelButton: true,
|
|
14
|
-
hideTopDeleteButton: true,
|
|
15
|
-
hideTopSaveButton: true,
|
|
16
|
-
showTitle: false,
|
|
17
|
-
};
|
|
18
|
-
export function FdEditLink({ property, resourceId }) {
|
|
19
|
-
const [showList, setShowList] = useState(false);
|
|
20
|
-
const [resources, setResources] = useState();
|
|
21
|
-
const [isNew, setIsNew] = useState([]);
|
|
22
|
-
useAsyncEffect(async () => {
|
|
23
|
-
await loadEditLinkRelatedResource(showList, resourceId, setResources, property.relation, resources);
|
|
24
|
-
}, [property, showList, resources]);
|
|
25
|
-
const onToggleList = useCallback(() => setShowList((prev) => !prev), [setShowList]);
|
|
26
|
-
const onAdd = useCallback(() => {
|
|
27
|
-
addEditLinkNewResource(setResources, setIsNew);
|
|
28
|
-
}, [setResources, setIsNew]);
|
|
29
|
-
const onDelete = useCallback((deleteResourceId) => {
|
|
30
|
-
deleteEditLinkResource(setResources, deleteResourceId);
|
|
31
|
-
}, [setResources]);
|
|
32
|
-
if (!property.relation) {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
return (<div>
|
|
36
|
-
<div className="flex flex-row">
|
|
37
|
-
<span className={"flex cursor-pointer flex-row gap-1"} onClick={onToggleList}>
|
|
38
|
-
{property.displayName}
|
|
39
|
-
{showList ? <FdIcon name={iconNames.caretDown}/> : <FdIcon name={iconNames.caretUp}/>}
|
|
40
|
-
</span>
|
|
41
|
-
<FdButton className="cursor-pointer" size="icon" variant="icon" onClick={onAdd}>
|
|
42
|
-
<FdIcon name={iconNames.plus} className="mt-1 stroke-fd-accent stroke-0.65"/>
|
|
43
|
-
</FdButton>
|
|
44
|
-
</div>
|
|
45
|
-
{showList &&
|
|
46
|
-
resources?.map(({ id }) => (<FdEditLinkResource key={`FdEditLinkResource${id}`} id={id} relatedResourceName={property.relation.relatedResourceName} isNew={isNew.includes(id)} onDelete={onDelete} editResourceConfig={editResourceConfig}/>))}
|
|
47
|
-
</div>);
|
|
48
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { FdButton } from "@fd-component-toolbox/button/FdButton";
|
|
2
|
-
import { FdIcon, iconNames } from "@fd-component-toolbox/icon/FdIcon";
|
|
3
|
-
import { FdEditResource } from "@meta/edit-resource/FdEditResource";
|
|
4
|
-
import { useState } from "react";
|
|
5
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
6
|
-
import { fetchUiResourceMeta } from "@meta/ui-meta-providers";
|
|
7
|
-
export function FdEditLinkResource({ id, relatedResourceName, isNew, onDelete, editResourceConfig, }) {
|
|
8
|
-
const [uiResourceMeta, setUiResourceMeta] = useState();
|
|
9
|
-
useAsyncEffect(async () => {
|
|
10
|
-
setUiResourceMeta(await fetchUiResourceMeta(relatedResourceName));
|
|
11
|
-
});
|
|
12
|
-
return (<div key={id} className="mb-4 border-b border-muted-foreground pb-4">
|
|
13
|
-
{uiResourceMeta && (<FdEditResource uiResourceMeta={uiResourceMeta} resourceId={id} isNew={isNew} config={editResourceConfig}/>)}
|
|
14
|
-
<FdButton size="icon" variant="icon" onClick={() => onDelete(id)}>
|
|
15
|
-
<FdIcon name={iconNames.trash}/>
|
|
16
|
-
</FdButton>
|
|
17
|
-
</div>);
|
|
18
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import React, { useCallback, useState } from "react";
|
|
3
|
-
import { FdDialog, FdDialogContent, FdDialogTitle, FdDialogTrigger, } from "@fd-component-toolbox/dialog/FdDialog";
|
|
4
|
-
import { onInitEditResource } from "@meta/edit-resource/edit-resource-dialog/FdEditResourceDialog.funcs";
|
|
5
|
-
import { emptyGuid } from "@fd-toolbox/constants/constants";
|
|
6
|
-
import { FdEditResource } from "@meta/edit-resource/FdEditResource";
|
|
7
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
8
|
-
export function FdEditResourceDialog({ trigger, dialogConfig }) {
|
|
9
|
-
const [isDialogOpen, setIsDialogOpen] = useState(false);
|
|
10
|
-
const [resourceId, setResourceId] = useState(emptyGuid);
|
|
11
|
-
const [resourceName, setResourceName] = useState("");
|
|
12
|
-
const [isNew, setIsNew] = useState(true);
|
|
13
|
-
const [uiResourceMeta, setUiResourceMeta] = useState();
|
|
14
|
-
useAsyncEffect(async () => {
|
|
15
|
-
await onInitEditResource(setResourceName, setResourceId, setIsNew, dialogConfig, setUiResourceMeta);
|
|
16
|
-
}, [dialogConfig]);
|
|
17
|
-
const onCloseDialog = useCallback(() => {
|
|
18
|
-
setIsDialogOpen(false);
|
|
19
|
-
}, []);
|
|
20
|
-
const onDeleteOrSaveComplete = useCallback(() => {
|
|
21
|
-
setIsDialogOpen(false);
|
|
22
|
-
}, []);
|
|
23
|
-
return (<FdDialog open={isDialogOpen} onOpenChange={setIsDialogOpen}>
|
|
24
|
-
<FdDialogTrigger>{trigger}</FdDialogTrigger>
|
|
25
|
-
<FdDialogContent>
|
|
26
|
-
<FdDialogTitle className="absolute -m-px size-px overflow-hidden whitespace-nowrap border-0 p-0">
|
|
27
|
-
{resourceName}
|
|
28
|
-
</FdDialogTitle>
|
|
29
|
-
<div>
|
|
30
|
-
{uiResourceMeta && (<FdEditResource uiResourceMeta={uiResourceMeta} resourceId={resourceId} onCancelClick={onCloseDialog} onDeleteComplete={onDeleteOrSaveComplete} onSaveComplete={onDeleteOrSaveComplete} isNew={isNew}/>)}
|
|
31
|
-
</div>
|
|
32
|
-
</FdDialogContent>
|
|
33
|
-
</FdDialog>);
|
|
34
|
-
}
|
package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceBlobField.jsx
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { FileUpload } from "@meta/components/file-upload/FileUpload";
|
|
3
|
-
import { FdFormField } from "@fd-component-toolbox/form/FdForm";
|
|
4
|
-
import { wellKnownMetaProps } from "@fd-toolbox-core/constants/meta-constants";
|
|
5
|
-
import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
|
|
6
|
-
import { onInitBlobList } from "@meta/edit-resource/edit-resource-property-block/FdEditResourceBlobField.funcs";
|
|
7
|
-
import { fileUploadTypes } from "@fd-toolbox/enums/enums";
|
|
8
|
-
export function FdEditResourceBlobField({ label, form, relatedResourceId, propertyMeta, isNew, }) {
|
|
9
|
-
useAsyncEffect(async () => {
|
|
10
|
-
await onInitBlobList(propertyMeta, relatedResourceId, form?.setValue);
|
|
11
|
-
}, [relatedResourceId]);
|
|
12
|
-
return (<FdFormField control={form.control} name={wellKnownMetaProps.blobList} defaultValue={""} render={({ field }) => (<div className="relative">
|
|
13
|
-
<FileUpload label={label} allowMultiple={propertyMeta.fileUploadType === fileUploadTypes.multiple} form={form} formValue={field.value} isNew={isNew} relatedResourceId={relatedResourceId} propertyMeta={propertyMeta}/>
|
|
14
|
-
</div>)}/>);
|
|
15
|
-
}
|
package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceEnumField.jsx
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { FdSelect, FdSelectContent, FdSelectGroup, FdSelectItem, FdSelectTrigger, FdSelectValue, } from "@fd-component-toolbox/select/FdSelect";
|
|
3
|
-
import { useEffect, useState, useCallback } from "react";
|
|
4
|
-
import FdLabelAnimation from "@fd-component-toolbox/animation/FdLabelAnimation";
|
|
5
|
-
import { emptySelectIndex, emptySelectValue } from "@fd-toolbox/constants/constants";
|
|
6
|
-
import { setSelectValueFromForm, getRequiredLabel, } from "@meta/edit-resource/edit-resource-property-block/FdEditResourcePropertyBlock.funcs";
|
|
7
|
-
import { setEnumValue } from "@meta/edit-resource/edit-resource-property-block/FdEditResourceEnumField.funcs";
|
|
8
|
-
export function FdEditResourceEnumField({ uiPropertyMeta, form, disabled, readOnly, skipAnimationOnce, onChange, propertyMeta, }) {
|
|
9
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
10
|
-
const [value, setValue] = useState(emptySelectValue);
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
setSelectValueFromForm(form, setValue, uiPropertyMeta.name);
|
|
13
|
-
}, [form, uiPropertyMeta]);
|
|
14
|
-
const onValueChange = useCallback((val) => {
|
|
15
|
-
setEnumValue(setValue, val, uiPropertyMeta.name, form, onChange);
|
|
16
|
-
}, [form, uiPropertyMeta.name, onChange]);
|
|
17
|
-
return (<div className="w-full">
|
|
18
|
-
<FdSelect value={value?.toString()} onValueChange={onValueChange} disabled={disabled} open={isOpen && !readOnly} onOpenChange={setIsOpen}>
|
|
19
|
-
<FdSelectTrigger label={getRequiredLabel(propertyMeta.required, propertyMeta.displayName)} shouldAnimate={true} skipAnimationOnce={skipAnimationOnce}>
|
|
20
|
-
<FdSelectValue />
|
|
21
|
-
<FdLabelAnimation />
|
|
22
|
-
</FdSelectTrigger>
|
|
23
|
-
<FdSelectContent>
|
|
24
|
-
<FdSelectGroup>
|
|
25
|
-
{!propertyMeta.required && (<FdSelectItem index={emptySelectIndex} value={emptySelectValue}>
|
|
26
|
-
<span className="text-slate-500">Sub Type</span>
|
|
27
|
-
</FdSelectItem>)}
|
|
28
|
-
{propertyMeta.enumerationValues?.map((val, index) => (<FdSelectItem index={index} key={val} value={val.toString()}>
|
|
29
|
-
{propertyMeta.enumerationDisplayName[index]}
|
|
30
|
-
</FdSelectItem>))}
|
|
31
|
-
</FdSelectGroup>
|
|
32
|
-
</FdSelectContent>
|
|
33
|
-
</FdSelect>
|
|
34
|
-
</div>);
|
|
35
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { FdSelect, FdSelectContent, FdSelectGroup, FdSelectItem, FdSelectTrigger, FdSelectValue, } from "@fd-component-toolbox/select/FdSelect";
|
|
3
|
-
import { useState } from "react";
|
|
4
|
-
import { emptySelectIndex, emptySelectValue } from "@fd-toolbox/constants/constants";
|
|
5
|
-
import { setFlagsEnumValue } from "@meta/edit-resource/edit-resource-property-block/FdEditResourceFlagsEnumField.funcs";
|
|
6
|
-
export function FdEditResourceFlagsEnumField({ uiPropertyMeta, form, disabled, readOnly, skipAnimationOnce, onChange, propertyMeta, }) {
|
|
7
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
8
|
-
return (<div className="w-full">
|
|
9
|
-
<FdSelect value={String(form.getValues(uiPropertyMeta.name) ?? 0)} onValueChange={(val) => setFlagsEnumValue(val, uiPropertyMeta.name, form.setValue, onChange)} disabled={disabled} open={isOpen && !readOnly} onOpenChange={setIsOpen}>
|
|
10
|
-
<FdSelectTrigger skipAnimationOnce={skipAnimationOnce} label={propertyMeta.displayName} shouldAnimate={true}>
|
|
11
|
-
<FdSelectValue />
|
|
12
|
-
</FdSelectTrigger>
|
|
13
|
-
<FdSelectContent>
|
|
14
|
-
{!propertyMeta.required && (<FdSelectItem index={emptySelectIndex} value={emptySelectValue}/>)}
|
|
15
|
-
<FdSelectGroup>
|
|
16
|
-
{propertyMeta.enumerationValues?.map((val, index) => (<FdSelectItem index={index} key={val} value={val.toString()}>
|
|
17
|
-
{propertyMeta.enumerationDisplayName[index]}
|
|
18
|
-
</FdSelectItem>))}
|
|
19
|
-
</FdSelectGroup>
|
|
20
|
-
</FdSelectContent>
|
|
21
|
-
</FdSelect>
|
|
22
|
-
</div>);
|
|
23
|
-
}
|
package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceImageField.jsx
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { FileUpload } from "@meta/components/file-upload/FileUpload";
|
|
2
|
-
import { fileUploadTypes } from "@fd-toolbox/enums/enums";
|
|
3
|
-
export function FdEditResourceImageField({ value, propertyMeta }) {
|
|
4
|
-
return (<div className="relative flex items-center gap-3 pb-2 text-muted-foreground">
|
|
5
|
-
<FileUpload value={value} allowMultiple={propertyMeta.fileUploadType === fileUploadTypes.multiple} required={propertyMeta.required} label={propertyMeta.displayName}/>
|
|
6
|
-
</div>);
|
|
7
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { getPropertyCssClass, onPropsChange, getSortedUiPropertyMetasAndCustomActionFields, getSortedUiPropertyMetas, } from "@meta/edit-resource/edit-resource-property-block/FdEditResourcePropertyBlock.funcs";
|
|
3
|
-
import React, { useCallback, useEffect, useState } from "react";
|
|
4
|
-
import { isNullOrUndefined } from "@fd-toolbox/functions/value-checking-functions";
|
|
5
|
-
import { navigateToList } from "@meta/resource-list/resource-lists";
|
|
6
|
-
import { cn } from "@fd-toolbox/lib/utils";
|
|
7
|
-
import { FdEditResourcePropertyField } from "@meta/edit-resource/edit-resource-property-field/FdEditResourcePropertyField";
|
|
8
|
-
import { elements } from "@fd-toolbox/constants/elements";
|
|
9
|
-
const instanceNumber = { value: 0 };
|
|
10
|
-
export function FdEditResourcePropertyBlock({ resourceMeta, isNew, resource, formFieldOptions, form, uiPropertyMetas, showHiddenProperties, config, values, loadComplete, readOnlyResource, onChange, className, parentContextName, customActionFields, }) {
|
|
11
|
-
const [excludeResourceIds, setExcludeResourceIds] = useState(new Map());
|
|
12
|
-
useEffect(() => {
|
|
13
|
-
return onPropsChange(form, setExcludeResourceIds, values, instanceNumber, resourceMeta);
|
|
14
|
-
}, [form, isNew, uiPropertyMetas, setExcludeResourceIds, values, resourceMeta]);
|
|
15
|
-
const onItemClick = useCallback((propertyMeta) => {
|
|
16
|
-
if (!isNullOrUndefined(propertyMeta)) {
|
|
17
|
-
navigateToList(propertyMeta, resourceMeta, resource.id);
|
|
18
|
-
}
|
|
19
|
-
}, [resourceMeta, resource]);
|
|
20
|
-
const sortedUiPropertyMetas = getSortedUiPropertyMetas(uiPropertyMetas);
|
|
21
|
-
const sortedUiPropertyMetasAndCustomActionFields = getSortedUiPropertyMetasAndCustomActionFields(sortedUiPropertyMetas, customActionFields, resourceMeta);
|
|
22
|
-
return (<div className={cn("me-3 grid w-full grid-cols-1 content-between gap-x-8 gap-y-2.5", className)}>
|
|
23
|
-
{loadComplete &&
|
|
24
|
-
sortedUiPropertyMetasAndCustomActionFields.map((componentFieldData) => {
|
|
25
|
-
if (componentFieldData.customField) {
|
|
26
|
-
const CustomFieldComponent = componentFieldData.customField.component;
|
|
27
|
-
return (<CustomFieldComponent key={componentFieldData.customField.component.toString()} form={form} uiPropertyMeta={componentFieldData.uiPropertyMeta} editResourceOnChangeCallback={onChange}/>);
|
|
28
|
-
}
|
|
29
|
-
else if (componentFieldData.uiPropertyMeta) {
|
|
30
|
-
return (<div key={componentFieldData.uiPropertyMeta.name} className={cn("relative flex flex-col gap-y-2.5", getPropertyCssClass(componentFieldData.uiPropertyMeta, config, showHiddenProperties))}>
|
|
31
|
-
<FdEditResourcePropertyField uiPropertyMeta={componentFieldData.uiPropertyMeta} propertyMeta={resourceMeta.properties[componentFieldData.uiPropertyMeta.name]} form={form} formFieldOption={formFieldOptions[resourceMeta.properties[componentFieldData.uiPropertyMeta.name]
|
|
32
|
-
.name]} resource={resource} readOnlyResource={readOnlyResource} loadComplete={loadComplete ?? false} excludeResourceIds={excludeResourceIds} isNew={isNew} onItemClick={onItemClick} onChange={onChange} propertyConfig={config.propertyConfigs.get(resourceMeta.properties[componentFieldData.uiPropertyMeta.name].name)} parentContextName={parentContextName + elements.editResource.propertyBlock}/>
|
|
33
|
-
</div>);
|
|
34
|
-
}
|
|
35
|
-
return undefined;
|
|
36
|
-
})}
|
|
37
|
-
</div>);
|
|
38
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import React, { Suspense } from "react";
|
|
2
|
-
import { FdFormControl, FdFormMessage, useFormField } from "@fd-component-toolbox/form/FdForm";
|
|
3
|
-
import FdLoadingIndicator from "@fd-component-toolbox/loading/FdLoadingIndicator";
|
|
4
|
-
const FdRichText = React.lazy(async () => {
|
|
5
|
-
const richTextModule = await import("@fd-component-toolbox/rich-text/FdRichText");
|
|
6
|
-
return { default: richTextModule.FdRichText };
|
|
7
|
-
});
|
|
8
|
-
export function FdEditResourceRichTextField({ onChange, value, label, defaultValue, id, onBlur, }) {
|
|
9
|
-
const { error } = useFormField();
|
|
10
|
-
return (<FdFormControl>
|
|
11
|
-
<Suspense fallback={<FdLoadingIndicator />}>
|
|
12
|
-
<FdRichText value={value} onChange={onChange} placeholder="Start typing..." debounceTime={500} defaultValue={defaultValue ? String(defaultValue) : ""} label={label} isInvalid={!!error} onBlur={onBlur} id={id}/>
|
|
13
|
-
<FdFormMessage />
|
|
14
|
-
</Suspense>
|
|
15
|
-
</FdFormControl>);
|
|
16
|
-
}
|
package/packages/level2/meta/edit-resource/edit-resource-property-block/edit-resource-fields.jsx
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { FdIcon, iconNames } from "@fd-component-toolbox/icon/FdIcon";
|
|
3
|
-
import { FdBrowser } from "@meta/browsers/browser/FdBrowser";
|
|
4
|
-
import { FdManyToManyBrowser } from "@meta/browsers/many-to-many-browser/FdManyToManyBrowser";
|
|
5
|
-
import { FdMultiBrowser } from "@meta/browsers/multi-browser/FdMultiBrowser";
|
|
6
|
-
import { isManyToOneBrowserField, isManyToManyBrowserField, isOneToManyBrowserField, } from "@meta/edit-resource/edit-resource-property-block/FdEditResourcePropertyBlock.funcs";
|
|
7
|
-
export function fdBrowserFields(resource, parentContextName, uiPropertyMeta, readOnlyResource, onBrowserValueChange, excludeResourceIds, relatedResourceId, form, onItemClick, isNew, propertyMeta, onMultiBrowserValueChange) {
|
|
8
|
-
let result;
|
|
9
|
-
if (isManyToOneBrowserField(propertyMeta)) {
|
|
10
|
-
result = fdBrowserField(parentContextName, uiPropertyMeta, readOnlyResource, onBrowserValueChange, excludeResourceIds, relatedResourceId, form, onItemClick, isNew, propertyMeta);
|
|
11
|
-
}
|
|
12
|
-
else if (isOneToManyBrowserField(propertyMeta)) {
|
|
13
|
-
result = fdMultiBrowserField(parentContextName, readOnlyResource, onMultiBrowserValueChange, resource.id, form, onItemClick, isNew, propertyMeta);
|
|
14
|
-
}
|
|
15
|
-
else if (isManyToManyBrowserField(propertyMeta)) {
|
|
16
|
-
result = fdManyToManyBrowserField(parentContextName, readOnlyResource, relatedResourceId, form, onItemClick, isNew, propertyMeta, onMultiBrowserValueChange);
|
|
17
|
-
return result;
|
|
18
|
-
}
|
|
19
|
-
return result;
|
|
20
|
-
}
|
|
21
|
-
export function fdBrowserField(parentContextName, uiPropertyMeta, readOnlyResource, onBrowserValueChange, excludeResourceIds, relatedResourceId, form, onItemClick, isNew, propertyMeta) {
|
|
22
|
-
return (<div className="relative flex items-center">
|
|
23
|
-
<FdBrowser required={propertyMeta.required} readOnly={readOnlyResource} onChange={(val) => onBrowserValueChange(propertyMeta, val)} propertyMeta={propertyMeta} parentContextName={parentContextName} excludeResourceIds={excludeResourceIds.get(uiPropertyMeta.name)} relatedResourceId={relatedResourceId} form={form}>
|
|
24
|
-
<div className="cursor-pointer">
|
|
25
|
-
<a onClick={() => onItemClick(propertyMeta)} href={isNew ? undefined : "#"}>
|
|
26
|
-
<FdIcon name={iconNames.link}/>
|
|
27
|
-
</a>
|
|
28
|
-
</div>
|
|
29
|
-
</FdBrowser>
|
|
30
|
-
</div>);
|
|
31
|
-
}
|
|
32
|
-
export function fdMultiBrowserField(parentContextName, readOnlyResource, onMultiBrowserValueChange, relatedResourceId, form, onItemClick, isNew, propertyMeta) {
|
|
33
|
-
return (<div className="relative flex items-center">
|
|
34
|
-
<FdMultiBrowser parentContextName={parentContextName} getSelectedResourcesFromApi={true} relatedResourceId={relatedResourceId} propertyMeta={propertyMeta} required={propertyMeta.required} form={form} readOnly={readOnlyResource} onChange={(selected) => onMultiBrowserValueChange(selected, propertyMeta)} variant="float">
|
|
35
|
-
<div className="cursor-pointer">
|
|
36
|
-
<a onClick={() => onItemClick(propertyMeta)} href={isNew ? undefined : "#"}>
|
|
37
|
-
<FdIcon name={iconNames.link}/>
|
|
38
|
-
</a>
|
|
39
|
-
</div>
|
|
40
|
-
</FdMultiBrowser>
|
|
41
|
-
</div>);
|
|
42
|
-
}
|
|
43
|
-
export function fdManyToManyBrowserField(parentContextName, readOnlyResource, relatedResourceId, form, onItemClick, isNew, propertyMeta, onMultiBrowserValueChange) {
|
|
44
|
-
return (<div className="relative flex items-center">
|
|
45
|
-
<FdManyToManyBrowser parentContextName={parentContextName} relatedResourceId={relatedResourceId} propertyMeta={propertyMeta} required={propertyMeta.required} form={form} onChange={(selected) => onMultiBrowserValueChange(selected, propertyMeta)} readOnly={readOnlyResource}>
|
|
46
|
-
<div className="cursor-pointer">
|
|
47
|
-
<a onClick={() => onItemClick(propertyMeta)} href={isNew ? undefined : "#"}>
|
|
48
|
-
<FdIcon name={iconNames.link}/>
|
|
49
|
-
</a>
|
|
50
|
-
</div>
|
|
51
|
-
</FdManyToManyBrowser>
|
|
52
|
-
</div>);
|
|
53
|
-
}
|