Commit 1587f3a0 by Ali Arshad

Internal CR fixes.

parent c69ab081
<div class="dashboard-content-area second-part">
<app-error-message></app-error-message>
<form #form="ngForm">
<form #form="ngForm" *ngIf="!showLoader">
<div class="ui-g ui-fluid">
<div class="page-title mb-0">{{editMode ? "Edit" : "Add"}} Workflow Template</div>
</div>
<div class="ui-g form-group">
<div class="ui-g-12 ui-md-12">
<div class="ui-g form-group">
<p-dialog header="Message Template" [(visible)]="displayNewMessageTemplate" #messageTemplateDialog>
<app-edit-message-template *ngIf="displayNewMessageTemplate"
[objectID]="selectedTemplateID"
(closeModal)="closeDialog($event)"></app-edit-message-template>
<div class="ui-g ui-fluid">
<div class="ui-g-12">
<div class="page-title mb-0">
<a [routerLink]="['/admin/list-workflow-templates']" class="arrow-btn-blue ml-0">
<img src="/assets/images/arrow-left-prev_blue.svg">
</a>
{{editMode ? "Edit" : "Add"}} Workflow Template
</div>
</div>
</div>
<div class="ui-g ui-fluid">
<p-dialog #messageTemplateDialog [(visible)]="displayNewMessageTemplate" header="Message Template">
<app-edit-message-template (closeModal)="closeDialog($event)"
*ngIf="displayNewMessageTemplate"
[objectID]="selectedTemplateID"></app-edit-message-template>
</p-dialog>
<div class="ui-g-12 ui-g-offset-4 ui-md-4 h-60">
<label for="TemplateNameId" (click)="toggleInput($event, 'TemplateName')"
*ngIf="showLabel('TemplateName')">{{workflow.TemplateName}}</label>
<input id="TemplateNameId" *ngIf="showInput('TemplateName')"
<div class="ui-g-12 ui-g-offset-3 ui-md-6 h-60 text-center templateName">
<label (click)="toggleInput($event, 'TemplateName', true)" *ngIf="showLabel('TemplateName')"
for="TemplateNameId">{{workflow.TemplateName}}</label>
<input (blur)="toggleInput($event, 'TemplateName', false)" *ngIf="!showLabel('TemplateName')"
[(ngModel)]="workflow.TemplateName" [disabled]="showLoader"
(blur)="toggleInput($event, 'TemplateName')" class="form-control"
class="form-control" id="TemplateNameId"
name="TemplateName" required/>
</div>
</div>
<!-- Start Pre stages -->
<div class="ui-g form-group">
<div class="ui-g ui-fluid">
<div class="ui-g-12 ui-md-12">
<p-panel *ngFor="let stage of filteredStages(true, false)" toggler="header"
[toggleable]="true">
<p-panel *ngFor="let stage of preStages" [toggleable]="true"
toggler="header">
<p-header>
<span class="ui-panel-title" *ngIf="showStageLabel('StageName'+stage.ObjectID, stage)"
(click)="toggleStageInput($event, 'StageName'+stage.ObjectID, stage)">
<span class="ui-panel-title">
{{getStageHeader(stage)}}
</span>
</p-header>
<div class="form-group">
<div class="work-belonging">
<div class="form-group ui-g">
<div class="work-belonging ui-g-12 mb-0">
<span class="calcField">Landing Page</span>
</div>
<div class="form-group row">
<div class="col-md-8">
<div class="form-group ui-g-12">
<label for="LandingButtonText">Button Text</label>
<input name="LandingButtonText" type="text" class="form-control"
id="LandingButtonText"
[(ngModel)]="workflow.LandingButtonText" [disabled]="showLoader"
<input [(ngModel)]="workflow.LandingButtonText" [disabled]="showLoader" class="form-control"
fieldLabel="Landing Button Text"
tabindex="1" required>
id="LandingButtonText" name="LandingButtonText"
required
tabindex="1" type="text">
</div>
</div>
<div class="work-belonging">
<div class="work-belonging ui-g-12 mb-0">
<span class="calcField">Verification Page</span>
</div>
<div class="form-group row">
<div class="col-md-12">
<div class="form-group ui-g-12">
<label for="VerificationHeaderText">Header Text</label>
<input name="VerificationHeaderText" type="text" class="form-control"
id="VerificationHeaderText" [disabled]="showLoader"
[(ngModel)]="workflow.VerificationHeaderText"
fieldLabel="Verification Header Text"
tabindex="2" required>
</div>
<input [(ngModel)]="workflow.VerificationHeaderText" [disabled]="showLoader" class="form-control"
fieldLabel="Verification Header Text" id="VerificationHeaderText"
name="VerificationHeaderText"
required
tabindex="2" type="text">
</div>
<div class="work-belonging">
<div class="work-belonging ui-g-12 mb-0">
<span class="calcField">Application</span>
</div>
<div class="criteria_section">
<div class="criteria_section ui-g-12">
<fieldset>
<legend>
<span class="calcField">Capture CV</span>
<p-inputSwitch [(ngModel)]="workflow.CaptureCV" name="CaptureCV"
[disabled]="showLoader">
<p-inputSwitch [(ngModel)]="workflow.CaptureCV" [disabled]="showLoader"
name="CaptureCV">
</p-inputSwitch>
</legend>
<div *ngIf="workflow.CaptureCV" class="ui-g-12 ui-md-6">
<div class="ui-g-12 ui-md-4">
<label> Mandatory </label>
<label> Mandatory</label>
</div>
<div class="ui-g-12 ui-md-2">
<p-inputSwitch [(ngModel)]="workflow.IsCVMandatory"
......@@ -83,17 +85,17 @@
</div>
</fieldset>
</div>
<div class="criteria_section">
<div class="criteria_section ui-g-12">
<fieldset>
<legend>
<span class="calcField">Capture Cover Letter</span>
<p-inputSwitch [(ngModel)]="workflow.CaptureCL" name="CaptureCL"
[disabled]="showLoader">
<p-inputSwitch [(ngModel)]="workflow.CaptureCL" [disabled]="showLoader"
name="CaptureCL">
</p-inputSwitch>
</legend>
<div *ngIf="workflow.CaptureCL" class="ui-g-12 ui-md-6">
<div class="ui-g-12 ui-md-4">
<label> Mandatory </label>
<label> Mandatory</label>
</div>
<div class="ui-g-12 ui-md-2">
<p-inputSwitch [(ngModel)]="workflow.IsCLMandatory"
......@@ -104,57 +106,57 @@
</div>
</fieldset>
</div>
<div class="form-group row">
<div class="col-md-12">
<div class="form-group ui-g-12">
<label for="VerificationHeaderText">Button Text</label>
<input name="ApplicationButtonText" type="text" class="form-control"
[(ngModel)]="workflow.ApplicationButtonText"
[disabled]="showLoader"
<input [(ngModel)]="workflow.ApplicationButtonText" [disabled]="showLoader" class="form-control"
fieldLabel="Application Button Text"
tabindex="7" required>
</div>
</div>
<div class="form-group row">
<div class="col-md-2">
<label>Action</label>
</div>
<div class="col-md-10">
<p-selectButton [options]="responseActions"
[(ngModel)]="workflow.ApplicationResponseAction"
optionLabel="Description"
name="ApplicationResponseAction">
name="ApplicationButtonText"
required
tabindex="7" type="text">
</div>
<div class="form-group ui-g-12">
<div class="ui-g flex-center">
<div class="ui-g-2">
<label class="mb-0">Action</label>
</div>
<div class="ui-g-10">
<p-selectButton [(ngModel)]="workflow.ApplicationResponseAction"
[options]="responseActions"
name="ApplicationResponseAction"
optionLabel="Description">
</p-selectButton>
</div>
</div>
<div class="form-group row" *ngIf="emailResponseSelected()">
<div class="col-md-6">
</div>
<div *ngIf="emailResponseSelected()" class="form-group ui-g-12">
<div class="ui-g">
<div class="ui-g-6">
<label for="ThankYouHeaderText">Header Text for Thank You page</label>
<input name="ThankYouHeaderText" [(ngModel)]="workflow.ThankYouHeaderText"
id="ThankYouHeaderText" [disabled]="showLoader"
type="text" class="form-control"
fieldLabel="Header Text for Thank You page"
tabindex="8" required>
<input [(ngModel)]="workflow.ThankYouHeaderText" [disabled]="showLoader"
class="form-control" fieldLabel="Header Text for Thank You page"
id="ThankYouHeaderText" name="ThankYouHeaderText"
required
tabindex="8" type="text">
</div>
<div class="col-md-6">
<div class="ui-g-6">
<label for="ThankYouSecondaryText">Secondary Text</label>
<input name="ThankYouSecondaryText" id="ThankYouSecondaryText"
[(ngModel)]="workflow.ThankYouSecondaryText" [disabled]="showLoader"
fieldLabel="Secondary Text" type="text" class="form-control"
tabindex="9">
<input [(ngModel)]="workflow.ThankYouSecondaryText" [disabled]="showLoader"
class="form-control" fieldLabel="Secondary Text"
id="ThankYouSecondaryText" name="ThankYouSecondaryText" tabindex="9"
type="text">
</div>
</div>
<div class="work-belonging">
</div>
<div class="work-belonging ui-g-12">
<span class="calcField">Job Outline Page</span>
</div>
<div class="form-group row">
<div class="col-md-12">
<div class="form-group ui-g-12">
<label for="JobOutlineButtonText">Button Text</label>
<input name="JobOutlineButtonText" id="JobOutlineButtonText"
[(ngModel)]="workflow.JobOutlineButtonText"
type="text" class="form-control" [disabled]="showLoader"
fieldLabel="Job Outline Button Text"
tabindex="10" required>
</div>
<input [(ngModel)]="workflow.JobOutlineButtonText" [disabled]="showLoader"
class="form-control"
fieldLabel="Job Outline Button Text" id="JobOutlineButtonText" name="JobOutlineButtonText"
required
tabindex="10" type="text">
</div>
</div>
<div class="ui-g form-group">
......@@ -164,24 +166,24 @@
<div class="col-md-6">
<h3>Steps</h3>
</div>
<div class="col-md-offset-2 col-md-4" *ngIf="stepTypes && stepTypes.length">
<app-select-2 [data]="stepTypes" [value]="0"
fieldLabel="Description"
(valChange)="addStep($event, stage)">
<div *ngIf="stepTypes && stepTypes.length" class="col-md-offset-2 col-md-4">
<app-select-2 (valChange)="addStep($event, stage)" [data]="stepTypes"
[value]="0"
fieldLabel="Description">
</app-select-2>
</div>
</div>
<p-orderList [value]="stage.Steps" header="Steps"
dragdrop="true" (onReorder)="reAssignStepOrders(stage)">
<p-orderList (onReorder)="reAssignStepOrders(stage)" [value]="stage.Steps"
dragdrop="true" header="Steps">
<ng-template let-step pTemplate="item">
<div class="drag-block">
<div class="col-md-4">
<h4>{{step.StepType.Description}}</h4>
</div>
<div class="col-md-2">
<button type="button" pButton label=" " icon="ui-icon-close"
[disabled]="showLoader"
(click)="removeStep(step, stage)"></button>
<button (click)="removeStep(step, stage)" [disabled]="showLoader" icon="ui-icon-close" label=" "
pButton
type="button"></button>
</div>
<div class="col-md-6"></div>
</div>
......@@ -194,7 +196,7 @@
<div class="ui-g-12 ui-md-12">
<div class="form-group row">
<div class="ui-g-12 ui-md-6">
<label> Automatically progress to next stage </label>
<label> Automatically progress to next stage</label>
</div>
<div class="ui-g-12 ui-md-4">
<p-inputSwitch [(ngModel)]="stage.AutoProgress" [disabled]="showLoader"
......@@ -204,7 +206,7 @@
</div>
<div class="form-group row">
<div class="ui-g-12 ui-md-6">
<label> Use messaging </label>
<label> Use messaging</label>
</div>
<div class="ui-g-12 ui-md-4">
<p-inputSwitch [(ngModel)]="stage.UseMessaging" [disabled]="showLoader"
......@@ -212,71 +214,74 @@
</p-inputSwitch>
</div>
</div>
<p-panel header="{{stageMessagesCount(stage)}}" [toggleable]="true"
[collapsed]="!stage.UseMessaging">
<p-panel [collapsed]="!stage.UseMessaging" [toggleable]="true"
header="{{stageMessagesCount(stage)}}">
<div class="form-group row">
<div class="col-md-offset-9 col-md-3">
<button class="btn btn-primary add-more-btn" tabindex="11"
<button (click)="addMessage(stage)" *ngIf="stage.UseMessaging"
[disabled]="showLoader"
(click)="addMessage(stage)" *ngIf="stage.UseMessaging">Add
class="btn btn-primary add-more-btn" tabindex="11">Add
Message
</button>
</div>
</div>
<!-- Display Pre Stage Messages here -->
<div class="form-group row" *ngFor="let message of stage.WorkFlowMessages">
<div class="col-lg-12 col-md-12" *ngIf="message.IsWithdrawalMessage">
<div *ngFor="let message of stage.WorkFlowMessages" class="form-group row">
<div *ngIf="message.IsWithdrawalMessage" class="col-lg-12 col-md-12">
<h3>Withdrawal Process</h3>
</div>
<div class="col-lg-12 col-md-12" *ngIf="stage.UseMessaging">
<div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12 mb-10">
<div class="col-md-4">
<p-multiSelect [options]="applicantSources"
name="applicantSources{{message.ObjectID}}"
[(ngModel)]="message.ApplicantSources"
[panelStyle]="{minWidth:'12em'}"
<label>&nbsp;</label>
<p-multiSelect [(ngModel)]="message.ApplicantSources"
[disabled]="showLoader"
[filter]="false"
optionLabel="Description"
[disabled]="showLoader">
[options]="applicantSources"
[panelStyle]="{minWidth:'12em'}"
class="form-control"
name="applicantSources{{message.ObjectID}}"
optionLabel="Description">
</p-multiSelect>
</div>
<div class="col-md-4">
<label>After</label>
<p-inputMask name="Delay{{message.ObjectID}}"
class="form-control" [disabled]="showLoader"
id="Delay{{message.ObjectID}}"
<p-inputMask (change)="generateDelayString(message)"
(onBlur)="toggleInput($event, 'Delay'+message.ObjectID, false)" (onFocus)="toggleInput($event, 'Delay'+message.ObjectID, true)"
*ngIf="!showLabel('Delay'+message.ObjectID) || !message.Delay"
[(ngModel)]="message.Delay"
(onFocus)="toggleDelayInput($event, 'Delay'+message.ObjectID,message)"
(onBlur)="toggleDelayInput($event, 'Delay'+message.ObjectID, message)"
*ngIf="!showDelayLabel('Delay'+message.ObjectID, message)"
mask="9?9:99:99">
[disabled]="showLoader"
[id]="'Delay'+message.ObjectID"
class="form-control"
mask="9?9:99:99"
name="Delay{{message.ObjectID}}">
</p-inputMask>
<div *ngIf="showDelayLabel('Delay'+message.ObjectID, message)"
(click)="toggleDelayInput($event, 'Delay'+message.ObjectID,message)">
<div (click)="toggleInput($event, 'Delay'+message.ObjectID, true)"
*ngIf="showLabel('Delay'+message.ObjectID) && message.Delay">
<label>{{message.DelayString}}</label>
</div>
</div>
<div class="col-md-4">
<label for="Variance{{message.ObjectID}}">+/-</label>
<input name="Variance{{message.ObjectID}}"
id="Variance{{message.ObjectID}}"
[(ngModel)]="message.Variance" [disabled]="showLoader"
type="text" class="form-control">
<input [(ngModel)]="message.Variance"
[disabled]="showLoader"
class="form-control" id="Variance{{message.ObjectID}}"
name="Variance{{message.ObjectID}}" type="text">
</div>
</div>
<div class="col-lg-12 col-md-12">
<div class="col-lg-12 col-md-12 flex-center">
<div class="col-md-4">
<label>Business Hours only</label>
<p-checkbox name="BusinessHoursOnly{{message.ObjectID}}"
[(ngModel)]="message.BusinessHoursOnly"
binary="true">
<label class="mb-0">Business Hours only</label>
<p-checkbox [(ngModel)]="message.BusinessHoursOnly"
binary="true"
name="BusinessHoursOnly{{message.ObjectID}}">
</p-checkbox>
</div>
<div class="col-md-6">
<label>Send</label>
<p-dropdown [options]="messageTemplates" filter="true"
optionLabel="TemplateName"
<p-dropdown [(ngModel)]="message.MessageTemplate" [options]="messageTemplates"
filter="true"
name="messageTemplate{{message.ObjectID}}"
[(ngModel)]="message.MessageTemplate">
optionLabel="TemplateName">
<ng-template let-message pTemplate="selectedItem">
<i class="{{getMessageClass(message.value)}}"></i>
<span class="dropdown-text">{{message.label}}</span>
......@@ -292,13 +297,13 @@
</p-dropdown>
</div>
<div class="col-md-2 text-center">
<button type="button" pButton label=" " [disabled]="showLoader"
icon="ui-icon-settings"
(click)="configureMessageTemplate(message)"></button>
<button type="button" pButton label=" " [disabled]="showLoader"
icon="ui-icon-close"
*ngIf="!message.IsWithdrawalMessage"
(click)="removeMessage(message, stage)"></button>
<button (click)="configureMessageTemplate(message)" [disabled]="showLoader" icon="ui-icon-settings"
pButton
type="button">
</button>
<button (click)="removeMessage(message, stage)" *ngIf="!message.IsWithdrawalMessage" [disabled]="showLoader" icon="ui-icon-close"
pButton type="button">
</button>
</div>
</div>
</div>
......@@ -313,54 +318,55 @@
</div>
</div>
<!-- End Pre stages -->
<div class="row">
<div class="col-md-6 text-right">
<div class="ui-g ui-fluid">
<div class="ui-g-6 text-right">
<h3>Stages</h3>
</div>
<div class="col-md-3 col-md-offset-3">
<button class="btn btn-primary add-more-btn" tabindex="11" [disabled]="showLoader"
(click)="addStage()">Add Stage
<div class="ui-g-3 ui-g-offset-3">
<button (click)="addStage()" [disabled]="showLoader" class="btn btn-primary add-more-btn"
tabindex="11">Add Stage
</button>
</div>
</div>
<div class="ui-g form-group">
<div class="ui-g ui-fluid">
<div class="ui-g-12 ui-md-12">
<p-panel *ngFor="let stage of filteredStages(false, false)" toggler="header"
[toggleable]="true">
<p-panel *ngFor="let stage of genericStages" [toggleable]="true"
toggler="header">
<p-header>
<span class="ui-panel-title" *ngIf="showStageLabel('StageName'+stage.SortOrder, stage)"
(click)="toggleStageInput($event, 'StageName'+stage.SortOrder, stage)">
<span (click)="toggleInput($event, 'StageName'+stage.SortOrder, true)" *ngIf="showLabel('StageName'+stage.SortOrder)"
class="ui-panel-title">
{{getStageHeader(stage)}}
</span>
<input id="StageName{{stage.SortOrder}}Id"
*ngIf="showStageInput('StageName'+stage.SortOrder, stage)"
pInputText [disabled]="showLoader"
[(ngModel)]="stage.Name"
(blur)="toggleStageInput($event, 'StageName'+stage.SortOrder, stage)"
name="StageName{{stage.SortOrder}}" required/>
<input (blur)="toggleInput($event, 'StageName'+stage.SortOrder, false)"
*ngIf="!showLabel('StageName'+stage.SortOrder)"
[(ngModel)]="stage.Name" [disabled]="showLoader"
class="form-control panel-header-input"
id="StageName{{stage.SortOrder}}Id"
name="StageName{{stage.SortOrder}}"
pInputText required/>
</p-header>
<div class="ui-g form-group">
<!-- Start steps section -->
<div class="ui-g-12 ui-md-12" *ngIf="!stage.StageType.IsPostStage">
<div *ngIf="!stage.StageType.IsPostStage" class="ui-g-12 ui-md-12">
<div class="form-group row">
<div class="col-md-offset-8 col-md-4" *ngIf="stepTypes && stepTypes.length">
<app-select-2 [data]="stepTypes" [value]="0"
fieldLabel="Description"
(valChange)="addStep($event, stage)">
<div *ngIf="stepTypes && stepTypes.length" class="col-md-offset-8 col-md-4">
<app-select-2 (valChange)="addStep($event, stage)" [data]="stepTypes"
[value]="0"
fieldLabel="Description">
</app-select-2>
</div>
</div>
<p-orderList [value]="stage.Steps" header="Steps"
dragdrop="true" (onReorder)="reAssignStepOrders(stage)">
<p-orderList (onReorder)="reAssignStepOrders(stage)" [value]="stage.Steps"
dragdrop="true" header="Steps">
<ng-template let-step pTemplate="item">
<div class="drag-block">
<div class="col-md-4">
<h4>{{step.StepType.Description}}</h4>
</div>
<div class="col-md-2">
<button type="button" pButton label=" " [disabled]="showLoader"
icon="ui-icon-close"
(click)="removeStep(step, stage)"></button>
<button (click)="removeStep(step, stage)" [disabled]="showLoader" icon="ui-icon-close" label=" "
pButton
type="button"></button>
</div>
<div class="col-md-6"></div>
</div>
......@@ -373,7 +379,7 @@
<div class="ui-g-12 ui-md-12">
<div class="form-group row">
<div class="ui-g-12 ui-md-6">
<label> Automatically progress to next stage </label>
<label> Automatically progress to next stage</label>
</div>
<div class="ui-g-12 ui-md-4">
<p-inputSwitch [(ngModel)]="stage.AutoProgress" [disabled]="showLoader"
......@@ -383,7 +389,7 @@
</div>
<div class="form-group row">
<div class="ui-g-12 ui-md-6">
<label> Use messaging </label>
<label> Use messaging</label>
</div>
<div class="ui-g-12 ui-md-4">
<p-inputSwitch [(ngModel)]="stage.UseMessaging" [disabled]="showLoader"
......@@ -391,65 +397,66 @@
</p-inputSwitch>
</div>
</div>
<p-panel header="{{stageMessagesCount(stage)}}" [toggleable]="true"
[collapsed]="!stage.UseMessaging">
<p-panel [collapsed]="!stage.UseMessaging" [toggleable]="true"
header="{{stageMessagesCount(stage)}}">
<div class="form-group row">
<div class="col-md-offset-9 col-md-3">
<button class="btn btn-primary add-more-btn" tabindex="11"
<button (click)="addMessage(stage)" *ngIf="stage.UseMessaging"
[disabled]="showLoader"
(click)="addMessage(stage)" *ngIf="stage.UseMessaging">Add
class="btn btn-primary add-more-btn" tabindex="11">Add
Message
</button>
</div>
</div>
<!-- Display Messages here -->
<div class="form-group row"
*ngFor="let message of stage.WorkFlowMessages">
<div class="col-lg-12 col-md-12"
*ngIf="message.IsWithdrawalMessage">
<div *ngFor="let message of stage.WorkFlowMessages"
class="form-group row">
<div *ngIf="message.IsWithdrawalMessage"
class="col-lg-12 col-md-12">
<h3>Withdrawal Process</h3>
</div>
<div class="col-lg-12 col-md-12" *ngIf="stage.UseMessaging">
<div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12">
<div class="col-md-4">
<label>After</label>
<p-inputMask name="Delay{{message.ObjectID}}"
class="form-control" [disabled]="showLoader"
id="Delay{{message.ObjectID}}"
<p-inputMask (change)="generateDelayString(message)"
(onBlur)="toggleInput($event, 'Delay'+message.ObjectID, false)" (onFocus)="toggleInput($event, 'Delay'+message.ObjectID, true)"
*ngIf="!showLabel('Delay'+message.ObjectID) || !message.Delay"
[(ngModel)]="message.Delay"
(onFocus)="toggleDelayInput($event, 'Delay'+message.ObjectID,message)"
(onBlur)="toggleDelayInput($event, 'Delay'+message.ObjectID, message)"
*ngIf="!showDelayLabel('Delay'+message.ObjectID, message)"
mask="9?9:99:99">
[disabled]="showLoader"
[id]="'Delay'+message.ObjectID"
class="form-control"
mask="9?9:99:99"
name="Delay{{message.ObjectID}}">
</p-inputMask>
<div *ngIf="showDelayLabel('Delay'+message.ObjectID, message)"
(click)="toggleDelayInput($event, 'Delay'+message.ObjectID,message)">
<div (click)="toggleInput($event, 'Delay'+message.ObjectID, true)"
*ngIf="showLabel('Delay'+message.ObjectID) && message.Delay">
<label>{{message.DelayString}}</label>
</div>
</div>
<div class="col-md-4">
<label for="Variance{{message.ObjectID}}">+/-</label>
<input name="Variance{{message.ObjectID}}"
id="Variance{{message.ObjectID}}"
[(ngModel)]="message.Variance" [disabled]="showLoader"
type="text" class="form-control">
<input [(ngModel)]="message.Variance"
[disabled]="showLoader"
[id]="'Variance'+message.ObjectID" class="form-control"
name="Variance{{message.ObjectID}}" type="text">
</div>
<div class="col-md-4">
<label>Business Hours only</label>
<p-checkbox name="BusinessHoursOnly{{message.ObjectID}}"
[(ngModel)]="message.BusinessHoursOnly"
binary="true">
<p-checkbox [(ngModel)]="message.BusinessHoursOnly"
binary="true"
name="BusinessHoursOnly{{message.ObjectID}}">
</p-checkbox>
</div>
</div>
<div class="col-lg-12 col-md-12" *ngIf="stage.UseMessaging">
<div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12">
<div class="col-md-8">
<label>Send</label>
<p-dropdown [options]="messageTemplates" filter="true"
optionLabel="TemplateName"
<p-dropdown (onChange)="showMessageTemplateDialog($event, message)" [(ngModel)]="message.MessageTemplate"
[autoDisplayFirst]="false"
[options]="messageTemplates"
filter="true"
name="messageTemplate{{message.ObjectID}}"
[(ngModel)]="message.MessageTemplate"
(onChange)="showMessageTemplateDialog($event, message)"
[autoDisplayFirst]="false">
optionLabel="TemplateName">
<ng-template let-message pTemplate="selectedItem">
<i class="{{getMessageClass(message.value)}}"></i>
<span
......@@ -466,13 +473,13 @@
</p-dropdown>
</div>
<div class="col-md-4 text-center">
<button type="button" pButton label=" " [disabled]="showLoader"
icon="ui-icon-settings"
(click)="configureMessageTemplate(message)"></button>
<button type="button" pButton label=" "
icon="ui-icon-close" [disabled]="showLoader"
*ngIf="!message.IsWithdrawalMessage"
(click)="removeMessage(message, stage)"></button>
<button (click)="configureMessageTemplate(message)" [disabled]="showLoader" icon="ui-icon-settings" label=" "
pButton
type="button"></button>
<button (click)="removeMessage(message, stage)" *ngIf="!message.IsWithdrawalMessage" [disabled]="showLoader"
icon="ui-icon-close" label=" "
pButton
type="button"></button>
</div>
</div>
</div>
......@@ -482,8 +489,8 @@
<hr/>
<div class="form-group row">
<div class="ui-g-12 ui-md-6">
<button class="btn btn-primary add-more-btn" [disabled]="showLoader"
(click)="removeStage(stage)">Remove Stage
<button (click)="removeStage(stage)" [disabled]="showLoader"
class="btn btn-primary add-more-btn">Remove Stage
</button>
</div>
</div>
......@@ -491,12 +498,15 @@
<!-- End messaging section -->
</div>
</p-panel>
</div>
<div class="ui-g-12 ui-md-12"></div>
</div>
<div class="ui-g ui-fluid">
<div class="ui-g-12">
<!-- Start Post Stages -->
<p-panel *ngFor="let stage of filteredStages(false, true)" toggler="header" [toggleable]="true">
<p-panel *ngFor="let stage of postStages" [toggleable]="true" toggler="header">
<p-header>
<span class="ui-panel-title" *ngIf="showStageLabel('StageName'+stage.ObjectID, stage)"
(click)="toggleStageInput($event, 'StageName'+stage.ObjectID, stage)">
<span class="ui-panel-title">
{{getStageHeader(stage)}}
</span>
</p-header>
......@@ -505,7 +515,7 @@
<div class="ui-g-12 ui-md-12">
<div class="form-group row">
<div class="ui-g-12 ui-md-6">
<label> Automatically progress to next stage </label>
<label> Automatically progress to next stage</label>
</div>
<div class="ui-g-12 ui-md-4">
<p-inputSwitch [(ngModel)]="stage.AutoProgress" [disabled]="showLoader"
......@@ -515,7 +525,7 @@
</div>
<div class="form-group row">
<div class="ui-g-12 ui-md-6">
<label> Use messaging </label>
<label> Use messaging</label>
</div>
<div class="ui-g-12 ui-md-4">
<p-inputSwitch [(ngModel)]="stage.UseMessaging" [disabled]="showLoader"
......@@ -523,61 +533,62 @@
</p-inputSwitch>
</div>
</div>
<p-panel header="{{stageMessagesCount(stage)}}" [toggleable]="true"
[collapsed]="!stage.UseMessaging">
<p-panel [collapsed]="!stage.UseMessaging" [toggleable]="true"
header="{{stageMessagesCount(stage)}}">
<div class="form-group row">
<div class="col-md-offset-9 col-md-3">
<button class="btn btn-primary add-more-btn" tabindex="11"
<button (click)="addMessage(stage)" *ngIf="stage.UseMessaging"
[disabled]="showLoader"
(click)="addMessage(stage)" *ngIf="stage.UseMessaging">Add
class="btn btn-primary add-more-btn" tabindex="11">Add
Message
</button>
</div>
</div>
<!-- Display Messages here -->
<div class="form-group row" *ngFor="let message of stage.WorkFlowMessages">
<div class="col-lg-12 col-md-12" *ngIf="message.IsWithdrawalMessage">
<div *ngFor="let message of stage.WorkFlowMessages" class="form-group row">
<div *ngIf="message.IsWithdrawalMessage" class="col-lg-12 col-md-12">
<h3>Withdrawal Process</h3>
</div>
<div class="col-lg-12 col-md-12" *ngIf="stage.UseMessaging">
<div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12">
<div class="col-md-4">
<label>After</label>
<p-inputMask name="Delay{{message.ObjectID}}"
class="form-control" [disabled]="showLoader"
id="Delay{{message.ObjectID}}"
<p-inputMask (change)="generateDelayString(message)"
(onBlur)="toggleInput($event, 'Delay'+message.ObjectID, false)" (onFocus)="toggleInput($event, 'Delay'+message.ObjectID, true)"
*ngIf="!showLabel('Delay'+message.ObjectID) || !message.Delay"
[(ngModel)]="message.Delay"
(onFocus)="toggleDelayInput($event, 'Delay'+message.ObjectID,message)"
(onBlur)="toggleDelayInput($event, 'Delay'+message.ObjectID, message)"
*ngIf="!showDelayLabel('Delay'+message.ObjectID, message)"
mask="9?9:99:99">
[disabled]="showLoader"
class="form-control"
id="Delay{{message.ObjectID}}"
mask="9?9:99:99"
name="Delay{{message.ObjectID}}">
</p-inputMask>
<div *ngIf="showDelayLabel('Delay'+message.ObjectID, message)"
(click)="toggleDelayInput($event, 'Delay'+message.ObjectID,message)">
<div (click)="toggleInput($event, 'Delay'+message.ObjectID, true)"
*ngIf="showLabel('Delay'+message.ObjectID, message) && message.Delay">
<label>{{message.DelayString}}</label>
</div>
</div>
<div class="col-md-4">
<label for="Variance{{message.ObjectID}}">+/-</label>
<input name="Variance{{message.ObjectID}}"
id="Variance{{message.ObjectID}}"
[(ngModel)]="message.Variance" [disabled]="showLoader"
type="text" class="form-control">
<input [(ngModel)]="message.Variance"
[disabled]="showLoader"
class="form-control" [id]="'Variance'+message.ObjectID"
name="Variance{{message.ObjectID}}" type="text">
</div>
<div class="col-md-4">
<label>Business Hours only</label>
<p-checkbox name="BusinessHoursOnly{{message.ObjectID}}"
[(ngModel)]="message.BusinessHoursOnly"
binary="true">
<p-checkbox [(ngModel)]="message.BusinessHoursOnly"
binary="true"
name="BusinessHoursOnly{{message.ObjectID}}">
</p-checkbox>
</div>
</div>
<div class="col-lg-12 col-md-12" *ngIf="stage.UseMessaging">
<div *ngIf="stage.UseMessaging" class="col-lg-12 col-md-12">
<div class="col-md-8">
<label>Send</label>
<p-dropdown [options]="messageTemplates" filter="true"
optionLabel="TemplateName"
<p-dropdown [(ngModel)]="message.MessageTemplate" [options]="messageTemplates"
filter="true"
name="messageTemplate{{message.ObjectID}}"
[(ngModel)]="message.MessageTemplate">
optionLabel="TemplateName">
<ng-template let-message pTemplate="selectedItem">
<i class="{{getMessageClass(message.value)}}"></i>
<span class="dropdown-text">{{message.label}}</span>
......@@ -593,13 +604,13 @@
</p-dropdown>
</div>
<div class="col-md-4 text-center">
<button type="button" pButton label=" " [disabled]="showLoader"
icon="ui-icon-settings"
(click)="configureMessageTemplate(message)"></button>
<button type="button" pButton label=" " [disabled]="showLoader"
icon="ui-icon-close"
*ngIf="!message.IsWithdrawalMessage"
(click)="removeMessage(message, stage)"></button>
<button (click)="configureMessageTemplate(message)" [disabled]="showLoader" icon="ui-icon-settings" label=" "
pButton
type="button"></button>
<button (click)="removeMessage(message, stage)" *ngIf="!message.IsWithdrawalMessage" [disabled]="showLoader" icon="ui-icon-close"
label=" "
pButton
type="button"></button>
</div>
</div>
</div>
......@@ -613,20 +624,20 @@
<!-- End Post Stages -->
</div>
</div>
<div class="ui-g form-group">
<div class="ui-g ui-fluid">
<div class="ui-g-12 ui-md-12">
<div class="text-center form-group">
<button type="button" value="Cancel" class="btn btn-primary largeBtn greyBtn"
[disabled]="showLoader"
routerLink="/admin/list-message-templates">Cancel
<button [disabled]="showLoader" class="btn btn-primary largeBtn greyBtn" routerLink="/admin/list-message-templates"
type="button"
value="Cancel">Cancel
</button>
<button *ngIf="showSaveBtn()" type="button" value="Save" class="btn btn-primary largeBtn"
(click)="saveWorkflowTemplate()" [disabled]="showLoader">
<button (click)="saveWorkflowTemplate()" *ngIf="showSaveBtn()" [disabled]="showLoader" class="btn btn-primary largeBtn"
type="button" value="Save">
Save
</button>
<button *ngIf="showSaveCopyBtn()" type="button" value="Save As a Copy"
<button (click)="saveWorkflowTemplate(true)" *ngIf="showSaveCopyBtn()" [disabled]="showLoader"
class="btn btn-primary largeBtn"
(click)="saveWorkflowTemplate(true)" [disabled]="showLoader">
type="button" value="Save As a Copy">
Save As a Copy
</button>
</div>
......@@ -634,8 +645,8 @@
</div>
</div>
</div>
<p-progressSpinner *ngIf="showLoader"></p-progressSpinner>
</form>
<p-progressSpinner *ngIf="showLoader"></p-progressSpinner>
</div>
<p-confirmDialog header="Confirmation" key="RemoveRow" autoZIndex="false" baseZIndex="12000"
icon="pi pi-exclamation-triangle" appendTo="body">
......
......@@ -67,3 +67,37 @@ p-inputMask {
.drag-block {
cursor: pointer;
}
.ml-0 {
margin-left: 0px;
}
.templateName {
font-size: 24px;
}
label {
font-family: "Usual-Regular";
font-weight: 300;
}
.calcField {
position: relative;
top: -5px;
}
.flex-center {
display: flex;
justify-content: center;
align-items: center;
}
.panel-header-input {
width: 95%;
display: inline-block;
position: relative;
top: -8px;
background: #fff;
}
......@@ -32,9 +32,9 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
subscriptions: Array<Subscription> = [];
@ViewChild('form') form: NgForm;
@ViewChild('messageTemplateDialog') messageTemplateDialog: Dialog;
createdObjs;
updatedObjs;
deletedObjs;
createdObjs = {};
updatedObjs = {};
deletedObjs = {};
workflow = new WorkflowTemplateModel();
preStages: Array<WorkflowStageModel> = [];
......@@ -67,31 +67,26 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
}
ngOnInit(): void {
this.createdObjs = {};
this.updatedObjs = {};
this.deletedObjs = {};
this.showLoader = true;
this.utilsService.resetCounter();
this.startComponent();
if (this.adminPortalLayoutService.userData) {
this.initComponent();
} else {
this.subscriptions.push(this.adminPortalLayoutService.userDataUpdated
.subscribe(
() => {
this.startComponent();
.first()
.subscribe(() => {
this.initComponent();
}));
}
));
}
startComponent(): void {
initComponent(): void {
if (!this.adminPortalLayoutService.userData || this.alreadyExists()) {
return;
this.subscriptions.push(this.activatedRoute.params
.subscribe((params: Params) => {
if (params.id && params.id !== '0') {
this.editMode = true;
}
this.subscriptions.push(this.activatedRoute.params
.subscribe(
(params: Params) => {
this.subscriptions.push(
combineLatest(
this.appService.getTypes('StageTypes'),
......@@ -101,10 +96,6 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
)
.subscribe(response => {
if (this.alreadyExists()) {
return;
}
this.stageTypes = response[0];
this.stepTypeOptions = response[1];
......@@ -116,21 +107,18 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
this.applicantSources = response[3];
if (params.id && params.id !== '0') {
this.editMode = true;
this.getWorkflowTemplateByID(params.id);
this.stepTypes = [...this.stepTypeOptions];
} else {
this.editMode = false;
this.utilsService.createObject(this.workflow, this.createdObjs);
this.setDefaults();
this.addDefaultStages();
this.stepTypes = [...this.stepTypeOptions];
this.showLoader = false;
}
})
);
}
));
}));
this.getMessageTemplates();
}
......@@ -156,35 +144,27 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
false, this.workflow.ObjectID);
this.utilsService.addMultiRefObject(stageObject, this.workflow, 'WorkFlowStages', this.createdObjs);
});
this.reOrderStages(this.filterStages(true, true, true));
this.reOrderStages();
}
reOrderStages(callback): void {
this.showLoader = true;
reOrderStages(): void {
this.workflow.WorkFlowStages
.sort((a, b) => a.SortOrder < b.SortOrder ? -1 : a.SortOrder > b.SortOrder ? 1 : 0);
if (callback) {
callback();
}
this.showLoader = false;
this.filterStages();
}
isGeneric(stage: WorkflowStageModel): boolean {
return !stage.StageType.IsPostStage && !stage.StageType.IsPreStage;
}
filterStages(pre = false, generic = false, post = false): void {
if (pre) {
filterStages(): void {
this.preStages = this.filteredStages(true, false);
}
if (generic) {
this.genericStages = this.filteredStages(false, false)
.sort((a, b) => a.SortOrder > b.SortOrder ? -1 : a.SortOrder < b.SortOrder ? 1 : 0);
}
if (post) {
this.postStages = this.filteredStages(false, true);
}
}
showSaveBtn(): boolean {
return this.workflow && this.workflow.ObjectID ?
......@@ -198,55 +178,23 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
}
getStageHeader(stage: WorkflowStageModel): string {
return `${stage.Name} (${stage.Steps ? stage.Steps.length : 0})`;
return `${stage.Name} (${stage.WorkFlowMessages ? stage.WorkFlowMessages.length : 0})`;
}
showLabel(id: string): boolean {
return (this.editField[id] === undefined || this.editField[id] === false);
}
showStageLabel(id: string, stage: WorkflowStageModel): boolean {
if (stage.StageType.IsPreStage || stage.StageType.IsPostStage) {
return true;
} else {
return this.showLabel(id);
}
}
showStageInput(id: string, stage: WorkflowStageModel): boolean {
if (stage.StageType.IsPreStage || stage.StageType.IsPostStage) {
return false;
} else {
return this.showInput(id);
}
}
showDelayInput(id: string, message: WorkflowMessageModel): boolean {
if (!message.Delay || message.Delay === '') {
return true;
} else {
return this.editField ? (this.editField[id] ? this.editField[id] : true) : true;
}
}
showDelayLabel(id: string, message: WorkflowMessageModel): boolean {
if (!message.Delay || message.Delay === '') {
return false;
filteredStages(isPreStage: boolean, isPostStage: boolean): Array<WorkflowStageModel> {
if(isPreStage){
return this.workflow.WorkFlowStages.filter(stage => stage.StageType.IsPreStage)
} else if(isPostStage){
return this.workflow.WorkFlowStages.filter(stage => stage.StageType.IsPostStage)
} else {
return this.editField ? !this.editField[id] : false;
return this.workflow.WorkFlowStages.filter(stage => !stage.StageType.IsPreStage && !stage.StageType.IsPostStage)
}
}
filteredStages(isPreStage: boolean, isPostStage: boolean): Array<WorkflowStageModel> {
return this.workflow && this.workflow.WorkFlowStages ? (
(!isPreStage && !isPostStage) ?
this.workflow.WorkFlowStages.filter(stage => !stage.StageType.IsPreStage && !stage.StageType.IsPostStage)
: isPreStage ?
this.workflow.WorkFlowStages.filter(stage => stage.StageType.IsPreStage) :
isPostStage ?
this.workflow.WorkFlowStages.filter(stage => stage.StageType.IsPostStage) : []) : [];
}
emailResponseSelected(): boolean {
return this.workflow.ApplicationResponseAction &&
this.workflow.ApplicationResponseAction.Value === 'EMAIL_RESPONSE';
......@@ -262,13 +210,9 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
}
}
showInput(id: string): boolean {
return this.editField && !!this.editField[id];
}
toggleInput(event, fieldName): void {
toggleInput(event, fieldName, value): void {
this.utilsService.clearErrorMessages();
if (event.type === 'blur') {
if (value === false) {
if (!this.form.controls[fieldName].invalid) {
this.editField[fieldName] = false;
} else {
......@@ -290,63 +234,6 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
}
}
toggleStageInput(event, fieldName, stage: WorkflowStageModel): void {
this.utilsService.clearErrorMessages();
if (event.type === 'blur') {
if (!this.form.controls[fieldName].invalid) {
this.editField[fieldName] = false;
} else {
this.utilsService.showAllErrorMessages();
}
} else {
if (stage.StageType.IsPreStage || stage.StageType.IsPostStage) {
return;
}
this.editField[fieldName] = true;
setTimeout(() => {
try {
document.getElementById(`${fieldName}Id`)
.focus();
document.getElementById(`${fieldName}Id`)
.getElementsByTagName('input')[0]
.focus();
} catch (e) {
// ignore this.
}
}, 0);
}
}
toggleDelayInput(event, fieldName, message: WorkflowMessageModel): void {
this.utilsService.clearErrorMessages();
if (event.type === 'blur') {
if (!message.Delay || message.Delay === '') {
return;
}
if (!this.form.controls[fieldName].invalid) {
this.editField[fieldName] = false;
this.generateDelayString(message);
this.sortWorkFlowMessage();
} else {
this.utilsService.showAllErrorMessages();
}
} else {
this.editField[fieldName] = true;
setTimeout(() => {
try {
document.getElementById(`${fieldName}Id`)
.focus();
document.getElementById(`${fieldName}Id`)
.getElementsByTagName('input')[0]
.focus();
} catch (e) {
// ignore this.
}
}, 0);
}
}
generateDelayString(message: WorkflowMessageModel): void {
const delay = message.Delay.replace(/_/g, '')
.split(':');
......@@ -365,6 +252,8 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
message.DelayString = `${delay[0]}d: ${delay[1]}h: ${delay[2]}m`;
message.DelayMinutes = parseInt(delay[0], 10) * 24 * 60 + parseInt(delay[1], 10) * 60 + parseInt(delay[1], 10);
}
this.sortWorkFlowMessage();
}
getMessageTemplates(callback = null): void {
......@@ -452,28 +341,6 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
this.displayNewMessageTemplate = false;
}
populateMessageTemplates(template: MessageTemplateModel): void {
this.messageTemplates.splice(this.messageTemplates.length - 1, 1);
this.messageTemplates.push(template);
}
availableStepTypes(): Array<StepTypeEnum> {
const availableStepTypes = this.stepTypeOptions;
if (this.workflow.WorkFlowStages) {
this.workflow.WorkFlowStages.forEach(stage => {
if (stage.Steps) {
stage.Steps.forEach(step => {
if (availableStepTypes.indexOf(step.StepType) > -1) {
availableStepTypes.slice(availableStepTypes.indexOf(step.StepType), 0);
}
});
}
});
}
return availableStepTypes;
}
stageMessagesCount(stage: WorkflowStageModel): string {
return `Message Schedule (${(stage && stage.WorkFlowMessages) ? stage.WorkFlowMessages.length : 0})`;
}
......@@ -536,7 +403,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
const stage = new WorkflowStageModel(`${stageType.Description} Stage`, false, stageType, this.getStageOrder(),
false, this.workflow.ObjectID);
this.utilsService.addMultiRefObject(stage, this.workflow, 'WorkFlowStages', this.createdObjs);
this.filterStages(false, true, false);
this.reOrderStages();
}
removeStage(stage: WorkflowStageModel): void {
......@@ -556,7 +423,7 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
}
});
}
this.reOrderStages(this.filterStages(false, true, false));
this.reOrderStages();
}
this.utilsService.removeMultiRefObject(stage, this.workflow, 'WorkFlowStages', this.createdObjs,
this.updatedObjs, this.deletedObjs);
......@@ -595,15 +462,20 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
this.workflow = data;
this.updatedObjs[this.workflow.ObjectID] = this.workflow;
this.utilsService.addObjsToJSONByObjectID(this.updatedObjs, this.workflow.WorkFlowStages);
this.workflow.WorkFlowStages = this.workflow.WorkFlowStages || [];
this.workflow.WorkFlowStages.forEach(stage => {
if (stage.WorkFlowMessages) {
this.updatedObjs[stage.ObjectID] = stage
stage.Steps = stage.Steps || [];
stage.WorkFlowMessages = stage.WorkFlowMessages || [];
this.utilsService.addObjsToJSONByObjectID(this.updatedObjs, stage.WorkFlowMessages);
}
if (stage.Steps) {
this.utilsService.addObjsToJSONByObjectID(this.updatedObjs, stage.Steps);
}
});
this.reOrderStages(this.filterStages(true, true, true));
this.reOrderStages();
this.showLoader = false;
},
error => {
......@@ -642,9 +514,5 @@ export class EditWorkflowTemplateComponent extends BaseComponent implements OnIn
}
}
alreadyExists(): boolean {
return Object.keys(this.createdObjs).length > 0 || Object.keys(this.updatedObjs).length > 0;
}
// tslint:disable-next-line:max-file-line-count
}
......@@ -11953,3 +11953,37 @@ label.select-all-jobs:after {
/*
End of Manage Customer
*/
body .ui-selectbutton .ui-button.ui-state-active {
background-color: #667281 !important;
}
body .ui-selectbutton .ui-button {
background-color: #fff !important;
}
.ui-selectbutton .ui-button span {
color: #000 !important;
}
.ui-selectbutton .ui-button.ui-state-active span{
color: #fff !important;
}
.mb-10 {
margin-bottom: 10px;
}
body .ui-button {
background-color: #667281;
}
body .ui-widget-header {
background-color: #667281;
border: 1px solid #667281;
}
body .ui-dropdown-panel .ui-dropdown-filter-container {
background-color: #667281;
}
......@@ -129,7 +129,7 @@
}
.ui-panel-content {
background-color: #F5F7F8;
background-color: white;
padding: 65px 10.5% !important;
}
}
......@@ -139,14 +139,15 @@
/* Overriding switch input styles */
.ui-inputswitch-slider:before {
height: 17px !important;
width: 17px !important;
left: 3px !important;
height: 16px !important;
width: 18px !important;
left: 4px !important;
background: white;
top: 2px;
}
.ui-inputswitch {
height: 22px !important;
height: 20px !important;
width: 40px !important !important;
border-color: #667281 !important;
background-color: #667281 !important;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment