{"version":3,"file":"vineforceit-project-management-vf-task-detail.component-BUWmMBth.mjs","sources":["../../../projects/project-management/src/lib/vf-tasks/vf-task/components/vf-task-detail.component.ts","../../../projects/project-management/src/lib/vf-tasks/vf-task/components/vf-task-detail.component.html"],"sourcesContent":["import { CoreModule } from '@abp/ng.core';\nimport { ThemeSharedModule, DateAdapter, TimeAdapter } from '@abp/ng.theme.shared';\nimport { CommercialUiModule } from '@volo/abp.commercial.ng.ui';\nimport { ChangeDetectionStrategy, Component, inject, Input, OnInit } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport {\n  NgbNavModule,\n  NgbDatepickerModule,\n  NgbTimepickerModule,\n  NgbDateAdapter,\n  NgbTimeAdapter,\n  NgbDateStruct,\n  NgbDateParserFormatter,\n} from '@ng-bootstrap/ng-bootstrap';\nimport { VfTaskDetailViewService } from '../services/vf-task-detail.service';\n\n\n\n@Component({\n  selector: 'lib-vf-task-detail-modal',\n  changeDetection: ChangeDetectionStrategy.Default,\n  imports: [\n    CoreModule,\n    ThemeSharedModule,\n    CommercialUiModule,\n    ReactiveFormsModule,\n    NgbDatepickerModule,\n    NgbTimepickerModule,\n    NgbNavModule,\n  ],\n  providers: [\n    { provide: NgbDateAdapter, useClass: DateAdapter },\n    { provide: NgbTimeAdapter, useClass: TimeAdapter },\n\n  ],\n  templateUrl: './vf-task-detail.component.html',\n  styles: [],\n})\nexport class VfTaskDetailModalComponent implements OnInit {\n  public readonly service = inject(VfTaskDetailViewService);\n  ngOnInit(): void {\n    this.setMinDate();\n  }\n  minDate: NgbDateStruct | null = null;\n\n  setMinDate(): void {\n    const isEditMode = !!this.service.selected?.vfTask?.id;\n\n    if (!isEditMode) {\n      const today = new Date();\n      this.minDate = {\n        year: today.getFullYear(),\n        month: today.getMonth() + 1,\n        day: today.getDate(),\n      };\n    } else {\n      this.minDate = null;\n    }\n  }\n\n}","<abp-modal [busy]=\"service.isBusy\" [(visible)]=\"service.isVisible\" modalClass=\"modal-lg modal-dialog-centered\">\n  <ng-template #abpHeader>\n    <h3>\n      {{ (service.selected ? 'AbpUi::Edit' : 'ProjectManagement::NewVfTask') | abpLocalization }}\n    </h3>\n  </ng-template>\n\n  <ng-template #abpBody>\n    <form [formGroup]=\"service.form\" id=\"vf-task\" (ngSubmit)=\"service.submitForm()\" validateOnSubmit>\n      <ul ngbNav #nav=\"ngbNav\" class=\"nav-tabs mb-3\">\n        <li ngbNavItem>\n          <a ngbNavLink>{{ 'ProjectManagement::VfTask' | abpLocalization }}</a>\n          <ng-template ngbNavContent>\n            <div class=\"p-3 bg-light rounded-3 shadow-sm\">\n\n              <!-- Title -->\n              <div class=\"mb-3 row align-items-center\">\n                <label for=\"vf-task-title\" class=\"col-sm-4 col-form-label fw-semibold\">\n                  {{ 'ProjectManagement::Title' | abpLocalization }} *\n                </label>\n                <div class=\"col-sm-8\">\n                  <input id=\"vf-task-title\" formControlName=\"title\" class=\"form-control\" maxlength=\"200\"\n                    placeholder=\"Enter task title\" autofocus />\n                </div>\n              </div>\n\n              <!-- Description -->\n              <div class=\"mb-3 row align-items-center\">\n                <label for=\"vf-task-description\" class=\"col-sm-4 col-form-label fw-semibold\">\n                  {{ 'ProjectManagement::Description' | abpLocalization }}\n                </label>\n                <div class=\"col-sm-8\">\n                  <textarea id=\"vf-task-description\" formControlName=\"description\" class=\"form-control\" rows=\"3\"\n                    maxlength=\"2000\" placeholder=\"Task description...\"></textarea>\n                </div>\n              </div>\n\n              <!-- Status -->\n              <div class=\"mb-3 row align-items-center\">\n                <label for=\"vf-task-status\" class=\"col-sm-4 col-form-label fw-semibold\">\n                  {{ 'ProjectManagement::Status' | abpLocalization }} *\n                </label>\n                <div class=\"col-sm-8\">\n                  <select id=\"vf-task-status\" formControlName=\"status\" class=\"form-select\">\n                    <option [ngValue]=\"null\">--</option>\n                    <option *ngFor=\"let option of service.projectTaskStatusOptions; trackBy: service.track.by('key')\"\n                      [ngValue]=\"option.value\">\n                      {{ 'ProjectManagement::Enum:ProjectTaskStatus.' + option.value | abpLocalization }}\n                    </option>\n                  </select>\n                </div>\n              </div>\n\n              <!-- Priority -->\n              <div class=\"mb-3 row align-items-center\">\n                <label for=\"vf-task-priority\" class=\"col-sm-4 col-form-label fw-semibold\">\n                  {{ 'ProjectManagement::Priority' | abpLocalization }} *\n                </label>\n                <div class=\"col-sm-8\">\n                  <select id=\"vf-task-priority\" formControlName=\"priority\" class=\"form-select\">\n                    <option [ngValue]=\"null\">--</option>\n                    <option *ngFor=\"let option of service.projectPriorityOptions; trackBy: service.track.by('key')\"\n                      [ngValue]=\"option.value\">\n                      {{ 'ProjectManagement::Enum:ProjectPriority.' + option.value | abpLocalization }}\n                    </option>\n                  </select>\n                </div>\n              </div>\n              <div class=\"mb-3 row align-items-center\">\n                <label for=\"vf-task-due-date\" class=\"col-sm-4 col-form-label fw-semibold\">\n                  {{ 'ProjectManagement::DueDate' | abpLocalization }} *\n                </label>\n                <div class=\"col-sm-8\">\n                  <div class=\"input-group\" validationTarget>\n              <input\n  id=\"vf-task-due-date\"\n  formControlName=\"dueDate\"\n  class=\"form-control\"\n  [minDate]=\"minDate\"\n  ngbDatepicker\n  #dueDateInput\n  placeholder=\"dd/MM/yyyy\"\n  #dueDateDatepicker=\"ngbDatepicker\"\n  (click)=\"dueDateDatepicker.open()\"\n  (keyup.space)=\"dueDateDatepicker.open()\" />\n\n                    @if (dueDateInput.value) {\n                    <button class=\"btn btn-outline-secondary\" type=\"button\" (click)=\"\n          dueDateDatepicker.writeValue(null);\n          dueDateDatepicker.manualDateChange(null, true)\n        \">\n                      <i class=\"fa fa-times\"></i>\n                    </button>\n                    }\n                  </div>\n\n                  <div class=\"invalid-feedback d-block\" *ngIf=\"\n    service.form.get('dueDate')?.hasError('pastDate') &&\n    (service.form.get('dueDate')?.touched || service.formSubmitted)\n  \">\n                    {{ 'ProjectManagement::DueDateMustNotBeInPast' | abpLocalization }}\n                  </div>\n                </div>\n              </div>\n              <!-- Project -->\n              <div class=\"mb-3 row align-items-center\">\n                <label for=\"vf-task-vf-project-id\" class=\"col-sm-4 col-form-label fw-semibold\">\n                  {{ 'ProjectManagement::VfProject' | abpLocalization }} *\n                </label>\n                <div class=\"col-sm-8\">\n                  <abp-lookup-select cid=\"vf-task-vf-project-id\" formControlName=\"vfProjectId\"\n                    [getFn]=\"service.getVfProjectLookup\" />\n                </div>\n              </div>\n\n              <!-- Identity User -->\n              <div class=\"mb-3 row align-items-center\">\n                <label for=\"vf-task-identity-user-id\" class=\"col-sm-4 col-form-label fw-semibold\">\n                  {{ 'ProjectManagement::ProjectTaskIdentityUser' | abpLocalization }}\n                </label>\n                <div class=\"col-sm-8\">\n                  <abp-lookup-select cid=\"vf-task-identity-user-id\" formControlName=\"identityUserId\"\n                    [getFn]=\"service.getIdentityUserLookup\" />\n                </div>\n              </div>\n\n            </div>\n          </ng-template>\n        </li>\n      </ul>\n      <div [ngbNavOutlet]=\"nav\"></div>\n    </form>\n  </ng-template>\n\n  <ng-template #abpFooter>\n    <button type=\"button\" class=\"btn btn-secondary\" abpClose>\n      {{ 'AbpUi::Cancel' | abpLocalization }}\n    </button>\n    <abp-button iconClass=\"fa fa-check\" buttonType=\"submit\" formName=\"vf-task\">\n      {{ 'AbpUi::Save' | abpLocalization }}\n    </abp-button>\n  </ng-template>\n</abp-modal>"],"names":["i3","i5","i6","i7"],"mappings":"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"}