Skip to content
This repository was archived by the owner on Feb 24, 2026. It is now read-only.

Commit fcab353

Browse files
authored
fix: fix dynamic asterisk (#171)
1 parent d2fa197 commit fcab353

1 file changed

Lines changed: 110 additions & 51 deletions

File tree

packages/ui-core/shared/src/lib/project-module/project-module-mutation/project-module-mutation.component.html

Lines changed: 110 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,22 @@ <h5 class="title">
1414
<div class="col-sm-6">
1515
<div class="form-group">
1616
<label class="label required-asterisk">{{
17-
'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.PROJECT' | translate }}</label>
18-
<ga-project-selector formControlName="projectId"
17+
'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.PROJECT' | translate
18+
}}</label>
19+
<ga-project-selector
20+
formControlName="projectId"
1921
[placeholder]="'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.SELECT_PROJECT' | translate"
20-
[skipGlobalChange]="true" [defaultSelected]="false"
21-
[showAllOption]="false"></ga-project-selector>
22+
[skipGlobalChange]="true"
23+
[defaultSelected]="false"
24+
[showAllOption]="false"
25+
></ga-project-selector>
2226

23-
<div *ngIf="form.get('projectId')?.errors?.required && form.get('projectId')?.touched"
24-
class="invalid-feedback d-block">
27+
<div
28+
*ngIf="form.get('projectId')?.errors?.required && form.get('projectId')?.touched"
29+
class="invalid-feedback d-block"
30+
>
2531
{{ 'FORM.ERROR.PROJECT_NAME' | translate }}
2632
</div>
27-
2833
</div>
2934
</div>
3035
<div class="col-sm-6">
@@ -44,8 +49,11 @@ <h5 class="title">
4449
<!-- Employee Multi-Select -->
4550
<div class="col-sm-12">
4651
<div class="form-group">
47-
<ga-employee-multi-select [selectedEmployeeIds]="selectedEmployeeIds" [allEmployees]="employees"
48-
(selectedChange)="onMembersSelected($event)"></ga-employee-multi-select>
52+
<ga-employee-multi-select
53+
[selectedEmployeeIds]="selectedEmployeeIds"
54+
[allEmployees]="employees"
55+
(selectedChange)="onMembersSelected($event)"
56+
></ga-employee-multi-select>
4957
</div>
5058
</div>
5159

@@ -54,10 +62,15 @@ <h5 class="title">
5462
<div class="form-group">
5563
<label class="label">{{
5664
'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.SELECT_TEAMS' | translate
57-
}}</label>
58-
<nb-select formControlName="teams" multiple [selected]="selectedTeams"
59-
(selectedChange)="onTeamsSelected($event)" fullWidth
60-
[placeholder]="'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.CHOOSE_TEAMS' | translate">
65+
}}</label>
66+
<nb-select
67+
formControlName="teams"
68+
multiple
69+
[selected]="selectedTeams"
70+
(selectedChange)="onTeamsSelected($event)"
71+
fullWidth
72+
[placeholder]="'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.CHOOSE_TEAMS' | translate"
73+
>
6174
<nb-option *ngFor="let team of teams" [value]="team.id">{{ team.name }}</nb-option>
6275
</nb-select>
6376
</div>
@@ -72,11 +85,18 @@ <h5 class="title">
7285
{{ 'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.NAME' | translate }}
7386
</label>
7487

75-
<input class="name-input" formControlName="name" type="text" nbInput
76-
[placeholder]="'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.ENTER_NAME' | translate" />
88+
<input
89+
class="name-input"
90+
formControlName="name"
91+
type="text"
92+
nbInput
93+
[placeholder]="'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.ENTER_NAME' | translate"
94+
/>
7795

78-
<div *ngIf="form.get('name')?.errors?.required && form.get('name')?.touched"
79-
class="invalid-feedback d-block">
96+
<div
97+
*ngIf="form.get('name')?.errors?.required && form.get('name')?.touched"
98+
class="invalid-feedback d-block"
99+
>
80100
{{ 'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.VALIDATION.NAME_REQUIRED' | translate }}
81101
</div>
82102
</div>
@@ -85,10 +105,12 @@ <h5 class="title">
85105
<div class="form-group">
86106
<label class="label">{{
87107
'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.PARENT_MODULE' | translate
88-
}}</label>
89-
<nb-select formControlName="parentId"
108+
}}</label>
109+
<nb-select
110+
formControlName="parentId"
90111
[placeholder]="'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.SELECT_PARENT' | translate"
91-
fullWidth>
112+
fullWidth
113+
>
92114
<nb-option *ngFor="let module of availableParentModules" [value]="module.id">
93115
{{ module.name }}
94116
</nb-option>
@@ -103,8 +125,12 @@ <h5 class="title">
103125
<div class="form-group">
104126
<label class="label">{{ 'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.MANAGER' | translate }}</label>
105127

106-
<ga-employee-multi-select [selectedEmployeeIds]="selectedManagerIds" [allEmployees]="employees"
107-
class="employees" (selectedChange)="onManagersSelected($event)"></ga-employee-multi-select>
128+
<ga-employee-multi-select
129+
[selectedEmployeeIds]="selectedManagerIds"
130+
[allEmployees]="employees"
131+
class="employees"
132+
(selectedChange)="onManagersSelected($event)"
133+
></ga-employee-multi-select>
108134
</div>
109135
</div>
110136

@@ -113,10 +139,13 @@ <h5 class="title">
113139
<div class="form-group">
114140
<label class="label">{{
115141
'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.ORGANIZATION_SPRINTS' | translate
116-
}}</label>
117-
<nb-select formControlName="organizationSprints" multiple
142+
}}</label>
143+
<nb-select
144+
formControlName="organizationSprints"
145+
multiple
118146
[placeholder]="'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.SELECT_SPRINTS' | translate"
119-
fullWidth>
147+
fullWidth
148+
>
120149
<nb-option *ngFor="let sprint of organizationSprints" [value]="sprint.id">
121150
{{ sprint.name }}
122151
</nb-option>
@@ -128,15 +157,20 @@ <h5 class="title">
128157
<div class="row">
129158
<div class="col-sm-12">
130159
<div class="form-group">
131-
<label class="label"
132-
[ngClass]="form.get('tasks')?.errors?.required ? 'required-asterisk' : null">
160+
<label class="label" [ngClass]="organization?.requireTask ? 'required-asterisk' : null">
133161
{{ 'TIMER_TRACKER.SELECT_TASK' | translate }}
134162
</label>
135-
<ga-task-selector name="taskId" [projectId]="form.get('projectId').value"
136-
formControlName="tasks" [multiple]="true"
137-
[required]="organization?.requireTask"></ga-task-selector>
138-
<div *ngIf="form.get('tasks')?.errors?.required &&
139-
form.get('tasks')?.touched" class="invalid-feedback d-block">
163+
<ga-task-selector
164+
name="taskId"
165+
[projectId]="form.get('projectId').value"
166+
formControlName="tasks"
167+
[multiple]="true"
168+
[required]="organization?.requireTask"
169+
></ga-task-selector>
170+
<div
171+
*ngIf="form.get('tasks')?.errors?.required && form.get('tasks')?.touched"
172+
class="invalid-feedback d-block"
173+
>
140174
{{ 'TIMER_TRACKER.VALIDATION.TASK_REQUIRED' | translate }}
141175
</div>
142176
</div>
@@ -148,19 +182,29 @@ <h5 class="title">
148182
<div class="form-group">
149183
<label for="startDate" class="label required-asterisk">{{
150184
'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.START_DATE' | translate
151-
}}</label>
152-
<input formControlName="startDate" type="text" nbInput
185+
}}</label>
186+
<input
187+
formControlName="startDate"
188+
type="text"
189+
nbInput
153190
[placeholder]="'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.SELECT_START_DATE' | translate"
154-
[nbDatepicker]="startDatePicker" id="startDate" fullWidth
155-
(input)="validateDateInput('startDate', $event.target.value)" />
191+
[nbDatepicker]="startDatePicker"
192+
id="startDate"
193+
fullWidth
194+
(input)="validateDateInput('startDate', $event.target.value)"
195+
/>
156196
<!-- required -->
157-
<div *ngIf="form.get('startDate')?.errors?.required && form.get('startDate')?.touched"
158-
class="invalid-feedback d-block">
197+
<div
198+
*ngIf="form.get('startDate')?.errors?.required && form.get('startDate')?.touched"
199+
class="invalid-feedback d-block"
200+
>
159201
{{ 'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.VALIDATION.START_DATE_REQUIRED' | translate }}
160202
</div>
161203
<!-- invalid format -->
162-
<div *ngIf="form.get('startDate')?.errors?.invalidDateFormat && form.get('startDate')?.dirty"
163-
class="invalid-feedback d-block">
204+
<div
205+
*ngIf="form.get('startDate')?.errors?.invalidDateFormat && form.get('startDate')?.dirty"
206+
class="invalid-feedback d-block"
207+
>
164208
{{ 'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.VALIDATION.INVALID_DATE_FORMAT' | translate }}
165209
</div>
166210
<nb-datepicker #startDatePicker></nb-datepicker>
@@ -171,25 +215,40 @@ <h5 class="title">
171215
<div class="form-group">
172216
<label for="endDate" class="label required-asterisk">{{
173217
'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.END_DATE' | translate
174-
}}</label>
175-
<input formControlName="endDate" type="text" nbInput
218+
}}</label>
219+
<input
220+
formControlName="endDate"
221+
type="text"
222+
nbInput
176223
[placeholder]="'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.SELECT_END_DATE' | translate"
177-
[nbDatepicker]="endDatePicker" id="endDate" [min]="form.get('startDate').value" fullWidth
178-
(input)="validateDateInput('endDate', $event.target.value)" />
224+
[nbDatepicker]="endDatePicker"
225+
id="endDate"
226+
[min]="form.get('startDate').value"
227+
fullWidth
228+
(input)="validateDateInput('endDate', $event.target.value)"
229+
/>
179230
<!-- required -->
180-
<div *ngIf="form.get('endDate')?.errors?.required && form.get('endDate')?.touched"
181-
class="invalid-feedback d-block">
231+
<div
232+
*ngIf="form.get('endDate')?.errors?.required && form.get('endDate')?.touched"
233+
class="invalid-feedback d-block"
234+
>
182235
{{ 'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.VALIDATION.END_DATE_REQUIRED' | translate }}
183236
</div>
184237
<!-- invalid format -->
185-
<div *ngIf="form.get('endDate')?.errors?.invalidDateFormat && form.get('endDate')?.dirty"
186-
class="invalid-feedback d-block">
238+
<div
239+
*ngIf="form.get('endDate')?.errors?.invalidDateFormat && form.get('endDate')?.dirty"
240+
class="invalid-feedback d-block"
241+
>
187242
{{ 'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.VALIDATION.INVALID_DATE_FORMAT' | translate }}
188243
</div>
189244
<!-- start > end -->
190-
<div *ngIf="form.errors?.dateRangeInvalid && form.get('endDate')?.dirty"
191-
class="invalid-feedback d-block">
192-
{{ 'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.VALIDATION.INCORRECT_DATE_LOCATION' | translate}}
245+
<div
246+
*ngIf="form.errors?.dateRangeInvalid && form.get('endDate')?.dirty"
247+
class="invalid-feedback d-block"
248+
>
249+
{{
250+
'PROJECT_MANAGEMENT_PAGE.PROJECT_MODULE.VALIDATION.INCORRECT_DATE_LOCATION' | translate
251+
}}
193252
</div>
194253
<nb-datepicker #endDatePicker></nb-datepicker>
195254
</div>

0 commit comments

Comments
 (0)