@rchemist/listgrid 0.2.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/LICENSE +201 -0
- package/README.md +343 -0
- package/dist/adapters/next/NextListGridProvider.d.ts +5 -0
- package/dist/adapters/next/NextListGridProvider.js +7 -0
- package/dist/adapters/next/NextRouterAdapter.d.ts +2 -0
- package/dist/adapters/next/NextRouterAdapter.js +34 -0
- package/dist/adapters/next/NextUrlStateAdapter.d.ts +2 -0
- package/dist/adapters/next/NextUrlStateAdapter.js +31 -0
- package/dist/adapters/next/index.d.ts +4 -0
- package/dist/adapters/next/index.js +12 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -0
- package/dist/listgrid/api/ApiClient.d.ts +20 -0
- package/dist/listgrid/api/ApiClient.js +32 -0
- package/dist/listgrid/api/index.d.ts +4 -0
- package/dist/listgrid/api/index.js +2 -0
- package/dist/listgrid/api/types.d.ts +21 -0
- package/dist/listgrid/api/types.js +30 -0
- package/dist/listgrid/auth/AuthContext.d.ts +12 -0
- package/dist/listgrid/auth/AuthContext.js +25 -0
- package/dist/listgrid/auth/SessionProvider.d.ts +4 -0
- package/dist/listgrid/auth/SessionProvider.js +16 -0
- package/dist/listgrid/auth/index.d.ts +6 -0
- package/dist/listgrid/auth/index.js +17 -0
- package/dist/listgrid/auth/types.d.ts +15 -0
- package/dist/listgrid/auth/types.js +12 -0
- package/dist/listgrid/common/func.d.ts +16 -0
- package/dist/listgrid/common/func.js +351 -0
- package/dist/listgrid/common/type.d.ts +35 -0
- package/dist/listgrid/common/type.js +46 -0
- package/dist/listgrid/components/api/ApiSpecificationButton.d.ts +5 -0
- package/dist/listgrid/components/api/ApiSpecificationButton.js +16 -0
- package/dist/listgrid/components/api/Type.d.ts +23 -0
- package/dist/listgrid/components/api/Type.js +8 -0
- package/dist/listgrid/components/api/ViewApiSpecification.d.ts +2 -0
- package/dist/listgrid/components/api/ViewApiSpecification.js +32 -0
- package/dist/listgrid/components/fields/ApplyFullAddressFields.d.ts +45 -0
- package/dist/listgrid/components/fields/ApplyFullAddressFields.js +177 -0
- package/dist/listgrid/components/fields/BirthdayField.d.ts +39 -0
- package/dist/listgrid/components/fields/BirthdayField.js +205 -0
- package/dist/listgrid/components/fields/BooleanField.d.ts +38 -0
- package/dist/listgrid/components/fields/BooleanField.js +141 -0
- package/dist/listgrid/components/fields/CheckboxField.d.ts +23 -0
- package/dist/listgrid/components/fields/CheckboxField.js +33 -0
- package/dist/listgrid/components/fields/ColorField.d.ts +18 -0
- package/dist/listgrid/components/fields/ColorField.js +63 -0
- package/dist/listgrid/components/fields/ColorPresetField.d.ts +19 -0
- package/dist/listgrid/components/fields/ColorPresetField.js +56 -0
- package/dist/listgrid/components/fields/CustomOptionField.d.ts +45 -0
- package/dist/listgrid/components/fields/CustomOptionField.js +176 -0
- package/dist/listgrid/components/fields/DateField.d.ts +34 -0
- package/dist/listgrid/components/fields/DateField.js +116 -0
- package/dist/listgrid/components/fields/DatetimeField.d.ts +29 -0
- package/dist/listgrid/components/fields/DatetimeField.js +93 -0
- package/dist/listgrid/components/fields/EmailField.d.ts +37 -0
- package/dist/listgrid/components/fields/EmailField.js +144 -0
- package/dist/listgrid/components/fields/FileField.d.ts +36 -0
- package/dist/listgrid/components/fields/FileField.js +157 -0
- package/dist/listgrid/components/fields/HtmlField.d.ts +24 -0
- package/dist/listgrid/components/fields/HtmlField.js +70 -0
- package/dist/listgrid/components/fields/ImageField.d.ts +34 -0
- package/dist/listgrid/components/fields/ImageField.js +125 -0
- package/dist/listgrid/components/fields/InlineMapField.d.ts +40 -0
- package/dist/listgrid/components/fields/InlineMapField.js +85 -0
- package/dist/listgrid/components/fields/LinkField.d.ts +26 -0
- package/dist/listgrid/components/fields/LinkField.js +61 -0
- package/dist/listgrid/components/fields/ManyToOneField.d.ts +80 -0
- package/dist/listgrid/components/fields/ManyToOneField.js +416 -0
- package/dist/listgrid/components/fields/MappedJoinField.d.ts +16 -0
- package/dist/listgrid/components/fields/MappedJoinField.js +29 -0
- package/dist/listgrid/components/fields/MarkdownField.d.ts +20 -0
- package/dist/listgrid/components/fields/MarkdownField.js +58 -0
- package/dist/listgrid/components/fields/MessageViewField.d.ts +20 -0
- package/dist/listgrid/components/fields/MessageViewField.js +27 -0
- package/dist/listgrid/components/fields/MonthField.d.ts +25 -0
- package/dist/listgrid/components/fields/MonthField.js +68 -0
- package/dist/listgrid/components/fields/MultiSelectField.d.ts +59 -0
- package/dist/listgrid/components/fields/MultiSelectField.js +74 -0
- package/dist/listgrid/components/fields/MultipleAssetField.d.ts +31 -0
- package/dist/listgrid/components/fields/MultipleAssetField.js +200 -0
- package/dist/listgrid/components/fields/NumberField.d.ts +54 -0
- package/dist/listgrid/components/fields/NumberField.js +216 -0
- package/dist/listgrid/components/fields/PasswordField.d.ts +23 -0
- package/dist/listgrid/components/fields/PasswordField.js +70 -0
- package/dist/listgrid/components/fields/PhoneNumberField.d.ts +39 -0
- package/dist/listgrid/components/fields/PhoneNumberField.js +91 -0
- package/dist/listgrid/components/fields/Preset.d.ts +68 -0
- package/dist/listgrid/components/fields/Preset.js +306 -0
- package/dist/listgrid/components/fields/ProfileField.d.ts +14 -0
- package/dist/listgrid/components/fields/ProfileField.js +25 -0
- package/dist/listgrid/components/fields/QrField.d.ts +21 -0
- package/dist/listgrid/components/fields/QrField.js +31 -0
- package/dist/listgrid/components/fields/RuleField.d.ts +11 -0
- package/dist/listgrid/components/fields/RuleField.js +24 -0
- package/dist/listgrid/components/fields/SelectField.d.ts +223 -0
- package/dist/listgrid/components/fields/SelectField.js +379 -0
- package/dist/listgrid/components/fields/SelectFieldRenderer.d.ts +35 -0
- package/dist/listgrid/components/fields/SelectFieldRenderer.js +363 -0
- package/dist/listgrid/components/fields/StatusChangeReasonModal.d.ts +18 -0
- package/dist/listgrid/components/fields/StatusChangeReasonModal.js +25 -0
- package/dist/listgrid/components/fields/StringField.d.ts +34 -0
- package/dist/listgrid/components/fields/StringField.js +131 -0
- package/dist/listgrid/components/fields/TagField.d.ts +35 -0
- package/dist/listgrid/components/fields/TagField.js +75 -0
- package/dist/listgrid/components/fields/TelephoneNumberField.d.ts +35 -0
- package/dist/listgrid/components/fields/TelephoneNumberField.js +121 -0
- package/dist/listgrid/components/fields/TextareaField.d.ts +27 -0
- package/dist/listgrid/components/fields/TextareaField.js +47 -0
- package/dist/listgrid/components/fields/TimeField.d.ts +21 -0
- package/dist/listgrid/components/fields/TimeField.js +40 -0
- package/dist/listgrid/components/fields/XrefAvailableDateMappingField.d.ts +22 -0
- package/dist/listgrid/components/fields/XrefAvailableDateMappingField.js +39 -0
- package/dist/listgrid/components/fields/XrefMappingField.d.ts +30 -0
- package/dist/listgrid/components/fields/XrefMappingField.js +59 -0
- package/dist/listgrid/components/fields/XrefPreferMappingField.d.ts +30 -0
- package/dist/listgrid/components/fields/XrefPreferMappingField.js +53 -0
- package/dist/listgrid/components/fields/XrefPriceMappingField.d.ts +33 -0
- package/dist/listgrid/components/fields/XrefPriceMappingField.js +56 -0
- package/dist/listgrid/components/fields/YearField.d.ts +32 -0
- package/dist/listgrid/components/fields/YearField.js +99 -0
- package/dist/listgrid/components/fields/abstract/AbstractDateField.d.ts +33 -0
- package/dist/listgrid/components/fields/abstract/AbstractDateField.js +61 -0
- package/dist/listgrid/components/fields/abstract/AbstractManyToOneField.d.ts +97 -0
- package/dist/listgrid/components/fields/abstract/AbstractManyToOneField.js +50 -0
- package/dist/listgrid/components/fields/abstract/CheckButtonValidationField.d.ts +22 -0
- package/dist/listgrid/components/fields/abstract/CheckButtonValidationField.js +92 -0
- package/dist/listgrid/components/fields/abstract/FormField.d.ts +250 -0
- package/dist/listgrid/components/fields/abstract/FormField.js +606 -0
- package/dist/listgrid/components/fields/abstract/ListableFormField.d.ts +140 -0
- package/dist/listgrid/components/fields/abstract/ListableFormField.js +285 -0
- package/dist/listgrid/components/fields/abstract/OptionalField.d.ts +96 -0
- package/dist/listgrid/components/fields/abstract/OptionalField.js +310 -0
- package/dist/listgrid/components/fields/abstract/index.d.ts +6 -0
- package/dist/listgrid/components/fields/abstract/index.js +12 -0
- package/dist/listgrid/components/fields/address/AddressFieldView.d.ts +9 -0
- package/dist/listgrid/components/fields/address/AddressFieldView.js +92 -0
- package/dist/listgrid/components/fields/address/AddressMapField.d.ts +33 -0
- package/dist/listgrid/components/fields/address/AddressMapField.js +49 -0
- package/dist/listgrid/components/fields/address/KakaoMap.d.ts +10 -0
- package/dist/listgrid/components/fields/address/KakaoMap.js +50 -0
- package/dist/listgrid/components/fields/address/PostCodeSelector.d.ts +9 -0
- package/dist/listgrid/components/fields/address/PostCodeSelector.js +125 -0
- package/dist/listgrid/components/fields/contentasset/ContentAssetField.d.ts +61 -0
- package/dist/listgrid/components/fields/contentasset/ContentAssetField.js +80 -0
- package/dist/listgrid/components/fields/contentasset/ContentAssetItem.d.ts +17 -0
- package/dist/listgrid/components/fields/contentasset/ContentAssetItem.js +67 -0
- package/dist/listgrid/components/fields/contentasset/components/AddContentDialog.d.ts +11 -0
- package/dist/listgrid/components/fields/contentasset/components/AddContentDialog.js +68 -0
- package/dist/listgrid/components/fields/contentasset/components/ContentAssetItemUI.d.ts +30 -0
- package/dist/listgrid/components/fields/contentasset/components/ContentAssetItemUI.js +38 -0
- package/dist/listgrid/components/fields/contentasset/hooks/useContentAsset.d.ts +36 -0
- package/dist/listgrid/components/fields/contentasset/hooks/useContentAsset.js +188 -0
- package/dist/listgrid/components/fields/contentasset/index.d.ts +2 -0
- package/dist/listgrid/components/fields/contentasset/index.js +1 -0
- package/dist/listgrid/components/fields/contentasset/types.d.ts +50 -0
- package/dist/listgrid/components/fields/contentasset/types.js +48 -0
- package/dist/listgrid/components/fields/filter/DatetimeFilter.d.ts +7 -0
- package/dist/listgrid/components/fields/filter/DatetimeFilter.js +46 -0
- package/dist/listgrid/components/fields/filter/NumberFilter.d.ts +7 -0
- package/dist/listgrid/components/fields/filter/NumberFilter.js +74 -0
- package/dist/listgrid/components/fields/rule/RuleBasedFieldView.d.ts +15 -0
- package/dist/listgrid/components/fields/rule/RuleBasedFieldView.js +351 -0
- package/dist/listgrid/components/fields/rule/RuleBasedSelector.d.ts +13 -0
- package/dist/listgrid/components/fields/rule/RuleBasedSelector.js +75 -0
- package/dist/listgrid/components/fields/rule/RuleCondition.d.ts +14 -0
- package/dist/listgrid/components/fields/rule/RuleCondition.js +173 -0
- package/dist/listgrid/components/fields/rule/RuleFieldRenderer.d.ts +7 -0
- package/dist/listgrid/components/fields/rule/RuleFieldRenderer.js +21 -0
- package/dist/listgrid/components/fields/rule/RuleFieldView.d.ts +7 -0
- package/dist/listgrid/components/fields/rule/RuleFieldView.js +28 -0
- package/dist/listgrid/components/fields/rule/Type.d.ts +54 -0
- package/dist/listgrid/components/fields/rule/Type.js +72 -0
- package/dist/listgrid/components/fields/view/CardManyToOneView.d.ts +93 -0
- package/dist/listgrid/components/fields/view/CardManyToOneView.js +409 -0
- package/dist/listgrid/components/fields/view/CopyableTextView.d.ts +11 -0
- package/dist/listgrid/components/fields/view/CopyableTextView.js +44 -0
- package/dist/listgrid/components/fields/view/DynamicSelectFieldView.d.ts +28 -0
- package/dist/listgrid/components/fields/view/DynamicSelectFieldView.js +119 -0
- package/dist/listgrid/components/fields/view/LinkFieldView.d.ts +14 -0
- package/dist/listgrid/components/fields/view/LinkFieldView.js +41 -0
- package/dist/listgrid/components/fields/view/ManyToOneListView.d.ts +8 -0
- package/dist/listgrid/components/fields/view/ManyToOneListView.js +25 -0
- package/dist/listgrid/components/fields/view/ManyToOneMultiFilterView.d.ts +12 -0
- package/dist/listgrid/components/fields/view/ManyToOneMultiFilterView.js +142 -0
- package/dist/listgrid/components/fields/view/ManyToOneView.d.ts +8 -0
- package/dist/listgrid/components/fields/view/ManyToOneView.js +322 -0
- package/dist/listgrid/components/fields/view/MultipleAssetUpload.d.ts +7 -0
- package/dist/listgrid/components/fields/view/MultipleAssetUpload.js +47 -0
- package/dist/listgrid/components/fields/view/PhoneNumberFieldView.d.ts +19 -0
- package/dist/listgrid/components/fields/view/PhoneNumberFieldView.js +82 -0
- package/dist/listgrid/components/fields/view/PhoneNumberListView.d.ts +9 -0
- package/dist/listgrid/components/fields/view/PhoneNumberListView.js +49 -0
- package/dist/listgrid/components/fields/view/SelectBoxManyToOneView.d.ts +47 -0
- package/dist/listgrid/components/fields/view/SelectBoxManyToOneView.js +286 -0
- package/dist/listgrid/components/fields/view/SmsModal.d.ts +6 -0
- package/dist/listgrid/components/fields/view/SmsModal.js +124 -0
- package/dist/listgrid/components/fields/view/TreeSelectView.d.ts +11 -0
- package/dist/listgrid/components/fields/view/TreeSelectView.js +118 -0
- package/dist/listgrid/components/fields/view/XrefAvailableDateMappingView.d.ts +19 -0
- package/dist/listgrid/components/fields/view/XrefAvailableDateMappingView.js +305 -0
- package/dist/listgrid/components/fields/view/XrefMappingView.d.ts +16 -0
- package/dist/listgrid/components/fields/view/XrefMappingView.js +173 -0
- package/dist/listgrid/components/fields/view/XrefPiceMappingView.d.ts +19 -0
- package/dist/listgrid/components/fields/view/XrefPiceMappingView.js +319 -0
- package/dist/listgrid/components/fields/view/XrefPreferMappingView.d.ts +19 -0
- package/dist/listgrid/components/fields/view/XrefPreferMappingView.js +261 -0
- package/dist/listgrid/components/fields/view/XrefPriorityMappingView.d.ts +19 -0
- package/dist/listgrid/components/fields/view/XrefPriorityMappingView.js +180 -0
- package/dist/listgrid/components/form/FieldRenderer.d.ts +23 -0
- package/dist/listgrid/components/form/FieldRenderer.js +292 -0
- package/dist/listgrid/components/form/SubCollectionRenderer.d.ts +22 -0
- package/dist/listgrid/components/form/SubCollectionRenderer.js +46 -0
- package/dist/listgrid/components/form/ViewEntityForm.d.ts +14 -0
- package/dist/listgrid/components/form/ViewEntityForm.js +124 -0
- package/dist/listgrid/components/form/ViewFieldGroup.d.ts +27 -0
- package/dist/listgrid/components/form/ViewFieldGroup.js +164 -0
- package/dist/listgrid/components/form/ViewTab.d.ts +24 -0
- package/dist/listgrid/components/form/ViewTab.js +68 -0
- package/dist/listgrid/components/form/ViewTabPanel.d.ts +14 -0
- package/dist/listgrid/components/form/ViewTabPanel.js +32 -0
- package/dist/listgrid/components/form/context/EntityFormThemeContext.d.ts +52 -0
- package/dist/listgrid/components/form/context/EntityFormThemeContext.js +129 -0
- package/dist/listgrid/components/form/context/index.d.ts +1 -0
- package/dist/listgrid/components/form/context/index.js +1 -0
- package/dist/listgrid/components/form/hooks/useAlertManager.d.ts +12 -0
- package/dist/listgrid/components/form/hooks/useAlertManager.js +103 -0
- package/dist/listgrid/components/form/hooks/useEntityFormAutoSave.d.ts +23 -0
- package/dist/listgrid/components/form/hooks/useEntityFormAutoSave.js +145 -0
- package/dist/listgrid/components/form/hooks/useEntityFormInitializer.d.ts +24 -0
- package/dist/listgrid/components/form/hooks/useEntityFormInitializer.js +109 -0
- package/dist/listgrid/components/form/hooks/useEntityFormLogic.d.ts +63 -0
- package/dist/listgrid/components/form/hooks/useEntityFormLogic.js +513 -0
- package/dist/listgrid/components/form/hooks/useEntityFormSave.d.ts +28 -0
- package/dist/listgrid/components/form/hooks/useEntityFormSave.js +89 -0
- package/dist/listgrid/components/form/hooks/useEntityFormTitle.d.ts +12 -0
- package/dist/listgrid/components/form/hooks/useEntityFormTitle.js +53 -0
- package/dist/listgrid/components/form/themes/defaultTheme.d.ts +11 -0
- package/dist/listgrid/components/form/themes/defaultTheme.js +129 -0
- package/dist/listgrid/components/form/themes/index.d.ts +1 -0
- package/dist/listgrid/components/form/themes/index.js +1 -0
- package/dist/listgrid/components/form/types/ViewEntityForm.types.d.ts +169 -0
- package/dist/listgrid/components/form/types/ViewEntityForm.types.js +1 -0
- package/dist/listgrid/components/form/types/ViewEntityFormAlerts.types.d.ts +26 -0
- package/dist/listgrid/components/form/types/ViewEntityFormAlerts.types.js +1 -0
- package/dist/listgrid/components/form/types/ViewEntityFormButtons.types.d.ts +49 -0
- package/dist/listgrid/components/form/types/ViewEntityFormButtons.types.js +1 -0
- package/dist/listgrid/components/form/types/ViewEntityFormTheme.types.d.ts +518 -0
- package/dist/listgrid/components/form/types/ViewEntityFormTheme.types.js +1 -0
- package/dist/listgrid/components/form/ui/AlertItem.d.ts +7 -0
- package/dist/listgrid/components/form/ui/AlertItem.js +18 -0
- package/dist/listgrid/components/form/ui/CreateStepButtons.d.ts +25 -0
- package/dist/listgrid/components/form/ui/CreateStepButtons.js +18 -0
- package/dist/listgrid/components/form/ui/CreateStepView.d.ts +39 -0
- package/dist/listgrid/components/form/ui/CreateStepView.js +50 -0
- package/dist/listgrid/components/form/ui/ViewEntityError.d.ts +13 -0
- package/dist/listgrid/components/form/ui/ViewEntityError.js +90 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormAlerts.d.ts +3 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormAlerts.js +24 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormButtons.d.ts +24 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormButtons.js +208 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormErrors.d.ts +25 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormErrors.js +9 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormFields.d.ts +38 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormFields.js +25 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormSkeleton.d.ts +16 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormSkeleton.js +79 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormTitle.d.ts +15 -0
- package/dist/listgrid/components/form/ui/ViewEntityFormTitle.js +21 -0
- package/dist/listgrid/components/form/ui/ViewFieldError.d.ts +5 -0
- package/dist/listgrid/components/form/ui/ViewFieldError.js +12 -0
- package/dist/listgrid/components/form/ui/ViewHelpIcon.d.ts +5 -0
- package/dist/listgrid/components/form/ui/ViewHelpIcon.js +13 -0
- package/dist/listgrid/components/form/ui/ViewHelpText.d.ts +5 -0
- package/dist/listgrid/components/form/ui/ViewHelpText.js +10 -0
- package/dist/listgrid/components/form/ui/buttons/ClosePopupButton.d.ts +8 -0
- package/dist/listgrid/components/form/ui/buttons/ClosePopupButton.js +32 -0
- package/dist/listgrid/components/form/ui/buttons/DeleteButton.d.ts +2 -0
- package/dist/listgrid/components/form/ui/buttons/DeleteButton.js +101 -0
- package/dist/listgrid/components/form/ui/buttons/ListButton.d.ts +2 -0
- package/dist/listgrid/components/form/ui/buttons/ListButton.js +55 -0
- package/dist/listgrid/components/form/ui/buttons/SaveButton.d.ts +2 -0
- package/dist/listgrid/components/form/ui/buttons/SaveButton.js +55 -0
- package/dist/listgrid/components/helper/FieldRendererHelper.d.ts +23 -0
- package/dist/listgrid/components/helper/FieldRendererHelper.js +27 -0
- package/dist/listgrid/components/helper/ShowNotifications.d.ts +13 -0
- package/dist/listgrid/components/helper/ShowNotifications.js +58 -0
- package/dist/listgrid/components/list/AdvancedSearchForm.d.ts +17 -0
- package/dist/listgrid/components/list/AdvancedSearchForm.js +113 -0
- package/dist/listgrid/components/list/AdvancedSearchFormV2.d.ts +19 -0
- package/dist/listgrid/components/list/AdvancedSearchFormV2.js +347 -0
- package/dist/listgrid/components/list/ListGridHeader.d.ts +2 -0
- package/dist/listgrid/components/list/ListGridHeader.js +21 -0
- package/dist/listgrid/components/list/QuickSearchBar.d.ts +22 -0
- package/dist/listgrid/components/list/QuickSearchBar.js +17 -0
- package/dist/listgrid/components/list/RowItem.d.ts +2 -0
- package/dist/listgrid/components/list/RowItem.js +70 -0
- package/dist/listgrid/components/list/SubCollectionButtons.d.ts +2 -0
- package/dist/listgrid/components/list/SubCollectionButtons.js +36 -0
- package/dist/listgrid/components/list/ViewFieldSelector.d.ts +10 -0
- package/dist/listgrid/components/list/ViewFieldSelector.js +48 -0
- package/dist/listgrid/components/list/ViewListGrid.d.ts +2 -0
- package/dist/listgrid/components/list/ViewListGrid.js +359 -0
- package/dist/listgrid/components/list/context/EntityFormScopeContext.d.ts +39 -0
- package/dist/listgrid/components/list/context/EntityFormScopeContext.js +75 -0
- package/dist/listgrid/components/list/context/ListGridThemeContext.d.ts +70 -0
- package/dist/listgrid/components/list/context/ListGridThemeContext.js +157 -0
- package/dist/listgrid/components/list/context/index.d.ts +2 -0
- package/dist/listgrid/components/list/context/index.js +1 -0
- package/dist/listgrid/components/list/hooks/searchFormUrlSync.d.ts +42 -0
- package/dist/listgrid/components/list/hooks/searchFormUrlSync.js +212 -0
- package/dist/listgrid/components/list/hooks/urlStateParsers.d.ts +63 -0
- package/dist/listgrid/components/list/hooks/urlStateParsers.js +241 -0
- package/dist/listgrid/components/list/hooks/useCardSubCollectionData.d.ts +34 -0
- package/dist/listgrid/components/list/hooks/useCardSubCollectionData.js +181 -0
- package/dist/listgrid/components/list/hooks/useListGridHeader.d.ts +6 -0
- package/dist/listgrid/components/list/hooks/useListGridHeader.js +92 -0
- package/dist/listgrid/components/list/hooks/useListGridLogic.d.ts +2 -0
- package/dist/listgrid/components/list/hooks/useListGridLogic.js +625 -0
- package/dist/listgrid/components/list/hooks/useListGridUrlState.d.ts +45 -0
- package/dist/listgrid/components/list/hooks/useListGridUrlState.js +131 -0
- package/dist/listgrid/components/list/hooks/useQuickSearchBar.d.ts +22 -0
- package/dist/listgrid/components/list/hooks/useQuickSearchBar.js +104 -0
- package/dist/listgrid/components/list/hooks/useSubCollectionExpansion.d.ts +21 -0
- package/dist/listgrid/components/list/hooks/useSubCollectionExpansion.js +62 -0
- package/dist/listgrid/components/list/themes/defaultListGridTheme.d.ts +14 -0
- package/dist/listgrid/components/list/themes/defaultListGridTheme.js +169 -0
- package/dist/listgrid/components/list/themes/index.d.ts +4 -0
- package/dist/listgrid/components/list/themes/index.js +4 -0
- package/dist/listgrid/components/list/themes/variants/mainTheme.d.ts +8 -0
- package/dist/listgrid/components/list/themes/variants/mainTheme.js +37 -0
- package/dist/listgrid/components/list/themes/variants/modalTheme.d.ts +8 -0
- package/dist/listgrid/components/list/themes/variants/modalTheme.js +47 -0
- package/dist/listgrid/components/list/themes/variants/subCollectionTheme.d.ts +8 -0
- package/dist/listgrid/components/list/themes/variants/subCollectionTheme.js +101 -0
- package/dist/listgrid/components/list/types/ListGridHeader.types.d.ts +35 -0
- package/dist/listgrid/components/list/types/ListGridHeader.types.js +3 -0
- package/dist/listgrid/components/list/types/RowItem.types.d.ts +57 -0
- package/dist/listgrid/components/list/types/RowItem.types.js +1 -0
- package/dist/listgrid/components/list/types/SubCollectionButtons.type.d.ts +29 -0
- package/dist/listgrid/components/list/types/SubCollectionButtons.type.js +1 -0
- package/dist/listgrid/components/list/types/ViewListGrid.types.d.ts +152 -0
- package/dist/listgrid/components/list/types/ViewListGrid.types.js +2 -0
- package/dist/listgrid/components/list/types/ViewListGridTheme.types.d.ts +374 -0
- package/dist/listgrid/components/list/types/ViewListGridTheme.types.js +1 -0
- package/dist/listgrid/components/list/ui/CardFieldRenderer.d.ts +31 -0
- package/dist/listgrid/components/list/ui/CardFieldRenderer.js +71 -0
- package/dist/listgrid/components/list/ui/CardFieldSection.d.ts +27 -0
- package/dist/listgrid/components/list/ui/CardFieldSection.js +108 -0
- package/dist/listgrid/components/list/ui/CardItem.d.ts +28 -0
- package/dist/listgrid/components/list/ui/CardItem.js +376 -0
- package/dist/listgrid/components/list/ui/CardSubCollectionModal.d.ts +38 -0
- package/dist/listgrid/components/list/ui/CardSubCollectionModal.js +80 -0
- package/dist/listgrid/components/list/ui/CardSubCollectionView.d.ts +44 -0
- package/dist/listgrid/components/list/ui/CardSubCollectionView.js +238 -0
- package/dist/listgrid/components/list/ui/DataTransferModal.d.ts +12 -0
- package/dist/listgrid/components/list/ui/DataTransferModal.js +10 -0
- package/dist/listgrid/components/list/ui/EntireChecker.d.ts +11 -0
- package/dist/listgrid/components/list/ui/EntireChecker.js +46 -0
- package/dist/listgrid/components/list/ui/FieldSelector.d.ts +11 -0
- package/dist/listgrid/components/list/ui/FieldSelector.js +40 -0
- package/dist/listgrid/components/list/ui/FilterButton.d.ts +7 -0
- package/dist/listgrid/components/list/ui/FilterButton.js +5 -0
- package/dist/listgrid/components/list/ui/FilterDropdown.d.ts +15 -0
- package/dist/listgrid/components/list/ui/FilterDropdown.js +106 -0
- package/dist/listgrid/components/list/ui/FilterView.d.ts +12 -0
- package/dist/listgrid/components/list/ui/FilterView.js +22 -0
- package/dist/listgrid/components/list/ui/HeaderActionButtons.d.ts +10 -0
- package/dist/listgrid/components/list/ui/HeaderActionButtons.js +39 -0
- package/dist/listgrid/components/list/ui/HeaderField.d.ts +19 -0
- package/dist/listgrid/components/list/ui/HeaderField.js +32 -0
- package/dist/listgrid/components/list/ui/HeaderFieldFilter.d.ts +14 -0
- package/dist/listgrid/components/list/ui/HeaderFieldFilter.js +166 -0
- package/dist/listgrid/components/list/ui/HeaderTitle.d.ts +4 -0
- package/dist/listgrid/components/list/ui/HeaderTitle.js +13 -0
- package/dist/listgrid/components/list/ui/InlineSubCollectionView.d.ts +30 -0
- package/dist/listgrid/components/list/ui/InlineSubCollectionView.js +260 -0
- package/dist/listgrid/components/list/ui/MemoizedFilterField.d.ts +14 -0
- package/dist/listgrid/components/list/ui/MemoizedFilterField.js +67 -0
- package/dist/listgrid/components/list/ui/QuickSearchInput.d.ts +9 -0
- package/dist/listgrid/components/list/ui/QuickSearchInput.js +17 -0
- package/dist/listgrid/components/list/ui/SearchBarActions.d.ts +19 -0
- package/dist/listgrid/components/list/ui/SearchBarActions.js +39 -0
- package/dist/listgrid/components/list/ui/SortField.d.ts +8 -0
- package/dist/listgrid/components/list/ui/SortField.js +42 -0
- package/dist/listgrid/components/list/ui/SubCollectionInlineView.d.ts +23 -0
- package/dist/listgrid/components/list/ui/SubCollectionInlineView.js +47 -0
- package/dist/listgrid/components/list/ui/SubCollectionModal.d.ts +15 -0
- package/dist/listgrid/components/list/ui/SubCollectionModal.js +34 -0
- package/dist/listgrid/components/list/ui/SubCollectionViewModal.d.ts +13 -0
- package/dist/listgrid/components/list/ui/SubCollectionViewModal.js +33 -0
- package/dist/listgrid/components/list/ui/SyncTopScrollbar.d.ts +18 -0
- package/dist/listgrid/components/list/ui/SyncTopScrollbar.js +91 -0
- package/dist/listgrid/components/list/ui/TableSubCollectionView.d.ts +25 -0
- package/dist/listgrid/components/list/ui/TableSubCollectionView.js +213 -0
- package/dist/listgrid/components/list/ui/ViewColumn.d.ts +2 -0
- package/dist/listgrid/components/list/ui/ViewColumn.js +56 -0
- package/dist/listgrid/components/list/ui/ViewListGridSkeleton.d.ts +20 -0
- package/dist/listgrid/components/list/ui/ViewListGridSkeleton.js +82 -0
- package/dist/listgrid/components/list/ui/ViewRows.d.ts +15 -0
- package/dist/listgrid/components/list/ui/ViewRows.js +283 -0
- package/dist/listgrid/components/list/ui/buttons/CacheClearButton.d.ts +9 -0
- package/dist/listgrid/components/list/ui/buttons/CacheClearButton.js +35 -0
- package/dist/listgrid/components/list/ui/buttons/CreateButton.d.ts +13 -0
- package/dist/listgrid/components/list/ui/buttons/CreateButton.js +13 -0
- package/dist/listgrid/components/list/ui/buttons/PriorityButton.d.ts +11 -0
- package/dist/listgrid/components/list/ui/buttons/PriorityButton.js +49 -0
- package/dist/listgrid/components/list/ui/headerFilterStore.d.ts +8 -0
- package/dist/listgrid/components/list/ui/headerFilterStore.js +13 -0
- package/dist/listgrid/components/list/utils/mappedByFieldFilter.d.ts +21 -0
- package/dist/listgrid/components/list/utils/mappedByFieldFilter.js +54 -0
- package/dist/listgrid/components/list/utils/performanceLogger.d.ts +48 -0
- package/dist/listgrid/components/list/utils/performanceLogger.js +67 -0
- package/dist/listgrid/components/revision/RevisionField.d.ts +13 -0
- package/dist/listgrid/components/revision/RevisionField.js +194 -0
- package/dist/listgrid/config/AdvancedSearchOpenCache.d.ts +3 -0
- package/dist/listgrid/config/AdvancedSearchOpenCache.js +48 -0
- package/dist/listgrid/config/CardSubCollectionField.d.ts +133 -0
- package/dist/listgrid/config/CardSubCollectionField.js +164 -0
- package/dist/listgrid/config/CommonType.d.ts +4 -0
- package/dist/listgrid/config/CommonType.js +15 -0
- package/dist/listgrid/config/Config.d.ts +251 -0
- package/dist/listgrid/config/Config.js +299 -0
- package/dist/listgrid/config/EntityField.d.ts +148 -0
- package/dist/listgrid/config/EntityField.js +1 -0
- package/dist/listgrid/config/EntityFieldGroup.d.ts +37 -0
- package/dist/listgrid/config/EntityFieldGroup.js +55 -0
- package/dist/listgrid/config/EntityForm.d.ts +101 -0
- package/dist/listgrid/config/EntityForm.js +859 -0
- package/dist/listgrid/config/EntityFormButton.d.ts +56 -0
- package/dist/listgrid/config/EntityFormButton.js +42 -0
- package/dist/listgrid/config/EntityFormMethod.d.ts +32 -0
- package/dist/listgrid/config/EntityFormMethod.js +152 -0
- package/dist/listgrid/config/EntityFormTypes.d.ts +62 -0
- package/dist/listgrid/config/EntityFormTypes.js +1 -0
- package/dist/listgrid/config/EntityItem.d.ts +86 -0
- package/dist/listgrid/config/EntityItem.js +1 -0
- package/dist/listgrid/config/EntityTab.d.ts +26 -0
- package/dist/listgrid/config/EntityTab.js +68 -0
- package/dist/listgrid/config/InlineSubCollectionField.d.ts +184 -0
- package/dist/listgrid/config/InlineSubCollectionField.js +194 -0
- package/dist/listgrid/config/ListGrid.d.ts +56 -0
- package/dist/listgrid/config/ListGrid.js +183 -0
- package/dist/listgrid/config/ListGridViewFieldCache.d.ts +3 -0
- package/dist/listgrid/config/ListGridViewFieldCache.js +53 -0
- package/dist/listgrid/config/OnChangeEntityForm.d.ts +43 -0
- package/dist/listgrid/config/OnChangeEntityForm.js +266 -0
- package/dist/listgrid/config/RuntimeConfig.d.ts +18 -0
- package/dist/listgrid/config/RuntimeConfig.js +22 -0
- package/dist/listgrid/config/SubCollectionField.d.ts +119 -0
- package/dist/listgrid/config/SubCollectionField.js +241 -0
- package/dist/listgrid/config/TableSubCollectionField.d.ts +66 -0
- package/dist/listgrid/config/TableSubCollectionField.js +132 -0
- package/dist/listgrid/config/form/EntityFormActions.d.ts +69 -0
- package/dist/listgrid/config/form/EntityFormActions.js +459 -0
- package/dist/listgrid/config/form/EntityFormBase.d.ts +204 -0
- package/dist/listgrid/config/form/EntityFormBase.js +526 -0
- package/dist/listgrid/config/form/EntityFormData.d.ts +32 -0
- package/dist/listgrid/config/form/EntityFormData.js +184 -0
- package/dist/listgrid/config/form/EntityFormExtensions.d.ts +37 -0
- package/dist/listgrid/config/form/EntityFormExtensions.js +105 -0
- package/dist/listgrid/config/form/EntityFormValidation.d.ts +28 -0
- package/dist/listgrid/config/form/EntityFormValidation.js +128 -0
- package/dist/listgrid/extensions/EntityFormExtension.types.d.ts +52 -0
- package/dist/listgrid/extensions/EntityFormExtension.types.js +19 -0
- package/dist/listgrid/extensions/FieldExtensions.d.ts +5 -0
- package/dist/listgrid/extensions/FieldExtensions.js +21 -0
- package/dist/listgrid/form/SearchForm.d.ts +153 -0
- package/dist/listgrid/form/SearchForm.js +689 -0
- package/dist/listgrid/form/TagsInput/types.d.ts +133 -0
- package/dist/listgrid/form/TagsInput/types.js +1 -0
- package/dist/listgrid/form/Type.d.ts +50 -0
- package/dist/listgrid/form/Type.js +95 -0
- package/dist/listgrid/index.d.ts +205 -0
- package/dist/listgrid/index.js +244 -0
- package/dist/listgrid/loading/index.d.ts +6 -0
- package/dist/listgrid/loading/index.js +17 -0
- package/dist/listgrid/menu/MenuPermissionChecker.d.ts +15 -0
- package/dist/listgrid/menu/MenuPermissionChecker.js +15 -0
- package/dist/listgrid/menu/index.d.ts +1 -0
- package/dist/listgrid/menu/index.js +1 -0
- package/dist/listgrid/message/MessageProvider.d.ts +19 -0
- package/dist/listgrid/message/MessageProvider.js +62 -0
- package/dist/listgrid/message/index.d.ts +1 -0
- package/dist/listgrid/message/index.js +1 -0
- package/dist/listgrid/misc/index.d.ts +64 -0
- package/dist/listgrid/misc/index.js +478 -0
- package/dist/listgrid/router/RouterProvider.d.ts +12 -0
- package/dist/listgrid/router/RouterProvider.js +34 -0
- package/dist/listgrid/router/index.d.ts +3 -0
- package/dist/listgrid/router/index.js +1 -0
- package/dist/listgrid/router/types.d.ts +34 -0
- package/dist/listgrid/router/types.js +6 -0
- package/dist/listgrid/store/index.d.ts +24 -0
- package/dist/listgrid/store/index.js +40 -0
- package/dist/listgrid/transfer/DataExportProcessor.d.ts +18 -0
- package/dist/listgrid/transfer/DataExportProcessor.js +102 -0
- package/dist/listgrid/transfer/DataExportService.d.ts +37 -0
- package/dist/listgrid/transfer/DataExportService.js +225 -0
- package/dist/listgrid/transfer/DataExporter.d.ts +10 -0
- package/dist/listgrid/transfer/DataExporter.js +85 -0
- package/dist/listgrid/transfer/DataImportDescription.d.ts +8 -0
- package/dist/listgrid/transfer/DataImportDescription.js +18 -0
- package/dist/listgrid/transfer/DataImportProcessor.d.ts +24 -0
- package/dist/listgrid/transfer/DataImportProcessor.js +59 -0
- package/dist/listgrid/transfer/DataImportResultView.d.ts +13 -0
- package/dist/listgrid/transfer/DataImportResultView.js +64 -0
- package/dist/listgrid/transfer/DataImportSample.d.ts +10 -0
- package/dist/listgrid/transfer/DataImportSample.js +105 -0
- package/dist/listgrid/transfer/DataImporter.d.ts +8 -0
- package/dist/listgrid/transfer/DataImporter.js +335 -0
- package/dist/listgrid/transfer/DynamicDataImporter.d.ts +4 -0
- package/dist/listgrid/transfer/DynamicDataImporter.js +13 -0
- package/dist/listgrid/transfer/ExcelPasswordField.d.ts +9 -0
- package/dist/listgrid/transfer/ExcelPasswordField.js +23 -0
- package/dist/listgrid/transfer/Provider/ExcelProvider.d.ts +24 -0
- package/dist/listgrid/transfer/Provider/ExcelProvider.js +194 -0
- package/dist/listgrid/transfer/Type.d.ts +176 -0
- package/dist/listgrid/transfer/Type.js +568 -0
- package/dist/listgrid/ui/GlobalModalManager.d.ts +22 -0
- package/dist/listgrid/ui/GlobalModalManager.js +65 -0
- package/dist/listgrid/ui/UIProvider.d.ts +151 -0
- package/dist/listgrid/ui/UIProvider.js +292 -0
- package/dist/listgrid/ui/index.d.ts +2 -0
- package/dist/listgrid/ui/index.js +2 -0
- package/dist/listgrid/urlState/UrlStateProvider.d.ts +8 -0
- package/dist/listgrid/urlState/UrlStateProvider.js +20 -0
- package/dist/listgrid/urlState/index.d.ts +4 -0
- package/dist/listgrid/urlState/index.js +2 -0
- package/dist/listgrid/urlState/types.d.ts +21 -0
- package/dist/listgrid/urlState/types.js +14 -0
- package/dist/listgrid/utils/BooleanUtil.d.ts +1 -0
- package/dist/listgrid/utils/BooleanUtil.js +9 -0
- package/dist/listgrid/utils/CompareUtil.d.ts +7 -0
- package/dist/listgrid/utils/CompareUtil.js +87 -0
- package/dist/listgrid/utils/PhoneUtil.d.ts +19 -0
- package/dist/listgrid/utils/PhoneUtil.js +38 -0
- package/dist/listgrid/utils/RequestUtil.d.ts +6 -0
- package/dist/listgrid/utils/RequestUtil.js +6 -0
- package/dist/listgrid/utils/StringUtil.d.ts +32 -0
- package/dist/listgrid/utils/StringUtil.js +316 -0
- package/dist/listgrid/utils/classNames.d.ts +21 -0
- package/dist/listgrid/utils/classNames.js +29 -0
- package/dist/listgrid/utils/cn.d.ts +12 -0
- package/dist/listgrid/utils/cn.js +15 -0
- package/dist/listgrid/utils/hash.d.ts +1 -0
- package/dist/listgrid/utils/hash.js +15 -0
- package/dist/listgrid/utils/i18n.d.ts +16 -0
- package/dist/listgrid/utils/i18n.js +31 -0
- package/dist/listgrid/utils/index.d.ts +10 -0
- package/dist/listgrid/utils/index.js +17 -0
- package/dist/listgrid/utils/jsonUtils.d.ts +4 -0
- package/dist/listgrid/utils/jsonUtils.js +77 -0
- package/dist/listgrid/utils/lazy.d.ts +10 -0
- package/dist/listgrid/utils/lazy.js +13 -0
- package/dist/listgrid/utils/simpleCrypt.d.ts +4 -0
- package/dist/listgrid/utils/simpleCrypt.js +79 -0
- package/dist/listgrid/validations/CustomValidation.d.ts +8 -0
- package/dist/listgrid/validations/CustomValidation.js +10 -0
- package/dist/listgrid/validations/EmailValidation.d.ts +4 -0
- package/dist/listgrid/validations/EmailValidation.js +7 -0
- package/dist/listgrid/validations/IpAddressValidation.d.ts +26 -0
- package/dist/listgrid/validations/IpAddressValidation.js +57 -0
- package/dist/listgrid/validations/MinMaxNumberValidation.d.ts +14 -0
- package/dist/listgrid/validations/MinMaxNumberValidation.js +28 -0
- package/dist/listgrid/validations/PasswordValidation.d.ts +4 -0
- package/dist/listgrid/validations/PasswordValidation.js +7 -0
- package/dist/listgrid/validations/PhoneNumberValidation.d.ts +12 -0
- package/dist/listgrid/validations/PhoneNumberValidation.js +24 -0
- package/dist/listgrid/validations/RegexFormularValidation.d.ts +7 -0
- package/dist/listgrid/validations/RegexFormularValidation.js +28 -0
- package/dist/listgrid/validations/RegexValidation.d.ts +8 -0
- package/dist/listgrid/validations/RegexValidation.js +17 -0
- package/dist/listgrid/validations/RequiredValidation.d.ts +7 -0
- package/dist/listgrid/validations/RequiredValidation.js +12 -0
- package/dist/listgrid/validations/StringValidation.d.ts +17 -0
- package/dist/listgrid/validations/StringValidation.js +33 -0
- package/dist/listgrid/validations/TelephoneNumberValidation.d.ts +12 -0
- package/dist/listgrid/validations/TelephoneNumberValidation.js +24 -0
- package/dist/listgrid/validations/Validation.d.ts +63 -0
- package/dist/listgrid/validations/Validation.js +72 -0
- package/dist/listgrid/view/ViewEntityFormWrapper.d.ts +16 -0
- package/dist/listgrid/view/ViewEntityFormWrapper.js +98 -0
- package/dist/listgrid/view/ViewListGridWrapper.d.ts +10 -0
- package/dist/listgrid/view/ViewListGridWrapper.js +96 -0
- package/dist/styles/base.css +116 -0
- package/dist/styles/components.css +1404 -0
- package/dist/styles/layouts.css +3206 -0
- package/dist/styles/primitives.css +1542 -0
- package/dist/styles/tokens.css +218 -0
- package/dist/styles.css +6486 -0
- package/docs/PRIMITIVES.md +271 -0
- package/package.json +201 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ListableFormField } from '../../fields/abstract';
|
|
2
|
+
export interface MappedByFieldFilterOptions {
|
|
3
|
+
mappedBy: string;
|
|
4
|
+
includePatterns?: string[];
|
|
5
|
+
excludePatterns?: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Filters out mappedBy related fields from a field array.
|
|
9
|
+
*
|
|
10
|
+
* For example, if mappedBy is "studentId":
|
|
11
|
+
* - "studentId" is filtered out
|
|
12
|
+
* - "student" is filtered out (base field without Id suffix)
|
|
13
|
+
* - "student.name", "student.id" etc. are filtered out (nested patterns)
|
|
14
|
+
*
|
|
15
|
+
* Unless they are explicitly included in includePatterns.
|
|
16
|
+
*
|
|
17
|
+
* @param fields The list of fields to filter
|
|
18
|
+
* @param options Filter options including mappedBy and optional include/exclude patterns
|
|
19
|
+
* @returns Filtered field array
|
|
20
|
+
*/
|
|
21
|
+
export declare function filterMappedByFields(fields: ListableFormField<any>[], options: MappedByFieldFilterOptions): ListableFormField<any>[];
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filters out mappedBy related fields from a field array.
|
|
3
|
+
*
|
|
4
|
+
* For example, if mappedBy is "studentId":
|
|
5
|
+
* - "studentId" is filtered out
|
|
6
|
+
* - "student" is filtered out (base field without Id suffix)
|
|
7
|
+
* - "student.name", "student.id" etc. are filtered out (nested patterns)
|
|
8
|
+
*
|
|
9
|
+
* Unless they are explicitly included in includePatterns.
|
|
10
|
+
*
|
|
11
|
+
* @param fields The list of fields to filter
|
|
12
|
+
* @param options Filter options including mappedBy and optional include/exclude patterns
|
|
13
|
+
* @returns Filtered field array
|
|
14
|
+
*/
|
|
15
|
+
export function filterMappedByFields(fields, options) {
|
|
16
|
+
const { mappedBy, includePatterns = [], excludePatterns = [] } = options;
|
|
17
|
+
// Generate patterns to exclude
|
|
18
|
+
const patternsToExclude = new Set();
|
|
19
|
+
// 1. Exact mappedBy field (e.g., "studentId")
|
|
20
|
+
patternsToExclude.add(mappedBy);
|
|
21
|
+
// 2. Base field without Id/.id suffix
|
|
22
|
+
// Handle "studentId" format (camelCase Id suffix)
|
|
23
|
+
// Handle "enrollment.student.id" format (dot notation .id suffix)
|
|
24
|
+
let baseField = mappedBy;
|
|
25
|
+
if (mappedBy.endsWith('Id')) {
|
|
26
|
+
baseField = mappedBy.slice(0, -2);
|
|
27
|
+
}
|
|
28
|
+
else if (mappedBy.endsWith('.id')) {
|
|
29
|
+
baseField = mappedBy.slice(0, -3);
|
|
30
|
+
}
|
|
31
|
+
patternsToExclude.add(baseField);
|
|
32
|
+
// 3. Nested pattern (e.g., "student.*" from "studentId" or "enrollment.student.*" from "enrollment.student.id")
|
|
33
|
+
const nestedPattern = `${baseField}.`;
|
|
34
|
+
// 4. Add additional excludePatterns
|
|
35
|
+
excludePatterns.forEach((pattern) => patternsToExclude.add(pattern));
|
|
36
|
+
// Filter fields
|
|
37
|
+
return fields.filter((field) => {
|
|
38
|
+
const fieldName = field.name;
|
|
39
|
+
// Check if field is explicitly included
|
|
40
|
+
if (includePatterns.includes(fieldName)) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
// Check if field should be excluded
|
|
44
|
+
// Exact match
|
|
45
|
+
if (patternsToExclude.has(fieldName)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
// Nested pattern match (field starts with baseField.)
|
|
49
|
+
if (fieldName.startsWith(nestedPattern)) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ListGrid Performance Logger
|
|
3
|
+
*
|
|
4
|
+
* Enable/disable via environment variable:
|
|
5
|
+
* NEXT_PUBLIC_DEBUG_LISTGRID_PERFORMANCE=true (or false)
|
|
6
|
+
*
|
|
7
|
+
* To remove all performance logging:
|
|
8
|
+
* 1. Delete this file
|
|
9
|
+
* 2. Remove imports and usage from ViewListGrid.tsx and useListGridLogic.ts
|
|
10
|
+
*/
|
|
11
|
+
export declare const perfLog: {
|
|
12
|
+
mounted: (duration: number, context: {
|
|
13
|
+
entityUrl?: string;
|
|
14
|
+
isSubCollection?: boolean;
|
|
15
|
+
}) => void;
|
|
16
|
+
unmounted: (context: {
|
|
17
|
+
entityUrl?: string;
|
|
18
|
+
}) => void;
|
|
19
|
+
rowsRendered: (context: {
|
|
20
|
+
entityUrl?: string;
|
|
21
|
+
rowCount: number;
|
|
22
|
+
totalCount?: number;
|
|
23
|
+
timeSinceMount: string;
|
|
24
|
+
}) => void;
|
|
25
|
+
loadingStarted: (context: {
|
|
26
|
+
entityUrl?: string;
|
|
27
|
+
}) => void;
|
|
28
|
+
loadingCompleted: (duration: number, context: {
|
|
29
|
+
entityUrl?: string;
|
|
30
|
+
rowCount: number;
|
|
31
|
+
totalCount?: number;
|
|
32
|
+
}) => void;
|
|
33
|
+
apiStarted: (context: {
|
|
34
|
+
entityUrl?: string;
|
|
35
|
+
page?: number;
|
|
36
|
+
pageSize?: number;
|
|
37
|
+
}) => void;
|
|
38
|
+
apiCompleted: (duration: number, context: {
|
|
39
|
+
entityUrl?: string;
|
|
40
|
+
rowCount: number;
|
|
41
|
+
totalCount?: number;
|
|
42
|
+
page?: number;
|
|
43
|
+
}) => void;
|
|
44
|
+
apiError: (duration: number, context: {
|
|
45
|
+
entityUrl?: string;
|
|
46
|
+
errors: string[];
|
|
47
|
+
}) => void;
|
|
48
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ListGrid Performance Logger
|
|
3
|
+
*
|
|
4
|
+
* Enable/disable via environment variable:
|
|
5
|
+
* NEXT_PUBLIC_DEBUG_LISTGRID_PERFORMANCE=true (or false)
|
|
6
|
+
*
|
|
7
|
+
* To remove all performance logging:
|
|
8
|
+
* 1. Delete this file
|
|
9
|
+
* 2. Remove imports and usage from ViewListGrid.tsx and useListGridLogic.ts
|
|
10
|
+
*/
|
|
11
|
+
import { getRuntimeConfig } from '../../../config/RuntimeConfig';
|
|
12
|
+
const isEnabled = () => {
|
|
13
|
+
if (typeof window === 'undefined')
|
|
14
|
+
return false;
|
|
15
|
+
const cfg = getRuntimeConfig();
|
|
16
|
+
if (cfg.debugListGridPerformance === false)
|
|
17
|
+
return false;
|
|
18
|
+
if (cfg.debugListGridPerformance === true)
|
|
19
|
+
return true;
|
|
20
|
+
return cfg.isDevelopment;
|
|
21
|
+
};
|
|
22
|
+
const PREFIX = '[ListGrid Performance]';
|
|
23
|
+
export const perfLog = {
|
|
24
|
+
// ==================== Component Lifecycle ====================
|
|
25
|
+
mounted: (duration, context) => {
|
|
26
|
+
if (!isEnabled())
|
|
27
|
+
return;
|
|
28
|
+
console.log(`${PREFIX} [Component] Mounted in ${duration.toFixed(2)}ms`, context);
|
|
29
|
+
},
|
|
30
|
+
unmounted: (context) => {
|
|
31
|
+
if (!isEnabled())
|
|
32
|
+
return;
|
|
33
|
+
console.log(`${PREFIX} [Component] Unmounted`, context);
|
|
34
|
+
},
|
|
35
|
+
rowsRendered: (context) => {
|
|
36
|
+
if (!isEnabled())
|
|
37
|
+
return;
|
|
38
|
+
console.log(`${PREFIX} [Component] Rows rendered`, context);
|
|
39
|
+
},
|
|
40
|
+
// ==================== Data Loading (React State) ====================
|
|
41
|
+
loadingStarted: (context) => {
|
|
42
|
+
if (!isEnabled())
|
|
43
|
+
return;
|
|
44
|
+
console.log(`${PREFIX} [State] Loading started`, context);
|
|
45
|
+
},
|
|
46
|
+
loadingCompleted: (duration, context) => {
|
|
47
|
+
if (!isEnabled())
|
|
48
|
+
return;
|
|
49
|
+
console.log(`${PREFIX} [State] Loading completed in ${duration.toFixed(2)}ms`, context);
|
|
50
|
+
},
|
|
51
|
+
// ==================== API Call (Network) ====================
|
|
52
|
+
apiStarted: (context) => {
|
|
53
|
+
if (!isEnabled())
|
|
54
|
+
return;
|
|
55
|
+
console.log(`${PREFIX} [API] Request started`, context);
|
|
56
|
+
},
|
|
57
|
+
apiCompleted: (duration, context) => {
|
|
58
|
+
if (!isEnabled())
|
|
59
|
+
return;
|
|
60
|
+
console.log(`${PREFIX} [API] Response received in ${duration.toFixed(2)}ms`, context);
|
|
61
|
+
},
|
|
62
|
+
apiError: (duration, context) => {
|
|
63
|
+
if (!isEnabled())
|
|
64
|
+
return;
|
|
65
|
+
console.log(`${PREFIX} [API] Error after ${duration.toFixed(2)}ms`, context);
|
|
66
|
+
},
|
|
67
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { FormField, FormFieldProps } from '../fields/abstract';
|
|
3
|
+
import { FieldRenderParameters, FilterRenderParameters } from '../../config/EntityField';
|
|
4
|
+
interface RevisionFieldProps extends FormFieldProps {
|
|
5
|
+
}
|
|
6
|
+
export declare class RevisionField extends FormField<RevisionField> {
|
|
7
|
+
constructor(name: string, order: number);
|
|
8
|
+
protected createInstance(name: string, order: number): RevisionField;
|
|
9
|
+
protected renderInstance(params: FieldRenderParameters): Promise<React.ReactNode | null>;
|
|
10
|
+
protected renderListFilterInstance(params: FilterRenderParameters): Promise<React.ReactNode | null>;
|
|
11
|
+
static create(props: RevisionFieldProps): RevisionField;
|
|
12
|
+
}
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
import { FormField } from '../fields/abstract';
|
|
5
|
+
import { SearchForm } from '../../form/SearchForm';
|
|
6
|
+
import { PageResult } from '../../form/Type';
|
|
7
|
+
import { useModalManagerStore } from '../../store';
|
|
8
|
+
import { useSession } from '../../auth';
|
|
9
|
+
import { ViewEntityForm } from '../form/ViewEntityForm';
|
|
10
|
+
import { IconHistory } from '@tabler/icons-react';
|
|
11
|
+
import { fDateTime } from '../../misc';
|
|
12
|
+
import { Pagination } from '../../ui';
|
|
13
|
+
import { getTranslation } from '../../utils/i18n';
|
|
14
|
+
const revisionApiUrl = '/revision';
|
|
15
|
+
// Audit/timestamp fields excluded from diff (always change on every update)
|
|
16
|
+
const AUDIT_FIELD_NAMES = new Set([
|
|
17
|
+
'updatedAt',
|
|
18
|
+
'dateUpdated',
|
|
19
|
+
'modifiedAt',
|
|
20
|
+
'dateModified',
|
|
21
|
+
'lastModified',
|
|
22
|
+
'lastModifiedDate',
|
|
23
|
+
'auditable',
|
|
24
|
+
]);
|
|
25
|
+
/**
|
|
26
|
+
* Compare two revision data objects and return the set of field names that differ.
|
|
27
|
+
*/
|
|
28
|
+
function getChangedFields(currentData, previousData) {
|
|
29
|
+
const changed = new Set();
|
|
30
|
+
const allKeys = new Set([...Object.keys(currentData), ...Object.keys(previousData)]);
|
|
31
|
+
for (const key of allKeys) {
|
|
32
|
+
if (JSON.stringify(currentData[key]) !== JSON.stringify(previousData[key])) {
|
|
33
|
+
changed.add(key);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return changed;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Wrapper component that injects CSS-based highlighting for changed fields.
|
|
40
|
+
* Uses data-field-name attribute selectors so highlighting applies automatically as fields render.
|
|
41
|
+
*/
|
|
42
|
+
const RevisionDiffWrapper = ({ changedFields, fieldLabelMap, hasPreviousRevision, children }) => {
|
|
43
|
+
const containerId = 'revision-diff-container';
|
|
44
|
+
const selectors = changedFields.size > 0
|
|
45
|
+
? Array.from(changedFields)
|
|
46
|
+
.map((name) => `#${containerId} [data-field-name="${name}"]`)
|
|
47
|
+
.join(',\n')
|
|
48
|
+
: '';
|
|
49
|
+
// Resolve display labels for changed fields (use label if available, skip otherwise)
|
|
50
|
+
const changedFieldLabels = Array.from(changedFields)
|
|
51
|
+
.map((name) => fieldLabelMap.get(name))
|
|
52
|
+
.filter((label) => !!label);
|
|
53
|
+
return (_jsxs("div", { id: containerId, className: "rcm-revision-diff-container", children: [changedFields.size > 0 && (_jsxs(_Fragment, { children: [_jsx("style", { children: `
|
|
54
|
+
${selectors} {
|
|
55
|
+
background-color: rgba(251, 191, 36, 0.12);
|
|
56
|
+
border-left: 3px solid rgb(245, 158, 11);
|
|
57
|
+
padding-left: 8px;
|
|
58
|
+
border-radius: 4px;
|
|
59
|
+
}
|
|
60
|
+
` }), _jsxs("div", { className: "rcm-revision-diff-banner rcm-revision-diff-banner-changed", children: [_jsxs("div", { className: "rcm-revision-diff-banner-row", children: [_jsx("span", { className: "rcm-icon-frame", "data-shape": "circle", "data-size": "xs", "data-color": "warning" }), _jsxs("span", { children: ["\uC774\uC804 \uBC84\uC804 \uB300\uBE44 ", _jsxs("strong", { children: [changedFields.size, "\uAC1C"] }), " \uD544\uB4DC\uAC00 \uBCC0\uACBD\uB418\uC5C8\uC2B5\uB2C8\uB2E4"] })] }), changedFieldLabels.length > 0 && (_jsx("div", { className: "rcm-revision-diff-labels", children: changedFieldLabels.map((label, i) => (_jsx("span", { className: "rcm-tag", "data-color": "warning", children: label }, i))) }))] })] })), hasPreviousRevision && changedFields.size === 0 && (_jsx("div", { className: "rcm-revision-diff-banner rcm-revision-diff-banner-same", children: "\uC774\uC804 \uBC84\uC804\uACFC \uB3D9\uC77C\uD569\uB2C8\uB2E4" })), children] }));
|
|
61
|
+
};
|
|
62
|
+
export class RevisionField extends FormField {
|
|
63
|
+
constructor(name, order) {
|
|
64
|
+
super(name, order, 'revision');
|
|
65
|
+
}
|
|
66
|
+
createInstance(name, order) {
|
|
67
|
+
return new RevisionField(name, order);
|
|
68
|
+
}
|
|
69
|
+
async renderInstance(params) {
|
|
70
|
+
const { entityForm, subCollectionEntity } = params;
|
|
71
|
+
// subCollectionEntity인 경우 렌더링하지 않음
|
|
72
|
+
if (subCollectionEntity) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
// CREATE 모드에서는 렌더링하지 않음 (MODIFY_ONLY)
|
|
76
|
+
if (entityForm.getRenderType() === 'create') {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return _jsx(RevisionFieldRenderer, { entityForm: entityForm });
|
|
80
|
+
}
|
|
81
|
+
renderListFilterInstance(params) {
|
|
82
|
+
// 리스트 필터에서는 지원하지 않음
|
|
83
|
+
return Promise.resolve(null);
|
|
84
|
+
}
|
|
85
|
+
static create(props) {
|
|
86
|
+
return new RevisionField(props.name, props.order).copyFields(props, true);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const RevisionFieldRenderer = ({ entityForm }) => {
|
|
90
|
+
const [revisions, setRevisions] = useState([]);
|
|
91
|
+
const [loading, setLoading] = useState(false);
|
|
92
|
+
const [totalPage, setTotalPage] = useState(0);
|
|
93
|
+
const [currentPage, setCurrentPage] = useState(0);
|
|
94
|
+
const { openModal } = useModalManagerStore();
|
|
95
|
+
const session = useSession();
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
loadRevisions(0);
|
|
98
|
+
}, [entityForm.id]);
|
|
99
|
+
const loadRevisions = async (page = 0) => {
|
|
100
|
+
if (!entityForm.id)
|
|
101
|
+
return;
|
|
102
|
+
setLoading(true);
|
|
103
|
+
try {
|
|
104
|
+
const entityId = entityForm.id;
|
|
105
|
+
// revisionEntityName 필터 제거 - entityId만으로 조회 (revisionEntityName 불일치 문제 해결)
|
|
106
|
+
const searchForm = new SearchForm()
|
|
107
|
+
.handleAndFilter('revisionEntityId', entityId)
|
|
108
|
+
.withSort('createdAt', 'DESC')
|
|
109
|
+
.withPage(page)
|
|
110
|
+
.withPageSize(10);
|
|
111
|
+
const searchResult = await PageResult.fetchListData(revisionApiUrl, searchForm);
|
|
112
|
+
if (searchResult && searchResult.list) {
|
|
113
|
+
setRevisions(searchResult.list);
|
|
114
|
+
setTotalPage(searchResult.totalPage);
|
|
115
|
+
setCurrentPage(page);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.error('[RevisionField] Failed to load revisions:', error);
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
setLoading(false);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
const handlePageChange = (page) => {
|
|
126
|
+
loadRevisions(page - 1); // Pagination 컴포넌트는 1부터 시작, SearchForm은 0부터 시작
|
|
127
|
+
};
|
|
128
|
+
const handleRevisionClick = async (revision, index) => {
|
|
129
|
+
const modalId = `revision-modal-${entityForm.id}`;
|
|
130
|
+
// 리비전 데이터 파싱
|
|
131
|
+
const revisionData = JSON.parse(revision.json);
|
|
132
|
+
// 이전 리비전과 비교하여 변경된 필드 찾기
|
|
133
|
+
// DELETE 리비전은 json이 없으므로 건너뛰고 다음 유효한 리비전을 찾는다
|
|
134
|
+
let previousRevision;
|
|
135
|
+
for (let i = index + 1; i < revisions.length; i++) {
|
|
136
|
+
if (revisions[i].type !== 'DELETE' && revisions[i].json) {
|
|
137
|
+
previousRevision = revisions[i];
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
let changedFields = new Set();
|
|
142
|
+
if (previousRevision) {
|
|
143
|
+
const previousData = JSON.parse(previousRevision.json);
|
|
144
|
+
changedFields = getChangedFields(revisionData, previousData);
|
|
145
|
+
// 수정일 등 항상 변경되는 감사(audit) 필드 제외
|
|
146
|
+
changedFields = new Set([...changedFields].filter((name) => !AUDIT_FIELD_NAMES.has(name)));
|
|
147
|
+
}
|
|
148
|
+
// EntityForm 복제 및 초기화
|
|
149
|
+
let revisionEntityForm = entityForm.clone(false);
|
|
150
|
+
// 서버 fetch 대신 설정한 데이터로 고정하기 위해 url 을 비워둔다.
|
|
151
|
+
revisionEntityForm.url = '';
|
|
152
|
+
revisionEntityForm.fields.delete('entityForm-revision'); // 리비전 필드는 보여주지 않는다.
|
|
153
|
+
revisionEntityForm.collections.clear(); // 컬렉션은 Revision 의 관리 대상이 아니다.
|
|
154
|
+
revisionEntityForm.buttons = []; // 기존 엔티티폼의 사용자정의 버튼도 모두 제거한다.
|
|
155
|
+
// 리비전 데이터로 값 설정
|
|
156
|
+
revisionEntityForm = await revisionEntityForm.setFetchedValues(revisionData);
|
|
157
|
+
// 변경 필드의 사용자 표시용 라벨 맵 구성
|
|
158
|
+
const { t } = getTranslation();
|
|
159
|
+
const fieldLabelMap = new Map();
|
|
160
|
+
for (const [key, field] of revisionEntityForm.fields) {
|
|
161
|
+
if (field instanceof FormField) {
|
|
162
|
+
const label = field.getLabel();
|
|
163
|
+
if (typeof label === 'string') {
|
|
164
|
+
fieldLabelMap.set(key, t(label));
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
openModal({
|
|
169
|
+
modalId,
|
|
170
|
+
title: `변경 이력 (${revision.name} / ${fDateTime(revision.createdAt, 'yyyy-MM-dd HH:mm:ss')})`,
|
|
171
|
+
size: 'full',
|
|
172
|
+
fullHeight: true,
|
|
173
|
+
content: (_jsx(RevisionDiffWrapper, { changedFields: changedFields, fieldLabelMap: fieldLabelMap, hasPreviousRevision: !!previousRevision, children: _jsx(ViewEntityForm, { readonly: true, entityForm: revisionEntityForm, ...(session !== undefined ? { session } : {}), hideTitle: true, hideAllButtons: true }) })),
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
if (loading) {
|
|
177
|
+
return (_jsxs("div", { className: "rcm-revision-state", children: [_jsx(IconHistory, { className: "rcm-icon rcm-revision-state-icon-spin", "data-size": "lg", "data-tone": "disabled" }), _jsx("span", { className: "rcm-text", "data-size": "sm", "data-tone": "muted", children: "\uBCC0\uACBD \uB0B4\uC5ED\uC744 \uBD88\uB7EC\uC624\uB294 \uC911..." })] }));
|
|
178
|
+
}
|
|
179
|
+
if (revisions.length === 0) {
|
|
180
|
+
return (_jsxs("div", { className: "rcm-revision-state rcm-revision-state-empty", children: [_jsx(IconHistory, { className: "rcm-icon", "data-size": "lg", "data-tone": "disabled" }), _jsx("span", { className: "rcm-text", "data-size": "sm", "data-tone": "muted", children: "\uBCC0\uACBD \uB0B4\uC5ED\uC774 \uC5C6\uC2B5\uB2C8\uB2E4." })] }));
|
|
181
|
+
}
|
|
182
|
+
return (_jsx("div", { className: "rcm-revision-wrap", children: _jsxs("div", { className: "rcm-revision-panel", children: [_jsx("div", { className: "rcm-revision-list", children: revisions.map((revision, index) => {
|
|
183
|
+
const isLatest = currentPage === 0 && index === 0;
|
|
184
|
+
const isDelete = revision.type === 'DELETE';
|
|
185
|
+
const isCreate = revision.type === 'CREATE';
|
|
186
|
+
const isClickable = !isDelete && !isCreate;
|
|
187
|
+
const itemClass = isLatest
|
|
188
|
+
? 'rcm-revision-item rcm-revision-item-latest'
|
|
189
|
+
: isDelete || isCreate
|
|
190
|
+
? 'rcm-revision-item rcm-revision-item-muted'
|
|
191
|
+
: 'rcm-revision-item rcm-revision-item-default';
|
|
192
|
+
return (_jsx("div", { className: itemClass, onClick: isClickable ? () => handleRevisionClick(revision, index) : undefined, children: _jsxs("div", { className: "rcm-revision-item-row", children: [_jsx("span", { className: "rcm-text", "data-weight": "medium", children: revision.name }), _jsx("span", { className: "rcm-text", "data-size": "xs", "data-tone": "muted", children: fDateTime(revision.createdAt, 'yyyy-MM-dd HH:mm:ss') }), isLatest && (_jsx("span", { className: "rcm-badge", "data-color": "info", children: "\uD604\uC7AC \uBC84\uC804" })), isCreate && (_jsx("span", { className: "rcm-badge", "data-color": "success", children: "\uC2E0\uADDC" })), isDelete && (_jsx("span", { className: "rcm-badge", "data-color": "error", children: entityForm.neverDelete ? '사용안함' : '삭제' }))] }) }, revision.id));
|
|
193
|
+
}) }), totalPage > 1 && (_jsx("div", { className: "rcm-revision-pagination", children: _jsx(Pagination, { total: totalPage, value: currentPage + 1, onChange: handlePageChange }) }))] }) }));
|
|
194
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function isOpenedAdvancedSearch(key: string, postFix?: string): boolean;
|
|
2
|
+
export declare function setOpenedAdvancedSearch(key: string, postFix?: string, opened?: boolean): void;
|
|
3
|
+
export declare function setClosedAdvancedSearch(key: string, postFix?: string): void;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { parse, stringify } from '../utils/jsonUtils';
|
|
2
|
+
class CacheContext {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.data = new Map();
|
|
5
|
+
}
|
|
6
|
+
static create(value) {
|
|
7
|
+
const cache = new CacheContext();
|
|
8
|
+
if (value) {
|
|
9
|
+
const data = parse(value);
|
|
10
|
+
cache.data = new Map(Object.entries(data.data));
|
|
11
|
+
}
|
|
12
|
+
return cache;
|
|
13
|
+
}
|
|
14
|
+
isOpened(key, postFix) {
|
|
15
|
+
const cacheKey = key + (postFix ? '_' + postFix : '');
|
|
16
|
+
return this.data.get(cacheKey) ?? false;
|
|
17
|
+
}
|
|
18
|
+
setOpened(key, postFix, opened = true) {
|
|
19
|
+
const cacheKey = key + (postFix ? '_' + postFix : '');
|
|
20
|
+
this.data.set(cacheKey, opened);
|
|
21
|
+
}
|
|
22
|
+
setClosed(key, postFix) {
|
|
23
|
+
this.setOpened(key, postFix, false);
|
|
24
|
+
}
|
|
25
|
+
toJson() {
|
|
26
|
+
return stringify(this);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function isOpenedAdvancedSearch(key, postFix) {
|
|
30
|
+
if (typeof window === 'undefined')
|
|
31
|
+
return false;
|
|
32
|
+
const cache = CacheContext.create(localStorage.getItem('advancedSearchFormOpened'));
|
|
33
|
+
return cache.isOpened(key, postFix);
|
|
34
|
+
}
|
|
35
|
+
export function setOpenedAdvancedSearch(key, postFix, opened = true) {
|
|
36
|
+
if (typeof window === 'undefined')
|
|
37
|
+
return;
|
|
38
|
+
const cache = CacheContext.create(localStorage.getItem('advancedSearchFormOpened'));
|
|
39
|
+
cache.setOpened(key, postFix, opened);
|
|
40
|
+
localStorage.setItem('advancedSearchFormOpened', cache.toJson());
|
|
41
|
+
}
|
|
42
|
+
export function setClosedAdvancedSearch(key, postFix) {
|
|
43
|
+
if (typeof window === 'undefined')
|
|
44
|
+
return;
|
|
45
|
+
const cache = CacheContext.create(localStorage.getItem('advancedSearchFormOpened'));
|
|
46
|
+
cache.setClosed(key, postFix);
|
|
47
|
+
localStorage.setItem('advancedSearchFormOpened', cache.toJson());
|
|
48
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { EntityForm } from './EntityForm';
|
|
2
|
+
import { HelpTextType, HiddenType, LabelType, ReadOnlyType, TooltipType } from './Config';
|
|
3
|
+
import { ReactNode } from 'react';
|
|
4
|
+
import { FieldInfoParameters } from './EntityField';
|
|
5
|
+
import { Session } from '../auth/types';
|
|
6
|
+
import { FilterItem, SearchForm } from '../form/SearchForm';
|
|
7
|
+
import { SubCollectionField } from './SubCollectionField';
|
|
8
|
+
/**
|
|
9
|
+
* Columns configuration type
|
|
10
|
+
* - number: Field columns only, card grid is auto-calculated
|
|
11
|
+
* - {card, field}: Explicit card grid and field columns
|
|
12
|
+
*/
|
|
13
|
+
export type ColumnsConfig = number | {
|
|
14
|
+
card: number;
|
|
15
|
+
field: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Card configuration for CardSubCollectionField
|
|
19
|
+
*/
|
|
20
|
+
export interface CardConfig {
|
|
21
|
+
/**
|
|
22
|
+
* Column configuration for card grid and field layout
|
|
23
|
+
* - number: Field columns only (card grid auto-calculated based on layout)
|
|
24
|
+
* - {card, field}: Explicit card grid columns and field columns
|
|
25
|
+
* - Mobile is always 1 column for both cards and fields
|
|
26
|
+
* @default 2
|
|
27
|
+
*/
|
|
28
|
+
columns?: ColumnsConfig;
|
|
29
|
+
/**
|
|
30
|
+
* Page size for client-side pagination
|
|
31
|
+
* - If set, enables client-side pagination with the specified page size
|
|
32
|
+
* - If not set or 0, all items are displayed without pagination
|
|
33
|
+
* @default undefined (no pagination)
|
|
34
|
+
*/
|
|
35
|
+
pageSize?: number;
|
|
36
|
+
/** Fields to display on each card (whitelist) */
|
|
37
|
+
displayFields?: string[];
|
|
38
|
+
/** Fields to exclude from card display (blacklist) - useful when titleField is a function */
|
|
39
|
+
excludeFields?: string[];
|
|
40
|
+
/** Field name or function for card title */
|
|
41
|
+
titleField?: string | ((item: any) => string);
|
|
42
|
+
/** CSS class name for card container */
|
|
43
|
+
containerClassName?: string;
|
|
44
|
+
/** CSS class name for selected card container */
|
|
45
|
+
selectedContainerClassName?: string;
|
|
46
|
+
/** CSS class name for card title */
|
|
47
|
+
titleClassName?: string;
|
|
48
|
+
/** Custom render function for entire card */
|
|
49
|
+
renderCard?: (item: any, isSelected: boolean, onSelect: () => void) => ReactNode;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* CardSubCollectionRelation configuration
|
|
53
|
+
* Defines the relationship between parent and child entities
|
|
54
|
+
*/
|
|
55
|
+
export interface CardSubCollectionRelation {
|
|
56
|
+
/** ManyToOne field name in the child entity */
|
|
57
|
+
mappedBy: string;
|
|
58
|
+
/** Filter field name (defaults to mappedBy) */
|
|
59
|
+
filterBy?: string;
|
|
60
|
+
/** Property to get the value from parent entity (default: 'id') */
|
|
61
|
+
valueProperty?: string;
|
|
62
|
+
/** Additional attributes for the subcollection */
|
|
63
|
+
attributes?: Record<string, any>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Filter configuration for CardSubCollectionField
|
|
67
|
+
* Same format as ViewListGridOptionProps.filters
|
|
68
|
+
*/
|
|
69
|
+
export type CardSubCollectionFilters = (entityForm: EntityForm) => Promise<{
|
|
70
|
+
condition: 'AND' | 'OR';
|
|
71
|
+
items: FilterItem[];
|
|
72
|
+
}[]>;
|
|
73
|
+
/**
|
|
74
|
+
* Fetch options for CardSubCollectionField
|
|
75
|
+
* Controls how data is fetched (SearchForm-based vs simple URL)
|
|
76
|
+
*/
|
|
77
|
+
export interface CardSubCollectionFetchOptions {
|
|
78
|
+
/** Whether to use SearchForm-based fetching (POST request) */
|
|
79
|
+
useSearchForm?: boolean;
|
|
80
|
+
/** Page size for fetching all data (default: 10000) */
|
|
81
|
+
pageSize?: number;
|
|
82
|
+
/** Whether to use viewDetail mode */
|
|
83
|
+
viewDetail?: boolean;
|
|
84
|
+
/** Additional filters to apply */
|
|
85
|
+
filters?: CardSubCollectionFilters;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* CardSubCollectionField configuration
|
|
89
|
+
* Extends SubCollectionField to display items in a card grid format
|
|
90
|
+
*/
|
|
91
|
+
export declare class CardSubCollectionField extends SubCollectionField {
|
|
92
|
+
tooltip?: TooltipType | undefined;
|
|
93
|
+
fetchUrl: string;
|
|
94
|
+
fetchUrlFunction?: ((parentEntityForm: EntityForm) => string) | undefined;
|
|
95
|
+
cardConfig?: CardConfig | undefined;
|
|
96
|
+
fetchOptions?: CardSubCollectionFetchOptions | undefined;
|
|
97
|
+
constructor(props: {
|
|
98
|
+
entityForm: EntityForm;
|
|
99
|
+
relation: CardSubCollectionRelation;
|
|
100
|
+
order: number;
|
|
101
|
+
name: string;
|
|
102
|
+
label?: LabelType | undefined;
|
|
103
|
+
helpText?: HelpTextType | undefined;
|
|
104
|
+
hidden?: HiddenType | undefined;
|
|
105
|
+
readonly?: ReadOnlyType | undefined;
|
|
106
|
+
fetchUrl?: string | ((parentEntityForm: EntityForm) => string) | undefined;
|
|
107
|
+
cardConfig?: CardConfig | undefined;
|
|
108
|
+
fetchOptions?: CardSubCollectionFetchOptions | undefined;
|
|
109
|
+
});
|
|
110
|
+
/**
|
|
111
|
+
* Override withTooltip to support tooltips (parent class doesn't support it)
|
|
112
|
+
*/
|
|
113
|
+
withTooltip(tooltip?: TooltipType): this;
|
|
114
|
+
getTooltip(props: FieldInfoParameters): Promise<ReactNode>;
|
|
115
|
+
/**
|
|
116
|
+
* Override clone to include card-specific properties
|
|
117
|
+
*/
|
|
118
|
+
clone(): CardSubCollectionField;
|
|
119
|
+
withFetchOptions(fetchOptions: CardSubCollectionFetchOptions): this;
|
|
120
|
+
withCardConfig(cardConfig: CardConfig): this;
|
|
121
|
+
/**
|
|
122
|
+
* Build the SearchForm for fetching data
|
|
123
|
+
* Note: getMappedByFilter() and getMappedByValue() are inherited from SubCollectionField
|
|
124
|
+
*/
|
|
125
|
+
buildSearchForm(parentEntityForm: EntityForm): Promise<SearchForm>;
|
|
126
|
+
/**
|
|
127
|
+
* Override render to display card grid instead of list grid
|
|
128
|
+
*/
|
|
129
|
+
render({ entityForm, session, }: {
|
|
130
|
+
entityForm: EntityForm;
|
|
131
|
+
session?: Session;
|
|
132
|
+
}): Promise<ReactNode | null>;
|
|
133
|
+
}
|