@byuhbll/components 7.3.3 → 7.4.0

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/index.d.ts CHANGED
@@ -946,6 +946,7 @@ interface FieldInputs {
946
946
  maxWidth?: string;
947
947
  minHeight?: string;
948
948
  maxHeight?: string;
949
+ wrapContent?: boolean;
949
950
  }
950
951
  /**
951
952
  * A flexible, reusable field (input) component that supports multiple states
@@ -1033,6 +1034,7 @@ declare class FieldComponent implements ControlValueAccessor {
1033
1034
  maxWidth?: string;
1034
1035
  minHeight?: string;
1035
1036
  maxHeight?: string;
1037
+ wrapContent: boolean;
1036
1038
  valueChange: EventEmitter<string>;
1037
1039
  iconBeforeClick: EventEmitter<void>;
1038
1040
  iconAfterClick: EventEmitter<void>;
@@ -1074,7 +1076,7 @@ declare class FieldComponent implements ControlValueAccessor {
1074
1076
  registerOnTouched(fn: () => void): void;
1075
1077
  setDisabledState(isDisabled: boolean): void;
1076
1078
  static ɵfac: i0.ɵɵFactoryDeclaration<FieldComponent, never>;
1077
- static ɵcmp: i0.ɵɵComponentDeclaration<FieldComponent, "lib-field", never, { "inputType": { "alias": "inputType"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "state": { "alias": "state"; "required": false; }; "status": { "alias": "status"; "required": false; }; "iconBefore": { "alias": "iconBefore"; "required": false; }; "iconAfter": { "alias": "iconAfter"; "required": false; }; "iconBeforeClickable": { "alias": "iconBeforeClickable"; "required": false; }; "iconAfterClickable": { "alias": "iconAfterClickable"; "required": false; }; "iconBeforeAction": { "alias": "iconBeforeAction"; "required": false; }; "iconAfterAction": { "alias": "iconAfterAction"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "value": { "alias": "value"; "required": false; }; "isFullText": { "alias": "isFullText"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "minWidth": { "alias": "minWidth"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; "minHeight": { "alias": "minHeight"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; }, { "valueChange": "valueChange"; "iconBeforeClick": "iconBeforeClick"; "iconAfterClick": "iconAfterClick"; "fieldFocus": "fieldFocus"; "fieldBlur": "fieldBlur"; }, never, ["lib-pre-tab", "lib-post-tab"], true, never>;
1079
+ static ɵcmp: i0.ɵɵComponentDeclaration<FieldComponent, "lib-field", never, { "inputType": { "alias": "inputType"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "state": { "alias": "state"; "required": false; }; "status": { "alias": "status"; "required": false; }; "iconBefore": { "alias": "iconBefore"; "required": false; }; "iconAfter": { "alias": "iconAfter"; "required": false; }; "iconBeforeClickable": { "alias": "iconBeforeClickable"; "required": false; }; "iconAfterClickable": { "alias": "iconAfterClickable"; "required": false; }; "iconBeforeAction": { "alias": "iconBeforeAction"; "required": false; }; "iconAfterAction": { "alias": "iconAfterAction"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "value": { "alias": "value"; "required": false; }; "isFullText": { "alias": "isFullText"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "minWidth": { "alias": "minWidth"; "required": false; }; "maxWidth": { "alias": "maxWidth"; "required": false; }; "minHeight": { "alias": "minHeight"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "wrapContent": { "alias": "wrapContent"; "required": false; }; }, { "valueChange": "valueChange"; "iconBeforeClick": "iconBeforeClick"; "iconAfterClick": "iconAfterClick"; "fieldFocus": "fieldFocus"; "fieldBlur": "fieldBlur"; }, never, ["lib-pre-tab", "[fieldPrefix]", "lib-post-tab"], true, never>;
1078
1080
  }
1079
1081
 
1080
1082
  type LabelType = 'none' | 'required' | 'optional';
@@ -1435,6 +1437,8 @@ interface DropdownInputs {
1435
1437
  disabled?: boolean;
1436
1438
  ariaLabel?: string;
1437
1439
  value?: string;
1440
+ multiple?: boolean;
1441
+ selectedValues?: string[];
1438
1442
  searchable?: boolean;
1439
1443
  }
1440
1444
  /**
@@ -1443,6 +1447,7 @@ interface DropdownInputs {
1443
1447
  * - Searchable input to filter options
1444
1448
  * - Keyboard navigation support
1445
1449
  * - Optional label with help icon
1450
+ * - Optional multiple selection with removable chips
1446
1451
  * - Multiple states (default, focused, error, etc.)
1447
1452
  *
1448
1453
  * @example
@@ -1474,7 +1479,7 @@ interface DropdownInputs {
1474
1479
  * </lib-dropdown>
1475
1480
  * ```
1476
1481
  */
1477
- declare class DropdownComponent implements ControlValueAccessor, OnInit {
1482
+ declare class DropdownComponent implements ControlValueAccessor, OnInit, OnChanges {
1478
1483
  label?: string;
1479
1484
  inputId?: string;
1480
1485
  labelType: 'none' | 'required' | 'optional';
@@ -1486,7 +1491,10 @@ declare class DropdownComponent implements ControlValueAccessor, OnInit {
1486
1491
  disabled: boolean;
1487
1492
  ariaLabel?: string;
1488
1493
  searchable: boolean;
1494
+ multiple: boolean;
1495
+ selectedValues: string[];
1489
1496
  valueChange: EventEmitter<string>;
1497
+ selectedValuesChange: EventEmitter<string[]>;
1490
1498
  helpIconClick: EventEmitter<void>;
1491
1499
  dropdownInput?: FieldComponent;
1492
1500
  dropdownMenuItems?: ElementRef;
@@ -1500,14 +1508,29 @@ declare class DropdownComponent implements ControlValueAccessor, OnInit {
1500
1508
  private onChange;
1501
1509
  private onTouched;
1502
1510
  ngOnInit(): void;
1511
+ ngOnChanges(changes: SimpleChanges): void;
1503
1512
  /**
1504
1513
  * Gets the display text for the selected value
1505
1514
  */
1506
1515
  get displayText(): string;
1516
+ /**
1517
+ * Gets options currently selected in multiple mode, preserving selectedValues order.
1518
+ */
1519
+ get selectedOptions(): DropdownOption[];
1520
+ /**
1521
+ * Checks whether an option is currently selected.
1522
+ * @param {DropdownOption} option option to check
1523
+ * @returns {boolean} whether the option is selected
1524
+ */
1525
+ isOptionSelected(option: DropdownOption): boolean;
1507
1526
  /**
1508
1527
  * Toggles dropdown open/closed state
1509
1528
  */
1510
1529
  toggleDropdown(): void;
1530
+ /**
1531
+ * Focuses the inner input before toggling so keyboard navigation works after mouse opens.
1532
+ */
1533
+ onFieldClick(): void;
1511
1534
  /**
1512
1535
  * Handles input changes for search functionality
1513
1536
  */
@@ -1516,6 +1539,14 @@ declare class DropdownComponent implements ControlValueAccessor, OnInit {
1516
1539
  * Filters options based on search text
1517
1540
  */
1518
1541
  filterOptions(): void;
1542
+ /**
1543
+ * Updates filtered options based on search text and current multiple selection.
1544
+ */
1545
+ private updateFilteredOptions;
1546
+ /**
1547
+ * Clears search text and resets the filtered options.
1548
+ */
1549
+ private resetSearch;
1519
1550
  /**
1520
1551
  * Scrolls the highlighted item into view
1521
1552
  */
@@ -1524,6 +1555,14 @@ declare class DropdownComponent implements ControlValueAccessor, OnInit {
1524
1555
  * Selects an option from the dropdown
1525
1556
  */
1526
1557
  selectOption(option: DropdownOption): void;
1558
+ /**
1559
+ * Removes a selected value in multiple mode.
1560
+ */
1561
+ removeSelectedOption(value: string, event?: MouseEvent): void;
1562
+ /**
1563
+ * Emits the current multiple selection through Angular forms and component output.
1564
+ */
1565
+ private emitSelectedValues;
1527
1566
  /**
1528
1567
  * Handles keyboard navigation
1529
1568
  */
@@ -1540,12 +1579,12 @@ declare class DropdownComponent implements ControlValueAccessor, OnInit {
1540
1579
  * Closes dropdown when clicking outside
1541
1580
  */
1542
1581
  onDocumentClick(event: MouseEvent): void;
1543
- writeValue(value: string): void;
1544
- registerOnChange(fn: (value: string) => void): void;
1582
+ writeValue(value: string | string[] | null): void;
1583
+ registerOnChange(fn: (value: string | string[]) => void): void;
1545
1584
  registerOnTouched(fn: () => void): void;
1546
1585
  setDisabledState(isDisabled: boolean): void;
1547
1586
  static ɵfac: i0.ɵɵFactoryDeclaration<DropdownComponent, never>;
1548
- static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "lib-dropdown", never, { "label": { "alias": "label"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "labelType": { "alias": "labelType"; "required": false; }; "showHelpIcon": { "alias": "showHelpIcon"; "required": false; }; "subtext": { "alias": "subtext"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "options": { "alias": "options"; "required": false; }; "state": { "alias": "state"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; }, { "valueChange": "valueChange"; "helpIconClick": "helpIconClick"; }, never, never, true, never>;
1587
+ static ɵcmp: i0.ɵɵComponentDeclaration<DropdownComponent, "lib-dropdown", never, { "label": { "alias": "label"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "labelType": { "alias": "labelType"; "required": false; }; "showHelpIcon": { "alias": "showHelpIcon"; "required": false; }; "subtext": { "alias": "subtext"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "options": { "alias": "options"; "required": false; }; "state": { "alias": "state"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "selectedValues": { "alias": "selectedValues"; "required": false; }; }, { "valueChange": "valueChange"; "selectedValuesChange": "selectedValuesChange"; "helpIconClick": "helpIconClick"; }, never, never, true, never>;
1549
1588
  }
1550
1589
 
1551
1590
  export { ADVANCED_SEARCH_FIELD_MAP, ADVANCED_SEARCH_OPTIONS, ADVANCED_SEARCH_QUALIFIER_MAP, ButtonComponent, ButtonGroupComponent, ButtonGroupItemComponent, CheckboxComponent, DropdownComponent, FieldComponent, HbllFooterComponent, HbllHeaderComponent, HbllItemTypeIconPipe, HeaderWithImpersonationComponent, ImpersonateModalComponent, ImpersonateUserPipe, ImpersonationBannerComponent, LIBRARY_HOURS_API_URL, LabelComponent, LinkComponent, PostTabComponent, PreTabComponent, RadioButtonComponent, SnackbarComponent, SnackbarService, SsSearchBarComponent, StatusButtonComponent, TabBarComponent, TabItemComponent, defaultOidcBaseUri, defaultOidcDefaultIdp, getUserStatusFromRoles, isAdvancedSearchExternalFieldOption, isAdvancedSearchFieldOption, isAdvancedSearchLocalFieldOption, isSearchScope };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@byuhbll/components",
3
- "version": "7.3.3",
3
+ "version": "7.4.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.15",
6
6
  "@angular/core": "^20.3.15"