@allsorter/ui-components 0.0.408 → 0.0.412
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/fesm2022/allsorter-ui-components.mjs +134 -61
- package/fesm2022/allsorter-ui-components.mjs.map +1 -1
- package/lib/editable-form-wrapper/editable-form-wrapper.component.d.ts +6 -1
- package/lib/loader/loader.component.d.ts +7 -2
- package/lib/newresumeheader/newresumeheader.component.d.ts +3 -1
- package/lib/responsive-layout/responsive-layout.component.d.ts +1 -0
- package/lib/toggle-buttons/toggle-buttons.component.d.ts +2 -0
- package/package.json +1 -1
- package/src/lib/button/button.component.scss +1 -0
- package/src/lib/candidate-section/candidate-section.component.html +13 -17
- package/src/lib/candidate-section/candidate-section.component.scss +1 -0
- package/src/lib/custom-editor/custom-editor.component.scss +1 -1
- package/src/lib/editable-form-wrapper/editable-form-wrapper.component.html +0 -7
- package/src/lib/editable-form-wrapper/editable-form-wrapper.component.scss +269 -25
- package/src/lib/field-placeholder/field-placeholder.component.scss +4 -5
- package/src/lib/input/input.component.scss +2 -0
- package/src/lib/loader/loader.component.html +5 -5
- package/src/lib/loader/loader.component.scss +36 -13
- package/src/lib/newresumeheader/newresumeheader.component.html +2 -2
- package/src/lib/newresumeheader/newresumeheader.component.scss +6 -1
- package/src/lib/resume-entries/resume-entries.component.html +4 -1
- package/src/lib/resume-entries/resume-entries.component.scss +19 -11
- package/src/lib/tabs/tabs.component.html +1 -1
- package/src/lib/tabs/tabs.component.scss +7 -0
- package/src/lib/test-styling/test-styling.component.html +159 -1
- package/src/lib/toggle-buttons/toggle-buttons.component.html +4 -2
- package/src/lib/toggle-buttons/toggle-buttons.component.scss +16 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
<div class="loader-container" [attr.data-testid]="effectiveDataTestId">
|
|
2
2
|
<!-- Brain Icon -->
|
|
3
|
-
<mat-icon class="loader-icon font-icon icon-brain" fontSet="material-
|
|
3
|
+
<mat-icon class="loader-icon font-icon icon-brain" fontSet="material-symbols-outlined">network_intelligence</mat-icon>
|
|
4
4
|
<!-- Settings/Gear Icon -->
|
|
5
5
|
<mat-icon class="loader-icon font-icon icon-cog" fontSet="material-icons-outlined">settings</mat-icon>
|
|
6
6
|
<!-- Document Icon -->
|
|
7
|
-
<mat-icon class="loader-icon font-icon icon-document" fontSet="material-icons">article</mat-icon>
|
|
7
|
+
<mat-icon class="loader-icon font-icon icon-document" fontSet="material-icons-outlined">article</mat-icon>
|
|
8
8
|
<!-- Wand Icon -->
|
|
9
|
-
<mat-icon class="loader-icon font-icon icon-wand" fontSet="material-icons">auto_awesome</mat-icon>
|
|
9
|
+
<mat-icon class="loader-icon font-icon icon-wand" fontSet="material-icons-outlined">auto_awesome</mat-icon>
|
|
10
10
|
<!-- Settings Icon -->
|
|
11
|
-
<mat-icon class="loader-icon font-icon icon-tick" fontSet="material-icons">
|
|
11
|
+
<mat-icon class="loader-icon font-icon icon-tick" fontSet="material-icons-outlined">done</mat-icon>
|
|
12
12
|
</div>
|
|
13
13
|
<div class="text-container" *ngIf="showText">
|
|
14
14
|
<span class="loader-text">{{ displayText }}</span>
|
|
15
|
-
</div>
|
|
15
|
+
</div>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
@import url("https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined");
|
|
2
|
+
@import url("https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=network_intelligence");
|
|
2
3
|
|
|
3
4
|
:host {
|
|
4
5
|
display: flex;
|
|
@@ -28,7 +29,7 @@
|
|
|
28
29
|
|
|
29
30
|
.text-container {
|
|
30
31
|
position: relative;
|
|
31
|
-
margin-top:
|
|
32
|
+
margin-top: 4px;
|
|
32
33
|
}
|
|
33
34
|
|
|
34
35
|
.loader-text {
|
|
@@ -56,6 +57,28 @@ mat-icon.loader-icon {
|
|
|
56
57
|
justify-content: center;
|
|
57
58
|
}
|
|
58
59
|
|
|
60
|
+
/* Ensure icon-tick renders at correct size when using material-icons fontSet */
|
|
61
|
+
:host(.size-medium) .icon-tick[fontSet="material-icons"] {
|
|
62
|
+
font-size: 72px !important;
|
|
63
|
+
width: 72px !important;
|
|
64
|
+
height: 72px !important;
|
|
65
|
+
line-height: 72px !important;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
:host(.size-small) .icon-tick[fontSet="material-icons"] {
|
|
69
|
+
font-size: 48px !important;
|
|
70
|
+
width: 48px !important;
|
|
71
|
+
height: 48px !important;
|
|
72
|
+
line-height: 48px !important;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
:host(.size-large) .icon-tick[fontSet="material-icons"] {
|
|
76
|
+
font-size: 108px !important;
|
|
77
|
+
width: 108px !important;
|
|
78
|
+
height: 108px !important;
|
|
79
|
+
line-height: 108px !important;
|
|
80
|
+
}
|
|
81
|
+
|
|
59
82
|
/* Size variations */
|
|
60
83
|
:host(.size-small) {
|
|
61
84
|
.loader-container {
|
|
@@ -86,11 +109,11 @@ mat-icon.loader-icon {
|
|
|
86
109
|
}
|
|
87
110
|
|
|
88
111
|
.font-icon {
|
|
89
|
-
font-size: 72px;
|
|
112
|
+
font-size: 72px !important;
|
|
90
113
|
}
|
|
91
114
|
|
|
92
115
|
mat-icon.loader-icon {
|
|
93
|
-
font-size: 72px;
|
|
116
|
+
font-size: 72px !important;
|
|
94
117
|
width: 72px;
|
|
95
118
|
height: 72px;
|
|
96
119
|
}
|
|
@@ -453,41 +476,41 @@ mat-icon.loader-icon {
|
|
|
453
476
|
/* --- Looping Mode: Enhanced animations with enter/exit transitions --- */
|
|
454
477
|
/* These are triggered when autoLoop is enabled */
|
|
455
478
|
:host(.auto-loop.status-analyzing) .icon-brain {
|
|
456
|
-
animation: animate-brain
|
|
479
|
+
animation: animate-brain 2s ease-in-out;
|
|
457
480
|
}
|
|
458
481
|
|
|
459
482
|
:host(.auto-loop.status-analyzing) .loader-text {
|
|
460
|
-
animation: animate-text
|
|
483
|
+
animation: animate-text 2s ease-in-out;
|
|
461
484
|
}
|
|
462
485
|
|
|
463
486
|
:host(.auto-loop.status-gathering) .icon-cog {
|
|
464
|
-
animation: animate-cog
|
|
487
|
+
animation: animate-cog 2s ease-in-out;
|
|
465
488
|
}
|
|
466
489
|
|
|
467
490
|
:host(.auto-loop.status-gathering) .loader-text {
|
|
468
|
-
animation: animate-text
|
|
491
|
+
animation: animate-text 2s ease-in-out;
|
|
469
492
|
}
|
|
470
493
|
|
|
471
494
|
:host(.auto-loop.status-processing) .icon-document {
|
|
472
|
-
animation: animate-document
|
|
495
|
+
animation: animate-document 2s ease-in-out;
|
|
473
496
|
}
|
|
474
497
|
|
|
475
498
|
:host(.auto-loop.status-processing) .loader-text {
|
|
476
|
-
animation: animate-text
|
|
499
|
+
animation: animate-text 2s ease-in-out;
|
|
477
500
|
}
|
|
478
501
|
|
|
479
502
|
:host(.auto-loop.status-applying) .icon-wand {
|
|
480
|
-
animation: animate-wand
|
|
503
|
+
animation: animate-wand 2s ease-in-out;
|
|
481
504
|
}
|
|
482
505
|
|
|
483
506
|
:host(.auto-loop.status-applying) .loader-text {
|
|
484
|
-
animation: animate-text
|
|
507
|
+
animation: animate-text 2s ease-in-out;
|
|
485
508
|
}
|
|
486
509
|
|
|
487
510
|
:host(.auto-loop.status-done) .icon-tick {
|
|
488
|
-
animation: animate-tick
|
|
511
|
+
animation: animate-tick 2s ease-in-out;
|
|
489
512
|
}
|
|
490
513
|
|
|
491
514
|
:host(.auto-loop.status-done) .loader-text {
|
|
492
|
-
animation: animate-text
|
|
515
|
+
animation: animate-text 2s ease-in-out;
|
|
493
516
|
}
|
|
@@ -46,10 +46,10 @@
|
|
|
46
46
|
</div>
|
|
47
47
|
<div center><ng-content select="[header-center-center]"></ng-content>
|
|
48
48
|
<!-- Header buttons for large screens (including Deep Extraction via buttonConfig) --><ng-container
|
|
49
|
-
*ngIf="isLargeScreen"><ng-container
|
|
49
|
+
*ngIf="isLargeScreen && showHeaderButtons"><ng-container
|
|
50
50
|
*ngTemplateOutlet="headerButtonsTemplate; context: { buttons: buttonConfig }"></ng-container></ng-container>
|
|
51
51
|
<!-- Menu trigger and slide-out panel for small screens only -->
|
|
52
|
-
<div class="hover-menu-container" *ngIf="!isLargeScreen">
|
|
52
|
+
<div class="hover-menu-container" *ngIf="!isLargeScreen && showMenuTrigger && showHeaderButtons">
|
|
53
53
|
<div class="menu-trigger" (click)="toggleMenu()"><al-button buttonType="icon-label" iconOnly
|
|
54
54
|
size="header" category="grey" leftIcon="more_vert" aria-label="More options"
|
|
55
55
|
[dataTestId]="'resume-header-more-menu'"></al-button></div>
|
|
@@ -162,6 +162,7 @@
|
|
|
162
162
|
border-bottom: 2px solid #37c1ce;
|
|
163
163
|
border-radius: 8px;
|
|
164
164
|
box-sizing: border-box;
|
|
165
|
+
margin-top: 16px !important;
|
|
165
166
|
|
|
166
167
|
/**
|
|
167
168
|
* When the Deep Extraction pop-out panel is NOT shown (showPopOutPanel === false),
|
|
@@ -171,7 +172,11 @@
|
|
|
171
172
|
*/
|
|
172
173
|
&.header-with-bottom-margin {
|
|
173
174
|
margin-bottom: 16px;
|
|
175
|
+
|
|
176
|
+
|
|
174
177
|
}
|
|
178
|
+
|
|
179
|
+
|
|
175
180
|
}
|
|
176
181
|
|
|
177
182
|
|
|
@@ -666,4 +671,4 @@
|
|
|
666
671
|
// position: relative;
|
|
667
672
|
// z-index: 1;
|
|
668
673
|
// }
|
|
669
|
-
// }
|
|
674
|
+
// }
|
|
@@ -52,10 +52,13 @@
|
|
|
52
52
|
<lib-field-placeholder [value]="entry.city" [placeholder]="'City'" valueClass="font-location-text"
|
|
53
53
|
[testId]="'entry-' + i + '-city'" [compact]="true"
|
|
54
54
|
[tooltip]="locationTooltip" [tooltipPosition]="tooltipPosition"></lib-field-placeholder>
|
|
55
|
+
<span class="location-comma">,</span>
|
|
55
56
|
<lib-field-placeholder [value]="entry.region" [placeholder]="'Region'" valueClass="font-location-text"
|
|
56
57
|
[testId]="'entry-' + i + '-region'" [compact]="true"
|
|
57
58
|
[tooltip]="locationTooltip" [tooltipPosition]="tooltipPosition"></lib-field-placeholder>
|
|
58
|
-
<
|
|
59
|
+
<span class="location-comma">,</span>
|
|
60
|
+
<lib-field-placeholder [value]="entry.country" [placeholder]="'Country'"
|
|
61
|
+
valueClass="font-location-text"
|
|
59
62
|
[testId]="'entry-' + i + '-country'" [compact]="true"
|
|
60
63
|
[tooltip]="locationTooltip" [tooltipPosition]="tooltipPosition"></lib-field-placeholder>
|
|
61
64
|
</div>
|
|
@@ -350,15 +350,23 @@
|
|
|
350
350
|
flex-direction: column;
|
|
351
351
|
gap: 4px;
|
|
352
352
|
|
|
353
|
+
::ng-deep .value-text {
|
|
354
|
+
color: #717793;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
// ::ng-deep .placeholder-text {
|
|
358
|
+
// color: #717793;
|
|
359
|
+
// }
|
|
360
|
+
|
|
353
361
|
&.collapsed .value-text {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
+
display: -webkit-box !important;
|
|
363
|
+
-webkit-line-clamp: 1 !important;
|
|
364
|
+
line-clamp: 1 !important;
|
|
365
|
+
-webkit-box-orient: vertical !important;
|
|
366
|
+
overflow: hidden !important;
|
|
367
|
+
text-overflow: ellipsis !important;
|
|
368
|
+
white-space: normal !important;
|
|
369
|
+
}
|
|
362
370
|
|
|
363
371
|
}
|
|
364
372
|
|
|
@@ -397,8 +405,8 @@
|
|
|
397
405
|
display: flex;
|
|
398
406
|
justify-content: center;
|
|
399
407
|
align-items: center;
|
|
400
|
-
padding: 24px 0;
|
|
401
|
-
min-height: 80px;
|
|
408
|
+
// padding: 24px 0;
|
|
409
|
+
// min-height: 80px;
|
|
402
410
|
}
|
|
403
411
|
|
|
404
412
|
.entry-loader-container {
|
|
@@ -435,7 +443,7 @@
|
|
|
435
443
|
font-style: normal;
|
|
436
444
|
letter-spacing: 0.15px;
|
|
437
445
|
font-family: Roboto, sans-serif;
|
|
438
|
-
color: #717793;
|
|
446
|
+
color: #717793 !important;
|
|
439
447
|
}
|
|
440
448
|
|
|
441
449
|
p,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<mat-tab-group [selectedIndex]="selectedIndex" [class]="'tabs-' + size" mat-align-tabs="start" headerPosition="above">
|
|
1
|
+
<mat-tab-group [selectedIndex]="selectedIndex" [class]="'tabs-' + size" mat-align-tabs="start" headerPosition="above" animationDuration="0ms">
|
|
2
2
|
<mat-tab *ngFor="let tab of tabComponents; let i = index">
|
|
3
3
|
<ng-template mat-tab-label>
|
|
4
4
|
<span [ngClass]="{ 'tab-label-content': true, 'icon-only-tab': tab.icon && tab.showIcon && !tab.labelText }"
|
|
@@ -68,6 +68,13 @@
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
// Icon size - 20x20px for all icons
|
|
72
|
+
.mat-mdc-tab .mat-icon {
|
|
73
|
+
width: 20px !important;
|
|
74
|
+
height: 20px !important;
|
|
75
|
+
font-size: 20px !important;
|
|
76
|
+
}
|
|
77
|
+
|
|
71
78
|
// Medium size (36px height) - default
|
|
72
79
|
&.tabs-medium .mat-mdc-tab-header {
|
|
73
80
|
height: 36px;
|
|
@@ -149,6 +149,164 @@
|
|
|
149
149
|
<!-- candidate-section-form -->
|
|
150
150
|
|
|
151
151
|
</al-tab>
|
|
152
|
+
<al-tab labelText="Education">
|
|
153
|
+
<h2>Education Section - Responsive Form Layout</h2>
|
|
154
|
+
<p>Testing field order and responsive behavior</p>
|
|
155
|
+
|
|
156
|
+
<al-form [showLeftButton]="true" [showSaveButton]="true" [showDeleteButton]="true" [testId]="'education-section'"
|
|
157
|
+
(leftButtonClick)="onLeftButtonClick($event)" (saveButtonClick)="onSaveButtonClick($event)"
|
|
158
|
+
(deleteButtonClick)="onDeleteButtonClick($event)">
|
|
159
|
+
<div leftButtonContent>
|
|
160
|
+
<al-ai-apply-bar [placeholder]="'Apply AI'" [applyLabel]="'Apply'" [showHelperText]="true" [showClose]="false"
|
|
161
|
+
[showChevronButton]="false" [applyDisabled]="false" [value]="'Apply AI'"
|
|
162
|
+
[options]="['Typing', 'Gathering', 'Processing']" (valueChange)="onAIApplyValueChange($event)"
|
|
163
|
+
(applyClick)="onAIApplyClick()" (closeClick)="onAIApplyClose()">
|
|
164
|
+
</al-ai-apply-bar>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<!-- Row: Date Type, Current Study (checkbox), Start Date, End Date -->
|
|
168
|
+
<!-- Mobile: 2 rows (Date Type|Checkbox, Start|End) - Desktop: reordered -->
|
|
169
|
+
<app-flex-grid [type]="'row'" [mobRow]="2" [tabRow]="2" [desktop]="4" [gap]="'16px'" [minColumns]="2">
|
|
170
|
+
<al-input [label]="'Date Type'" [placeholder]="'Select Date Type'" [value]="'Month/Year'" [type]="'text'"
|
|
171
|
+
[disabled]="false" [helperText]="false" [hasDropDown]="true" [options]="['Month/Year','Year']"
|
|
172
|
+
[size]="'base'" [types]="'primary'" [dataTestId]="'edu-date-type'"></al-input>
|
|
173
|
+
<al-checkbox labelPosition="after" labelText="Current Study"
|
|
174
|
+
(change)="onFormCheckboxChange($event)"></al-checkbox>
|
|
175
|
+
<al-input [label]="'start Date'" [placeholder]="'End Date'" [value]="''" [type]="'date'" [disabled]="false"
|
|
176
|
+
[helperText]="false" [size]="'base'" [types]="'primary'" [dataTestId]="'edu-end-date'"
|
|
177
|
+
(monthSelected)="onMonthSelected($event)" (yearSelected)="onYearSelected($event)"></al-input>
|
|
178
|
+
<al-input [label]="'End Date'" [placeholder]="'End Date'" [value]="''" [type]="'date'" [disabled]="false"
|
|
179
|
+
[helperText]="false" [size]="'base'" [types]="'primary'" [dataTestId]="'edu-end-date'"
|
|
180
|
+
(monthSelected)="onMonthSelected($event)" (yearSelected)="onYearSelected($event)"></al-input>
|
|
181
|
+
</app-flex-grid>
|
|
182
|
+
|
|
183
|
+
<!-- Row: Core Fields -->
|
|
184
|
+
<app-flex-grid [type]="'column'" [rows]="1" [mobRow]="1" [tabRow]="1" [desktop]="1" [gap]="'16px'">
|
|
185
|
+
<al-input [label]="'Course Title'" [placeholder]="'Course Title'" [value]="'Bachelor of Science'"
|
|
186
|
+
[type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
|
|
187
|
+
<al-input [label]="'School Name'" [placeholder]="'School Name'" [value]="'Oxford University'" [type]="'text'"
|
|
188
|
+
[size]="'base'" [types]="'primary'"></al-input>
|
|
189
|
+
<al-input [label]="'Type of Degree'" [placeholder]="'Type of Degree'" [value]="'Bachelor'" [type]="'text'"
|
|
190
|
+
[size]="'base'" [types]="'primary'"></al-input>
|
|
191
|
+
<al-input [label]="'Education Description'" [placeholder]="'Education Description'"
|
|
192
|
+
[value]="'Studied Computer Science'" [type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
|
|
193
|
+
<al-input [label]="'Education Location'" [placeholder]="'Education Location'" [value]="'Oxford, UK'"
|
|
194
|
+
[type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
|
|
195
|
+
</app-flex-grid>
|
|
196
|
+
|
|
197
|
+
<!-- Rich Text Editor Section -->
|
|
198
|
+
<app-flex-grid [type]="'column'" [gap]="16" [countMobile]="1" [countTablet]="1" [countDesktop]="1">
|
|
199
|
+
<app-custom-editor [isVisible]="true" [showTable]="true" [historyControls]="true" [autobullet]="true"
|
|
200
|
+
[showLabels]="true" leftLabelText="Document Title" rightLabelText="Page 1 of 5"
|
|
201
|
+
initialValue="<p>Start typing here...</p>" editScreenSection="GENERAL" actionType="edit"
|
|
202
|
+
[dataTestId]="'custom-editor-testid'" (contentChangeFromQuill)="onContentChange($event)"
|
|
203
|
+
(ApplyAIinQuill)="onAIApply($event)"></app-custom-editor>
|
|
204
|
+
</app-flex-grid>
|
|
205
|
+
</al-form>
|
|
206
|
+
</al-tab>
|
|
207
|
+
<al-tab labelText="Edu Without Date Type">
|
|
208
|
+
<h2>Education Section - Without Date Type</h2>
|
|
209
|
+
<p>Testing layout when Date Type field is not present</p>
|
|
210
|
+
|
|
211
|
+
<al-form [showLeftButton]="true" [showSaveButton]="true" [showDeleteButton]="true" [testId]="'edu-without-date-type'"
|
|
212
|
+
(leftButtonClick)="onLeftButtonClick($event)" (saveButtonClick)="onSaveButtonClick($event)"
|
|
213
|
+
(deleteButtonClick)="onDeleteButtonClick($event)">
|
|
214
|
+
<div leftButtonContent>
|
|
215
|
+
<al-ai-apply-bar [placeholder]="'Apply AI'" [applyLabel]="'Apply'" [showHelperText]="true" [showClose]="false"
|
|
216
|
+
[showChevronButton]="false" [applyDisabled]="false" [value]="'Apply AI'"
|
|
217
|
+
[options]="['Typing', 'Gathering', 'Processing']" (valueChange)="onAIApplyValueChange($event)"
|
|
218
|
+
(applyClick)="onAIApplyClick()" (closeClick)="onAIApplyClose()">
|
|
219
|
+
</al-ai-apply-bar>
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
<!-- Row: Current Study (checkbox), Start Date, End Date -->
|
|
223
|
+
<!-- Mobile: 3 rows (each field on own row) - Desktop: reordered -->
|
|
224
|
+
<app-flex-grid [type]="'row'" [mobRow]="2" [tabRow]="2" [desktop]="4" [gap]="'16px'" [minColumns]="2">
|
|
225
|
+
<al-checkbox labelPosition="after" labelText="Current Study"
|
|
226
|
+
(change)="onFormCheckboxChange($event)"></al-checkbox>
|
|
227
|
+
<al-input [label]="'Start Date'" [placeholder]="'Start Date'" [value]="''" [type]="'date'" [disabled]="false"
|
|
228
|
+
[helperText]="false" [size]="'base'" [types]="'primary'" [dataTestId]="'edu-start-date'"
|
|
229
|
+
(monthSelected)="onMonthSelected($event)" (yearSelected)="onYearSelected($event)"></al-input>
|
|
230
|
+
<al-input [label]="'End Date'" [placeholder]="'End Date'" [value]="''" [type]="'date'" [disabled]="false"
|
|
231
|
+
[helperText]="false" [size]="'base'" [types]="'primary'" [dataTestId]="'edu-end-date'"
|
|
232
|
+
(monthSelected)="onMonthSelected($event)" (yearSelected)="onYearSelected($event)"></al-input>
|
|
233
|
+
</app-flex-grid>
|
|
234
|
+
|
|
235
|
+
<!-- Row: Core Fields -->
|
|
236
|
+
<app-flex-grid [type]="'column'" [rows]="1" [mobRow]="1" [tabRow]="1" [desktop]="1" [gap]="'16px'">
|
|
237
|
+
<al-input [label]="'Course Title'" [placeholder]="'Course Title'" [value]="'Bachelor of Science'"
|
|
238
|
+
[type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
|
|
239
|
+
<al-input [label]="'School Name'" [placeholder]="'School Name'" [value]="'Oxford University'" [type]="'text'"
|
|
240
|
+
[size]="'base'" [types]="'primary'"></al-input>
|
|
241
|
+
<al-input [label]="'Type of Degree'" [placeholder]="'Type of Degree'" [value]="'Bachelor'" [type]="'text'"
|
|
242
|
+
[size]="'base'" [types]="'primary'"></al-input>
|
|
243
|
+
<al-input [label]="'Education Description'" [placeholder]="'Education Description'"
|
|
244
|
+
[value]="'Studied Computer Science'" [type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
|
|
245
|
+
<al-input [label]="'Education Location'" [placeholder]="'Education Location'" [value]="'Oxford, UK'"
|
|
246
|
+
[type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
|
|
247
|
+
</app-flex-grid>
|
|
248
|
+
|
|
249
|
+
<!-- Rich Text Editor Section -->
|
|
250
|
+
<app-flex-grid [type]="'column'" [gap]="16" [countMobile]="1" [countTablet]="1" [countDesktop]="1">
|
|
251
|
+
<app-custom-editor [isVisible]="true" [showTable]="true" [historyControls]="true" [autobullet]="true"
|
|
252
|
+
[showLabels]="true" leftLabelText="Document Title" rightLabelText="Page 1 of 5"
|
|
253
|
+
initialValue="<p>Start typing here...</p>" editScreenSection="GENERAL" actionType="edit"
|
|
254
|
+
[dataTestId]="'custom-editor-testid'" (contentChangeFromQuill)="onContentChange($event)"
|
|
255
|
+
(ApplyAIinQuill)="onAIApply($event)"></app-custom-editor>
|
|
256
|
+
</app-flex-grid>
|
|
257
|
+
</al-form>
|
|
258
|
+
</al-tab>
|
|
259
|
+
<al-tab labelText="3-Column Layout">
|
|
260
|
+
<h2>3-Column Layout Test</h2>
|
|
261
|
+
<p>Start Date → End Date → Checkbox (equal widths on desktop, checkbox first on mobile)</p>
|
|
262
|
+
|
|
263
|
+
<al-form [showLeftButton]="true" [showSaveButton]="true" [showDeleteButton]="true" [testId]="'3-col-layout'"
|
|
264
|
+
(leftButtonClick)="onLeftButtonClick($event)" (saveButtonClick)="onSaveButtonClick($event)"
|
|
265
|
+
(deleteButtonClick)="onDeleteButtonClick($event)">
|
|
266
|
+
<div leftButtonContent>
|
|
267
|
+
<al-ai-apply-bar [placeholder]="'Apply AI'" [applyLabel]="'Apply'" [showHelperText]="true" [showClose]="false"
|
|
268
|
+
[showChevronButton]="false" [applyDisabled]="false" [value]="'Apply AI'"
|
|
269
|
+
[options]="['Typing', 'Gathering', 'Processing']" (valueChange)="onAIApplyValueChange($event)"
|
|
270
|
+
(applyClick)="onAIApplyClick()" (closeClick)="onAIApplyClose()">
|
|
271
|
+
</al-ai-apply-bar>
|
|
272
|
+
</div>
|
|
273
|
+
|
|
274
|
+
<!-- 3-Column Layout: Start Date, End Date, Checkbox -->
|
|
275
|
+
<!-- Desktop: 3 equal columns (1fr each) -->
|
|
276
|
+
<!-- Mobile: Checkbox first (full width), then dates in row 2 -->
|
|
277
|
+
<app-flex-grid [type]="'row'" [mobRow]="2" [tabRow]="3" [desktop]="3" [gap]="'16px'" [minColumns]="3">
|
|
278
|
+
<al-input [label]="'Start Date'" [placeholder]="'Start Date'" [value]="''" [type]="'date'" [disabled]="false"
|
|
279
|
+
[helperText]="false" [size]="'base'" [types]="'primary'" [dataTestId]="'3-col-start-date'"
|
|
280
|
+
(monthSelected)="onMonthSelected($event)" (yearSelected)="onYearSelected($event)"></al-input>
|
|
281
|
+
<al-input [label]="'End Date'" [placeholder]="'End Date'" [value]="''" [type]="'date'" [disabled]="false"
|
|
282
|
+
[helperText]="false" [size]="'base'" [types]="'primary'" [dataTestId]="'3-col-end-date'"
|
|
283
|
+
(monthSelected)="onMonthSelected($event)" (yearSelected)="onYearSelected($event)"></al-input>
|
|
284
|
+
<al-checkbox labelPosition="after" labelText="Current Study"
|
|
285
|
+
(change)="onFormCheckboxChange($event)"></al-checkbox>
|
|
286
|
+
</app-flex-grid>
|
|
287
|
+
|
|
288
|
+
<!-- Test: Checkbox FIRST (matching actual project DOM order) -->
|
|
289
|
+
<p style="margin-top: 24px; color: #666; font-size: 14px;"><strong>Test with Checkbox First (Actual [type]="'row'" [mobRow]="2" [tabRow]="3" [desktop]="3" [gap]="'16px'" [minColumns]="3" Project Order):</strong></p>
|
|
290
|
+
<app-flex-grid>
|
|
291
|
+
<al-checkbox labelPosition="after" labelText="Current Study"
|
|
292
|
+
(change)="onFormCheckboxChange($event)"></al-checkbox>
|
|
293
|
+
<al-input [label]="'Start Date'" [placeholder]="'Start Date'" [value]="''" [type]="'date'" [disabled]="false"
|
|
294
|
+
[helperText]="false" [size]="'base'" [types]="'primary'" [dataTestId]="'3-col-start-date-2'"
|
|
295
|
+
(monthSelected)="onMonthSelected($event)" (yearSelected)="onYearSelected($event)"></al-input>
|
|
296
|
+
<al-input [label]="'End Date'" [placeholder]="'End Date'" [value]="''" [type]="'date'" [disabled]="false"
|
|
297
|
+
[helperText]="false" [size]="'base'" [types]="'primary'" [dataTestId]="'3-col-end-date-2'"
|
|
298
|
+
(monthSelected)="onMonthSelected($event)" (yearSelected)="onYearSelected($event)"></al-input>
|
|
299
|
+
</app-flex-grid>
|
|
300
|
+
|
|
301
|
+
<!-- Core Fields -->
|
|
302
|
+
<app-flex-grid [type]="'column'" [rows]="1" [mobRow]="1" [tabRow]="1" [desktop]="1" [gap]="'16px'">
|
|
303
|
+
<al-input [label]="'Course Title'" [placeholder]="'Course Title'" [value]="'Bachelor of Science'"
|
|
304
|
+
[type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
|
|
305
|
+
<al-input [label]="'School Name'" [placeholder]="'School Name'" [value]="'Oxford University'" [type]="'text'"
|
|
306
|
+
[size]="'base'" [types]="'primary'"></al-input>
|
|
307
|
+
</app-flex-grid>
|
|
308
|
+
</al-form>
|
|
309
|
+
</al-tab>
|
|
152
310
|
<al-tab labelText="CoverSheet">
|
|
153
311
|
<h3>About Us</h3>
|
|
154
312
|
<p>Learn more about our company and mission.</p>
|
|
@@ -158,4 +316,4 @@
|
|
|
158
316
|
<p>Get in touch with us through various channels.</p>
|
|
159
317
|
</al-tab>
|
|
160
318
|
</al-tabs>
|
|
161
|
-
</al-general-container>
|
|
319
|
+
</al-general-container>
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
(change)="onSelectionChange($event.value)" [ngClass]="[getSizeClass(), vertical ? 'al-toggle-vertical' : '']">
|
|
3
3
|
|
|
4
4
|
<mat-button-toggle *ngFor="let button of buttons" [value]="button.id" [disabled]="button.disabled"
|
|
5
|
-
[attr.aria-label]="button.label" [style.display]="'inline-flex'" [style.align-items]="'center'"
|
|
5
|
+
[attr.aria-label]="button.label" [matTooltip]="button.tooltip" [style.display]="'inline-flex'" [style.align-items]="'center'"
|
|
6
6
|
[style.gap.px]="computeGap(button)" [attr.data-testid]="button.dataTestId || dataTestId">
|
|
7
7
|
|
|
8
8
|
<!-- Icon (shown based on type) -->
|
|
9
|
-
<mat-icon *ngIf="(type === 'default' || type === 'icon-only') && button.icon?.trim()"
|
|
9
|
+
<mat-icon *ngIf="(type === 'default' || type === 'icon-only') && button.icon?.trim()"
|
|
10
|
+
[fontSet]="button.fontSet || 'material-icons'"
|
|
11
|
+
class="button-icon">{{
|
|
10
12
|
button.icon }}</mat-icon>
|
|
11
13
|
|
|
12
14
|
<!-- Label (shown based on type) -->
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
============================================ */
|
|
4
4
|
|
|
5
5
|
@import url("https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined");
|
|
6
|
+
@import url("https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200");
|
|
6
7
|
@import '../styles/colors.scss';
|
|
7
8
|
@import '../styles/typography-classes.scss';
|
|
8
9
|
|
|
@@ -282,3 +283,18 @@ mat-button-toggle:focus-visible {
|
|
|
282
283
|
outline: 2px solid $color-blue-500;
|
|
283
284
|
outline-offset: 2px;
|
|
284
285
|
}
|
|
286
|
+
|
|
287
|
+
/* ============================================
|
|
288
|
+
MATERIAL SYMBOLS OUTLINED SUPPORT
|
|
289
|
+
============================================ */
|
|
290
|
+
|
|
291
|
+
/* Material Symbols Outlined font family */
|
|
292
|
+
::ng-deep .material-symbols-outlined {
|
|
293
|
+
font-family: 'Material Symbols Outlined';
|
|
294
|
+
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
mat-button-toggle .mat-icon.material-symbols-outlined {
|
|
298
|
+
font-family: 'Material Symbols Outlined' !important;
|
|
299
|
+
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24 !important;
|
|
300
|
+
}
|