@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.
- package/LICENSE +21 -0
- package/README.md +98 -0
- package/esm2022/beshkari-mb-ui.mjs +5 -0
- package/esm2022/lib/accordion/mb-accordion.component.mjs +37 -0
- package/esm2022/lib/alert/mb-alert.component.mjs +28 -0
- package/esm2022/lib/avatar/mb-avatar.component.mjs +32 -0
- package/esm2022/lib/badge/mb-badge.component.mjs +28 -0
- package/esm2022/lib/breadcrumb/mb-breadcrumb.component.mjs +23 -0
- package/esm2022/lib/button/mb-button.component.mjs +48 -0
- package/esm2022/lib/card/mb-card.component.mjs +28 -0
- package/esm2022/lib/checkbox/mb-checkbox.component.mjs +75 -0
- package/esm2022/lib/chip/mb-chip.component.mjs +33 -0
- package/esm2022/lib/combobox/mb-combobox.component.mjs +235 -0
- package/esm2022/lib/confirm/mb-confirm-dialog.component.mjs +44 -0
- package/esm2022/lib/confirm/mb-confirm.service.mjs +39 -0
- package/esm2022/lib/confirm/mb-confirm.types.mjs +2 -0
- package/esm2022/lib/datepicker/mb-datepicker.component.mjs +382 -0
- package/esm2022/lib/dialog/mb-dialog-container.component.mjs +37 -0
- package/esm2022/lib/dialog/mb-dialog-ref.mjs +17 -0
- package/esm2022/lib/dialog/mb-dialog.component.mjs +87 -0
- package/esm2022/lib/dialog/mb-dialog.service.mjs +61 -0
- package/esm2022/lib/dialog/mb-dialog.tokens.mjs +3 -0
- package/esm2022/lib/divider/mb-divider.component.mjs +18 -0
- package/esm2022/lib/drawer/mb-drawer.component.mjs +34 -0
- package/esm2022/lib/dropdown/mb-dropdown.component.mjs +24 -0
- package/esm2022/lib/empty/mb-empty.component.mjs +27 -0
- package/esm2022/lib/form-field/mb-form-field.component.mjs +24 -0
- package/esm2022/lib/grid/mb-grid-data.mjs +266 -0
- package/esm2022/lib/grid/mb-grid-export.mjs +36 -0
- package/esm2022/lib/grid/mb-grid-messages.mjs +10 -0
- package/esm2022/lib/grid/mb-grid-state-adapter.mjs +97 -0
- package/esm2022/lib/grid/mb-grid-state.service.mjs +47 -0
- package/esm2022/lib/grid/mb-grid-template.directive.mjs +109 -0
- package/esm2022/lib/grid/mb-grid.component.mjs +998 -0
- package/esm2022/lib/grid/mb-grid.types.mjs +2 -0
- package/esm2022/lib/i18n/mb-ui-locale.mjs +18 -0
- package/esm2022/lib/i18n/mb-ui-messages-en.mjs +103 -0
- package/esm2022/lib/i18n/mb-ui-messages-fa.mjs +103 -0
- package/esm2022/lib/i18n/mb-ui-messages.mjs +34 -0
- package/esm2022/lib/i18n/mb-ui-messages.types.mjs +2 -0
- package/esm2022/lib/i18n/provide-mb-ui.mjs +20 -0
- package/esm2022/lib/input/mb-input.component.mjs +86 -0
- package/esm2022/lib/pagination/mb-pagination.component.mjs +47 -0
- package/esm2022/lib/progress/mb-progress.component.mjs +29 -0
- package/esm2022/lib/radio/mb-radio-group.component.mjs +63 -0
- package/esm2022/lib/select/mb-select.component.mjs +73 -0
- package/esm2022/lib/skeleton/mb-skeleton.component.mjs +24 -0
- package/esm2022/lib/spinner/mb-spinner.component.mjs +21 -0
- package/esm2022/lib/switch/mb-switch.component.mjs +59 -0
- package/esm2022/lib/tabs/mb-tabs.component.mjs +31 -0
- package/esm2022/lib/textarea/mb-textarea.component.mjs +83 -0
- package/esm2022/lib/toast/mb-toast-container.component.mjs +21 -0
- package/esm2022/lib/toast/mb-toast.service.mjs +47 -0
- package/esm2022/lib/toast/mb-toast.types.mjs +2 -0
- package/esm2022/lib/tokens/mb-ui-config.token.mjs +11 -0
- package/esm2022/lib/tooltip/mb-tooltip.directive.mjs +48 -0
- package/esm2022/lib/utils/coerce.mjs +10 -0
- package/esm2022/lib/utils/mb-jalali-date.mjs +120 -0
- package/esm2022/public-api.mjs +56 -0
- package/fesm2022/beshkari-mb-ui.mjs +3828 -0
- package/fesm2022/beshkari-mb-ui.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/accordion/mb-accordion.component.d.ts +19 -0
- package/lib/alert/mb-alert.component.d.ts +12 -0
- package/lib/avatar/mb-avatar.component.d.ts +12 -0
- package/lib/badge/mb-badge.component.d.ts +12 -0
- package/lib/breadcrumb/mb-breadcrumb.component.d.ts +15 -0
- package/lib/button/mb-button.component.d.ts +19 -0
- package/lib/card/mb-card.component.d.ts +10 -0
- package/lib/checkbox/mb-checkbox.component.d.ts +25 -0
- package/lib/chip/mb-chip.component.d.ts +12 -0
- package/lib/combobox/mb-combobox.component.d.ts +65 -0
- package/lib/confirm/mb-confirm-dialog.component.d.ts +17 -0
- package/lib/confirm/mb-confirm.service.d.ts +12 -0
- package/lib/confirm/mb-confirm.types.d.ts +10 -0
- package/lib/datepicker/mb-datepicker.component.d.ts +87 -0
- package/lib/dialog/mb-dialog-container.component.d.ts +14 -0
- package/lib/dialog/mb-dialog-ref.d.ts +9 -0
- package/lib/dialog/mb-dialog.component.d.ts +27 -0
- package/lib/dialog/mb-dialog.service.d.ts +14 -0
- package/lib/dialog/mb-dialog.tokens.d.ts +13 -0
- package/lib/divider/mb-divider.component.d.ts +7 -0
- package/lib/drawer/mb-drawer.component.d.ts +14 -0
- package/lib/dropdown/mb-dropdown.component.d.ts +10 -0
- package/lib/empty/mb-empty.component.d.ts +10 -0
- package/lib/form-field/mb-form-field.component.d.ts +9 -0
- package/lib/grid/mb-grid-data.d.ts +20 -0
- package/lib/grid/mb-grid-export.d.ts +9 -0
- package/lib/grid/mb-grid-messages.d.ts +6 -0
- package/lib/grid/mb-grid-state-adapter.d.ts +24 -0
- package/lib/grid/mb-grid-state.service.d.ts +10 -0
- package/lib/grid/mb-grid-template.directive.d.ts +43 -0
- package/lib/grid/mb-grid.component.d.ts +233 -0
- package/lib/grid/mb-grid.types.d.ts +255 -0
- package/lib/i18n/mb-ui-locale.d.ts +2 -0
- package/lib/i18n/mb-ui-messages-en.d.ts +3 -0
- package/lib/i18n/mb-ui-messages-fa.d.ts +3 -0
- package/lib/i18n/mb-ui-messages.d.ts +5 -0
- package/lib/i18n/mb-ui-messages.types.d.ts +90 -0
- package/lib/i18n/provide-mb-ui.d.ts +7 -0
- package/lib/input/mb-input.component.d.ts +30 -0
- package/lib/pagination/mb-pagination.component.d.ts +16 -0
- package/lib/progress/mb-progress.component.d.ts +11 -0
- package/lib/radio/mb-radio-group.component.d.ts +30 -0
- package/lib/select/mb-select.component.d.ts +31 -0
- package/lib/skeleton/mb-skeleton.component.d.ts +9 -0
- package/lib/spinner/mb-spinner.component.d.ts +9 -0
- package/lib/switch/mb-switch.component.d.ts +22 -0
- package/lib/tabs/mb-tabs.component.d.ts +19 -0
- package/lib/textarea/mb-textarea.component.d.ts +29 -0
- package/lib/toast/mb-toast-container.component.d.ts +10 -0
- package/lib/toast/mb-toast.service.d.ts +15 -0
- package/lib/toast/mb-toast.types.d.ts +8 -0
- package/lib/tokens/mb-ui-config.token.d.ts +12 -0
- package/lib/tooltip/mb-tooltip.directive.d.ts +13 -0
- package/lib/utils/coerce.d.ts +3 -0
- package/lib/utils/mb-jalali-date.d.ts +18 -0
- package/package.json +50 -0
- package/public-api.d.ts +55 -0
- package/theme/_components.scss +19 -0
- package/theme/_dark.scss +1 -0
- package/theme/_density.scss +1 -0
- package/theme/_tokens.scss +57 -0
- package/theme/mb-ui.scss +28 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beshkari-mb-ui.mjs","sources":["../../../src/lib/tokens/mb-ui-config.token.ts","../../../src/lib/i18n/mb-ui-locale.ts","../../../src/lib/i18n/mb-ui-messages-en.ts","../../../src/lib/i18n/mb-ui-messages-fa.ts","../../../src/lib/i18n/mb-ui-messages.ts","../../../src/lib/grid/mb-grid-messages.ts","../../../src/lib/i18n/provide-mb-ui.ts","../../../src/lib/utils/coerce.ts","../../../src/lib/button/mb-button.component.ts","../../../src/lib/button/mb-button.component.html","../../../src/lib/input/mb-input.component.ts","../../../src/lib/input/mb-input.component.html","../../../src/lib/form-field/mb-form-field.component.ts","../../../src/lib/form-field/mb-form-field.component.html","../../../src/lib/select/mb-select.component.ts","../../../src/lib/select/mb-select.component.html","../../../src/lib/combobox/mb-combobox.component.ts","../../../src/lib/combobox/mb-combobox.component.html","../../../src/lib/grid/mb-grid-data.ts","../../../src/lib/grid/mb-grid-export.ts","../../../src/lib/grid/mb-grid-template.directive.ts","../../../src/lib/grid/mb-grid-state.service.ts","../../../src/lib/grid/mb-grid.component.ts","../../../src/lib/grid/mb-grid.component.html","../../../src/lib/grid/mb-grid-state-adapter.ts","../../../src/lib/dialog/mb-dialog.tokens.ts","../../../src/lib/dialog/mb-dialog-ref.ts","../../../src/lib/dialog/mb-dialog-container.component.ts","../../../src/lib/dialog/mb-dialog-container.component.html","../../../src/lib/dialog/mb-dialog.service.ts","../../../src/lib/dialog/mb-dialog.component.ts","../../../src/lib/dialog/mb-dialog.component.html","../../../src/lib/utils/mb-jalali-date.ts","../../../src/lib/toast/mb-toast.service.ts","../../../src/lib/toast/mb-toast-container.component.ts","../../../src/lib/toast/mb-toast-container.component.html","../../../src/lib/checkbox/mb-checkbox.component.ts","../../../src/lib/checkbox/mb-checkbox.component.html","../../../src/lib/switch/mb-switch.component.ts","../../../src/lib/switch/mb-switch.component.html","../../../src/lib/radio/mb-radio-group.component.ts","../../../src/lib/radio/mb-radio-group.component.html","../../../src/lib/textarea/mb-textarea.component.ts","../../../src/lib/textarea/mb-textarea.component.html","../../../src/lib/datepicker/mb-datepicker.component.ts","../../../src/lib/datepicker/mb-datepicker.component.html","../../../src/lib/badge/mb-badge.component.ts","../../../src/lib/badge/mb-badge.component.html","../../../src/lib/chip/mb-chip.component.ts","../../../src/lib/chip/mb-chip.component.html","../../../src/lib/avatar/mb-avatar.component.ts","../../../src/lib/avatar/mb-avatar.component.html","../../../src/lib/card/mb-card.component.ts","../../../src/lib/card/mb-card.component.html","../../../src/lib/alert/mb-alert.component.ts","../../../src/lib/alert/mb-alert.component.html","../../../src/lib/spinner/mb-spinner.component.ts","../../../src/lib/spinner/mb-spinner.component.html","../../../src/lib/skeleton/mb-skeleton.component.ts","../../../src/lib/skeleton/mb-skeleton.component.html","../../../src/lib/progress/mb-progress.component.ts","../../../src/lib/progress/mb-progress.component.html","../../../src/lib/empty/mb-empty.component.ts","../../../src/lib/empty/mb-empty.component.html","../../../src/lib/divider/mb-divider.component.ts","../../../src/lib/breadcrumb/mb-breadcrumb.component.ts","../../../src/lib/breadcrumb/mb-breadcrumb.component.html","../../../src/lib/tabs/mb-tabs.component.ts","../../../src/lib/tabs/mb-tabs.component.html","../../../src/lib/accordion/mb-accordion.component.ts","../../../src/lib/accordion/mb-accordion.component.html","../../../src/lib/pagination/mb-pagination.component.ts","../../../src/lib/pagination/mb-pagination.component.html","../../../src/lib/drawer/mb-drawer.component.ts","../../../src/lib/drawer/mb-drawer.component.html","../../../src/lib/dropdown/mb-dropdown.component.ts","../../../src/lib/dropdown/mb-dropdown.component.html","../../../src/lib/tooltip/mb-tooltip.directive.ts","../../../src/lib/confirm/mb-confirm-dialog.component.ts","../../../src/lib/confirm/mb-confirm-dialog.component.html","../../../src/lib/confirm/mb-confirm.service.ts","../../../src/beshkari-mb-ui.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MbUiLocale } from '../i18n/mb-ui-locale';\n\nexport type MbDirection = 'ltr' | 'rtl';\nexport type MbSize = 'sm' | 'md' | 'lg';\nexport type MbDensity = 'compact' | 'comfortable' | 'spacious';\n\nexport interface MbUiConfig {\n direction: MbDirection;\n density: MbDensity;\n locale: MbUiLocale;\n}\n\nexport const MB_UI_DEFAULT_CONFIG: MbUiConfig = {\n direction: 'ltr',\n density: 'comfortable',\n locale: 'en-US',\n};\n\nexport const MB_UI_CONFIG = new InjectionToken<MbUiConfig>('MB_UI_CONFIG', {\n providedIn: 'root',\n factory: () => MB_UI_DEFAULT_CONFIG,\n});\n","export type MbUiLocale = 'fa-IR' | 'en-US';\n\nconst LOCALE_ALIASES: Record<string, MbUiLocale> = {\n fa: 'fa-IR',\n 'fa-ir': 'fa-IR',\n 'fa_IR': 'fa-IR',\n en: 'en-US',\n 'en-us': 'en-US',\n 'en_US': 'en-US',\n};\n\nexport function normalizeMbUiLocale(locale: string): MbUiLocale {\n const normalized = locale.trim().replace('_', '-');\n const alias = LOCALE_ALIASES[normalized.toLowerCase()];\n if (alias) return alias;\n if (normalized === 'fa-IR' || normalized === 'en-US') return normalized;\n return normalized.toLowerCase().startsWith('fa') ? 'fa-IR' : 'en-US';\n}\n","import { MbGridMessages, MbUiMessages } from './mb-ui-messages.types';\n\nexport const MB_GRID_MESSAGES_EN: MbGridMessages = {\n noRecords: 'No records available',\n loading: 'Loading...',\n groupLabel: 'Group by:',\n groupHint: 'Use the column menu to group by a column',\n columns: 'Columns',\n resetColumns: 'Reset columns',\n addRow: 'Add row',\n searchPlaceholder: 'Quick search...',\n exportCsv: 'CSV',\n exportExcel: 'Excel',\n exportJson: 'JSON',\n reset: 'Reset',\n selectAllRows: 'Select all visible rows',\n selectRow: 'Select row',\n columnMenu: 'Column menu',\n sort: 'Sort',\n groupByColumn: 'Group by this column',\n removeGroup: 'Remove grouping',\n filter: 'Filter',\n clearFilter: 'Clear filter',\n filterValuePlaceholder: 'Filter value',\n lockColumn: 'Lock column',\n unlockColumn: 'Unlock column',\n hideColumn: 'Hide column',\n save: 'Save',\n cancel: 'Cancel',\n edit: 'Edit',\n delete: 'Delete',\n deleteConfirm: 'Are you sure you want to delete this row?',\n fieldRequired: (title) => `${title} is required`,\n commandColumn: 'Actions',\n pagerFirst: 'First',\n pagerPrevious: 'Previous',\n pagerNext: 'Next',\n pagerLast: 'Last',\n pagerInfo: (from, to, total) => `Showing ${from} to ${to} of ${total}`,\n yes: 'Yes',\n no: 'No',\n operatorLabels: {\n contains: 'Contains',\n doesNotContain: 'Does not contain',\n startsWith: 'Starts with',\n endsWith: 'Ends with',\n eq: 'Equals',\n neq: 'Does not equal',\n gt: 'Greater than',\n gte: 'Greater than or equal',\n lt: 'Less than',\n lte: 'Less than or equal',\n isNull: 'Is null',\n isNotNull: 'Is not null',\n isEmpty: 'Is empty',\n isNotEmpty: 'Is not empty',\n between: 'Between',\n },\n};\n\nexport const MB_UI_MESSAGES_EN: MbUiMessages = {\n grid: MB_GRID_MESSAGES_EN,\n common: {\n close: 'Close',\n clear: 'Clear',\n yes: 'Yes',\n no: 'No',\n },\n confirm: {\n title: 'Confirm action',\n okText: 'Confirm',\n cancelText: 'Cancel',\n deleteTitle: 'Delete item',\n deleteOkText: 'Delete',\n ariaLabel: 'Confirm dialog',\n },\n form: {\n selectPlaceholder: 'Select an option',\n searchPlaceholder: 'Search...',\n selectDefaultItem: 'Select',\n datePlaceholder: 'Pick a date',\n noMatches: 'No matches found',\n },\n empty: {\n title: 'No records available',\n },\n datepicker: {\n placeholder: 'Pick a date',\n clear: 'Clear date',\n pickDate: 'Pick a date',\n today: 'Today',\n weekdayNames: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n monthNamesGregorian: [\n 'January', 'February', 'March', 'April', 'May', 'June',\n 'July', 'August', 'September', 'October', 'November', 'December',\n ],\n },\n pagination: {\n ariaLabel: 'Pagination',\n },\n dialog: {\n ariaLabel: 'Dialog',\n close: 'Close',\n },\n};\n","import { MbGridMessages, MbUiMessages } from './mb-ui-messages.types';\n\nexport const MB_GRID_MESSAGES_FA: MbGridMessages = {\n noRecords: 'دادهای برای نمایش وجود ندارد',\n loading: 'در حال بارگذاری...',\n groupLabel: 'گروهبندی:',\n groupHint: 'از منوی ستون، گزینه گروهبندی را انتخاب کن',\n columns: 'ستونها',\n resetColumns: 'بازنشانی ستونها',\n addRow: 'افزودن ردیف',\n searchPlaceholder: 'جستجوی سریع...',\n exportCsv: 'CSV',\n exportExcel: 'Excel',\n exportJson: 'JSON',\n reset: 'بازنشانی',\n selectAllRows: 'انتخاب همه ردیفهای قابل مشاهده',\n selectRow: 'انتخاب ردیف',\n columnMenu: 'منوی ستون',\n sort: 'مرتبسازی',\n groupByColumn: 'گروهبندی براساس این ستون',\n removeGroup: 'حذف گروهبندی',\n filter: 'فیلتر',\n clearFilter: 'پاک کردن فیلتر',\n filterValuePlaceholder: 'مقدار فیلتر',\n lockColumn: 'قفل کردن ستون',\n unlockColumn: 'آزاد کردن ستون',\n hideColumn: 'مخفی کردن ستون',\n save: 'ذخیره',\n cancel: 'لغو',\n edit: 'ویرایش',\n delete: 'حذف',\n deleteConfirm: 'آیا از حذف این ردیف مطمئن هستید؟',\n fieldRequired: (title) => `${title} الزامی است`,\n commandColumn: 'عملیات',\n pagerFirst: 'اول',\n pagerPrevious: 'قبلی',\n pagerNext: 'بعدی',\n pagerLast: 'آخر',\n pagerInfo: (from, to, total) => `نمایش ${from} تا ${to} از ${total}`,\n yes: 'بله',\n no: 'خیر',\n operatorLabels: {\n contains: 'شامل باشد',\n doesNotContain: 'شامل نباشد',\n startsWith: 'شروع شود با',\n endsWith: 'تمام شود با',\n eq: 'برابر باشد',\n neq: 'برابر نباشد',\n gt: 'بزرگتر از',\n gte: 'بزرگتر یا مساوی',\n lt: 'کوچکتر از',\n lte: 'کوچکتر یا مساوی',\n isNull: 'خالی/Null باشد',\n isNotNull: 'خالی/Null نباشد',\n isEmpty: 'رشته خالی باشد',\n isNotEmpty: 'رشته خالی نباشد',\n between: 'بین دو مقدار',\n },\n};\n\nexport const MB_UI_MESSAGES_FA: MbUiMessages = {\n grid: MB_GRID_MESSAGES_FA,\n common: {\n close: 'بستن',\n clear: 'پاک کردن',\n yes: 'بله',\n no: 'خیر',\n },\n confirm: {\n title: 'تأیید عملیات',\n okText: 'تأیید',\n cancelText: 'انصراف',\n deleteTitle: 'حذف آیتم',\n deleteOkText: 'حذف',\n ariaLabel: 'پنجره تأیید',\n },\n form: {\n selectPlaceholder: 'انتخاب کنید',\n searchPlaceholder: 'جستجو...',\n selectDefaultItem: 'انتخاب',\n datePlaceholder: 'انتخاب تاریخ',\n noMatches: 'موردی یافت نشد',\n },\n empty: {\n title: 'دادهای برای نمایش وجود ندارد',\n },\n datepicker: {\n placeholder: 'انتخاب تاریخ',\n clear: 'پاک کردن تاریخ',\n pickDate: 'انتخاب تاریخ',\n today: 'امروز',\n weekdayNames: ['ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج'],\n monthNamesGregorian: [\n 'ژانویه', 'فوریه', 'مارس', 'آوریل', 'مه', 'ژوئن',\n 'ژوئیه', 'اوت', 'سپتامبر', 'اکتبر', 'نوامبر', 'دسامبر',\n ],\n },\n pagination: {\n ariaLabel: 'صفحهبندی',\n },\n dialog: {\n ariaLabel: 'پنجره',\n close: 'بستن',\n },\n};\n","import { inject, InjectionToken } from '@angular/core';\nimport { MB_UI_CONFIG } from '../tokens/mb-ui-config.token';\nimport { normalizeMbUiLocale } from './mb-ui-locale';\nimport { MB_UI_MESSAGES_EN } from './mb-ui-messages-en';\nimport { MB_UI_MESSAGES_FA } from './mb-ui-messages-fa';\nimport { MbUiMessages } from './mb-ui-messages.types';\n\nconst LOCALE_MESSAGES: Record<string, MbUiMessages> = {\n 'en-US': MB_UI_MESSAGES_EN,\n 'fa-IR': MB_UI_MESSAGES_FA,\n};\n\nexport function getMbUiMessages(locale: string): MbUiMessages {\n return LOCALE_MESSAGES[normalizeMbUiLocale(locale)] ?? MB_UI_MESSAGES_EN;\n}\n\nexport function mergeMbUiMessages(base: MbUiMessages, overrides?: Partial<MbUiMessages>): MbUiMessages {\n if (!overrides) return base;\n return {\n grid: { ...base.grid, ...overrides.grid, operatorLabels: { ...base.grid.operatorLabels, ...overrides.grid?.operatorLabels } },\n common: { ...base.common, ...overrides.common },\n confirm: { ...base.confirm, ...overrides.confirm },\n form: { ...base.form, ...overrides.form },\n empty: { ...base.empty, ...overrides.empty },\n datepicker: { ...base.datepicker, ...overrides.datepicker },\n pagination: { ...base.pagination, ...overrides.pagination },\n dialog: { ...base.dialog, ...overrides.dialog },\n };\n}\n\nexport const MB_UI_MESSAGES = new InjectionToken<MbUiMessages>('MB_UI_MESSAGES', {\n providedIn: 'root',\n factory: () => {\n const config = inject(MB_UI_CONFIG);\n return getMbUiMessages(config.locale);\n },\n});\n","import { inject, InjectionToken } from '@angular/core';\r\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\r\nimport { MB_GRID_MESSAGES_FA } from '../i18n/mb-ui-messages-fa';\r\nimport { MbGridMessages } from '../i18n/mb-ui-messages.types';\r\n\r\nexport type { MbGridMessages };\r\n\r\n/** @deprecated Use `MB_UI_MESSAGES` or locale bundles from `i18n/`. */\r\nexport const MB_GRID_DEFAULT_MESSAGES_FA = MB_GRID_MESSAGES_FA;\r\n\r\nexport const MB_GRID_MESSAGES = new InjectionToken<MbGridMessages>('MB_GRID_MESSAGES', {\r\n providedIn: 'root',\r\n factory: () => inject(MB_UI_MESSAGES).grid,\r\n});\r\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { MB_GRID_MESSAGES, MbGridMessages } from '../grid/mb-grid-messages';\nimport { MB_UI_CONFIG, MB_UI_DEFAULT_CONFIG, MbUiConfig } from '../tokens/mb-ui-config.token';\nimport { normalizeMbUiLocale } from './mb-ui-locale';\nimport { getMbUiMessages, mergeMbUiMessages, MB_UI_MESSAGES } from './mb-ui-messages';\nimport { MbUiMessages } from './mb-ui-messages.types';\n\nexport interface ProvideMbUiOptions extends Partial<MbUiConfig> {\n messages?: Partial<MbUiMessages>;\n}\n\nexport function provideMbUi(options: ProvideMbUiOptions = {}): EnvironmentProviders {\n const locale = normalizeMbUiLocale(options.locale ?? MB_UI_DEFAULT_CONFIG.locale);\n const config: MbUiConfig = {\n direction: options.direction ?? MB_UI_DEFAULT_CONFIG.direction,\n density: options.density ?? MB_UI_DEFAULT_CONFIG.density,\n locale,\n };\n const messages = mergeMbUiMessages(getMbUiMessages(locale), options.messages);\n\n return makeEnvironmentProviders([\n { provide: MB_UI_CONFIG, useValue: config },\n { provide: MB_UI_MESSAGES, useValue: messages },\n { provide: MB_GRID_MESSAGES, useFactory: (): MbGridMessages => messages.grid, deps: [] },\n ]);\n}\n","export function coerceBooleanProperty(value: unknown): boolean {\n return value != null && `${value}` !== 'false';\n}\n\nexport function isNil(value: unknown): value is null | undefined {\n return value === null || value === undefined;\n}\n\nexport function normalizeText(value: unknown): string {\n return isNil(value) ? '' : String(value).trim().toLowerCase();\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { NgClass, NgIf } from '@angular/common';\nimport { MbSize } from '../tokens/mb-ui-config.token';\n\nexport type MbButtonVariant = 'primary' | 'secondary' | 'danger' | 'ghost' | 'link';\nexport type MbButtonType = 'button' | 'submit' | 'reset';\n\n@Component({\n selector: 'mb-button',\n standalone: true,\n imports: [NgClass, NgIf],\n templateUrl: './mb-button.component.html',\n styleUrl: './mb-button.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbButtonComponent {\n @Input() variant: MbButtonVariant = 'primary';\n @Input() size: MbSize = 'md';\n @Input() type: MbButtonType = 'button';\n @Input() disabled = false;\n @Input() loading = false;\n @Input() fullWidth = false;\n @Input() ariaLabel?: string;\n @Output() clicked = new EventEmitter<MouseEvent>();\n\n @HostBinding('class') hostClass = 'mb-button-host';\n\n onClick(event: MouseEvent): void {\n if (this.disabled || this.loading) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.clicked.emit(event);\n }\n}\n","<button\n class=\"mb-button\"\n [attr.type]=\"type\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-busy]=\"loading\"\n [disabled]=\"disabled || loading\"\n (click)=\"onClick($event)\"\n [ngClass]=\"[\n 'mb-button--' + variant,\n 'mb-button--' + size,\n fullWidth ? 'mb-button--full' : ''\n ]\">\n <span *ngIf=\"loading\" class=\"mb-button__spinner\" aria-hidden=\"true\"></span>\n <span class=\"mb-button__content\"><ng-content></ng-content></span>\n</button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, inject, Input, Output } from '@angular/core';\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgClass, NgIf } from '@angular/common';\nimport { MbSize } from '../tokens/mb-ui-config.token';\n\nexport type MbInputType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search';\n\n@Component({\n selector: 'mb-input',\n standalone: true,\n imports: [FormsModule, NgClass, NgIf],\n templateUrl: './mb-input.component.html',\n styleUrl: './mb-input.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MbInputComponent),\n multi: true,\n },\n ],\n})\nexport class MbInputComponent implements ControlValueAccessor {\n readonly messages = inject(MB_UI_MESSAGES);\n\n @Input() type: MbInputType = 'text';\n @Input() placeholder = '';\n @Input() size: MbSize = 'md';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() invalid = false;\n @Input() id?: string;\n @Input() name?: string;\n @Input() clearable = false;\n\n @Output() valueChange = new EventEmitter<string>();\n\n value = '';\n\n private onChange: (value: string) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n writeValue(value: string | null): void {\n this.value = value ?? '';\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n handleInput(value: string): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n blur(): void {\n this.onTouched();\n }\n\n clear(): void {\n if (this.disabled || this.readonly) return;\n this.handleInput('');\n }\n}\n","<div class=\"mb-input-wrap\" [ngClass]=\"['mb-input-wrap--' + size, invalid ? 'mb-input-wrap--invalid' : '']\">\n <input\n class=\"mb-input\"\n [id]=\"id\"\n [attr.name]=\"name || null\"\n [attr.type]=\"type\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-invalid]=\"invalid\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [ngModel]=\"value\"\n (ngModelChange)=\"handleInput($event)\"\n (blur)=\"blur()\" />\n <button\n *ngIf=\"clearable && value\"\n class=\"mb-input__clear\"\n type=\"button\"\n [attr.aria-label]=\"messages.common.clear\"\n (click)=\"clear()\">\n ×\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'mb-form-field',\n standalone: true,\n imports: [NgIf],\n templateUrl: './mb-form-field.component.html',\n styleUrl: './mb-form-field.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbFormFieldComponent {\n @Input() label = '';\n @Input() hint = '';\n @Input() error = '';\n @Input() required = false;\n}\n","<label class=\"mb-form-field\">\n <span *ngIf=\"label\" class=\"mb-form-field__label\">\n {{ label }} <span *ngIf=\"required\" class=\"mb-form-field__required\">*</span>\n </span>\n <span class=\"mb-form-field__control\"><ng-content></ng-content></span>\n <span *ngIf=\"error || hint\" class=\"mb-form-field__message\" [class.mb-form-field__message--error]=\"error\">\n {{ error || hint }}\n </span>\n</label>\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, inject, Input, Output } from '@angular/core';\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { NgClass, NgFor } from '@angular/common';\nimport { MbSize } from '../tokens/mb-ui-config.token';\n\nexport interface MbSelectOption<T = unknown> {\n label: string;\n value: T;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'mb-select',\n standalone: true,\n imports: [FormsModule, NgFor, NgClass],\n templateUrl: './mb-select.component.html',\n styleUrl: './mb-select.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MbSelectComponent),\n multi: true,\n },\n ],\n})\nexport class MbSelectComponent<T = unknown> implements ControlValueAccessor {\n private readonly messages = inject(MB_UI_MESSAGES);\n\n @Input() options: MbSelectOption<T>[] = [];\n @Input() placeholder?: string;\n @Input() size: MbSize = 'md';\n @Input() disabled = false;\n @Input() invalid = false;\n\n @Output() valueChange = new EventEmitter<T | null>();\n\n value: T | null = null;\n\n get effectivePlaceholder(): string {\n return this.placeholder ?? this.messages.form.selectPlaceholder;\n }\n\n private onChange: (value: T | null) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n writeValue(value: T | null): void {\n this.value = value;\n }\n\n registerOnChange(fn: (value: T | null) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n compareByValue = (a: T | null, b: T | null) => a === b;\n\n handleChange(value: T | null): void {\n this.value = value;\n this.onChange(value);\n this.valueChange.emit(value);\n }\n\n blur(): void {\n this.onTouched();\n }\n}\n","<select\n class=\"mb-select\"\n [ngClass]=\"['mb-select--' + size, invalid ? 'mb-select--invalid' : '']\"\n [disabled]=\"disabled\"\n [compareWith]=\"compareByValue\"\n [ngModel]=\"value\"\n (ngModelChange)=\"handleChange($event)\"\n (blur)=\"blur()\">\n <option [ngValue]=\"null\">{{ effectivePlaceholder }}</option>\n <option *ngFor=\"let item of options\" [ngValue]=\"item.value\" [disabled]=\"item.disabled\">\n {{ item.label }}\n </option>\n</select>\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n forwardRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { NgClass, NgFor, NgIf } from '@angular/common';\r\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\r\nimport { MbSize } from '../tokens/mb-ui-config.token';\r\n\r\nexport interface MbComboboxOption<T = unknown> {\r\n label: string;\r\n value: T;\r\n disabled?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'mb-combobox',\r\n standalone: true,\r\n imports: [FormsModule, NgClass, NgFor, NgIf],\r\n templateUrl: './mb-combobox.component.html',\r\n styleUrl: './mb-combobox.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => MbComboboxComponent),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class MbComboboxComponent<T = unknown> implements ControlValueAccessor, OnChanges {\r\n readonly messages = inject(MB_UI_MESSAGES);\r\n @Input() data: MbComboboxOption<T>[] | T[] = [];\r\n @Input() textField = 'label';\r\n @Input() valueField = 'value';\r\n @Input() placeholder?: string;\r\n @Input() searchPlaceholder?: string;\r\n @Input() size: MbSize = 'md';\r\n @Input() disabled = false;\r\n @Input() invalid = false;\r\n @Input() filterable = true;\r\n @Input() clearable = true;\r\n @Input() defaultItem: T | null = null;\r\n @Input() defaultItemText?: string;\r\n /** When true, the model value is the primitive from `valueField` instead of the full data item. */\r\n @Input() valuePrimitive = false;\r\n\r\n @Output() valueChange = new EventEmitter<T | null>();\r\n @Output() openedChange = new EventEmitter<boolean>();\r\n\r\n @HostBinding('class') hostClass = 'mb-combobox-host';\r\n\r\n value: T | null = null;\r\n opened = false;\r\n search = '';\r\n normalizedOptions: MbComboboxOption<T>[] = [];\r\n\r\n get effectivePlaceholder(): string {\r\n return this.placeholder ?? this.messages.form.selectPlaceholder;\r\n }\r\n\r\n get effectiveSearchPlaceholder(): string {\r\n return this.searchPlaceholder ?? this.messages.form.searchPlaceholder;\r\n }\r\n\r\n get effectiveDefaultItemText(): string {\r\n return this.defaultItemText ?? this.messages.form.selectDefaultItem;\r\n }\r\n\r\n get clearAriaLabel(): string {\r\n return this.messages.common.clear;\r\n }\r\n\r\n private onChange: (value: T | null) => void = () => undefined;\r\n private onTouched: () => void = () => undefined;\r\n\r\n constructor(\r\n private readonly cdr: ChangeDetectorRef,\r\n private readonly host: ElementRef<HTMLElement>,\r\n ) {}\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['data'] || changes['textField'] || changes['valueField']) {\r\n this.normalizedOptions = this.normalizeOptions(this.data);\r\n this.cdr.markForCheck();\r\n }\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n onDocumentClick(event: MouseEvent): void {\r\n if (this.opened && !this.host.nativeElement.contains(event.target as Node)) {\r\n this.close();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n onDocumentKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' && this.opened) {\r\n event.preventDefault();\r\n this.close();\r\n }\r\n }\r\n\r\n writeValue(value: T | null): void {\r\n this.value = value ?? null;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: (value: T | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n get filteredOptions(): MbComboboxOption<T>[] {\r\n if (!this.filterable || !this.search.trim()) {\r\n return this.normalizedOptions;\r\n }\r\n const term = this.search.trim().toLocaleLowerCase();\r\n return this.normalizedOptions.filter((option) => option.label.toLocaleLowerCase().includes(term));\r\n }\r\n\r\n get displayLabel(): string {\r\n if (this.value === null || this.value === undefined) {\r\n return '';\r\n }\r\n const match = this.normalizedOptions.find((option) => this.compareValues(option.value, this.value));\r\n return match?.label ?? String(this.value);\r\n }\r\n\r\n toggle(): void {\r\n if (this.disabled) return;\r\n this.opened ? this.close() : this.open();\r\n }\r\n\r\n open(): void {\r\n if (this.disabled) return;\r\n this.opened = true;\r\n this.search = '';\r\n this.openedChange.emit(true);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n close(): void {\r\n this.opened = false;\r\n this.onTouched();\r\n this.openedChange.emit(false);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n selectOption(option: MbComboboxOption<T>): void {\r\n if (option.disabled) return;\r\n this.commit(option.value);\r\n this.close();\r\n }\r\n\r\n selectDefault(): void {\r\n this.commit(this.defaultItem);\r\n this.close();\r\n }\r\n\r\n clear(event?: Event): void {\r\n event?.stopPropagation();\r\n if (this.disabled) return;\r\n this.commit(null);\r\n this.close();\r\n }\r\n\r\n private commit(value: T | null): void {\r\n this.value = value;\r\n this.onChange(value);\r\n this.valueChange.emit(value);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n private normalizeOptions(source: MbComboboxOption<T>[] | T[]): MbComboboxOption<T>[] {\r\n if (!source?.length) return [];\r\n const first = source[0] as unknown;\r\n if (first && typeof first === 'object' && 'label' in (first as object) && 'value' in (first as object)) {\r\n return source as MbComboboxOption<T>[];\r\n }\r\n return (source as T[]).map((item) => ({\r\n label: this.readFieldLabel(item, this.textField),\r\n value: (this.valuePrimitive ? this.readFieldValue(item, this.valueField) : item) as T,\r\n disabled: Boolean(this.readFieldValue(item, 'disabled')),\r\n }));\r\n }\r\n\r\n private readFieldLabel(item: unknown, field: string): string {\r\n const value = this.readFieldValue(item, field);\r\n return value === null || value === undefined ? '' : String(value);\r\n }\r\n\r\n private readFieldValue(item: unknown, field: string): unknown {\r\n if (item && typeof item === 'object' && field in (item as Record<string, unknown>)) {\r\n return (item as Record<string, unknown>)[field];\r\n }\r\n return item;\r\n }\r\n\r\n isSelected(option: MbComboboxOption<T>): boolean {\r\n return this.compareValues(option.value, this.value);\r\n }\r\n\r\n private compareValues(a: T | null, b: T | null): boolean {\r\n if (a === b) return true;\r\n if (a === null || b === null) return false;\r\n if (!this.valuePrimitive && typeof a === 'object' && typeof b === 'object') {\r\n const aRecord = a as Record<string, unknown>;\r\n const bRecord = b as Record<string, unknown>;\r\n if (this.valueField in aRecord || this.valueField in bRecord) {\r\n return aRecord[this.valueField] === bRecord[this.valueField];\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","<div class=\"mb-combobox\" [class.mb-combobox--open]=\"opened\" [class.mb-combobox--disabled]=\"disabled\">\r\n <button\r\n type=\"button\"\r\n class=\"mb-combobox__trigger\"\r\n [ngClass]=\"['mb-combobox__trigger--' + size, invalid ? 'mb-combobox__trigger--invalid' : '']\"\r\n [disabled]=\"disabled\"\r\n [attr.aria-expanded]=\"opened\"\r\n aria-haspopup=\"listbox\"\r\n (click)=\"toggle()\">\r\n <span class=\"mb-combobox__value\" [class.mb-combobox__value--placeholder]=\"!displayLabel\">\r\n {{ displayLabel || effectivePlaceholder }}\r\n </span>\r\n <span class=\"mb-combobox__actions\">\r\n <button\r\n *ngIf=\"clearable && value !== null && value !== undefined && !disabled\"\r\n type=\"button\"\r\n class=\"mb-combobox__clear\"\r\n [attr.aria-label]=\"clearAriaLabel\"\r\n (click)=\"clear($event)\">×</button>\r\n <span class=\"mb-combobox__chevron\" [class.mb-combobox__chevron--open]=\"opened\">▾</span>\r\n </span>\r\n </button>\r\n\r\n <div *ngIf=\"opened\" class=\"mb-combobox__panel\" role=\"listbox\">\r\n <input\r\n *ngIf=\"filterable\"\r\n class=\"mb-combobox__search\"\r\n type=\"text\"\r\n [placeholder]=\"effectiveSearchPlaceholder\"\r\n [ngModel]=\"search\"\r\n (ngModelChange)=\"search = $event\"\r\n (click)=\"$event.stopPropagation()\" />\r\n\r\n <button\r\n *ngIf=\"defaultItem !== undefined\"\r\n type=\"button\"\r\n class=\"mb-combobox__option\"\r\n (click)=\"selectDefault()\">\r\n {{ effectiveDefaultItemText }}\r\n </button>\r\n\r\n <button\r\n *ngFor=\"let option of filteredOptions\"\r\n type=\"button\"\r\n class=\"mb-combobox__option\"\r\n [class.mb-combobox__option--selected]=\"isSelected(option)\"\r\n [disabled]=\"option.disabled\"\r\n (click)=\"selectOption(option)\">\r\n {{ option.label }}\r\n </button>\r\n\r\n <div *ngIf=\"!filteredOptions.length\" class=\"mb-combobox__empty\">{{ messages.form.noMatches }}</div>\r\n </div>\r\n</div>\r\n","import {\n MbGridAggregate,\n MbGridColumn,\n MbGridCompositeFilterDescriptor,\n MbGridFilterDescriptor,\n MbGridFilterOperator,\n MbGridGroupDescriptor,\n MbGridGroupRow,\n MbGridProcessedResult,\n MbGridRenderRow,\n MbGridSortDescriptor,\n MbGridSortDirection,\n MbGridState,\n} from './mb-grid.types';\n\nexport function mbGridDefaultState<T = unknown>(take = 10): MbGridState<T> {\n return { skip: 0, take, sort: [], group: [] };\n}\n\nexport function mbGridGetValue<T = unknown>(row: T, field: keyof T | string): unknown {\n if (!row || !field) return undefined;\n const path = String(field).split('.');\n let cursor: any = row;\n for (const segment of path) {\n if (cursor == null) return undefined;\n cursor = cursor[segment];\n }\n return cursor;\n}\n\nexport function mbGridNormalize(value: unknown, ignoreCase = true): string {\n const text = value === null || value === undefined ? '' : String(value);\n return ignoreCase ? text.trim().toLocaleLowerCase() : text.trim();\n}\n\nexport function mbGridApplyFilter<T>(rows: T[], filter?: MbGridCompositeFilterDescriptor<T>, columns: MbGridColumn<T>[] = []): T[] {\n if (!filter || !filter.filters?.length) return rows;\n return rows.filter((row) => mbGridEvaluateComposite(row, filter, columns));\n}\n\nexport function mbGridApplySort<T>(rows: T[], sort: MbGridSortDescriptor<T>[] = [], columns: MbGridColumn<T>[] = []): T[] {\n if (!sort.length) return rows;\n return [...rows].sort((a, b) => {\n for (const descriptor of sort) {\n const column = columns.find((item) => String(item.field) === String(descriptor.field));\n const result = column?.compare\n ? column.compare(a, b, descriptor.dir)\n : mbGridCompareValues(\n column?.valueGetter ? column.valueGetter(a, -1) : mbGridGetValue(a, descriptor.field),\n column?.valueGetter ? column.valueGetter(b, -1) : mbGridGetValue(b, descriptor.field),\n descriptor.dir,\n );\n if (result !== 0) return result;\n }\n return 0;\n });\n}\n\nexport function mbGridProcess<T>(rows: T[], state: MbGridState<T>, columns: MbGridColumn<T>[] = [], expandedGroupKeys = new Set<string>()): MbGridProcessedResult<T> {\n const filtered = mbGridApplyFilter(rows, state.filter, columns);\n const sorted = mbGridApplySort(filtered, state.sort, columns);\n const total = sorted.length;\n const aggregates = mbGridAggregateRows(sorted, columns);\n\n if (state.group?.length) {\n const grouped = mbGridBuildGroupRows(sorted, state.group, columns, expandedGroupKeys);\n return { data: grouped, total, aggregates };\n }\n\n const paged = sorted.slice(state.skip, state.skip + state.take);\n return {\n data: paged.map((dataItem, rowIndex) => ({ kind: 'data', dataItem, rowIndex: state.skip + rowIndex })),\n total,\n aggregates,\n };\n}\n\nexport interface MbGridFormatOptions {\n locale?: string;\n yes?: string;\n no?: string;\n}\n\nexport function mbGridFormatValue<T>(\n row: T,\n column: MbGridColumn<T>,\n rowIndex: number,\n localeOrOptions: string | MbGridFormatOptions = 'en-US',\n): string {\n const options: MbGridFormatOptions = typeof localeOrOptions === 'string'\n ? { locale: localeOrOptions }\n : localeOrOptions;\n const locale = options.locale ?? 'en-US';\n const value = column.valueGetter ? column.valueGetter(row, rowIndex) : mbGridGetValue(row, column.field);\n if (column.formatter) return column.formatter(value, row, rowIndex);\n if (value === null || value === undefined || value === '') return '—';\n if (column.type === 'boolean') return value ? (options.yes ?? 'Yes') : (options.no ?? 'No');\n if (column.type === 'enum' && column.enumMap) return column.enumMap[value as string | number] ?? String(value);\n if (column.type === 'number' && typeof value === 'number') return new Intl.NumberFormat(locale).format(value);\n if (column.type === 'date') {\n const date = value instanceof Date ? value : new Date(String(value));\n return Number.isNaN(date.getTime()) ? String(value) : new Intl.DateTimeFormat(locale).format(date);\n }\n return String(value);\n}\n\nexport function mbGridBuildFilter<T>(filtersByField: Record<string, { operator: MbGridFilterOperator; value: unknown }>): MbGridCompositeFilterDescriptor<T> | undefined {\n const filters = Object.entries(filtersByField)\n .filter(([, item]) => item.operator === 'isNull' || item.operator === 'isNotNull' || item.operator === 'isEmpty' || item.operator === 'isNotEmpty' || item.value !== null && item.value !== undefined && String(item.value).trim() !== '')\n .map(([field, item]) => ({ field, operator: item.operator, value: item.value, ignoreCase: true } as MbGridFilterDescriptor<T>));\n return filters.length ? { logic: 'and', filters } : undefined;\n}\n\nexport function mbGridToODataQuery<T>(state: MbGridState<T>): string {\n const params: string[] = [`$skip=${state.skip}`, `$top=${state.take}`];\n if (state.sort?.length) {\n params.push(`$orderby=${state.sort.map((s) => `${String(s.field)} ${s.dir}`).join(',')}`);\n }\n const filter = mbGridFilterToOData(state.filter);\n if (filter) params.push(`$filter=${encodeURIComponent(filter)}`);\n return params.join('&');\n}\n\nexport function mbGridToLaravelQuery<T>(state: MbGridState<T>): Record<string, unknown> {\n return {\n page: Math.floor(state.skip / state.take) + 1,\n per_page: state.take,\n sort: state.sort.map((s) => `${s.dir === 'desc' ? '-' : ''}${String(s.field)}`).join(','),\n filter: state.filter,\n group: state.group.map((g) => String(g.field)),\n };\n}\n\nexport function mbGridExportCsv<T>(\n rows: T[],\n columns: MbGridColumn<T>[],\n fileName = 'grid-export.csv',\n localeOrOptions: string | MbGridFormatOptions = 'en-US',\n): void {\n const visibleColumns = columns.filter((column) => !column.hidden && column.exportable !== false);\n const escape = (value: unknown) => `\"${String(value ?? '').replace(/\"/g, '\"\"')}\"`;\n const header = visibleColumns.map((column) => escape(column.title)).join(',');\n const body = rows\n .map((row, rowIndex) => visibleColumns.map((column) => escape(mbGridFormatValue(row, column, rowIndex, localeOrOptions))).join(','))\n .join('\\n');\n const blob = new Blob(['\\ufeff', header, '\\n', body], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = fileName;\n anchor.click();\n URL.revokeObjectURL(url);\n}\n\nfunction mbGridEvaluateComposite<T>(row: T, filter: MbGridCompositeFilterDescriptor<T>, columns: MbGridColumn<T>[]): boolean {\n const results = filter.filters.map((item) => {\n if ('logic' in item) return mbGridEvaluateComposite(row, item, columns);\n const column = columns.find((candidate) => String(candidate.field) === String(item.field));\n if (column?.filterPredicate) return column.filterPredicate(row, item);\n const value = column?.valueGetter ? column.valueGetter(row, -1) : mbGridGetValue(row, item.field);\n return mbGridEvaluateFilter(value, item.operator, item.value, item.ignoreCase !== false);\n });\n return filter.logic === 'or' ? results.some(Boolean) : results.every(Boolean);\n}\n\nfunction mbGridEvaluateFilter(value: unknown, operator: MbGridFilterOperator, expected: unknown, ignoreCase = true): boolean {\n const actualText = mbGridNormalize(value, ignoreCase);\n const expectedText = mbGridNormalize(expected, ignoreCase);\n const actualNumber = typeof value === 'number' ? value : Number(value);\n const expectedNumber = Number(expected);\n\n switch (operator) {\n case 'contains': return actualText.includes(expectedText);\n case 'doesNotContain': return !actualText.includes(expectedText);\n case 'startsWith': return actualText.startsWith(expectedText);\n case 'endsWith': return actualText.endsWith(expectedText);\n case 'eq': return actualText === expectedText;\n case 'neq': return actualText !== expectedText;\n case 'gt': return !Number.isNaN(actualNumber) && actualNumber > expectedNumber;\n case 'gte': return !Number.isNaN(actualNumber) && actualNumber >= expectedNumber;\n case 'lt': return !Number.isNaN(actualNumber) && actualNumber < expectedNumber;\n case 'lte': return !Number.isNaN(actualNumber) && actualNumber <= expectedNumber;\n case 'between': {\n const range = Array.isArray(expected) ? expected : String(expected ?? '').split(',');\n const min = Number(range[0]);\n const max = Number(range[1]);\n return !Number.isNaN(actualNumber) && !Number.isNaN(min) && !Number.isNaN(max) && actualNumber >= min && actualNumber <= max;\n }\n case 'isNull': return value === null || value === undefined;\n case 'isNotNull': return value !== null && value !== undefined;\n case 'isEmpty': return actualText.length === 0;\n case 'isNotEmpty': return actualText.length > 0;\n default: return true;\n }\n}\n\nfunction mbGridCompareValues(first: unknown, second: unknown, direction: MbGridSortDirection): number {\n const modifier = direction === 'asc' ? 1 : -1;\n if (first == null && second == null) return 0;\n if (first == null) return -1 * modifier;\n if (second == null) return 1 * modifier;\n if (first instanceof Date || second instanceof Date) {\n return ((new Date(first as any).getTime() || 0) - (new Date(second as any).getTime() || 0)) * modifier;\n }\n if (typeof first === 'number' || typeof second === 'number') {\n return (Number(first) - Number(second)) * modifier;\n }\n return mbGridNormalize(first).localeCompare(mbGridNormalize(second), undefined, { numeric: true }) * modifier;\n}\n\nfunction mbGridBuildGroupRows<T>(rows: T[], groups: MbGridGroupDescriptor<T>[], columns: MbGridColumn<T>[], expandedGroupKeys: Set<string>, level = 0, parentKey = ''): MbGridRenderRow<T>[] {\n if (!groups.length) {\n return rows.map((dataItem, rowIndex) => ({ kind: 'data', dataItem, rowIndex }));\n }\n\n const [descriptor, ...rest] = groups;\n const buckets = new Map<string, T[]>();\n for (const row of rows) {\n const raw = mbGridGetValue(row, descriptor.field);\n const key = String(raw ?? '');\n buckets.set(key, [...(buckets.get(key) ?? []), row]);\n }\n\n const sortedKeys = [...buckets.keys()].sort((a, b) => descriptor.dir === 'desc' ? b.localeCompare(a, undefined, { numeric: true }) : a.localeCompare(b, undefined, { numeric: true }));\n const result: MbGridRenderRow<T>[] = [];\n\n for (const key of sortedKeys) {\n const groupRows = buckets.get(key) ?? [];\n const groupKey = `${parentKey}${String(descriptor.field)}:${key}|`;\n const expanded = expandedGroupKeys.has(groupKey) || expandedGroupKeys.size === 0;\n const groupRow: MbGridGroupRow<T> = {\n kind: 'group',\n field: descriptor.field,\n value: key || '—',\n level,\n count: groupRows.length,\n expanded,\n key: groupKey,\n aggregates: mbGridAggregateRows(groupRows, columns),\n };\n result.push(groupRow);\n if (expanded) {\n result.push(...mbGridBuildGroupRows(groupRows, rest, columns, expandedGroupKeys, level + 1, groupKey));\n }\n }\n\n return result;\n}\n\nfunction mbGridAggregateRows<T>(rows: T[], columns: MbGridColumn<T>[]): Record<string, Record<string, number>> {\n const result: Record<string, Record<string, number>> = {};\n for (const column of columns) {\n const aggregates = Array.isArray(column.aggregate) ? column.aggregate : column.aggregate ? [column.aggregate] : [];\n if (!aggregates.length) continue;\n const values = rows.map((row, index) => column.valueGetter ? column.valueGetter(row, index) : mbGridGetValue(row, column.field)).filter((value) => value !== null && value !== undefined && value !== '');\n const numbers = values.map(Number).filter((value) => !Number.isNaN(value));\n const field = String(column.field);\n result[field] = {};\n for (const aggregate of aggregates) {\n result[field][aggregate] = mbGridAggregateValue(aggregate, numbers, values.length);\n }\n }\n return result;\n}\n\nfunction mbGridAggregateValue(aggregate: MbGridAggregate, numbers: number[], count: number): number {\n switch (aggregate) {\n case 'count': return count;\n case 'sum': return numbers.reduce((sum, value) => sum + value, 0);\n case 'avg': return numbers.length ? numbers.reduce((sum, value) => sum + value, 0) / numbers.length : 0;\n case 'min': return numbers.length ? Math.min(...numbers) : 0;\n case 'max': return numbers.length ? Math.max(...numbers) : 0;\n default: return 0;\n }\n}\n\nfunction mbGridFilterToOData<T>(filter?: MbGridCompositeFilterDescriptor<T>): string {\n if (!filter || !filter.filters.length) return '';\n const parts = filter.filters\n .map((item) => {\n if ('logic' in item) return `(${mbGridFilterToOData(item)})`;\n const field = String(item.field);\n const value = typeof item.value === 'number' ? item.value : `'${String(item.value ?? '').replace(/'/g, \"''\")}'`;\n switch (item.operator) {\n case 'contains': return `contains(${field},${value})`;\n case 'doesNotContain': return `not contains(${field},${value})`;\n case 'startsWith': return `startswith(${field},${value})`;\n case 'endsWith': return `endswith(${field},${value})`;\n case 'eq': return `${field} eq ${value}`;\n case 'neq': return `${field} ne ${value}`;\n case 'gt': return `${field} gt ${value}`;\n case 'gte': return `${field} ge ${value}`;\n case 'lt': return `${field} lt ${value}`;\n case 'lte': return `${field} le ${value}`;\n case 'between': return `${field} ge ${Array.isArray(item.value) ? item.value[0] : item.value} and ${field} le ${item.valueTo ?? (Array.isArray(item.value) ? item.value[1] : item.value)}`;\n case 'isNull': return `${field} eq null`;\n case 'isNotNull': return `${field} ne null`;\n case 'isEmpty': return `${field} eq ''`;\n case 'isNotEmpty': return `${field} ne ''`;\n default: return '';\n }\n })\n .filter(Boolean);\n return parts.join(` ${filter.logic} `);\n}\n","import { MbGridColumn } from './mb-grid.types';\nimport { MbGridFormatOptions, mbGridFormatValue, mbGridGetValue } from './mb-grid-data';\n\nexport function mbGridDownloadBlob(blob: Blob, fileName: string): void {\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n anchor.download = fileName;\n anchor.click();\n URL.revokeObjectURL(url);\n}\n\nexport function mbGridExportJson<T>(rows: T[], columns: MbGridColumn<T>[], fileName = 'grid-export.json'): void {\n const visible = columns.filter((column) => !column.hidden && column.exportable !== false);\n const data = rows.map((row, rowIndex) => {\n const item: Record<string, unknown> = {};\n for (const column of visible) item[String(column.field)] = column.valueGetter ? column.valueGetter(row, rowIndex) : mbGridGetValue(row, column.field);\n return item;\n });\n mbGridDownloadBlob(new Blob([JSON.stringify(data, null, 2)], { type: 'application/json;charset=utf-8' }), fileName);\n}\n\n/**\n * Excel-compatible HTML export. It opens directly in Excel/LibreOffice and keeps Unicode/RTL safely.\n * For true XLSX, wrap this API with SheetJS/xlsx in the host application to avoid forcing a heavy dependency into mb-ui core.\n */\nexport function mbGridExportExcelHtml<T>(\n rows: T[],\n columns: MbGridColumn<T>[],\n fileName = 'grid-export.xls',\n localeOrOptions: string | MbGridFormatOptions = 'en-US',\n dir: 'rtl' | 'ltr' = 'ltr',\n): void {\n const visible = columns.filter((column) => !column.hidden && column.exportable !== false);\n const escape = (value: unknown) => String(value ?? '')\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"');\n const header = `<tr>${visible.map((column) => `<th>${escape(column.title)}</th>`).join('')}</tr>`;\n const body = rows.map((row, rowIndex) => `<tr>${visible.map((column) => `<td>${escape(mbGridFormatValue(row, column, rowIndex, localeOrOptions))}</td>`).join('')}</tr>`).join('');\n const html = `<!doctype html><html><head><meta charset=\"utf-8\"></head><body><table dir=\"${dir}\">${header}${body}</table></body></html>`;\n mbGridDownloadBlob(new Blob(['\\ufeff', html], { type: 'application/vnd.ms-excel;charset=utf-8' }), fileName);\n}\n","import { Directive, Input, TemplateRef } from '@angular/core';\nimport {\n MbGridCellTemplateContext,\n MbGridDetailTemplateContext,\n MbGridFooterTemplateContext,\n MbGridHeaderTemplateContext,\n MbGridEditTemplateContext,\n MbGridToolbarTemplateContext,\n} from './mb-grid.types';\n\n@Directive({\n selector: 'ng-template[mbGridCell]',\n standalone: true,\n})\nexport class MbGridCellTemplateDirective<T = unknown> {\n @Input('mbGridCell') field = '';\n constructor(public readonly templateRef: TemplateRef<MbGridCellTemplateContext<T>>) {}\n}\n\n\n@Directive({\n selector: 'ng-template[mbGridEdit]',\n standalone: true,\n})\nexport class MbGridEditTemplateDirective<T = unknown> {\n @Input('mbGridEdit') field = '';\n constructor(public readonly templateRef: TemplateRef<MbGridEditTemplateContext<T>>) {}\n}\n\n@Directive({\n selector: 'ng-template[mbGridHeader]',\n standalone: true,\n})\nexport class MbGridHeaderTemplateDirective<T = unknown> {\n @Input('mbGridHeader') field = '';\n constructor(public readonly templateRef: TemplateRef<MbGridHeaderTemplateContext<T>>) {}\n}\n\n@Directive({\n selector: 'ng-template[mbGridFooter]',\n standalone: true,\n})\nexport class MbGridFooterTemplateDirective<T = unknown> {\n @Input('mbGridFooter') field = '';\n constructor(public readonly templateRef: TemplateRef<MbGridFooterTemplateContext<T>>) {}\n}\n\n@Directive({\n selector: 'ng-template[mbGridToolbar]',\n standalone: true,\n})\nexport class MbGridToolbarTemplateDirective<T = unknown> {\n constructor(public readonly templateRef: TemplateRef<MbGridToolbarTemplateContext<T>>) {}\n}\n\n@Directive({\n selector: 'ng-template[mbGridDetail]',\n standalone: true,\n})\nexport class MbGridDetailTemplateDirective<T = unknown> {\n constructor(public readonly templateRef: TemplateRef<MbGridDetailTemplateContext<T>>) {}\n}\n","import { Injectable } from '@angular/core';\nimport { MbGridColumn, MbGridPersistedState, MbGridState } from './mb-grid.types';\n\n@Injectable({ providedIn: 'root' })\nexport class MbGridStateService {\n save<T>(key: string, state: MbGridState<T>, columns: MbGridColumn<T>[], selectedKeys: Array<string | number> = []): void {\n if (!key || typeof localStorage === 'undefined') return;\n const payload: MbGridPersistedState<T> = {\n state,\n selectedKeys,\n columns: columns.map((column) => ({\n field: column.field,\n width: column.width,\n hidden: column.hidden,\n locked: column.locked,\n sticky: column.sticky,\n })),\n updatedAt: new Date().toISOString(),\n };\n localStorage.setItem(this.storageKey(key), JSON.stringify(payload));\n }\n\n load<T>(key: string): MbGridPersistedState<T> | null {\n if (!key || typeof localStorage === 'undefined') return null;\n const raw = localStorage.getItem(this.storageKey(key));\n if (!raw) return null;\n try { return JSON.parse(raw) as MbGridPersistedState<T>; }\n catch { return null; }\n }\n\n clear(key: string): void {\n if (!key || typeof localStorage === 'undefined') return;\n localStorage.removeItem(this.storageKey(key));\n }\n\n private storageKey(key: string): string { return `mb-ui:grid:${key}`; }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { DecimalPipe, KeyValuePipe, NgClass, NgFor, NgIf, NgStyle, NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { CdkDragDrop, DragDropModule, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\nimport {\n MbGridCellClickEvent,\n MbGridColumn,\n MbGridColumnReorderEvent,\n MbGridColumnResizeEvent,\n MbGridCompositeFilterDescriptor,\n MbGridDataMode,\n MbGridDensity,\n MbGridFilterMode,\n MbGridFilterOperator,\n MbGridEditMode,\n MbGridEditEvent,\n MbGridSaveEvent,\n MbGridCancelEvent,\n MbGridRemoveEvent,\n MbGridSelectionChangeEvent,\n MbGridColumnVisibilityEvent,\n MbGridColumnLockEvent,\n MbGridDetailToggleEvent,\n MbGridGroupChangeEvent,\n MbGridGroupDescriptor,\n MbGridPageChangeEvent,\n MbGridProcessedResult,\n MbGridRenderRow,\n MbGridRowClickEvent,\n MbGridSelectionMode,\n MbGridSortChangeEvent,\n MbGridSortDescriptor,\n MbGridState,\n} from './mb-grid.types';\nimport {\n mbGridBuildFilter,\n mbGridDefaultState,\n mbGridExportCsv,\n mbGridFormatValue,\n mbGridGetValue,\n mbGridProcess,\n} from './mb-grid-data';\nimport { mbGridExportExcelHtml, mbGridExportJson } from './mb-grid-export';\nimport { MbGridStateService } from './mb-grid-state.service';\nimport {\n MbGridCellTemplateDirective,\n MbGridDetailTemplateDirective,\n MbGridEditTemplateDirective,\n MbGridFooterTemplateDirective,\n MbGridHeaderTemplateDirective,\n MbGridToolbarTemplateDirective,\n} from './mb-grid-template.directive';\nimport { MB_UI_CONFIG, MbUiConfig } from '../tokens/mb-ui-config.token';\nimport { MB_GRID_MESSAGES, MbGridMessages } from './mb-grid-messages';\n\n@Component({\n selector: 'mb-grid',\n standalone: true,\n imports: [NgIf, NgFor, NgClass, NgStyle, NgTemplateOutlet, DecimalPipe, KeyValuePipe, FormsModule, DragDropModule, ScrollingModule],\n templateUrl: './mb-grid.component.html',\n styleUrl: './mb-grid.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbGridComponent<T extends Record<string, any> = Record<string, any>> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\n @Input() data: T[] = [];\n @Input() columns: MbGridColumn<T>[] = [];\n @Input() loading = false;\n @Input() dataMode: MbGridDataMode = 'client';\n @Input() state: MbGridState<T> = mbGridDefaultState<T>();\n @Input() total = 0;\n @Input() height: number | string | null = null;\n @Input() rowHeight = 44;\n @Input() density: MbGridDensity = 'comfortable';\n @Input() locale?: string;\n @Input() dir?: 'rtl' | 'ltr';\n @Input() noRecordsText?: string;\n @Input() loadingText?: string;\n\n @Input() pageable = true;\n @Input() pageSizeOptions: number[] = [10, 20, 50, 100];\n @Input() sortable = true;\n @Input() multiSort = false;\n @Input() filterable = true;\n @Input() filterMode: MbGridFilterMode = 'row';\n @Input() groupable = false;\n @Input() selectable = false;\n @Input() selectionMode: MbGridSelectionMode = 'multiple';\n @Input() rowKey: keyof T | string | ((row: T) => string | number) = 'id';\n @Input() selectedKeys: Array<string | number> = [];\n @Input() resizable = true;\n @Input() reorderable = true;\n @Input() columnMenu = true;\n @Input() showToolbar = true;\n @Input() showSearch = true;\n @Input() showColumnChooser = true;\n @Input() showExport = true;\n @Input() showFooter = false;\n @Input() virtualScroll = false;\n @Input() exportFileName = 'mb-grid-export.csv';\n @Input() excelFileName = 'mb-grid-export.xls';\n @Input() jsonFileName = 'mb-grid-export.json';\n @Input() showExcelExport = true;\n @Input() showJsonExport = true;\n @Input() persistKey = '';\n @Input() autoPersist = false;\n @Input() editable = false;\n @Input() editMode: MbGridEditMode = 'inline';\n @Input() allowAdd = false;\n @Input() allowDelete = false;\n @Input() confirmDelete = false;\n @Input() commandColumnTitle?: string;\n @Input() newItemFactory?: () => T;\n @Input() expandable = false;\n @Input() detailInitiallyExpanded = false;\n @Input() rowClassName?: string | ((row: T, rowIndex: number) => string | string[] | Record<string, boolean>);\n @Input() responsiveColumns = true;\n\n @Output() stateChange = new EventEmitter<MbGridState<T>>();\n @Output() pageChange = new EventEmitter<MbGridPageChangeEvent>();\n @Output() sortChange = new EventEmitter<MbGridSortChangeEvent<T>>();\n @Output() filterChange = new EventEmitter<{ filter?: MbGridCompositeFilterDescriptor<T> }>();\n @Output() groupChange = new EventEmitter<MbGridGroupChangeEvent<T>>();\n @Output() selectedKeysChange = new EventEmitter<Array<string | number>>();\n @Output() columnResize = new EventEmitter<MbGridColumnResizeEvent<T>>();\n @Output() columnReorder = new EventEmitter<MbGridColumnReorderEvent<T>>();\n @Output() columnVisibilityChange = new EventEmitter<MbGridColumnVisibilityEvent<T>>();\n @Output() columnLockChange = new EventEmitter<MbGridColumnLockEvent<T>>();\n @Output() selectionChange = new EventEmitter<MbGridSelectionChangeEvent<T>>();\n @Output() edit = new EventEmitter<MbGridEditEvent<T>>();\n @Output() save = new EventEmitter<MbGridSaveEvent<T>>();\n @Output() cancel = new EventEmitter<MbGridCancelEvent<T>>();\n @Output() remove = new EventEmitter<MbGridRemoveEvent<T>>();\n @Output() detailToggle = new EventEmitter<MbGridDetailToggleEvent<T>>();\n @Output() rowClick = new EventEmitter<MbGridRowClickEvent<T>>();\n @Output() cellClick = new EventEmitter<MbGridCellClickEvent<T>>();\n\n @ContentChildren(MbGridCellTemplateDirective) cellTemplates?: QueryList<MbGridCellTemplateDirective<T>>;\n @ContentChildren(MbGridHeaderTemplateDirective) headerTemplates?: QueryList<MbGridHeaderTemplateDirective<T>>;\n @ContentChildren(MbGridEditTemplateDirective) editTemplates?: QueryList<MbGridEditTemplateDirective<T>>;\n @ContentChildren(MbGridFooterTemplateDirective) footerTemplates?: QueryList<MbGridFooterTemplateDirective<T>>;\n @ContentChild(MbGridToolbarTemplateDirective) toolbarTemplate?: MbGridToolbarTemplateDirective<T>;\n @ContentChild(MbGridDetailTemplateDirective) detailTemplate?: MbGridDetailTemplateDirective<T>;\n\n processed: MbGridProcessedResult<T> = { data: [], total: 0, aggregates: {} };\n internalColumns: MbGridColumn<T>[] = [];\n globalSearch = '';\n filtersByField: Record<string, { operator: MbGridFilterOperator; value: unknown }> = {};\n openColumnMenuField = '';\n resizing?: { field: string; startX: number; startWidth: number };\n expandedGroupKeys = new Set<string>();\n expandedDetailKeys = new Set<string | number>();\n editingKey: string | number | null = null;\n editingModel: T | null = null;\n originalModel: T | null = null;\n editingRowIndex = -1;\n editingIsNew = false;\n validationErrors: Record<string, string> = {};\n private readonly mediaQueryLists = new Map<string, MediaQueryList>();\n private readonly mediaListeners = new Map<string, (event: MediaQueryListEvent) => void>();\n\n readonly textOperators: MbGridFilterOperator[] = ['contains', 'doesNotContain', 'startsWith', 'endsWith', 'eq', 'neq', 'isEmpty', 'isNotEmpty'];\n readonly numericOperators: MbGridFilterOperator[] = ['eq', 'neq', 'gt', 'gte', 'lt', 'lte', 'between', 'isNull', 'isNotNull'];\n readonly booleanOperators: MbGridFilterOperator[] = ['eq', 'neq'];\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly stateStore: MbGridStateService,\n @Inject(MB_UI_CONFIG) private readonly uiConfig: MbUiConfig,\n @Inject(MB_GRID_MESSAGES) readonly messages: MbGridMessages,\n ) {}\n\n get effectiveLocale(): string {\n return this.locale ?? this.uiConfig.locale;\n }\n\n get effectiveDir(): 'rtl' | 'ltr' {\n return this.dir ?? this.uiConfig.direction;\n }\n\n get effectiveCommandColumnTitle(): string {\n return this.commandColumnTitle ?? this.messages.commandColumn;\n }\n\n private get formatOptions() {\n return { locale: this.effectiveLocale, yes: this.messages.yes, no: this.messages.no };\n }\n\n ngOnInit(): void {\n this.syncMediaQueries();\n }\n\n ngOnDestroy(): void {\n for (const [query, listener] of this.mediaListeners) {\n this.mediaQueryLists.get(query)?.removeEventListener('change', listener);\n }\n this.mediaListeners.clear();\n this.mediaQueryLists.clear();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['columns']) {\n this.internalColumns = (this.columns ?? []).map((column) => ({\n sortable: true,\n filterable: true,\n groupable: true,\n resizable: true,\n reorderable: true,\n menu: true,\n exportable: true,\n ...column,\n }));\n this.applyProjectedTemplates();\n this.ensureFilterDefaults();\n this.restorePersistedState();\n this.syncMediaQueries();\n }\n if (changes['state'] && !this.state) {\n this.state = mbGridDefaultState<T>();\n }\n this.reprocess();\n }\n\n ngAfterContentInit(): void {\n this.applyProjectedTemplates();\n this.cellTemplates?.changes.subscribe(() => this.applyProjectedTemplates());\n this.headerTemplates?.changes.subscribe(() => this.applyProjectedTemplates());\n this.editTemplates?.changes.subscribe(() => this.applyProjectedTemplates());\n this.footerTemplates?.changes.subscribe(() => this.applyProjectedTemplates());\n this.reprocess();\n this.cdr.markForCheck();\n }\n\n get visibleColumns(): MbGridColumn<T>[] {\n return this.internalColumns.filter((column) => !column.hidden && this.matchesMedia(column));\n }\n\n get lockedStartColumns(): MbGridColumn<T>[] {\n return this.visibleColumns.filter((column) => this.isLockedStart(column));\n }\n\n get lockedEndColumns(): MbGridColumn<T>[] {\n return this.visibleColumns.filter((column) => this.isLockedEnd(column));\n }\n\n get hasFilterRow(): boolean {\n return this.filterable && (this.filterMode === 'row' || this.filterMode === 'both');\n }\n\n get hasColumnMenu(): boolean {\n return this.columnMenu && (this.filterMode === 'menu' || this.filterMode === 'both' || this.showColumnChooser || this.groupable);\n }\n\n get pageIndex(): number {\n return Math.floor((this.state?.skip ?? 0) / (this.state?.take || 1));\n }\n\n get pageSize(): number {\n return this.state?.take ?? 10;\n }\n\n get effectiveTotal(): number {\n return this.dataMode === 'server' ? this.total : this.processed.total;\n }\n\n get pageCount(): number {\n return Math.max(1, Math.ceil(this.effectiveTotal / this.pageSize));\n }\n\n get from(): number {\n if (!this.effectiveTotal) return 0;\n return this.pageIndex * this.pageSize + 1;\n }\n\n get to(): number {\n return Math.min((this.pageIndex + 1) * this.pageSize, this.effectiveTotal);\n }\n\n get gridStyle(): Record<string, string | null> {\n return { height: typeof this.height === 'number' ? `${this.height}px` : this.height };\n }\n\n get allVisibleRowsSelected(): boolean {\n const dataRows = this.dataRowsFromRendered();\n return dataRows.length > 0 && dataRows.every((row) => this.selectedKeys.includes(this.getRowKey(row)));\n }\n\n get someVisibleRowsSelected(): boolean {\n const dataRows = this.dataRowsFromRendered();\n return dataRows.some((row) => this.selectedKeys.includes(this.getRowKey(row))) && !this.allVisibleRowsSelected;\n }\n\n get toolbarContext() {\n return {\n state: this.state,\n total: this.effectiveTotal,\n selectedKeys: this.selectedKeys,\n selectedRows: this.selectedRows,\n add: () => this.createRow(),\n exportCsv: () => this.exportCsv(),\n exportExcel: () => this.exportExcel(),\n reset: () => this.resetState(),\n };\n }\n\n get selectedRows(): T[] {\n const allRows = this.data ?? [];\n return allRows.filter((row) => this.selectedKeys.includes(this.getRowKey(row)));\n }\n\n get columnSpan(): number {\n return this.visibleColumns.length + (this.selectable ? 1 : 0) + (this.expandable ? 1 : 0) + (this.showCommandColumn ? 1 : 0);\n }\n\n get showCommandColumn(): boolean {\n return this.editable || this.allowDelete;\n }\n\n getOperatorLabel(operator: MbGridFilterOperator): string {\n return this.messages.operatorLabels[operator] ?? operator;\n }\n\n getOperators(column: MbGridColumn<T>): MbGridFilterOperator[] {\n if (column.type === 'number' || column.type === 'date') return this.numericOperators;\n if (column.type === 'boolean') return this.booleanOperators;\n return this.textOperators;\n }\n\n\n getColumnStyle(column: MbGridColumn<T>): Record<string, string | null> {\n const lockedStart = this.isLockedStart(column);\n const lockedEnd = this.isLockedEnd(column);\n return {\n width: this.toCssSize(column.width),\n minWidth: this.toCssSize(column.minWidth),\n maxWidth: this.toCssSize(column.maxWidth),\n position: lockedStart || lockedEnd ? 'sticky' : null,\n insetInlineStart: lockedStart ? `${this.getLockedOffset(column, 'start')}px` : null,\n insetInlineEnd: lockedEnd ? `${this.getLockedOffset(column, 'end')}px` : null,\n zIndex: lockedStart || lockedEnd ? '6' : null,\n };\n }\n\n getColumnClass(column: MbGridColumn<T>): Record<string, boolean> {\n return {\n 'mb-grid__cell--locked-start': this.isLockedStart(column),\n 'mb-grid__cell--locked-end': this.isLockedEnd(column),\n };\n }\n\n isLockedStart(column: MbGridColumn<T>): boolean {\n return !!column.locked || column.sticky === 'start';\n }\n\n isLockedEnd(column: MbGridColumn<T>): boolean {\n return column.sticky === 'end';\n }\n\n matchesMedia(column: MbGridColumn<T>): boolean {\n if (!this.responsiveColumns || !column.media || typeof window === 'undefined') {\n return true;\n }\n return this.mediaQueryLists.get(column.media)?.matches ?? true;\n }\n\n pagerInfoText(): string {\n return this.messages.pagerInfo(this.from, this.to, this.effectiveTotal);\n }\n\n getSortIndex(column: MbGridColumn<T>): number {\n return (this.state.sort ?? []).findIndex((item) => String(item.field) === String(column.field));\n }\n\n getSortDirection(column: MbGridColumn<T>): '' | 'asc' | 'desc' {\n return this.state.sort?.find((item) => String(item.field) === String(column.field))?.dir ?? '';\n }\n\n getValue(row: T, column: MbGridColumn<T>, rowIndex = -1): unknown {\n return column.valueGetter ? column.valueGetter(row, rowIndex) : mbGridGetValue(row, column.field);\n }\n\n formatCell(row: T, column: MbGridColumn<T>, rowIndex: number): string {\n return mbGridFormatValue(row, column, rowIndex, this.formatOptions);\n }\n\n\n getCellClass(row: T, column: MbGridColumn<T>, rowIndex: number): string | string[] | Record<string, boolean> | null {\n if (!column.className) return null;\n if (typeof column.className === 'function') {\n return column.className(row, this.getValue(row, column, rowIndex), rowIndex) as any;\n }\n return column.className as any;\n }\n\n getCellTemplate(column: MbGridColumn<T>): TemplateRef<any> | null {\n return column.cellTemplate ?? null;\n }\n\n getHeaderTemplate(column: MbGridColumn<T>): TemplateRef<any> | null {\n return column.headerTemplate ?? null;\n }\n\n getFooterTemplate(column: MbGridColumn<T>): TemplateRef<any> | null {\n return column.footerTemplate ?? null;\n }\n\n getRowKey(row: T): string | number {\n if (typeof this.rowKey === 'function') return this.rowKey(row);\n return mbGridGetValue(row, this.rowKey) as string | number;\n }\n\n toggleSort(column: MbGridColumn<T>, event?: MouseEvent): void {\n if (!this.sortable || column.sortable === false) return;\n const field = String(column.field);\n const current = [...(this.state.sort ?? [])];\n const index = current.findIndex((item) => String(item.field) === field);\n const isMulti = this.multiSort && !!event?.shiftKey;\n const base = isMulti ? current : index >= 0 ? [current[index]] : [];\n const targetIndex = base.findIndex((item) => String(item.field) === field);\n\n if (targetIndex < 0) {\n base.push({ field: column.field, dir: 'asc' });\n } else if (base[targetIndex].dir === 'asc') {\n base[targetIndex] = { ...base[targetIndex], dir: 'desc' };\n } else {\n base.splice(targetIndex, 1);\n }\n\n this.setState({ ...this.state, sort: base, skip: 0 });\n this.sortChange.emit({ sort: base });\n }\n\n setFilterValue(column: MbGridColumn<T>, value: unknown): void {\n const field = String(column.field);\n const current = this.filtersByField[field] ?? { operator: this.defaultOperator(column), value: '' };\n this.filtersByField = { ...this.filtersByField, [field]: { ...current, value } };\n this.applyFilters();\n }\n\n setFilterOperator(column: MbGridColumn<T>, operator: MbGridFilterOperator): void {\n const field = String(column.field);\n const current = this.filtersByField[field] ?? { operator, value: '' };\n this.filtersByField = { ...this.filtersByField, [field]: { ...current, operator } };\n this.applyFilters();\n }\n\n clearFilter(column?: MbGridColumn<T>): void {\n if (!column) {\n this.filtersByField = {};\n } else {\n const clone = { ...this.filtersByField };\n delete clone[String(column.field)];\n this.filtersByField = clone;\n }\n this.applyFilters();\n }\n\n applyGlobalSearch(value: string): void {\n this.globalSearch = value;\n const filters = this.visibleColumns\n .filter((column) => column.filterable !== false && column.type !== 'custom')\n .map((column) => ({ field: column.field, operator: 'contains' as const, value, ignoreCase: true }));\n\n const columnFilter = mbGridBuildFilter<T>(this.filtersByField);\n const globalFilter: MbGridCompositeFilterDescriptor<T> | undefined = value?.trim()\n ? { logic: 'or', filters }\n : undefined;\n const filter: MbGridCompositeFilterDescriptor<T> | undefined = columnFilter && globalFilter\n ? { logic: 'and', filters: [columnFilter, globalFilter] }\n : columnFilter ?? globalFilter;\n\n this.setState({ ...this.state, filter, skip: 0 });\n this.filterChange.emit({ filter });\n }\n\n changePage(pageIndex: number): void {\n const nextPage = Math.min(Math.max(pageIndex, 0), this.pageCount - 1);\n const state = { ...this.state, skip: nextPage * this.pageSize };\n this.setState(state);\n this.pageChange.emit({ pageIndex: nextPage, pageSize: this.pageSize, skip: state.skip, take: state.take });\n }\n\n changePageSize(value: number | string): void {\n const take = Number(value);\n const state = { ...this.state, skip: 0, take };\n this.setState(state);\n this.pageChange.emit({ pageIndex: 0, pageSize: take, skip: 0, take });\n }\n\n toggleRow(row: T, event?: Event): void {\n event?.stopPropagation();\n const key = this.getRowKey(row);\n const exists = this.selectedKeys.includes(key);\n const next = this.selectionMode === 'single'\n ? exists ? [] : [key]\n : exists ? this.selectedKeys.filter((item) => item !== key) : [...this.selectedKeys, key];\n this.selectedKeys = next;\n this.selectedKeysChange.emit(next);\n this.selectionChange.emit({ selectedKeys: next, selectedRows: this.selectedRows });\n }\n\n toggleAllVisible(event?: Event): void {\n event?.stopPropagation();\n const visible = this.dataRowsFromRendered().map((row) => this.getRowKey(row));\n const allSelected = visible.every((key) => this.selectedKeys.includes(key));\n this.selectedKeys = allSelected\n ? this.selectedKeys.filter((key) => !visible.includes(key))\n : Array.from(new Set([...this.selectedKeys, ...visible]));\n this.selectedKeysChange.emit(this.selectedKeys);\n this.selectionChange.emit({ selectedKeys: this.selectedKeys, selectedRows: this.selectedRows });\n }\n\n isSelected(row: T): boolean {\n return this.selectedKeys.includes(this.getRowKey(row));\n }\n\n onRowClick(row: T, rowIndex: number): void {\n this.rowClick.emit({ row, rowIndex });\n }\n\n onCellClick(row: T, column: MbGridColumn<T>, rowIndex: number): void {\n this.cellClick.emit({ row, column, value: this.getValue(row, column, rowIndex), rowIndex });\n }\n\n toggleColumnMenu(column: MbGridColumn<T>, event: MouseEvent): void {\n event.stopPropagation();\n const field = String(column.field);\n this.openColumnMenuField = this.openColumnMenuField === field ? '' : field;\n }\n\n hideColumn(column: MbGridColumn<T>): void {\n column.hidden = true;\n this.openColumnMenuField = '';\n this.columnVisibilityChange.emit({ column, field: column.field, visible: false, columns: this.internalColumns });\n this.persistState();\n this.cdr.markForCheck();\n }\n\n showColumn(column: MbGridColumn<T>, visible: boolean): void {\n column.hidden = !visible;\n this.columnVisibilityChange.emit({ column, field: column.field, visible, columns: this.internalColumns });\n this.persistState();\n this.cdr.markForCheck();\n }\n\n toggleLock(column: MbGridColumn<T>): void {\n column.locked = !column.locked;\n column.sticky = column.locked ? 'start' : false;\n this.columnLockChange.emit({ column, field: column.field, locked: !!column.locked, columns: this.internalColumns });\n this.persistState();\n this.cdr.markForCheck();\n }\n\n resetColumns(): void {\n this.internalColumns = (this.columns ?? []).map((column) => ({ ...column }));\n this.applyProjectedTemplates();\n this.cdr.markForCheck();\n }\n\n toggleGroup(column: MbGridColumn<T>): void {\n if (!this.groupable || column.groupable === false) return;\n const field = String(column.field);\n const exists = this.state.group?.some((group) => String(group.field) === field);\n const group = exists\n ? this.state.group.filter((item) => String(item.field) !== field)\n : [...(this.state.group ?? []), { field: column.field, dir: 'asc' as const }];\n this.setState({ ...this.state, group, skip: 0 });\n this.groupChange.emit({ group });\n this.openColumnMenuField = '';\n }\n\n removeGroup(group: MbGridGroupDescriptor<T>): void {\n const next = this.state.group.filter((item) => String(item.field) !== String(group.field));\n this.setState({ ...this.state, group: next, skip: 0 });\n this.groupChange.emit({ group: next });\n }\n\n toggleGroupRow(row: MbGridRenderRow<T>): void {\n if (row.kind !== 'group') return;\n if (this.expandedGroupKeys.has(row.key)) this.expandedGroupKeys.delete(row.key);\n else this.expandedGroupKeys.add(row.key);\n this.reprocess();\n }\n\n startResize(column: MbGridColumn<T>, event: MouseEvent): void {\n if (!this.resizable || column.resizable === false) return;\n event.preventDefault();\n event.stopPropagation();\n const header = (event.target as HTMLElement).closest('th') as HTMLElement | null;\n this.resizing = { field: String(column.field), startX: event.clientX, startWidth: header?.offsetWidth ?? 120 };\n const move = (moveEvent: MouseEvent) => this.resizeColumn(moveEvent);\n const up = () => {\n document.removeEventListener('mousemove', move);\n document.removeEventListener('mouseup', up);\n this.resizing = undefined;\n };\n document.addEventListener('mousemove', move);\n document.addEventListener('mouseup', up);\n }\n\n dropColumn(event: CdkDragDrop<MbGridColumn<T>[]>): void {\n if (!this.reorderable || event.previousIndex === event.currentIndex) return;\n moveItemInArray(this.internalColumns, event.previousIndex, event.currentIndex);\n this.columnReorder.emit({ previousIndex: event.previousIndex, currentIndex: event.currentIndex, columns: this.internalColumns });\n this.persistState();\n this.cdr.markForCheck();\n }\n\n exportCsv(): void {\n const rows = this.exportRows();\n mbGridExportCsv(rows, this.visibleColumns, this.exportFileName, this.formatOptions);\n }\n\n exportExcel(): void {\n mbGridExportExcelHtml(this.exportRows(), this.visibleColumns, this.excelFileName, this.formatOptions, this.effectiveDir);\n }\n\n exportJson(): void {\n mbGridExportJson(this.exportRows(), this.visibleColumns, this.jsonFileName);\n }\n\n resetState(): void {\n this.globalSearch = '';\n this.filtersByField = {};\n this.expandedGroupKeys.clear();\n this.expandedDetailKeys.clear();\n this.cancelEditInternal(false);\n this.setState(mbGridDefaultState<T>(this.pageSize));\n }\n\n\n createRow(): void {\n if (!this.editable || !this.allowAdd) return;\n const row = this.newItemFactory ? this.newItemFactory() : ({} as T);\n const key = `__new_${Date.now()}`;\n this.editingKey = key;\n this.editingModel = this.cloneRow(row);\n this.originalModel = null;\n this.editingRowIndex = 0;\n this.editingIsNew = true;\n this.validationErrors = {};\n this.cdr.markForCheck();\n }\n\n startEdit(row: T, rowIndex: number, event?: Event): void {\n event?.stopPropagation();\n if (!this.editable || this.editMode === 'none') return;\n const key = this.getRowKey(row);\n this.editingKey = key;\n this.editingModel = this.cloneRow(row);\n this.originalModel = this.cloneRow(row);\n this.editingRowIndex = rowIndex;\n this.editingIsNew = false;\n this.validationErrors = {};\n this.edit.emit({ row, rowIndex, key });\n this.cdr.markForCheck();\n }\n\n saveEdit(event?: Event): void {\n event?.stopPropagation();\n if (!this.editingModel || this.editingKey === null) return;\n if (!this.validateEditingModel()) {\n this.cdr.markForCheck();\n return;\n }\n const row = this.cloneRow(this.editingModel);\n const key = this.editingKey;\n this.save.emit({ row, originalRow: this.originalModel, rowIndex: this.editingRowIndex, key, isNew: this.editingIsNew });\n this.cancelEditInternal(false);\n this.cdr.markForCheck();\n }\n\n cancelEditRow(event?: Event): void {\n event?.stopPropagation();\n if (!this.editingModel || this.editingKey === null) return;\n this.cancel.emit({ row: this.editingModel, originalRow: this.originalModel, rowIndex: this.editingRowIndex, key: this.editingKey, isNew: this.editingIsNew });\n this.cancelEditInternal(true);\n }\n\n removeRow(row: T, rowIndex: number, event?: Event): void {\n event?.stopPropagation();\n if (this.confirmDelete && !confirm(this.messages.deleteConfirm)) return;\n this.remove.emit({ row, rowIndex, key: this.getRowKey(row) });\n }\n\n isEditing(row: T): boolean {\n return this.editingKey !== null && this.getRowKey(row) === this.editingKey;\n }\n\n isNewRowEditing(): boolean {\n return this.editingIsNew && !!this.editingModel;\n }\n\n setEditValue(column: MbGridColumn<T>, value: unknown): void {\n if (!this.editingModel) return;\n if (column.valueSetter) {\n this.editingModel = column.valueSetter(this.editingModel, value, this.editingRowIndex);\n } else {\n this.setNestedValue(this.editingModel, String(column.field), value);\n }\n delete this.validationErrors[String(column.field)];\n this.cdr.markForCheck();\n }\n\n getEditValue(column: MbGridColumn<T>): unknown {\n return this.editingModel ? this.getValue(this.editingModel, column, this.editingRowIndex) : undefined;\n }\n\n canEditColumn(column: MbGridColumn<T>): boolean {\n return this.editable && column.editable !== false && column.type !== 'custom';\n }\n\n getEditorType(column: MbGridColumn<T>): string {\n if (column.editor) return column.editor;\n if (column.type === 'number') return 'number';\n if (column.type === 'date') return 'date';\n if (column.type === 'boolean') return 'checkbox';\n if (column.type === 'enum') return 'select';\n return 'text';\n }\n\n toggleDetail(row: T, rowIndex: number, event?: Event): void {\n event?.stopPropagation();\n const key = this.getRowKey(row);\n const expanded = !this.expandedDetailKeys.has(key);\n if (expanded) this.expandedDetailKeys.add(key);\n else this.expandedDetailKeys.delete(key);\n this.detailToggle.emit({ row, rowIndex, key, expanded });\n this.cdr.markForCheck();\n }\n\n isDetailExpanded(row: T): boolean {\n const key = this.getRowKey(row);\n return this.detailInitiallyExpanded || this.expandedDetailKeys.has(key);\n }\n\n getRowClass(row: T, rowIndex: number): string | string[] | Record<string, boolean> | null {\n if (!this.rowClassName) return null;\n return typeof this.rowClassName === 'function' ? this.rowClassName(row, rowIndex) as any : this.rowClassName as any;\n }\n\n trackColumn(_: number, column: MbGridColumn<T>): string {\n return String(column.field);\n }\n\n trackRow(_: number, row: MbGridRenderRow<T>): string | number {\n return row.kind === 'group' ? row.key : this.getRowKey(row.dataItem);\n }\n\n\n private toCssSize(value: number | string | undefined): string | null {\n if (value === undefined || value === null || value === '') return null;\n return typeof value === 'number' ? `${value}px` : value;\n }\n\n private getLockedOffset(column: MbGridColumn<T>, side: 'start' | 'end'): number {\n const columns = side === 'start' ? this.lockedStartColumns : this.lockedEndColumns;\n let offset = 0;\n for (const item of columns) {\n if (String(item.field) === String(column.field)) break;\n offset += this.resolveColumnWidth(item);\n }\n return offset;\n }\n\n private resolveColumnWidth(column: MbGridColumn<T>): number {\n if (typeof column.width === 'number') return column.width;\n if (typeof column.width === 'string' && column.width.endsWith('px')) {\n return Number.parseFloat(column.width);\n }\n if (typeof column.minWidth === 'number') return column.minWidth;\n return 120;\n }\n\n private syncMediaQueries(): void {\n if (!this.responsiveColumns || typeof window === 'undefined') return;\n\n const queries = new Set(\n this.internalColumns\n .map((column) => column.media)\n .filter((media): media is string => !!media),\n );\n\n for (const query of queries) {\n if (this.mediaQueryLists.has(query)) continue;\n const mediaQueryList = window.matchMedia(query);\n const listener = () => {\n this.cdr.markForCheck();\n };\n mediaQueryList.addEventListener('change', listener);\n this.mediaQueryLists.set(query, mediaQueryList);\n this.mediaListeners.set(query, listener);\n }\n }\n\n private setState(state: MbGridState<T>): void {\n this.state = { ...state, sort: state.sort ?? [], group: state.group ?? [] };\n this.stateChange.emit(this.state);\n this.persistState();\n this.reprocess();\n }\n\n private reprocess(): void {\n const safeState = this.state ?? mbGridDefaultState<T>();\n if (this.dataMode === 'server') {\n this.processed = {\n data: (this.data ?? []).map((dataItem, rowIndex) => ({ kind: 'data', dataItem, rowIndex: safeState.skip + rowIndex })),\n total: this.total,\n aggregates: {},\n };\n } else {\n this.processed = mbGridProcess(this.data ?? [], safeState, this.internalColumns, this.expandedGroupKeys);\n }\n this.cdr.markForCheck();\n }\n\n private applyFilters(): void {\n const columnFilter = mbGridBuildFilter<T>(this.filtersByField);\n if (this.globalSearch) {\n this.applyGlobalSearch(this.globalSearch);\n return;\n }\n this.setState({ ...this.state, filter: columnFilter, skip: 0 });\n this.filterChange.emit({ filter: columnFilter });\n }\n\n private defaultOperator(column: MbGridColumn<T>): MbGridFilterOperator {\n if (column.type === 'number' || column.type === 'date' || column.type === 'boolean') return 'eq';\n return 'contains';\n }\n\n private ensureFilterDefaults(): void {\n const next = { ...this.filtersByField };\n for (const column of this.internalColumns) {\n const field = String(column.field);\n next[field] ??= { operator: this.defaultOperator(column), value: '' };\n }\n this.filtersByField = next;\n }\n\n private applyProjectedTemplates(): void {\n for (const column of this.internalColumns) {\n const field = String(column.field);\n const cell = this.cellTemplates?.find((item) => item.field === field);\n const header = this.headerTemplates?.find((item) => item.field === field);\n const footer = this.footerTemplates?.find((item) => item.field === field);\n const edit = this.editTemplates?.find((item) => item.field === field);\n if (cell) column.cellTemplate = cell.templateRef;\n if (header) column.headerTemplate = header.templateRef;\n if (footer) column.footerTemplate = footer.templateRef;\n if (edit) column.editTemplate = edit.templateRef;\n }\n }\n\n private resizeColumn(event: MouseEvent): void {\n if (!this.resizing) return;\n const delta = this.effectiveDir === 'rtl' ? this.resizing.startX - event.clientX : event.clientX - this.resizing.startX;\n const width = Math.max(56, this.resizing.startWidth + delta);\n const column = this.internalColumns.find((item) => String(item.field) === this.resizing?.field);\n if (!column) return;\n column.width = width;\n this.columnResize.emit({ column, field: column.field, width });\n this.cdr.markForCheck();\n }\n\n\n private exportRows(): T[] {\n if (this.dataMode === 'server') return this.data ?? [];\n const safeState = { ...this.state, skip: 0, take: Number.MAX_SAFE_INTEGER };\n return mbGridProcess(this.data ?? [], safeState, this.internalColumns, this.expandedGroupKeys)\n .data\n .filter((row): row is Extract<MbGridRenderRow<T>, { kind: 'data' }> => row.kind === 'data')\n .map((row) => row.dataItem);\n }\n\n private validateEditingModel(): boolean {\n if (!this.editingModel) return true;\n const errors: Record<string, string> = {};\n for (const column of this.visibleColumns) {\n if (!this.canEditColumn(column)) continue;\n const value = this.getValue(this.editingModel, column, this.editingRowIndex);\n const field = String(column.field);\n if (column.required && (value === null || value === undefined || String(value).trim() === '')) {\n errors[field] = this.messages.fieldRequired(column.title);\n continue;\n }\n const custom = column.validator?.(value, this.editingModel, column);\n if (custom) errors[field] = custom;\n }\n this.validationErrors = errors;\n return Object.keys(errors).length === 0;\n }\n\n private cloneRow(row: T): T {\n if (typeof structuredClone === 'function') return structuredClone(row);\n return JSON.parse(JSON.stringify(row));\n }\n\n private setNestedValue(row: T, path: string, value: unknown): void {\n const parts = path.split('.');\n let cursor: any = row;\n for (let index = 0; index < parts.length - 1; index++) {\n const part = parts[index];\n cursor[part] ??= {};\n cursor = cursor[part];\n }\n cursor[parts[parts.length - 1]] = value;\n }\n\n private cancelEditInternal(mark = true): void {\n this.editingKey = null;\n this.editingModel = null;\n this.originalModel = null;\n this.editingRowIndex = -1;\n this.editingIsNew = false;\n this.validationErrors = {};\n if (mark) this.cdr.markForCheck();\n }\n\n private restorePersistedState(): void {\n if (!this.persistKey) return;\n const saved = this.stateStore.load<T>(this.persistKey);\n if (!saved) return;\n this.state = saved.state ?? this.state;\n this.selectedKeys = saved.selectedKeys ?? this.selectedKeys;\n for (const savedColumn of saved.columns ?? []) {\n const target = this.internalColumns.find((column) => String(column.field) === String(savedColumn.field));\n if (!target) continue;\n target.width = savedColumn.width ?? target.width;\n target.hidden = savedColumn.hidden ?? target.hidden;\n target.locked = savedColumn.locked ?? target.locked;\n target.sticky = savedColumn.sticky ?? target.sticky;\n }\n }\n\n private persistState(): void {\n if (!this.autoPersist || !this.persistKey) return;\n this.stateStore.save(this.persistKey, this.state, this.internalColumns, this.selectedKeys);\n }\n\n private dataRowsFromRendered(): T[] {\n return this.processed.data.filter((row): row is Extract<MbGridRenderRow<T>, { kind: 'data' }> => row.kind === 'data').map((row) => row.dataItem);\n }\n}\n","<div class=\"mb-grid\" [attr.dir]=\"effectiveDir\" [ngClass]=\"['mb-grid--' + density, loading ? 'mb-grid--loading' : '']\" [ngStyle]=\"gridStyle\">\n <div *ngIf=\"showToolbar\" class=\"mb-grid__toolbar\">\n <ng-container *ngIf=\"toolbarTemplate?.templateRef as toolbarTpl; else defaultToolbar\">\n <ng-container [ngTemplateOutlet]=\"toolbarTpl\" [ngTemplateOutletContext]=\"toolbarContext\"></ng-container>\n </ng-container>\n\n <ng-template #defaultToolbar>\n <div class=\"mb-grid__toolbar-start\">\n <div *ngIf=\"groupable\" class=\"mb-grid__group-panel\">\n <span class=\"mb-grid__group-label\">{{ messages.groupLabel }}</span>\n <button\n *ngFor=\"let group of state.group\"\n type=\"button\"\n class=\"mb-grid__group-chip\"\n (click)=\"removeGroup(group)\">\n {{ group.field }} ×\n </button>\n <span *ngIf=\"!state.group.length\" class=\"mb-grid__group-hint\">{{ messages.groupHint }}</span>\n </div>\n </div>\n\n <div class=\"mb-grid__toolbar-end\">\n <button *ngIf=\"editable && allowAdd\" type=\"button\" class=\"mb-grid__tool-button mb-grid__tool-button--primary\" (click)=\"createRow()\">{{ messages.addRow }}</button>\n <input\n *ngIf=\"showSearch\"\n class=\"mb-grid__search\"\n [ngModel]=\"globalSearch\"\n (ngModelChange)=\"applyGlobalSearch($event)\"\n [placeholder]=\"messages.searchPlaceholder\" />\n\n <div *ngIf=\"showColumnChooser\" class=\"mb-grid__chooser\">\n <button type=\"button\" class=\"mb-grid__tool-button\" (click)=\"openColumnMenuField = openColumnMenuField === '__chooser' ? '' : '__chooser'\">\n {{ messages.columns }}\n </button>\n <div *ngIf=\"openColumnMenuField === '__chooser'\" class=\"mb-grid__chooser-menu\" (click)=\"$event.stopPropagation()\">\n <label *ngFor=\"let column of internalColumns\" class=\"mb-grid__chooser-option\">\n <input type=\"checkbox\" [checked]=\"!column.hidden\" (change)=\"showColumn(column, $any($event.target).checked)\" />\n <span>{{ column.title }}</span>\n </label>\n <button type=\"button\" class=\"mb-grid__menu-action\" (click)=\"resetColumns()\">{{ messages.resetColumns }}</button>\n </div>\n </div>\n\n <button *ngIf=\"showExport\" type=\"button\" class=\"mb-grid__tool-button\" (click)=\"exportCsv()\">{{ messages.exportCsv }}</button>\n <button *ngIf=\"showExport && showExcelExport\" type=\"button\" class=\"mb-grid__tool-button\" (click)=\"exportExcel()\">{{ messages.exportExcel }}</button>\n <button *ngIf=\"showExport && showJsonExport\" type=\"button\" class=\"mb-grid__tool-button\" (click)=\"exportJson()\">{{ messages.exportJson }}</button>\n <button type=\"button\" class=\"mb-grid__tool-button\" (click)=\"resetState()\">{{ messages.reset }}</button>\n </div>\n </ng-template>\n </div>\n\n <div *ngIf=\"loading\" class=\"mb-grid__loading\" aria-live=\"polite\">\n <span class=\"mb-grid__spinner\"></span>\n <span>{{ loadingText || messages.loading }}</span>\n </div>\n\n <div class=\"mb-grid__scroll\">\n <table class=\"mb-grid__table\">\n <thead>\n <tr\n class=\"mb-grid__header-row\"\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n [cdkDropListDisabled]=\"!reorderable\"\n [cdkDropListData]=\"visibleColumns\"\n (cdkDropListDropped)=\"dropColumn($event)\">\n <th *ngIf=\"expandable\" class=\"mb-grid__select-cell mb-grid__header-cell\"></th>\n <th *ngIf=\"selectable\" class=\"mb-grid__select-cell mb-grid__header-cell\">\n <input\n type=\"checkbox\"\n [checked]=\"allVisibleRowsSelected\"\n [indeterminate]=\"someVisibleRowsSelected\"\n (change)=\"toggleAllVisible($event)\"\n [attr.aria-label]=\"messages.selectAllRows\" />\n </th>\n\n <th\n *ngFor=\"let column of visibleColumns; let columnIndex = index; trackBy: trackColumn\"\n cdkDrag\n class=\"mb-grid__header-cell\"\n [ngClass]=\"['mb-grid__cell--' + (column.headerAlign || column.align || 'start'), column.sortable === false ? '' : 'mb-grid__header-cell--sortable', getColumnClass(column)]\"\n [ngStyle]=\"getColumnStyle(column)\">\n <div class=\"mb-grid__header-content\" (click)=\"toggleSort(column, $event)\">\n <ng-container *ngIf=\"getHeaderTemplate(column) as headerTpl; else defaultHeader\">\n <ng-container [ngTemplateOutlet]=\"headerTpl\" [ngTemplateOutletContext]=\"{ $implicit: column, column: column }\"></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <span class=\"mb-grid__header-title\">{{ column.title }}</span>\n </ng-template>\n\n <span *ngIf=\"getSortDirection(column) as dir\" class=\"mb-grid__sort\">\n <span>{{ dir === 'asc' ? '↑' : '↓' }}</span>\n <small *ngIf=\"multiSort && getSortIndex(column) >= 0\">{{ getSortIndex(column) + 1 }}</small>\n </span>\n </div>\n\n <button\n *ngIf=\"hasColumnMenu && column.menu !== false\"\n type=\"button\"\n class=\"mb-grid__column-menu-button\"\n [attr.aria-label]=\"messages.columnMenu\"\n (click)=\"toggleColumnMenu(column, $event)\">⋮</button>\n\n <span\n *ngIf=\"resizable && column.resizable !== false\"\n class=\"mb-grid__resize-handle\"\n (mousedown)=\"startResize(column, $event)\"></span>\n\n <div *ngIf=\"openColumnMenuField === column.field.toString()\" class=\"mb-grid__column-menu\" (click)=\"$event.stopPropagation()\">\n <button type=\"button\" class=\"mb-grid__menu-action\" (click)=\"toggleSort(column)\">{{ messages.sort }}</button>\n <button *ngIf=\"groupable && column.groupable !== false\" type=\"button\" class=\"mb-grid__menu-action\" (click)=\"toggleGroup(column)\">\n {{ state.group.length && state.group[0].field === column.field ? messages.removeGroup : messages.groupByColumn }}\n </button>\n\n <div *ngIf=\"filterable && column.filterable !== false && (filterMode === 'menu' || filterMode === 'both')\" class=\"mb-grid__menu-filter\">\n <label>{{ messages.filter }}</label>\n <select [ngModel]=\"filtersByField[column.field.toString()].operator\" (ngModelChange)=\"setFilterOperator(column, $event)\">\n <option *ngFor=\"let operator of getOperators(column)\" [ngValue]=\"operator\">{{ getOperatorLabel(operator) }}</option>\n </select>\n <input\n [type]=\"column.type === 'number' ? 'number' : column.type === 'date' ? 'date' : 'text'\"\n [ngModel]=\"filtersByField[column.field.toString()].value\"\n (ngModelChange)=\"setFilterValue(column, $event)\"\n [placeholder]=\"messages.filterValuePlaceholder\" />\n <button type=\"button\" class=\"mb-grid__menu-action\" (click)=\"clearFilter(column)\">{{ messages.clearFilter }}</button>\n </div>\n\n <button type=\"button\" class=\"mb-grid__menu-action\" (click)=\"toggleLock(column)\">{{ column.locked ? messages.unlockColumn : messages.lockColumn }}</button>\n <button type=\"button\" class=\"mb-grid__menu-action\" (click)=\"hideColumn(column)\">{{ messages.hideColumn }}</button>\n </div>\n </th>\n\n <th *ngIf=\"showCommandColumn\" class=\"mb-grid__header-cell mb-grid__command-cell\">{{ effectiveCommandColumnTitle }}</th>\n </tr>\n\n <tr *ngIf=\"hasFilterRow\" class=\"mb-grid__filter-row\">\n <th *ngIf=\"expandable\" class=\"mb-grid__select-cell\"></th>\n <th *ngIf=\"selectable\" class=\"mb-grid__select-cell\"></th>\n <th *ngFor=\"let column of visibleColumns; trackBy: trackColumn\" class=\"mb-grid__filter-cell\" [ngClass]=\"getColumnClass(column)\" [ngStyle]=\"getColumnStyle(column)\">\n <div *ngIf=\"column.filterable !== false\" class=\"mb-grid__filter-control\">\n <select\n class=\"mb-grid__filter-operator\"\n [ngModel]=\"filtersByField[column.field.toString()].operator\"\n (ngModelChange)=\"setFilterOperator(column, $event)\">\n <option *ngFor=\"let operator of getOperators(column)\" [ngValue]=\"operator\">{{ getOperatorLabel(operator) }}</option>\n </select>\n <input\n class=\"mb-grid__filter-input\"\n [type]=\"column.type === 'number' ? 'number' : column.type === 'date' ? 'date' : 'text'\"\n [placeholder]=\"column.title\"\n [ngModel]=\"filtersByField[column.field.toString()].value\"\n (ngModelChange)=\"setFilterValue(column, $event)\" />\n </div>\n </th>\n <th *ngIf=\"showCommandColumn\" class=\"mb-grid__command-cell\"></th>\n </tr>\n </thead>\n\n <tbody>\n <tr *ngIf=\"!processed.data.length && !loading\" class=\"mb-grid__empty-row\">\n <td class=\"mb-grid__empty\" [attr.colspan]=\"columnSpan\">{{ noRecordsText || messages.noRecords }}</td>\n </tr>\n\n <tr *ngIf=\"isNewRowEditing() && editingModel\" class=\"mb-grid__row mb-grid__row--editing mb-grid__row--new\">\n <td *ngIf=\"expandable\" class=\"mb-grid__select-cell\"></td>\n <td *ngIf=\"selectable\" class=\"mb-grid__select-cell\"></td>\n <td *ngFor=\"let column of visibleColumns; trackBy: trackColumn\" class=\"mb-grid__cell\">\n <ng-container [ngTemplateOutlet]=\"editorTemplate\" [ngTemplateOutletContext]=\"{ column: column, row: editingModel, rowIndex: editingRowIndex }\"></ng-container>\n </td>\n <td *ngIf=\"showCommandColumn\" class=\"mb-grid__cell mb-grid__command-cell\">\n <button type=\"button\" class=\"mb-grid__command\" (click)=\"saveEdit($event)\">{{ messages.save }}</button>\n <button type=\"button\" class=\"mb-grid__command\" (click)=\"cancelEditRow($event)\">{{ messages.cancel }}</button>\n </td>\n </tr>\n\n <ng-container *ngFor=\"let row of processed.data; trackBy: trackRow\">\n <tr *ngIf=\"row.kind === 'group'\" class=\"mb-grid__group-row\" (click)=\"toggleGroupRow(row)\">\n <td class=\"mb-grid__group-cell\" [attr.colspan]=\"columnSpan\">\n <span class=\"mb-grid__group-toggle\">{{ row.expanded ? '▾' : '▸' }}</span>\n <span [style.padding-inline-start.px]=\"row.level * 18\"></span>\n <strong>{{ row.field }}:</strong>\n <span>{{ row.value }}</span>\n <small>({{ row.count }})</small>\n </td>\n </tr>\n\n <tr\n *ngIf=\"row.kind === 'data'\"\n class=\"mb-grid__row\"\n [class.mb-grid__row--selected]=\"isSelected(row.dataItem)\"\n [class.mb-grid__row--editing]=\"isEditing(row.dataItem)\"\n [ngClass]=\"getRowClass(row.dataItem, row.rowIndex)\"\n (click)=\"onRowClick(row.dataItem, row.rowIndex)\">\n <td *ngIf=\"expandable\" class=\"mb-grid__select-cell\" (click)=\"$event.stopPropagation()\">\n <button type=\"button\" class=\"mb-grid__expand-button\" (click)=\"toggleDetail(row.dataItem, row.rowIndex, $event)\">{{ isDetailExpanded(row.dataItem) ? '▾' : '▸' }}</button>\n </td>\n <td *ngIf=\"selectable\" class=\"mb-grid__select-cell\" (click)=\"$event.stopPropagation()\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(row.dataItem)\"\n (change)=\"toggleRow(row.dataItem, $event)\"\n [attr.aria-label]=\"messages.selectRow\" />\n </td>\n\n <td\n *ngFor=\"let column of visibleColumns; trackBy: trackColumn\"\n class=\"mb-grid__cell\"\n [ngClass]=\"['mb-grid__cell--' + (column.align || 'start'), getCellClass(row.dataItem, column, row.rowIndex), getColumnClass(column)]\"\n [ngStyle]=\"getColumnStyle(column)\"\n (click)=\"onCellClick(row.dataItem, column, row.rowIndex)\">\n <ng-container *ngIf=\"isEditing(row.dataItem) && canEditColumn(column); else readonlyCell\">\n <ng-container [ngTemplateOutlet]=\"editorTemplate\" [ngTemplateOutletContext]=\"{ column: column, row: editingModel, rowIndex: row.rowIndex }\"></ng-container>\n </ng-container>\n <ng-template #readonlyCell>\n <ng-container *ngIf=\"getCellTemplate(column) as cellTpl; else defaultCell\">\n <ng-container\n [ngTemplateOutlet]=\"cellTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row.dataItem, dataItem: row.dataItem, column: column, value: getValue(row.dataItem, column, row.rowIndex), rowIndex: row.rowIndex, editing: isEditing(row.dataItem) }\">\n </ng-container>\n </ng-container>\n <ng-template #defaultCell>{{ formatCell(row.dataItem, column, row.rowIndex) }}</ng-template>\n </ng-template>\n </td>\n\n <td *ngIf=\"showCommandColumn\" class=\"mb-grid__cell mb-grid__command-cell\" (click)=\"$event.stopPropagation()\">\n <ng-container *ngIf=\"isEditing(row.dataItem); else readonlyCommands\">\n <button type=\"button\" class=\"mb-grid__command\" (click)=\"saveEdit($event)\">{{ messages.save }}</button>\n <button type=\"button\" class=\"mb-grid__command\" (click)=\"cancelEditRow($event)\">{{ messages.cancel }}</button>\n </ng-container>\n <ng-template #readonlyCommands>\n <button *ngIf=\"editable\" type=\"button\" class=\"mb-grid__command\" (click)=\"startEdit(row.dataItem, row.rowIndex, $event)\">{{ messages.edit }}</button>\n <button *ngIf=\"allowDelete\" type=\"button\" class=\"mb-grid__command mb-grid__command--danger\" (click)=\"removeRow(row.dataItem, row.rowIndex, $event)\">{{ messages.delete }}</button>\n </ng-template>\n </td>\n </tr>\n\n <tr *ngIf=\"row.kind === 'data' && isDetailExpanded(row.dataItem) && detailTemplate?.templateRef as detailTpl\" class=\"mb-grid__detail-row\">\n <td [attr.colspan]=\"columnSpan\">\n <ng-container\n [ngTemplateOutlet]=\"detailTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row.dataItem, dataItem: row.dataItem, rowIndex: row.rowIndex, expanded: isDetailExpanded(row.dataItem) }\">\n </ng-container>\n </td>\n </tr>\n </ng-container>\n </tbody>\n\n <tfoot *ngIf=\"showFooter\">\n <tr class=\"mb-grid__footer-row\">\n <td *ngIf=\"expandable\" class=\"mb-grid__select-cell\"></td>\n <td *ngIf=\"selectable\" class=\"mb-grid__select-cell\"></td>\n <td *ngFor=\"let column of visibleColumns; trackBy: trackColumn\" class=\"mb-grid__footer-cell\">\n <ng-container *ngIf=\"getFooterTemplate(column) as footerTpl; else defaultFooter\">\n <ng-container [ngTemplateOutlet]=\"footerTpl\" [ngTemplateOutletContext]=\"{ $implicit: column, column: column, aggregates: processed.aggregates }\"></ng-container>\n </ng-container>\n <ng-template #defaultFooter>\n <span *ngIf=\"processed.aggregates[column.field.toString()] as aggs\">\n <ng-container *ngFor=\"let key of aggs | keyvalue\">{{ key.key }}: {{ key.value | number }} </ng-container>\n </span>\n </ng-template>\n </td>\n <td *ngIf=\"showCommandColumn\" class=\"mb-grid__command-cell\"></td>\n </tr>\n </tfoot>\n </table>\n </div>\n\n\n <ng-template #editorTemplate let-column=\"column\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n <ng-container *ngIf=\"column.editTemplate as editTpl; else defaultEditor\">\n <ng-container\n [ngTemplateOutlet]=\"editTpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, dataItem: row, column: column, value: getEditValue(column), rowIndex: rowIndex, setValue: setEditValue.bind(this, column), errors: validationErrors }\">\n </ng-container>\n </ng-container>\n <ng-template #defaultEditor>\n <select\n *ngIf=\"getEditorType(column) === 'select'; else nonSelectEditor\"\n class=\"mb-grid__editor\"\n [ngModel]=\"getEditValue(column)\"\n (ngModelChange)=\"setEditValue(column, $event)\">\n <option *ngFor=\"let option of column.editorOptions || []\" [ngValue]=\"option.value\">{{ option.label }}</option>\n </select>\n <ng-template #nonSelectEditor>\n <input\n *ngIf=\"getEditorType(column) !== 'checkbox'; else checkboxEditor\"\n class=\"mb-grid__editor\"\n [type]=\"getEditorType(column) === 'number' ? 'number' : getEditorType(column) === 'date' ? 'date' : 'text'\"\n [ngModel]=\"getEditValue(column)\"\n (ngModelChange)=\"setEditValue(column, $event)\" />\n <ng-template #checkboxEditor>\n <input type=\"checkbox\" [ngModel]=\"getEditValue(column)\" (ngModelChange)=\"setEditValue(column, $event)\" />\n </ng-template>\n </ng-template>\n <small *ngIf=\"validationErrors[column.field.toString()]\" class=\"mb-grid__error\">{{ validationErrors[column.field.toString()] }}</small>\n </ng-template>\n </ng-template>\n\n <div *ngIf=\"pageable\" class=\"mb-grid__pager\">\n <div class=\"mb-grid__pager-info\">{{ pagerInfoText() }}</div>\n <div class=\"mb-grid__pager-actions\">\n <select class=\"mb-grid__page-size\" [ngModel]=\"pageSize\" (ngModelChange)=\"changePageSize($event)\">\n <option *ngFor=\"let option of pageSizeOptions\" [ngValue]=\"option\">{{ option }}</option>\n </select>\n <button type=\"button\" class=\"mb-grid__pager-button\" [disabled]=\"pageIndex === 0\" (click)=\"changePage(0)\">{{ messages.pagerFirst }}</button>\n <button type=\"button\" class=\"mb-grid__pager-button\" [disabled]=\"pageIndex === 0\" (click)=\"changePage(pageIndex - 1)\">{{ messages.pagerPrevious }}</button>\n <span class=\"mb-grid__page-current\">{{ pageIndex + 1 }} / {{ pageCount }}</span>\n <button type=\"button\" class=\"mb-grid__pager-button\" [disabled]=\"pageIndex >= pageCount - 1\" (click)=\"changePage(pageIndex + 1)\">{{ messages.pagerNext }}</button>\n <button type=\"button\" class=\"mb-grid__pager-button\" [disabled]=\"pageIndex >= pageCount - 1\" (click)=\"changePage(pageCount - 1)\">{{ messages.pagerLast }}</button>\n </div>\n </div>\n</div>\n","import {\r\n MbGridCompositeFilterDescriptor,\r\n MbGridFilterDescriptor,\r\n MbGridGroupDescriptor,\r\n MbGridSortDescriptor,\r\n MbGridState,\r\n} from './mb-grid.types';\r\nimport { mbGridDefaultState } from './mb-grid-data';\r\n\r\n/**\r\n * Structural compatibility with common grid state objects.\n */\r\nexport interface MbLegacyGridState<T = unknown> {\r\n skip?: number;\r\n take?: number;\r\n sort?: Array<{ field: keyof T | string; dir?: 'asc' | 'desc' }>;\r\n filter?: MbGridCompositeFilterDescriptor<T>;\r\n group?: Array<{ field: keyof T | string; dir?: 'asc' | 'desc'; aggregates?: unknown[] }>;\r\n}\r\n\r\nexport function mbGridStateFromLegacy<T>(state?: MbLegacyGridState<T> | null, defaultTake = 10): MbGridState<T> {\r\n if (!state) return mbGridDefaultState<T>(defaultTake);\r\n return {\r\n skip: state.skip ?? 0,\r\n take: state.take ?? defaultTake,\r\n sort: (state.sort ?? []).filter((item) => item.dir).map((item) => ({\r\n field: item.field,\r\n dir: item.dir as 'asc' | 'desc',\r\n })),\r\n filter: state.filter,\r\n group: (state.group ?? []).map((item) => ({\r\n field: item.field,\r\n dir: item.dir,\r\n })) as MbGridGroupDescriptor<T>[],\r\n };\r\n}\r\n\r\nexport function mbGridStateToLegacy<T>(state: MbGridState<T>): MbLegacyGridState<T> {\r\n return {\r\n skip: state.skip,\r\n take: state.take,\r\n sort: state.sort as MbGridSortDescriptor<T>[],\r\n filter: state.filter,\r\n group: state.group,\r\n };\r\n}\r\n\r\nfunction normalizeSortField(field: string): string {\r\n const parts = field.split('.');\r\n if (parts.length > 1) {\r\n return `${parts[parts.length - 2]}.${parts[parts.length - 1]}`;\r\n }\r\n return field;\r\n}\r\n\r\nfunction appendFilterQuery(\r\n query: string[],\r\n filter: MbGridCompositeFilterDescriptor<unknown> | undefined,\r\n startIndex = 1,\r\n): number {\r\n if (!filter?.filters?.length) return startIndex;\r\n\r\n let count = startIndex;\r\n for (const item of filter.filters) {\r\n if ('logic' in item && item.filters) {\r\n let addLogic = false;\r\n for (const innerItem of item.filters) {\r\n const descriptor = innerItem as MbGridFilterDescriptor;\r\n let chunk =\r\n `filter[filters][${count}][field]=${encodeURIComponent(String(descriptor.field))}` +\r\n `&filter[filters][${count}][value]=${encodeURIComponent(String(descriptor.value ?? ''))}` +\r\n `&filter[filters][${count}][operator]=${encodeURIComponent(String(descriptor.operator))}`;\r\n if (item.logic && item.filters.length > 1 && !addLogic) {\r\n chunk += `&filter[filters][${count}][logic]=${encodeURIComponent(item.logic)}`;\r\n addLogic = true;\r\n }\r\n query.push(chunk);\r\n count += 1;\r\n }\r\n continue;\r\n }\r\n\r\n const descriptor = item as MbGridFilterDescriptor;\r\n query.push(\r\n `filter[filters][${count}][field]=${encodeURIComponent(String(descriptor.field))}` +\r\n `&filter[filters][${count}][value]=${encodeURIComponent(String(descriptor.value ?? ''))}` +\r\n `&filter[filters][${count}][operator]=${encodeURIComponent(String(descriptor.operator))}`,\r\n );\r\n count += 1;\r\n }\r\n\r\n return count;\r\n}\r\n\r\n/**\r\n * Builds a nested query string for APIs that expect indexed sort, filter, and group parameters.\n */\nexport function mbGridStateToNestedQuery<T>(state: MbGridState<T>): string {\n const parts: string[] = [];\r\n\r\n if (state.skip) {\r\n parts.push(`skip=${state.skip}`);\r\n }\r\n if (state.take) {\r\n parts.push(`take=${state.take}`);\r\n }\r\n\r\n if (state.sort?.length) {\r\n let count = 1;\r\n for (const item of state.sort) {\r\n const field = normalizeSortField(String(item.field));\r\n parts.push(`sort[${count}][field]=${encodeURIComponent(field)}`);\r\n parts.push(`sort[${count}][dir]=${encodeURIComponent(item.dir)}`);\r\n count += 1;\r\n }\r\n }\r\n\r\n appendFilterQuery(parts, state.filter as MbGridCompositeFilterDescriptor<unknown> | undefined);\r\n\r\n if (state.group?.length) {\r\n let count = 1;\r\n for (const item of state.group) {\r\n parts.push(`group[${count}][field]=${encodeURIComponent(String(item.field))}`);\r\n if (item.dir) {\r\n parts.push(`group[${count}][dir]=${encodeURIComponent(item.dir)}`);\r\n }\r\n count += 1;\r\n }\r\n }\r\n\r\n return parts.join('&');\r\n}\r\n","import { InjectionToken } from '@angular/core';\n\nexport interface MbDialogConfig<TData = unknown> {\n data?: TData;\n width?: string;\n maxWidth?: string;\n minWidth?: string;\n panelClass?: string | string[];\n backdropClass?: string | string[];\n closeOnBackdropClick?: boolean;\n closeOnEscape?: boolean;\n ariaLabel?: string;\n}\n\nexport const MB_DIALOG_DATA = new InjectionToken<unknown>('MB_DIALOG_DATA');\n","import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\n\nexport class MbDialogRef<TResult = unknown> {\n private readonly closedSubject = new Subject<TResult | undefined>();\n\n readonly afterClosed$: Observable<TResult | undefined> = this.closedSubject.asObservable();\n\n constructor(private readonly overlayRef: OverlayRef) {}\n\n close(result?: TResult): void {\n if (!this.overlayRef.hasAttached()) return;\n this.overlayRef.dispose();\n this.closedSubject.next(result);\n this.closedSubject.complete();\n }\n}\n","import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewChild } from '@angular/core';\nimport { CdkPortalOutlet, ComponentPortal, PortalModule } from '@angular/cdk/portal';\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { ComponentRef } from '@angular/core';\n\n@Component({\n selector: 'mb-dialog-container',\n standalone: true,\n imports: [PortalModule, CdkTrapFocus],\n templateUrl: './mb-dialog-container.component.html',\n styleUrl: './mb-dialog-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbDialogContainerComponent {\n @Input() ariaLabel = 'Dialog';\n @Input() width = '560px';\n @Input() maxWidth = 'calc(100vw - 2rem)';\n @Input() minWidth = '280px';\n\n @ViewChild(CdkPortalOutlet, { static: true }) private portalOutlet!: CdkPortalOutlet;\n\n @HostBinding('class') hostClass = 'mb-dialog-host';\n\n attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T> {\n return this.portalOutlet.attachComponentPortal(portal);\n }\n}\n","<section\n class=\"mb-dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-label]=\"ariaLabel\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [style.width]=\"width\"\n [style.max-width]=\"maxWidth\"\n [style.min-width]=\"minWidth\">\n <ng-template cdkPortalOutlet></ng-template>\n</section>\n","import { Injectable, Injector, Type } from '@angular/core';\nimport { Overlay, OverlayConfig } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { filter, take } from 'rxjs/operators';\nimport { MB_DIALOG_DATA, MbDialogConfig } from './mb-dialog.tokens';\nimport { MbDialogContainerComponent } from './mb-dialog-container.component';\nimport { MbDialogRef } from './mb-dialog-ref';\n\n@Injectable({ providedIn: 'root' })\nexport class MbDialogService {\n constructor(\n private readonly overlay: Overlay,\n private readonly injector: Injector,\n ) {}\n\n open<TComponent, TData = unknown, TResult = unknown>(\n component: Type<TComponent>,\n config: MbDialogConfig<TData> = {},\n ): MbDialogRef<TResult> {\n const overlayRef = this.overlay.create(this.createOverlayConfig(config));\n const dialogRef = new MbDialogRef<TResult>(overlayRef);\n\n const containerPortal = new ComponentPortal(MbDialogContainerComponent, null, this.injector);\n const containerRef = overlayRef.attach(containerPortal);\n containerRef.instance.ariaLabel = config.ariaLabel ?? 'Dialog';\n containerRef.instance.width = config.width ?? '560px';\n containerRef.instance.maxWidth = config.maxWidth ?? 'calc(100vw - 2rem)';\n containerRef.instance.minWidth = config.minWidth ?? '280px';\n\n const contentInjector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: MbDialogRef, useValue: dialogRef },\n { provide: MB_DIALOG_DATA, useValue: config.data },\n ],\n });\n\n containerRef.instance.attachComponentPortal(new ComponentPortal(component, null, contentInjector));\n\n if (config.closeOnBackdropClick !== false) {\n overlayRef.backdropClick().pipe(take(1)).subscribe(() => dialogRef.close());\n }\n\n if (config.closeOnEscape !== false) {\n overlayRef\n .keydownEvents()\n .pipe(filter((event) => event.key === 'Escape'), take(1))\n .subscribe(() => dialogRef.close());\n }\n\n return dialogRef;\n }\n\n private createOverlayConfig<TData>(config: MbDialogConfig<TData>): OverlayConfig {\n return new OverlayConfig({\n hasBackdrop: true,\n backdropClass: config.backdropClass ?? 'mb-overlay-backdrop',\n panelClass: ['mb-dialog-panel', ...(Array.isArray(config.panelClass) ? config.panelClass : config.panelClass ? [config.panelClass] : [])],\n scrollStrategy: this.overlay.scrollStrategies.block(),\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n });\n }\n}\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n Output,\r\n} from '@angular/core';\r\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\r\nimport { NgIf } from '@angular/common';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\n\r\n@Component({\r\n selector: 'mb-dialog',\r\n standalone: true,\r\n imports: [NgIf, A11yModule],\r\n templateUrl: './mb-dialog.component.html',\r\n styleUrl: './mb-dialog.component.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class MbDialogComponent {\r\n private readonly messages = inject(MB_UI_MESSAGES);\r\n\r\n @Input() open = false;\r\n @Input() title = '';\r\n @Input() width: string | number = '560px';\r\n @Input() height?: string | number;\r\n @Input() minWidth: string | number = '280px';\r\n @Input() maxWidth: string | number = 'calc(100vw - 2rem)';\r\n @Input() closable = true;\r\n @Input() closeOnBackdrop = true;\r\n @Input() closeOnEscape = true;\r\n @Input() ariaLabel?: string;\r\n\r\n get effectiveAriaLabel(): string {\r\n return this.ariaLabel ?? this.messages.dialog.ariaLabel;\r\n }\r\n\r\n get closeAriaLabel(): string {\r\n return this.messages.dialog.close;\r\n }\r\n\r\n @Output() close = new EventEmitter<void>();\r\n\r\n @HostListener('document:keydown.escape')\r\n onEscape(): void {\r\n if (this.open && this.closeOnEscape) {\r\n this.requestClose();\r\n }\r\n }\r\n\r\n get panelWidth(): string {\r\n return typeof this.width === 'number' ? `${this.width}px` : this.width;\r\n }\r\n\r\n get panelHeight(): string | null {\r\n if (this.height === undefined || this.height === null) return null;\r\n return typeof this.height === 'number' ? `${this.height}px` : this.height;\r\n }\r\n\r\n get panelMinWidth(): string {\r\n return typeof this.minWidth === 'number' ? `${this.minWidth}px` : this.minWidth;\r\n }\r\n\r\n get panelMaxWidth(): string {\r\n return typeof this.maxWidth === 'number' ? `${this.maxWidth}px` : this.maxWidth;\r\n }\r\n\r\n requestClose(): void {\r\n if (!this.closable) return;\r\n this.close.emit();\r\n }\r\n\r\n onBackdropClick(): void {\r\n if (this.closeOnBackdrop) {\r\n this.requestClose();\r\n }\r\n }\r\n}\r\n","<div *ngIf=\"open\" class=\"mb-dialog-backdrop\" (click)=\"onBackdropClick()\">\r\n <section\r\n class=\"mb-dialog-panel\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n [attr.aria-label]=\"effectiveAriaLabel\"\r\n cdkTrapFocus\r\n [cdkTrapFocusAutoCapture]=\"true\"\r\n [style.width]=\"panelWidth\"\r\n [style.height]=\"panelHeight\"\r\n [style.min-width]=\"panelMinWidth\"\r\n [style.max-width]=\"panelMaxWidth\"\r\n (click)=\"$event.stopPropagation()\">\r\n <header *ngIf=\"title || closable\" class=\"mb-dialog-panel__titlebar\">\r\n <ng-content select=\"[mbDialogTitlebar],mb-dialog-titlebar\"></ng-content>\r\n <h2 *ngIf=\"title\" class=\"mb-dialog-panel__title\">{{ title }}</h2>\r\n <button\r\n *ngIf=\"closable\"\r\n type=\"button\"\r\n class=\"mb-dialog-panel__close\"\r\n [attr.aria-label]=\"closeAriaLabel\"\r\n (click)=\"requestClose()\">×</button>\r\n </header>\r\n\r\n <div class=\"mb-dialog-panel__content\">\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <footer class=\"mb-dialog-panel__actions\">\r\n <ng-content select=\"[mbDialogActions],mb-dialog-actions\"></ng-content>\r\n </footer>\r\n </section>\r\n</div>\r\n","/** Lightweight Jalali (Persian) calendar conversion utilities. */\r\n\r\nexport interface MbJalaliDate {\r\n year: number;\r\n month: number;\r\n day: number;\r\n}\r\n\r\nexport interface MbGregorianDate {\r\n year: number;\r\n month: number;\r\n day: number;\r\n}\r\n\r\nexport const MB_JALALI_MONTH_NAMES = [\r\n 'فروردین',\r\n 'اردیبهشت',\r\n 'خرداد',\r\n 'تیر',\r\n 'مرداد',\r\n 'شهریور',\r\n 'مهر',\r\n 'آبان',\r\n 'آذر',\r\n 'دی',\r\n 'بهمن',\r\n 'اسفند',\r\n];\r\n\r\nfunction div(a: number, b: number): number {\r\n return ~~(a / b);\r\n}\r\n\r\nfunction mod(a: number, b: number): number {\r\n return a - ~~(a / b) * b;\r\n}\r\n\r\nfunction jalCal(jy: number): [number, number, number] {\r\n const breaks = [\r\n -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178,\r\n ];\r\n let bl = breaks.length;\r\n let gy = jy + 621;\r\n let leapJ = -14;\r\n let jp = breaks[0];\r\n let jm = 0;\r\n let jump = 0;\r\n\r\n if (jy < jp || jy >= breaks[bl - 1]) {\r\n throw new Error(`Invalid Jalali year ${jy}`);\r\n }\r\n\r\n for (let i = 1; i < bl; i += 1) {\r\n jm = breaks[i];\r\n jump = jm - jp;\r\n if (jy < jm) break;\r\n leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33) + 3, 4);\r\n jp = jm;\r\n }\r\n\r\n const n = jy - jp;\r\n leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4);\r\n if (mod(jump, 33) === 4 && jump - n === 4) leapJ += 1;\r\n\r\n const leapG = div(gy, 4) - div((div(gy, 100) + 1) * 3, 4) - 150;\r\n const march = 20 + leapJ - leapG;\r\n return jy < 100 ? [jump, march, 0] : [jump, march, div(jump, 33) * 8 + div(mod(jump, 33) + 3, 4)];\r\n}\r\n\r\nfunction j2d(jy: number, jm: number, jd: number): number {\r\n const [r, march] = jalCal(jy);\r\n return g2d(jy + 621, 3, march) + (jm - 1) * 31 - div(jm, 7) * (jm - 7) + jd - 1;\r\n}\r\n\r\nfunction d2j(jdn: number): MbJalaliDate {\r\n const gy = d2g(jdn).year;\r\n let jy = gy - 621;\r\n const [_, march, leap] = jalCal(jy);\r\n let jdn1f = g2d(gy, 3, march);\r\n let k = jdn - jdn1f;\r\n if (k >= 0) {\r\n if (k <= 185) {\r\n return { year: jy, month: 1 + div(k, 31), day: mod(k, 31) + 1 };\r\n }\r\n k -= 186;\r\n } else {\r\n jy -= 1;\r\n k += 179;\r\n if (leap === 1) k += 1;\r\n }\r\n return { year: jy, month: 7 + div(k, 30), day: mod(k, 30) + 1 };\r\n}\r\n\r\nfunction g2d(gy: number, gm: number, gd: number): number {\r\n let d =\r\n div((gy + div(gm - 8, 6) + 100100) * 1461, 4) +\r\n div(153 * mod(gm + 9, 12) + 2, 5) +\r\n gd -\r\n 34840408;\r\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\r\n return d;\r\n}\r\n\r\nfunction d2g(jdn: number): MbGregorianDate {\r\n let j = 4 * jdn + 139361631 + div(div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908;\r\n const i = div(mod(j, 1461), 4) * 5 + 308;\r\n const gd = div(mod(i, 153), 5) + 1;\r\n const gm = mod(div(i, 153), 12) + 1;\r\n const gy = div(j, 1461) - 100100 + div(8 - gm, 6);\r\n return { year: gy, month: gm, day: gd };\r\n}\r\n\r\nexport function mbGregorianToJalali(date: MbGregorianDate): MbJalaliDate {\r\n return d2j(g2d(date.year, date.month, date.day));\r\n}\r\n\r\nexport function mbJalaliToGregorian(date: MbJalaliDate): MbGregorianDate {\r\n const jdn = j2d(date.year, date.month, date.day);\r\n return d2g(jdn);\r\n}\r\n\r\nexport function mbParseIsoDate(value: string): MbGregorianDate | null {\r\n if (!value) return null;\r\n const parts = value.split('-').map(Number);\r\n if (parts.length < 3 || parts.some(Number.isNaN)) return null;\r\n return { year: parts[0], month: parts[1], day: parts[2] };\r\n}\r\n\r\nexport function mbToIsoDate(date: MbGregorianDate): string {\r\n return `${date.year}-${String(date.month).padStart(2, '0')}-${String(date.day).padStart(2, '0')}`;\r\n}\r\n\r\nexport function mbJalaliMonthLength(year: number, month: number): number {\r\n if (month <= 6) return 31;\r\n if (month <= 11) return 30;\r\n const [, , leap] = jalCal(year);\r\n return leap + 29;\r\n}\r\n\r\nexport function mbFormatJalali(date: MbJalaliDate, separator = '/'): string {\r\n return `${date.year}${separator}${String(date.month).padStart(2, '0')}${separator}${String(date.day).padStart(2, '0')}`;\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { MbToast, MbToastVariant } from './mb-toast.types';\n\n@Injectable({ providedIn: 'root' })\nexport class MbToastService {\n private readonly toastsSubject = new BehaviorSubject<MbToast[]>([]);\n readonly toasts$ = this.toastsSubject.asObservable();\n\n show(message: string, options: Partial<Omit<MbToast, 'id' | 'message'>> = {}): string {\n const id = globalThis.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random()}`;\n const toast: MbToast = {\n id,\n message,\n title: options.title,\n variant: options.variant ?? 'info',\n duration: options.duration ?? 4000,\n };\n\n this.toastsSubject.next([...this.toastsSubject.value, toast]);\n\n if (toast.duration > 0) {\n globalThis.setTimeout(() => this.dismiss(id), toast.duration);\n }\n\n return id;\n }\n\n success(message: string, title?: string): string {\n return this.show(message, { title, variant: 'success' });\n }\n\n info(message: string, title?: string): string {\n return this.show(message, { title, variant: 'info' });\n }\n\n warning(message: string, title?: string): string {\n return this.show(message, { title, variant: 'warning' });\n }\n\n danger(message: string, title?: string): string {\n return this.show(message, { title, variant: 'danger' });\n }\n\n dismiss(id: string): void {\n this.toastsSubject.next(this.toastsSubject.value.filter((toast) => toast.id !== id));\n }\n\n clear(): void {\n this.toastsSubject.next([]);\n }\n}\n","import { AsyncPipe, NgClass, NgFor, NgIf } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\nimport { MbToastService } from './mb-toast.service';\n\n@Component({\n selector: 'mb-toast-container',\n standalone: true,\n imports: [AsyncPipe, NgFor, NgIf, NgClass],\n templateUrl: './mb-toast-container.component.html',\n styleUrl: './mb-toast-container.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbToastContainerComponent {\n readonly messages = inject(MB_UI_MESSAGES);\n readonly toasts$;\n\n constructor(readonly toastService: MbToastService) {\n this.toasts$ = this.toastService.toasts$;\n }\n}\n","<div class=\"mb-toast-container\" aria-live=\"polite\" aria-atomic=\"true\">\n <article\n *ngFor=\"let toast of toasts$ | async\"\n class=\"mb-toast\"\n [ngClass]=\"'mb-toast--' + toast.variant\">\n <div class=\"mb-toast__content\">\n <strong *ngIf=\"toast.title\" class=\"mb-toast__title\">{{ toast.title }}</strong>\n <p class=\"mb-toast__message\">{{ toast.message }}</p>\n </div>\n <button type=\"button\" class=\"mb-toast__close\" [attr.aria-label]=\"messages.common.close\" (click)=\"toastService.dismiss(toast.id)\">×</button>\n </article>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';\nimport { NgClass, NgIf } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MbSize } from '../tokens/mb-ui-config.token';\n\n@Component({\n selector: 'mb-checkbox',\n standalone: true,\n imports: [NgClass, NgIf],\n templateUrl: './mb-checkbox.component.html',\n styleUrl: './mb-checkbox.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MbCheckboxComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbCheckboxComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() hint = '';\n @Input() size: MbSize = 'md';\n @Input() indeterminate = false;\n @Input() disabled = false;\n @Input() name?: string;\n @Output() checkedChange = new EventEmitter<boolean>();\n\n @HostBinding('class') hostClass = 'mb-checkbox-host';\n\n checked = false;\n\n private onChange: (value: boolean) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n writeValue(value: boolean | null): void {\n this.checked = !!value;\n }\n\n registerOnChange(fn: (value: boolean) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n blur(): void { this.onTouched(); }\n\n toggle(): void {\n if (this.disabled) return;\n this.checked = !this.checked;\n this.indeterminate = false;\n this.onChange(this.checked);\n this.checkedChange.emit(this.checked);\n this.onTouched();\n }\n}\n","<label class=\"mb-checkbox\" [class.mb-checkbox--disabled]=\"disabled\" [ngClass]=\"'mb-checkbox--' + size\">\n <input\n class=\"mb-checkbox__native\"\n type=\"checkbox\"\n [name]=\"name\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [attr.aria-checked]=\"indeterminate ? 'mixed' : checked\"\n (change)=\"toggle()\"\n (blur)=\"blur()\"\n />\n <span class=\"mb-checkbox__box\" [class.mb-checkbox__box--indeterminate]=\"indeterminate\">\n <span *ngIf=\"checked && !indeterminate\" class=\"mb-checkbox__mark\">✓</span>\n <span *ngIf=\"indeterminate\" class=\"mb-checkbox__dash\"></span>\n </span>\n <span class=\"mb-checkbox__content\" *ngIf=\"label || hint\">\n <span class=\"mb-checkbox__label\" *ngIf=\"label\">{{ label }}</span>\n <span class=\"mb-checkbox__hint\" *ngIf=\"hint\">{{ hint }}</span>\n </span>\n</label>\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';\nimport { NgClass, NgIf } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MbSize } from '../tokens/mb-ui-config.token';\n\n@Component({\n selector: 'mb-switch',\n standalone: true,\n imports: [NgClass, NgIf],\n templateUrl: './mb-switch.component.html',\n styleUrl: './mb-switch.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MbSwitchComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbSwitchComponent implements ControlValueAccessor {\n @Input() label = '';\n @Input() hint = '';\n @Input() size: MbSize = 'md';\n @Input() disabled = false;\n @Output() checkedChange = new EventEmitter<boolean>();\n\n @HostBinding('class') hostClass = 'mb-switch-host';\n\n checked = false;\n private onChange: (value: boolean) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n writeValue(value: boolean | null): void { this.checked = !!value; }\n registerOnChange(fn: (value: boolean) => void): void { this.onChange = fn; }\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n\n toggle(): void {\n if (this.disabled) return;\n this.checked = !this.checked;\n this.onChange(this.checked);\n this.checkedChange.emit(this.checked);\n this.onTouched();\n }\n}\n","<button\n type=\"button\"\n class=\"mb-switch\"\n [class.mb-switch--checked]=\"checked\"\n [class.mb-switch--disabled]=\"disabled\"\n [ngClass]=\"'mb-switch--' + size\"\n [disabled]=\"disabled\"\n role=\"switch\"\n [attr.aria-checked]=\"checked\"\n (click)=\"toggle()\">\n <span class=\"mb-switch__track\"><span class=\"mb-switch__thumb\"></span></span>\n <span class=\"mb-switch__content\" *ngIf=\"label || hint\">\n <span class=\"mb-switch__label\" *ngIf=\"label\">{{ label }}</span>\n <span class=\"mb-switch__hint\" *ngIf=\"hint\">{{ hint }}</span>\n </span>\n</button>\n","import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MbSize } from '../tokens/mb-ui-config.token';\n\nexport interface MbRadioOption<T = unknown> {\n label: string;\n value: T;\n hint?: string;\n disabled?: boolean;\n}\n\n@Component({\n selector: 'mb-radio-group',\n standalone: true,\n imports: [NgFor, NgIf, NgClass],\n templateUrl: './mb-radio-group.component.html',\n styleUrl: './mb-radio-group.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MbRadioGroupComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbRadioGroupComponent<T = unknown> implements ControlValueAccessor {\n @Input() options: MbRadioOption<T>[] = [];\n @Input() name = `mb-radio-${Math.random().toString(36).slice(2)}`;\n @Input() size: MbSize = 'md';\n @Input() direction: 'horizontal' | 'vertical' = 'vertical';\n @Input() disabled = false;\n @Output() valueChange = new EventEmitter<T>();\n\n @HostBinding('class') hostClass = 'mb-radio-group-host';\n\n value: T | null = null;\n private onChange: (value: T | null) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n writeValue(value: T | null): void { this.value = value; }\n registerOnChange(fn: (value: T | null) => void): void { this.onChange = fn; }\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n\n choose(option: MbRadioOption<T>): void {\n if (this.disabled || option.disabled) return;\n this.value = option.value;\n this.onChange(option.value);\n this.valueChange.emit(option.value);\n this.onTouched();\n }\n\n trackByValue(index: number): number { return index; }\n}\n","<div class=\"mb-radio-group\" [class.mb-radio-group--horizontal]=\"direction === 'horizontal'\" [ngClass]=\"'mb-radio-group--' + size\" role=\"radiogroup\">\n <label\n *ngFor=\"let option of options; trackBy: trackByValue\"\n class=\"mb-radio\"\n [class.mb-radio--checked]=\"value === option.value\"\n [class.mb-radio--disabled]=\"disabled || option.disabled\">\n <input\n class=\"mb-radio__native\"\n type=\"radio\"\n [name]=\"name\"\n [checked]=\"value === option.value\"\n [disabled]=\"disabled || option.disabled\"\n (change)=\"choose(option)\" />\n <span class=\"mb-radio__circle\"><span class=\"mb-radio__dot\"></span></span>\n <span class=\"mb-radio__content\">\n <span class=\"mb-radio__label\">{{ option.label }}</span>\n <span class=\"mb-radio__hint\" *ngIf=\"option.hint\">{{ option.hint }}</span>\n </span>\n </label>\n</div>\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, HostBinding, Input, Output, ViewChild } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MbSize } from '../tokens/mb-ui-config.token';\n\n@Component({\n selector: 'mb-textarea',\n standalone: true,\n imports: [NgClass],\n templateUrl: './mb-textarea.component.html',\n styleUrl: './mb-textarea.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MbTextareaComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbTextareaComponent implements ControlValueAccessor {\n @Input() placeholder = '';\n @Input() rows = 4;\n @Input() size: MbSize = 'md';\n @Input() disabled = false;\n @Input() readonly = false;\n @Input() invalid = false;\n @Input() autoResize = false;\n @Input() maxLength?: number;\n @Output() valueChange = new EventEmitter<string>();\n @ViewChild('textarea') textarea?: ElementRef<HTMLTextAreaElement>;\n\n @HostBinding('class') hostClass = 'mb-textarea-host';\n value = '';\n\n private onChange: (value: string) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n writeValue(value: string | null): void { this.value = value ?? ''; }\n registerOnChange(fn: (value: string) => void): void { this.onChange = fn; }\n registerOnTouched(fn: () => void): void { this.onTouched = fn; }\n setDisabledState(isDisabled: boolean): void { this.disabled = isDisabled; }\n\n onInput(event: Event): void {\n const next = (event.target as HTMLTextAreaElement).value;\n this.value = next;\n this.onChange(next);\n this.valueChange.emit(next);\n if (this.autoResize) this.resize();\n }\n\n blur(): void { this.onTouched(); }\n\n private resize(): void {\n const el = this.textarea?.nativeElement;\n if (!el) return;\n el.style.height = 'auto';\n el.style.height = `${el.scrollHeight}px`;\n }\n}\n","<textarea\n #textarea\n class=\"mb-textarea\"\n [class.mb-textarea--invalid]=\"invalid\"\n [ngClass]=\"'mb-textarea--' + size\"\n [placeholder]=\"placeholder\"\n [rows]=\"rows\"\n [disabled]=\"disabled\"\n [readOnly]=\"readonly\"\n [maxLength]=\"maxLength ?? null\"\n [value]=\"value\"\n (input)=\"onInput($event)\"\n (blur)=\"blur()\"></textarea>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n Output,\n forwardRef,\n inject,\n} from '@angular/core';\nimport { NgClass, NgFor, NgIf } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\nimport { MB_UI_CONFIG, MbSize } from '../tokens/mb-ui-config.token';\nimport {\n MB_JALALI_MONTH_NAMES,\n MbGregorianDate,\n MbJalaliDate,\n mbFormatJalali,\n mbGregorianToJalali,\n mbJalaliMonthLength,\n mbJalaliToGregorian,\n mbParseIsoDate,\n mbToIsoDate,\n} from '../utils/mb-jalali-date';\n\nexport type MbDatepickerMode = 'date' | 'month';\nexport type MbCalendarSystem = 'gregorian' | 'jalali';\nexport type MbDateValue = string | Date | null;\n\nexport interface MbCalendarDay {\n date: Date;\n iso: string;\n label: number;\n currentMonth: boolean;\n today: boolean;\n selected: boolean;\n disabled: boolean;\n jalali?: MbJalaliDate;\n}\n\n@Component({\n selector: 'mb-datepicker',\n standalone: true,\n imports: [NgClass, NgFor, NgIf],\n templateUrl: './mb-datepicker.component.html',\n styleUrl: './mb-datepicker.component.scss',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MbDatepickerComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbDatepickerComponent implements ControlValueAccessor {\n readonly messages = inject(MB_UI_MESSAGES);\n private readonly uiConfig = inject(MB_UI_CONFIG);\n\n @Input() mode: MbDatepickerMode = 'date';\n @Input() calendar: MbCalendarSystem = 'gregorian';\n @Input() placeholder?: string;\n @Input() min?: string;\n @Input() max?: string;\n @Input() size: MbSize = 'md';\n @Input() disabled = false;\n @Input() invalid = false;\n @Input() clearable = true;\n @Input() firstDayOfWeek: 0 | 1 | 6 = 0;\n @Input() locale?: string;\n @Input() monthNames?: string[];\n @Input() weekdayNames?: string[];\n @Input() disabledDates: (date: Date) => boolean = () => false;\n\n @Output() valueChange = new EventEmitter<string>();\n @Output() openedChange = new EventEmitter<boolean>();\n\n @HostBinding('class') hostClass = 'mb-datepicker-host';\n\n value = '';\n opened = false;\n viewDate = this.startOfMonth(new Date());\n viewJalali: MbJalaliDate = mbGregorianToJalali(this.toGregorian(new Date()));\n days: MbCalendarDay[] = [];\n readonly years = Array.from({ length: 21 }, (_, index) => new Date().getFullYear() - 10 + index);\n readonly jalaliYears = Array.from({ length: 21 }, (_, index) => this.viewJalali.year - 10 + index);\n\n private onChange: (value: string) => void = () => undefined;\n private onTouched: () => void = () => undefined;\n\n constructor(\n private readonly cdr: ChangeDetectorRef,\n private readonly host: ElementRef<HTMLElement>,\n ) {\n this.rebuildCalendar();\n }\n\n get effectivePlaceholder(): string {\n return this.placeholder ?? this.messages.datepicker.placeholder;\n }\n\n get effectiveLocale(): string {\n return this.locale ?? this.uiConfig.locale;\n }\n\n get effectiveWeekdayNames(): string[] {\n return this.weekdayNames ?? this.messages.datepicker.weekdayNames;\n }\n\n get effectiveGregorianMonthNames(): string[] {\n return this.monthNames ?? this.messages.datepicker.monthNamesGregorian;\n }\n\n get activeMonthNames(): string[] {\n return this.calendar === 'jalali' ? MB_JALALI_MONTH_NAMES : this.effectiveGregorianMonthNames;\n }\n\n get activeYears(): number[] {\n if (this.calendar === 'jalali') {\n const center = this.viewJalali.year;\n return Array.from({ length: 21 }, (_, index) => center - 10 + index);\n }\n return this.years;\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent): void {\n if (this.opened && !this.host.nativeElement.contains(event.target as Node)) {\n this.close();\n }\n }\n\n writeValue(value: MbDateValue): void {\n if (value instanceof Date) {\n this.value = this.toIso(value);\n this.viewDate = this.startOfMonth(value);\n this.viewJalali = mbGregorianToJalali(this.toGregorian(value));\n } else {\n this.value = value ?? '';\n const parsed = this.parseIso(this.value);\n if (parsed) {\n this.viewDate = this.startOfMonth(parsed);\n this.viewJalali = mbGregorianToJalali(this.toGregorian(parsed));\n }\n }\n this.rebuildCalendar();\n this.cdr.markForCheck();\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.cdr.markForCheck();\n }\n\n toggle(): void {\n if (!this.disabled) {\n this.opened ? this.close() : this.open();\n }\n }\n\n open(): void {\n if (this.disabled) return;\n this.opened = true;\n this.openedChange.emit(true);\n this.rebuildCalendar();\n this.cdr.markForCheck();\n }\n\n close(): void {\n this.opened = false;\n this.onTouched();\n this.openedChange.emit(false);\n this.cdr.markForCheck();\n }\n\n clear(event?: Event): void {\n event?.stopPropagation();\n if (this.disabled) return;\n this.commit('');\n this.close();\n }\n\n select(day: MbCalendarDay): void {\n if (day.disabled) return;\n this.commit(day.iso);\n this.close();\n }\n\n selectToday(): void {\n const today = new Date();\n if (!this.isDisabled(today)) {\n this.viewDate = this.startOfMonth(today);\n this.viewJalali = mbGregorianToJalali(this.toGregorian(today));\n this.commit(this.toIso(today));\n this.close();\n }\n }\n\n prevMonth(): void {\n if (this.calendar === 'jalali') {\n const month = this.viewJalali.month === 1 ? 12 : this.viewJalali.month - 1;\n const year = this.viewJalali.month === 1 ? this.viewJalali.year - 1 : this.viewJalali.year;\n this.viewJalali = { year, month, day: 1 };\n this.viewDate = this.startOfMonth(this.jalaliToDate(this.viewJalali));\n } else {\n this.viewDate = new Date(this.viewDate.getFullYear(), this.viewDate.getMonth() - 1, 1);\n }\n this.rebuildCalendar();\n }\n\n nextMonth(): void {\n if (this.calendar === 'jalali') {\n const month = this.viewJalali.month === 12 ? 1 : this.viewJalali.month + 1;\n const year = this.viewJalali.month === 12 ? this.viewJalali.year + 1 : this.viewJalali.year;\n this.viewJalali = { year, month, day: 1 };\n this.viewDate = this.startOfMonth(this.jalaliToDate(this.viewJalali));\n } else {\n this.viewDate = new Date(this.viewDate.getFullYear(), this.viewDate.getMonth() + 1, 1);\n }\n this.rebuildCalendar();\n }\n\n setMonth(value: string | number): void {\n const month = Number(value);\n if (this.calendar === 'jalali') {\n this.viewJalali = { ...this.viewJalali, month: month + 1 };\n this.viewDate = this.startOfMonth(this.jalaliToDate(this.viewJalali));\n if (this.mode === 'month') {\n const gregorian = mbJalaliToGregorian({ year: this.viewJalali.year, month: this.viewJalali.month, day: 1 });\n this.commit(`${gregorian.year}-${String(gregorian.month).padStart(2, '0')}`);\n this.close();\n return;\n }\n } else {\n this.viewDate = new Date(this.viewDate.getFullYear(), month, 1);\n if (this.mode === 'month') {\n this.commit(`${this.viewDate.getFullYear()}-${String(month + 1).padStart(2, '0')}`);\n this.close();\n return;\n }\n }\n this.rebuildCalendar();\n }\n\n setYear(value: string | number): void {\n const year = Number(value);\n if (this.calendar === 'jalali') {\n this.viewJalali = { ...this.viewJalali, year };\n this.viewDate = this.startOfMonth(this.jalaliToDate(this.viewJalali));\n } else {\n this.viewDate = new Date(year, this.viewDate.getMonth(), 1);\n }\n this.rebuildCalendar();\n }\n\n displayValue(): string {\n if (!this.value) return '';\n if (this.mode === 'month') {\n if (this.calendar === 'jalali') {\n const parsed = mbParseIsoDate(this.value.length === 7 ? `${this.value}-01` : this.value);\n if (!parsed) return this.value;\n const jalali = mbGregorianToJalali(parsed);\n return `${MB_JALALI_MONTH_NAMES[jalali.month - 1]} ${jalali.year}`;\n }\n const [year, month] = this.value.split('-');\n return `${this.monthNames[Number(month) - 1] ?? month} ${year}`;\n }\n\n const parsed = this.parseIso(this.value);\n if (!parsed) return this.value;\n\n if (this.calendar === 'jalali') {\n return mbFormatJalali(mbGregorianToJalali(this.toGregorian(parsed)));\n }\n\n try {\n return new Intl.DateTimeFormat(this.effectiveLocale, { dateStyle: 'medium' }).format(parsed);\n } catch {\n return this.value;\n }\n }\n\n currentMonthIndex(): number {\n return this.calendar === 'jalali' ? this.viewJalali.month - 1 : this.viewDate.getMonth();\n }\n\n currentYear(): number {\n return this.calendar === 'jalali' ? this.viewJalali.year : this.viewDate.getFullYear();\n }\n\n private commit(value: string, emit = true): void {\n this.value = value;\n this.onChange(value);\n if (emit) this.valueChange.emit(value);\n this.rebuildCalendar();\n this.cdr.markForCheck();\n }\n\n private rebuildCalendar(): void {\n this.days = this.calendar === 'jalali' ? this.buildJalaliCalendar() : this.buildGregorianCalendar();\n this.cdr.markForCheck();\n }\n\n private buildGregorianCalendar(): MbCalendarDay[] {\n const first = this.startOfMonth(this.viewDate);\n const start = new Date(first);\n const offset = (start.getDay() - this.firstDayOfWeek + 7) % 7;\n start.setDate(start.getDate() - offset);\n const selected = this.parseIso(this.value);\n const todayIso = this.toIso(new Date());\n\n return Array.from({ length: 42 }, (_, index) => {\n const date = new Date(start);\n date.setDate(start.getDate() + index);\n const iso = this.toIso(date);\n return {\n date,\n iso,\n label: date.getDate(),\n currentMonth: date.getMonth() === first.getMonth(),\n today: iso === todayIso,\n selected: !!selected && iso === this.toIso(selected),\n disabled: this.isDisabled(date),\n };\n });\n }\n\n private buildJalaliCalendar(): MbCalendarDay[] {\n const month = this.viewJalali.month;\n const year = this.viewJalali.year;\n const firstGregorian = this.jalaliToDate({ year, month, day: 1 });\n const start = new Date(firstGregorian);\n const offset = (start.getDay() - this.firstDayOfWeek + 7) % 7;\n start.setDate(start.getDate() - offset);\n\n const selected = this.parseIso(this.value);\n const todayIso = this.toIso(new Date());\n\n return Array.from({ length: 42 }, (_, index) => {\n const date = new Date(start);\n date.setDate(start.getDate() + index);\n const jalali = mbGregorianToJalali(this.toGregorian(date));\n const iso = this.toIso(date);\n return {\n date,\n iso,\n label: jalali.day,\n jalali,\n currentMonth: jalali.month === month && jalali.year === year,\n today: iso === todayIso,\n selected: !!selected && iso === this.toIso(selected),\n disabled: this.isDisabled(date),\n };\n });\n }\n\n private jalaliToDate(date: MbJalaliDate): Date {\n const gregorian = mbJalaliToGregorian(date);\n return new Date(gregorian.year, gregorian.month - 1, gregorian.day);\n }\n\n private toGregorian(date: Date): MbGregorianDate {\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\n }\n\n private isDisabled(date: Date): boolean {\n const iso = this.toIso(date);\n if (this.min && iso < this.min) return true;\n if (this.max && iso > this.max) return true;\n if (this.calendar === 'jalali') {\n const jalali = mbGregorianToJalali(this.toGregorian(date));\n const monthLength = mbJalaliMonthLength(jalali.year, jalali.month);\n if (jalali.day > monthLength) return true;\n }\n return this.disabledDates(date);\n }\n\n private parseIso(value: string): Date | null {\n if (!value) return null;\n const parts = value.split('-').map(Number);\n if (parts.length < 2 || parts.some(Number.isNaN)) return null;\n const [year, month, day = 1] = parts;\n return new Date(year, month - 1, day);\n }\n\n private toIso(date: Date): string {\n return mbToIsoDate(this.toGregorian(date));\n }\n\n private startOfMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n }\n}\n","<div class=\"mb-datepicker-shell\" [class.mb-datepicker-shell--open]=\"opened\">\n <button\n type=\"button\"\n class=\"mb-datepicker-trigger\"\n [class.mb-datepicker-trigger--invalid]=\"invalid\"\n [ngClass]=\"'mb-datepicker-trigger--' + size\"\n [disabled]=\"disabled\"\n (click)=\"toggle()\">\n <span class=\"mb-datepicker-value\" [class.mb-datepicker-value--placeholder]=\"!value\">{{ value ? displayValue() : effectivePlaceholder }}</span>\n <span class=\"mb-datepicker-actions\">\n <button\n *ngIf=\"clearable && value && !disabled\"\n type=\"button\"\n class=\"mb-datepicker-clear\"\n [attr.aria-label]=\"messages.datepicker.clear\"\n (click)=\"clear($event)\">×</button>\n <span class=\"mb-datepicker-icon\" aria-hidden=\"true\">📅</span>\n </span>\n </button>\n\n <div *ngIf=\"opened\" class=\"mb-datepicker-panel\" role=\"dialog\" [attr.aria-label]=\"messages.datepicker.pickDate\">\n <div class=\"mb-datepicker-header\">\n <button type=\"button\" class=\"mb-datepicker-nav\" (click)=\"prevMonth()\">‹</button>\n <div class=\"mb-datepicker-title\">\n <select [value]=\"currentMonthIndex()\" (change)=\"setMonth($any($event.target).value)\">\n <option *ngFor=\"let month of activeMonthNames; index as monthIndex\" [value]=\"monthIndex\">{{ month }}</option>\n </select>\n <select [value]=\"currentYear()\" (change)=\"setYear($any($event.target).value)\">\n <option *ngFor=\"let year of activeYears\" [value]=\"year\">{{ year }}</option>\n </select>\n </div>\n <button type=\"button\" class=\"mb-datepicker-nav\" (click)=\"nextMonth()\">›</button>\n </div>\n\n <ng-container *ngIf=\"mode === 'date'; else monthPicker\">\n <div class=\"mb-datepicker-weekdays\">\n <span *ngFor=\"let weekday of effectiveWeekdayNames\">{{ weekday }}</span>\n </div>\n <div class=\"mb-datepicker-grid\">\n <button\n *ngFor=\"let day of days\"\n type=\"button\"\n class=\"mb-datepicker-day\"\n [class.mb-datepicker-day--muted]=\"!day.currentMonth\"\n [class.mb-datepicker-day--today]=\"day.today\"\n [class.mb-datepicker-day--selected]=\"day.selected\"\n [disabled]=\"day.disabled\"\n (click)=\"select(day)\">{{ day.label }}</button>\n </div>\n </ng-container>\n\n <ng-template #monthPicker>\n <div class=\"mb-datepicker-months\">\n <button *ngFor=\"let month of activeMonthNames; index as monthIndex\" type=\"button\" class=\"mb-datepicker-month\" (click)=\"setMonth(monthIndex)\">{{ month }}</button>\n </div>\n </ng-template>\n\n <div class=\"mb-datepicker-footer\">\n <button type=\"button\" (click)=\"selectToday()\">{{ messages.datepicker.today }}</button>\n <button type=\"button\" (click)=\"close()\">{{ messages.common.close }}</button>\n </div>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { NgClass, NgIf } from '@angular/common';\nimport { MbSize } from '../tokens/mb-ui-config.token';\n\nexport type MbBadgeVariant = 'primary' | 'success' | 'warning' | 'danger' | 'neutral';\n\n@Component({\n selector: 'mb-badge',\n standalone: true,\n imports: [NgClass, NgIf],\n templateUrl: './mb-badge.component.html',\n styleUrl: './mb-badge.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbBadgeComponent {\n @Input() variant: MbBadgeVariant = 'neutral';\n @Input() size: MbSize = 'md';\n @Input() dot = false;\n @Input() pill = true;\n @HostBinding('class') hostClass = 'mb-badge-host';\n}\n","<span class=\"mb-badge\" [class.mb-badge--pill]=\"pill\" [class.mb-badge--dot-only]=\"dot\" [ngClass]=\"['mb-badge--' + variant, 'mb-badge--' + size]\">\n <span class=\"mb-badge__dot\" *ngIf=\"dot\"></span>\n <ng-content></ng-content>\n</span>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'mb-chip',\n standalone: true,\n imports: [NgIf],\n templateUrl: './mb-chip.component.html',\n styleUrl: './mb-chip.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbChipComponent {\n @Input() removable = false;\n @Input() selected = false;\n @Input() disabled = false;\n @Output() removed = new EventEmitter<void>();\n @HostBinding('class') hostClass = 'mb-chip-host';\n\n remove(event: MouseEvent): void {\n event.stopPropagation();\n if (!this.disabled) this.removed.emit();\n }\n}\n","<span class=\"mb-chip\" [class.mb-chip--selected]=\"selected\" [class.mb-chip--disabled]=\"disabled\">\n <ng-content></ng-content>\n <button *ngIf=\"removable\" type=\"button\" class=\"mb-chip__remove\" [disabled]=\"disabled\" (click)=\"remove($event)\" aria-label=\"Remove\">×</button>\n</span>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { MbSize } from '../tokens/mb-ui-config.token';\n\n@Component({\n selector: 'mb-avatar',\n standalone: true,\n imports: [NgIf],\n templateUrl: './mb-avatar.component.html',\n styleUrl: './mb-avatar.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbAvatarComponent {\n @Input() src?: string;\n @Input() alt = '';\n @Input() name = '';\n @Input() size: MbSize = 'md';\n @HostBinding('class') hostClass = 'mb-avatar-host';\n\n get initials(): string {\n const parts = this.name.trim().split(/\\s+/).filter(Boolean);\n return parts.slice(0, 2).map((p) => p[0]?.toUpperCase() ?? '').join('') || '?';\n }\n}\n","<span class=\"mb-avatar\" [class]=\"'mb-avatar mb-avatar--' + size\">\n <img *ngIf=\"src; else fallback\" [src]=\"src\" [alt]=\"alt || name\" />\n <ng-template #fallback>{{ initials }}</ng-template>\n</span>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'mb-card',\n standalone: true,\n imports: [NgIf],\n templateUrl: './mb-card.component.html',\n styleUrl: './mb-card.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbCardComponent {\n @Input() title = '';\n @Input() subtitle = '';\n @Input() padding: 'none' | 'sm' | 'md' | 'lg' = 'md';\n @Input() elevated = false;\n @HostBinding('class') hostClass = 'mb-card-host';\n}\n","<section class=\"mb-card\" [class.mb-card--elevated]=\"elevated\" [class]=\"'mb-card mb-card--padding-' + padding\">\n <header class=\"mb-card__header\" *ngIf=\"title || subtitle\">\n <h3 class=\"mb-card__title\" *ngIf=\"title\">{{ title }}</h3>\n <p class=\"mb-card__subtitle\" *ngIf=\"subtitle\">{{ subtitle }}</p>\n </header>\n <div class=\"mb-card__content\"><ng-content></ng-content></div>\n</section>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { NgIf } from '@angular/common';\nexport type MbAlertVariant = 'info' | 'success' | 'warning' | 'danger';\n@Component({\n selector: 'mb-alert',\n standalone: true,\n imports: [NgIf],\n templateUrl: './mb-alert.component.html',\n styleUrl: './mb-alert.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbAlertComponent {\n @Input() variant: MbAlertVariant = 'info';\n @Input() title = '';\n @Input() closable = false;\n @Output() closed = new EventEmitter<void>();\n @HostBinding('class') hostClass = 'mb-alert-host';\n}\n","<div class=\"mb-alert\" [class]=\"'mb-alert mb-alert--' + variant\" role=\"alert\">\n <div class=\"mb-alert__body\">\n <strong *ngIf=\"title\" class=\"mb-alert__title\">{{ title }}</strong>\n <div class=\"mb-alert__content\"><ng-content></ng-content></div>\n </div>\n <button *ngIf=\"closable\" type=\"button\" class=\"mb-alert__close\" (click)=\"closed.emit()\" aria-label=\"Close\">×</button>\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { MbSize } from '../tokens/mb-ui-config.token';\n@Component({\n selector: 'mb-spinner',\n standalone: true,\n templateUrl: './mb-spinner.component.html',\n styleUrl: './mb-spinner.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbSpinnerComponent {\n @Input() size: MbSize = 'md';\n @Input() label = 'Loading';\n @HostBinding('class') hostClass = 'mb-spinner-host';\n}\n","<span class=\"mb-spinner\" [class]=\"'mb-spinner mb-spinner--' + size\" role=\"status\" [attr.aria-label]=\"label\"></span>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n@Component({\n selector: 'mb-skeleton',\n standalone: true,\n templateUrl: './mb-skeleton.component.html',\n styleUrl: './mb-skeleton.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbSkeletonComponent {\n @Input() width = '100%';\n @Input() height = '1rem';\n @Input() radius = 'var(--mb-radius-md)';\n @HostBinding('class') hostClass = 'mb-skeleton-host';\n}\n","<span class=\"mb-skeleton\" [style.width]=\"width\" [style.height]=\"height\" [style.border-radius]=\"radius\"></span>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n@Component({\n selector: 'mb-progress',\n standalone: true,\n imports: [NgIf],\n templateUrl: './mb-progress.component.html',\n styleUrl: './mb-progress.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbProgressComponent {\n @Input() value = 0;\n @Input() max = 100;\n @Input() label = false;\n @Input() indeterminate = false;\n @HostBinding('class') hostClass = 'mb-progress-host';\n\n get percent(): number { return this.max <= 0 ? 0 : Math.max(0, Math.min(100, Math.round((this.value / this.max) * 100))); }\n}\n","<div class=\"mb-progress\" [class.mb-progress--indeterminate]=\"indeterminate\" role=\"progressbar\" [attr.aria-valuenow]=\"indeterminate ? null : value\" [attr.aria-valuemax]=\"max\">\n <span class=\"mb-progress__bar\" [style.width.%]=\"indeterminate ? null : percent\"></span>\n</div>\n<span class=\"mb-progress__label\" *ngIf=\"label && !indeterminate\">{{ percent }}%</span>\n","import { ChangeDetectionStrategy, Component, HostBinding, inject, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\n\n@Component({\n selector: 'mb-empty',\n standalone: true,\n imports: [NgIf],\n templateUrl: './mb-empty.component.html',\n styleUrl: './mb-empty.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbEmptyComponent {\n private readonly messages = inject(MB_UI_MESSAGES);\n\n @Input() title?: string;\n @Input() description = '';\n @HostBinding('class') hostClass = 'mb-empty-host';\n\n get effectiveTitle(): string {\n return this.title ?? this.messages.empty.title;\n }\n}\n","<div class=\"mb-empty\">\n <div class=\"mb-empty__icon\" aria-hidden=\"true\">∅</div>\n <strong class=\"mb-empty__title\">{{ effectiveTitle }}</strong>\n <p class=\"mb-empty__desc\" *ngIf=\"description\">{{ description }}</p>\n <div class=\"mb-empty__actions\"><ng-content></ng-content></div>\n</div>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\n@Component({\n selector: 'mb-divider',\n standalone: true,\n template: '<span class=\"mb-divider__text\"><ng-content></ng-content></span>',\n styleUrl: './mb-divider.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbDividerComponent {\n @Input() orientation: 'horizontal' | 'vertical' = 'horizontal';\n @HostBinding('class') get hostClass(): string { return `mb-divider-host mb-divider-host--${this.orientation}`; }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { NgFor, NgIf } from '@angular/common';\nexport interface MbBreadcrumbItem { label: string; url?: string; disabled?: boolean; }\n@Component({\n selector: 'mb-breadcrumb',\n standalone: true,\n imports: [NgFor, NgIf],\n templateUrl: './mb-breadcrumb.component.html',\n styleUrl: './mb-breadcrumb.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbBreadcrumbComponent {\n @Input() items: MbBreadcrumbItem[] = [];\n @Output() itemClick = new EventEmitter<MbBreadcrumbItem>();\n @HostBinding('class') hostClass = 'mb-breadcrumb-host';\n trackByIndex(index: number): number { return index; }\n}\n","<nav class=\"mb-breadcrumb\" aria-label=\"Breadcrumb\">\n <ol>\n <li *ngFor=\"let item of items; let last = last; trackBy: trackByIndex\">\n <button type=\"button\" [disabled]=\"item.disabled || last\" (click)=\"itemClick.emit(item)\">{{ item.label }}</button>\n <span *ngIf=\"!last\" aria-hidden=\"true\">/</span>\n </li>\n </ol>\n</nav>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { NgFor, NgIf } from '@angular/common';\nexport interface MbTabItem { id: string; label: string; disabled?: boolean; badge?: string | number; }\n@Component({\n selector: 'mb-tabs',\n standalone: true,\n imports: [NgFor, NgIf],\n templateUrl: './mb-tabs.component.html',\n styleUrl: './mb-tabs.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbTabsComponent {\n @Input() tabs: MbTabItem[] = [];\n @Input() activeId = '';\n @Input() variant: 'line' | 'pills' = 'line';\n @Output() activeIdChange = new EventEmitter<string>();\n @HostBinding('class') hostClass = 'mb-tabs-host';\n select(tab: MbTabItem): void { if (!tab.disabled) this.activeIdChange.emit(tab.id); }\n trackById(_: number, item: MbTabItem): string { return item.id; }\n}\n","<div class=\"mb-tabs\" [class.mb-tabs--pills]=\"variant === 'pills'\" role=\"tablist\">\n <button\n *ngFor=\"let tab of tabs; trackBy: trackById\"\n type=\"button\"\n class=\"mb-tabs__tab\"\n role=\"tab\"\n [class.mb-tabs__tab--active]=\"tab.id === activeId\"\n [disabled]=\"tab.disabled\"\n [attr.aria-selected]=\"tab.id === activeId\"\n (click)=\"select(tab)\">\n <span>{{ tab.label }}</span>\n <span *ngIf=\"tab.badge !== undefined\" class=\"mb-tabs__badge\">{{ tab.badge }}</span>\n </button>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { NgFor, NgIf } from '@angular/common';\nexport interface MbAccordionItem { id: string; title: string; content?: string; disabled?: boolean; open?: boolean; }\n@Component({\n selector: 'mb-accordion',\n standalone: true,\n imports: [NgFor, NgIf],\n templateUrl: './mb-accordion.component.html',\n styleUrl: './mb-accordion.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbAccordionComponent {\n @Input() items: MbAccordionItem[] = [];\n @Input() multiple = false;\n @Output() itemsChange = new EventEmitter<MbAccordionItem[]>();\n @HostBinding('class') hostClass = 'mb-accordion-host';\n toggle(item: MbAccordionItem): void {\n if (item.disabled) return;\n const next = this.items.map((candidate) => {\n if (candidate.id === item.id) return { ...candidate, open: !candidate.open };\n return this.multiple ? candidate : { ...candidate, open: false };\n });\n this.items = next;\n this.itemsChange.emit(next);\n }\n trackById(_: number, item: MbAccordionItem): string { return item.id; }\n}\n","<div class=\"mb-accordion\">\n <section *ngFor=\"let item of items; trackBy: trackById\" class=\"mb-accordion__item\" [class.mb-accordion__item--open]=\"item.open\">\n <button type=\"button\" class=\"mb-accordion__header\" [disabled]=\"item.disabled\" (click)=\"toggle(item)\">\n <span>{{ item.title }}</span>\n <span aria-hidden=\"true\">⌄</span>\n </button>\n <div class=\"mb-accordion__panel\" *ngIf=\"item.open\">\n <ng-container *ngIf=\"item.content; else projected\">{{ item.content }}</ng-container>\n <ng-template #projected><ng-content></ng-content></ng-template>\n </div>\n </section>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, inject, Input, Output } from '@angular/core';\nimport { NgFor, NgIf } from '@angular/common';\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\n@Component({\n selector: 'mb-pagination',\n standalone: true,\n imports: [NgFor, NgIf],\n templateUrl: './mb-pagination.component.html',\n styleUrl: './mb-pagination.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbPaginationComponent {\n readonly messages = inject(MB_UI_MESSAGES);\n\n @Input() page = 1;\n @Input() pageSize = 10;\n @Input() total = 0;\n @Input() maxButtons = 5;\n @Output() pageChange = new EventEmitter<number>();\n @HostBinding('class') hostClass = 'mb-pagination-host';\n\n get pageCount(): number { return Math.max(1, Math.ceil(this.total / Math.max(1, this.pageSize))); }\n get pages(): number[] {\n const count = this.pageCount;\n const half = Math.floor(this.maxButtons / 2);\n let start = Math.max(1, this.page - half);\n const end = Math.min(count, start + this.maxButtons - 1);\n start = Math.max(1, end - this.maxButtons + 1);\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n go(page: number): void {\n const next = Math.max(1, Math.min(this.pageCount, page));\n if (next !== this.page) this.pageChange.emit(next);\n }\n}\n","<nav class=\"mb-pagination\" [attr.aria-label]=\"messages.pagination.ariaLabel\">\n <button type=\"button\" (click)=\"go(page - 1)\" [disabled]=\"page <= 1\">‹</button>\n <button *ngFor=\"let p of pages\" type=\"button\" [class.mb-pagination__page--active]=\"p === page\" (click)=\"go(p)\">{{ p }}</button>\n <button type=\"button\" (click)=\"go(page + 1)\" [disabled]=\"page >= pageCount\">›</button>\n <span class=\"mb-pagination__meta\" *ngIf=\"total\">{{ page }} / {{ pageCount }}</span>\n</nav>\n","import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';\nimport { NgIf } from '@angular/common';\n@Component({\n selector: 'mb-drawer',\n standalone: true,\n imports: [NgIf],\n templateUrl: './mb-drawer.component.html',\n styleUrl: './mb-drawer.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbDrawerComponent {\n @Input() open = false;\n @Input() title = '';\n @Input() position: 'start' | 'end' | 'top' | 'bottom' = 'end';\n @Input() closeOnBackdrop = true;\n @Output() openChange = new EventEmitter<boolean>();\n @HostBinding('class') hostClass = 'mb-drawer-host';\n close(): void { this.openChange.emit(false); }\n backdrop(): void { if (this.closeOnBackdrop) this.close(); }\n}\n","<div class=\"mb-drawer-backdrop\" *ngIf=\"open\" (click)=\"backdrop()\"></div>\n<aside *ngIf=\"open\" class=\"mb-drawer\" [class]=\"'mb-drawer mb-drawer--' + position\" role=\"dialog\" aria-modal=\"true\">\n <header class=\"mb-drawer__header\" *ngIf=\"title\">\n <strong>{{ title }}</strong>\n <button type=\"button\" (click)=\"close()\" aria-label=\"Close\">×</button>\n </header>\n <div class=\"mb-drawer__content\"><ng-content></ng-content></div>\n</aside>\n","import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n@Component({\n selector: 'mb-dropdown',\n standalone: true,\n imports: [NgIf],\n templateUrl: './mb-dropdown.component.html',\n styleUrl: './mb-dropdown.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbDropdownComponent {\n @Input() open = false;\n @Input() align: 'start' | 'end' = 'start';\n @HostBinding('class') hostClass = 'mb-dropdown-host';\n toggle(): void { this.open = !this.open; }\n close(): void { this.open = false; }\n}\n","<div class=\"mb-dropdown\" [class.mb-dropdown--open]=\"open\" [class.mb-dropdown--end]=\"align === 'end'\">\n <div class=\"mb-dropdown__trigger\" (click)=\"toggle()\"><ng-content select=\"[mbDropdownTrigger]\"></ng-content></div>\n <div class=\"mb-dropdown__panel\" *ngIf=\"open\"><ng-content></ng-content></div>\n</div>\n","import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/core';\n@Directive({ selector: '[mbTooltip]', standalone: true })\nexport class MbTooltipDirective {\n @Input('mbTooltip') text = '';\n private tooltip?: HTMLElement;\n constructor(private readonly elementRef: ElementRef<HTMLElement>, private readonly renderer: Renderer2) {}\n @HostListener('mouseenter') show(): void {\n if (!this.text || this.tooltip) return;\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n const el = this.renderer.createElement('div') as HTMLElement;\n this.renderer.addClass(el, 'mb-tooltip-panel');\n this.renderer.setProperty(el, 'textContent', this.text);\n this.renderer.appendChild(document.body, el);\n const top = rect.top + window.scrollY - el.offsetHeight - 8;\n const left = rect.left + window.scrollX + rect.width / 2 - el.offsetWidth / 2;\n this.renderer.setStyle(el, 'top', `${Math.max(8, top)}px`);\n this.renderer.setStyle(el, 'left', `${Math.max(8, left)}px`);\n this.tooltip = el;\n }\n @HostListener('mouseleave') hide(): void {\n if (this.tooltip) {\n this.renderer.removeChild(document.body, this.tooltip);\n this.tooltip = undefined;\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, Inject, inject } from '@angular/core';\nimport { NgClass } from '@angular/common';\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\nimport { MB_DIALOG_DATA } from '../dialog/mb-dialog.tokens';\nimport { MbDialogRef } from '../dialog/mb-dialog-ref';\nimport { MbButtonComponent } from '../button/mb-button.component';\nimport { MbConfirmOptions } from './mb-confirm.types';\n\n@Component({\n selector: 'mb-confirm-dialog',\n standalone: true,\n imports: [NgClass, MbButtonComponent],\n templateUrl: './mb-confirm-dialog.component.html',\n styleUrl: './mb-confirm-dialog.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MbConfirmDialogComponent {\n private readonly messages = inject(MB_UI_MESSAGES);\n\n constructor(\n @Inject(MB_DIALOG_DATA) readonly options: MbConfirmOptions,\n private readonly dialogRef: MbDialogRef<boolean>,\n ) {}\n\n get tone() {\n return this.options.tone ?? 'default';\n }\n\n get titleText() {\n return this.options.title ?? this.messages.confirm.title;\n }\n\n get okText() {\n return this.options.okText ?? this.messages.confirm.okText;\n }\n\n get cancelText() {\n return this.options.cancelText ?? this.messages.confirm.cancelText;\n }\n\n cancel() {\n this.dialogRef.close(false);\n }\n\n accept() {\n this.dialogRef.close(true);\n }\n}\n","<section class=\"mb-confirm\" [ngClass]=\"'mb-confirm--' + tone\">\n <div class=\"mb-confirm__icon\" aria-hidden=\"true\">\n <span>{{ tone === 'danger' ? '!' : tone === 'warning' ? '?' : '✓' }}</span>\n </div>\n <div class=\"mb-confirm__content\">\n <h2 class=\"mb-confirm__title\">{{ titleText }}</h2>\n <p class=\"mb-confirm__message\">{{ options.message }}</p>\n </div>\n <div class=\"mb-confirm__actions\">\n <mb-button variant=\"ghost\" (clicked)=\"cancel()\">{{ cancelText }}</mb-button>\n <mb-button [variant]=\"tone === 'danger' ? 'danger' : 'primary'\" (clicked)=\"accept()\">{{ okText }}</mb-button>\n </div>\n</section>\n","import { inject, Injectable } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\nimport { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';\nimport { MbDialogService } from '../dialog/mb-dialog.service';\nimport { MbConfirmDialogComponent } from './mb-confirm-dialog.component';\nimport { MbConfirmOptions } from './mb-confirm.types';\n\n@Injectable({ providedIn: 'root' })\nexport class MbConfirmService {\n private readonly messages = inject(MB_UI_MESSAGES);\n\n constructor(private readonly dialog: MbDialogService) {}\n\n async confirm(options: MbConfirmOptions): Promise<boolean> {\n const ref = this.dialog.open<MbConfirmDialogComponent, MbConfirmOptions, boolean>(MbConfirmDialogComponent, {\n data: options,\n width: options.width ?? '420px',\n closeOnBackdropClick: options.closeOnBackdropClick ?? true,\n ariaLabel: options.title ?? this.messages.confirm.ariaLabel,\n });\n return (await firstValueFrom(ref.afterClosed$)) === true;\n }\n\n danger(message: string, title?: string): Promise<boolean> {\n const confirmMessages = this.messages.confirm;\n return this.confirm({\n title: title ?? confirmMessages.deleteTitle,\n message,\n tone: 'danger',\n okText: confirmMessages.deleteOkText,\n cancelText: confirmMessages.cancelText,\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.MbGridStateService","i2","i1","i1.MbToastService","i1.MbDialogRef","i1.MbDialogService"],"mappings":"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"}
|