@allsorter/ui-components 0.0.367 → 0.0.370

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 (124) hide show
  1. package/fesm2022/allsorter-ui-components.mjs +2996 -1391
  2. package/fesm2022/allsorter-ui-components.mjs.map +1 -1
  3. package/images/Column left.svg +5 -0
  4. package/images/Move.svg +8 -0
  5. package/images/Success.svg +5 -0
  6. package/images/Table.svg +3 -0
  7. package/images/Vector-1.svg +3 -0
  8. package/images/Vector.svg +3 -0
  9. package/images/add-teble.svg +6 -0
  10. package/images/arrow_downward.svg +3 -0
  11. package/images/calendar_year.svg +4 -0
  12. package/images/column right.svg +5 -0
  13. package/images/delete -table.svg +6 -0
  14. package/images/delete row.svg +10 -0
  15. package/images/delete-column.svg +10 -0
  16. package/images/delete.svg +3 -0
  17. package/images/drag-drop-icon.svg +8 -0
  18. package/images/edit.svg +3 -0
  19. package/images/error.svg +5 -0
  20. package/images/row bottom.svg +5 -0
  21. package/images/row top.svg +5 -0
  22. package/images/search.svg +3 -0
  23. package/images/subrole.svg +3 -0
  24. package/images/visibility_off.svg +3 -0
  25. package/images/warning.svg +5 -0
  26. package/lib/app-toolbar/app-toolbar.component.d.ts +5 -8
  27. package/lib/app-toolbar/app-toolbar.module.d.ts +4 -4
  28. package/lib/app-toolbar-right/app-toolbar-right.component.d.ts +3 -5
  29. package/lib/button/button.component.d.ts +30 -1
  30. package/lib/candidate-section/candidate-section.component.d.ts +8 -0
  31. package/lib/custom-editor/custom-editor.component.d.ts +110 -14
  32. package/lib/custom-editor/table/table.component.d.ts +5 -0
  33. package/lib/editable-form-wrapper/editable-form-wrapper.component.d.ts +48 -0
  34. package/lib/experience-section/experience-section.component.d.ts +4 -2
  35. package/lib/general-container/general-container.component.d.ts +5 -1
  36. package/lib/icon-button/icon-button.component.d.ts +16 -7
  37. package/lib/input/input.component.d.ts +41 -10
  38. package/lib/newresumeheader/newresumeheader.component.d.ts +43 -4
  39. package/lib/resume-entries/resume-entries.component.d.ts +7 -1
  40. package/lib/resume-header/resume-header.model.d.ts +11 -20
  41. package/lib/shared-popup-modal/shared-popup-modal.component.d.ts +17 -0
  42. package/lib/side-action-bar-wrapper/side-action-bar-wrapper.component.d.ts +34 -0
  43. package/lib/side-action-bar-wrapper/side-action-bar-wrapper.module.d.ts +12 -0
  44. package/lib/styles/border-radius.scss +11 -0
  45. package/lib/styles/button-mixins.scss +41 -0
  46. package/lib/styles/button.scss +117 -0
  47. package/lib/styles/colors.scss +221 -0
  48. package/lib/styles/elevation.scss +46 -0
  49. package/lib/styles/new-typography.scss +202 -0
  50. package/lib/styles/spacing.scss +39 -0
  51. package/lib/styles/typography-classes.scss +203 -0
  52. package/lib/utils/icon-utils.d.ts +51 -0
  53. package/lib/utils/image-utils.d.ts +54 -0
  54. package/package.json +15 -3
  55. package/public-api.d.ts +3 -3
  56. package/src/lib/ai-apply-bar/ai-apply-bar.component.html +43 -0
  57. package/src/lib/ai-apply-bar/ai-apply-bar.component.scss +182 -0
  58. package/src/lib/app-toolbar/app-toolbar.component.html +13 -0
  59. package/src/lib/app-toolbar/app-toolbar.component.scss +141 -0
  60. package/src/lib/app-toolbar-right/app-toolbar-right.component.html +15 -0
  61. package/src/lib/app-toolbar-right/app-toolbar-right.component.scss +294 -0
  62. package/src/lib/button/button.component.html +127 -0
  63. package/src/lib/button/button.component.scss +1238 -0
  64. package/src/lib/candidate-section/candidate-section.component.html +91 -0
  65. package/src/lib/candidate-section/candidate-section.component.scss +154 -0
  66. package/src/lib/checkbox/checkbox.component.html +24 -0
  67. package/src/lib/checkbox/checkbox.component.scss +280 -0
  68. package/src/lib/custom-editor/custom-editor.component.html +129 -0
  69. package/src/lib/custom-editor/custom-editor.component.scss +441 -0
  70. package/src/lib/custom-editor/table/table.component.html +21 -0
  71. package/src/lib/date-range/date-range.component.html +33 -0
  72. package/src/lib/date-range/date-range.component.scss +284 -0
  73. package/src/lib/editable-form-wrapper/editable-form-wrapper.component.html +12 -0
  74. package/src/lib/editable-form-wrapper/editable-form-wrapper.component.scss +227 -0
  75. package/src/lib/experience-section/experience-section.component.html +20 -0
  76. package/src/lib/experience-section/experience-section.component.scss +0 -0
  77. package/src/lib/field-placeholder/field-placeholder.component.html +17 -0
  78. package/src/lib/field-placeholder/field-placeholder.component.scss +119 -0
  79. package/src/lib/general-container/general-container.component.html +3 -0
  80. package/src/lib/general-container/general-container.component.scss +10 -0
  81. package/src/lib/icon-button/icon-button.component.html +12 -0
  82. package/src/lib/icon-button/icon-button.component.scss +77 -0
  83. package/src/lib/input/input.component.html +86 -0
  84. package/src/lib/input/input.component.scss +1337 -0
  85. package/src/lib/loader/loader.component.html +15 -0
  86. package/src/lib/loader/loader.component.scss +493 -0
  87. package/src/lib/new-typography/new-typography.component.html +10 -0
  88. package/src/lib/new-typography/new-typography.component.scss +200 -0
  89. package/src/lib/newresumeheader/newresumeheader.component.html +178 -0
  90. package/src/lib/newresumeheader/newresumeheader.component.scss +530 -0
  91. package/src/lib/radio/radio.component.html +23 -0
  92. package/src/lib/radio/radio.component.scss +253 -0
  93. package/src/lib/responsive-columns/responsive-columns.component.html +6 -0
  94. package/src/lib/responsive-columns/responsive-columns.component.scss +68 -0
  95. package/src/lib/responsive-layout/responsive-layout.component.html +1 -0
  96. package/src/lib/responsive-layout/responsive-layout.component.scss +47 -0
  97. package/src/lib/resume-entries/resume-entries.component.html +97 -0
  98. package/src/lib/resume-entries/resume-entries.component.scss +341 -0
  99. package/src/lib/resume-header/resume-header.component.html +167 -0
  100. package/src/lib/shared-popup-modal/shared-popup-modal.component.html +99 -0
  101. package/src/lib/shared-popup-modal/shared-popup-modal.component.scss +223 -0
  102. package/src/lib/side-action-bar-wrapper/side-action-bar-wrapper.component.html +17 -0
  103. package/src/lib/side-action-bar-wrapper/side-action-bar-wrapper.component.scss +58 -0
  104. package/src/lib/slide-toggle/slide-toggle.component.html +17 -0
  105. package/src/lib/slide-toggle/slide-toggle.component.scss +439 -0
  106. package/src/lib/storybook/testing-strip/testing-strip.component.html +12 -0
  107. package/src/lib/storybook/testing-strip/testing-strip.component.scss +1 -0
  108. package/src/lib/styles/border-radius.scss +11 -0
  109. package/src/lib/styles/button-mixins.scss +41 -0
  110. package/src/lib/styles/button.scss +117 -0
  111. package/src/lib/styles/colors.scss +221 -0
  112. package/src/lib/styles/elevation.scss +46 -0
  113. package/src/lib/styles/new-typography.scss +202 -0
  114. package/src/lib/styles/spacing.scss +39 -0
  115. package/src/lib/styles/typography-classes.scss +203 -0
  116. package/src/lib/tabs/tabs.component.html +9 -0
  117. package/src/lib/tabs/tabs.component.scss +151 -0
  118. package/src/lib/toggle-buttons/toggle-buttons.component.html +17 -0
  119. package/src/lib/toggle-buttons/toggle-buttons.component.scss +284 -0
  120. package/src/lib/tooltip/tooltip.component.html +6 -0
  121. package/src/lib/tooltip/tooltip.component.scss +8 -0
  122. package/lib/action-bar-wrapper/action-bar-wrapper.component.d.ts +0 -36
  123. package/lib/resume-header/resume-header.component.d.ts +0 -69
  124. package/lib/resume-header/resume-header.module.d.ts +0 -8
@@ -0,0 +1,441 @@
1
+ @import url('https://fonts.googleapis.com/icon?family=Material+Icons');
2
+
3
+ @import '../styles/colors.scss';
4
+ @import '../styles/typography-classes.scss';
5
+
6
+ // Editor labels above the editor
7
+ .editor-labels {
8
+ display: flex;
9
+ justify-content: space-between;
10
+ align-items: center;
11
+ margin-bottom: 8px;
12
+ padding: 0 4px;
13
+
14
+ .left-label {
15
+ color: $color-grey-700;
16
+ @extend .font-label-large;
17
+ }
18
+
19
+ .right-label {
20
+ color: var(--Greys-500, $color-grey-500);
21
+ text-align: right;
22
+ @extend .font-body-small;
23
+ }
24
+ }
25
+
26
+ .editor-container {
27
+ width: 100%;
28
+ max-width: 100%;
29
+ display: block;
30
+ // border: 1px solid #e9ecef;
31
+ border-radius: 10px;
32
+ overflow: visible;
33
+ box-sizing: border-box;
34
+
35
+ img {
36
+ -webkit-user-drag: none;
37
+ user-drag: none;
38
+ pointer-events: auto;
39
+ }
40
+ }
41
+
42
+ .toolbar {
43
+ display: flex;
44
+ align-items: center;
45
+ background-color: $color-grey-50;
46
+ border: 1px solid $color-grey-400;
47
+ border-top-left-radius: 8px;
48
+ border-top-right-radius: 8px;
49
+ border-bottom: 1px solid $color-grey-400;
50
+ gap: 15px;
51
+ padding: 12px 16px;
52
+ overflow: visible;
53
+ position: relative;
54
+ z-index: 1;
55
+
56
+ .format-button {
57
+ display: flex;
58
+ align-items: center;
59
+ justify-content: center;
60
+ border: none;
61
+ background-color: transparent;
62
+ border-radius: 6px;
63
+ cursor: pointer;
64
+ transition: background-color 0.2s ease;
65
+ padding: 4px;
66
+ position: relative;
67
+ min-width: 24px;
68
+ height: 24px;
69
+
70
+ &.hide-on-small {
71
+ @media (max-width: 1499px) {
72
+ display: none !important;
73
+ }
74
+ }
75
+
76
+ .material-icons,
77
+ mat-icon {
78
+ font-size: 20px;
79
+ color: $color-grey-700;
80
+ transition: none;
81
+ width: 20px;
82
+ height: 20px;
83
+ }
84
+
85
+ &.active .material-icons,
86
+ &.active mat-icon,
87
+ .active-icon {
88
+ color: $color-green-500;
89
+ }
90
+
91
+ &:hover {
92
+ background-color: rgba(211, 211, 211, 0.5) !important;
93
+
94
+ .material-icons,
95
+ mat-icon {
96
+ color: $color-grey-700 !important;
97
+ }
98
+ }
99
+
100
+ &:hover.active .material-icons,
101
+ &:hover.active mat-icon,
102
+ &:hover .active-icon {
103
+ color: $color-green-500 !important;
104
+ }
105
+
106
+ &:active {
107
+ transform: translateY(0);
108
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
109
+ }
110
+
111
+ &.active {
112
+ color: $color-green-500;
113
+ }
114
+
115
+ svg {
116
+ pointer-events: none;
117
+ transition: fill 0.2s ease;
118
+ }
119
+ }
120
+
121
+ .auto-bullet,
122
+ .bullet-skill {
123
+ display: flex;
124
+ align-items: center;
125
+ justify-content: center;
126
+ border: 1px solid #383B4A;
127
+ background-color: white;
128
+ border-radius: 4px;
129
+ cursor: pointer;
130
+ transition: all 0.2s ease;
131
+ padding: 6px 12px;
132
+ height: 28px;
133
+ font-size: 12px;
134
+ font-weight: 400;
135
+ color: #383B4A;
136
+ letter-spacing: 0.4px;
137
+
138
+ &:hover {
139
+ background-color: #e9ecef;
140
+ border-color: #383B4A;
141
+ }
142
+
143
+ &:disabled {
144
+ opacity: 0.5;
145
+ cursor: not-allowed;
146
+ }
147
+ }
148
+
149
+ .styling-dropdown {
150
+ position: relative;
151
+ display: inline-block;
152
+ cursor: pointer;
153
+ z-index: 1000;
154
+
155
+ @media (min-width: 1500px) {
156
+ display: none;
157
+ }
158
+
159
+ .styling-text {
160
+ @extend .font-label-large;
161
+ color: $color-grey-700;
162
+ padding: 4px;
163
+ border-radius: 4px;
164
+ transition: background-color 0.2s ease;
165
+
166
+ &:hover {
167
+ color: $color-grey-700 !important;
168
+ background-color: rgba(211, 211, 211, 0.5) !important;
169
+ }
170
+ }
171
+
172
+ .styling-dropdown-content {
173
+ position: absolute;
174
+ bottom: 100%;
175
+ left: 0;
176
+ background-color: white;
177
+ border: 1px solid #dee2e6;
178
+ border-radius: 6px;
179
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
180
+ z-index: 10035;
181
+ padding: 8px;
182
+ margin-bottom: 6px;
183
+ display: flex;
184
+ flex-direction: row;
185
+ gap: 8px;
186
+ flex-wrap: nowrap;
187
+ white-space: nowrap;
188
+
189
+ .format-button {
190
+ justify-content: center;
191
+ min-width: 24px;
192
+ height: 24px;
193
+ border-radius: 4px;
194
+ background-color: white;
195
+ border: 1px solid transparent;
196
+ flex-shrink: 0;
197
+ transition: background-color 0.2s ease;
198
+
199
+ .material-icons,
200
+ mat-icon {
201
+ margin-right: 0;
202
+ font-size: 24px;
203
+ color: $color-grey-700;
204
+ transition: none;
205
+ width: 24px;
206
+ height: 24px;
207
+ }
208
+
209
+ &:hover {
210
+ background-color: rgba(211, 211, 211, 0.5) !important;
211
+
212
+ .material-icons,
213
+ mat-icon {
214
+ color: $color-grey-700 !important;
215
+ }
216
+ }
217
+
218
+ &:hover.active .material-icons,
219
+ &:hover.active mat-icon,
220
+ &:hover .active-icon {
221
+ color: $color-green-500 !important;
222
+ }
223
+
224
+ &.active .material-icons,
225
+ &.active mat-icon,
226
+ .active-icon {
227
+ color: $color-green-500;
228
+ }
229
+
230
+ &.active {
231
+ color: $color-green-500;
232
+ }
233
+ }
234
+ }
235
+ }
236
+
237
+ .text-formatting-dropdown {
238
+ position: relative;
239
+ display: inline-block;
240
+ cursor: pointer;
241
+ z-index: 1000;
242
+
243
+ @media (min-width: 1500px) {
244
+ display: none;
245
+ }
246
+
247
+ .text-formatting-text {
248
+ @extend .font-label-large;
249
+ color: $color-grey-700;
250
+ padding: 4px;
251
+ border-radius: 4px;
252
+ transition: background-color 0.2s ease;
253
+
254
+ &:hover {
255
+ color: $color-grey-700 !important;
256
+ background-color: rgba(211, 211, 211, 0.5) !important;
257
+ }
258
+ }
259
+
260
+ .text-formatting-dropdown-content {
261
+ position: absolute;
262
+ bottom: 100%;
263
+ left: 0;
264
+ background-color: white;
265
+ border: 1px solid #dee2e6;
266
+ border-radius: 6px;
267
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
268
+ z-index: 10035;
269
+ min-width: auto;
270
+ padding: 8px;
271
+ margin-bottom: 6px;
272
+ display: flex;
273
+ flex-direction: row;
274
+ gap: 8px;
275
+ flex-wrap: nowrap;
276
+ white-space: nowrap;
277
+ align-items: center;
278
+
279
+ .format-button {
280
+ justify-content: center;
281
+ border-radius: 4px;
282
+ flex-shrink: 0;
283
+ white-space: nowrap;
284
+ background-color: white;
285
+ border: 1px solid transparent;
286
+ min-width: 24px;
287
+ height: 24px;
288
+ transition: background-color 0.2s ease;
289
+
290
+ .material-icons,
291
+ mat-icon {
292
+ margin-right: 0;
293
+ font-size: 18px;
294
+ color: $color-grey-700;
295
+ transition: none;
296
+ width: 18px;
297
+ height: 18px;
298
+ }
299
+
300
+ &:hover {
301
+ background-color: rgba(211, 211, 211, 0.5) !important;
302
+
303
+ .material-icons,
304
+ mat-icon {
305
+ color: $color-grey-700 !important;
306
+ }
307
+ }
308
+
309
+ &:hover.active .material-icons,
310
+ &:hover.active mat-icon,
311
+ &:hover .active-icon {
312
+ color: $color-green-500 !important;
313
+ }
314
+
315
+ &.active .material-icons,
316
+ &.active mat-icon,
317
+ .active-icon {
318
+ color: $color-green-500;
319
+ }
320
+
321
+ &.active {
322
+ color: $color-green-500;
323
+ }
324
+ }
325
+ }
326
+ }
327
+
328
+ .history-controls {
329
+ display: flex;
330
+ align-items: center;
331
+ gap: 8px;
332
+ }
333
+ }
334
+
335
+ .editor-content {
336
+ width: 100%;
337
+ min-height: 100px;
338
+ padding: 12px 16px;
339
+ background-color: #F7F9FE;
340
+ outline: none;
341
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
342
+ font-size: 14px;
343
+ line-height: 1.6;
344
+ color: $color-grey-700;
345
+ overflow-y: auto;
346
+ border: 1px solid #ccc;
347
+ border-top: 0;
348
+ border-bottom-right-radius: 8px;
349
+ border-bottom-left-radius: 8px;
350
+
351
+ &:focus {
352
+ background-color: #F7F9FE;
353
+ }
354
+
355
+ &:focus-visible {
356
+ outline: none !important;
357
+ }
358
+
359
+ &:empty::before {
360
+ content: 'Start typing here...';
361
+ color: #adb5bd;
362
+ font-style: italic;
363
+ }
364
+
365
+ p {
366
+ margin: 0 0 12px 0;
367
+
368
+ &:last-child {
369
+ margin-bottom: 0;
370
+ }
371
+ }
372
+
373
+ b,
374
+ strong {
375
+ font-weight: 600;
376
+ color: #2c3e50;
377
+ }
378
+
379
+ i,
380
+ em {
381
+ font-style: italic;
382
+ color: #34495e;
383
+ }
384
+
385
+ u,
386
+ ins {
387
+ text-decoration: underline;
388
+ text-decoration-color: #000000;
389
+ text-decoration-thickness: 2px;
390
+ }
391
+
392
+ *::selection {
393
+ background-color: rgba(55, 193, 206, 0.2);
394
+ }
395
+
396
+ table {
397
+ border-collapse: collapse;
398
+ width: 100%;
399
+ margin: 10px 0;
400
+ background-color: #F7F9FE;
401
+ table-layout: fixed;
402
+
403
+ td,
404
+ th {
405
+ border: 1px solid #ccc;
406
+ padding: 8px;
407
+ text-align: left;
408
+ vertical-align: top;
409
+ word-wrap: break-word;
410
+ word-break: break-word;
411
+ overflow-wrap: break-word;
412
+ white-space: normal;
413
+ max-width: 0;
414
+ background-color: #F7F9FE;
415
+ }
416
+
417
+ th {
418
+ background-color: #F7F9FE;
419
+ font-weight: 600;
420
+ }
421
+ }
422
+ }
423
+
424
+ .tag-hierarchy {
425
+ padding: 5px;
426
+ border-top: none;
427
+ background-color: #f9f9f9;
428
+ height: 25px;
429
+ border: 1px solid #ccc;
430
+ }
431
+
432
+ .cdk-overlay-pane {
433
+ width: fit-content !important;
434
+ min-width: fit-content !important;
435
+ transform: translate(0px) !important;
436
+ }
437
+
438
+ .mat-select-panel {
439
+ width: fit-content !important;
440
+ min-width: fit-content !important;
441
+ }
@@ -0,0 +1,21 @@
1
+ <div class="table-controls"><button class="format-button table-button" (click)="toggleTableDropdown()"
2
+ title="Table Operations" type="button"><mat-icon svgIcon="table" class="table-icon"></mat-icon></button>
3
+ <div *ngIf="showTableDropdown" class="table-dropdown">
4
+ <div class="table-row"><button type="button" class="table-btn" (click)="addTable($event)" title="Add table"
5
+ matTooltip="Add Table" matTooltipPosition="above"><mat-icon svgIcon="add-table"></mat-icon></button><button
6
+ type="button" class="table-btn" (click)="deleteTable($event)" title="Delete table" matTooltip="Delete Table"
7
+ matTooltipPosition="above"><mat-icon svgIcon="delete-table"></mat-icon></button><button type="button"
8
+ class="table-btn" (click)="addColumnLeft($event)" title="Column left" matTooltip="Add Column Left"
9
+ matTooltipPosition="above"><mat-icon svgIcon="column-left"></mat-icon></button><button type="button"
10
+ class="table-btn" (click)="addColumnRight($event)" title="Column right" matTooltip="Add Column Right"
11
+ matTooltipPosition="above"><mat-icon svgIcon="column-right"></mat-icon></button></div>
12
+ <div class="table-row"><button type="button" class="table-btn" (click)="addRowAbove($event)" title="Row top"
13
+ matTooltip="Add Row Above" matTooltipPosition="above"><mat-icon svgIcon="row-top"></mat-icon></button><button type="button" class="table-btn"
14
+ (click)="addRowBelow($event)" title="Row bottom" matTooltip="Add Row Below" matTooltipPosition="above"><mat-icon svgIcon="row-bottom"></mat-icon></button><button type="button" class="table-btn"
15
+ (click)="deleteCurrentRow($event)" title="Delete row" matTooltip="Delete Current Row"
16
+ matTooltipPosition="above"><mat-icon svgIcon="delete-row"></mat-icon></button><button
17
+ type="button" class="table-btn" (click)="deleteCurrentColumn($event)" title="Delete column"
18
+ matTooltip="Delete Current Column" matTooltipPosition="above"><mat-icon
19
+ svgIcon="delete-column"></mat-icon></button></div>
20
+ </div>
21
+ </div>
@@ -0,0 +1,33 @@
1
+ <mat-form-field class="mat_form" [ngClass]="[getSizeClass(), getCategoryClass()]" appearance="outline"
2
+ [attr.data-test-id]="dataTestId">
3
+
4
+ <mat-label>{{ labelText }}</mat-label>
5
+
6
+ <mat-date-range-input [rangePicker]="picker">
7
+ <input matStartDate [placeholder]="startPlaceholder" [value]="startDate" [disabled]="disabled" [required]="required"
8
+ [min]="minDate" [max]="endDate || maxDate" (dateInput)="onStartDateChange($event)"
9
+ (dateChange)="onStartDateChange($event)" [attr.data-testid]="dataTestId ? dataTestId + '-start' : null">
10
+ <input matEndDate [placeholder]="endPlaceholder" [value]="endDate" [disabled]="disabled" [required]="required"
11
+ [min]="startDate || minDate" [max]="maxDate" (dateInput)="onEndDateChange($event)"
12
+ (dateChange)="onEndDateChange($event)" [attr.data-testid]="dataTestId ? dataTestId + '-end' : null">
13
+ </mat-date-range-input>
14
+
15
+ <mat-datepicker-toggle matIconSuffix [for]="picker" [disabled]="disabled">
16
+ </mat-datepicker-toggle>
17
+
18
+ <mat-date-range-picker #picker [startAt]="startAt" [opened]="opened" [touchUi]="touchUi"
19
+ (openedChange)="onOpenedChange($event)" (selectedChange)="onDateRangeChange($event)">
20
+ </mat-date-range-picker>
21
+
22
+
23
+ </mat-form-field>
24
+
25
+ <!-- Range display and validation -->
26
+ <div *ngIf="startDate || endDate" class="range-display" [ngClass]="getSizeClass()">
27
+ <span class="range-text" [class.invalid]="!isRangeValid">
28
+ {{ displayText }}
29
+ </span>
30
+ <span *ngIf="!isRangeValid" class="error-message">
31
+ End date must be after start date
32
+ </span>
33
+ </div>