@agorapulse/ui-components 20.4.10 → 20.4.12

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.
@@ -1,34 +1,32 @@
1
1
  import { AvatarNetwork } from '@agorapulse/ui-components/avatar';
2
2
  import { Period } from '@agorapulse/ui-components/datepicker';
3
3
  import dayjs from 'dayjs';
4
+ import { SelectLabelSingleDisplayType } from '@agorapulse/ui-components/select';
4
5
  import * as _angular_core from '@angular/core';
5
6
  import { TemplateRef } from '@angular/core';
6
7
  import { DropdownOverlay } from '@agorapulse/ui-components/dropdown-base';
7
8
 
8
- type FilterType = 'checkbox' | 'radio' | 'toggle' | 'select' | 'date-range';
9
- interface FilterItemCheckbox {
9
+ type FilterDropdownType = 'checkbox' | 'radio' | 'toggle' | 'select' | 'date-range';
10
+ interface FilterDropdownItemCheckbox {
10
11
  label: string;
11
12
  name: string;
12
13
  checked?: boolean;
13
14
  disabled?: boolean;
14
15
  indeterminate?: boolean;
15
16
  }
16
- interface FilterItemRadio {
17
+ interface FilterDropdownItemRadio {
17
18
  label: string;
18
19
  radioId: string;
19
20
  value: unknown;
20
21
  disabled?: boolean;
21
22
  }
22
- interface FilterItemToggle {
23
+ interface FilterDropdownItemToggle {
23
24
  label: string;
24
25
  name: string;
25
26
  checked?: boolean;
26
27
  disabled?: boolean;
27
- confirm?: boolean;
28
- confirmMessage?: string;
29
- confirmTitle?: string;
30
28
  }
31
- interface FilterItemSelect {
29
+ interface FilterDropdownItemSelect {
32
30
  text: string;
33
31
  caption?: string;
34
32
  avatarUrl?: string;
@@ -38,7 +36,34 @@ interface FilterItemSelect {
38
36
  network?: AvatarNetwork;
39
37
  dividerEnabled?: boolean;
40
38
  }
41
- interface FilterGroupBase {
39
+ interface FilterDropdownValueCheckbox {
40
+ filterType: 'checkbox';
41
+ /** Names of the checked items */
42
+ selected: string[];
43
+ }
44
+ interface FilterDropdownValueRadio {
45
+ filterType: 'radio';
46
+ selected: unknown;
47
+ }
48
+ interface FilterDropdownValueToggle {
49
+ filterType: 'toggle';
50
+ checked: boolean;
51
+ }
52
+ interface FilterDropdownValueSelect {
53
+ filterType: 'select';
54
+ /** Indices of selected items */
55
+ selected: number[];
56
+ }
57
+ interface FilterDropdownValueDateRange {
58
+ filterType: 'date-range';
59
+ selectedPeriod?: Period;
60
+ }
61
+ type FilterDropdownValue = FilterDropdownValueCheckbox | FilterDropdownValueRadio | FilterDropdownValueToggle | FilterDropdownValueSelect | FilterDropdownValueDateRange;
62
+ /** The output emitted by filter-dropdown on apply: a map of filter key → value */
63
+ type FilterDropdownOutput = Record<string, FilterDropdownValue>;
64
+ interface FilterDropdownGroupBase {
65
+ /** Unique key to identify this filter in the output */
66
+ key: string;
42
67
  /** The title of the filter group to display in the UI */
43
68
  title: string;
44
69
  /** Whether the filter group is expanded (open) or collapsed by default. Only applicable if `closable` is true. */
@@ -50,46 +75,84 @@ interface FilterGroupBase {
50
75
  /** */
51
76
  placeholder?: string;
52
77
  }
53
- interface FilterGroupCheckbox extends FilterGroupBase {
54
- /** The type of the FilterGroupBase */
78
+ interface FilterDropdownGroupCheckbox extends FilterDropdownGroupBase {
79
+ /** The type of the FilterDropdownGroupBase */
55
80
  filterType: 'checkbox';
56
- items: FilterItemCheckbox[];
81
+ items: FilterDropdownItemCheckbox[];
82
+ defaultSelected?: string[];
57
83
  }
58
- interface FilterGroupRadio extends FilterGroupBase {
59
- /** The type of the FilterGroupBase */
84
+ interface FilterDropdownGroupRadio extends FilterDropdownGroupBase {
85
+ /** The type of the FilterDropdownGroupBase */
60
86
  filterType: 'radio';
61
- items: FilterItemRadio[];
87
+ items: FilterDropdownItemRadio[];
88
+ defaultSelected?: unknown;
62
89
  }
63
- interface FilterGroupToggle extends FilterGroupBase {
64
- /** The type of the FilterGroupBase */
90
+ interface FilterDropdownGroupToggle extends FilterDropdownGroupBase {
91
+ /** The type of the FilterDropdownGroupBase */
65
92
  filterType: 'toggle';
66
- items: FilterItemToggle[];
93
+ item: FilterDropdownItemToggle;
94
+ defaultSelected?: boolean;
67
95
  }
68
- interface FilterGroupSelect extends FilterGroupBase {
96
+ interface FilterDropdownGroupSelect extends FilterDropdownGroupBase {
69
97
  /** An optional label to display next to each filter item (e.g. "and", "or"). Only applicable for checkbox, radio and toggle filter groups. */
70
98
  inlineLabel?: string;
71
- /** The type of the FilterGroupBase */
99
+ /** The type of the FilterDropdownGroupBase */
72
100
  filterType: 'select';
73
101
  /** Whether the select allows single or multiple selection */
74
102
  selectionType: 'single' | 'multiple';
75
103
  /** An optional type to determine the icon/avatar/symbol to display for each item. Only applicable for select filter groups. */
76
- optionType: 'default' | 'user' | 'label' | 'network' | 'sentiment';
77
- items: FilterItemSelect[];
104
+ displayType: SelectLabelSingleDisplayType;
105
+ items: FilterDropdownItemSelect[];
106
+ defaultSelected?: number[];
78
107
  }
79
- interface FilterGroupDateRange extends FilterGroupBase {
80
- /** The type of the FilterGroupBase */
108
+ interface FilterDropdownGroupDateRange extends FilterDropdownGroupBase {
109
+ /** The type of the FilterDropdownGroupBase */
81
110
  filterType: 'date-range';
82
111
  minDate?: dayjs.Dayjs;
83
112
  maxDate?: dayjs.Dayjs;
84
113
  selectedPeriod?: Period;
85
114
  }
86
- type FilterGroup = FilterGroupCheckbox | FilterGroupRadio | FilterGroupToggle | FilterGroupSelect | FilterGroupDateRange;
115
+ type FilterDropdownGroup = FilterDropdownGroupCheckbox | FilterDropdownGroupRadio | FilterDropdownGroupToggle | FilterDropdownGroupSelect | FilterDropdownGroupDateRange;
116
+
117
+ declare class FilterState {
118
+ private readonly _groups;
119
+ private readonly _draft;
120
+ readonly groups: _angular_core.Signal<FilterDropdownGroup[]>;
121
+ readonly draft: _angular_core.Signal<FilterDropdownOutput>;
122
+ /** Initialize groups and seed draft from config defaults */
123
+ initialize(groups: FilterDropdownGroup[]): void;
124
+ collapseHeader(key: string): void;
125
+ /** Get the draft value for a specific filter key */
126
+ getValue(key: string): FilterDropdownValue | undefined;
127
+ /** Update a single filter's draft value */
128
+ updateValue(key: string, value: FilterDropdownValue): void;
129
+ /** Toggle a checkbox item in a checkbox filter */
130
+ toggleCheckbox(key: string, name: string, checked: boolean): void;
131
+ /** Set the selected radio value */
132
+ setRadioValue(key: string, value: unknown): void;
133
+ /** Set the toggle checked state */
134
+ setToggleValue(key: string, checked: boolean): void;
135
+ /** Set selected indices for a select filter */
136
+ setSelectValue(key: string, selected: number[]): void;
137
+ /** Return the current draft snapshot (used on Apply) */
138
+ getSnapshot(): FilterDropdownOutput;
139
+ /** Reset draft to initial values from the current config */
140
+ reset(): void;
141
+ /** Clear all draft values to empty/default states */
142
+ clear(): void;
143
+ private buildInitialValue;
144
+ private buildEmptyValue;
145
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterState, never>;
146
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<FilterState>;
147
+ }
87
148
 
88
149
  declare class FilterDropdownComponent implements DropdownOverlay {
89
150
  private readonly overlay;
151
+ readonly state: FilterState;
152
+ initGroups: _angular_core.EffectRef;
90
153
  filterGroupTemplate: _angular_core.Signal<TemplateRef<unknown> | undefined>;
91
154
  /** The filter groups to display in the dropdown */
92
- items: _angular_core.InputSignal<FilterGroup[] | undefined>;
155
+ items: _angular_core.InputSignal<FilterDropdownGroup[] | undefined>;
93
156
  /** Whether the filter needs the apply button to be clicked for applyFilters to emit */
94
157
  needApplyButton: _angular_core.InputSignal<boolean>;
95
158
  /** Whether the filter group can be closed (collapsed) by the user. If false, the group will always be expanded and the user won't see a toggle button. */
@@ -111,9 +174,9 @@ declare class FilterDropdownComponent implements DropdownOverlay {
111
174
  /** Emits when the dropdown menu is closed */
112
175
  closed: _angular_core.OutputEmitterRef<void>;
113
176
  /** Emits when save presets is clicked */
114
- savePresets: _angular_core.OutputEmitterRef<void>;
177
+ savePresets: _angular_core.OutputEmitterRef<FilterDropdownOutput>;
115
178
  /** Emits when filters are applied */
116
- applyFilters: _angular_core.OutputEmitterRef<void>;
179
+ applyFilters: _angular_core.OutputEmitterRef<FilterDropdownOutput>;
117
180
  /** Emits when user clicks on clear filter */
118
181
  clearFilters: _angular_core.OutputEmitterRef<void>;
119
182
  /** Emits when user clicks on reset filter */
@@ -125,9 +188,13 @@ declare class FilterDropdownComponent implements DropdownOverlay {
125
188
  close(): void;
126
189
  /** Toggles the dropdown menu open or closed state */
127
190
  toggle(triggerElement?: HTMLElement): void;
191
+ onApplyFilters(): void;
192
+ onClearFilters(): void;
193
+ onResetFilters(): void;
194
+ onSavePresets(): void;
128
195
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FilterDropdownComponent, never>;
129
196
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FilterDropdownComponent, "ap-filter-dropdown", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "needApplyButton": { "alias": "needApplyButton"; "required": false; "isSignal": true; }; "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "savePresetsMode": { "alias": "savePresetsMode"; "required": false; "isSignal": true; }; "showBackdrop": { "alias": "showBackdrop"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "defaultPosition": { "alias": "defaultPosition"; "required": false; "isSignal": true; }; "savePresetsText": { "alias": "savePresetsText"; "required": false; "isSignal": true; }; "resetFilterText": { "alias": "resetFilterText"; "required": false; "isSignal": true; }; "applyFiltersText": { "alias": "applyFiltersText"; "required": false; "isSignal": true; }; "clearFilterText": { "alias": "clearFilterText"; "required": false; "isSignal": true; }; }, { "opened": "opened"; "closed": "closed"; "savePresets": "savePresets"; "applyFilters": "applyFilters"; "clearFilters": "clearFilters"; "resetFilters": "resetFilters"; }, never, never, true, never>;
130
197
  }
131
198
 
132
199
  export { FilterDropdownComponent };
133
- export type { FilterGroup, FilterGroupCheckbox, FilterGroupDateRange, FilterGroupRadio, FilterGroupSelect, FilterGroupToggle, FilterItemCheckbox, FilterItemRadio, FilterItemSelect, FilterItemToggle, FilterType };
200
+ export type { FilterDropdownGroup, FilterDropdownGroupCheckbox, FilterDropdownGroupDateRange, FilterDropdownGroupRadio, FilterDropdownGroupSelect, FilterDropdownGroupToggle, FilterDropdownItemCheckbox, FilterDropdownItemRadio, FilterDropdownItemSelect, FilterDropdownItemToggle, FilterDropdownOutput, FilterDropdownType, FilterDropdownValue, FilterDropdownValueCheckbox, FilterDropdownValueDateRange, FilterDropdownValueRadio, FilterDropdownValueSelect, FilterDropdownValueToggle };
package/index.d.ts CHANGED
@@ -46,7 +46,7 @@ export { BadgeComponent } from '@agorapulse/ui-components/badge';
46
46
  export { ButtonComponent } from '@agorapulse/ui-components/button';
47
47
  export { CheckboxComponent } from '@agorapulse/ui-components/checkbox';
48
48
  export { CounterComponent } from '@agorapulse/ui-components/counter';
49
- export { FilterDropdownComponent, FilterGroup, FilterItemCheckbox, FilterItemRadio, FilterItemSelect, FilterItemToggle } from '@agorapulse/ui-components/filter-dropdown';
49
+ export { FilterDropdownComponent, FilterDropdownGroup, FilterDropdownItemCheckbox, FilterDropdownItemRadio, FilterDropdownItemSelect, FilterDropdownItemToggle } from '@agorapulse/ui-components/filter-dropdown';
50
50
  export { IconButtonComponent } from '@agorapulse/ui-components/icon-button';
51
51
  export { InputComponent } from '@agorapulse/ui-components/legacy/input';
52
52
  export { SelectComponent } from '@agorapulse/ui-components/legacy/select';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agorapulse/ui-components",
3
3
  "description": "Agorapulse UI Components Library",
4
- "version": "20.4.10",
4
+ "version": "20.4.12",
5
5
  "author": "Benoit Hediard",
6
6
  "repository": {
7
7
  "type": "git",
package/select/index.d.ts CHANGED
@@ -31,13 +31,16 @@ declare class SelectBaseDirective implements AfterViewInit {
31
31
  declare class SelectMultipleDirective implements AfterViewInit, OnDestroy {
32
32
  private readonly selectComponent;
33
33
  private readonly elementRef;
34
+ private readonly originalDisabledState;
35
+ maxItemsTooltip: _angular_core.InputSignal<string | undefined>;
34
36
  valueContainer: HTMLElement | null;
35
37
  constructor();
36
38
  ngAfterViewInit(): void;
37
39
  ngOnDestroy(): void;
38
40
  onMousedown: (event: MouseEvent) => void;
41
+ private updateMaxItemsDisabledState;
39
42
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectMultipleDirective, never>;
40
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectMultipleDirective, "ng-select[apSelectMultiple]", never, {}, {}, never, never, true, [{ directive: typeof SelectBaseDirective; inputs: { "inlineLabel": "inlineLabel"; "symbolId": "symbolId"; }; outputs: {}; }]>;
43
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<SelectMultipleDirective, "ng-select[apSelectMultiple]", never, { "maxItemsTooltip": { "alias": "maxItemsTooltip"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof SelectBaseDirective; inputs: { "inlineLabel": "inlineLabel"; "symbolId": "symbolId"; }; outputs: {}; }]>;
41
44
  }
42
45
 
43
46
  declare class SelectSingleDirective implements AfterViewInit {
@@ -92,6 +95,7 @@ declare class DropdownItemSingleTwoLinesComponent {
92
95
 
93
96
  declare class DropdownItemMultipleOneLineComponent {
94
97
  private readonly symbolRegistry;
98
+ protected readonly selectMultiple: SelectMultipleDirective | null;
95
99
  constructor();
96
100
  text: string;
97
101
  selected: boolean;
@@ -122,6 +126,7 @@ declare class DropdownItemMultipleOneLineComponent {
122
126
 
123
127
  declare class DropdownItemMultipleTwoLinesComponent {
124
128
  private readonly symbolRegistry;
129
+ protected readonly selectMultiple: SelectMultipleDirective | null;
125
130
  constructor();
126
131
  text: string;
127
132
  caption: string;
@@ -151,6 +156,7 @@ declare class DropdownItemMultipleTwoLinesComponent {
151
156
 
152
157
  type SelectBaseDisplayType = 'tag' | 'label';
153
158
  type SelectLabelSingleDisplayType = 'text' | 'withAvatar' | SelectBaseDisplayType;
159
+ type SelectLabelMultipleDisplayType = SelectBaseDisplayType;
154
160
 
155
161
  declare class SelectLabelSingleComponent {
156
162
  displayType: _angular_core.InputSignal<SelectLabelSingleDisplayType>;
@@ -231,6 +237,7 @@ declare class DropdownGroupItemComponent {
231
237
  isGroupIntermediate(): boolean;
232
238
  isGroupChecked(): boolean;
233
239
  isGroupDisabled(): boolean;
240
+ onGroupClick(event: Event): void;
234
241
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DropdownGroupItemComponent, never>;
235
242
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DropdownGroupItemComponent, "ap-dropdown-group-item", never, { "groupLabel": { "alias": "groupLabel"; "required": true; }; "groupTag": { "alias": "groupTag"; "required": false; }; "selectableGroup": { "alias": "selectableGroup"; "required": false; }; "children": { "alias": "children"; "required": true; }; "select": { "alias": "select"; "required": true; }; "disabled": { "alias": "disabled"; "required": false; }; "disabledTooltip": { "alias": "disabledTooltip"; "required": false; }; }, {}, never, never, true, never>;
236
243
  }
@@ -242,3 +249,4 @@ declare class ApSelectModule {
242
249
  }
243
250
 
244
251
  export { ApSelectModule, DropdownGroupItemComponent, DropdownItemMultipleOneLineComponent, DropdownItemMultipleTwoLinesComponent, DropdownItemSingleOneLineComponent, DropdownItemSingleTwoLinesComponent, DropdownSearchFormComponent, SelectBaseDirective, SelectLabelMultipleComponent, SelectLabelSingleComponent, SelectMultipleDirective, SelectSingleDirective };
252
+ export type { SelectLabelMultipleDisplayType, SelectLabelSingleDisplayType };