@beshkari/mb-ui 0.5.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +98 -0
  3. package/esm2022/beshkari-mb-ui.mjs +5 -0
  4. package/esm2022/lib/accordion/mb-accordion.component.mjs +37 -0
  5. package/esm2022/lib/alert/mb-alert.component.mjs +28 -0
  6. package/esm2022/lib/avatar/mb-avatar.component.mjs +32 -0
  7. package/esm2022/lib/badge/mb-badge.component.mjs +28 -0
  8. package/esm2022/lib/breadcrumb/mb-breadcrumb.component.mjs +23 -0
  9. package/esm2022/lib/button/mb-button.component.mjs +48 -0
  10. package/esm2022/lib/card/mb-card.component.mjs +28 -0
  11. package/esm2022/lib/checkbox/mb-checkbox.component.mjs +75 -0
  12. package/esm2022/lib/chip/mb-chip.component.mjs +33 -0
  13. package/esm2022/lib/combobox/mb-combobox.component.mjs +235 -0
  14. package/esm2022/lib/confirm/mb-confirm-dialog.component.mjs +44 -0
  15. package/esm2022/lib/confirm/mb-confirm.service.mjs +39 -0
  16. package/esm2022/lib/confirm/mb-confirm.types.mjs +2 -0
  17. package/esm2022/lib/datepicker/mb-datepicker.component.mjs +382 -0
  18. package/esm2022/lib/dialog/mb-dialog-container.component.mjs +37 -0
  19. package/esm2022/lib/dialog/mb-dialog-ref.mjs +17 -0
  20. package/esm2022/lib/dialog/mb-dialog.component.mjs +87 -0
  21. package/esm2022/lib/dialog/mb-dialog.service.mjs +61 -0
  22. package/esm2022/lib/dialog/mb-dialog.tokens.mjs +3 -0
  23. package/esm2022/lib/divider/mb-divider.component.mjs +18 -0
  24. package/esm2022/lib/drawer/mb-drawer.component.mjs +34 -0
  25. package/esm2022/lib/dropdown/mb-dropdown.component.mjs +24 -0
  26. package/esm2022/lib/empty/mb-empty.component.mjs +27 -0
  27. package/esm2022/lib/form-field/mb-form-field.component.mjs +24 -0
  28. package/esm2022/lib/grid/mb-grid-data.mjs +266 -0
  29. package/esm2022/lib/grid/mb-grid-export.mjs +36 -0
  30. package/esm2022/lib/grid/mb-grid-messages.mjs +10 -0
  31. package/esm2022/lib/grid/mb-grid-state-adapter.mjs +97 -0
  32. package/esm2022/lib/grid/mb-grid-state.service.mjs +47 -0
  33. package/esm2022/lib/grid/mb-grid-template.directive.mjs +109 -0
  34. package/esm2022/lib/grid/mb-grid.component.mjs +998 -0
  35. package/esm2022/lib/grid/mb-grid.types.mjs +2 -0
  36. package/esm2022/lib/i18n/mb-ui-locale.mjs +18 -0
  37. package/esm2022/lib/i18n/mb-ui-messages-en.mjs +103 -0
  38. package/esm2022/lib/i18n/mb-ui-messages-fa.mjs +103 -0
  39. package/esm2022/lib/i18n/mb-ui-messages.mjs +34 -0
  40. package/esm2022/lib/i18n/mb-ui-messages.types.mjs +2 -0
  41. package/esm2022/lib/i18n/provide-mb-ui.mjs +20 -0
  42. package/esm2022/lib/input/mb-input.component.mjs +86 -0
  43. package/esm2022/lib/pagination/mb-pagination.component.mjs +47 -0
  44. package/esm2022/lib/progress/mb-progress.component.mjs +29 -0
  45. package/esm2022/lib/radio/mb-radio-group.component.mjs +63 -0
  46. package/esm2022/lib/select/mb-select.component.mjs +73 -0
  47. package/esm2022/lib/skeleton/mb-skeleton.component.mjs +24 -0
  48. package/esm2022/lib/spinner/mb-spinner.component.mjs +21 -0
  49. package/esm2022/lib/switch/mb-switch.component.mjs +59 -0
  50. package/esm2022/lib/tabs/mb-tabs.component.mjs +31 -0
  51. package/esm2022/lib/textarea/mb-textarea.component.mjs +83 -0
  52. package/esm2022/lib/toast/mb-toast-container.component.mjs +21 -0
  53. package/esm2022/lib/toast/mb-toast.service.mjs +47 -0
  54. package/esm2022/lib/toast/mb-toast.types.mjs +2 -0
  55. package/esm2022/lib/tokens/mb-ui-config.token.mjs +11 -0
  56. package/esm2022/lib/tooltip/mb-tooltip.directive.mjs +48 -0
  57. package/esm2022/lib/utils/coerce.mjs +10 -0
  58. package/esm2022/lib/utils/mb-jalali-date.mjs +120 -0
  59. package/esm2022/public-api.mjs +56 -0
  60. package/fesm2022/beshkari-mb-ui.mjs +3828 -0
  61. package/fesm2022/beshkari-mb-ui.mjs.map +1 -0
  62. package/index.d.ts +5 -0
  63. package/lib/accordion/mb-accordion.component.d.ts +19 -0
  64. package/lib/alert/mb-alert.component.d.ts +12 -0
  65. package/lib/avatar/mb-avatar.component.d.ts +12 -0
  66. package/lib/badge/mb-badge.component.d.ts +12 -0
  67. package/lib/breadcrumb/mb-breadcrumb.component.d.ts +15 -0
  68. package/lib/button/mb-button.component.d.ts +19 -0
  69. package/lib/card/mb-card.component.d.ts +10 -0
  70. package/lib/checkbox/mb-checkbox.component.d.ts +25 -0
  71. package/lib/chip/mb-chip.component.d.ts +12 -0
  72. package/lib/combobox/mb-combobox.component.d.ts +65 -0
  73. package/lib/confirm/mb-confirm-dialog.component.d.ts +17 -0
  74. package/lib/confirm/mb-confirm.service.d.ts +12 -0
  75. package/lib/confirm/mb-confirm.types.d.ts +10 -0
  76. package/lib/datepicker/mb-datepicker.component.d.ts +87 -0
  77. package/lib/dialog/mb-dialog-container.component.d.ts +14 -0
  78. package/lib/dialog/mb-dialog-ref.d.ts +9 -0
  79. package/lib/dialog/mb-dialog.component.d.ts +27 -0
  80. package/lib/dialog/mb-dialog.service.d.ts +14 -0
  81. package/lib/dialog/mb-dialog.tokens.d.ts +13 -0
  82. package/lib/divider/mb-divider.component.d.ts +7 -0
  83. package/lib/drawer/mb-drawer.component.d.ts +14 -0
  84. package/lib/dropdown/mb-dropdown.component.d.ts +10 -0
  85. package/lib/empty/mb-empty.component.d.ts +10 -0
  86. package/lib/form-field/mb-form-field.component.d.ts +9 -0
  87. package/lib/grid/mb-grid-data.d.ts +20 -0
  88. package/lib/grid/mb-grid-export.d.ts +9 -0
  89. package/lib/grid/mb-grid-messages.d.ts +6 -0
  90. package/lib/grid/mb-grid-state-adapter.d.ts +24 -0
  91. package/lib/grid/mb-grid-state.service.d.ts +10 -0
  92. package/lib/grid/mb-grid-template.directive.d.ts +43 -0
  93. package/lib/grid/mb-grid.component.d.ts +233 -0
  94. package/lib/grid/mb-grid.types.d.ts +255 -0
  95. package/lib/i18n/mb-ui-locale.d.ts +2 -0
  96. package/lib/i18n/mb-ui-messages-en.d.ts +3 -0
  97. package/lib/i18n/mb-ui-messages-fa.d.ts +3 -0
  98. package/lib/i18n/mb-ui-messages.d.ts +5 -0
  99. package/lib/i18n/mb-ui-messages.types.d.ts +90 -0
  100. package/lib/i18n/provide-mb-ui.d.ts +7 -0
  101. package/lib/input/mb-input.component.d.ts +30 -0
  102. package/lib/pagination/mb-pagination.component.d.ts +16 -0
  103. package/lib/progress/mb-progress.component.d.ts +11 -0
  104. package/lib/radio/mb-radio-group.component.d.ts +30 -0
  105. package/lib/select/mb-select.component.d.ts +31 -0
  106. package/lib/skeleton/mb-skeleton.component.d.ts +9 -0
  107. package/lib/spinner/mb-spinner.component.d.ts +9 -0
  108. package/lib/switch/mb-switch.component.d.ts +22 -0
  109. package/lib/tabs/mb-tabs.component.d.ts +19 -0
  110. package/lib/textarea/mb-textarea.component.d.ts +29 -0
  111. package/lib/toast/mb-toast-container.component.d.ts +10 -0
  112. package/lib/toast/mb-toast.service.d.ts +15 -0
  113. package/lib/toast/mb-toast.types.d.ts +8 -0
  114. package/lib/tokens/mb-ui-config.token.d.ts +12 -0
  115. package/lib/tooltip/mb-tooltip.directive.d.ts +13 -0
  116. package/lib/utils/coerce.d.ts +3 -0
  117. package/lib/utils/mb-jalali-date.d.ts +18 -0
  118. package/package.json +50 -0
  119. package/public-api.d.ts +55 -0
  120. package/theme/_components.scss +19 -0
  121. package/theme/_dark.scss +1 -0
  122. package/theme/_density.scss +1 -0
  123. package/theme/_tokens.scss +57 -0
  124. package/theme/mb-ui.scss +28 -0
@@ -0,0 +1,233 @@
1
+ import { AfterContentInit, ChangeDetectorRef, EventEmitter, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, TemplateRef } from '@angular/core';
2
+ import { CdkDragDrop } from '@angular/cdk/drag-drop';
3
+ import { MbGridCellClickEvent, MbGridColumn, MbGridColumnReorderEvent, MbGridColumnResizeEvent, MbGridCompositeFilterDescriptor, MbGridDataMode, MbGridDensity, MbGridFilterMode, MbGridFilterOperator, MbGridEditMode, MbGridEditEvent, MbGridSaveEvent, MbGridCancelEvent, MbGridRemoveEvent, MbGridSelectionChangeEvent, MbGridColumnVisibilityEvent, MbGridColumnLockEvent, MbGridDetailToggleEvent, MbGridGroupChangeEvent, MbGridGroupDescriptor, MbGridPageChangeEvent, MbGridProcessedResult, MbGridRenderRow, MbGridRowClickEvent, MbGridSelectionMode, MbGridSortChangeEvent, MbGridState } from './mb-grid.types';
4
+ import { MbGridStateService } from './mb-grid-state.service';
5
+ import { MbGridCellTemplateDirective, MbGridDetailTemplateDirective, MbGridEditTemplateDirective, MbGridFooterTemplateDirective, MbGridHeaderTemplateDirective, MbGridToolbarTemplateDirective } from './mb-grid-template.directive';
6
+ import { MbUiConfig } from '../tokens/mb-ui-config.token';
7
+ import { MbGridMessages } from './mb-grid-messages';
8
+ import * as i0 from "@angular/core";
9
+ export declare class MbGridComponent<T extends Record<string, any> = Record<string, any>> implements OnInit, OnChanges, AfterContentInit, OnDestroy {
10
+ private readonly cdr;
11
+ private readonly stateStore;
12
+ private readonly uiConfig;
13
+ readonly messages: MbGridMessages;
14
+ data: T[];
15
+ columns: MbGridColumn<T>[];
16
+ loading: boolean;
17
+ dataMode: MbGridDataMode;
18
+ state: MbGridState<T>;
19
+ total: number;
20
+ height: number | string | null;
21
+ rowHeight: number;
22
+ density: MbGridDensity;
23
+ locale?: string;
24
+ dir?: 'rtl' | 'ltr';
25
+ noRecordsText?: string;
26
+ loadingText?: string;
27
+ pageable: boolean;
28
+ pageSizeOptions: number[];
29
+ sortable: boolean;
30
+ multiSort: boolean;
31
+ filterable: boolean;
32
+ filterMode: MbGridFilterMode;
33
+ groupable: boolean;
34
+ selectable: boolean;
35
+ selectionMode: MbGridSelectionMode;
36
+ rowKey: keyof T | string | ((row: T) => string | number);
37
+ selectedKeys: Array<string | number>;
38
+ resizable: boolean;
39
+ reorderable: boolean;
40
+ columnMenu: boolean;
41
+ showToolbar: boolean;
42
+ showSearch: boolean;
43
+ showColumnChooser: boolean;
44
+ showExport: boolean;
45
+ showFooter: boolean;
46
+ virtualScroll: boolean;
47
+ exportFileName: string;
48
+ excelFileName: string;
49
+ jsonFileName: string;
50
+ showExcelExport: boolean;
51
+ showJsonExport: boolean;
52
+ persistKey: string;
53
+ autoPersist: boolean;
54
+ editable: boolean;
55
+ editMode: MbGridEditMode;
56
+ allowAdd: boolean;
57
+ allowDelete: boolean;
58
+ confirmDelete: boolean;
59
+ commandColumnTitle?: string;
60
+ newItemFactory?: () => T;
61
+ expandable: boolean;
62
+ detailInitiallyExpanded: boolean;
63
+ rowClassName?: string | ((row: T, rowIndex: number) => string | string[] | Record<string, boolean>);
64
+ responsiveColumns: boolean;
65
+ stateChange: EventEmitter<MbGridState<T>>;
66
+ pageChange: EventEmitter<MbGridPageChangeEvent>;
67
+ sortChange: EventEmitter<MbGridSortChangeEvent<T>>;
68
+ filterChange: EventEmitter<{
69
+ filter?: MbGridCompositeFilterDescriptor<T>;
70
+ }>;
71
+ groupChange: EventEmitter<MbGridGroupChangeEvent<T>>;
72
+ selectedKeysChange: EventEmitter<(string | number)[]>;
73
+ columnResize: EventEmitter<MbGridColumnResizeEvent<T>>;
74
+ columnReorder: EventEmitter<MbGridColumnReorderEvent<T>>;
75
+ columnVisibilityChange: EventEmitter<MbGridColumnVisibilityEvent<T>>;
76
+ columnLockChange: EventEmitter<MbGridColumnLockEvent<T>>;
77
+ selectionChange: EventEmitter<MbGridSelectionChangeEvent<T>>;
78
+ edit: EventEmitter<MbGridEditEvent<T>>;
79
+ save: EventEmitter<MbGridSaveEvent<T>>;
80
+ cancel: EventEmitter<MbGridCancelEvent<T>>;
81
+ remove: EventEmitter<MbGridRemoveEvent<T>>;
82
+ detailToggle: EventEmitter<MbGridDetailToggleEvent<T>>;
83
+ rowClick: EventEmitter<MbGridRowClickEvent<T>>;
84
+ cellClick: EventEmitter<MbGridCellClickEvent<T>>;
85
+ cellTemplates?: QueryList<MbGridCellTemplateDirective<T>>;
86
+ headerTemplates?: QueryList<MbGridHeaderTemplateDirective<T>>;
87
+ editTemplates?: QueryList<MbGridEditTemplateDirective<T>>;
88
+ footerTemplates?: QueryList<MbGridFooterTemplateDirective<T>>;
89
+ toolbarTemplate?: MbGridToolbarTemplateDirective<T>;
90
+ detailTemplate?: MbGridDetailTemplateDirective<T>;
91
+ processed: MbGridProcessedResult<T>;
92
+ internalColumns: MbGridColumn<T>[];
93
+ globalSearch: string;
94
+ filtersByField: Record<string, {
95
+ operator: MbGridFilterOperator;
96
+ value: unknown;
97
+ }>;
98
+ openColumnMenuField: string;
99
+ resizing?: {
100
+ field: string;
101
+ startX: number;
102
+ startWidth: number;
103
+ };
104
+ expandedGroupKeys: Set<string>;
105
+ expandedDetailKeys: Set<string | number>;
106
+ editingKey: string | number | null;
107
+ editingModel: T | null;
108
+ originalModel: T | null;
109
+ editingRowIndex: number;
110
+ editingIsNew: boolean;
111
+ validationErrors: Record<string, string>;
112
+ private readonly mediaQueryLists;
113
+ private readonly mediaListeners;
114
+ readonly textOperators: MbGridFilterOperator[];
115
+ readonly numericOperators: MbGridFilterOperator[];
116
+ readonly booleanOperators: MbGridFilterOperator[];
117
+ constructor(cdr: ChangeDetectorRef, stateStore: MbGridStateService, uiConfig: MbUiConfig, messages: MbGridMessages);
118
+ get effectiveLocale(): string;
119
+ get effectiveDir(): 'rtl' | 'ltr';
120
+ get effectiveCommandColumnTitle(): string;
121
+ private get formatOptions();
122
+ ngOnInit(): void;
123
+ ngOnDestroy(): void;
124
+ ngOnChanges(changes: SimpleChanges): void;
125
+ ngAfterContentInit(): void;
126
+ get visibleColumns(): MbGridColumn<T>[];
127
+ get lockedStartColumns(): MbGridColumn<T>[];
128
+ get lockedEndColumns(): MbGridColumn<T>[];
129
+ get hasFilterRow(): boolean;
130
+ get hasColumnMenu(): boolean;
131
+ get pageIndex(): number;
132
+ get pageSize(): number;
133
+ get effectiveTotal(): number;
134
+ get pageCount(): number;
135
+ get from(): number;
136
+ get to(): number;
137
+ get gridStyle(): Record<string, string | null>;
138
+ get allVisibleRowsSelected(): boolean;
139
+ get someVisibleRowsSelected(): boolean;
140
+ get toolbarContext(): {
141
+ state: MbGridState<T>;
142
+ total: number;
143
+ selectedKeys: (string | number)[];
144
+ selectedRows: T[];
145
+ add: () => void;
146
+ exportCsv: () => void;
147
+ exportExcel: () => void;
148
+ reset: () => void;
149
+ };
150
+ get selectedRows(): T[];
151
+ get columnSpan(): number;
152
+ get showCommandColumn(): boolean;
153
+ getOperatorLabel(operator: MbGridFilterOperator): string;
154
+ getOperators(column: MbGridColumn<T>): MbGridFilterOperator[];
155
+ getColumnStyle(column: MbGridColumn<T>): Record<string, string | null>;
156
+ getColumnClass(column: MbGridColumn<T>): Record<string, boolean>;
157
+ isLockedStart(column: MbGridColumn<T>): boolean;
158
+ isLockedEnd(column: MbGridColumn<T>): boolean;
159
+ matchesMedia(column: MbGridColumn<T>): boolean;
160
+ pagerInfoText(): string;
161
+ getSortIndex(column: MbGridColumn<T>): number;
162
+ getSortDirection(column: MbGridColumn<T>): '' | 'asc' | 'desc';
163
+ getValue(row: T, column: MbGridColumn<T>, rowIndex?: number): unknown;
164
+ formatCell(row: T, column: MbGridColumn<T>, rowIndex: number): string;
165
+ getCellClass(row: T, column: MbGridColumn<T>, rowIndex: number): string | string[] | Record<string, boolean> | null;
166
+ getCellTemplate(column: MbGridColumn<T>): TemplateRef<any> | null;
167
+ getHeaderTemplate(column: MbGridColumn<T>): TemplateRef<any> | null;
168
+ getFooterTemplate(column: MbGridColumn<T>): TemplateRef<any> | null;
169
+ getRowKey(row: T): string | number;
170
+ toggleSort(column: MbGridColumn<T>, event?: MouseEvent): void;
171
+ setFilterValue(column: MbGridColumn<T>, value: unknown): void;
172
+ setFilterOperator(column: MbGridColumn<T>, operator: MbGridFilterOperator): void;
173
+ clearFilter(column?: MbGridColumn<T>): void;
174
+ applyGlobalSearch(value: string): void;
175
+ changePage(pageIndex: number): void;
176
+ changePageSize(value: number | string): void;
177
+ toggleRow(row: T, event?: Event): void;
178
+ toggleAllVisible(event?: Event): void;
179
+ isSelected(row: T): boolean;
180
+ onRowClick(row: T, rowIndex: number): void;
181
+ onCellClick(row: T, column: MbGridColumn<T>, rowIndex: number): void;
182
+ toggleColumnMenu(column: MbGridColumn<T>, event: MouseEvent): void;
183
+ hideColumn(column: MbGridColumn<T>): void;
184
+ showColumn(column: MbGridColumn<T>, visible: boolean): void;
185
+ toggleLock(column: MbGridColumn<T>): void;
186
+ resetColumns(): void;
187
+ toggleGroup(column: MbGridColumn<T>): void;
188
+ removeGroup(group: MbGridGroupDescriptor<T>): void;
189
+ toggleGroupRow(row: MbGridRenderRow<T>): void;
190
+ startResize(column: MbGridColumn<T>, event: MouseEvent): void;
191
+ dropColumn(event: CdkDragDrop<MbGridColumn<T>[]>): void;
192
+ exportCsv(): void;
193
+ exportExcel(): void;
194
+ exportJson(): void;
195
+ resetState(): void;
196
+ createRow(): void;
197
+ startEdit(row: T, rowIndex: number, event?: Event): void;
198
+ saveEdit(event?: Event): void;
199
+ cancelEditRow(event?: Event): void;
200
+ removeRow(row: T, rowIndex: number, event?: Event): void;
201
+ isEditing(row: T): boolean;
202
+ isNewRowEditing(): boolean;
203
+ setEditValue(column: MbGridColumn<T>, value: unknown): void;
204
+ getEditValue(column: MbGridColumn<T>): unknown;
205
+ canEditColumn(column: MbGridColumn<T>): boolean;
206
+ getEditorType(column: MbGridColumn<T>): string;
207
+ toggleDetail(row: T, rowIndex: number, event?: Event): void;
208
+ isDetailExpanded(row: T): boolean;
209
+ getRowClass(row: T, rowIndex: number): string | string[] | Record<string, boolean> | null;
210
+ trackColumn(_: number, column: MbGridColumn<T>): string;
211
+ trackRow(_: number, row: MbGridRenderRow<T>): string | number;
212
+ private toCssSize;
213
+ private getLockedOffset;
214
+ private resolveColumnWidth;
215
+ private syncMediaQueries;
216
+ private setState;
217
+ private reprocess;
218
+ private applyFilters;
219
+ private defaultOperator;
220
+ private ensureFilterDefaults;
221
+ private applyProjectedTemplates;
222
+ private resizeColumn;
223
+ private exportRows;
224
+ private validateEditingModel;
225
+ private cloneRow;
226
+ private setNestedValue;
227
+ private cancelEditInternal;
228
+ private restorePersistedState;
229
+ private persistState;
230
+ private dataRowsFromRendered;
231
+ static ɵfac: i0.ɵɵFactoryDeclaration<MbGridComponent<any>, never>;
232
+ static ɵcmp: i0.ɵɵComponentDeclaration<MbGridComponent<any>, "mb-grid", never, { "data": { "alias": "data"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "dataMode": { "alias": "dataMode"; "required": false; }; "state": { "alias": "state"; "required": false; }; "total": { "alias": "total"; "required": false; }; "height": { "alias": "height"; "required": false; }; "rowHeight": { "alias": "rowHeight"; "required": false; }; "density": { "alias": "density"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "noRecordsText": { "alias": "noRecordsText"; "required": false; }; "loadingText": { "alias": "loadingText"; "required": false; }; "pageable": { "alias": "pageable"; "required": false; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "multiSort": { "alias": "multiSort"; "required": false; }; "filterable": { "alias": "filterable"; "required": false; }; "filterMode": { "alias": "filterMode"; "required": false; }; "groupable": { "alias": "groupable"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "rowKey": { "alias": "rowKey"; "required": false; }; "selectedKeys": { "alias": "selectedKeys"; "required": false; }; "resizable": { "alias": "resizable"; "required": false; }; "reorderable": { "alias": "reorderable"; "required": false; }; "columnMenu": { "alias": "columnMenu"; "required": false; }; "showToolbar": { "alias": "showToolbar"; "required": false; }; "showSearch": { "alias": "showSearch"; "required": false; }; "showColumnChooser": { "alias": "showColumnChooser"; "required": false; }; "showExport": { "alias": "showExport"; "required": false; }; "showFooter": { "alias": "showFooter"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "exportFileName": { "alias": "exportFileName"; "required": false; }; "excelFileName": { "alias": "excelFileName"; "required": false; }; "jsonFileName": { "alias": "jsonFileName"; "required": false; }; "showExcelExport": { "alias": "showExcelExport"; "required": false; }; "showJsonExport": { "alias": "showJsonExport"; "required": false; }; "persistKey": { "alias": "persistKey"; "required": false; }; "autoPersist": { "alias": "autoPersist"; "required": false; }; "editable": { "alias": "editable"; "required": false; }; "editMode": { "alias": "editMode"; "required": false; }; "allowAdd": { "alias": "allowAdd"; "required": false; }; "allowDelete": { "alias": "allowDelete"; "required": false; }; "confirmDelete": { "alias": "confirmDelete"; "required": false; }; "commandColumnTitle": { "alias": "commandColumnTitle"; "required": false; }; "newItemFactory": { "alias": "newItemFactory"; "required": false; }; "expandable": { "alias": "expandable"; "required": false; }; "detailInitiallyExpanded": { "alias": "detailInitiallyExpanded"; "required": false; }; "rowClassName": { "alias": "rowClassName"; "required": false; }; "responsiveColumns": { "alias": "responsiveColumns"; "required": false; }; }, { "stateChange": "stateChange"; "pageChange": "pageChange"; "sortChange": "sortChange"; "filterChange": "filterChange"; "groupChange": "groupChange"; "selectedKeysChange": "selectedKeysChange"; "columnResize": "columnResize"; "columnReorder": "columnReorder"; "columnVisibilityChange": "columnVisibilityChange"; "columnLockChange": "columnLockChange"; "selectionChange": "selectionChange"; "edit": "edit"; "save": "save"; "cancel": "cancel"; "remove": "remove"; "detailToggle": "detailToggle"; "rowClick": "rowClick"; "cellClick": "cellClick"; }, ["toolbarTemplate", "detailTemplate", "cellTemplates", "headerTemplates", "editTemplates", "footerTemplates"], never, true, never>;
233
+ }
@@ -0,0 +1,255 @@
1
+ import { TemplateRef, Type } from '@angular/core';
2
+ export type MbGridColumnType = 'text' | 'number' | 'date' | 'boolean' | 'enum' | 'custom';
3
+ export type MbGridSortDirection = 'asc' | 'desc';
4
+ export type MbGridFilterLogic = 'and' | 'or';
5
+ export type MbGridSelectionMode = 'single' | 'multiple';
6
+ export type MbGridDataMode = 'client' | 'server';
7
+ export type MbGridDensity = 'compact' | 'comfortable' | 'spacious';
8
+ export type MbGridFilterMode = 'row' | 'menu' | 'both' | 'none';
9
+ export type MbGridSticky = 'start' | 'end' | false;
10
+ export type MbGridAggregate = 'sum' | 'avg' | 'min' | 'max' | 'count';
11
+ export type MbGridEditMode = 'none' | 'inline' | 'incell' | 'popup';
12
+ export type MbGridEditorType = 'text' | 'number' | 'date' | 'checkbox' | 'select' | 'textarea' | 'custom';
13
+ export type MbGridExportType = 'csv' | 'excel-html' | 'json';
14
+ export type MbGridCommand = 'edit' | 'save' | 'cancel' | 'delete' | 'details';
15
+ export type MbGridKeyboardAction = 'moveUp' | 'moveDown' | 'moveLeft' | 'moveRight' | 'enter' | 'escape' | 'space';
16
+ export type MbGridFilterOperator = 'contains' | 'doesNotContain' | 'startsWith' | 'endsWith' | 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'isNull' | 'isNotNull' | 'isEmpty' | 'isNotEmpty';
17
+ export interface MbGridColumn<T = unknown> {
18
+ /** Unique field/key. Dot notation is supported, e.g. `user.profile.name`. */
19
+ field: keyof T | string;
20
+ title: string;
21
+ type?: MbGridColumnType;
22
+ width?: number | string;
23
+ minWidth?: number | string;
24
+ maxWidth?: number | string;
25
+ hidden?: boolean;
26
+ locked?: boolean;
27
+ sticky?: MbGridSticky;
28
+ align?: 'start' | 'center' | 'end';
29
+ headerAlign?: 'start' | 'center' | 'end';
30
+ sortable?: boolean;
31
+ filterable?: boolean;
32
+ groupable?: boolean;
33
+ resizable?: boolean;
34
+ reorderable?: boolean;
35
+ menu?: boolean;
36
+ exportable?: boolean;
37
+ editable?: boolean;
38
+ editor?: MbGridEditorType;
39
+ editorOptions?: Array<{
40
+ label: string;
41
+ value: unknown;
42
+ }>;
43
+ required?: boolean;
44
+ validator?: (value: unknown, row: T, column: MbGridColumn<T>) => string | null;
45
+ aggregate?: MbGridAggregate | MbGridAggregate[];
46
+ enumMap?: Record<string | number, string>;
47
+ className?: string | ((row: T, value: unknown, rowIndex: number) => string | string[] | Record<string, boolean>);
48
+ rowClassName?: string | ((row: T, rowIndex: number) => string | string[] | Record<string, boolean>);
49
+ headerClassName?: string | string[] | Record<string, boolean>;
50
+ footerClassName?: string | string[] | Record<string, boolean>;
51
+ /** CSS media query — column is visible only when the query matches, e.g. `(min-width: 450px)`. */
52
+ media?: string;
53
+ valueGetter?: (row: T, rowIndex: number) => unknown;
54
+ valueSetter?: (row: T, value: unknown, rowIndex: number) => T;
55
+ formatter?: (value: unknown, row: T, rowIndex: number) => string;
56
+ compare?: (a: T, b: T, direction: MbGridSortDirection) => number;
57
+ filterPredicate?: (row: T, descriptor: MbGridFilterDescriptor<T>) => boolean;
58
+ cellTemplate?: TemplateRef<MbGridCellTemplateContext<T>>;
59
+ editTemplate?: TemplateRef<MbGridEditTemplateContext<T>>;
60
+ headerTemplate?: TemplateRef<MbGridHeaderTemplateContext<T>>;
61
+ footerTemplate?: TemplateRef<MbGridFooterTemplateContext<T>>;
62
+ }
63
+ export interface MbGridSortDescriptor<T = unknown> {
64
+ field: keyof T | string;
65
+ dir: MbGridSortDirection;
66
+ }
67
+ export interface MbGridFilterDescriptor<T = unknown> {
68
+ field: keyof T | string;
69
+ operator: MbGridFilterOperator;
70
+ value?: unknown;
71
+ valueTo?: unknown;
72
+ ignoreCase?: boolean;
73
+ }
74
+ export interface MbGridCompositeFilterDescriptor<T = unknown> {
75
+ logic: MbGridFilterLogic;
76
+ filters: Array<MbGridFilterDescriptor<T> | MbGridCompositeFilterDescriptor<T>>;
77
+ }
78
+ export interface MbGridGroupDescriptor<T = unknown> {
79
+ field: keyof T | string;
80
+ dir?: MbGridSortDirection;
81
+ aggregates?: MbGridAggregate[];
82
+ }
83
+ export interface MbGridState<T = unknown> {
84
+ skip: number;
85
+ take: number;
86
+ sort: MbGridSortDescriptor<T>[];
87
+ filter?: MbGridCompositeFilterDescriptor<T>;
88
+ group: MbGridGroupDescriptor<T>[];
89
+ }
90
+ export interface MbGridPageChangeEvent {
91
+ pageIndex: number;
92
+ pageSize: number;
93
+ skip: number;
94
+ take: number;
95
+ }
96
+ export interface MbGridSortChangeEvent<T = unknown> {
97
+ sort: MbGridSortDescriptor<T>[];
98
+ }
99
+ export interface MbGridFilterChangeEvent<T = unknown> {
100
+ filter?: MbGridCompositeFilterDescriptor<T>;
101
+ }
102
+ export interface MbGridGroupChangeEvent<T = unknown> {
103
+ group: MbGridGroupDescriptor<T>[];
104
+ }
105
+ export interface MbGridStateChangeEvent<T = unknown> {
106
+ state: MbGridState<T>;
107
+ source: string;
108
+ }
109
+ export interface MbGridColumnResizeEvent<T = unknown> {
110
+ column: MbGridColumn<T>;
111
+ field: keyof T | string;
112
+ width: number;
113
+ }
114
+ export interface MbGridColumnReorderEvent<T = unknown> {
115
+ previousIndex: number;
116
+ currentIndex: number;
117
+ columns: MbGridColumn<T>[];
118
+ }
119
+ export interface MbGridColumnVisibilityEvent<T = unknown> {
120
+ column: MbGridColumn<T>;
121
+ field: keyof T | string;
122
+ visible: boolean;
123
+ columns: MbGridColumn<T>[];
124
+ }
125
+ export interface MbGridColumnLockEvent<T = unknown> {
126
+ column: MbGridColumn<T>;
127
+ field: keyof T | string;
128
+ locked: boolean;
129
+ columns: MbGridColumn<T>[];
130
+ }
131
+ export interface MbGridCellClickEvent<T = unknown> {
132
+ row: T;
133
+ column: MbGridColumn<T>;
134
+ value: unknown;
135
+ rowIndex: number;
136
+ }
137
+ export interface MbGridRowClickEvent<T = unknown> {
138
+ row: T;
139
+ rowIndex: number;
140
+ }
141
+ export interface MbGridSelectionChangeEvent<T = unknown> {
142
+ selectedKeys: Array<string | number>;
143
+ selectedRows: T[];
144
+ }
145
+ export interface MbGridEditEvent<T = unknown> {
146
+ row: T;
147
+ rowIndex: number;
148
+ key: string | number;
149
+ }
150
+ export interface MbGridSaveEvent<T = unknown> {
151
+ row: T;
152
+ originalRow: T | null;
153
+ rowIndex: number;
154
+ key: string | number;
155
+ isNew: boolean;
156
+ }
157
+ export interface MbGridCancelEvent<T = unknown> {
158
+ row: T;
159
+ originalRow: T | null;
160
+ rowIndex: number;
161
+ key: string | number;
162
+ isNew: boolean;
163
+ }
164
+ export interface MbGridRemoveEvent<T = unknown> {
165
+ row: T;
166
+ rowIndex: number;
167
+ key: string | number;
168
+ }
169
+ export interface MbGridCellEditEvent<T = unknown> {
170
+ row: T;
171
+ column: MbGridColumn<T>;
172
+ value: unknown;
173
+ rowIndex: number;
174
+ key: string | number;
175
+ }
176
+ export interface MbGridDetailToggleEvent<T = unknown> {
177
+ row: T;
178
+ rowIndex: number;
179
+ key: string | number;
180
+ expanded: boolean;
181
+ }
182
+ export interface MbGridProcessedResult<T = unknown> {
183
+ data: Array<MbGridRenderRow<T>>;
184
+ total: number;
185
+ aggregates: Record<string, Record<string, number>>;
186
+ }
187
+ export interface MbGridDataRow<T = unknown> {
188
+ kind: 'data';
189
+ dataItem: T;
190
+ rowIndex: number;
191
+ }
192
+ export interface MbGridGroupRow<T = unknown> {
193
+ kind: 'group';
194
+ field: keyof T | string;
195
+ value: unknown;
196
+ level: number;
197
+ count: number;
198
+ expanded: boolean;
199
+ key: string;
200
+ aggregates: Record<string, Record<string, number>>;
201
+ }
202
+ export type MbGridRenderRow<T = unknown> = MbGridDataRow<T> | MbGridGroupRow<T>;
203
+ export interface MbGridCellTemplateContext<T = unknown> {
204
+ $implicit: T;
205
+ dataItem: T;
206
+ column: MbGridColumn<T>;
207
+ value: unknown;
208
+ rowIndex: number;
209
+ editing: boolean;
210
+ }
211
+ export interface MbGridEditTemplateContext<T = unknown> {
212
+ $implicit: T;
213
+ dataItem: T;
214
+ column: MbGridColumn<T>;
215
+ value: unknown;
216
+ rowIndex: number;
217
+ setValue: (value: unknown) => void;
218
+ errors: Record<string, string>;
219
+ }
220
+ export interface MbGridHeaderTemplateContext<T = unknown> {
221
+ $implicit: MbGridColumn<T>;
222
+ column: MbGridColumn<T>;
223
+ }
224
+ export interface MbGridFooterTemplateContext<T = unknown> {
225
+ $implicit: MbGridColumn<T>;
226
+ column: MbGridColumn<T>;
227
+ aggregates: Record<string, Record<string, number>>;
228
+ }
229
+ export interface MbGridToolbarTemplateContext<T = unknown> {
230
+ state: MbGridState<T>;
231
+ total: number;
232
+ selectedKeys: Array<string | number>;
233
+ selectedRows: T[];
234
+ add: () => void;
235
+ exportCsv: () => void;
236
+ exportExcel: () => void;
237
+ reset: () => void;
238
+ }
239
+ export interface MbGridDetailTemplateContext<T = unknown> {
240
+ $implicit: T;
241
+ dataItem: T;
242
+ rowIndex: number;
243
+ expanded: boolean;
244
+ }
245
+ export interface MbGridPopupEditConfig<T = unknown> {
246
+ title?: string | ((row: T, isNew: boolean) => string);
247
+ component?: Type<unknown>;
248
+ width?: number | string;
249
+ }
250
+ export interface MbGridPersistedState<T = unknown> {
251
+ state: MbGridState<T>;
252
+ columns: Array<Pick<MbGridColumn<T>, 'field' | 'width' | 'hidden' | 'locked' | 'sticky'>>;
253
+ selectedKeys?: Array<string | number>;
254
+ updatedAt: string;
255
+ }
@@ -0,0 +1,2 @@
1
+ export type MbUiLocale = 'fa-IR' | 'en-US';
2
+ export declare function normalizeMbUiLocale(locale: string): MbUiLocale;
@@ -0,0 +1,3 @@
1
+ import { MbGridMessages, MbUiMessages } from './mb-ui-messages.types';
2
+ export declare const MB_GRID_MESSAGES_EN: MbGridMessages;
3
+ export declare const MB_UI_MESSAGES_EN: MbUiMessages;
@@ -0,0 +1,3 @@
1
+ import { MbGridMessages, MbUiMessages } from './mb-ui-messages.types';
2
+ export declare const MB_GRID_MESSAGES_FA: MbGridMessages;
3
+ export declare const MB_UI_MESSAGES_FA: MbUiMessages;
@@ -0,0 +1,5 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ import { MbUiMessages } from './mb-ui-messages.types';
3
+ export declare function getMbUiMessages(locale: string): MbUiMessages;
4
+ export declare function mergeMbUiMessages(base: MbUiMessages, overrides?: Partial<MbUiMessages>): MbUiMessages;
5
+ export declare const MB_UI_MESSAGES: InjectionToken<MbUiMessages>;
@@ -0,0 +1,90 @@
1
+ export interface MbGridMessages {
2
+ noRecords: string;
3
+ loading: string;
4
+ groupLabel: string;
5
+ groupHint: string;
6
+ columns: string;
7
+ resetColumns: string;
8
+ addRow: string;
9
+ searchPlaceholder: string;
10
+ exportCsv: string;
11
+ exportExcel: string;
12
+ exportJson: string;
13
+ reset: string;
14
+ selectAllRows: string;
15
+ selectRow: string;
16
+ columnMenu: string;
17
+ sort: string;
18
+ groupByColumn: string;
19
+ removeGroup: string;
20
+ filter: string;
21
+ clearFilter: string;
22
+ filterValuePlaceholder: string;
23
+ lockColumn: string;
24
+ unlockColumn: string;
25
+ hideColumn: string;
26
+ save: string;
27
+ cancel: string;
28
+ edit: string;
29
+ delete: string;
30
+ deleteConfirm: string;
31
+ fieldRequired: (title: string) => string;
32
+ commandColumn: string;
33
+ pagerFirst: string;
34
+ pagerPrevious: string;
35
+ pagerNext: string;
36
+ pagerLast: string;
37
+ pagerInfo: (from: number, to: number, total: number) => string;
38
+ yes: string;
39
+ no: string;
40
+ operatorLabels: Record<string, string>;
41
+ }
42
+ export interface MbCommonMessages {
43
+ close: string;
44
+ clear: string;
45
+ yes: string;
46
+ no: string;
47
+ }
48
+ export interface MbConfirmMessages {
49
+ title: string;
50
+ okText: string;
51
+ cancelText: string;
52
+ deleteTitle: string;
53
+ deleteOkText: string;
54
+ ariaLabel: string;
55
+ }
56
+ export interface MbFormMessages {
57
+ selectPlaceholder: string;
58
+ searchPlaceholder: string;
59
+ selectDefaultItem: string;
60
+ datePlaceholder: string;
61
+ noMatches: string;
62
+ }
63
+ export interface MbEmptyMessages {
64
+ title: string;
65
+ }
66
+ export interface MbDatepickerMessages {
67
+ placeholder: string;
68
+ clear: string;
69
+ pickDate: string;
70
+ today: string;
71
+ weekdayNames: string[];
72
+ monthNamesGregorian: string[];
73
+ }
74
+ export interface MbPaginationMessages {
75
+ ariaLabel: string;
76
+ }
77
+ export interface MbDialogMessages {
78
+ ariaLabel: string;
79
+ close: string;
80
+ }
81
+ export interface MbUiMessages {
82
+ grid: MbGridMessages;
83
+ common: MbCommonMessages;
84
+ confirm: MbConfirmMessages;
85
+ form: MbFormMessages;
86
+ empty: MbEmptyMessages;
87
+ datepicker: MbDatepickerMessages;
88
+ pagination: MbPaginationMessages;
89
+ dialog: MbDialogMessages;
90
+ }
@@ -0,0 +1,7 @@
1
+ import { EnvironmentProviders } from '@angular/core';
2
+ import { MbUiConfig } from '../tokens/mb-ui-config.token';
3
+ import { MbUiMessages } from './mb-ui-messages.types';
4
+ export interface ProvideMbUiOptions extends Partial<MbUiConfig> {
5
+ messages?: Partial<MbUiMessages>;
6
+ }
7
+ export declare function provideMbUi(options?: ProvideMbUiOptions): EnvironmentProviders;
@@ -0,0 +1,30 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { ControlValueAccessor } from '@angular/forms';
3
+ import { MbSize } from '../tokens/mb-ui-config.token';
4
+ import * as i0 from "@angular/core";
5
+ export type MbInputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';
6
+ export declare class MbInputComponent implements ControlValueAccessor {
7
+ readonly messages: import("@beshkari/mb-ui").MbUiMessages;
8
+ type: MbInputType;
9
+ placeholder: string;
10
+ size: MbSize;
11
+ disabled: boolean;
12
+ readonly: boolean;
13
+ invalid: boolean;
14
+ id?: string;
15
+ name?: string;
16
+ clearable: boolean;
17
+ valueChange: EventEmitter<string>;
18
+ value: string;
19
+ private onChange;
20
+ private onTouched;
21
+ writeValue(value: string | null): void;
22
+ registerOnChange(fn: (value: string) => void): void;
23
+ registerOnTouched(fn: () => void): void;
24
+ setDisabledState(isDisabled: boolean): void;
25
+ handleInput(value: string): void;
26
+ blur(): void;
27
+ clear(): void;
28
+ static ɵfac: i0.ɵɵFactoryDeclaration<MbInputComponent, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<MbInputComponent, "mb-input", never, { "type": { "alias": "type"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "id": { "alias": "id"; "required": false; }; "name": { "alias": "name"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
30
+ }
@@ -0,0 +1,16 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class MbPaginationComponent {
4
+ readonly messages: import("@beshkari/mb-ui").MbUiMessages;
5
+ page: number;
6
+ pageSize: number;
7
+ total: number;
8
+ maxButtons: number;
9
+ pageChange: EventEmitter<number>;
10
+ hostClass: string;
11
+ get pageCount(): number;
12
+ get pages(): number[];
13
+ go(page: number): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<MbPaginationComponent, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<MbPaginationComponent, "mb-pagination", never, { "page": { "alias": "page"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "total": { "alias": "total"; "required": false; }; "maxButtons": { "alias": "maxButtons"; "required": false; }; }, { "pageChange": "pageChange"; }, never, never, true, never>;
16
+ }
@@ -0,0 +1,11 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class MbProgressComponent {
3
+ value: number;
4
+ max: number;
5
+ label: boolean;
6
+ indeterminate: boolean;
7
+ hostClass: string;
8
+ get percent(): number;
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<MbProgressComponent, never>;
10
+ static ɵcmp: i0.ɵɵComponentDeclaration<MbProgressComponent, "mb-progress", never, { "value": { "alias": "value"; "required": false; }; "max": { "alias": "max"; "required": false; }; "label": { "alias": "label"; "required": false; }; "indeterminate": { "alias": "indeterminate"; "required": false; }; }, {}, never, never, true, never>;
11
+ }