@fernir2/saas-kit-cli 0.1.4 → 0.1.5

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.
Files changed (303) hide show
  1. package/package.json +211 -7
  2. package/cli/.gitlab-ci.yml +0 -14
  3. package/cli/.husky/commit-msg +0 -1
  4. package/cli/.husky/pre-commit +0 -1
  5. package/cli/README.md +0 -101
  6. package/cli/bin/index.ts +0 -358
  7. package/cli/drizzle.config.ts +0 -12
  8. package/cli/global-setup.ts +0 -25
  9. package/cli/npm-commands/gen-meta/index.ts +0 -3
  10. package/cli/npm-commands/gen-schema/index.ts +0 -5
  11. package/cli/npm-commands/migrate-db/index.ts +0 -5
  12. package/cli/npm-commands/migrate-db/migrate-db.ts +0 -15
  13. package/cli/npm-commands/seed-db/index.ts +0 -5
  14. package/cli/npm-commands/seed-db/seed-db.ts +0 -15
  15. package/cli/playwright.config.ts +0 -34
  16. package/cli/postcss.config.mjs +0 -9
  17. package/cli/server.ts +0 -41
  18. package/cli/src/app/api/v1/[resourceName]/[id]/route.ts/route.ts +0 -11
  19. package/cli/src/app/api/v1/[resourceName]/route.ts/route.ts +0 -14
  20. package/cli/src/app/api/v1/[resourceName]/upsert/route.ts/route.ts +0 -3
  21. package/cli/src/app/api/v1/log/route.ts/route.ts +0 -7
  22. package/cli/src/app/api/v1/otheruser/[id]/route.ts/route.ts +0 -14
  23. package/cli/src/app/api/v1/otheruser/route.ts/route.ts +0 -7
  24. package/cli/src/app/api/v1/password/forgotpassword/route.ts/route.ts +0 -3
  25. package/cli/src/app/api/v1/password/resetpassword/route.ts/route.ts +0 -3
  26. package/cli/src/app/api/v1/payment/method/route.ts/route.ts +0 -4
  27. package/cli/src/app/api/v1/payment/route.ts/route.ts +0 -3
  28. package/cli/src/app/api/v1/payment/verify-fail/route.ts/route.ts +0 -3
  29. package/cli/src/app/api/v1/payment/verify-success/route.ts/route.ts +0 -3
  30. package/cli/src/app/api/v1/preload/route.ts/route.ts +0 -3
  31. package/cli/src/app/api/v1/searchable-resources/route.ts/route.ts +0 -11
  32. package/cli/src/app/api/v1/searchresult/route.ts/route.ts +0 -35
  33. package/cli/src/app/api/v1/sign-in/route.ts/route.ts +0 -3
  34. package/cli/src/app/api/v1/sign-out/route.ts/route.ts +0 -3
  35. package/cli/src/app/api/v1/sign-up/route.ts/route.ts +0 -3
  36. package/cli/src/app/api/v1/subscription/cancel/route.ts/route.ts +0 -3
  37. package/cli/src/app/api/v1/subscription/create/route.ts/route.ts +0 -3
  38. package/cli/src/app/api/v1/subscription/update/route.ts/route.ts +0 -3
  39. package/cli/src/app/api/v1/uimeta/route.ts/route.ts +0 -3
  40. package/cli/src/app/api/v1/uimetas/route.ts/route.ts +0 -3
  41. package/cli/src/app/api/v1/userpermission/route.ts/route.ts +0 -3
  42. package/cli/src/app/api/v1/visible-workspace/route.ts/route.ts +0 -5
  43. package/cli/src/app/api/v1/workspace/change/route.ts/route.ts +0 -5
  44. package/cli/src/app/favicon.ico +0 -0
  45. package/cli/src/app/layout.tsx +0 -42
  46. package/cli/src/app/page.tsx +0 -9
  47. package/cli/tailwind.config.ts +0 -13
  48. package/packages/base-repo/tools/git/commit-msg-script.ts +0 -42
  49. package/packages/base-repo/tools/git/pre-commit-script.ts +0 -431
  50. package/packages/level2/client/components/error-fallback/FdErrorFallback.jsx +0 -14
  51. package/packages/level2/client/components/feed/FdFeed.funcs.jsx +0 -65
  52. package/packages/level2/client/components/feed/FdFeed.jsx +0 -34
  53. package/packages/level2/client/components/feed/FdFeedActions.jsx +0 -15
  54. package/packages/level2/client/components/feed/FdFeedComments.jsx +0 -6
  55. package/packages/level2/client/components/feed/FdFeedEntry.jsx +0 -36
  56. package/packages/level2/client/components/feed/FdFeedHeader.jsx +0 -23
  57. package/packages/level2/client/components/feed/FdFeedReactionsSummary.jsx +0 -16
  58. package/packages/level2/client/components/providers/FdProviders.jsx +0 -28
  59. package/packages/level2/client/components/subscription-plan/FdSubscriptionPlan.jsx +0 -163
  60. package/packages/level2/client/components/wizard/FdWizard.jsx +0 -45
  61. package/packages/level2/client/components/wizard/FdWizardStepper.jsx +0 -55
  62. package/packages/level2/client/pages/dashboard-page/DashbordPage.jsx +0 -46
  63. package/packages/level2/client/pages/dynamic-layout-page/DynamicLayoutPage.jsx +0 -22
  64. package/packages/level2/client/pages/edit-password-page/EditPasswordPage.jsx +0 -8
  65. package/packages/level2/client/pages/edit-user-by-id-page/EditUserByIdPage.jsx +0 -14
  66. package/packages/level2/client/pages/edit-user-page/EditUserPage.jsx +0 -6
  67. package/packages/level2/client/pages/feed-page/FeedPage.jsx +0 -8
  68. package/packages/level2/client/pages/file-upload-page/FileUploadPage.jsx +0 -7
  69. package/packages/level2/client/pages/forgot-password-page/ForgotPasswordPage.jsx +0 -8
  70. package/packages/level2/client/pages/leads-viw-page/LeadsViewPage.jsx +0 -6
  71. package/packages/level2/client/pages/microsoft-page/MicrosoftPage.jsx +0 -16
  72. package/packages/level2/client/pages/payment-plan-page/PaymentPlanPage.jsx +0 -18
  73. package/packages/level2/client/pages/preload-page/PreloadPage.jsx +0 -25
  74. package/packages/level2/client/pages/reset-password-page/ResetPasswordPage.jsx +0 -8
  75. package/packages/level2/client/pages/screenshot-page/TestScreenshotPage.jsx +0 -23
  76. package/packages/level2/client/pages/sign-in-page/SignInPage.jsx +0 -24
  77. package/packages/level2/client/pages/sign-up-page/SignUpPage.jsx +0 -9
  78. package/packages/level2/client/pages/status-board-page/StatusBoardPage.jsx +0 -6
  79. package/packages/level2/client/pages/test-layout/TestLayout.jsx +0 -11
  80. package/packages/level2/client/pages/test-page/TestPage.jsx +0 -12
  81. package/packages/level2/client/pages/user-list-page/UserListPage.jsx +0 -4
  82. package/packages/level2/client/pages/view-page/ViewPage.jsx +0 -21
  83. package/packages/level2/client/payments/change-payment-method-field/ChangePaymentMethodField.jsx +0 -48
  84. package/packages/level2/client/payments/checkout-form/CheckoutForm.jsx +0 -95
  85. package/packages/level2/client/payments/checkout-form/CheckoutFormSubmit.jsx +0 -11
  86. package/packages/level2/client/payments/checkout-form/checkout-form-fields.jsx +0 -68
  87. package/packages/level2/client/website-scan/FdWebsiteScanResult.funcs.jsx +0 -12
  88. package/packages/level2/client/website-scan/FdWebsiteScanResult.jsx +0 -33
  89. package/packages/level2/client/website-scan/website-scan-data.jsx +0 -28
  90. package/packages/level2/client/website-scan/website-scan-icons/FacebookIcon.jsx +0 -6
  91. package/packages/level2/client/website-scan/website-scan-icons/FacebookPixelIcon.jsx +0 -49
  92. package/packages/level2/client/website-scan/website-scan-icons/GoogleAnalyticsIcon.jsx +0 -7
  93. package/packages/level2/client/website-scan/website-scan-icons/InstagramIcon.jsx +0 -32
  94. package/packages/level2/client/website-scan/website-scan-icons/LinkedinIcon.jsx +0 -6
  95. package/packages/level2/client/website-scan/website-scan-icons/OtherPlatformIcon.jsx +0 -110
  96. package/packages/level2/client/website-scan/website-scan-icons/ShopifyIcon.jsx +0 -46
  97. package/packages/level2/client/website-scan/website-scan-icons/SquarespaceIcon.jsx +0 -57
  98. package/packages/level2/client/website-scan/website-scan-icons/TiktokIcon.jsx +0 -15
  99. package/packages/level2/client/website-scan/website-scan-icons/WixIcon.jsx +0 -62
  100. package/packages/level2/client/website-scan/website-scan-icons/WordpressIcon.jsx +0 -53
  101. package/packages/level2/client/website-scan/website-scan-icons/XIcon.jsx +0 -6
  102. package/packages/level2/fd-app-toolbox/edit-other-user/EditOtherUser.jsx +0 -7
  103. package/packages/level2/fd-app-toolbox/edit-password-form/EditPasswordForm.jsx +0 -68
  104. package/packages/level2/fd-app-toolbox/edit-user-form/EditUserForm.jsx +0 -122
  105. package/packages/level2/fd-app-toolbox/edit-user-sheet/EditUserSheet.jsx +0 -35
  106. package/packages/level2/fd-app-toolbox/forgot-password-form/ForgotPasswordForm.jsx +0 -87
  107. package/packages/level2/fd-app-toolbox/layout/client-layout/ClientLayout.jsx +0 -19
  108. package/packages/level2/fd-app-toolbox/layout/client-root/ClientRoot.jsx +0 -32
  109. package/packages/level2/fd-app-toolbox/layout/hamburger-menu/FdHamburgerMenu.jsx +0 -47
  110. package/packages/level2/fd-app-toolbox/layout/navbar/FdNarrowNavbar.jsx +0 -40
  111. package/packages/level2/fd-app-toolbox/layout/sidebar/FdSidebar.jsx +0 -48
  112. package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-dropdown-menu/FdDropdownMenuItemTitle.jsx +0 -12
  113. package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-dropdown-menu/FdSidebarDropdownMenu.jsx +0 -81
  114. package/packages/level2/fd-app-toolbox/layout/sidebar/sidebar-resources-provider.jsx +0 -30
  115. package/packages/level2/fd-app-toolbox/layout/toolbar/FdToolbar.jsx +0 -89
  116. package/packages/level2/fd-app-toolbox/layout/toolbar/FdTopNav.jsx +0 -42
  117. package/packages/level2/fd-app-toolbox/layout/toolbar/title-provider/ToolbarTitleProvider.jsx +0 -10
  118. package/packages/level2/fd-app-toolbox/login-form/LoginForm.jsx +0 -165
  119. package/packages/level2/fd-app-toolbox/menu/notifications-menu/FdNotificationMenu.jsx +0 -43
  120. package/packages/level2/fd-app-toolbox/menu/notifications-menu/notification-list/FdNotificationList.jsx +0 -53
  121. package/packages/level2/fd-app-toolbox/menu/top-menu/FdTopMenu.jsx +0 -28
  122. package/packages/level2/fd-app-toolbox/menu/top-menu/top-menu-group/FdTopMenuGroup.jsx +0 -35
  123. package/packages/level2/fd-app-toolbox/menu/top-menu/top-menu-item/FdTopMenuItem.jsx +0 -47
  124. package/packages/level2/fd-app-toolbox/menu/user-dropdown-menu/FdUserDropdownMenu.jsx +0 -122
  125. package/packages/level2/fd-app-toolbox/menu/user-dropdown-menu/user-dropdown-menu-item/FdUserDropdownMenuItem.jsx +0 -56
  126. package/packages/level2/fd-app-toolbox/menu/visible-workspace-picker/FdVisibleWorkspacePicker.jsx +0 -36
  127. package/packages/level2/fd-app-toolbox/menu/workspace-picker/FdWorkspacePicker.jsx +0 -47
  128. package/packages/level2/fd-app-toolbox/providers/ThemeProvider/ThemeProvider.jsx +0 -27
  129. package/packages/level2/fd-app-toolbox/providers/auth-provider/AuthProvider.jsx +0 -38
  130. package/packages/level2/fd-app-toolbox/providers/sidebar-provider/FdSidebarContext.jsx +0 -17
  131. package/packages/level2/fd-app-toolbox/register-form/RegisterForm.jsx +0 -119
  132. package/packages/level2/fd-app-toolbox/report/FdChart.jsx +0 -120
  133. package/packages/level2/fd-app-toolbox/report/ReportChart.jsx +0 -29
  134. package/packages/level2/fd-app-toolbox/reset-password-form/ResetPasswordForm.jsx +0 -81
  135. package/packages/level2/fd-app-toolbox/search/FdSearch.jsx +0 -56
  136. package/packages/level2/fd-app-toolbox/search/search-dialog/FdSearchDialog.jsx +0 -72
  137. package/packages/level2/fd-app-toolbox/search/search-dialog-provider.jsx +0 -16
  138. package/packages/level2/fd-app-toolbox/search/search-input/FdSearchInput.jsx +0 -49
  139. package/packages/level2/fd-app-toolbox/search/search-resource-results/FdSearchResourcesResults.jsx +0 -36
  140. package/packages/level2/fd-app-toolbox/search/search-result/FdSearchResult.jsx +0 -46
  141. package/packages/level2/fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResult.jsx +0 -43
  142. package/packages/level2/fd-app-toolbox/search/search-searchable-resource-results/FdSearchSearchableResourceResults.jsx +0 -22
  143. package/packages/level2/fd-app-toolbox/server/layout/private-layout/PrivateLayout.jsx +0 -32
  144. package/packages/level2/fd-app-toolbox/status-board/FdStatusBoard.jsx +0 -49
  145. package/packages/level2/fd-app-toolbox/status-board/status-board-item/FdStatusBoardItem.jsx +0 -17
  146. package/packages/level2/fd-app-toolbox/status-board/status-board-status/FdStatusBoardStatus.jsx +0 -27
  147. package/packages/level2/fd-app-toolbox/user-list/UserList.jsx +0 -58
  148. package/packages/level2/fd-component-toolbox/animation/FdLabelAnimation.jsx +0 -55
  149. package/packages/level2/fd-component-toolbox/avatar/FdAvatar.jsx +0 -50
  150. package/packages/level2/fd-component-toolbox/back-button/FdBackButton.jsx +0 -21
  151. package/packages/level2/fd-component-toolbox/badge/FdBadge.jsx +0 -19
  152. package/packages/level2/fd-component-toolbox/badge-toggle-list/FdBadgeToggleList.jsx +0 -47
  153. package/packages/level2/fd-component-toolbox/button/FdButton.jsx +0 -64
  154. package/packages/level2/fd-component-toolbox/calendar/FdCalendar.jsx +0 -68
  155. package/packages/level2/fd-component-toolbox/card/FdCard.jsx +0 -56
  156. package/packages/level2/fd-component-toolbox/card/FdCardBigDigits.jsx +0 -25
  157. package/packages/level2/fd-component-toolbox/chart/FdChart.jsx +0 -269
  158. package/packages/level2/fd-component-toolbox/checkbox/FdCheckbox.jsx +0 -39
  159. package/packages/level2/fd-component-toolbox/command/FdCommand.jsx +0 -123
  160. package/packages/level2/fd-component-toolbox/datepicker/FdDatePicker.jsx +0 -155
  161. package/packages/level2/fd-component-toolbox/dialog/FdDialog.jsx +0 -106
  162. package/packages/level2/fd-component-toolbox/dialog/YesOrNoDialog.jsx +0 -57
  163. package/packages/level2/fd-component-toolbox/drag-and-drop/FdDragDropContext.jsx +0 -19
  164. package/packages/level2/fd-component-toolbox/drag-and-drop/FdDraggable.jsx +0 -27
  165. package/packages/level2/fd-component-toolbox/drag-and-drop/FdDroppable.jsx +0 -22
  166. package/packages/level2/fd-component-toolbox/dropdown-menu/FdDropdownMenu.jsx +0 -198
  167. package/packages/level2/fd-component-toolbox/dynamic-layout/FdDynamicComponent.jsx +0 -27
  168. package/packages/level2/fd-component-toolbox/dynamic-layout/FdDynamicLayoutDragAndDrop.jsx +0 -78
  169. package/packages/level2/fd-component-toolbox/fade-out-text/FdFadeOutText.jsx +0 -52
  170. package/packages/level2/fd-component-toolbox/form/FdForm.jsx +0 -146
  171. package/packages/level2/fd-component-toolbox/icon/FdIcon.jsx +0 -192
  172. package/packages/level2/fd-component-toolbox/icon/custom-icons/FdFilterIcon.jsx +0 -11
  173. package/packages/level2/fd-component-toolbox/image/FdImage.jsx +0 -15
  174. package/packages/level2/fd-component-toolbox/input/FdInput.jsx +0 -94
  175. package/packages/level2/fd-component-toolbox/label/FdLabel.jsx +0 -19
  176. package/packages/level2/fd-component-toolbox/link/FdLink.jsx +0 -23
  177. package/packages/level2/fd-component-toolbox/list/FdList.jsx +0 -20
  178. package/packages/level2/fd-component-toolbox/list/list-item/FdListItem.jsx +0 -46
  179. package/packages/level2/fd-component-toolbox/loading/FdLoadingIndicator.jsx +0 -7
  180. package/packages/level2/fd-component-toolbox/logos/FacebookLogo.jsx +0 -11
  181. package/packages/level2/fd-component-toolbox/logos/GoogleLogo.jsx +0 -12
  182. package/packages/level2/fd-component-toolbox/logos/MicrosoftLogo.jsx +0 -11
  183. package/packages/level2/fd-component-toolbox/markdown/FdMarkdown.jsx +0 -105
  184. package/packages/level2/fd-component-toolbox/markdown/markdown-parser.jsx +0 -72
  185. package/packages/level2/fd-component-toolbox/multiselect/FdMultiselect.jsx +0 -240
  186. package/packages/level2/fd-component-toolbox/navigation/FdNavigation.jsx +0 -43
  187. package/packages/level2/fd-component-toolbox/navigation/navigation-item/FdNavigationItem.jsx +0 -23
  188. package/packages/level2/fd-component-toolbox/radio-group/FdRadioGroup.jsx +0 -46
  189. package/packages/level2/fd-component-toolbox/rich-text/FdRichText.jsx +0 -58
  190. package/packages/level2/fd-component-toolbox/save-status/FdSaveStatus.jsx +0 -40
  191. package/packages/level2/fd-component-toolbox/select/FdSelect.jsx +0 -173
  192. package/packages/level2/fd-component-toolbox/separator/FdSeparator.jsx +0 -19
  193. package/packages/level2/fd-component-toolbox/sheet/FdSheet.jsx +0 -121
  194. package/packages/level2/fd-component-toolbox/slide-toggle/FdSlideToggle.jsx +0 -57
  195. package/packages/level2/fd-component-toolbox/spinner/Spinner.jsx +0 -36
  196. package/packages/level2/fd-component-toolbox/subheading/FdSubHeading.jsx +0 -12
  197. package/packages/level2/fd-component-toolbox/switch/FdSwitch.jsx +0 -55
  198. package/packages/level2/fd-component-toolbox/tabs/FdTabs.jsx +0 -53
  199. package/packages/level2/fd-component-toolbox/textarea/FdTextArea.jsx +0 -42
  200. package/packages/level2/fd-component-toolbox/toaster/FdToaster.jsx +0 -20
  201. package/packages/level2/fd-component-toolbox/tooltip/FdTooltip.jsx +0 -80
  202. package/packages/level2/meta/browsers/base-multi-browser/FdBaseMultiBrowser.jsx +0 -72
  203. package/packages/level2/meta/browsers/base-multi-browser/base-multi-browser-dialog/FdBaseMultiBrowserDialog.jsx +0 -159
  204. package/packages/level2/meta/browsers/browser/FdBrowser.jsx +0 -58
  205. package/packages/level2/meta/browsers/browser/browser-dialog/FdBrowserDialog.jsx +0 -89
  206. package/packages/level2/meta/browsers/many-to-many-browser/FdManyToManyBrowser.jsx +0 -33
  207. package/packages/level2/meta/browsers/multi-browser/FdMultiBrowser.jsx +0 -32
  208. package/packages/level2/meta/card-list/FdCardList.jsx +0 -40
  209. package/packages/level2/meta/card-list/card/FdCard.jsx +0 -44
  210. package/packages/level2/meta/card-list/card/action-block/FdCardActionBlock.jsx +0 -70
  211. package/packages/level2/meta/card-list/card/content-block/FdCardContentBlock.jsx +0 -64
  212. package/packages/level2/meta/card-list/card/image-block/FdCardImage.jsx +0 -10
  213. package/packages/level2/meta/client/framework/hooks.jsx +0 -39
  214. package/packages/level2/meta/comment/FdComment.jsx +0 -16
  215. package/packages/level2/meta/comment/FdCommentList.jsx +0 -32
  216. package/packages/level2/meta/components/edit-image/FdEditImage.jsx +0 -42
  217. package/packages/level2/meta/components/edit-image/FdEditImageActionMenu.jsx +0 -31
  218. package/packages/level2/meta/components/edit-image/FdEditImageDropdownMenu.jsx +0 -42
  219. package/packages/level2/meta/components/file-upload/FileUpload.jsx +0 -103
  220. package/packages/level2/meta/components/file-upload/PreviewMedia.jsx +0 -36
  221. package/packages/level2/meta/components/multi-list/FdMultiList.jsx +0 -65
  222. package/packages/level2/meta/components/multi-list/FdMultiListEditResource.jsx +0 -31
  223. package/packages/level2/meta/edit-resource/FdEditResource.jsx +0 -135
  224. package/packages/level2/meta/edit-resource/FdEditResourceFormBody.jsx +0 -8
  225. package/packages/level2/meta/edit-resource/FdEditResourceHeader.jsx +0 -43
  226. package/packages/level2/meta/edit-resource/FdEditResourceSheet.jsx +0 -70
  227. package/packages/level2/meta/edit-resource/SaveCompleteProvider.jsx +0 -16
  228. package/packages/level2/meta/edit-resource/edit-link/FdEditLink.jsx +0 -48
  229. package/packages/level2/meta/edit-resource/edit-link/FdEditLinkResource.jsx +0 -18
  230. package/packages/level2/meta/edit-resource/edit-resource-dialog/FdEditResourceDialog.jsx +0 -34
  231. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceBlobField.jsx +0 -15
  232. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceEnumField.jsx +0 -35
  233. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceFlagsEnumField.jsx +0 -23
  234. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceImageField.jsx +0 -7
  235. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourcePropertyBlock.jsx +0 -38
  236. package/packages/level2/meta/edit-resource/edit-resource-property-block/FdEditResourceRichTextField.jsx +0 -16
  237. package/packages/level2/meta/edit-resource/edit-resource-property-block/edit-resource-fields.jsx +0 -53
  238. package/packages/level2/meta/edit-resource/edit-resource-property-field/FdEditResourcePropertyField.jsx +0 -105
  239. package/packages/level2/meta/filtering/filter/FdEnumFlagFilter.jsx +0 -40
  240. package/packages/level2/meta/filtering/filter/FdFilter.jsx +0 -123
  241. package/packages/level2/meta/filtering/filter/filters/BooleanFilter.jsx +0 -25
  242. package/packages/level2/meta/filtering/filter/filters/DateFilter.jsx +0 -10
  243. package/packages/level2/meta/filtering/filter/filters/EnumFilter.jsx +0 -44
  244. package/packages/level2/meta/filtering/filter/filters/GuidFilter.jsx +0 -28
  245. package/packages/level2/meta/filtering/filter/filters/IntegerFilter.jsx +0 -28
  246. package/packages/level2/meta/filtering/filter/filters/TextFilter.jsx +0 -11
  247. package/packages/level2/meta/filtering/resource-filter-list/FdResourceFilterList.jsx +0 -120
  248. package/packages/level2/meta/filtering/resource-filter-list/resource-list-dropdown-menu/ResourceListDropdownMenu.funcs.jsx +0 -4
  249. package/packages/level2/meta/filtering/resource-filter-list/resource-list-dropdown-menu/ResourceListDropdownMenu.jsx +0 -43
  250. package/packages/level2/meta/providers/global-provider/FdGlobalContext.jsx +0 -17
  251. package/packages/level2/meta/resource-list/ResourceList.jsx +0 -63
  252. package/packages/level2/meta/resource-list/resource-add-button.jsx +0 -11
  253. package/packages/level2/meta/resource-list/resource-list-card/FdResourceListCard.jsx +0 -7
  254. package/packages/level2/meta/resource-list/resource-list-filter/FdResourceListFilter.jsx +0 -11
  255. package/packages/level2/meta/resource-list/resource-table-list/FdResourceTableList.jsx +0 -14
  256. package/packages/level2/meta/table/FdTable.jsx +0 -147
  257. package/packages/level2/meta/table/body/FdTableBody.jsx +0 -9
  258. package/packages/level2/meta/table/body-cell/FdActionBodyCell.jsx +0 -145
  259. package/packages/level2/meta/table/body-cell/FdBlobBodyCell.jsx +0 -27
  260. package/packages/level2/meta/table/body-cell/FdBodyCell.jsx +0 -133
  261. package/packages/level2/meta/table/body-cell/FdBodyCellValue.jsx +0 -59
  262. package/packages/level2/meta/table/body-cell/FdBodyExpandCell.jsx +0 -6
  263. package/packages/level2/meta/table/body-cell/FdBodyExpandPropertyCell.jsx +0 -22
  264. package/packages/level2/meta/table/body-cell/FdCustomActionLink.jsx +0 -16
  265. package/packages/level2/meta/table/body-cell/FdMultiselectCellTemplate.jsx +0 -39
  266. package/packages/level2/meta/table/body-cell/FdViewCell.jsx +0 -12
  267. package/packages/level2/meta/table/body-row/FdTableBodyRow.jsx +0 -49
  268. package/packages/level2/meta/table/header/FdTableHeader.jsx +0 -54
  269. package/packages/level2/meta/table/header-cell/FdResizable.jsx +0 -18
  270. package/packages/level2/meta/table/header-cell/FdResizableEdgeHandle.jsx +0 -4
  271. package/packages/level2/meta/table/header-cell/FdTableHeaderActionCell.jsx +0 -49
  272. package/packages/level2/meta/table/header-cell/FdTableHeaderCell.jsx +0 -89
  273. package/packages/level2/meta/table/header-cell/FdTableHeaderCellActionButton.jsx +0 -23
  274. package/packages/level2/meta/table/pager/FdPager.jsx +0 -72
  275. package/packages/level2/meta/table/table-custom-action/TableCustomAction.jsx +0 -26
  276. package/packages/level2/meta/view/FdView.jsx +0 -31
  277. package/packages/level2/meta/view/FdViewSheet.jsx +0 -103
  278. package/packages/level2/meta/view/view-resource/FdViewResource.jsx +0 -108
  279. package/packages/level2/meta/view/view-resource/templates/ManyToOneTableHeaderCellTemplate.jsx +0 -13
  280. package/src/app/error.jsx +0 -5
  281. package/src/app/global-error.jsx +0 -5
  282. package/src/app/loading.jsx +0 -11
  283. package/src/hd/footer/HdFooter.jsx +0 -27
  284. package/src/hd/footer/hd-footer-item/HdFooterItem.jsx +0 -14
  285. package/src/lm/ai-scan/AiScanAction.jsx +0 -21
  286. package/src/lm/ai-scan/cell-templates/AiScanWebsiteResultCellTemplate.jsx +0 -31
  287. package/src/lm/components/LmCardReport.jsx +0 -12
  288. package/src/lm/configs/lm-list-configs.jsx +0 -72
  289. package/src/lm/google-place/action-dropdown/GooglePlaceActionDropdown.jsx +0 -42
  290. package/src/lm/google-place/actions/GooglePlaceSaveToGroupAction.jsx +0 -22
  291. package/src/lm/google-place/cell-templates/GooglePlaceBusinessInfoCellTemplate.jsx +0 -59
  292. package/src/lm/google-place/cell-templates/GooglePlaceEmailsCellTemplate.jsx +0 -34
  293. package/src/lm/google-place/cell-templates/GooglePlaceScanAction.jsx +0 -15
  294. package/src/lm/lead/action-dropdown/LeadActionDropdown.jsx +0 -39
  295. package/src/lm/lead/actions/move-to-group-action/LeadMoveToGroupAction.jsx +0 -28
  296. package/src/lm/lead/cell-templates/LeadBusinessInfoCellTemplate.jsx +0 -64
  297. package/src/lm/lead/cell-templates/LeadScanAction.jsx +0 -15
  298. package/src/lm/lead/lead-google-place/LeadGooglePlaceIndicator.jsx +0 -8
  299. package/src/lm/lead/lead-google-place/LeadGooglePlaceIndicators.jsx +0 -17
  300. package/src/lm/lead/lead-google-place/LeadGooglePlaceInfo.jsx +0 -15
  301. package/src/lm/lead/view/LeadsView.jsx +0 -8
  302. package/src/lm/pages/HomePage.jsx +0 -53
  303. package/types-output/tsconfig.tsbuildinfo +0 -1
@@ -1,105 +0,0 @@
1
- "use client";
2
- import React, { useCallback, useState } from "react";
3
- import { crudActions, propertyTypes } from "@fd-toolbox/enums/enums";
4
- import { FdMarkdown } from "@fd-component-toolbox/markdown/FdMarkdown";
5
- import { FdSwitch } from "@fd-component-toolbox/switch/FdSwitch";
6
- import { FdEditResourceEnumField } from "@meta/edit-resource/edit-resource-property-block/FdEditResourceEnumField";
7
- import { FdEditResourceFlagsEnumField } from "@meta/edit-resource/edit-resource-property-block/FdEditResourceFlagsEnumField";
8
- import { FdInput } from "@fd-component-toolbox/input/FdInput";
9
- import { FdDatePicker } from "@fd-component-toolbox/datepicker/FdDatePicker";
10
- import { FdTextarea } from "@fd-component-toolbox/textarea/FdTextArea";
11
- import { FdFormControl, FdFormField, FdFormItem, FdFormMessage } from "@fd-component-toolbox/form/FdForm";
12
- import { isMarkdown, isEnum, isFlagsEnum, isRichText, isDateOnly, isDateTime, isBigText, isBlobList, } from "@meta/core/property-types";
13
- import { getRelationResourceId, getRequiredLabel, isManyToOneBrowserField, isIdProperty, isManyToManyBrowserField, isOneToManyBrowserField, isRelationField, onBrowserChange, onEditorChange, onMultiBrowserChange, } from "@meta/edit-resource/edit-resource-property-block/FdEditResourcePropertyBlock.funcs";
14
- import { parseStringStartDate } from "@fd-toolbox/dates/date-times";
15
- import { fdBrowserField, fdManyToManyBrowserField, fdMultiBrowserField, } from "@meta/edit-resource/edit-resource-property-block/edit-resource-fields";
16
- import { isDefaultInputField } from "@meta/edit-resource/services/edit-resource-components";
17
- import { FdEditResourceBlobField } from "@meta/edit-resource/edit-resource-property-block/FdEditResourceBlobField";
18
- import { FdEditResourceRichTextField } from "@meta/edit-resource/edit-resource-property-block/FdEditResourceRichTextField";
19
- import { editFormElementSuffixes } from "@fd-toolbox/constants/element-suffixes";
20
- import { cn } from "@fd-toolbox/lib/utils";
21
- import { hasPropertyPermission } from "@meta/auth/permissions/permission-checker";
22
- export function FdEditResourcePropertyField({ uiPropertyMeta, propertyMeta, form, formFieldOption, resource, propertyConfig, readOnlyResource, loadComplete, excludeResourceIds, isNew, onChange, onItemClick, parentContextName, }) {
23
- let result;
24
- const displayName = propertyMeta.displayName;
25
- const defaultValue = form.getValues(propertyMeta.name);
26
- const relatedResourceId = getRelationResourceId(propertyMeta, resource);
27
- const hasPermission = hasPropertyPermission(propertyMeta.id, crudActions.update);
28
- const [editorContent, setEditorContent] = useState("");
29
- const [isChecked, setIsChecked] = useState(!!resource[uiPropertyMeta.name]);
30
- const onTextFieldChange = useCallback((name) => {
31
- onChange?.(form.getValues(name), name);
32
- }, [onChange, form]);
33
- const handleEditorChange = (content, propertyName) => {
34
- onEditorChange(form, propertyName, content, setEditorContent);
35
- };
36
- const onMultiBrowserValueChange = useCallback((selected, propertyMetaValue) => {
37
- onMultiBrowserChange(form.setValue, selected, propertyMetaValue, onChange);
38
- }, [form, onChange]);
39
- const onBrowserValueChange = useCallback((propertyMetaValue, value) => {
40
- onBrowserChange(form.setValue, value, propertyMetaValue, onChange);
41
- }, [form, onChange]);
42
- if (!hasPermission)
43
- return result;
44
- if (isRelationField(propertyMeta)) {
45
- return isBlobList(propertyMeta) ? (<FdEditResourceBlobField isNew={isNew} label={getRequiredLabel(propertyMeta.required, displayName)} form={form} relatedResourceId={resource.id} propertyMeta={propertyMeta}/>) : (<>
46
- {isManyToOneBrowserField(propertyMeta) &&
47
- fdBrowserField(parentContextName, uiPropertyMeta, readOnlyResource, onBrowserValueChange, excludeResourceIds, relatedResourceId, form, onItemClick, isNew, propertyMeta)}
48
- {isOneToManyBrowserField(propertyMeta) &&
49
- fdMultiBrowserField(parentContextName, readOnlyResource, onMultiBrowserValueChange, resource.id, form, onItemClick, isNew, propertyMeta)}
50
- {isManyToManyBrowserField(propertyMeta) &&
51
- fdManyToManyBrowserField(parentContextName, readOnlyResource, relatedResourceId, form, onItemClick, isNew, propertyMeta, onMultiBrowserValueChange)}
52
- </>);
53
- }
54
- else {
55
- return (<>
56
- {isMarkdown(propertyMeta.type, propertyMeta.typeFormat) && (<FdMarkdown elementId={uiPropertyMeta.name + editFormElementSuffixes.markdown} label={getRequiredLabel(propertyMeta.required, displayName)} required={propertyMeta.required} value={defaultValue} name={uiPropertyMeta.name} form={form} readOnly={readOnlyResource} skipAnimationOnce={!loadComplete} onChange={(val) => {
57
- form.setValue(propertyMeta.name, val);
58
- }} onBlur={() => onTextFieldChange(propertyMeta.name)}/>)}
59
- {propertyMeta.type === propertyTypes.boolean && (<FdFormField control={form.control} name={uiPropertyMeta.name} render={({ field }) => (<FdFormItem>
60
- <FdFormControl>
61
- <FdSwitch id={uiPropertyMeta.name + editFormElementSuffixes.checkbox} text={displayName} form={form} name={uiPropertyMeta.name} checked={isChecked} isDisabled={propertyConfig?.isDisabled ?? false} readOnly={readOnlyResource} skipAnimationOnce={!loadComplete} onCheckedChange={(checked) => {
62
- field.onChange(checked);
63
- setIsChecked(!isChecked);
64
- onTextFieldChange(uiPropertyMeta.name);
65
- }}/>
66
- </FdFormControl>
67
- <FdFormMessage />
68
- </FdFormItem>)}/>)}
69
- {isEnum(propertyMeta.type, propertyMeta.typeFormat) && (<FdEditResourceEnumField uiPropertyMeta={uiPropertyMeta} form={form} readOnly={readOnlyResource} skipAnimationOnce={!loadComplete} onChange={onChange} propertyMeta={propertyMeta}/>)}
70
- {isFlagsEnum(propertyMeta.type, propertyMeta.typeFormat) && (<FdEditResourceFlagsEnumField uiPropertyMeta={uiPropertyMeta} form={form} skipAnimationOnce={!loadComplete} readOnly={readOnlyResource} onChange={onChange} propertyMeta={propertyMeta}/>)}
71
- {isRichText(propertyMeta.type, propertyMeta.typeFormat) && (<FdFormItem>
72
- <FdFormField control={form.control} name={uiPropertyMeta.name} render={() => (<FdEditResourceRichTextField id={uiPropertyMeta.name + editFormElementSuffixes.richText} value={editorContent} onChange={(content) => handleEditorChange(content, propertyMeta.name)} placeholder="Start typing..." debounceTime={500} defaultValue={defaultValue ? String(defaultValue) : ""} label={getRequiredLabel(propertyMeta.required, displayName)} onBlur={() => onTextFieldChange(propertyMeta.name)}/>)}/>
73
- </FdFormItem>)}
74
- {isDefaultInputField(propertyMeta) && (<div className={cn("w-full", isIdProperty(propertyMeta) && "opacity-0")}>
75
- <FdFormField control={form.control} name={uiPropertyMeta.name} render={({ field }) => (<FdFormItem>
76
- <FdFormControl>
77
- <FdInput style={{
78
- cursor: isIdProperty(propertyMeta) ? "default" : "text",
79
- }} showClearIcon={!readOnlyResource} {...form.register(propertyMeta.name, formFieldOption)} {...field} readOnly={readOnlyResource} placeholder={displayName} inputId={uiPropertyMeta.name + editFormElementSuffixes.input} required={propertyMeta.required} label={getRequiredLabel(propertyMeta.required, displayName)} onBlur={() => onTextFieldChange(propertyMeta.name)} skipAnimationOnce={!loadComplete} onChange={(event) => {
80
- field.onChange(event);
81
- }} disabled={propertyConfig?.isDisabled ?? false}/>
82
- </FdFormControl>
83
- <FdFormMessage />
84
- </FdFormItem>)}/>
85
- {propertyConfig?.description && (<p className="mt-2 pl-1 text-xs opacity-60">{propertyConfig.description}</p>)}
86
- </div>)}
87
- {(isDateOnly(propertyMeta.type, propertyMeta.typeFormat) ||
88
- isDateTime(propertyMeta.type, propertyMeta.typeFormat)) && (<FdDatePicker label={displayName} date={defaultValue} form={form} name={propertyMeta.name} inputId={propertyMeta.name + editFormElementSuffixes.datePicker} enableTime={isDateTime(propertyMeta.type, propertyMeta.typeFormat)} readOnly={readOnlyResource} skipAnimationOnce={!loadComplete} onDateValueChange={(val) => {
89
- if (val) {
90
- onChange?.(parseStringStartDate(val), uiPropertyMeta.name);
91
- }
92
- }}/>)}
93
- {isBigText(propertyMeta.type, propertyMeta.typeFormat) && (<div className="w-full">
94
- <FdFormField control={form.control} name={uiPropertyMeta.name} render={({ field }) => (<FdFormItem>
95
- <FdFormControl>
96
- <FdTextarea placeholder={propertyConfig?.placeholder} required={propertyMeta.required} id={propertyMeta.name + editFormElementSuffixes.textarea} {...field} {...form.register(propertyMeta.name, formFieldOption)} readOnly={readOnlyResource} onChange={(event) => {
97
- field.onChange(event);
98
- }} label={getRequiredLabel(propertyMeta.required, displayName)} onBlur={() => onTextFieldChange(propertyMeta.name)}/>
99
- </FdFormControl>
100
- <FdFormMessage />
101
- </FdFormItem>)}/>
102
- </div>)}
103
- </>);
104
- }
105
- }
@@ -1,40 +0,0 @@
1
- import { FdSelect, FdSelectContent, FdSelectGroup, FdSelectItem, FdSelectTrigger, FdSelectValue, } from "@fd-component-toolbox/select/FdSelect";
2
- import { enumFilterTypes } from "@meta/filtering/filter/FdFilter.funcs";
3
- import { elementSuffixes } from "@fd-toolbox/constants/element-suffixes";
4
- /**
5
- * Filter component for enum flag properties with operator selection and single-value selection.
6
- *
7
- * @param props - {@link FdEnumFlagFilterProps}
8
- */
9
- export function FdEnumFlagFilter({ rightHandResult, displayName, propertyMeta, onOperatorTypeChangeCallback, onRightHandChangeCallback, inputId, onOpenChangeCallback, buttonRef, }) {
10
- return (<div className="flex min-w-full items-center">
11
- <div className="mr-1 w-10">
12
- <FdSelect value={rightHandResult} onValueChange={onOperatorTypeChangeCallback}>
13
- <FdSelectTrigger id={propertyMeta.name + elementSuffixes.filterOperator} variant="float">
14
- <FdSelectValue />
15
- </FdSelectTrigger>
16
- <FdSelectContent>
17
- <FdSelectGroup>
18
- {enumFilterTypes.map((item) => (<FdSelectItem key={`${item.text}_${item.type}`} value={item.type}>
19
- {item.text}
20
- </FdSelectItem>))}
21
- </FdSelectGroup>
22
- </FdSelectContent>
23
- </FdSelect>
24
- </div>
25
- <div className="inline-block flex-1">
26
- <FdSelect value={displayName} onValueChange={onRightHandChangeCallback} onOpenChange={onOpenChangeCallback}>
27
- <FdSelectTrigger ref={buttonRef} id={inputId} label={propertyMeta.displayName} shouldAnimate={!!rightHandResult && rightHandResult !== "None"} value={rightHandResult} variant="float">
28
- <FdSelectValue className="mt-0 w-full" placeholder={displayName}/>
29
- </FdSelectTrigger>
30
- <FdSelectContent>
31
- <FdSelectGroup>
32
- {propertyMeta.enumerationValues?.map((value, index) => (<FdSelectItem className="min-h-6 whitespace-nowrap" key={value} value={propertyMeta.enumerationDisplayName[index]}>
33
- {propertyMeta.enumerationDisplayName[index]}
34
- </FdSelectItem>))}
35
- </FdSelectGroup>
36
- </FdSelectContent>
37
- </FdSelect>
38
- </div>
39
- </div>);
40
- }
@@ -1,123 +0,0 @@
1
- "use client";
2
- import React, { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
- import { onInitFilter, onBrowserChanged, disableFilterInput, getFilterRightHand, isIntegerField, onFilterChange, onDateChange, onOperatorTypeChange, getFilterDisplayValues, filterTypes, onInputBlur, } from "@meta/filtering/filter/FdFilter.funcs";
4
- import { isDefaultInputField } from "@meta/edit-resource/services/edit-resource-components";
5
- import { isFlagsEnum, isGuid, isEnum, isDateTime, isDateOnly, isBooleanField, } from "@meta/core/property-types";
6
- import { filterOperatorTypes } from "@fd-toolbox/enums/enums";
7
- import { useForm, FormProvider } from "react-hook-form";
8
- import { FdEnumFlagFilter } from "@meta/filtering/filter/FdEnumFlagFilter";
9
- import { EnumFilter } from "@meta/filtering/filter/filters/EnumFilter";
10
- import { IntegerFilter } from "@meta/filtering/filter/filters/IntegerFilter";
11
- import { BooleanFilter } from "@meta/filtering/filter/filters/BooleanFilter";
12
- import { DateFilter } from "@meta/filtering/filter/filters/DateFilter";
13
- import { TextFilter } from "@meta/filtering/filter/filters/TextFilter";
14
- import { GuidFilter } from "@meta/filtering/filter/filters/GuidFilter";
15
- import { cn } from "@fd-toolbox/lib/utils";
16
- import { elementSuffixes } from "@fd-toolbox/constants/element-suffixes";
17
- /**
18
- * Сomponent for filtering data.
19
- *
20
- * @param props - {@link FdFilterProps}
21
- */
22
- export function FdFilter({ propertyMeta, onChange, className, state, onStateChange, relatedUiResourceMetas, type, resetCounter, ...props }) {
23
- const form = useForm({
24
- defaultValues: { [propertyMeta.name]: "" },
25
- });
26
- const [filterOperatorType, setFilterOperatorType] = useState(filterOperatorTypes.none);
27
- const [inputId, setInputId] = useState("");
28
- const [disableEnumFilter, setDisableEnumFilter] = useState(false);
29
- const [disabled, setDisabled] = useState(props.disabled ?? false);
30
- const [selectedResourceIds, setSelectedResourceIds] = useState([]);
31
- const [displayName, setDisplayName] = useState(propertyMeta.displayName);
32
- const [displayDate, setDisplayDate] = useState("");
33
- const rightHandResult = useMemo(() => {
34
- return getFilterRightHand(state, filterOperatorType);
35
- }, [state, filterOperatorType]);
36
- const [isInputShowed, setIsInputShowed] = useState(false);
37
- const inputRef = useRef(null);
38
- const buttonRef = useRef(null);
39
- const openTriggerRef = useRef(null);
40
- const rightHandResultForFdMultiselect = useMemo(() => {
41
- if (rightHandResult) {
42
- return rightHandResult.split(",");
43
- }
44
- else {
45
- return [...rightHandResult];
46
- }
47
- }, [rightHandResult]);
48
- const displayValues = useMemo(() => {
49
- return getFilterDisplayValues(state, propertyMeta);
50
- }, [propertyMeta, state]);
51
- useEffect(() => {
52
- onInitFilter(state, displayName, setDisplayName, propertyMeta, setFilterOperatorType, setSelectedResourceIds, setDisplayDate, setInputId);
53
- }, [displayName, propertyMeta, state]);
54
- useEffect(() => {
55
- if (resetCounter !== undefined) {
56
- setIsInputShowed(false);
57
- }
58
- }, [resetCounter]);
59
- const onDateChangeCallback = useCallback(async (date) => {
60
- onDateChange(state, onStateChange, filterOperatorType, setDisabled, setDisableEnumFilter, date, onChange);
61
- if (!date)
62
- setIsInputShowed(false);
63
- }, [filterOperatorType, onChange, onStateChange, state]);
64
- const onRightHandChangeCallback = useCallback(async (value) => {
65
- await onFilterChange({
66
- ...state,
67
- rightSide: value,
68
- }, onStateChange, filterOperatorType, setDisabled, setDisableEnumFilter, setFilterOperatorType, onChange);
69
- if (value === "none" || value === "" || (Array.isArray(value) && value.length === 0)) {
70
- setIsInputShowed?.(false);
71
- }
72
- }, [state, onStateChange, filterOperatorType, onChange]);
73
- const onOperatorTypeChangeCallback = useCallback(async (value) => {
74
- await onOperatorTypeChange(value, state, onStateChange, setFilterOperatorType, setDisabled, setDisabled, onChange);
75
- }, [state, onStateChange, onChange]);
76
- const onBrowserChangeCallback = useCallback(async (selectedResources, resourceMeta) => {
77
- await onBrowserChanged(selectedResources, propertyMeta, state, filterOperatorType, onStateChange, setDisabled, setDisableEnumFilter, setSelectedResourceIds, form, resourceMeta, onChange, setIsInputShowed);
78
- }, [filterOperatorType, onStateChange, propertyMeta, state, form, onChange]);
79
- const onOpenChangeCallback = useCallback((open) => {
80
- if (!open && (rightHandResult === "" || rightHandResult === "none")) {
81
- setIsInputShowed?.(false);
82
- }
83
- else {
84
- setIsInputShowed?.(true);
85
- }
86
- }, [rightHandResult, setIsInputShowed]);
87
- const onGuidFilterClose = useCallback(() => {
88
- setIsInputShowed?.(false);
89
- }, []);
90
- const hendleOnHoverClick = useCallback(() => {
91
- setIsInputShowed(true);
92
- requestAnimationFrame(() => {
93
- inputRef?.current?.focus();
94
- buttonRef?.current?.click();
95
- openTriggerRef.current?.open();
96
- });
97
- }, []);
98
- const handleOnBlur = useCallback((val) => {
99
- onInputBlur(val, setIsInputShowed);
100
- }, [setIsInputShowed]);
101
- return (<FormProvider {...form}>
102
- <div className={className}>
103
- {state && (<>
104
- {type === filterTypes.default && !isInputShowed && (<div className="flex h-8 w-fit cursor-pointer items-center justify-center bg-popover px-8" onClick={hendleOnHoverClick} id={inputId + elementSuffixes.button}>
105
- <p className="text-sm font-semibold text-fd-accent">{displayName}</p>
106
- </div>)}
107
- <div className={cn("hidden", isInputShowed && "block max-w-36")}>
108
- {isEnum(propertyMeta.type, propertyMeta.typeFormat) && (<EnumFilter filterOperatorType={filterOperatorType} onOperatorTypeChange={onOperatorTypeChangeCallback} rightHandResult={rightHandResultForFdMultiselect} onRightHandChange={onRightHandChangeCallback} displayValues={displayValues} disableEnumFilter={disableEnumFilter} displayName={displayName} propertyMeta={propertyMeta} inputId={inputId} onOpenChangeCallback={onOpenChangeCallback} ref={openTriggerRef}/>)}
109
- {isDefaultInputField(propertyMeta) && isIntegerField(propertyMeta) && (<IntegerFilter filterOperatorType={filterOperatorType} onOperatorTypeChange={onOperatorTypeChangeCallback} rightHandResult={rightHandResult} onRightHandChange={onRightHandChangeCallback} displayName={displayName} disableFilterInput={disableFilterInput} inputId={inputId} inputRef={inputRef} onBlur={handleOnBlur}/>)}
110
- {isBooleanField(propertyMeta) && (<BooleanFilter rightHandResult={rightHandResult} onRightHandChange={onRightHandChangeCallback} displayName={propertyMeta.displayName} state={state} filterOperatorType={filterOperatorType} inputId={inputId} buttonRef={buttonRef} onOpenChangeCallback={onOpenChangeCallback}/>)}
111
- {(isDateOnly(propertyMeta.type, propertyMeta.typeFormat) ||
112
- isDateTime(propertyMeta.type, propertyMeta.typeFormat)) && (<DateFilter displayName={propertyMeta.displayName} displayDate={displayDate} onDateChange={onDateChangeCallback} onOpenChangeCallback={onOpenChangeCallback} ref={openTriggerRef}/>)}
113
- {!isGuid(propertyMeta) &&
114
- isDefaultInputField(propertyMeta) &&
115
- !isIntegerField(propertyMeta) &&
116
- !isDateOnly(propertyMeta.type, propertyMeta.typeFormat) && (<TextFilter displayName={displayName} rightHandResult={rightHandResult} onRightHandChange={onRightHandChangeCallback} inputId={inputId} inputRef={inputRef} onBlur={handleOnBlur}/>)}
117
- {isGuid(propertyMeta) && (<GuidFilter onClose={onGuidFilterClose} filterOperatorType={filterOperatorType} onOperatorTypeChange={onOperatorTypeChangeCallback} selectedResourceIds={selectedResourceIds} setSelectedResourceIds={setSelectedResourceIds} propertyMeta={propertyMeta} onBrowserChange={onBrowserChangeCallback} disabled={disabled} form={form} inputId={inputId} relatedUiResourceMetas={relatedUiResourceMetas} ref={openTriggerRef}/>)}
118
- {isFlagsEnum(propertyMeta.type, propertyMeta.typeFormat) && (<FdEnumFlagFilter rightHandResult={rightHandResult} displayName={displayName} propertyMeta={propertyMeta} onOperatorTypeChangeCallback={onOperatorTypeChangeCallback} onRightHandChangeCallback={onRightHandChangeCallback} inputId={inputId} buttonRef={buttonRef} onOpenChangeCallback={onOpenChangeCallback}/>)}
119
- </div>
120
- </>)}
121
- </div>
122
- </FormProvider>);
123
- }
@@ -1,25 +0,0 @@
1
- import { FdSelect, FdSelectContent, FdSelectGroup, FdSelectItem, FdSelectTrigger, } from "@fd-component-toolbox/select/FdSelect";
2
- import { capitalizeString } from "@fd-toolbox/strings/case-converters";
3
- import { getFilterRightHandValue } from "@meta/filtering/filter/FdFilter.funcs";
4
- import { elementPrefixes } from "@meta/constants/element-prefixes";
5
- export const booleanFilterSelectOptions = [
6
- { value: "none", label: "None" },
7
- { value: "true", label: "Yes" },
8
- { value: "false", label: "No" },
9
- ];
10
- export function BooleanFilter({ rightHandResult, onRightHandChange, displayName, state, filterOperatorType, inputId, onOpenChangeCallback, buttonRef, }) {
11
- return (<div className="relative min-w-full">
12
- <FdSelect value={rightHandResult} onValueChange={onRightHandChange} onOpenChange={onOpenChangeCallback}>
13
- <FdSelectTrigger ref={buttonRef} id={inputId} label={displayName} shouldAnimate={!!rightHandResult && rightHandResult !== "none"} variant="float">
14
- {capitalizeString(getFilterRightHandValue(state, filterOperatorType))}
15
- </FdSelectTrigger>
16
- <FdSelectContent>
17
- <FdSelectGroup>
18
- {booleanFilterSelectOptions.map((option) => (<FdSelectItem id={elementPrefixes.selectItem + option.label} key={option.value} value={option.value}>
19
- {option.label}
20
- </FdSelectItem>))}
21
- </FdSelectGroup>
22
- </FdSelectContent>
23
- </FdSelect>
24
- </div>);
25
- }
@@ -1,10 +0,0 @@
1
- import { FdDatePicker } from "@fd-component-toolbox/datepicker/FdDatePicker";
2
- /**
3
- * Date filter component based on {@link FdDatePicker}.
4
- * Designed to be used in filters, forms or dashboards where selecting a date is required.
5
- *
6
- * @see {@link DateFilterProps} for component props
7
- */
8
- export function DateFilter({ displayName, displayDate, onDateChange, onOpenChangeCallback, ref, }) {
9
- return (<FdDatePicker variant="float" label={displayName} date={displayDate} onDateValueChange={onDateChange} onOpenChange={onOpenChangeCallback} ref={ref}/>);
10
- }
@@ -1,44 +0,0 @@
1
- import { FdSelect, FdSelectContent, FdSelectGroup, FdSelectItem, FdSelectTrigger, FdSelectValue, } from "@fd-component-toolbox/select/FdSelect";
2
- import { FdMultiselect, FdMultiselectContent, FdMultiselectInput, FdMultiselectItem, FdMultiselectList, FdMultiselectTrigger, } from "@fd-component-toolbox/multiselect/FdMultiselect";
3
- import { cn } from "@fd-toolbox/lib/utils";
4
- import { enumFilterTypes, getFilterShortValue } from "@meta/filtering/filter/FdFilter.funcs";
5
- import { elementSuffixes } from "@fd-toolbox/constants/element-suffixes";
6
- /**
7
- * Filter component for enumeration properties with operator selection and multi-value selection
8
- *
9
- * @param props - {@link EnumFilterProps}
10
- */
11
- export function EnumFilter({ filterOperatorType, onOperatorTypeChange, rightHandResult, onRightHandChange, displayValues, disableEnumFilter, displayName, propertyMeta, inputId, onOpenChangeCallback, ref, }) {
12
- return (<div className="flex min-w-full items-center">
13
- <div className="mr-1 w-full max-w-9">
14
- <FdSelect value={filterOperatorType} onValueChange={onOperatorTypeChange}>
15
- <FdSelectTrigger id={propertyMeta.name + elementSuffixes.filterOperator} variant="float" className="flex justify-center gap-px" size="short">
16
- <FdSelectValue>
17
- {getFilterShortValue(enumFilterTypes, filterOperatorType)}
18
- </FdSelectValue>
19
- </FdSelectTrigger>
20
- <FdSelectContent>
21
- <FdSelectGroup>
22
- {enumFilterTypes.map((item, index) => (<FdSelectItem index={index} key={item.type} value={item.type} className="min-h-6">
23
- {item.text}
24
- </FdSelectItem>))}
25
- </FdSelectGroup>
26
- </FdSelectContent>
27
- </FdSelect>
28
- </div>
29
- <div className="inline-block flex-1">
30
- <FdMultiselect id={inputId} values={rightHandResult} onValuesChange={onRightHandChange} displayValues={displayValues} disabled={disableEnumFilter} variant="float" onOpenChange={onOpenChangeCallback} ref={ref}>
31
- <FdMultiselectTrigger>
32
- <FdMultiselectInput id={inputId} className="mt-0 w-full" animatedPlaceholder={displayName}/>
33
- </FdMultiselectTrigger>
34
- <FdMultiselectContent>
35
- <FdMultiselectList className="z-20">
36
- {propertyMeta.enumerationValues?.map((value) => (<FdMultiselectItem className={cn("min-h-6 whitespace-nowrap")} key={value.toString()} value={value.toString()}>
37
- {propertyMeta.enumerationDisplayName?.[Number(value)]}
38
- </FdMultiselectItem>))}
39
- </FdMultiselectList>
40
- </FdMultiselectContent>
41
- </FdMultiselect>
42
- </div>
43
- </div>);
44
- }
@@ -1,28 +0,0 @@
1
- "use client";
2
- import { FdSelect, FdSelectContent, FdSelectGroup, FdSelectItem, FdSelectTrigger, FdSelectValue, } from "@fd-component-toolbox/select/FdSelect";
3
- import { FdMultiBrowser } from "@meta/browsers/multi-browser/FdMultiBrowser";
4
- import { browserFilterTypes, getFilterShortValue } from "@meta/filtering/filter/FdFilter.funcs";
5
- export function GuidFilter({ filterOperatorType, onOperatorTypeChange, selectedResourceIds, setSelectedResourceIds, propertyMeta, onBrowserChange, disabled, form, inputId, onClose, relatedUiResourceMetas, ref, }) {
6
- return (<div className="flex min-w-9 flex-row items-center gap-1">
7
- <div className="w-full max-w-9">
8
- <FdSelect value={filterOperatorType} onValueChange={onOperatorTypeChange}>
9
- <FdSelectTrigger id={inputId} variant="float" className="flex justify-center gap-px" size="short">
10
- <FdSelectValue>
11
- {getFilterShortValue(browserFilterTypes, filterOperatorType)}
12
- </FdSelectValue>
13
- </FdSelectTrigger>
14
- <FdSelectContent>
15
- <FdSelectGroup>
16
- {browserFilterTypes.map((item, index) => (<FdSelectItem index={index} key={item.type} value={item.type} className="min-h-6">
17
- {item.text}
18
- </FdSelectItem>))}
19
- </FdSelectGroup>
20
- </FdSelectContent>
21
- </FdSelect>
22
- </div>
23
- <FdMultiBrowser selectedResourceIds={selectedResourceIds} setSelectedResourceIds={setSelectedResourceIds} getSelectedResourcesFromApi={false} propertyMeta={propertyMeta} required={false} onChange={onBrowserChange} onClose={onClose} disabled={disabled} form={form} variant="float" relatedUiResourceMeta={relatedUiResourceMetas?.find((uiResourceMeta) => {
24
- return (propertyMeta.relation?.relatedResourceName ===
25
- uiResourceMeta.resourceMeta.resourceName);
26
- })} ref={ref}/>
27
- </div>);
28
- }
@@ -1,28 +0,0 @@
1
- import { FdSelect, FdSelectContent, FdSelectGroup, FdSelectItem, FdSelectTrigger, FdSelectValue, } from "@fd-component-toolbox/select/FdSelect";
2
- import { FdInput } from "@fd-component-toolbox/input/FdInput";
3
- import { numberFilterTypes, getFilterShortValue } from "@meta/filtering/filter/FdFilter.funcs";
4
- import { filterOperatorTypes } from "@fd-toolbox/enums/enums";
5
- import { oDataNullValue } from "@fd-toolbox/odata/odata-constants";
6
- export function IntegerFilter({ filterOperatorType, onOperatorTypeChange, rightHandResult, onRightHandChange, displayName, disableFilterInput, inputId, inputRef, onBlur, }) {
7
- return (<div className="flex min-w-full">
8
- <div className="mr-1 inline-block w-full max-w-9">
9
- <FdSelect value={filterOperatorType} onValueChange={onOperatorTypeChange}>
10
- <FdSelectTrigger variant="float" className="flex justify-center gap-px" size="short">
11
- {filterOperatorType !== filterOperatorTypes.none && (<FdSelectValue>
12
- {getFilterShortValue(numberFilterTypes, filterOperatorType)}
13
- </FdSelectValue>)}
14
- </FdSelectTrigger>
15
- <FdSelectContent>
16
- <FdSelectGroup>
17
- {numberFilterTypes.map((item, index) => (<FdSelectItem index={index} key={item.type} value={item.type} className="min-h-6">
18
- {item.text}
19
- </FdSelectItem>))}
20
- </FdSelectGroup>
21
- </FdSelectContent>
22
- </FdSelect>
23
- </div>
24
- <div className="inline-block w-64">
25
- <FdInput inputId={inputId} showClearIcon={true} value={rightHandResult !== oDataNullValue ? rightHandResult : ""} onChange={onRightHandChange} disabled={disableFilterInput(filterOperatorType)} label={displayName} variant="float" ref={inputRef} onBlur={onBlur}/>
26
- </div>
27
- </div>);
28
- }
@@ -1,11 +0,0 @@
1
- import { FdInput } from "@fd-component-toolbox/input/FdInput";
2
- /**
3
- * Text filter component for filtering data by text input
4
- *
5
- * @param props - {@link TextFilterProps}
6
- */
7
- export function TextFilter({ displayName, rightHandResult, onRightHandChange, inputId, inputRef, onBlur, }) {
8
- return (<div className="min-w-full">
9
- <FdInput inputId={inputId} label={displayName} showClearIcon={true} value={rightHandResult} onChange={onRightHandChange} variant="float" ref={inputRef} onBlur={onBlur}/>
10
- </div>);
11
- }
@@ -1,120 +0,0 @@
1
- "use client";
2
- import { useCallback, useEffect, useImperativeHandle, useLayoutEffect, useMemo, useRef, useState, } from "react";
3
- import * as Collapsible from "@radix-ui/react-collapsible";
4
- import { getFilteredKeys, getFilters, onResize, onStateChange, setObserver, resetResourceFilterListState, } from "@meta/filtering/resource-filter-list/FdResourceFilterList.funcs";
5
- import { FdButton } from "@fd-component-toolbox/button/FdButton";
6
- import { FdFilter } from "@meta/filtering/filter/FdFilter";
7
- import { FdIcon, iconNames } from "@fd-component-toolbox/icon/FdIcon";
8
- import { initResourceFilterList } from "@meta/filtering/resource-filter-list/resource-filter-lists";
9
- import { useAsyncEffect } from "@fd-toolbox/hooks/use-async-effect";
10
- import { cn } from "@fd-toolbox/lib/utils";
11
- import { fdFilterListPositions } from "@meta/filtering/filter-list-positions";
12
- import { FdBackButton } from "@fd-component-toolbox/back-button/FdBackButton";
13
- import { useFdRouter } from "@meta/client/framework/hooks";
14
- import { elementSuffixes } from "@fd-toolbox/constants/element-suffixes";
15
- import { FdTooltip, FdTooltipContent, FdTooltipProvider, FdTooltipTrigger, } from "@fd-component-toolbox/tooltip/FdTooltip";
16
- import { getManyToManyRelatedPropertyMetas } from "@meta/meta-providers";
17
- import { filterTypes } from "@meta/filtering/filter/FdFilter.funcs";
18
- export const resourceFilterListId = "resource-filter-list";
19
- /**
20
- * Resource filter list component with collapsible filters, action buttons, and responsive layout.
21
- *
22
- * @see {@link FdResourceFilterListProps} for component props
23
- * @see {@link FdResourceFilterListComponent} for available ref methods
24
- * @see {@link ResourceFilterListConfig} for configuration options
25
- */
26
- export function FdResourceFilterList({ ref, uiResourceMeta, stateKey, onFilterChange, queryODataFilters, onRefreshResources, showRefreshButton, showResetButton, position, showBackButton, relatedUiResourceMetas, type, ...props }) {
27
- const router = useFdRouter();
28
- const [state, setState] = useState({});
29
- const [filterKeys, setFilterKeys] = useState([]);
30
- const [filteredAndOtherPropertyMetas, setFilteredAndOtherPropertyMetas] = useState({});
31
- const [filteredPropertyMetas, setFilteredPropertyMetas] = useState({});
32
- const [isFiltersCollapsible, setIsFiltersCollapsible] = useState(true);
33
- const [open, setOpen] = useState(false);
34
- const [elementsShown, setElementsShown] = useState(1);
35
- const [relationInfo, setRelationInfo] = useState();
36
- const [resetCounter, setResetCounter] = useState(0);
37
- const containerRef = useRef(null);
38
- const btnsWrapperRef = useRef(null);
39
- const filtersType = type ?? filterTypes.default;
40
- const config = useMemo(() => props.config, [props.config]);
41
- const filterActionButtonRef = useRef(null);
42
- useImperativeHandle(ref, () => ({
43
- getFilters: () => getFilters(state, filteredPropertyMetas, config),
44
- }), [config, filteredPropertyMetas, state]);
45
- const reset = useCallback(() => {
46
- resetResourceFilterListState(stateKey, setState, setResetCounter, onFilterChange);
47
- }, [stateKey, setState, onFilterChange]);
48
- useAsyncEffect(async () => {
49
- setRelationInfo(await getManyToManyRelatedPropertyMetas(uiResourceMeta, relatedUiResourceMetas));
50
- }, [uiResourceMeta, relatedUiResourceMetas]);
51
- useAsyncEffect(async () => {
52
- await initResourceFilterList(stateKey, setState, setFilteredPropertyMetas, setFilteredAndOtherPropertyMetas, queryODataFilters ?? [], setFilterKeys, state, uiResourceMeta.resourceMeta, relationInfo, onFilterChange);
53
- }, [stateKey, relationInfo, uiResourceMeta]);
54
- const onStateChangeCallback = useCallback((item) => {
55
- return (filter) => {
56
- onStateChange(item, state, filter, stateKey, setState);
57
- };
58
- }, [state, stateKey]);
59
- const filteredKeys = useMemo(() => getFilteredKeys(filterKeys, uiResourceMeta.properties, filteredAndOtherPropertyMetas, relationInfo), [filterKeys, filteredAndOtherPropertyMetas, uiResourceMeta.properties, relationInfo]);
60
- useEffect(() => {
61
- return setObserver(setElementsShown, filteredKeys, setIsFiltersCollapsible, elementsShown, containerRef?.current ?? undefined, btnsWrapperRef?.current ?? undefined, position);
62
- }, [containerRef, setElementsShown, filteredKeys, setIsFiltersCollapsible, position, elementsShown]);
63
- useLayoutEffect(() => {
64
- onResize(setElementsShown, filteredKeys, setIsFiltersCollapsible, elementsShown, containerRef?.current ?? undefined, btnsWrapperRef?.current ?? undefined, position);
65
- }, [containerRef, filteredKeys, position, elementsShown]);
66
- return (<div className={cn("w-full pb-4 pr-4 pt-0", position === fdFilterListPositions.left && "md:pl-6 md:pt-0")}>
67
- <Collapsible.Root ref={containerRef} open={open} onOpenChange={setOpen}>
68
- <div className="relative flex flex-col items-start gap-2">
69
- <div id={resourceFilterListId} className={cn(type === filterTypes.input
70
- ? "mt-10 flex w-full grid-cols-[auto_repeat(6,minmax(0,1fr))] flex-col gap-2 md:mt-0 md:grid md:items-center"
71
- : "mt-10 flex w-fit flex-wrap gap-2 md:mt-0 md:items-center", position === fdFilterListPositions.left &&
72
- "grid w-full grid-cols-2 md:flex md:w-48 md:flex-col md:pb-2")}>
73
- <div className="absolute top-0 flex items-center gap-2 md:relative">
74
- {showBackButton && (<FdBackButton className="size-7 shrink-0" onClick={() => router.back()}/>)}
75
- {isFiltersCollapsible && (<Collapsible.Trigger asChild>
76
- <FilterActionButton ref={filterActionButtonRef} iconName={iconNames.filter} variant="ghost" className="size-7 shrink-0" tooltipText="Collapse"/>
77
- </Collapsible.Trigger>)}
78
- {(showRefreshButton ?? true) && (<FdTooltipProvider>
79
- <FdTooltip>
80
- <FdTooltipTrigger asChild>
81
- <FilterActionButton ref={filterActionButtonRef} onClick={onRefreshResources} iconName={iconNames.refresh} variant="ghost" className="size-7 shrink-0"/>
82
- </FdTooltipTrigger>
83
- <FdTooltipContent className="mb-1">Refresh</FdTooltipContent>
84
- </FdTooltip>
85
- </FdTooltipProvider>)}
86
- {(showResetButton ?? true) && (open || elementsShown > 0) && (<FdTooltipProvider>
87
- <FdTooltip>
88
- <FdTooltipTrigger asChild>
89
- <FilterActionButton ref={filterActionButtonRef} onClick={reset} iconName={iconNames.eraser} variant="ghost" className="size-7 shrink-0"/>
90
- </FdTooltipTrigger>
91
- <FdTooltipContent className="mb-1">Reset</FdTooltipContent>
92
- </FdTooltip>
93
- </FdTooltipProvider>)}
94
- {/*{isViewModeChanged && onViewModeChanged && (*/}
95
- {/* <ResourceListDropdownMenu*/}
96
- {/* onViewModeChanged={onViewModeChanged}*/}
97
- {/* viewMode={viewMode}*/}
98
- {/* />*/}
99
- {/*)}*/}
100
- </div>
101
- {Object.keys(state).length > 0 &&
102
- filteredKeys.map((item, num) => (<div ref={btnsWrapperRef} className={cn("w-fit", type === filterTypes.input &&
103
- num >= elementsShown &&
104
- !open &&
105
- isFiltersCollapsible &&
106
- "hidden")} key={item}>
107
- {filteredAndOtherPropertyMetas[item] && (<FdFilter state={state[item].filter} onStateChange={onStateChangeCallback(item)} propertyMeta={filteredAndOtherPropertyMetas[item]} disabled={state[item].disabled} onChange={onFilterChange} position={position ?? fdFilterListPositions.top} relatedUiResourceMetas={relatedUiResourceMetas} type={filtersType} resetCounter={resetCounter}/>)}
108
- </div>))}
109
- </div>
110
- </div>
111
- </Collapsible.Root>
112
- </div>);
113
- }
114
- FdResourceFilterList.displayName = "FdResourceFilterList";
115
- function FilterActionButton({ ref, onClick, iconName, iconSize, variant, className, tooltipText, }) {
116
- return (<FdButton id={iconName + elementSuffixes.filterActionButton} ref={ref} variant={variant ?? "icon"} size="icon" onClick={onClick} className={className ?? ""} tooltipText={tooltipText} tooltipClassName="mb-1" tooltipSide="top">
117
- <FdIcon name={iconName} size={iconSize}/>
118
- </FdButton>);
119
- }
120
- FilterActionButton.displayName = "FilterActionButton";
@@ -1,4 +0,0 @@
1
- export const textButton = {
2
- showCard: "Switch to card view",
3
- showTable: "Switch to table view",
4
- };
@@ -1,43 +0,0 @@
1
- import { FdDropdownMenu, FdDropdownMenuContent, FdDropdownMenuItem, FdDropdownMenuTrigger, } from "@fd-component-toolbox/dropdown-menu/FdDropdownMenu";
2
- import { FdIcon, iconNames } from "@fd-component-toolbox/icon/FdIcon";
3
- import { FdButton } from "@fd-component-toolbox/button/FdButton";
4
- import { resourceListViewModes } from "@fd-toolbox/enums/enums";
5
- import { textButton } from "@meta/filtering/resource-filter-list/resource-list-dropdown-menu/ResourceListDropdownMenu.funcs";
6
- /**
7
- * A dropdown menu component for switching between different resource list view modes.
8
- *
9
- * @param props - {@link ResourceListDropdownMenuProps}
10
- */
11
- export function ResourceListDropdownMenu({ onViewModeChanged, viewMode }) {
12
- return (<FdDropdownMenu>
13
- <FdDropdownMenuTrigger asChild>
14
- <FdButton variant="ghost" size="icon">
15
- <FdIcon name={iconNames.dotsVerticalIcon}/>
16
- </FdButton>
17
- </FdDropdownMenuTrigger>
18
- <FdDropdownMenuContent className="z-10 min-w-32 rounded-md border bg-background shadow" align="end">
19
- {viewMode === undefined && (<>
20
- <FdDropdownMenuItem className="outline-none" asChild>
21
- <FdButton variant="secondary" className="w-full hover:bg-muted/50" onClick={() => onViewModeChanged(resourceListViewModes.table)}>
22
- Switch to table view
23
- </FdButton>
24
- </FdDropdownMenuItem>
25
- <FdDropdownMenuItem className="outline-none" asChild>
26
- <FdButton variant="secondary" className="w-full hover:bg-muted/50" onClick={() => onViewModeChanged(resourceListViewModes.cards)}>
27
- Switch to card view
28
- </FdButton>
29
- </FdDropdownMenuItem>
30
- </>)}
31
-
32
- {viewMode !== undefined && (<FdDropdownMenuItem className="outline-none" asChild>
33
- <FdButton variant="secondary" className="w-full hover:bg-muted/50" onClick={() => onViewModeChanged(viewMode === resourceListViewModes.table
34
- ? resourceListViewModes.cards
35
- : resourceListViewModes.table)}>
36
- {viewMode === resourceListViewModes.table
37
- ? textButton.showCard
38
- : textButton.showTable}
39
- </FdButton>
40
- </FdDropdownMenuItem>)}
41
- </FdDropdownMenuContent>
42
- </FdDropdownMenu>);
43
- }
@@ -1,17 +0,0 @@
1
- "use client";
2
- import React, { createContext, useContext, useMemo, useState } from "react";
3
- import { createError } from "@fd-toolbox/errors/errors";
4
- import { metaErrorMessages } from "@meta/constants/meta-error-messages-constants";
5
- const FdGlobalContext = createContext(undefined);
6
- export function FdGlobalContextProvider({ config, children, }) {
7
- const [globalConfig, setGlobalConfig] = useState(config);
8
- const contextValue = useMemo(() => ({ globalConfig: globalConfig, setGlobalConfig: setGlobalConfig }), [globalConfig, setGlobalConfig]);
9
- return <FdGlobalContext.Provider value={contextValue}>{children}</FdGlobalContext.Provider>;
10
- }
11
- export const useGlobalConfig = () => {
12
- const context = useContext(FdGlobalContext);
13
- if (!context) {
14
- throw createError(metaErrorMessages.globalContextUsedOutside);
15
- }
16
- return context;
17
- };