monkey-style-guide 21.2.7 → 21.2.9

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 (30) hide show
  1. package/README.md +24 -24
  2. package/assets/scss/autocomplete/_index.scss +6 -6
  3. package/assets/scss/autocomplete/_styles.scss +149 -149
  4. package/assets/scss/directives/_badge.scss +48 -48
  5. package/assets/scss/directives/_index.scss +8 -8
  6. package/assets/scss/directives/_popover.scss +102 -102
  7. package/assets/scss/directives/_styles.scss +99 -99
  8. package/assets/scss/input/_index.scss +6 -6
  9. package/assets/scss/input/_styles.scss +67 -67
  10. package/assets/scss/partials/_breakpoints.scss +145 -145
  11. package/assets/scss/partials/_grid-system.scss +5069 -5069
  12. package/assets/scss/partials/_helper-classes.scss +373 -373
  13. package/assets/scss/partials/_icons.scss +38 -38
  14. package/assets/scss/partials/_index.scss +14 -14
  15. package/assets/scss/partials/_popover.scss +3 -3
  16. package/assets/scss/partials/_scrollbars.scss +29 -29
  17. package/assets/scss/partials/_skeleton-loading.scss +95 -95
  18. package/assets/scss/partials/_style-reset.scss +191 -191
  19. package/assets/scss/partials/_variables.scss +95 -95
  20. package/assets/scss/table/_index.scss +6 -6
  21. package/assets/scss/table/_styles.scss +11 -11
  22. package/assets/scss/theme.scss +14 -14
  23. package/assets/scss/typography/_index.scss +6 -6
  24. package/assets/scss/typography/_styles.scss +60 -60
  25. package/fesm2022/monkey-style-guide.mjs +4369 -2260
  26. package/fesm2022/monkey-style-guide.mjs.map +1 -1
  27. package/monkey-style-guide-21.2.9.tgz +0 -0
  28. package/package.json +1 -1
  29. package/types/monkey-style-guide.d.ts +844 -133
  30. package/monkey-style-guide-21.2.7.tgz +0 -0
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { TemplateRef, ComponentRef, InputSignal, OutputEmitterRef, AfterContentInit, AfterContentChecked, OnDestroy, ElementRef, EventEmitter, ChangeDetectorRef, OnChanges, OnInit, InputSignalWithTransform, AfterViewInit, SimpleChanges, Renderer2, QueryList, StaticProvider, Injector, InjectionToken, ViewContainerRef, ApplicationRef } from '@angular/core';
2
+ import { TemplateRef, EventEmitter, ElementRef, ComponentRef, InputSignal, OutputEmitterRef, AfterContentInit, AfterContentChecked, OnDestroy, ChangeDetectorRef, OnChanges, OnInit, InputSignalWithTransform, AfterViewInit, SimpleChanges, Renderer2, QueryList, StaticProvider, Injector, InjectionToken, ViewContainerRef, ApplicationRef } from '@angular/core';
3
3
  import { NgControl, AbstractControlDirective, ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
4
4
  import * as rxjs from 'rxjs';
5
5
  import { Observable, Subject, BehaviorSubject } from 'rxjs';
@@ -10,6 +10,7 @@ import { CurrencyPipe } from '@angular/common';
10
10
  import { BooleanInput } from '@angular/cdk/coercion';
11
11
  import { OverlayRef, Overlay } from '@angular/cdk/overlay';
12
12
  import { ComponentType } from '@angular/cdk/portal';
13
+ import { VirtualScrollStrategy, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
13
14
 
14
15
  declare class MonkeyAccordionComponent {
15
16
  open: boolean;
@@ -129,6 +130,35 @@ interface MonkeyTableScrollConfig {
129
130
  y?: string;
130
131
  }
131
132
 
133
+ /** ************************
134
+ * Copyright Monkey Exchange. All Rights Reserved
135
+ * This style guide was developed by Monkey Exchange Team
136
+ * MIT Licence
137
+ ************************* */
138
+
139
+ declare class MonkeyToastComponent {
140
+ private host;
141
+ message: string | undefined;
142
+ icon: string | undefined;
143
+ type: MonkeyToastType;
144
+ isClosable: boolean;
145
+ actionLabel: string | undefined;
146
+ actionIcon: string | undefined;
147
+ onActionClick: EventEmitter<string>;
148
+ onClose: EventEmitter<string>;
149
+ protected _uid: string;
150
+ protected _id: string;
151
+ get id(): string;
152
+ set id(value: string);
153
+ get class(): string;
154
+ constructor(host: ElementRef<HTMLElement>);
155
+ close(): void;
156
+ onAnimationEnd(event: AnimationEvent): void;
157
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyToastComponent, never>;
158
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyToastComponent, "monkey-toast", never, { "message": { "alias": "message"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "type": { "alias": "type"; "required": false; }; "isClosable": { "alias": "isClosable"; "required": false; }; "actionLabel": { "alias": "actionLabel"; "required": false; }; "actionIcon": { "alias": "actionIcon"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, { "onActionClick": "onActionClick"; "onClose": "onClose"; }, never, never, true, never>;
159
+ static ngAcceptInputType_isClosable: unknown;
160
+ }
161
+
132
162
  /** ************************
133
163
  * Copyright Monkey Exchange. All Rights Reserved
134
164
  * This style guide was developed by Monkey Exchange Team
@@ -884,6 +914,469 @@ declare class MonkeyFilterBarService {
884
914
  static ɵprov: i0.ɵɵInjectableDeclaration<MonkeyFilterBarService>;
885
915
  }
886
916
 
917
+ /** ************************
918
+ * Copyright Monkey Exchange. All Rights Reserved
919
+ * This style guide was developed by Monkey Exchange Team
920
+ * MIT Licence
921
+ ************************* */
922
+ /**
923
+ * Has the page painted its first frame?
924
+ *
925
+ * Use it to decide whether an `animate.enter` should apply:
926
+ *
927
+ * [animate.enter]="appPainted() ? 'mecx-x--entering' : ''"
928
+ *
929
+ * A component already on screen at the first paint comes in without animation;
930
+ * one the consumer mounts later animates normally.
931
+ */
932
+ declare function appPainted(): boolean;
933
+
934
+ /** Which panel of which chip is open. Only one is ever open at a time. */
935
+ interface OpenPanel {
936
+ readonly key: string;
937
+ readonly part: 'category' | 'value';
938
+ }
939
+ /** One slot of the row: an active filter, or the one being built. */
940
+ interface MonkeyFilterBarV2Row {
941
+ readonly key: string;
942
+ readonly label: string;
943
+ readonly icon?: string;
944
+ readonly type: FilterType;
945
+ /** What the value segment shows. Empty while the answer is pending. */
946
+ readonly value: string;
947
+ /** True while the filter is being built and is not in the service yet. */
948
+ readonly pending: boolean;
949
+ }
950
+ declare class MonkeyFilterBarV2Component {
951
+ private readonly _service;
952
+ private readonly _hostEl;
953
+ private readonly _injector;
954
+ /** Storage key of this bar's state inside MonkeyFilterBarService. */
955
+ readonly key: i0.InputSignal<string>;
956
+ readonly config: i0.InputSignal<FilterBarConfig | undefined>;
957
+ /** Label of the trigger while the bar is still empty. */
958
+ readonly addFilterLabel: i0.InputSignal<string>;
959
+ readonly clearAllLabel: i0.InputSignal<string>;
960
+ readonly filtersChange: i0.OutputEmitterRef<{
961
+ search?: string;
962
+ filters: ActiveFilter[];
963
+ }>;
964
+ readonly searchChange: i0.OutputEmitterRef<string>;
965
+ /** A chip seeded by the consumer does not animate; one the user made does. */
966
+ readonly appPainted: typeof appPainted;
967
+ /**
968
+ * The filter being built — chosen from the trigger, not yet confirmed, so
969
+ * not yet in the service.
970
+ *
971
+ * It exists so the chip can be BORN where the trigger was, which is the
972
+ * whole point of the row's animation, without the bar reporting a filter
973
+ * that has no answer. Closing the panel without confirming drops it again:
974
+ * monkey-filter-bar has no half-filled state and neither does this one.
975
+ */
976
+ protected readonly pending: i0.WritableSignal<FilterOption | null>;
977
+ protected readonly openPanel: i0.WritableSignal<OpenPanel | null>;
978
+ protected readonly triggerOpen: i0.WritableSignal<boolean>;
979
+ /**
980
+ * The filter whose date panel is showing the CALENDAR instead of the
981
+ * shortcuts, or `null`.
982
+ *
983
+ * It is the same panel, anchored to the same segment — "Personalizado" only
984
+ * swaps its content. No modal: the dialog would be almost all frame around a
985
+ * calendar, and frame is not an answer to anything.
986
+ */
987
+ protected readonly calendarOpen: i0.WritableSignal<string | null>;
988
+ /** Search of the category panel. */
989
+ protected readonly categorySearch: i0.WritableSignal<string>;
990
+ /**
991
+ * Turns off the fade on the trigger's panel. It is written BEFORE the
992
+ * mutation on purpose: `animate.leave` is read the instant the node leaves,
993
+ * and turning it on afterwards would arrive too late.
994
+ */
995
+ protected readonly immediateTriggerExit: i0.WritableSignal<boolean>;
996
+ protected textValue: string;
997
+ protected currencyValue: number | null;
998
+ protected currencyMode: 'from' | 'until';
999
+ protected statusValues: string[];
1000
+ protected dateRange: {
1001
+ startDate: string;
1002
+ endDate: string;
1003
+ };
1004
+ protected readonly serviceConfig: i0.Signal<FilterBarConfig | undefined>;
1005
+ protected readonly activeFilters: i0.Signal<ActiveFilter[]>;
1006
+ protected readonly searchValue: i0.Signal<string>;
1007
+ protected readonly searchPlaceholder: i0.Signal<string>;
1008
+ /** The slots of the row, in order: the confirmed ones, then the draft. */
1009
+ protected readonly rows: i0.Signal<MonkeyFilterBarV2Row[]>;
1010
+ /**
1011
+ * What the TRIGGER offers: only what can still be added.
1012
+ *
1013
+ * This is monkey-filter-bar's rule — a filter already on the row is not on
1014
+ * offer, because the bar holds one filter per key.
1015
+ */
1016
+ protected readonly addOptions: i0.Signal<FilterOption[]>;
1017
+ /**
1018
+ * What a chip's CATEGORY segment offers: the whole list.
1019
+ *
1020
+ * A different list from the trigger's on purpose. Here the question is "what
1021
+ * else could this chip be", so the current category has to be visible — it
1022
+ * is the one carrying the check — and the other filters already on the row
1023
+ * are shown greyed out rather than hidden, which is what tells the user the
1024
+ * category they were looking for is already in use.
1025
+ */
1026
+ protected readonly changeOptions: i0.Signal<FilterOption[]>;
1027
+ /**
1028
+ * While the bar is empty the trigger is the CALL and earns the label. With
1029
+ * filters on screen a 28px square is enough.
1030
+ */
1031
+ protected readonly triggerVariant: i0.Signal<"text" | "icon">;
1032
+ /**
1033
+ * The glyph of the collapsed trigger is a `+`, not the funnel.
1034
+ *
1035
+ * The variant says what the button IS; the glyph says what it DOES. With
1036
+ * filters already on screen the button does not open "the filters", it ADDS
1037
+ * one more — and a funnel there reads as the wrong thing. With the bar empty
1038
+ * the funnel is exact.
1039
+ */
1040
+ protected readonly triggerIcon: i0.Signal<"filter" | "add-plus">;
1041
+ /**
1042
+ * The FLIP identity changes along with the variant, and that is the fix: the
1043
+ * text trigger is REMOVED and the icon one is BORN in its place, instead of
1044
+ * one button sliding to the right. Before this, the button dragged along the
1045
+ * panel that was closing — the list vanished travelling sideways.
1046
+ *
1047
+ * From the second filter on the identity holds, and then the `+` really does
1048
+ * slide: that movement is what says "the row grew".
1049
+ */
1050
+ protected readonly triggerFlipId: i0.Signal<"trigger-text" | "trigger-icon">;
1051
+ constructor();
1052
+ protected isOpen(rowKey: string, part: OpenPanel['part']): boolean;
1053
+ protected isFilterActive(optionKey: string): boolean;
1054
+ /** A divider goes where the type changes relative to the row above. */
1055
+ protected needsDivider(options: readonly FilterOption[], index: number): boolean;
1056
+ protected valuePlaceholder(row: MonkeyFilterBarV2Row): string;
1057
+ protected statusOptionsOf(row: MonkeyFilterBarV2Row): monkey_style_guide.StatusOption[];
1058
+ protected minDateOf(row: MonkeyFilterBarV2Row): Date | string;
1059
+ protected maxDateOf(row: MonkeyFilterBarV2Row): Date | string;
1060
+ /**
1061
+ * `index` is the position in the list the template walked — the one the
1062
+ * search filtered. Indexing the full list would pick the wrong option.
1063
+ */
1064
+ protected onSelectCategory(index: number): void;
1065
+ /**
1066
+ * Swaps the category of a chip that already exists, from its first segment.
1067
+ *
1068
+ * The answer always falls: it belongs to the old category's domain — a list
1069
+ * of statuses means nothing inside a date range — so the chip goes back to
1070
+ * waiting, with its value panel open.
1071
+ */
1072
+ protected onChangeCategory(row: MonkeyFilterBarV2Row, index: number): void;
1073
+ /**
1074
+ * Opening the trigger closes whatever chip panel was open: only one panel is
1075
+ * ever on screen, and a draft chip whose panel was abandoned goes with it.
1076
+ */
1077
+ protected onTriggerOpenChange(open: boolean): void;
1078
+ protected onCategoryOpenChange(row: MonkeyFilterBarV2Row, open: boolean): void;
1079
+ protected onValueOpenChange(row: MonkeyFilterBarV2Row, open: boolean): void;
1080
+ /**
1081
+ * The same shortcuts monkey-filter-bar offers. "Personalizado" is the only
1082
+ * one that does not resolve the interval on its own: it swaps the panel's
1083
+ * content for the calendar, in the same place.
1084
+ */
1085
+ protected onQuickDate(row: MonkeyFilterBarV2Row, preset: string): void;
1086
+ protected onDateChange(row: MonkeyFilterBarV2Row, event: {
1087
+ startDate: string;
1088
+ endDate: string;
1089
+ }): void;
1090
+ /** Cancel inside the calendar goes back to the shortcuts, panel still open. */
1091
+ protected onBackToShortcuts(): void;
1092
+ protected onStatusChange(value: string, checked: boolean): void;
1093
+ protected onToggleStatus(value: string): void;
1094
+ /**
1095
+ * The one place where an answer is written. Same validation as
1096
+ * monkey-filter-bar: an empty answer is not an answer, and the panel stays
1097
+ * open instead of writing a filter with nothing in it.
1098
+ */
1099
+ protected onApply(row: MonkeyFilterBarV2Row): void;
1100
+ protected onRemove(row: MonkeyFilterBarV2Row): void;
1101
+ /** Zeroes the whole bar. The trigger goes back to being the call with a label. */
1102
+ protected onClearAll(): void;
1103
+ protected onSearchChange(value: string): void;
1104
+ /**
1105
+ * Opens a chip's answer panel, pre-filled with the answer it already holds —
1106
+ * this is the edit path the active-filter tag used to be.
1107
+ */
1108
+ private _openValuePanel;
1109
+ /**
1110
+ * Closing the value panel of a chip that was never confirmed drops the chip:
1111
+ * monkey-filter-bar adds nothing until Apply, and a chip left on the row
1112
+ * with no answer would be a state it does not have.
1113
+ *
1114
+ * Closing the panel of a CONFIRMED chip changes no width — the segment shows
1115
+ * the same text it did before — so that path needs no FLIP.
1116
+ */
1117
+ private _closePanel;
1118
+ /** Takes the draft chip off the row, ghost and all. */
1119
+ private _dropPending;
1120
+ private _optionFor;
1121
+ private _matchingSearch;
1122
+ private _resetDraft;
1123
+ private _emit;
1124
+ /**
1125
+ * Takes the slots that are about to leave out of the flow, at the exact
1126
+ * place where they are.
1127
+ *
1128
+ * This is done HERE and not by the `animate.leave` class because of ORDER:
1129
+ * Angular only applies the exit class the instant it removes the node, and
1130
+ * that happens AFTER the `afterNextRender` that runs the FLIP. The FLIP
1131
+ * would then measure a layout that had not collapsed yet, see no
1132
+ * displacement at all, and the neighbours would snap into their new place
1133
+ * with no animation — the chip's exit worked and the neighbours' arrival did
1134
+ * not.
1135
+ *
1136
+ * Released from the flow BEFORE the mutation, the row collapses in the same
1137
+ * pass: the FLIP measures a real before and a real after, and the ghost
1138
+ * fades out on top, in place. Explicit `left`/`top` are mandatory — the
1139
+ * static position of an absolute element inside a flex container is the
1140
+ * container's corner, not where the element was.
1141
+ */
1142
+ private _releaseFromFlow;
1143
+ /**
1144
+ * Takes the row to the end of its travel, so that what has just come in is
1145
+ * not left hidden — and with it the trigger, which is always last in line.
1146
+ *
1147
+ * It runs BEFORE the "after" measurement on purpose. FLIP works in VIEWPORT
1148
+ * coordinates, so scrolling first folds the scroll offset into the same sum:
1149
+ * every piece slides from where the eye saw it to where it ended up, pan
1150
+ * included. One single synchronised movement.
1151
+ *
1152
+ * It is also what makes `scroll-behavior: smooth` unnecessary, which has no
1153
+ * token, guarantees nothing under reduced motion, and stalls in a throttled
1154
+ * tab.
1155
+ *
1156
+ * The sum comes from the LAST SLOT, never from `scrollWidth`. `scrollWidth`
1157
+ * at this instant is a poisoned measurement: the chip that has just been
1158
+ * born brings its answer panel already open, and the panel has not been
1159
+ * anchored yet — it is at its static position, far ahead, and counts as
1160
+ * overflow. The scroll would go hundreds of pixels chasing a ghost, the FLIP
1161
+ * would animate the whole row that distance, and the browser would clamp the
1162
+ * scroll back when the panel got anchored — a hard jump with no animation,
1163
+ * right in the middle of the chip's entrance.
1164
+ *
1165
+ * The slots do not have that problem: they are flow content, already at
1166
+ * their final position on the first render, and none of them is `fixed`.
1167
+ */
1168
+ private _followEnd;
1169
+ /**
1170
+ * Measures, lets the state change, then makes everything slide from its old
1171
+ * position.
1172
+ *
1173
+ * `afterNextRender` and not a `setTimeout`: we need the first instant at
1174
+ * which the DOM ALREADY reflects the new state, and that is exactly what it
1175
+ * delivers.
1176
+ */
1177
+ private _withFlip;
1178
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyFilterBarV2Component, never>;
1179
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyFilterBarV2Component, "monkey-filter-bar-v2", never, { "key": { "alias": "key"; "required": true; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "addFilterLabel": { "alias": "addFilterLabel"; "required": false; "isSignal": true; }; "clearAllLabel": { "alias": "clearAllLabel"; "required": false; "isSignal": true; }; }, { "filtersChange": "filtersChange"; "searchChange": "searchChange"; }, never, ["*"], true, never>;
1180
+ }
1181
+
1182
+ /**
1183
+ * The segmented row that replaces the trigger once the user has picked a
1184
+ * filter. Two segments and a bin:
1185
+ *
1186
+ * [ icon Data de Emissão | 01/01/2025 - 31/01/2025 | 🗑 ]
1187
+ * category value action
1188
+ *
1189
+ * How many segments there are is the consumer's decision — the value segment
1190
+ * is projected as soon as there is something to answer:
1191
+ *
1192
+ * <monkey-filter-chip (remove)="drop()">
1193
+ * <monkey-filter-segment icon="calendar-box" text="Data" readonlySegment />
1194
+ * <monkey-filter-segment placeholder="Selecione" [(open)]="open" />
1195
+ * </monkey-filter-chip>
1196
+ *
1197
+ * The chip carries NO `overflow: hidden`. It would clip the panels the
1198
+ * segments open right below themselves; the ends are rounded by radius, not by
1199
+ * clipping.
1200
+ */
1201
+ declare class MonkeyFilterChipComponent {
1202
+ /** Icon font name of the remove action, without the `mk-i-` prefix. */
1203
+ readonly removeIcon: i0.InputSignal<string>;
1204
+ readonly removeLabel: i0.InputSignal<string>;
1205
+ readonly remove: i0.OutputEmitterRef<void>;
1206
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyFilterChipComponent, never>;
1207
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyFilterChipComponent, "monkey-filter-chip", never, { "removeIcon": { "alias": "removeIcon"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; }, { "remove": "remove"; }, never, ["*"], true, never>;
1208
+ }
1209
+
1210
+ /**
1211
+ * The panel every dropdown of monkey-filter-bar-v2 opens: a surface with an
1212
+ * optional search field on top and the projected rows below it.
1213
+ *
1214
+ * Only the WIDTH changes from one panel to the next, and it is set from the
1215
+ * bar's own stylesheet through a class on this host — the panel component has
1216
+ * no opinion on how wide a company list should be.
1217
+ *
1218
+ * `width` and not `min-width` on those classes: each panel is a fixed-width
1219
+ * frame in the design and a long label ellipsizes inside it. With a floor the
1220
+ * content would win, and the measurement would turn into a suggestion.
1221
+ */
1222
+ declare class MonkeyFilterMenuComponent implements OnDestroy {
1223
+ readonly showSearch: i0.InputSignalWithTransform<boolean, unknown>;
1224
+ readonly searchPlaceholder: i0.InputSignal<string>;
1225
+ /** Lets the row list scroll instead of growing past the viewport. */
1226
+ readonly showScroll: i0.InputSignalWithTransform<boolean, unknown>;
1227
+ /** Ceiling of the scrolling list, in px. */
1228
+ readonly maxHeight: i0.InputSignal<number>;
1229
+ readonly searchChange: i0.OutputEmitterRef<string>;
1230
+ protected searchValue: string;
1231
+ private readonly _zone;
1232
+ private readonly _items;
1233
+ /** Is the list actually overflowing right now? */
1234
+ private readonly _overflowing;
1235
+ /**
1236
+ * Draw the track only when the content OVERFLOWS.
1237
+ *
1238
+ * Tied to `showScroll` alone, a three-row panel lost 12px of width to a
1239
+ * track that was never going to appear.
1240
+ */
1241
+ protected readonly scrolling: i0.Signal<boolean>;
1242
+ private _observer?;
1243
+ constructor();
1244
+ ngOnDestroy(): void;
1245
+ protected onSearchInput(value: string): void;
1246
+ private _disconnect;
1247
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyFilterMenuComponent, never>;
1248
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyFilterMenuComponent, "monkey-filter-menu", never, { "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "showScroll": { "alias": "showScroll"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; }, { "searchChange": "searchChange"; }, never, ["*"], true, never>;
1249
+ }
1250
+
1251
+ /** `text` is a plain row; `checkbox` puts a box in front of the label. */
1252
+ type MonkeyFilterMenuItemProperty = 'text' | 'checkbox';
1253
+ /**
1254
+ * One row of a monkey-filter-menu.
1255
+ *
1256
+ * The ROW is the click target, which is why the checkbox inside it does not
1257
+ * grow one of its own: the boxes sit 18px apart inside rows of 32px that touch
1258
+ * each other, so a 40px floor on each would make two targets OVERLAP by 8px —
1259
+ * inside rows that are already clickable end to end.
1260
+ */
1261
+ declare class MonkeyFilterMenuItemComponent {
1262
+ readonly property: i0.InputSignal<MonkeyFilterMenuItemProperty>;
1263
+ /** Icon font name, without the `mk-i-` prefix. */
1264
+ readonly leadIcon: i0.InputSignal<string | null>;
1265
+ readonly label: i0.InputSignal<string>;
1266
+ /** Secondary line under the label — a document number, a key. */
1267
+ readonly description: i0.InputSignal<string | null>;
1268
+ readonly checked: i0.InputSignalWithTransform<boolean, unknown>;
1269
+ /** Already answered elsewhere: the row shows a check and stops responding. */
1270
+ readonly selected: i0.InputSignalWithTransform<boolean, unknown>;
1271
+ readonly disabled: i0.InputSignalWithTransform<boolean, unknown>;
1272
+ readonly itemClick: i0.OutputEmitterRef<void>;
1273
+ protected onClick(): void;
1274
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyFilterMenuItemComponent, never>;
1275
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyFilterMenuItemComponent, "monkey-filter-menu-item", never, { "property": { "alias": "property"; "required": false; "isSignal": true; }; "leadIcon": { "alias": "leadIcon"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; }, never, never, true, never>;
1276
+ }
1277
+
1278
+ /**
1279
+ * One segment of a monkey-filter-chip.
1280
+ *
1281
+ * ONE component for the two roles the chip has — the category name and the
1282
+ * answer. Both share the same state table, the same padding, the same
1283
+ * typography and the same height; what changes between them is the content
1284
+ * (the first has an icon) and the rounding of the ends, which belongs to the
1285
+ * chip and not to the segment. Two components would be two copies of the same
1286
+ * stylesheet waiting to drift apart.
1287
+ *
1288
+ * `filled` is not an input: it is `text() !== ''`. Letting the consumer
1289
+ * declare "filled" with an empty text would be a state impossible to draw.
1290
+ *
1291
+ * The projected panel is `position: fixed` and anchored by script — see
1292
+ * `anchored-menu.ts` for why an `absolute` one cannot survive inside a row
1293
+ * that scrolls.
1294
+ */
1295
+ declare class MonkeyFilterSegmentComponent {
1296
+ /** Category icon — usually only the chip's first segment has one. */
1297
+ readonly icon: i0.InputSignal<string | null>;
1298
+ /** The chosen value. Empty means the segment is still waiting. */
1299
+ readonly text: i0.InputSignal<string>;
1300
+ /** Waiting text, in the complement colour. */
1301
+ readonly placeholder: i0.InputSignal<string>;
1302
+ /** A segment with no panel to open. */
1303
+ readonly readonlySegment: i0.InputSignalWithTransform<boolean, unknown>;
1304
+ readonly open: i0.ModelSignal<boolean>;
1305
+ readonly segmentClick: i0.OutputEmitterRef<void>;
1306
+ readonly filled: i0.Signal<boolean>;
1307
+ /** What is shown: the value when there is one, the waiting text when not. */
1308
+ readonly label: i0.Signal<string>;
1309
+ private readonly _hostEl;
1310
+ private readonly _menuEl;
1311
+ constructor();
1312
+ toggle(): void;
1313
+ /**
1314
+ * A click outside closes. Without it the panel would only close by clicking
1315
+ * the segment again — behaviour no system menu has, and which left two
1316
+ * panels open at once on a row with several chips.
1317
+ */
1318
+ onDocumentPointerdown(event: PointerEvent): void;
1319
+ /**
1320
+ * Escape closes and hands the focus back to the segment's button. Without
1321
+ * the hand-back the focus falls to `<body>` and Tab restarts from the top of
1322
+ * the page: whoever opened the panel from the keyboard loses their place in
1323
+ * the middle of the row.
1324
+ */
1325
+ onEscape(): void;
1326
+ /** Closes and returns the focus. Public for whoever needs to close from outside. */
1327
+ closeAndFocus(): void;
1328
+ private focusButton;
1329
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyFilterSegmentComponent, never>;
1330
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyFilterSegmentComponent, "monkey-filter-segment", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readonlySegment": { "alias": "readonlySegment"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "segmentClick": "segmentClick"; }, never, ["*"], true, never>;
1331
+ }
1332
+
1333
+ /** `text` is the 28px button with a label; `icon` is the 28px square. */
1334
+ type MonkeyFilterTriggerVariant = 'text' | 'icon';
1335
+ /**
1336
+ * The button that adds a filter, and the panel of categories it opens.
1337
+ *
1338
+ * It is always the LAST slot of the row. While the bar is empty the trigger is
1339
+ * the CALL to action and earns its label; with filters on screen it becomes
1340
+ * the ADDITION, and a 28px square is enough.
1341
+ *
1342
+ * Both are 28px tall — the same as a chip segment — because the button turns
1343
+ * into a chip in place, and 1px of difference would show up as a jump at the
1344
+ * moment of the swap.
1345
+ */
1346
+ declare class MonkeyFilterTriggerComponent {
1347
+ readonly variant: i0.InputSignal<MonkeyFilterTriggerVariant>;
1348
+ /** Icon font name, without the `mk-i-` prefix. */
1349
+ readonly icon: i0.InputSignal<string>;
1350
+ readonly text: i0.InputSignal<string>;
1351
+ readonly ariaLabel: i0.InputSignal<string>;
1352
+ readonly disabled: i0.InputSignalWithTransform<boolean, unknown>;
1353
+ /**
1354
+ * The panel leaves with no exit animation.
1355
+ *
1356
+ * It exists for ONE case: when the closing goes along with the trigger
1357
+ * itself changing place. The panel is a child of the button, so it travels
1358
+ * with it — and a fade on an element that has just teleported 160px does not
1359
+ * read as an exit, it reads as a glitch. Closing by Escape or by an outside
1360
+ * click is not that case and keeps its fade.
1361
+ */
1362
+ readonly immediateExit: i0.InputSignalWithTransform<boolean, unknown>;
1363
+ readonly open: i0.ModelSignal<boolean>;
1364
+ /**
1365
+ * `aria-label` only on the variant with no visible label. Where there is a
1366
+ * label, an `aria-label` over it would swap the name the user reads for one
1367
+ * they cannot see — breaking voice control and the "Label in Name" criterion.
1368
+ */
1369
+ readonly ariaLabelAttr: i0.Signal<string | null>;
1370
+ private readonly _hostEl;
1371
+ private readonly _menuEl;
1372
+ constructor();
1373
+ toggle(): void;
1374
+ onDocumentPointerdown(event: PointerEvent): void;
1375
+ onEscape(): void;
1376
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyFilterTriggerComponent, never>;
1377
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyFilterTriggerComponent, "monkey-filter-trigger", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "immediateExit": { "alias": "immediateExit"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*"], true, never>;
1378
+ }
1379
+
887
1380
  declare class MonkeyIconButtonComponent {
888
1381
  type: 'primary' | 'secondary' | 'tertiary';
889
1382
  size: 'sm' | 'md' | 'lg';
@@ -1517,6 +2010,83 @@ declare class MonkeyRadioButtonComponent implements MonkeyFormFieldControl, Cont
1517
2010
  static ngAcceptInputType_required: unknown;
1518
2011
  }
1519
2012
 
2013
+ type MonkeyScrollbarOrientation = 'horizontal' | 'vertical';
2014
+ /** `small` = 8px track (menus) · `medium` = 16px (page bar, what the table uses). */
2015
+ type MonkeyScrollbarSize = 'small' | 'medium';
2016
+ /**
2017
+ * A DRAWN scrollbar, not the native one styled — a native scrollbar can't
2018
+ * live outside the element that scrolls (e.g. below a table's rows, next to
2019
+ * its footer), and cross-browser track styling (radius, border) is
2020
+ * inconsistent enough that matching a design exactly isn't reliable with
2021
+ * `::-webkit-scrollbar`/`scrollbar-color` alone.
2022
+ *
2023
+ * It does NOT replace real scrolling: `target` keeps its own
2024
+ * `overflow: auto`, so keyboard, wheel and trackpad scrolling all keep
2025
+ * working — this is a draggable mirror drawn on top. That's also why it's
2026
+ * `aria-hidden`: a screen reader user scrolls the real region, and a second
2027
+ * widget announcing the same position would only add noise.
2028
+ */
2029
+ declare class MonkeyScrollbarComponent implements OnDestroy {
2030
+ private readonly _zone;
2031
+ readonly orientation: i0.InputSignal<MonkeyScrollbarOrientation>;
2032
+ readonly size: i0.InputSignal<MonkeyScrollbarSize>;
2033
+ /** The element that actually scrolls. */
2034
+ readonly target: i0.InputSignal<HTMLElement>;
2035
+ private readonly trackEl;
2036
+ /** Scrollable length of the content, in px. */
2037
+ private readonly total;
2038
+ /** Visible length of the viewport, in px. */
2039
+ private readonly visible;
2040
+ /** How far the target is scrolled, in px. */
2041
+ private readonly scrolled;
2042
+ /** Length of the track the thumb slides along, in px. */
2043
+ private readonly trackLength;
2044
+ protected readonly scrollable: i0.Signal<boolean>;
2045
+ protected readonly thumbSize: i0.Signal<string>;
2046
+ /**
2047
+ * A px distance, applied as a `translate`, not as `left`/`top`: moving the
2048
+ * thumb then costs a composited transform instead of a layout pass on every
2049
+ * scroll frame. It has to be px rather than a percentage of the thumb
2050
+ * because the thumb has a minimum length — once that kicks in, a
2051
+ * percentage of its own (clamped) size no longer maps to track distance.
2052
+ */
2053
+ protected readonly thumbOffset: i0.Signal<string>;
2054
+ private resizeObserver?;
2055
+ private observedTarget?;
2056
+ /** Pending animation frame, 0 when none is queued. */
2057
+ private frame;
2058
+ /** Whether the cached lengths need re-reading on the next frame. */
2059
+ private sizeStale;
2060
+ private readonly onScroll;
2061
+ /** Drag state. `null` = nobody is dragging. */
2062
+ private drag;
2063
+ constructor();
2064
+ ngOnDestroy(): void;
2065
+ private attach;
2066
+ private detach;
2067
+ /**
2068
+ * Scroll events fire far more often than the screen refreshes, and each
2069
+ * measurement reads layout. Coalescing to one read per frame is what keeps
2070
+ * a long table from thrashing layout while it scrolls.
2071
+ */
2072
+ private schedule;
2073
+ private measure;
2074
+ protected onPointerDown(event: PointerEvent): void;
2075
+ protected onPointerMove(event: PointerEvent): void;
2076
+ protected onPointerUp(event: PointerEvent): void;
2077
+ /** Clicking the track outside the thumb jumps the content there, centered on the click. */
2078
+ protected onTrackPointerDown(event: PointerEvent): void;
2079
+ /**
2080
+ * Manual re-measure. Public on purpose: the automatic triggers (scroll,
2081
+ * ResizeObserver on the target and its children) cover what the browser
2082
+ * reports on its own — this is the escape hatch for what it doesn't, e.g.
2083
+ * a target swapped out from under the component.
2084
+ */
2085
+ remeasure(): void;
2086
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyScrollbarComponent, never>;
2087
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyScrollbarComponent, "monkey-scrollbar", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
2088
+ }
2089
+
1520
2090
  declare class MonkeySecurityLevelComponent {
1521
2091
  label: i0.InputSignal<string | undefined>;
1522
2092
  score: i0.InputSignal<number>;
@@ -1727,84 +2297,98 @@ declare class MonkeyPaginationSizeComponent {
1727
2297
  * This style guide was developed by Monkey Exchange Team
1728
2298
  * MIT Licence
1729
2299
  ************************* */
1730
-
1731
- declare class MonkeyTableComponent implements AfterContentInit, OnChanges {
1732
- scroll: MonkeyTableScrollConfig;
1733
- loading: boolean;
1734
- loadingRef: TemplateRef<any>;
1735
- sortChange: EventEmitter<any>;
1736
- private _headerEl;
1737
- private _tableHeaderEl;
1738
- private _tableContentEl;
1739
- private _tableLoadingEl;
1740
- private _tableScrollEl;
1741
- private _paginationActionChildren;
1742
- private _paginationSizeChildren;
1743
- private _sortOptions;
1744
- private _loadingInitialized;
1745
- stateChanges: EventEmitter<any>;
1746
- private updateScrollStyle;
1747
- private initializeComponents;
1748
- private initializeLoadingComponent;
1749
- ngAfterContentInit(): void;
1750
- updateSortableOptions(name: string, sortable: string): void;
1751
- ngOnChanges(changes: SimpleChanges): void;
1752
- static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyTableComponent, never>;
1753
- static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyTableComponent, "monkey-table, table[monkey-table]", ["monkeyTable"], { "scroll": { "alias": "scroll"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "loadingRef": { "alias": "loadingRef"; "required": false; }; }, { "sortChange": "sortChange"; }, ["_paginationActionChildren", "_paginationSizeChildren"], ["thead", "tbody", "monkey-pagination-size", "monkey-pagination-label", "monkey-pagination-action"], false, never>;
2300
+ type SortDirection = 'ascending' | 'descending';
2301
+ interface SortState {
2302
+ column: string;
2303
+ direction: SortDirection;
2304
+ }
2305
+ type SelectionState = 'none' | 'partial' | 'all';
2306
+ type ColumnAlign = 'start' | 'end';
2307
+ type ColumnPinned = 'none' | 'left' | 'right';
2308
+ interface MonkeyTableColumnState {
2309
+ name: string;
2310
+ hidden: boolean;
2311
+ pinned: ColumnPinned;
2312
+ }
2313
+ declare function sameColumnState(a: readonly MonkeyTableColumnState[], b: readonly MonkeyTableColumnState[]): boolean;
2314
+ declare function ariaSortOf(sort: SortState | null, column: string): SortDirection | null;
2315
+ declare function interpolate(template: string, values: Record<string, string | number>): string;
2316
+ declare function toggleKey(current: ReadonlySet<string>, key: string): ReadonlySet<string>;
2317
+ declare function selectionState(current: ReadonlySet<string>, keys: readonly string[]): SelectionState;
2318
+ declare function addKeys(current: ReadonlySet<string>, keys: readonly string[], limit?: number): ReadonlySet<string>;
2319
+ declare function removeKeys(current: ReadonlySet<string>, keys: readonly string[]): ReadonlySet<string>;
2320
+ declare function sortByOrder<T>(items: readonly T[], nameOf: (item: T) => string, order: readonly string[]): T[];
2321
+ declare function mergeOrder(previous: readonly string[], next: readonly string[]): string[];
2322
+ interface RowMetrics {
2323
+ count: number;
2324
+ rowHeight: number;
2325
+ detailHeight: number;
2326
+ openIndices: readonly number[];
2327
+ }
2328
+ declare function totalHeight(metrics: RowMetrics): number;
2329
+ declare function offsetOfIndex(index: number, metrics: RowMetrics): number;
2330
+ declare function indexAtOffset(offset: number, metrics: RowMetrics): number;
2331
+ declare function toPx(width: string | null | undefined): number;
2332
+
2333
+ interface MonkeyTableCellContext<T> {
2334
+ $implicit: T;
2335
+ row: T;
2336
+ index: number;
2337
+ first: boolean;
2338
+ last: boolean;
1754
2339
  }
1755
-
1756
- /** ************************
1757
- * Copyright Monkey Exchange. All Rights Reserved
1758
- * This style guide was developed by Monkey Exchange Team
1759
- * MIT Licence
1760
- ************************* */
1761
-
1762
- declare class MonkeyColumnChecked implements OnInit, AfterViewInit, OnChanges, OnDestroy {
1763
- private el;
1764
- private renderer;
1765
- private viewContainerRef;
1766
- table: MonkeyTableComponent;
1767
- checked: boolean;
1768
- disabled: boolean;
1769
- checkedChange: EventEmitter<any>;
1770
- private _cdr;
1771
- private _injector;
1772
- private _subscriptions;
1773
- checkboxRef: ComponentRef<MonkeyCheckboxComponent>;
1774
- constructor(el: ElementRef, renderer: Renderer2, viewContainerRef: ViewContainerRef, table: MonkeyTableComponent);
1775
- private renderCheckbox;
1776
- private handleDisableFromStateChanges;
1777
- ngOnInit(): void;
1778
- ngAfterViewInit(): void;
1779
- ngOnChanges(changes: SimpleChanges): void;
1780
- initializeComponent(checked: boolean, disabled: boolean): void;
1781
- ngOnDestroy(): void;
1782
- static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyColumnChecked, [null, null, null, { optional: true; }]>;
1783
- static ɵdir: i0.ɵɵDirectiveDeclaration<MonkeyColumnChecked, "[mkChecked]", never, { "checked": { "alias": "mkChecked"; "required": true; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "checkedChange": "checkedChange"; }, never, never, false, never>;
2340
+ type MonkeyTableSortKind = 'text' | 'number' | 'date';
2341
+ declare class MonkeyTableCellDirective<T> {
2342
+ readonly template: TemplateRef<MonkeyTableCellContext<T>>;
2343
+ static ngTemplateContextGuard<T>(_dir: MonkeyTableCellDirective<T>, _ctx: unknown): _ctx is MonkeyTableCellContext<T>;
2344
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyTableCellDirective<any>, never>;
2345
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MonkeyTableCellDirective<any>, "ng-template[mkCell]", never, {}, {}, never, never, true, never>;
2346
+ }
2347
+ declare class MonkeyTableHeaderCellDirective {
2348
+ readonly template: TemplateRef<void>;
2349
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyTableHeaderCellDirective, never>;
2350
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MonkeyTableHeaderCellDirective, "ng-template[mkHeaderCell]", never, {}, {}, never, never, true, never>;
2351
+ }
2352
+ declare class MonkeyTableColumnDirective<T = any> {
2353
+ readonly name: i0.InputSignal<string>;
2354
+ readonly label: i0.InputSignal<string>;
2355
+ readonly labelHidden: i0.InputSignalWithTransform<boolean, unknown>;
2356
+ readonly unit: i0.InputSignal<string>;
2357
+ readonly width: i0.InputSignal<string>;
2358
+ readonly align: i0.InputSignal<ColumnAlign>;
2359
+ readonly sortable: i0.InputSignalWithTransform<boolean, unknown>;
2360
+ readonly sortKind: i0.InputSignal<MonkeyTableSortKind>;
2361
+ readonly hideable: i0.InputSignalWithTransform<boolean, unknown>;
2362
+ readonly movable: i0.InputSignalWithTransform<boolean, unknown>;
2363
+ readonly pinnable: i0.InputSignalWithTransform<boolean, unknown>;
2364
+ readonly pinned: i0.ModelSignal<ColumnPinned>;
2365
+ readonly hidden: i0.ModelSignal<boolean>;
2366
+ readonly cell: i0.Signal<MonkeyTableCellDirective<any> | undefined>;
2367
+ readonly headerCell: i0.Signal<MonkeyTableHeaderCellDirective | undefined>;
2368
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyTableColumnDirective<any>, never>;
2369
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MonkeyTableColumnDirective<any>, "ng-container[mkColumn]", never, { "name": { "alias": "mkColumn"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "labelHidden": { "alias": "labelHidden"; "required": false; "isSignal": true; }; "unit": { "alias": "unit"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "sortable": { "alias": "sortable"; "required": false; "isSignal": true; }; "sortKind": { "alias": "sortKind"; "required": false; "isSignal": true; }; "hideable": { "alias": "hideable"; "required": false; "isSignal": true; }; "movable": { "alias": "movable"; "required": false; "isSignal": true; }; "pinnable": { "alias": "pinnable"; "required": false; "isSignal": true; }; "pinned": { "alias": "pinned"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; }, { "pinned": "pinnedChange"; "hidden": "hiddenChange"; }, ["cell", "headerCell"], never, true, never>;
2370
+ }
2371
+ declare class MonkeyTableRowDetailDirective<T> {
2372
+ readonly template: TemplateRef<{
2373
+ $implicit: T;
2374
+ row: T;
2375
+ }>;
2376
+ static ngTemplateContextGuard<T>(_dir: MonkeyTableRowDetailDirective<T>, _ctx: unknown): _ctx is {
2377
+ $implicit: T;
2378
+ row: T;
2379
+ };
2380
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyTableRowDetailDirective<any>, never>;
2381
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MonkeyTableRowDetailDirective<any>, "ng-template[mkRowDetail]", never, {}, {}, never, never, true, never>;
1784
2382
  }
1785
-
1786
- /** ************************
1787
- * Copyright Monkey Exchange. All Rights Reserved
1788
- * This style guide was developed by Monkey Exchange Team
1789
- * MIT Licence
1790
- ************************* */
1791
-
1792
- declare class MonkeyColumnExpansible implements OnInit, OnDestroy {
1793
- private el;
1794
- private renderer;
1795
- table: MonkeyTableComponent;
1796
- expansionChange: EventEmitter<any>;
1797
- private _opened;
1798
- private _subscriptions;
1799
- private _enableAnimation;
1800
- disabled: boolean;
1801
- constructor(el: ElementRef, renderer: Renderer2, table: MonkeyTableComponent);
1802
- private createSvgElement;
1803
- ngOnInit(): void;
1804
- onClick(): void;
1805
- ngOnDestroy(): void;
1806
- static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyColumnExpansible, [null, null, { optional: true; }]>;
1807
- static ɵdir: i0.ɵɵDirectiveDeclaration<MonkeyColumnExpansible, "[mkExpansible]", never, {}, { "expansionChange": "expansionChange"; }, never, never, false, never>;
2383
+ declare class MonkeyTableEmptyDirective {
2384
+ readonly template: TemplateRef<void>;
2385
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyTableEmptyDirective, never>;
2386
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MonkeyTableEmptyDirective, "ng-template[mkEmpty]", never, {}, {}, never, never, true, never>;
2387
+ }
2388
+ declare class MonkeyTableLoadingDirective {
2389
+ readonly template: TemplateRef<void>;
2390
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyTableLoadingDirective, never>;
2391
+ static ɵdir: i0.ɵɵDirectiveDeclaration<MonkeyTableLoadingDirective, "ng-template[mkLoading]", never, {}, {}, never, never, true, never>;
1808
2392
  }
1809
2393
 
1810
2394
  /** ************************
@@ -1813,33 +2397,189 @@ declare class MonkeyColumnExpansible implements OnInit, OnDestroy {
1813
2397
  * MIT Licence
1814
2398
  ************************* */
1815
2399
 
1816
- declare class MonkeyColumnSortable implements OnInit, OnDestroy {
1817
- private el;
1818
- private renderer;
1819
- table: MonkeyTableComponent;
1820
- name: string;
1821
- private _sortableDirection;
1822
- private subscriptions;
1823
- get disabled(): boolean;
1824
- constructor(el: ElementRef, renderer: Renderer2, table: MonkeyTableComponent);
1825
- private createSvgElement;
1826
- ngOnInit(): void;
1827
- onClick(): void;
1828
- ngOnDestroy(): void;
1829
- static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyColumnSortable, [null, null, { optional: true; }]>;
1830
- static ɵdir: i0.ɵɵDirectiveDeclaration<MonkeyColumnSortable, "[mkSortable]", never, { "name": { "alias": "mkSortable"; "required": true; }; }, {}, never, never, false, never>;
2400
+ declare class MonkeyTableVirtualScroll implements VirtualScrollStrategy {
2401
+ private readonly _indexChange;
2402
+ readonly scrolledIndexChange: Observable<number>;
2403
+ private _viewport;
2404
+ private _metrics;
2405
+ private _buffer;
2406
+ attach(viewport: CdkVirtualScrollViewport): void;
2407
+ detach(): void;
2408
+ onContentScrolled(): void;
2409
+ onDataLengthChanged(): void;
2410
+ onContentRendered(): void;
2411
+ onRenderedOffsetChanged(): void;
2412
+ scrollToIndex(index: number, behavior: ScrollBehavior): void;
2413
+ setMetrics(metrics: RowMetrics, buffer: number): void;
2414
+ private update;
2415
+ }
2416
+
2417
+ type Column<T> = MonkeyTableColumnDirective<T>;
2418
+ interface SlotBase {
2419
+ key: string;
2420
+ width: string | null;
2421
+ px: number;
2422
+ pinned: ColumnPinned;
2423
+ offset: number;
2424
+ align: ColumnAlign;
2425
+ }
2426
+ type Slot<T> = (SlotBase & {
2427
+ kind: 'data';
2428
+ column: Column<T>;
2429
+ }) | (SlotBase & {
2430
+ kind: 'selection' | 'expand';
2431
+ column: null;
2432
+ });
2433
+ interface RowView<T> {
2434
+ row: T;
2435
+ key: string;
2436
+ index: number;
2437
+ selectable: boolean;
1831
2438
  }
1832
-
1833
- declare class MonkeyColumnStick {
1834
- position: 'left' | 'right';
1835
- static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyColumnStick, never>;
1836
- static ɵdir: i0.ɵɵDirectiveDeclaration<MonkeyColumnStick, "[mkStick]", never, { "position": { "alias": "mkStick"; "required": true; }; }, {}, never, never, false, never>;
2439
+ interface RenderRow<T> extends RowView<T> {
2440
+ selected: boolean;
2441
+ open: boolean;
2442
+ blockedReason: string | null;
2443
+ selectLabel: string;
2444
+ expandLabel: string;
1837
2445
  }
1838
-
1839
- declare class MonkeyTableModule {
1840
- static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyTableModule, never>;
1841
- static ɵmod: i0.ɵɵNgModuleDeclaration<MonkeyTableModule, [typeof MonkeyTableComponent, typeof MonkeyColumnStick, typeof MonkeyColumnChecked, typeof MonkeyColumnSortable, typeof MonkeyColumnExpansible], [typeof i2.CommonModule, typeof MonkeyButtonComponent, typeof MonkeyPaginationSizeComponent, typeof MonkeyPaginationLabelComponent, typeof MonkeyPaginationActionComponent], [typeof MonkeyTableComponent, typeof MonkeyColumnStick, typeof MonkeyColumnChecked, typeof MonkeyColumnSortable, typeof MonkeyColumnExpansible]>;
1842
- static ɵinj: i0.ɵɵInjectorDeclaration<MonkeyTableModule>;
2446
+ declare class MonkeyTableComponent<T> implements OnDestroy {
2447
+ readonly virtualStrategy: MonkeyTableVirtualScroll;
2448
+ private readonly _zone;
2449
+ private readonly _text;
2450
+ private readonly _columns;
2451
+ private readonly _columnByName;
2452
+ private readonly _visibleColumns;
2453
+ private readonly _selectableKeys;
2454
+ private readonly _selection;
2455
+ private readonly _narrow;
2456
+ private readonly _detailHeight;
2457
+ private readonly _headHeight;
2458
+ private readonly _host;
2459
+ private _scroller?;
2460
+ private _observer?;
2461
+ private _frame;
2462
+ private _sizeStale;
2463
+ private _clientWidth;
2464
+ private _scrollWidth;
2465
+ private readonly _layout;
2466
+ readonly rows: i0.InputSignal<readonly T[]>;
2467
+ readonly rowKey: i0.InputSignal<(row: T) => string>;
2468
+ readonly rowLabel: i0.InputSignal<((row: T) => string) | undefined>;
2469
+ readonly rowSelectable: i0.InputSignal<((row: T) => boolean) | undefined>;
2470
+ readonly ariaLabel: i0.InputSignal<string>;
2471
+ readonly caption: i0.InputSignal<string>;
2472
+ readonly selectionMode: i0.InputSignal<"none" | "multiple">;
2473
+ readonly selected: i0.ModelSignal<ReadonlySet<string>>;
2474
+ readonly maxSelected: i0.InputSignal<number>;
2475
+ readonly sort: i0.InputSignal<SortState | null>;
2476
+ readonly expandable: i0.InputSignalWithTransform<boolean, unknown>;
2477
+ readonly expanded: i0.ModelSignal<ReadonlySet<string>>;
2478
+ readonly reorderable: i0.InputSignalWithTransform<boolean, unknown>;
2479
+ readonly hideable: i0.InputSignalWithTransform<boolean, unknown>;
2480
+ readonly pinnable: i0.InputSignalWithTransform<boolean, unknown>;
2481
+ readonly rowHeight: i0.InputSignal<number>;
2482
+ readonly maxVisibleRows: i0.InputSignal<number | "none">;
2483
+ readonly virtualScroll: i0.InputSignal<"auto" | "off">;
2484
+ readonly columnOrder: i0.ModelSignal<readonly string[]>;
2485
+ readonly columnState: i0.InputSignal<readonly MonkeyTableColumnState[]>;
2486
+ readonly striped: i0.InputSignalWithTransform<boolean, unknown>;
2487
+ readonly loading: i0.InputSignalWithTransform<boolean, unknown>;
2488
+ readonly emptyText: i0.InputSignal<string>;
2489
+ readonly skeletonRows: i0.InputSignal<number | "auto">;
2490
+ readonly onSortChange: i0.OutputEmitterRef<SortState | null>;
2491
+ readonly onColumnHidden: i0.OutputEmitterRef<{
2492
+ name: string;
2493
+ label: string;
2494
+ }>;
2495
+ readonly onColumnStateChange: i0.OutputEmitterRef<MonkeyTableColumnState[]>;
2496
+ readonly onSelectionChange: i0.OutputEmitterRef<string[]>;
2497
+ readonly onExpandChange: i0.OutputEmitterRef<{
2498
+ row: T;
2499
+ key: string;
2500
+ expanded: boolean;
2501
+ }>;
2502
+ protected readonly emptyTemplate: i0.Signal<MonkeyTableEmptyDirective | undefined>;
2503
+ protected readonly loadingTemplate: i0.Signal<MonkeyTableLoadingDirective | undefined>;
2504
+ protected readonly rowDetailTemplate: i0.Signal<MonkeyTableRowDetailDirective<any> | undefined>;
2505
+ protected readonly plainScroller: i0.Signal<ElementRef<HTMLElement> | undefined>;
2506
+ protected readonly headClip: i0.Signal<ElementRef<HTMLElement> | undefined>;
2507
+ protected readonly virtualViewport: i0.Signal<CdkVirtualScrollViewport | undefined>;
2508
+ protected readonly scrollTarget: i0.Signal<HTMLElement | null>;
2509
+ private readonly _rowCap;
2510
+ protected readonly bounded: i0.Signal<boolean>;
2511
+ protected readonly virtual: i0.Signal<boolean>;
2512
+ protected readonly effectiveHeight: i0.Signal<string>;
2513
+ protected readonly rowMetrics: i0.Signal<{
2514
+ openIndices: number[];
2515
+ count: number;
2516
+ rowHeight: number;
2517
+ detailHeight: number;
2518
+ }>;
2519
+ protected readonly overflowing: i0.WritableSignal<boolean>;
2520
+ protected readonly atStart: i0.WritableSignal<boolean>;
2521
+ protected readonly atEnd: i0.WritableSignal<boolean>;
2522
+ protected readonly openMenu: i0.WritableSignal<string | null>;
2523
+ protected readonly slots: i0.Signal<Slot<T>[]>;
2524
+ protected readonly pinnedStartWidth: i0.Signal<number>;
2525
+ protected readonly pinnedEndWidth: i0.Signal<number>;
2526
+ protected readonly totalWidth: i0.Signal<number>;
2527
+ protected readonly allSelected: i0.Signal<boolean>;
2528
+ protected readonly someSelected: i0.Signal<boolean>;
2529
+ protected readonly atSelectionLimit: i0.Signal<boolean>;
2530
+ protected readonly hasSelectable: i0.Signal<boolean>;
2531
+ protected readonly rowViews: i0.Signal<RowView<T>[]>;
2532
+ protected readonly renderRows: i0.Signal<RenderRow<T>[]>;
2533
+ protected readonly skeletonRange: i0.Signal<number[]>;
2534
+ protected readonly labels: i0.Signal<{
2535
+ moveLeft: string;
2536
+ moveRight: string;
2537
+ hide: string;
2538
+ pin: string;
2539
+ unpin: string;
2540
+ selectAll: string;
2541
+ detail: string;
2542
+ limit: string;
2543
+ notSelectable: string;
2544
+ empty: string;
2545
+ }>;
2546
+ constructor();
2547
+ private word;
2548
+ private effectivePinned;
2549
+ private schedule;
2550
+ private cancelFrame;
2551
+ private measure;
2552
+ private closeMenuWhenColumnGone;
2553
+ private currentOrder;
2554
+ private currentColumnState;
2555
+ private commitSelection;
2556
+ private applyOrder;
2557
+ private restoreColumnState;
2558
+ ngOnDestroy(): void;
2559
+ protected closeMenu: () => void;
2560
+ protected trackKey: (_index: number, view: RowView<T>) => string;
2561
+ protected toggleMenu(column: Column<T>): void;
2562
+ protected hasMenu(column: Column<T> | null): boolean;
2563
+ protected canHide(column: Column<T>): boolean;
2564
+ protected canReorder(column: Column<T>): boolean;
2565
+ protected canPin(column: Column<T>): boolean;
2566
+ protected isLastColumn(): boolean;
2567
+ protected sortLabels(column: Column<T>): {
2568
+ asc: string;
2569
+ desc: string;
2570
+ };
2571
+ protected ariaSortFor(column: Column<T> | null): string | null;
2572
+ protected isSortedBy(column: Column<T>, direction: SortDirection): boolean;
2573
+ protected sortBy(column: Column<T>, direction: SortDirection): void;
2574
+ protected canMove(column: Column<T>, delta: -1 | 1): boolean;
2575
+ protected move(column: Column<T>, delta: -1 | 1): void;
2576
+ protected hide(column: Column<T>): void;
2577
+ protected togglePin(column: Column<T>): void;
2578
+ protected toggleRow(view: RowView<T>): void;
2579
+ protected toggleAllRows(): void;
2580
+ protected toggleOpen(view: RowView<T>): void;
2581
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyTableComponent<any>, never>;
2582
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyTableComponent<any>, "monkey-table", never, { "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": true; "isSignal": true; }; "rowLabel": { "alias": "rowLabel"; "required": false; "isSignal": true; }; "rowSelectable": { "alias": "rowSelectable"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": true; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "maxSelected": { "alias": "maxSelected"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "hideable": { "alias": "hideable"; "required": false; "isSignal": true; }; "pinnable": { "alias": "pinnable"; "required": false; "isSignal": true; }; "rowHeight": { "alias": "rowHeight"; "required": false; "isSignal": true; }; "maxVisibleRows": { "alias": "maxVisibleRows"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "columnOrder": { "alias": "columnOrder"; "required": false; "isSignal": true; }; "columnState": { "alias": "columnState"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyText": { "alias": "emptyText"; "required": false; "isSignal": true; }; "skeletonRows": { "alias": "skeletonRows"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "expanded": "expandedChange"; "columnOrder": "columnOrderChange"; "onSortChange": "onSortChange"; "onColumnHidden": "onColumnHidden"; "onColumnStateChange": "onColumnStateChange"; "onSelectionChange": "onSelectionChange"; "onExpandChange": "onExpandChange"; }, ["_columns", "emptyTemplate", "loadingTemplate", "rowDetailTemplate"], ["monkey-pagination-size", "monkey-pagination-label", "monkey-pagination-action"], true, never>;
1843
2583
  }
1844
2584
 
1845
2585
  /** ************************
@@ -1923,35 +2663,6 @@ declare class MonkeyTabsModule {
1923
2663
  static ɵinj: i0.ɵɵInjectorDeclaration<MonkeyTabsModule>;
1924
2664
  }
1925
2665
 
1926
- /** ************************
1927
- * Copyright Monkey Exchange. All Rights Reserved
1928
- * This style guide was developed by Monkey Exchange Team
1929
- * MIT Licence
1930
- ************************* */
1931
-
1932
- declare class MonkeyToastComponent {
1933
- private host;
1934
- message: string | undefined;
1935
- icon: string | undefined;
1936
- type: MonkeyToastType;
1937
- isClosable: boolean;
1938
- actionLabel: string | undefined;
1939
- actionIcon: string | undefined;
1940
- onActionClick: EventEmitter<string>;
1941
- onClose: EventEmitter<string>;
1942
- protected _uid: string;
1943
- protected _id: string;
1944
- get id(): string;
1945
- set id(value: string);
1946
- get class(): string;
1947
- constructor(host: ElementRef<HTMLElement>);
1948
- close(): void;
1949
- onAnimationEnd(event: AnimationEvent): void;
1950
- static ɵfac: i0.ɵɵFactoryDeclaration<MonkeyToastComponent, never>;
1951
- static ɵcmp: i0.ɵɵComponentDeclaration<MonkeyToastComponent, "monkey-toast", never, { "message": { "alias": "message"; "required": false; }; "icon": { "alias": "icon"; "required": false; }; "type": { "alias": "type"; "required": false; }; "isClosable": { "alias": "isClosable"; "required": false; }; "actionLabel": { "alias": "actionLabel"; "required": false; }; "actionIcon": { "alias": "actionIcon"; "required": false; }; "id": { "alias": "id"; "required": false; }; }, { "onActionClick": "onActionClick"; "onClose": "onClose"; }, never, never, true, never>;
1952
- static ngAcceptInputType_isClosable: unknown;
1953
- }
1954
-
1955
2666
  declare class MonkeyToggleComponent {
1956
2667
  disabled: boolean;
1957
2668
  size: 'lg' | 'md' | 'sm';
@@ -2316,5 +3027,5 @@ declare const MECX_COUNTRY_ISO_CODE: InjectionToken<string>;
2316
3027
  declare const MECX_GOOGLE_API_KEY: InjectionToken<string>;
2317
3028
  declare function injectTokenWithWarning<T>(token: InjectionToken<T>, name?: string): T | null;
2318
3029
 
2319
- export { MECX_COUNTRY_ISO_CODE, MECX_GOOGLE_API_KEY, MECX_I18N_WRAPPER, MECX_MODAL_DATA, MECX_MODAL_DEFAULT_CONFIG, MECX_POPOVER_OPTIONS, MonkeyAccordionComponent, MonkeyActionBarComponent, MonkeyAlertComponent, MonkeyAutocompleteAddressComponent, MonkeyAutocompleteComponent, MonkeyAvatarComponent, MonkeyBadgeComponent, MonkeyBadgeDirective, MonkeyBreadcrumbComponent, MonkeyButtonComponent, MonkeyCheckboxComponent, MonkeyColumnChecked, MonkeyColumnExpansible, MonkeyColumnSortable, MonkeyColumnStick, MonkeyComplexFilterBarComponent, MonkeyDateRangeComponent, MonkeyDictionaryService, MonkeyDisplayDirective, MonkeyDividerComponent, MonkeyDownloadButtonComponent, MonkeyEcxAddressService, MonkeyErrorDirective, MonkeyFilterBarComponent, MonkeyFilterBarService, MonkeyFormDirective, MonkeyFormFieldComponent, MonkeyFormFieldControl, MonkeyFormFieldModule, MonkeyHelperDirective, MonkeyIconButtonComponent, MonkeyInfoDirective, MonkeyInputCodeComponent, MonkeyInputCurrencyDirective, MonkeyInputDateRangeComponent, MonkeyInputDirective, MonkeyInputModule, MonkeyInputPhoneComponent, MonkeyInputUploadComponent, MonkeyLabelDirective, MonkeyModalActionsDirective, MonkeyModalComponent, MonkeyModalConfig, MonkeyModalContentDirective, MonkeyModalModule, MonkeyModalRef, MonkeyModalService, MonkeyModalSubtitleDirective, MonkeyModalTitleDirective, MonkeyOptionComponent, MonkeyPaginationActionComponent, MonkeyPaginationLabelComponent, MonkeyPaginationSizeComponent, MonkeyPassNumberComponent, MonkeyPassSecretNumberComponent, MonkeyPopoverContentComponent, MonkeyPopoverDirective, MonkeyPrefixDirective, MonkeyRadioButtonComponent, MonkeySecurityLevelComponent, MonkeySelectComponent, MonkeyStatusComponent, MonkeyStepComponent, MonkeyStepperComponent, MonkeyStepperModule, MonkeyStepperService, MonkeySuffixDirective, MonkeyTabComponent, MonkeyTabLinkDirective, MonkeyTableComponent, MonkeyTableModule, MonkeyTabsComponent, MonkeyTabsModule, MonkeyToastComponent, MonkeyToastRef, MonkeyToastService, MonkeyToggleComponent, MonkeyToggleLineButtonComponent, MonkeyToggleLineComponent, MonkeyTooltipComponent, MonkeyTooltipDirective, MonkeyUserProfileButtonComponent, MonkeyUserProfileComponent, getCurrencySymbol, injectTokenWithWarning };
2320
- export type { ActiveFilter, AutocompleteSuggestion, AutocompleteSuggestionType, ComplexFilterCondition, ComplexFilterGroup, ComplexFilterOperator, ComplexFilterResult, FilterBarConfig, FilterBarState, FilterOption, FilterType, GoogleApiPlaces, GoogleApiPlacesAddressComponents, GoogleApiPlacesResponse, MonkeyAlertType, MonkeyAutocompleteData, MonkeyAutocompleteResponse, MonkeyBreadcrumb, MonkeyButtonColor, MonkeyButtonType, MonkeyDownloadButtonChangeEvent, MonkeyInputUploadChangeEvent, MonkeyModalConfirmationConfig, MonkeyModalDefaultConfig, MonkeyPopoverDir, MonkeyPopoverOptions, MonkeySize, MonkeyTableScrollConfig, MonkeyToastPosition, MonkeyToastType, StatusOption, ToastConfig };
3030
+ export { MECX_COUNTRY_ISO_CODE, MECX_GOOGLE_API_KEY, MECX_I18N_WRAPPER, MECX_MODAL_DATA, MECX_MODAL_DEFAULT_CONFIG, MECX_POPOVER_OPTIONS, MonkeyAccordionComponent, MonkeyActionBarComponent, MonkeyAlertComponent, MonkeyAutocompleteAddressComponent, MonkeyAutocompleteComponent, MonkeyAvatarComponent, MonkeyBadgeComponent, MonkeyBadgeDirective, MonkeyBreadcrumbComponent, MonkeyButtonComponent, MonkeyCheckboxComponent, MonkeyComplexFilterBarComponent, MonkeyDateRangeComponent, MonkeyDictionaryService, MonkeyDisplayDirective, MonkeyDividerComponent, MonkeyDownloadButtonComponent, MonkeyEcxAddressService, MonkeyErrorDirective, MonkeyFilterBarComponent, MonkeyFilterBarService, MonkeyFilterBarV2Component, MonkeyFilterChipComponent, MonkeyFilterMenuComponent, MonkeyFilterMenuItemComponent, MonkeyFilterSegmentComponent, MonkeyFilterTriggerComponent, MonkeyFormDirective, MonkeyFormFieldComponent, MonkeyFormFieldControl, MonkeyFormFieldModule, MonkeyHelperDirective, MonkeyIconButtonComponent, MonkeyInfoDirective, MonkeyInputCodeComponent, MonkeyInputCurrencyDirective, MonkeyInputDateRangeComponent, MonkeyInputDirective, MonkeyInputModule, MonkeyInputPhoneComponent, MonkeyInputUploadComponent, MonkeyLabelDirective, MonkeyModalActionsDirective, MonkeyModalComponent, MonkeyModalConfig, MonkeyModalContentDirective, MonkeyModalModule, MonkeyModalRef, MonkeyModalService, MonkeyModalSubtitleDirective, MonkeyModalTitleDirective, MonkeyOptionComponent, MonkeyPaginationActionComponent, MonkeyPaginationLabelComponent, MonkeyPaginationSizeComponent, MonkeyPassNumberComponent, MonkeyPassSecretNumberComponent, MonkeyPopoverContentComponent, MonkeyPopoverDirective, MonkeyPrefixDirective, MonkeyRadioButtonComponent, MonkeyScrollbarComponent, MonkeySecurityLevelComponent, MonkeySelectComponent, MonkeyStatusComponent, MonkeyStepComponent, MonkeyStepperComponent, MonkeyStepperModule, MonkeyStepperService, MonkeySuffixDirective, MonkeyTabComponent, MonkeyTabLinkDirective, MonkeyTableCellDirective, MonkeyTableColumnDirective, MonkeyTableComponent, MonkeyTableEmptyDirective, MonkeyTableHeaderCellDirective, MonkeyTableLoadingDirective, MonkeyTableRowDetailDirective, MonkeyTabsComponent, MonkeyTabsModule, MonkeyToastComponent, MonkeyToastRef, MonkeyToastService, MonkeyToggleComponent, MonkeyToggleLineButtonComponent, MonkeyToggleLineComponent, MonkeyTooltipComponent, MonkeyTooltipDirective, MonkeyUserProfileButtonComponent, MonkeyUserProfileComponent, addKeys, ariaSortOf, getCurrencySymbol, indexAtOffset, injectTokenWithWarning, interpolate, mergeOrder, offsetOfIndex, removeKeys, sameColumnState, selectionState, sortByOrder, toPx, toggleKey, totalHeight };
3031
+ export type { ActiveFilter, AutocompleteSuggestion, AutocompleteSuggestionType, ColumnAlign, ColumnPinned, ComplexFilterCondition, ComplexFilterGroup, ComplexFilterOperator, ComplexFilterResult, FilterBarConfig, FilterBarState, FilterOption, FilterType, GoogleApiPlaces, GoogleApiPlacesAddressComponents, GoogleApiPlacesResponse, MonkeyAlertType, MonkeyAutocompleteData, MonkeyAutocompleteResponse, MonkeyBreadcrumb, MonkeyButtonColor, MonkeyButtonType, MonkeyDownloadButtonChangeEvent, MonkeyFilterBarV2Row, MonkeyFilterMenuItemProperty, MonkeyFilterTriggerVariant, MonkeyInputUploadChangeEvent, MonkeyModalConfirmationConfig, MonkeyModalDefaultConfig, MonkeyPopoverDir, MonkeyPopoverOptions, MonkeyScrollbarOrientation, MonkeyScrollbarSize, MonkeySize, MonkeyTableCellContext, MonkeyTableColumnState, MonkeyTableScrollConfig, MonkeyTableSortKind, MonkeyToastPosition, MonkeyToastType, RowMetrics, SelectionState, SortDirection, SortState, StatusOption, ToastConfig };