Skip to content
Snippets Groups Projects
Commit 1ce7cbc9 authored by Florent POITTEVIN's avatar Florent POITTEVIN
Browse files

fix: bind save status button of deposit to deposit form and deposit formly form

parent 2d0a6754
No related branches found
No related tags found
1 merge request!192feat: DLCM-1205 integrate formly library to deposit
......@@ -57,7 +57,8 @@ import {
isEmptyArray,
isNotNullNorUndefined,
isNullOrUndefined,
KeyValue, MappingObjectUtil,
KeyValue,
MappingObjectUtil,
PropertyName,
ResourceNameSpace,
SolidifyValidator,
......
<dlcm-button-toolbar-detail [mode]="'create'"
[formPresentational]="formPresentational"
[listExtraButtons]="listExtraButtons"
[saveAvailable]="false"
(backToListChange)="backToList()"
>
</dlcm-button-toolbar-detail>
......
......@@ -12,12 +12,12 @@ import {
DepositState,
DepositStateModel,
} from "@app/features/deposit/stores/deposit.state";
import {SharedAbstractFormPresentational} from "@app/shared/components/presentationals/shared-abstract-form/shared-abstract-form.presentational";
import {SharedAbstractCreateRoutable} from "@app/shared/components/routables/shared-abstract-create/shared-abstract-create.routable";
import {LocalStateEnum} from "@app/shared/enums/local-state.enum";
import {LocalStateModel} from "@app/shared/models/local-state.model";
import {SharedOrgUnitAction} from "@app/shared/stores/organizational-unit/shared-organizational-unit.action";
import {AppAuthorizedOrganizationalUnitState} from "@app/stores/authorized-organizational-unit/app-authorized-organizational-unit.state";
import {DepositFormPresentational} from "@deposit/components/presentationals/deposit-form/deposit-form.presentational";
import {DepositOrganizationalUnitCustomMetadataFormAction} from "@deposit/stores/organizational-unit/custom-metadata-form/deposit-organizational-unit-custom-metadata-form.action";
import {DepositOrganizationalUnitCustomMetadataFormState} from "@deposit/stores/organizational-unit/custom-metadata-form/deposit-organizational-unit-custom-metadata-form.state";
import {
CustomMetadataForm,
Deposit,
......@@ -32,17 +32,21 @@ import {
Select,
Store,
} from "@ngxs/store";
import {ExtraButtonToolbar} from "@shared/models/extra-button-toolbar.model";
import {SharedOrgUnitPreservationPolicyAction} from "@shared/stores/organizational-unit/preservation-policy/shared-organizational-unit-preservation-policy.action";
import {SharedOrgUnitSubmissionPolicyAction} from "@shared/stores/organizational-unit/submission-policy/shared-organizational-unit-submission-policy.action";
import {Observable} from "rxjs";
import {
distinctUntilChanged,
filter,
} from "rxjs/operators";
import {
CompositionState,
FormState, isNotNullNorUndefined, MemoizedUtil,
ResourceState,
FormState,
isNotNullNorUndefined,
MemoizedUtil,
TRANSLATE,
} from "solidify-frontend";
import {distinctUntilChanged, filter} from "rxjs/operators";
import {DepositOrganizationalUnitCustomMetadataFormAction} from "@deposit/stores/organizational-unit/custom-metadata-form/deposit-organizational-unit-custom-metadata-form.action";
import {DepositOrganizationalUnitCustomMetadataFormState} from "@deposit/stores/organizational-unit/custom-metadata-form/deposit-organizational-unit-custom-metadata-form.state";
@Component({
selector: "dlcm-deposit-create-routable",
......@@ -63,9 +67,22 @@ export class DepositCreateRoutable extends SharedAbstractCreateRoutable<Deposit,
customMetadataFormObs: Observable<CustomMetadataForm> = CompositionState.current(this._store, DepositOrganizationalUnitCustomMetadataFormState);
@ViewChild("formPresentational")
readonly formPresentational: SharedAbstractFormPresentational<Deposit>;
readonly formPresentational: DepositFormPresentational;
orgUnitObs: Observable<OrganizationalUnit> = MemoizedUtil.select(this._store, DepositState, (state) => state.organizationalUnit);
listExtraButtons: ExtraButtonToolbar<Deposit>[] = [
{
color: "primary",
typeButton: "flat-button",
icon: "save",
labelToTranslate: TRANSLATE("app.navigation.button.save"),
order: 40,
callback: () => this.formPresentational.onSubmit(),
displayCondition: (resource) => true,
disableCondition: () => this.formPresentational?.form?.pristine || this.formPresentational?.form?.invalid || this.formPresentational?.formFormly?.invalid,
},
];
constructor(protected readonly _store: Store,
protected readonly _actions$: Actions,
protected readonly _changeDetector: ChangeDetectorRef) {
......
......@@ -15,11 +15,12 @@
[deleteAvailable]="canDoAlterationActions"
[editAvailable]="canDoAlterationActions"
[listExtraButtons]="listExtraButtons"
[saveAvailable]="false"
[historyAvailable]="true"
(editChange)="edit()"
(deleteChange)="delete()"
(backToDetailChange)="backToDetail()"
(backToListChange)="backToList()"
[historyAvailable]="true"
(showHistoryChange)="showHistory()"
>
</dlcm-button-toolbar-detail>
......
......@@ -137,6 +137,16 @@ export class DepositDetailEditRoutable extends SharedAbstractDetailEditRoutable<
readonly KEY_PARAM_NAME: keyof Deposit & string = "title";
listExtraButtons: ExtraButtonToolbar<Deposit>[] = [
{
color: "primary",
typeButton: "flat-button",
icon: "save",
labelToTranslate: TRANSLATE("app.navigation.button.save"),
order: 40,
callback: () => this.depositService?.formPresentational?.onSubmit(),
displayCondition: (resource) => this.isEdit,
disableCondition: () => this.depositService?.formPresentational?.form?.pristine || this.depositService?.formPresentational?.form?.invalid || this.depositService?.formPresentational?.formFormly?.invalid,
},
{
color: "primary",
icon: "file_download",
......
......@@ -49,6 +49,9 @@ export class ButtonToolbarDetailPresentational<TResourceModel extends BaseResour
@Input()
refreshAvailable: boolean = false;
@Input()
saveAvailable: boolean = true;
@Input()
historyAvailable: boolean = false;
......@@ -127,7 +130,7 @@ export class ButtonToolbarDetailPresentational<TResourceModel extends BaseResour
labelToTranslate: this.mode === "create" ? this.keyCreateButtonToTranslate : this.keySaveButtonToTranslate,
order: 50,
callback: () => this.save(),
displayCondition: (resource) => this.mode !== "detail",
displayCondition: (resource) => this.mode !== "detail" && this.saveAvailable,
disableCondition: () => this.formPresentational?.form?.pristine || this.formPresentational?.form?.invalid,
},
];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment