@allsorter/ui-components 0.0.369 → 0.0.372

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.
Files changed (35) hide show
  1. package/fesm2022/allsorter-ui-components.mjs +274 -275
  2. package/fesm2022/allsorter-ui-components.mjs.map +1 -1
  3. package/lib/ai-apply-bar/ai-apply-bar.component.d.ts +4 -1
  4. package/lib/custom-editor/custom-editor.component.d.ts +3 -14
  5. package/lib/editable-form-wrapper/editable-form-wrapper.component.d.ts +33 -2
  6. package/lib/experience-section/experience-section.component.d.ts +2 -2
  7. package/lib/newresumeheader/newresumeheader.component.d.ts +19 -0
  8. package/lib/styles/typography-classes.scss +1 -1
  9. package/lib/{app-toolbar/app-toolbar.component.d.ts → toolbar-left/toolbar-left.component.d.ts} +1 -1
  10. package/lib/{app-toolbar/app-toolbar.module.d.ts → toolbar-left/toolbar-left.module.d.ts} +1 -1
  11. package/lib/{app-toolbar-right/app-toolbar-right.component.d.ts → toolbar-right/toolbar-right.component.d.ts} +1 -1
  12. package/lib/{app-toolbar-right/app-toolbar-right.module.d.ts → toolbar-right/toolbar-right.module.d.ts} +1 -1
  13. package/lib/utils/image-utils.d.ts +8 -0
  14. package/package.json +1 -1
  15. package/public-api.d.ts +4 -4
  16. package/src/lib/ai-apply-bar/ai-apply-bar.component.html +14 -14
  17. package/src/lib/ai-apply-bar/ai-apply-bar.component.scss +4 -16
  18. package/src/lib/button/button.component.scss +8 -5
  19. package/src/lib/candidate-section/candidate-section.component.scss +25 -0
  20. package/src/lib/custom-editor/custom-editor.component.scss +2 -1
  21. package/src/lib/editable-form-wrapper/editable-form-wrapper.component.html +19 -7
  22. package/src/lib/editable-form-wrapper/editable-form-wrapper.component.scss +9 -1
  23. package/src/lib/experience-section/experience-section.component.html +4 -4
  24. package/src/lib/field-placeholder/field-placeholder.component.html +3 -3
  25. package/src/lib/field-placeholder/field-placeholder.component.scss +20 -61
  26. package/src/lib/input/input.component.html +1 -1
  27. package/src/lib/input/input.component.scss +4 -4
  28. package/src/lib/newresumeheader/newresumeheader.component.html +5 -4
  29. package/src/lib/styles/typography-classes.scss +1 -1
  30. package/src/lib/test-styling/test-styling.component.html +187 -0
  31. package/src/lib/test-styling/test-styling.component.scss +17 -0
  32. package/src/lib/{app-toolbar-right/app-toolbar-right.component.html → toolbar-right/toolbar-right.component.html} +2 -2
  33. /package/src/lib/{app-toolbar/app-toolbar.component.html → toolbar-left/toolbar-left.component.html} +0 -0
  34. /package/src/lib/{app-toolbar/app-toolbar.component.scss → toolbar-left/toolbar-left.component.scss} +0 -0
  35. /package/src/lib/{app-toolbar-right/app-toolbar-right.component.scss → toolbar-right/toolbar-right.component.scss} +0 -0
@@ -11,6 +11,19 @@
11
11
 
12
12
 
13
13
 
14
+ @import url("https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined");
15
+ @import url("https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined");
16
+ @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto:ital,wght@0,100..900;1,100..900&display=swap');
17
+
18
+ /* Material Icons */
19
+ @import url('https://fonts.googleapis.com/icon?family=Material+Icons');
20
+ @import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined');
21
+
22
+ /* Make all typography utility classes available inside this component */
23
+ @import '../styles/typography-classes.scss';
24
+
25
+
26
+
14
27
  .placeholder-text {
15
28
  padding: 4px 8px;
16
29
  letter-spacing: 0.25px;
@@ -20,63 +33,11 @@
20
33
  font-family: 'Open Sans', Arial, sans-serif;
21
34
  font-size: 14px;
22
35
  font-weight: 400;
23
- line-height: 18px;
36
+ line-height: 20px;
24
37
  color: #768FED;
25
38
  }
26
39
 
27
- // Default typography on host so inner content can inherit,
28
- // and external classes on <lib-field-placeholder> can override.
29
- // :host {
30
- // color: var(--Greys-700, #4B4F62);
31
- // font-family: var(--Body-Medium-Font, Roboto);
32
- // font-size: 14px;
33
- // font-style: normal;
34
- // font-weight: 400;
35
- // line-height: 20px;
36
- // letter-spacing: 0.25px;
37
- // }
38
-
39
- // .value-text {
40
- // // Don't set any hard values - let the classes from new-typography.scss apply
41
- // color: inherit;
42
- // font-family: inherit;
43
- // font-size: inherit;
44
- // font-style: inherit;
45
- // font-weight: inherit;
46
- // line-height: inherit;
47
- // letter-spacing: inherit;
48
-
49
- // // Ensure the new typography classes can override
50
- // &.font-text-5xl,
51
- // &.font-text-5xl-medium,
52
- // &.font-text-5xl-bold,
53
- // &.font-text-4xl,
54
- // &.font-text-4xl-medium,
55
- // &.font-text-4xl-bold,
56
- // &.font-text-3xl,
57
- // &.font-text-3xl-medium,
58
- // &.font-text-3xl-bold,
59
- // &.font-text-2xl,
60
- // &.font-text-2xl-medium,
61
- // &.font-text-2xl-bold,
62
- // &.font-text-xl,
63
- // &.font-text-xl-medium,
64
- // &.font-text-xl-bold,
65
- // &.font-text-lg,
66
- // &.font-text-lg-medium,
67
- // &.font-text-lg-bold,
68
- // &.font-text-base,
69
- // &.font-text-base-medium,
70
- // &.font-text-base-bold,
71
- // &.font-text-sm,
72
- // &.font-text-sm-medium,
73
- // &.font-text-sm-bold,
74
- // &.font-text-xs,
75
- // &.font-text-xs-medium,
76
- // &.font-text-xs-bold {
77
- // // Classes now have higher specificity to override host styles
78
- // }
79
- // }
40
+
80
41
 
81
42
  .field-row {
82
43
  display: flex;
@@ -85,13 +46,10 @@
85
46
  }
86
47
 
87
48
  .field-row-compact {
88
- leading-trim: both;
89
- text-edge: cap;
90
49
  font-style: normal;
91
50
  line-height: 140%;
92
51
  letter-spacing: 0.04px;
93
52
  height: 28px;
94
- // padding: 8px 0;
95
53
  }
96
54
 
97
55
  .field-row-padded {
@@ -105,6 +63,7 @@
105
63
  justify-content: center;
106
64
  }
107
65
 
66
+ .field-icon,
108
67
  .field-icon img,
109
68
  .field-icon mat-icon {
110
69
  width: 20px;
@@ -112,8 +71,8 @@
112
71
  object-fit: contain;
113
72
  font-size: 20px;
114
73
  line-height: 20px;
115
- display: inline-flex;
116
- align-items: center;
117
- justify-content: center;
74
+ display: inline-flex;
75
+ align-items: center;
76
+ justify-content: center;
118
77
  color: #37C1CE;
119
- }
78
+ }
@@ -1,5 +1,5 @@
1
1
  <!-- Standard floating label layout for all inputs including date picker -->
2
- <mat-form-field appearance="outline" class="al-input-field" [ngClass]="[
2
+ <mat-form-field #formField appearance="outline" class="al-input-field" [ngClass]="[
3
3
  helperText ? 'has-helper-text' : '',
4
4
  getSizeClass(),
5
5
  getCategoryClass(),
@@ -467,19 +467,19 @@ mat-icon[matSuffix] {
467
467
  /* ===== FLOATING LABEL POSITIONING ===== */
468
468
 
469
469
  ::ng-deep .al-input-size-xs .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label {
470
- top: 11px !important;
470
+ top: 10px !important;
471
471
  }
472
472
 
473
473
  ::ng-deep .al-input-size-small .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label {
474
- top: 10px !important;
474
+ top: 11px !important;
475
475
  }
476
476
 
477
477
  ::ng-deep .al-input-size-base .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label {
478
- top: 14px !important;
478
+ top: 15px !important;
479
479
  }
480
480
 
481
481
  ::ng-deep .al-input-size-header .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label {
482
- top: 7px !important;
482
+ top: 8px !important;
483
483
  }
484
484
 
485
485
  ::ng-deep .al-input-size-large .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label {
@@ -151,10 +151,11 @@
151
151
  <ng-template #headerButtonsTemplate let-buttons="buttons" let-handleClick="handleClick">
152
152
  <ng-container *ngFor="let btn of buttonConfig">
153
153
  <al-button *ngIf="!btn.displayCondition || btn.displayCondition()" [color]="btn.color" [outline]="btn.outline"
154
- [size]="btn.size" [iconOutlined]="btn.iconOutlined" [labelText]="btn.labelText" [leftIcon]="btn.leftIcon"
155
- [rightIcon]="btn.rightIcon" [dataTestId]="btn.dataTestId" [hasDropDown]="btn.hasDropDown"
156
- [dropdownItems]="btn.dropdownItems" [buttonType]="'icon-label'" [iconOnly]="!btn.labelText"
157
- (onClick)="onButtonClick(btn, $event)" (optionSelect)="onDropdownSelect(btn, $event)">
154
+ [size]="btn.size" [iconOutlined]="btn.iconOutlined" [labelText]="btn.labelText"
155
+ [leftIcon]="getButtonIcons(btn).leftIcon" [rightIcon]="getButtonIcons(btn).rightIcon"
156
+ [dataTestId]="btn.dataTestId" [hasDropDown]="btn.hasDropDown" [dropdownItems]="btn.dropdownItems"
157
+ [buttonType]="'icon-label'" [iconOnly]="!btn.labelText" [tooltip]="getButtonTooltip(btn)"
158
+ [tooltipPosition]="'above'" (onClick)="onButtonClick(btn, $event)" (optionSelect)="onDropdownSelect(btn, $event)">
158
159
  </al-button>
159
160
  </ng-container>
160
161
  </ng-template>
@@ -169,7 +169,7 @@
169
169
  font-size: 14px;
170
170
  font-style: normal;
171
171
  font-weight: 400;
172
- line-height: 140%;
172
+ line-height: 1.4;
173
173
  letter-spacing: 0.035px;
174
174
  }
175
175
 
@@ -0,0 +1,187 @@
1
+ <div style="width: 100%; height: 100vh; overflow: hidden;">
2
+ <as-split class="split_panels" direction="horizontal" style="overflow: visible; height: 100vh;" (dragEnd)="onDragEnd()" data-test-id="main-resume-split-panels">
3
+ <as-split-area [size]="50" data-test-id="main-resume-left-panel">
4
+
5
+ <div class="w-100 resume-data left-section" data-test-id="main-resume-left-section" style="width: 100%; padding: 16px;">
6
+ <div style="margin-top: 16px; padding: 16px; background: #f5f5f5; border-radius: 8px;">
7
+ <h3 style="margin: 0 0 8px 0;">Dummy Content</h3>
8
+ <p style="margin: 0; color: #666;">This is placeholder content for the left panel. In a real application, this would contain resume parsing data or other relevant information.</p>
9
+ </div>
10
+ </div>
11
+ </as-split-area>
12
+ <as-split-area [size]="50">
13
+ <al-general-container
14
+ cdkScrollable
15
+ [backgroundColor]="'#FFFFFF'"
16
+ [padding]="'16px'"
17
+ [borderRadius]="'8px'"
18
+ [borderPosition]="'top'"
19
+ [borderColor]="'#87DAE2'"
20
+ [boxShadow]="true"
21
+ [height]="'calc(100vh)'"
22
+ [overflowX]="'hidden'"
23
+ [overflowY]="'auto'"
24
+ >
25
+ <al-tabs [selectedIndex]="0" [size]="'large'">
26
+ <al-tab labelText="Resume">
27
+ <al-newresumeheader
28
+ [title]="'Experiences'"
29
+ [showHeaderCheckbox]="true"
30
+ [headerCheckboxChecked]="false"
31
+ [isLargeScreen]="true"
32
+ [showPopOutPanel]="false"
33
+ [hiddenSection]="{ headerSectionHidden: false }"
34
+ [configEyeToggle]="configEyeToggle"
35
+ [buttonConfig]="buttonConfig">
36
+ <al-responsive-columns [stackAt]="0" [gap]="'8px'" [padding]="'8px 12px'">
37
+ <div left>
38
+ <app-toolbar-left
39
+ [variant]="'default'"
40
+ [content]="'Section Content'"
41
+ [isExtractionAnalysisActive]="false"
42
+ [showSearch]="true"
43
+ (editEvent)="onEditEvent($event)">
44
+ </app-toolbar-left>
45
+ </div>
46
+ <div center>
47
+ <al-resume-entries
48
+ [entries]="entries"
49
+ [showHeader]="true"
50
+ [showDescriptionLabel]="true"
51
+ [showCompany]="true"
52
+ [showJobTitle]="true"
53
+ [showDates]="true"
54
+ [showLocation]="true"
55
+ [showTimeline]="false"
56
+ [showReapplyButton]="true"
57
+ [showLoader]="false"
58
+ (reapplyClick)="onReapplyClick($event)"
59
+ (undoClick)="onUndoClick($event)">
60
+ </al-resume-entries>
61
+ </div>
62
+ <div right>
63
+ <app-toolbar-right
64
+ [checked]="false"
65
+ [alwaysShowIcons]="false"
66
+ [overrideConfig]="toolbarRightConfig"
67
+ [currentObj]="{ hidden: false, subrole: false }"
68
+ (checkboxChange)="onCheckboxChange($event)"
69
+ (visibilityToggle)="onVisibilityToggle($event)">
70
+ </app-toolbar-right>
71
+ </div>
72
+ </al-responsive-columns>
73
+ </al-newresumeheader>
74
+ <al-form
75
+ *ngFor="let entry of entries; let i = index"
76
+ [showLeftButton]="true"
77
+ [showSaveButton]="true"
78
+ [showDeleteButton]="true"
79
+ [testId]="getTestId(i)"
80
+ (leftButtonClick)="onLeftButtonClick($event)"
81
+ (saveButtonClick)="onSaveButtonClick($event)"
82
+ (deleteButtonClick)="onDeleteButtonClick($event)"
83
+ [scrollContainer]="'.general-container'">
84
+ <div leftButtonContent>
85
+ <al-ai-apply-bar
86
+ [placeholder]="'Apply AI'"
87
+ [applyLabel]="'Apply'"
88
+ [showHelperText]="true"
89
+ [showClose]="false"
90
+ [showChevronButton]="false"
91
+ [applyDisabled]="false"
92
+ [value]="'Apply AI'"
93
+ [options]="['Typing', 'Gathering', 'Processing']"
94
+ (valueChange)="onAIApplyValueChange($event)"
95
+ (applyClick)="onAIApplyClick()"
96
+ (closeClick)="onAIApplyClose()">
97
+ </al-ai-apply-bar>
98
+ </div>
99
+ <app-flex-grid [type]="'row'" [mobRow]="1" [tabRow]="2" [desktop]="4" [gap]="'16px'">
100
+ <al-input
101
+ [label]="'Date Type'"
102
+ [placeholder]="'Type here...'"
103
+ [value]="'Month/Year'"
104
+ [type]="'text'"
105
+ [disabled]="false"
106
+ [helperText]="false"
107
+ [hasDropDown]="true"
108
+ [options]="['Month/Year','Year']"
109
+ [size]="'base'"
110
+ [types]="'primary'"
111
+ [dataTestId]="'test-input'"
112
+ ></al-input>
113
+ <al-input
114
+ [label]="'Start Date'"
115
+ [placeholder]="'Type here...'"
116
+ [value]="entry.startDate"
117
+ [type]="'date'"
118
+ [disabled]="false"
119
+ [helperText]="false"
120
+ [size]="'base'"
121
+ [types]="'primary'"
122
+ [dataTestId]="'test-input'"
123
+ (monthSelected)="onMonthSelected($event)"
124
+ (yearSelected)="onYearSelected($event)"
125
+ ></al-input>
126
+ <al-input
127
+ [label]="'End Date'"
128
+ [placeholder]="'Type here...'"
129
+ [value]="entry.endDate || ''"
130
+ [type]="'date'"
131
+ [disabled]="false"
132
+ [helperText]="false"
133
+ [size]="'base'"
134
+ [types]="'primary'"
135
+ [dataTestId]="'test-input'"
136
+ (monthSelected)="onMonthSelected($event)"
137
+ (yearSelected)="onYearSelected($event)"
138
+ ></al-input>
139
+ <al-checkbox
140
+ labelPosition="before"
141
+ labelText="Current Study"
142
+ [checked]="entry.isPresent"
143
+ (change)="onFormCheckboxChange($event)"
144
+ ></al-checkbox>
145
+ </app-flex-grid>
146
+ <app-flex-grid [type]="'column'" [rows]="1" [mobRow]="1" [tabRow]="1" [desktop]="1" [gap]="'16px'">
147
+ <al-input [label]="'Company Name'" [placeholder]="'Company Name'" [value]="entry.companyName" [type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
148
+ <al-input [label]="'Job Title'" [placeholder]="'Job Title'" [value]="entry.jobTitle" [type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
149
+ </app-flex-grid>
150
+ <app-flex-grid [type]="'column'" [rows]="1" [mobRow]="1" [tabRow]="1" [desktop]="3" [gap]="'16px'">
151
+ <al-input [label]="'City'" [placeholder]="'City'" [value]="entry.city" [type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
152
+ <al-input [label]="'Region'" [placeholder]="'Region'" [value]="entry.region" [type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
153
+ <al-input [label]="'Country'" [placeholder]="'Country'" [value]="entry.country" [type]="'text'" [size]="'base'" [types]="'primary'"></al-input>
154
+ </app-flex-grid>
155
+ <app-flex-grid [type]="'column'" [gap]="16" [countMobile]="1" [countTablet]="1" [countDesktop]="1">
156
+ <app-custom-editor
157
+ [isVisible]="true"
158
+ [showTable]="true"
159
+ [historyControls]="true"
160
+ [autobullet]="true"
161
+ [showLabels]="true"
162
+ leftLabelText="Document Title"
163
+ rightLabelText="Page 1 of 5"
164
+ [initialValue]="getDescriptionHtml(entry.descriptions)"
165
+ editScreenSection="GENERAL"
166
+ actionType="edit"
167
+ [dataTestId]="'custom-editor-testid'"
168
+ (contentChangeFromQuill)="onContentChange($event)"
169
+ (ApplyAIinQuill)="onAIApply($event)"
170
+ ></app-custom-editor>
171
+ </app-flex-grid>
172
+ </al-form>
173
+ </al-tab>
174
+ <al-tab labelText="CoverSheet">
175
+ <h3>About Us</h3>
176
+ <p>Learn more about our company and mission.</p>
177
+ </al-tab>
178
+ <al-tab labelText="Ai Tools">
179
+ <h3>Contact Information</h3>
180
+ <p>Get in touch with us through various channels.</p>
181
+ </al-tab>
182
+ </al-tabs>
183
+ </al-general-container>
184
+ </as-split-area>
185
+ </as-split>
186
+ </div>
187
+
@@ -0,0 +1,17 @@
1
+ .split_panels {
2
+ width: calc(100%) !important;
3
+ height: 100% !important;
4
+ }
5
+ .as-split-gutter {
6
+ cursor: col-resize !important;
7
+ }
8
+ .as-split-gutter > .as-split-gutter-icon {
9
+ flex-basis: 32px !important;
10
+ }
11
+ as-split {
12
+ display: flex !important;
13
+ height: 100% !important;
14
+ }
15
+ as-split-area {
16
+ overflow: hidden !important;
17
+ }
@@ -3,7 +3,7 @@
3
3
  (change)="onCheckboxChange($event)" (mouseenter)="onCheckboxHover(true)"
4
4
  (mouseleave)="onCheckboxHover(false)"></al-checkbox></div>
5
5
  <div class="toolbar-right-icons" [ngClass]="{'always-visible': showIcons}">
6
- <div class="icon-wrapper"><button *ngIf="requiredIcon.sr.display" type="button"
6
+ <div class="icon-wrapper" *ngIf="requiredIcon.sr.display"><button type="button"
7
7
  class="toolbar-icon toolbar-icon--subrole" [attr.aria-label]="requiredIcon.sr.title"
8
8
  [attr.title]="requiredIcon.sr.title" (click)="setSubrole()"><mat-icon
9
9
  [svgIcon]="currentObj['subrole'] ? 'subrole_active' : 'subrole'" class="subrole-icon"></mat-icon></button>
@@ -12,4 +12,4 @@
12
12
  class="toolbar-icon toolbar-icon--eye eye-icon" [attr.aria-label]="eyeLabel" [attr.title]="eyeTitle"
13
13
  (click)="onToggleVisibility()"><mat-icon [svgIcon]="eyeSvgIcon" class="eye-icon"></mat-icon></button></div>
14
14
  </div>
15
- </div>
15
+ </div>