commons-shared-web-ui 0.0.39 → 0.0.41

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 (29) hide show
  1. package/fesm2022/commons-shared-web-ui.mjs +2039 -1409
  2. package/fesm2022/commons-shared-web-ui.mjs.map +1 -1
  3. package/index.d.ts +127 -6
  4. package/package.json +1 -1
  5. package/src/lib/modules/alert/alert.theme.scss +84 -84
  6. package/src/lib/modules/button/button.theme.scss +120 -120
  7. package/src/lib/modules/configurable-form/configurable-form.theme.scss +77 -77
  8. package/src/lib/modules/confirmation-modal/confirmation-modal.theme.scss +86 -86
  9. package/src/lib/modules/filter/filter.theme.scss +91 -91
  10. package/src/lib/modules/filter-sidebar/filter-sidebar.theme.scss +37 -37
  11. package/src/lib/modules/filter-table-selector/filter-table-selector.theme.scss +36 -36
  12. package/src/lib/modules/form-builder/form-builder.theme.scss +212 -212
  13. package/src/lib/modules/form-components/components/checkbox/_theme.scss +62 -62
  14. package/src/lib/modules/form-components/components/datepicker/_theme.scss +81 -81
  15. package/src/lib/modules/form-components/components/dropdown/_theme.scss +90 -90
  16. package/src/lib/modules/form-components/components/input/_theme.scss +76 -76
  17. package/src/lib/modules/form-components/components/radio/_theme.scss +60 -60
  18. package/src/lib/modules/form-components/components/search/_theme.scss +72 -72
  19. package/src/lib/modules/form-components/components/toggle/_theme.scss +44 -44
  20. package/src/lib/modules/form-components/form-components.theme.scss +24 -24
  21. package/src/lib/modules/nav/nav.theme.scss +86 -86
  22. package/src/lib/modules/pagination/pagination.theme.scss +66 -66
  23. package/src/lib/modules/side-nav/side-nav.theme.scss +111 -111
  24. package/src/lib/modules/smart-form/smart-form.theme.scss +889 -889
  25. package/src/lib/modules/smart-table/smart-table.theme.scss +335 -323
  26. package/src/lib/modules/snackbar/snackbar.theme.scss +93 -93
  27. package/src/lib/modules/summary-card/summary-card.theme.scss +175 -175
  28. package/src/lib/styles/global.scss +151 -134
  29. package/src/lib/styles/utilities.scss +250 -250
package/index.d.ts CHANGED
@@ -9,7 +9,7 @@ import { HttpClient, HttpHeaders } from '@angular/common/http';
9
9
  import * as i3$2 from '@angular/router';
10
10
  import { Router, ActivatedRoute } from '@angular/router';
11
11
  import { BehaviorSubject, Subject, Observable } from 'rxjs';
12
- import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
12
+ import { DomSanitizer, SafeResourceUrl, SafeHtml } from '@angular/platform-browser';
13
13
  import * as i1 from '@angular/material/card';
14
14
  import * as i3 from '@angular/material/checkbox';
15
15
  import * as i4 from '@angular/material/divider';
@@ -887,6 +887,12 @@ declare class FieldConfiguratorComponent implements OnChanges {
887
887
  * Defaults to true (show everything).
888
888
  */
889
889
  showOptionConfig: boolean;
890
+ /**
891
+ * Field names that must always remain enabled and cannot be toggled off.
892
+ * When a locked field is selected, the IS ENABLED / READ ONLY / DISABLED
893
+ * controls are hidden so the user cannot accidentally disable the field.
894
+ */
895
+ lockedFieldNames: string[];
890
896
  readonly store: FieldConfiguratorService;
891
897
  private readonly cdr;
892
898
  private readonly schemaMapOverride;
@@ -903,7 +909,7 @@ declare class FieldConfiguratorComponent implements OnChanges {
903
909
  onTypeChange(builderType: string): void;
904
910
  private _emitChange;
905
911
  static ɵfac: i0.ɵɵFactoryDeclaration<FieldConfiguratorComponent, never>;
906
- static ɵcmp: i0.ɵɵComponentDeclaration<FieldConfiguratorComponent, "lib-field-configurator", never, { "schema": { "alias": "schema"; "required": true; }; "showOptionConfig": { "alias": "showOptionConfig"; "required": false; }; }, { "schemaChange": "schemaChange"; }, never, never, false, never>;
912
+ static ɵcmp: i0.ɵɵComponentDeclaration<FieldConfiguratorComponent, "lib-field-configurator", never, { "schema": { "alias": "schema"; "required": true; }; "showOptionConfig": { "alias": "showOptionConfig"; "required": false; }; "lockedFieldNames": { "alias": "lockedFieldNames"; "required": false; }; }, { "schemaChange": "schemaChange"; }, never, never, false, never>;
907
913
  }
908
914
 
909
915
  declare class GroupNodeComponent {
@@ -1027,6 +1033,12 @@ declare class ConfiguratorConfigPanelComponent implements OnChanges {
1027
1033
  * option URLs — these are pre-filled by the developer in the master JSON.
1028
1034
  */
1029
1035
  showOptionConfig: boolean;
1036
+ /**
1037
+ * Field names that are mandatory and cannot be disabled.
1038
+ * When the currently selected field is in this list, IS ENABLED / READ ONLY /
1039
+ * DISABLED controls are hidden from the Field State step.
1040
+ */
1041
+ lockedFieldNames: string[];
1030
1042
  /** Exposed to the template for the native type-switcher select */
1031
1043
  readonly switchableFieldTypes: {
1032
1044
  label: string;
@@ -1073,10 +1085,15 @@ declare class ConfiguratorConfigPanelComponent implements OnChanges {
1073
1085
  * Also removes entire sections that become empty after filtering.
1074
1086
  */
1075
1087
  private _filterSchemaForOptionConfig;
1088
+ /**
1089
+ * Remove IS ENABLED, READ ONLY, and DISABLED controls from the config schema
1090
+ * when the selected field is a mandatory/locked field.
1091
+ */
1092
+ private _filterSchemaForLockedField;
1076
1093
  private _extractInitialValuesFromField;
1077
1094
  private _buildPatchFromFormData;
1078
1095
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfiguratorConfigPanelComponent, never>;
1079
- static ɵcmp: i0.ɵɵComponentDeclaration<ConfiguratorConfigPanelComponent, "lib-configurator-config-panel", never, { "selectedField": { "alias": "selectedField"; "required": false; }; "selectedFieldInfo": { "alias": "selectedFieldInfo"; "required": false; }; "builderFieldType": { "alias": "builderFieldType"; "required": false; }; "fieldTypeSchemaMap": { "alias": "fieldTypeSchemaMap"; "required": false; }; "showOptionConfig": { "alias": "showOptionConfig"; "required": false; }; }, { "configChange": "configChange"; "typeChange": "typeChange"; }, never, never, false, never>;
1096
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConfiguratorConfigPanelComponent, "lib-configurator-config-panel", never, { "selectedField": { "alias": "selectedField"; "required": false; }; "selectedFieldInfo": { "alias": "selectedFieldInfo"; "required": false; }; "builderFieldType": { "alias": "builderFieldType"; "required": false; }; "fieldTypeSchemaMap": { "alias": "fieldTypeSchemaMap"; "required": false; }; "showOptionConfig": { "alias": "showOptionConfig"; "required": false; }; "lockedFieldNames": { "alias": "lockedFieldNames"; "required": false; }; }, { "configChange": "configChange"; "typeChange": "typeChange"; }, never, never, false, never>;
1080
1097
  }
1081
1098
 
1082
1099
  declare class SmartFormController {
@@ -1207,7 +1224,10 @@ declare class SmartFormComponent implements OnInit, OnChanges, OnDestroy {
1207
1224
  private _markReady;
1208
1225
  ngOnChanges(changes: SimpleChanges): void;
1209
1226
  ngOnDestroy(): void;
1227
+ /** Public backward-compatible entry point — delegates to _startForm. */
1210
1228
  parseFormJson(): void;
1229
+ private _startForm;
1230
+ private _applySchema;
1211
1231
  initializeForm(): void;
1212
1232
  collectFields(fields: FieldConfig[]): void;
1213
1233
  handleSubmit(): void;
@@ -1272,6 +1292,16 @@ declare class SmartFormComponent implements OnInit, OnChanges, OnDestroy {
1272
1292
  isButtonDisabled(btn: ActionButtonConfig): boolean;
1273
1293
  private getButtonByActionKind;
1274
1294
  private navigateTo;
1295
+ private _hasHierarchyDynamic;
1296
+ private _expandHierarchyNodes;
1297
+ private _expandNodeRecursive;
1298
+ private _expandSingleNode;
1299
+ private _normalizeHierarchyCfg;
1300
+ private _fetchHierarchyTemplate;
1301
+ private _buildHierarchyFields;
1302
+ private _getPathValue;
1303
+ private _codeToFieldName;
1304
+ private _codeToLabel;
1275
1305
  static ɵfac: i0.ɵɵFactoryDeclaration<SmartFormComponent, never>;
1276
1306
  static ɵcmp: i0.ɵɵComponentDeclaration<SmartFormComponent, "lib-smart-form", never, { "formJson": { "alias": "formJson"; "required": false; }; "initialValues": { "alias": "initialValues"; "required": false; }; "enableDraftAutoSave": { "alias": "enableDraftAutoSave"; "required": false; }; "labels": { "alias": "labels"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "readOnly": { "alias": "readOnly"; "required": false; }; }, { "submit": "submit"; "draftSave": "draftSave"; "actionClick": "actionClick"; "valueChange": "valueChange"; "fileAdded": "fileAdded"; "fileUploadFinished": "fileUploadFinished"; "fileRemoved": "fileRemoved"; "stepChange": "stepChange"; }, never, never, false, never>;
1277
1307
  }
@@ -1430,6 +1460,12 @@ declare class FormFieldComponent implements OnInit, OnDestroy {
1430
1460
  label: string;
1431
1461
  code: any;
1432
1462
  }[];
1463
+ /**
1464
+ * Component-local option list for DROPDOWN/RADIO/CHECKBOX/CHIP fields.
1465
+ * Using a local copy prevents shared-config mutation when the same field config
1466
+ * object is reused across multiple allowMulti repeater instances.
1467
+ */
1468
+ localOptionList: any[];
1433
1469
  /** Cache of the latest dependency parameters for server-side autocomplete filtering */
1434
1470
  private _latestDependencyValues;
1435
1471
  /** For GROUP fields with allowMulti = true */
@@ -1443,6 +1479,8 @@ declare class FormFieldComponent implements OnInit, OnDestroy {
1443
1479
  * cached values from bleeding into new instances.
1444
1480
  *
1445
1481
  * Enhanced with isEditing and isSaved flags for the 'multiSave' card UI.
1482
+ * Each instance gets its own rowController so cascading dropdowns work
1483
+ * independently within each repeater row.
1446
1484
  */
1447
1485
  instanceList: {
1448
1486
  id: number;
@@ -1451,6 +1489,7 @@ declare class FormFieldComponent implements OnInit, OnDestroy {
1451
1489
  isEditing?: boolean;
1452
1490
  isSaved?: boolean;
1453
1491
  isExpanded?: boolean;
1492
+ rowController: SmartFormController;
1454
1493
  }[];
1455
1494
  private _nextInstanceId;
1456
1495
  /** Tracks open accordion panels for standard (non-multiSave) GROUP repeaters. */
@@ -1941,6 +1980,7 @@ interface DropdownConfig {
1941
1980
  }
1942
1981
 
1943
1982
  declare class DropdownComponent implements ControlValueAccessor, OnInit, OnChanges {
1983
+ private el;
1944
1984
  config?: DropdownConfig;
1945
1985
  labels?: DropdownLabels;
1946
1986
  options: DropdownOption[];
@@ -1976,13 +2016,20 @@ declare class DropdownComponent implements ControlValueAccessor, OnInit, OnChang
1976
2016
  selectionChange: EventEmitter<any>;
1977
2017
  viewport?: CdkVirtualScrollViewport;
1978
2018
  searchInput?: ElementRef;
2019
+ triggerEl?: ElementRef;
1979
2020
  filteredOptions: DropdownOption[];
1980
2021
  searchTerm: string;
1981
2022
  value: any;
1982
2023
  isOpen: boolean;
1983
2024
  focusedIndex: number;
2025
+ menuPosition: {
2026
+ top: number;
2027
+ left: number;
2028
+ width: number;
2029
+ };
1984
2030
  onChange: (value: any) => void;
1985
2031
  onTouched: () => void;
2032
+ constructor(el: ElementRef);
1986
2033
  ngOnInit(): void;
1987
2034
  ngOnChanges(changes: SimpleChanges): void;
1988
2035
  private get validOptions();
@@ -3182,6 +3229,18 @@ interface TableOption {
3182
3229
  label: string;
3183
3230
  value: any;
3184
3231
  }
3232
+ interface TableColumnSubField {
3233
+ key: string;
3234
+ label?: string;
3235
+ dataType: 'text' | 'number' | 'email' | 'select' | 'date';
3236
+ placeholder?: string;
3237
+ editable?: boolean;
3238
+ options?: TableOption[];
3239
+ editConfig?: {
3240
+ disabled?: boolean;
3241
+ defaultValue?: any;
3242
+ };
3243
+ }
3185
3244
  interface TableColumn {
3186
3245
  key: string;
3187
3246
  label: string;
@@ -3201,6 +3260,11 @@ interface TableColumn {
3201
3260
  dateFormat?: string;
3202
3261
  clickAction?: 'route' | 'callback';
3203
3262
  clickRoute?: string;
3263
+ subFields?: TableColumnSubField[];
3264
+ editConfig?: {
3265
+ disabled?: boolean;
3266
+ defaultValue?: any;
3267
+ };
3204
3268
  }
3205
3269
  interface TableFilter {
3206
3270
  key: string;
@@ -3308,6 +3372,7 @@ interface TableConfig {
3308
3372
  stickyColumnCount?: number;
3309
3373
  token?: string;
3310
3374
  tokenHeader?: string;
3375
+ editingRowClass?: string;
3311
3376
  }
3312
3377
  interface SearchConfig {
3313
3378
  enabled: boolean;
@@ -3321,6 +3386,13 @@ interface TableLabels {
3321
3386
  noDataMessage?: string;
3322
3387
  itemsPerPageLabel?: string;
3323
3388
  defaultConfirmationMessage?: string;
3389
+ saveLabel?: string;
3390
+ cancelLabel?: string;
3391
+ addLabel?: string;
3392
+ /** Variant for the Add button (new row). Defaults to 'danger'. */
3393
+ addButtonVariant?: 'primary' | 'secondary' | 'outline' | 'danger' | 'warning' | 'success' | 'danger-outline';
3394
+ /** Variant for the Save button (edit row). Defaults to 'primary'. */
3395
+ saveButtonVariant?: 'primary' | 'secondary' | 'outline' | 'danger' | 'warning' | 'success' | 'danger-outline';
3324
3396
  }
3325
3397
  /**
3326
3398
  * Emitted by the SmartTableComponent when operating in external-data mode
@@ -3338,6 +3410,10 @@ interface TableDataChangeEvent {
3338
3410
  [key: string]: any;
3339
3411
  };
3340
3412
  }
3413
+ interface TableRowSaveEvent {
3414
+ row: any;
3415
+ isNew: boolean;
3416
+ }
3341
3417
 
3342
3418
  /**
3343
3419
  * Maps a SmartForm field name to its corresponding API query-param key.
@@ -3579,10 +3655,13 @@ declare class SmartTableComponent implements OnInit, OnChanges, AfterViewInit, O
3579
3655
  pageChange: EventEmitter<TableDataChangeEvent>;
3580
3656
  /** Emitted in external-data mode when the user types in the search box. */
3581
3657
  searchChange: EventEmitter<TableDataChangeEvent>;
3658
+ /** Emitted when an inline-edited or inline-added row is saved. */
3659
+ rowSave: EventEmitter<TableRowSaveEvent>;
3582
3660
  data: any[];
3583
3661
  totalItems: number;
3584
3662
  currentPage: number;
3585
3663
  loading: boolean;
3664
+ originalRowsCache: Map<any, any>;
3586
3665
  activeSort: {
3587
3666
  key: string;
3588
3667
  direction: 'ASC' | 'DESC';
@@ -3682,8 +3761,28 @@ declare class SmartTableComponent implements OnInit, OnChanges, AfterViewInit, O
3682
3761
  private getHeaders;
3683
3762
  toggleDropdown(id: string, event: Event, items: any[], row: any): void;
3684
3763
  closeDropdown(): void;
3764
+ onCancelRow(row: any, index: number): void;
3765
+ onSaveRow(row: any): void;
3766
+ /** Convert any parseable date value to a native Date object for mat-datepicker binding. */
3767
+ private toDateObject;
3768
+ /** Pre-process all date columns on a row before entering edit mode. */
3769
+ private prepareDateFieldsForEdit;
3770
+ /** Normalize Date objects back to ISO strings before sending payloads. */
3771
+ private normalizeDateFieldsForSave;
3685
3772
  static ɵfac: i0.ɵɵFactoryDeclaration<SmartTableComponent, never>;
3686
- static ɵcmp: i0.ɵɵComponentDeclaration<SmartTableComponent, "lib-smart-table", never, { "config": { "alias": "config"; "required": false; }; "tableData": { "alias": "tableData"; "required": false; }; "totalItemsCount": { "alias": "totalItemsCount"; "required": false; }; "selectedRows": { "alias": "selectedRows"; "required": false; }; }, { "action": "action"; "topAction": "topAction"; "filterChange": "filterChange"; "rowSelect": "rowSelect"; "columnClick": "columnClick"; "sortChange": "sortChange"; "pageChange": "pageChange"; "searchChange": "searchChange"; }, never, never, false, never>;
3773
+ static ɵcmp: i0.ɵɵComponentDeclaration<SmartTableComponent, "lib-smart-table", never, { "config": { "alias": "config"; "required": false; }; "tableData": { "alias": "tableData"; "required": false; }; "totalItemsCount": { "alias": "totalItemsCount"; "required": false; }; "selectedRows": { "alias": "selectedRows"; "required": false; }; }, { "action": "action"; "topAction": "topAction"; "filterChange": "filterChange"; "rowSelect": "rowSelect"; "columnClick": "columnClick"; "sortChange": "sortChange"; "pageChange": "pageChange"; "searchChange": "searchChange"; "rowSave": "rowSave"; }, never, never, false, never>;
3774
+ }
3775
+
3776
+ /**
3777
+ * Sanitizes and bypasses Angular's DomSanitizer security for HTML content.
3778
+ * Prevents execution of unsafe scripts/attributes while allowing safe rendering of formatting tags in [innerHTML].
3779
+ */
3780
+ declare class SafeHtmlPipe implements PipeTransform {
3781
+ private sanitizer;
3782
+ constructor(sanitizer: DomSanitizer);
3783
+ transform(value: string): SafeHtml | null;
3784
+ static ɵfac: i0.ɵɵFactoryDeclaration<SafeHtmlPipe, never>;
3785
+ static ɵpipe: i0.ɵɵPipeDeclaration<SafeHtmlPipe, "safeHtml", false>;
3687
3786
  }
3688
3787
 
3689
3788
  interface PaginationLabels {
@@ -3725,7 +3824,7 @@ declare class PaginationModule {
3725
3824
 
3726
3825
  declare class SmartTableModule {
3727
3826
  static ɵfac: i0.ɵɵFactoryDeclaration<SmartTableModule, never>;
3728
- static ɵmod: i0.ɵɵNgModuleDeclaration<SmartTableModule, [typeof SmartTableComponent], [typeof i2$1.CommonModule, typeof i3$1.FormsModule, typeof PaginationModule, typeof ButtonModule, typeof MaterialModule, typeof ConfirmationModalModule], [typeof SmartTableComponent]>;
3827
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SmartTableModule, [typeof SmartTableComponent, typeof SafeHtmlPipe], [typeof i2$1.CommonModule, typeof i3$1.FormsModule, typeof PaginationModule, typeof ButtonModule, typeof MaterialModule, typeof ConfirmationModalModule], [typeof SmartTableComponent]>;
3729
3828
  static ɵinj: i0.ɵɵInjectorDeclaration<SmartTableModule>;
3730
3829
  }
3731
3830
 
@@ -3866,6 +3965,28 @@ declare const DEFAULT_SIDE_NAV_TOOLTIP_POSITION = "right";
3866
3965
 
3867
3966
  declare function appendBaseUrlRecursively(obj: any, baseURL: string): void;
3868
3967
 
3968
+ interface HierarchyCfg {
3969
+ templateApiUrl: string;
3970
+ templateListPath: string | null;
3971
+ templateSelect: 'default' | 'first' | 'byCode';
3972
+ templateSelectField: string;
3973
+ templateSelectCode?: string;
3974
+ rootCodePath: string;
3975
+ templateCodePath: string;
3976
+ hierarchyListPath: string;
3977
+ parentField: string;
3978
+ childField: string;
3979
+ dataApiUrl: string;
3980
+ dataPath: string;
3981
+ labelPath: string;
3982
+ valuePath: string;
3983
+ colSpan: number;
3984
+ payloadPrefix: string;
3985
+ dependencyParam: string;
3986
+ nodes: Record<string, any>;
3987
+ branchSubType: string;
3988
+ }
3989
+
3869
3990
  declare class ValidationUtils {
3870
3991
  static email(): ValidatorFn;
3871
3992
  static phone(): ValidatorFn;
@@ -3914,4 +4035,4 @@ declare class SnackbarModule {
3914
4035
  }
3915
4036
 
3916
4037
  export { AlertComponent, AlertModule, ButtonComponent, ButtonDropdownComponent, ButtonDropdownModule, ButtonModule, CheckboxComponent, ConfigurableFormComponent, configurableForm_examples_d as ConfigurableFormExamples, ConfigurableFormModule, ConfirmationModalComponent, ConfirmationModalModule, DEFAULT_ITEMS_PER_PAGE, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_SIDE_NAV_TOOLTIP_POSITION, DatepickerComponent, DropdownComponent, ExpressionService, FieldConfiguratorComponent, FieldSelectionComponent, FilterComponent, FilterModule, FilterSidebarComponent, FilterSidebarModule, FilterTableSelectorComponent, FilterTableSelectorModule, FormBuilderModule, FormComponentsModule, InputComponent, MaterialModule, NAV_ORIENTATION_DEFAULT, NAV_VARIANT_DEFAULT, NavComponent, NavModule, PAGINATION_THEME_DARK, PAGINATION_THEME_DEFAULT, PaginationComponent, PaginationModule, RadioComponent, SearchComponent, SharedUiModule, SideNavComponent, SideNavModule, SmartFormComponent, SmartFormController, smartForm_examples_d as SmartFormExamples, SmartFormModule, SmartTableComponent, SmartTableModule, SnackbarComponent, SnackbarModule, SnackbarService, StringUtils, SummaryCardComponent, SummaryCardModule, ToggleComponent, ValidationUtils, appendBaseUrlRecursively, clearLocalStorage, clearSessionStorage, getLocalStorageItem, getSessionStorageItem, removeLocalStorageItem, removeSessionStorageItem, setLocalStorageItem, setSessionStorageItem, translateConfig };
3917
- export type { AlertLabels, AlertVariant, AttachmentConfig, ButtonLabels, ButtonVariant, CheckboxConfig, CheckboxLabels, CheckboxOption, ConfirmationModalConfig, DateConfig, DatePickerConfig, DatepickerLabels, DropdownAction, DropdownConfig, DropdownLabels, DropdownOption, EmailConfig, FieldConfig, FieldType, FilterChangeEvent, FilterConfig, FilterItem, FilterItemType, FilterOutput, FilterPanelConfig, FilterParamMap, FilterSearchConfig, FilterSidebarChangeEvent, FilterSidebarConfig, FilterSidebarOutput, FilterTableConfig, FilterTableSelectorConfig, FormConfig, FormField, FormOption, FormSchema, FormSection, GeneratedConfig, IconInput, InputConfig, InputLabels, InputType, JsonFieldConfig, JsonFormConfig, KeyType, LengthConstraint, LocationConfig, NavItem, NavStyleConfig, NestedStringConfig, NumberConfig, OptionConfig, OptionDTO, OptionItem, PaginationConfig, PaginationLabels, PhoneConfig, QueryParamsConfig, RadioConfig, RadioLabels, RadioOption, RangeConfig, RatingConfig, SearchConfig, SearchLabels, SectionConfig, SelectionConfig, SideNavItem, SideNavSection, SideNavStyleConfig, SnackbarConfig, SnackbarVariant, StepperConfig, SubmitConfig, SummaryCardConfig, SummaryCardLabels, SummaryCardMeta, TableAction, TableActionItem, TableColumn, TableConfig, TableDataChangeEvent, TableFilter, TableFilterChangeEvent, TableFilterColumn, TableFilterConfig, TableFilterItem, TableFilterLabels, TableFilterOutput, TableLabels, TableOption, TableTheme, TextConfig, ToggleConfig, ToggleLabels, UIConfig, UISubType, UIType, UploadedFile, ValidationResult, ValidationRules };
4038
+ export type { AlertLabels, AlertVariant, AttachmentConfig, ButtonLabels, ButtonVariant, CheckboxConfig, CheckboxLabels, CheckboxOption, ConfirmationModalConfig, DateConfig, DatePickerConfig, DatepickerLabels, DropdownAction, DropdownConfig, DropdownLabels, DropdownOption, EmailConfig, FieldConfig, FieldType, FilterChangeEvent, FilterConfig, FilterItem, FilterItemType, FilterOutput, FilterPanelConfig, FilterParamMap, FilterSearchConfig, FilterSidebarChangeEvent, FilterSidebarConfig, FilterSidebarOutput, FilterTableConfig, FilterTableSelectorConfig, FormConfig, FormField, FormOption, FormSchema, FormSection, GeneratedConfig, HierarchyCfg, IconInput, InputConfig, InputLabels, InputType, JsonFieldConfig, JsonFormConfig, KeyType, LengthConstraint, LocationConfig, NavItem, NavStyleConfig, NestedStringConfig, NumberConfig, OptionConfig, OptionDTO, OptionItem, PaginationConfig, PaginationLabels, PhoneConfig, QueryParamsConfig, RadioConfig, RadioLabels, RadioOption, RangeConfig, RatingConfig, SearchConfig, SearchLabels, SectionConfig, SelectionConfig, SideNavItem, SideNavSection, SideNavStyleConfig, SnackbarConfig, SnackbarVariant, StepperConfig, SubmitConfig, SummaryCardConfig, SummaryCardLabels, SummaryCardMeta, TableAction, TableActionItem, TableColumn, TableColumnSubField, TableConfig, TableDataChangeEvent, TableFilter, TableFilterChangeEvent, TableFilterColumn, TableFilterConfig, TableFilterItem, TableFilterLabels, TableFilterOutput, TableLabels, TableOption, TableRowSaveEvent, TableTheme, TextConfig, ToggleConfig, ToggleLabels, UIConfig, UISubType, UIType, UploadedFile, ValidationResult, ValidationRules };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "commons-shared-web-ui",
3
- "version": "0.0.39",
3
+ "version": "0.0.41",
4
4
  "peerDependencies": {
5
5
  "@angular/animations": "20.3.15",
6
6
  "@angular/cdk": "20.2.14",
@@ -1,85 +1,85 @@
1
- @use 'sass:map';
2
-
3
- $default-alert-config: (
4
- font-family: ('Roboto', sans-serif),
5
-
6
- // Structure (Default values in rem, assuming 16px root)
7
- padding: 1rem 2rem,
8
- // 16px 32px
9
- radius: 0.75rem,
10
- // 12px
11
- gap: 1rem,
12
- // 16px
13
-
14
- // Icon
15
- icon-size: 1.25rem,
16
- // 20px
17
- icon-margin-top: 0.125rem,
18
- // 2px
19
-
20
- // Text
21
- title-size: 1rem,
22
- // 16px
23
- title-line-height: 1.5rem,
24
- // 24px
25
- message-size: 0.875rem,
26
- // 14px
27
-
28
- // Info
29
- info-bg: #F1F3F4,
30
- info-color: #3C4043,
31
-
32
- // Warning
33
- warning-bg: #F9C80E1F,
34
- warning-color: #3C4043,
35
- // Default text color for warning usually dark
36
- warning-title-color: #3C4043,
37
- // Making title dark for better contrast with light yellow bg
38
- warning-shadow: none,
39
- // Removing shadow as per clean flat design, or keeping if specified. User said "warning-shadow" variant exists.
40
-
41
- // Success
42
- success-bg: #E6F4EA,
43
- // Light green similar to Info/Error pattern
44
- success-color: #16A34A,
45
-
46
- // Error
47
- error-bg: #FCE8E6,
48
- // Light red
49
- error-color: #D93025
50
- );
51
-
52
- @mixin alert-theme($user-config: ()) {
53
- $config: map.merge($default-alert-config, $user-config);
54
-
55
- --cc-alert-font-family: #{map.get($config, font-family)};
56
-
57
- // Structure
58
- --cc-alert-padding: #{map.get($config, padding)};
59
- --cc-alert-radius: #{map.get($config, radius)};
60
- --cc-alert-gap: #{map.get($config, gap)};
61
-
62
- // Icon
63
- --cc-alert-icon-size: #{map.get($config, icon-size)};
64
- --cc-alert-icon-margin-top: #{map.get($config, icon-margin-top)};
65
-
66
- // Text
67
- --cc-alert-title-size: #{map.get($config, title-size)};
68
- --cc-alert-title-line-height: #{map.get($config, title-line-height)};
69
- --cc-alert-message-size: #{map.get($config, message-size)};
70
-
71
- // Colors
72
- --cc-alert-info-bg: #{map.get($config, info-bg)};
73
- --cc-alert-info-color: #{map.get($config, info-color)};
74
-
75
- --cc-alert-warning-bg: #{map.get($config, warning-bg)};
76
- --cc-alert-warning-color: #{map.get($config, warning-color)};
77
- --cc-alert-warning-title-color: #{map.get($config, warning-title-color)};
78
- --cc-alert-warning-shadow: #{map.get($config, warning-shadow)};
79
- --cc-alert-success-bg: #{map.get($config, success-bg)};
80
- --cc-alert-success-color: #{map.get($config, success-color)};
81
-
82
- --cc-alert-error-bg: #{map.get($config, error-bg)};
83
- --cc-alert-error-color: #{map.get($config, error-color)};
84
- --cc-alert-warning-shadow: 0 0.25rem 0.25rem rgba(0, 0, 0, 0.25); // 0px 4px 4px
1
+ @use 'sass:map';
2
+
3
+ $default-alert-config: (
4
+ font-family: ('Roboto', sans-serif),
5
+
6
+ // Structure (Default values in rem, assuming 16px root)
7
+ padding: 1rem 2rem,
8
+ // 16px 32px
9
+ radius: 0.75rem,
10
+ // 12px
11
+ gap: 1rem,
12
+ // 16px
13
+
14
+ // Icon
15
+ icon-size: 1.25rem,
16
+ // 20px
17
+ icon-margin-top: 0.125rem,
18
+ // 2px
19
+
20
+ // Text
21
+ title-size: 1rem,
22
+ // 16px
23
+ title-line-height: 1.5rem,
24
+ // 24px
25
+ message-size: 0.875rem,
26
+ // 14px
27
+
28
+ // Info
29
+ info-bg: #F1F3F4,
30
+ info-color: #3C4043,
31
+
32
+ // Warning
33
+ warning-bg: #F9C80E1F,
34
+ warning-color: #3C4043,
35
+ // Default text color for warning usually dark
36
+ warning-title-color: #3C4043,
37
+ // Making title dark for better contrast with light yellow bg
38
+ warning-shadow: none,
39
+ // Removing shadow as per clean flat design, or keeping if specified. User said "warning-shadow" variant exists.
40
+
41
+ // Success
42
+ success-bg: #E6F4EA,
43
+ // Light green similar to Info/Error pattern
44
+ success-color: #16A34A,
45
+
46
+ // Error
47
+ error-bg: #FCE8E6,
48
+ // Light red
49
+ error-color: #D93025
50
+ );
51
+
52
+ @mixin alert-theme($user-config: ()) {
53
+ $config: map.merge($default-alert-config, $user-config);
54
+
55
+ --cc-alert-font-family: #{map.get($config, font-family)};
56
+
57
+ // Structure
58
+ --cc-alert-padding: #{map.get($config, padding)};
59
+ --cc-alert-radius: #{map.get($config, radius)};
60
+ --cc-alert-gap: #{map.get($config, gap)};
61
+
62
+ // Icon
63
+ --cc-alert-icon-size: #{map.get($config, icon-size)};
64
+ --cc-alert-icon-margin-top: #{map.get($config, icon-margin-top)};
65
+
66
+ // Text
67
+ --cc-alert-title-size: #{map.get($config, title-size)};
68
+ --cc-alert-title-line-height: #{map.get($config, title-line-height)};
69
+ --cc-alert-message-size: #{map.get($config, message-size)};
70
+
71
+ // Colors
72
+ --cc-alert-info-bg: #{map.get($config, info-bg)};
73
+ --cc-alert-info-color: #{map.get($config, info-color)};
74
+
75
+ --cc-alert-warning-bg: #{map.get($config, warning-bg)};
76
+ --cc-alert-warning-color: #{map.get($config, warning-color)};
77
+ --cc-alert-warning-title-color: #{map.get($config, warning-title-color)};
78
+ --cc-alert-warning-shadow: #{map.get($config, warning-shadow)};
79
+ --cc-alert-success-bg: #{map.get($config, success-bg)};
80
+ --cc-alert-success-color: #{map.get($config, success-color)};
81
+
82
+ --cc-alert-error-bg: #{map.get($config, error-bg)};
83
+ --cc-alert-error-color: #{map.get($config, error-color)};
84
+ --cc-alert-warning-shadow: 0 0.25rem 0.25rem rgba(0, 0, 0, 0.25); // 0px 4px 4px
85
85
  }