@beshkari/mb-ui 0.5.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +98 -0
  3. package/esm2022/beshkari-mb-ui.mjs +5 -0
  4. package/esm2022/lib/accordion/mb-accordion.component.mjs +37 -0
  5. package/esm2022/lib/alert/mb-alert.component.mjs +28 -0
  6. package/esm2022/lib/avatar/mb-avatar.component.mjs +32 -0
  7. package/esm2022/lib/badge/mb-badge.component.mjs +28 -0
  8. package/esm2022/lib/breadcrumb/mb-breadcrumb.component.mjs +23 -0
  9. package/esm2022/lib/button/mb-button.component.mjs +48 -0
  10. package/esm2022/lib/card/mb-card.component.mjs +28 -0
  11. package/esm2022/lib/checkbox/mb-checkbox.component.mjs +75 -0
  12. package/esm2022/lib/chip/mb-chip.component.mjs +33 -0
  13. package/esm2022/lib/combobox/mb-combobox.component.mjs +235 -0
  14. package/esm2022/lib/confirm/mb-confirm-dialog.component.mjs +44 -0
  15. package/esm2022/lib/confirm/mb-confirm.service.mjs +39 -0
  16. package/esm2022/lib/confirm/mb-confirm.types.mjs +2 -0
  17. package/esm2022/lib/datepicker/mb-datepicker.component.mjs +382 -0
  18. package/esm2022/lib/dialog/mb-dialog-container.component.mjs +37 -0
  19. package/esm2022/lib/dialog/mb-dialog-ref.mjs +17 -0
  20. package/esm2022/lib/dialog/mb-dialog.component.mjs +87 -0
  21. package/esm2022/lib/dialog/mb-dialog.service.mjs +61 -0
  22. package/esm2022/lib/dialog/mb-dialog.tokens.mjs +3 -0
  23. package/esm2022/lib/divider/mb-divider.component.mjs +18 -0
  24. package/esm2022/lib/drawer/mb-drawer.component.mjs +34 -0
  25. package/esm2022/lib/dropdown/mb-dropdown.component.mjs +24 -0
  26. package/esm2022/lib/empty/mb-empty.component.mjs +27 -0
  27. package/esm2022/lib/form-field/mb-form-field.component.mjs +24 -0
  28. package/esm2022/lib/grid/mb-grid-data.mjs +266 -0
  29. package/esm2022/lib/grid/mb-grid-export.mjs +36 -0
  30. package/esm2022/lib/grid/mb-grid-messages.mjs +10 -0
  31. package/esm2022/lib/grid/mb-grid-state-adapter.mjs +97 -0
  32. package/esm2022/lib/grid/mb-grid-state.service.mjs +47 -0
  33. package/esm2022/lib/grid/mb-grid-template.directive.mjs +109 -0
  34. package/esm2022/lib/grid/mb-grid.component.mjs +998 -0
  35. package/esm2022/lib/grid/mb-grid.types.mjs +2 -0
  36. package/esm2022/lib/i18n/mb-ui-locale.mjs +18 -0
  37. package/esm2022/lib/i18n/mb-ui-messages-en.mjs +103 -0
  38. package/esm2022/lib/i18n/mb-ui-messages-fa.mjs +103 -0
  39. package/esm2022/lib/i18n/mb-ui-messages.mjs +34 -0
  40. package/esm2022/lib/i18n/mb-ui-messages.types.mjs +2 -0
  41. package/esm2022/lib/i18n/provide-mb-ui.mjs +20 -0
  42. package/esm2022/lib/input/mb-input.component.mjs +86 -0
  43. package/esm2022/lib/pagination/mb-pagination.component.mjs +47 -0
  44. package/esm2022/lib/progress/mb-progress.component.mjs +29 -0
  45. package/esm2022/lib/radio/mb-radio-group.component.mjs +63 -0
  46. package/esm2022/lib/select/mb-select.component.mjs +73 -0
  47. package/esm2022/lib/skeleton/mb-skeleton.component.mjs +24 -0
  48. package/esm2022/lib/spinner/mb-spinner.component.mjs +21 -0
  49. package/esm2022/lib/switch/mb-switch.component.mjs +59 -0
  50. package/esm2022/lib/tabs/mb-tabs.component.mjs +31 -0
  51. package/esm2022/lib/textarea/mb-textarea.component.mjs +83 -0
  52. package/esm2022/lib/toast/mb-toast-container.component.mjs +21 -0
  53. package/esm2022/lib/toast/mb-toast.service.mjs +47 -0
  54. package/esm2022/lib/toast/mb-toast.types.mjs +2 -0
  55. package/esm2022/lib/tokens/mb-ui-config.token.mjs +11 -0
  56. package/esm2022/lib/tooltip/mb-tooltip.directive.mjs +48 -0
  57. package/esm2022/lib/utils/coerce.mjs +10 -0
  58. package/esm2022/lib/utils/mb-jalali-date.mjs +120 -0
  59. package/esm2022/public-api.mjs +56 -0
  60. package/fesm2022/beshkari-mb-ui.mjs +3828 -0
  61. package/fesm2022/beshkari-mb-ui.mjs.map +1 -0
  62. package/index.d.ts +5 -0
  63. package/lib/accordion/mb-accordion.component.d.ts +19 -0
  64. package/lib/alert/mb-alert.component.d.ts +12 -0
  65. package/lib/avatar/mb-avatar.component.d.ts +12 -0
  66. package/lib/badge/mb-badge.component.d.ts +12 -0
  67. package/lib/breadcrumb/mb-breadcrumb.component.d.ts +15 -0
  68. package/lib/button/mb-button.component.d.ts +19 -0
  69. package/lib/card/mb-card.component.d.ts +10 -0
  70. package/lib/checkbox/mb-checkbox.component.d.ts +25 -0
  71. package/lib/chip/mb-chip.component.d.ts +12 -0
  72. package/lib/combobox/mb-combobox.component.d.ts +65 -0
  73. package/lib/confirm/mb-confirm-dialog.component.d.ts +17 -0
  74. package/lib/confirm/mb-confirm.service.d.ts +12 -0
  75. package/lib/confirm/mb-confirm.types.d.ts +10 -0
  76. package/lib/datepicker/mb-datepicker.component.d.ts +87 -0
  77. package/lib/dialog/mb-dialog-container.component.d.ts +14 -0
  78. package/lib/dialog/mb-dialog-ref.d.ts +9 -0
  79. package/lib/dialog/mb-dialog.component.d.ts +27 -0
  80. package/lib/dialog/mb-dialog.service.d.ts +14 -0
  81. package/lib/dialog/mb-dialog.tokens.d.ts +13 -0
  82. package/lib/divider/mb-divider.component.d.ts +7 -0
  83. package/lib/drawer/mb-drawer.component.d.ts +14 -0
  84. package/lib/dropdown/mb-dropdown.component.d.ts +10 -0
  85. package/lib/empty/mb-empty.component.d.ts +10 -0
  86. package/lib/form-field/mb-form-field.component.d.ts +9 -0
  87. package/lib/grid/mb-grid-data.d.ts +20 -0
  88. package/lib/grid/mb-grid-export.d.ts +9 -0
  89. package/lib/grid/mb-grid-messages.d.ts +6 -0
  90. package/lib/grid/mb-grid-state-adapter.d.ts +24 -0
  91. package/lib/grid/mb-grid-state.service.d.ts +10 -0
  92. package/lib/grid/mb-grid-template.directive.d.ts +43 -0
  93. package/lib/grid/mb-grid.component.d.ts +233 -0
  94. package/lib/grid/mb-grid.types.d.ts +255 -0
  95. package/lib/i18n/mb-ui-locale.d.ts +2 -0
  96. package/lib/i18n/mb-ui-messages-en.d.ts +3 -0
  97. package/lib/i18n/mb-ui-messages-fa.d.ts +3 -0
  98. package/lib/i18n/mb-ui-messages.d.ts +5 -0
  99. package/lib/i18n/mb-ui-messages.types.d.ts +90 -0
  100. package/lib/i18n/provide-mb-ui.d.ts +7 -0
  101. package/lib/input/mb-input.component.d.ts +30 -0
  102. package/lib/pagination/mb-pagination.component.d.ts +16 -0
  103. package/lib/progress/mb-progress.component.d.ts +11 -0
  104. package/lib/radio/mb-radio-group.component.d.ts +30 -0
  105. package/lib/select/mb-select.component.d.ts +31 -0
  106. package/lib/skeleton/mb-skeleton.component.d.ts +9 -0
  107. package/lib/spinner/mb-spinner.component.d.ts +9 -0
  108. package/lib/switch/mb-switch.component.d.ts +22 -0
  109. package/lib/tabs/mb-tabs.component.d.ts +19 -0
  110. package/lib/textarea/mb-textarea.component.d.ts +29 -0
  111. package/lib/toast/mb-toast-container.component.d.ts +10 -0
  112. package/lib/toast/mb-toast.service.d.ts +15 -0
  113. package/lib/toast/mb-toast.types.d.ts +8 -0
  114. package/lib/tokens/mb-ui-config.token.d.ts +12 -0
  115. package/lib/tooltip/mb-tooltip.directive.d.ts +13 -0
  116. package/lib/utils/coerce.d.ts +3 -0
  117. package/lib/utils/mb-jalali-date.d.ts +18 -0
  118. package/package.json +50 -0
  119. package/public-api.d.ts +55 -0
  120. package/theme/_components.scss +19 -0
  121. package/theme/_dark.scss +1 -0
  122. package/theme/_density.scss +1 -0
  123. package/theme/_tokens.scss +57 -0
  124. package/theme/mb-ui.scss +28 -0
@@ -0,0 +1,63 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';
2
+ import { NgClass, NgFor, NgIf } from '@angular/common';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ export class MbRadioGroupComponent {
6
+ options = [];
7
+ name = `mb-radio-${Math.random().toString(36).slice(2)}`;
8
+ size = 'md';
9
+ direction = 'vertical';
10
+ disabled = false;
11
+ valueChange = new EventEmitter();
12
+ hostClass = 'mb-radio-group-host';
13
+ value = null;
14
+ onChange = () => undefined;
15
+ onTouched = () => undefined;
16
+ writeValue(value) { this.value = value; }
17
+ registerOnChange(fn) { this.onChange = fn; }
18
+ registerOnTouched(fn) { this.onTouched = fn; }
19
+ setDisabledState(isDisabled) { this.disabled = isDisabled; }
20
+ choose(option) {
21
+ if (this.disabled || option.disabled)
22
+ return;
23
+ this.value = option.value;
24
+ this.onChange(option.value);
25
+ this.valueChange.emit(option.value);
26
+ this.onTouched();
27
+ }
28
+ trackByValue(index) { return index; }
29
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbRadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
30
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MbRadioGroupComponent, isStandalone: true, selector: "mb-radio-group", inputs: { options: "options", name: "name", size: "size", direction: "direction", disabled: "disabled" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class": "this.hostClass" } }, providers: [
31
+ {
32
+ provide: NG_VALUE_ACCESSOR,
33
+ useExisting: forwardRef(() => MbRadioGroupComponent),
34
+ multi: true,
35
+ },
36
+ ], ngImport: i0, template: "<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", styles: [".mb-radio-group{display:grid;gap:.7rem}.mb-radio-group--horizontal{display:flex;flex-wrap:wrap;gap:.9rem 1.4rem}.mb-radio{display:inline-flex;align-items:flex-start;gap:.55rem;cursor:pointer;-webkit-user-select:none;user-select:none}.mb-radio__native{position:absolute;opacity:0;pointer-events:none}.mb-radio__circle{inline-size:1.1rem;block-size:1.1rem;border:1px solid var(--mb-color-border-strong);border-radius:999px;background:var(--mb-color-bg);display:grid;place-items:center;margin-block-start:.08rem;transition:var(--mb-transition-fast)}.mb-radio__dot{inline-size:.52rem;block-size:.52rem;border-radius:999px;background:transparent;transform:scale(.5);transition:var(--mb-transition-fast)}.mb-radio:hover .mb-radio__circle,.mb-radio--checked .mb-radio__circle{border-color:var(--mb-color-primary)}.mb-radio--checked .mb-radio__dot{background:var(--mb-color-primary);transform:scale(1)}.mb-radio__native:focus-visible+.mb-radio__circle{box-shadow:var(--mb-focus-ring)}.mb-radio__content{display:grid;gap:.1rem}.mb-radio__label{font-weight:650;font-size:.9rem;color:var(--mb-color-text)}.mb-radio__hint{color:var(--mb-color-muted);font-size:.78rem}.mb-radio--disabled{opacity:.62;cursor:not-allowed}.mb-radio-group--sm .mb-radio__circle{inline-size:.95rem;block-size:.95rem}.mb-radio-group--lg .mb-radio__circle{inline-size:1.25rem;block-size:1.25rem}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbRadioGroupComponent, decorators: [{
39
+ type: Component,
40
+ args: [{ selector: 'mb-radio-group', standalone: true, imports: [NgFor, NgIf, NgClass], providers: [
41
+ {
42
+ provide: NG_VALUE_ACCESSOR,
43
+ useExisting: forwardRef(() => MbRadioGroupComponent),
44
+ multi: true,
45
+ },
46
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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", styles: [".mb-radio-group{display:grid;gap:.7rem}.mb-radio-group--horizontal{display:flex;flex-wrap:wrap;gap:.9rem 1.4rem}.mb-radio{display:inline-flex;align-items:flex-start;gap:.55rem;cursor:pointer;-webkit-user-select:none;user-select:none}.mb-radio__native{position:absolute;opacity:0;pointer-events:none}.mb-radio__circle{inline-size:1.1rem;block-size:1.1rem;border:1px solid var(--mb-color-border-strong);border-radius:999px;background:var(--mb-color-bg);display:grid;place-items:center;margin-block-start:.08rem;transition:var(--mb-transition-fast)}.mb-radio__dot{inline-size:.52rem;block-size:.52rem;border-radius:999px;background:transparent;transform:scale(.5);transition:var(--mb-transition-fast)}.mb-radio:hover .mb-radio__circle,.mb-radio--checked .mb-radio__circle{border-color:var(--mb-color-primary)}.mb-radio--checked .mb-radio__dot{background:var(--mb-color-primary);transform:scale(1)}.mb-radio__native:focus-visible+.mb-radio__circle{box-shadow:var(--mb-focus-ring)}.mb-radio__content{display:grid;gap:.1rem}.mb-radio__label{font-weight:650;font-size:.9rem;color:var(--mb-color-text)}.mb-radio__hint{color:var(--mb-color-muted);font-size:.78rem}.mb-radio--disabled{opacity:.62;cursor:not-allowed}.mb-radio-group--sm .mb-radio__circle{inline-size:.95rem;block-size:.95rem}.mb-radio-group--lg .mb-radio__circle{inline-size:1.25rem;block-size:1.25rem}\n"] }]
47
+ }], propDecorators: { options: [{
48
+ type: Input
49
+ }], name: [{
50
+ type: Input
51
+ }], size: [{
52
+ type: Input
53
+ }], direction: [{
54
+ type: Input
55
+ }], disabled: [{
56
+ type: Input
57
+ }], valueChange: [{
58
+ type: Output
59
+ }], hostClass: [{
60
+ type: HostBinding,
61
+ args: ['class']
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItcmFkaW8tZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9yYWRpby9tYi1yYWRpby1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3JhZGlvL21iLXJhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6SCxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBeUJ6RSxNQUFNLE9BQU8scUJBQXFCO0lBQ3ZCLE9BQU8sR0FBdUIsRUFBRSxDQUFDO0lBQ2pDLElBQUksR0FBRyxZQUFZLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDekQsSUFBSSxHQUFXLElBQUksQ0FBQztJQUNwQixTQUFTLEdBQThCLFVBQVUsQ0FBQztJQUNsRCxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBSyxDQUFDO0lBRXhCLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQztJQUV4RCxLQUFLLEdBQWEsSUFBSSxDQUFDO0lBQ2YsUUFBUSxHQUE4QixHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDdEQsU0FBUyxHQUFlLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUVoRCxVQUFVLENBQUMsS0FBZSxJQUFVLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6RCxnQkFBZ0IsQ0FBQyxFQUE2QixJQUFVLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM3RSxpQkFBaUIsQ0FBQyxFQUFjLElBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLGdCQUFnQixDQUFDLFVBQW1CLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBRTNFLE1BQU0sQ0FBQyxNQUF3QjtRQUM3QixJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQzdDLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYSxJQUFZLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQzt3R0EzQjFDLHFCQUFxQjs0RkFBckIscUJBQXFCLHFRQVRyQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ3BELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwQkN4QkgsMjRCQW9CQSwwNENETFksS0FBSyxtSEFBRSxJQUFJLDZGQUFFLE9BQU87OzRGQVluQixxQkFBcUI7a0JBZmpDLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsYUFHcEI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGLG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFFZSxTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYlNpemUgfSBmcm9tICcuLi90b2tlbnMvbWItdWktY29uZmlnLnRva2VuJztcblxuZXhwb3J0IGludGVyZmFjZSBNYlJhZGlvT3B0aW9uPFQgPSB1bmtub3duPiB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBUO1xuICBoaW50Pzogc3RyaW5nO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21iLXJhZGlvLWdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW05nRm9yLCBOZ0lmLCBOZ0NsYXNzXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21iLXJhZGlvLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21iLXJhZGlvLWdyb3VwLmNvbXBvbmVudC5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYlJhZGlvR3JvdXBDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1iUmFkaW9Hcm91cENvbXBvbmVudDxUID0gdW5rbm93bj4gaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIG9wdGlvbnM6IE1iUmFkaW9PcHRpb248VD5bXSA9IFtdO1xuICBASW5wdXQoKSBuYW1lID0gYG1iLXJhZGlvLSR7TWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMil9YDtcbiAgQElucHV0KCkgc2l6ZTogTWJTaXplID0gJ21kJztcbiAgQElucHV0KCkgZGlyZWN0aW9uOiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnID0gJ3ZlcnRpY2FsJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBob3N0Q2xhc3MgPSAnbWItcmFkaW8tZ3JvdXAtaG9zdCc7XG5cbiAgdmFsdWU6IFQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBUIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogVCB8IG51bGwpOiB2b2lkIHsgdGhpcy52YWx1ZSA9IHZhbHVlOyB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogVCB8IG51bGwpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG5cbiAgY2hvb3NlKG9wdGlvbjogTWJSYWRpb09wdGlvbjxUPik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IG9wdGlvbi5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMudmFsdWUgPSBvcHRpb24udmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZShvcHRpb24udmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdChvcHRpb24udmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICB0cmFja0J5VmFsdWUoaW5kZXg6IG51bWJlcik6IG51bWJlciB7IHJldHVybiBpbmRleDsgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm1iLXJhZGlvLWdyb3VwXCIgW2NsYXNzLm1iLXJhZGlvLWdyb3VwLS1ob3Jpem9udGFsXT1cImRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnXCIgW25nQ2xhc3NdPVwiJ21iLXJhZGlvLWdyb3VwLS0nICsgc2l6ZVwiIHJvbGU9XCJyYWRpb2dyb3VwXCI+XG4gIDxsYWJlbFxuICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygb3B0aW9uczsgdHJhY2tCeTogdHJhY2tCeVZhbHVlXCJcbiAgICBjbGFzcz1cIm1iLXJhZGlvXCJcbiAgICBbY2xhc3MubWItcmFkaW8tLWNoZWNrZWRdPVwidmFsdWUgPT09IG9wdGlvbi52YWx1ZVwiXG4gICAgW2NsYXNzLm1iLXJhZGlvLS1kaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBvcHRpb24uZGlzYWJsZWRcIj5cbiAgICA8aW5wdXRcbiAgICAgIGNsYXNzPVwibWItcmFkaW9fX25hdGl2ZVwiXG4gICAgICB0eXBlPVwicmFkaW9cIlxuICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICBbY2hlY2tlZF09XCJ2YWx1ZSA9PT0gb3B0aW9uLnZhbHVlXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZCB8fCBvcHRpb24uZGlzYWJsZWRcIlxuICAgICAgKGNoYW5nZSk9XCJjaG9vc2Uob3B0aW9uKVwiIC8+XG4gICAgPHNwYW4gY2xhc3M9XCJtYi1yYWRpb19fY2lyY2xlXCI+PHNwYW4gY2xhc3M9XCJtYi1yYWRpb19fZG90XCI+PC9zcGFuPjwvc3Bhbj5cbiAgICA8c3BhbiBjbGFzcz1cIm1iLXJhZGlvX19jb250ZW50XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cIm1iLXJhZGlvX19sYWJlbFwiPnt7IG9wdGlvbi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWItcmFkaW9fX2hpbnRcIiAqbmdJZj1cIm9wdGlvbi5oaW50XCI+e3sgb3B0aW9uLmhpbnQgfX08L3NwYW4+XG4gICAgPC9zcGFuPlxuICA8L2xhYmVsPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,73 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, inject, Input, Output } from '@angular/core';
2
+ import { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';
3
+ import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { NgClass, NgFor } from '@angular/common';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ export class MbSelectComponent {
8
+ messages = inject(MB_UI_MESSAGES);
9
+ options = [];
10
+ placeholder;
11
+ size = 'md';
12
+ disabled = false;
13
+ invalid = false;
14
+ valueChange = new EventEmitter();
15
+ value = null;
16
+ get effectivePlaceholder() {
17
+ return this.placeholder ?? this.messages.form.selectPlaceholder;
18
+ }
19
+ onChange = () => undefined;
20
+ onTouched = () => undefined;
21
+ writeValue(value) {
22
+ this.value = value;
23
+ }
24
+ registerOnChange(fn) {
25
+ this.onChange = fn;
26
+ }
27
+ registerOnTouched(fn) {
28
+ this.onTouched = fn;
29
+ }
30
+ setDisabledState(isDisabled) {
31
+ this.disabled = isDisabled;
32
+ }
33
+ compareByValue = (a, b) => a === b;
34
+ handleChange(value) {
35
+ this.value = value;
36
+ this.onChange(value);
37
+ this.valueChange.emit(value);
38
+ }
39
+ blur() {
40
+ this.onTouched();
41
+ }
42
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
43
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MbSelectComponent, isStandalone: true, selector: "mb-select", inputs: { options: "options", placeholder: "placeholder", size: "size", disabled: "disabled", invalid: "invalid" }, outputs: { valueChange: "valueChange" }, providers: [
44
+ {
45
+ provide: NG_VALUE_ACCESSOR,
46
+ useExisting: forwardRef(() => MbSelectComponent),
47
+ multi: true,
48
+ },
49
+ ], ngImport: i0, template: "<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", styles: [".mb-select{inline-size:100%;border:1px solid var(--mb-color-border);border-radius:var(--mb-radius-md);background:var(--mb-color-bg);color:var(--mb-color-text);font:inherit;padding-inline:.875rem 2.25rem;outline:none;cursor:pointer;transition:border-color var(--mb-transition-fast),box-shadow var(--mb-transition-fast)}.mb-select:focus{border-color:var(--mb-color-primary);box-shadow:var(--mb-focus-ring)}.mb-select:disabled{cursor:not-allowed;color:var(--mb-color-disabled)}.mb-select--invalid{border-color:var(--mb-color-danger)}.mb-select--sm{min-height:2rem;font-size:.8125rem}.mb-select--md{min-height:2.5rem;font-size:.875rem}.mb-select--lg{min-height:3rem;font-size:.9375rem}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbSelectComponent, decorators: [{
52
+ type: Component,
53
+ args: [{ selector: 'mb-select', standalone: true, imports: [FormsModule, NgFor, NgClass], changeDetection: ChangeDetectionStrategy.OnPush, providers: [
54
+ {
55
+ provide: NG_VALUE_ACCESSOR,
56
+ useExisting: forwardRef(() => MbSelectComponent),
57
+ multi: true,
58
+ },
59
+ ], template: "<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", styles: [".mb-select{inline-size:100%;border:1px solid var(--mb-color-border);border-radius:var(--mb-radius-md);background:var(--mb-color-bg);color:var(--mb-color-text);font:inherit;padding-inline:.875rem 2.25rem;outline:none;cursor:pointer;transition:border-color var(--mb-transition-fast),box-shadow var(--mb-transition-fast)}.mb-select:focus{border-color:var(--mb-color-primary);box-shadow:var(--mb-focus-ring)}.mb-select:disabled{cursor:not-allowed;color:var(--mb-color-disabled)}.mb-select--invalid{border-color:var(--mb-color-danger)}.mb-select--sm{min-height:2rem;font-size:.8125rem}.mb-select--md{min-height:2.5rem;font-size:.875rem}.mb-select--lg{min-height:3rem;font-size:.9375rem}\n"] }]
60
+ }], propDecorators: { options: [{
61
+ type: Input
62
+ }], placeholder: [{
63
+ type: Input
64
+ }], size: [{
65
+ type: Input
66
+ }], disabled: [{
67
+ type: Input
68
+ }], invalid: [{
69
+ type: Input
70
+ }], valueChange: [{
71
+ type: Output
72
+ }] } });
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VsZWN0L21iLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlbGVjdC9tYi1zZWxlY3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQXdCakQsTUFBTSxPQUFPLGlCQUFpQjtJQUNYLFFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFMUMsT0FBTyxHQUF3QixFQUFFLENBQUM7SUFDbEMsV0FBVyxDQUFVO0lBQ3JCLElBQUksR0FBVyxJQUFJLENBQUM7SUFDcEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWYsV0FBVyxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7SUFFckQsS0FBSyxHQUFhLElBQUksQ0FBQztJQUV2QixJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEUsQ0FBQztJQUVPLFFBQVEsR0FBOEIsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ3RELFNBQVMsR0FBZSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFFaEQsVUFBVSxDQUFDLEtBQWU7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQTZCO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxFQUFjO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYyxHQUFHLENBQUMsQ0FBVyxFQUFFLENBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV2RCxZQUFZLENBQUMsS0FBZTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7d0dBOUNVLGlCQUFpQjs0RkFBakIsaUJBQWlCLHFOQVJqQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7Z0JBQ2hELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwQkN6Qkgsd2RBYUEsb3VCREVZLFdBQVcsMHZCQUFFLEtBQUssbUhBQUUsT0FBTzs7NEZBWTFCLGlCQUFpQjtrQkFmN0IsU0FBUzsrQkFDRSxXQUFXLGNBQ1QsSUFBSSxXQUNQLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7NEJBQ2hELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGOzhCQUtRLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBpbmplY3QsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1CX1VJX01FU1NBR0VTIH0gZnJvbSAnLi4vaTE4bi9tYi11aS1tZXNzYWdlcyc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWJTaXplIH0gZnJvbSAnLi4vdG9rZW5zL21iLXVpLWNvbmZpZy50b2tlbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWJTZWxlY3RPcHRpb248VCA9IHVua25vd24+IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IFQ7XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWItc2VsZWN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0Zvcm1zTW9kdWxlLCBOZ0ZvciwgTmdDbGFzc10sXG4gIHRlbXBsYXRlVXJsOiAnLi9tYi1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbWItc2VsZWN0LmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWJTZWxlY3RDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWJTZWxlY3RDb21wb25lbnQ8VCA9IHVua25vd24+IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VzID0gaW5qZWN0KE1CX1VJX01FU1NBR0VTKTtcblxuICBASW5wdXQoKSBvcHRpb25zOiBNYlNlbGVjdE9wdGlvbjxUPltdID0gW107XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBASW5wdXQoKSBzaXplOiBNYlNpemUgPSAnbWQnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbnZhbGlkID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUIHwgbnVsbD4oKTtcblxuICB2YWx1ZTogVCB8IG51bGwgPSBudWxsO1xuXG4gIGdldCBlZmZlY3RpdmVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBsYWNlaG9sZGVyID8/IHRoaXMubWVzc2FnZXMuZm9ybS5zZWxlY3RQbGFjZWhvbGRlcjtcbiAgfVxuXG4gIHByaXZhdGUgb25DaGFuZ2U6ICh2YWx1ZTogVCB8IG51bGwpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4gdW5kZWZpbmVkO1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IFQgfCBudWxsKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBUIHwgbnVsbCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgY29tcGFyZUJ5VmFsdWUgPSAoYTogVCB8IG51bGwsIGI6IFQgfCBudWxsKSA9PiBhID09PSBiO1xuXG4gIGhhbmRsZUNoYW5nZSh2YWx1ZTogVCB8IG51bGwpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIGJsdXIoKTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxufVxuIiwiPHNlbGVjdFxuICBjbGFzcz1cIm1iLXNlbGVjdFwiXG4gIFtuZ0NsYXNzXT1cIlsnbWItc2VsZWN0LS0nICsgc2l6ZSwgaW52YWxpZCA/ICdtYi1zZWxlY3QtLWludmFsaWQnIDogJyddXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NvbXBhcmVXaXRoXT1cImNvbXBhcmVCeVZhbHVlXCJcbiAgW25nTW9kZWxdPVwidmFsdWVcIlxuICAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50KVwiXG4gIChibHVyKT1cImJsdXIoKVwiPlxuICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIj57eyBlZmZlY3RpdmVQbGFjZWhvbGRlciB9fTwvb3B0aW9uPlxuICA8b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIG9wdGlvbnNcIiBbbmdWYWx1ZV09XCJpdGVtLnZhbHVlXCIgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIj5cbiAgICB7eyBpdGVtLmxhYmVsIH19XG4gIDwvb3B0aW9uPlxuPC9zZWxlY3Q+XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class MbSkeletonComponent {
4
+ width = '100%';
5
+ height = '1rem';
6
+ radius = 'var(--mb-radius-md)';
7
+ hostClass = 'mb-skeleton-host';
8
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbSkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MbSkeletonComponent, isStandalone: true, selector: "mb-skeleton", inputs: { width: "width", height: "height", radius: "radius" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<span class=\"mb-skeleton\" [style.width]=\"width\" [style.height]=\"height\" [style.border-radius]=\"radius\"></span>\n", styles: [":host{display:block}.mb-skeleton{display:block;background:linear-gradient(90deg,var(--mb-color-surface),var(--mb-color-border),var(--mb-color-surface));background-size:200% 100%;animation:mb-skeleton 1.2s ease-in-out infinite}@keyframes mb-skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbSkeletonComponent, decorators: [{
12
+ type: Component,
13
+ args: [{ selector: 'mb-skeleton', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"mb-skeleton\" [style.width]=\"width\" [style.height]=\"height\" [style.border-radius]=\"radius\"></span>\n", styles: [":host{display:block}.mb-skeleton{display:block;background:linear-gradient(90deg,var(--mb-color-surface),var(--mb-color-border),var(--mb-color-surface));background-size:200% 100%;animation:mb-skeleton 1.2s ease-in-out infinite}@keyframes mb-skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}\n"] }]
14
+ }], propDecorators: { width: [{
15
+ type: Input
16
+ }], height: [{
17
+ type: Input
18
+ }], radius: [{
19
+ type: Input
20
+ }], hostClass: [{
21
+ type: HostBinding,
22
+ args: ['class']
23
+ }] } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItc2tlbGV0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9za2VsZXRvbi9tYi1za2VsZXRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NrZWxldG9uL21iLXNrZWxldG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFRdkYsTUFBTSxPQUFPLG1CQUFtQjtJQUNyQixLQUFLLEdBQUcsTUFBTSxDQUFDO0lBQ2YsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUNoQixNQUFNLEdBQUcscUJBQXFCLENBQUM7SUFDbEIsU0FBUyxHQUFHLGtCQUFrQixDQUFDO3dHQUoxQyxtQkFBbUI7NEZBQW5CLG1CQUFtQiw0TENSaEMsMEhBQ0E7OzRGRE9hLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxhQUFhLGNBQ1gsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDZ0IsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYi1za2VsZXRvbicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYi1za2VsZXRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tYi1za2VsZXRvbi5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYlNrZWxldG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgd2lkdGggPSAnMTAwJSc7XG4gIEBJbnB1dCgpIGhlaWdodCA9ICcxcmVtJztcbiAgQElucHV0KCkgcmFkaXVzID0gJ3ZhcigtLW1iLXJhZGl1cy1tZCknO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgaG9zdENsYXNzID0gJ21iLXNrZWxldG9uLWhvc3QnO1xufVxuIiwiPHNwYW4gY2xhc3M9XCJtYi1za2VsZXRvblwiIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0XCIgW3N0eWxlLmJvcmRlci1yYWRpdXNdPVwicmFkaXVzXCI+PC9zcGFuPlxuIl19
@@ -0,0 +1,21 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class MbSpinnerComponent {
4
+ size = 'md';
5
+ label = 'Loading';
6
+ hostClass = 'mb-spinner-host';
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MbSpinnerComponent, isStandalone: true, selector: "mb-spinner", inputs: { size: "size", label: "label" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<span class=\"mb-spinner\" [class]=\"'mb-spinner mb-spinner--' + size\" role=\"status\" [attr.aria-label]=\"label\"></span>\n", styles: [":host{display:inline-flex}.mb-spinner{inline-size:1.35rem;block-size:1.35rem;border-radius:999px;border:2px solid var(--mb-color-border);border-block-start-color:var(--mb-color-primary);animation:mb-spin .75s linear infinite}.mb-spinner--sm{inline-size:1rem;block-size:1rem;border-width:2px}.mb-spinner--lg{inline-size:2rem;block-size:2rem;border-width:3px}@keyframes mb-spin{to{transform:rotate(360deg)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbSpinnerComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'mb-spinner', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<span class=\"mb-spinner\" [class]=\"'mb-spinner mb-spinner--' + size\" role=\"status\" [attr.aria-label]=\"label\"></span>\n", styles: [":host{display:inline-flex}.mb-spinner{inline-size:1.35rem;block-size:1.35rem;border-radius:999px;border:2px solid var(--mb-color-border);border-block-start-color:var(--mb-color-primary);animation:mb-spin .75s linear infinite}.mb-spinner--sm{inline-size:1rem;block-size:1rem;border-width:2px}.mb-spinner--lg{inline-size:2rem;block-size:2rem;border-width:3px}@keyframes mb-spin{to{transform:rotate(360deg)}}\n"] }]
13
+ }], propDecorators: { size: [{
14
+ type: Input
15
+ }], label: [{
16
+ type: Input
17
+ }], hostClass: [{
18
+ type: HostBinding,
19
+ args: ['class']
20
+ }] } });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItc3Bpbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NwaW5uZXIvbWItc3Bpbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NwaW5uZXIvbWItc3Bpbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBU3ZGLE1BQU0sT0FBTyxrQkFBa0I7SUFDcEIsSUFBSSxHQUFXLElBQUksQ0FBQztJQUNwQixLQUFLLEdBQUcsU0FBUyxDQUFDO0lBQ0wsU0FBUyxHQUFHLGlCQUFpQixDQUFDO3dHQUh6QyxrQkFBa0I7NEZBQWxCLGtCQUFrQixxS0NUL0IsK0hBQ0E7OzRGRFFhLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxtQkFHQyx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNnQixTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1iU2l6ZSB9IGZyb20gJy4uL3Rva2Vucy9tYi11aS1jb25maWcudG9rZW4nO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWItc3Bpbm5lcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiAnLi9tYi1zcGlubmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21iLXNwaW5uZXIuY29tcG9uZW50LnNjc3MnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWJTcGlubmVyQ29tcG9uZW50IHtcbiAgQElucHV0KCkgc2l6ZTogTWJTaXplID0gJ21kJztcbiAgQElucHV0KCkgbGFiZWwgPSAnTG9hZGluZyc7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBob3N0Q2xhc3MgPSAnbWItc3Bpbm5lci1ob3N0Jztcbn1cbiIsIjxzcGFuIGNsYXNzPVwibWItc3Bpbm5lclwiIFtjbGFzc109XCInbWItc3Bpbm5lciBtYi1zcGlubmVyLS0nICsgc2l6ZVwiIHJvbGU9XCJzdGF0dXNcIiBbYXR0ci5hcmlhLWxhYmVsXT1cImxhYmVsXCI+PC9zcGFuPlxuIl19
@@ -0,0 +1,59 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';
2
+ import { NgClass, NgIf } from '@angular/common';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ export class MbSwitchComponent {
6
+ label = '';
7
+ hint = '';
8
+ size = 'md';
9
+ disabled = false;
10
+ checkedChange = new EventEmitter();
11
+ hostClass = 'mb-switch-host';
12
+ checked = false;
13
+ onChange = () => undefined;
14
+ onTouched = () => undefined;
15
+ writeValue(value) { this.checked = !!value; }
16
+ registerOnChange(fn) { this.onChange = fn; }
17
+ registerOnTouched(fn) { this.onTouched = fn; }
18
+ setDisabledState(isDisabled) { this.disabled = isDisabled; }
19
+ toggle() {
20
+ if (this.disabled)
21
+ return;
22
+ this.checked = !this.checked;
23
+ this.onChange(this.checked);
24
+ this.checkedChange.emit(this.checked);
25
+ this.onTouched();
26
+ }
27
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
28
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MbSwitchComponent, isStandalone: true, selector: "mb-switch", inputs: { label: "label", hint: "hint", size: "size", disabled: "disabled" }, outputs: { checkedChange: "checkedChange" }, host: { properties: { "class": "this.hostClass" } }, providers: [
29
+ {
30
+ provide: NG_VALUE_ACCESSOR,
31
+ useExisting: forwardRef(() => MbSwitchComponent),
32
+ multi: true,
33
+ },
34
+ ], ngImport: i0, template: "<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", styles: [":host{display:inline-flex}.mb-switch{border:0;background:transparent;color:var(--mb-color-text);display:inline-flex;align-items:center;gap:.6rem;cursor:pointer;padding:0;font:inherit;text-align:start}.mb-switch__track{inline-size:2.45rem;block-size:1.35rem;border-radius:999px;background:var(--mb-color-border-strong);padding:.15rem;transition:var(--mb-transition-fast);display:flex;align-items:center}.mb-switch__thumb{inline-size:1.05rem;block-size:1.05rem;border-radius:999px;background:#fff;box-shadow:var(--mb-shadow-sm);transition:transform var(--mb-transition-fast)}.mb-switch--checked .mb-switch__track{background:var(--mb-color-primary)}.mb-switch--checked .mb-switch__thumb{transform:translate(1.1rem)}:host-context([dir=rtl]) .mb-switch--checked .mb-switch__thumb,:host-context(.mb-rtl) .mb-switch--checked .mb-switch__thumb{transform:translate(-1.1rem)}.mb-switch:focus-visible .mb-switch__track{box-shadow:var(--mb-focus-ring)}.mb-switch__content{display:grid;gap:.1rem}.mb-switch__label{font-size:.9rem;font-weight:700}.mb-switch__hint{font-size:.78rem;color:var(--mb-color-muted)}.mb-switch--sm .mb-switch__track{inline-size:2rem;block-size:1.1rem}.mb-switch--sm .mb-switch__thumb{inline-size:.82rem;block-size:.82rem}.mb-switch--sm.mb-switch--checked .mb-switch__thumb{transform:translate(.9rem)}:host-context([dir=rtl]) .mb-switch--sm.mb-switch--checked .mb-switch__thumb,:host-context(.mb-rtl) .mb-switch--sm.mb-switch--checked .mb-switch__thumb{transform:translate(-.9rem)}.mb-switch--lg .mb-switch__track{inline-size:2.9rem;block-size:1.55rem}.mb-switch--lg .mb-switch__thumb{inline-size:1.25rem;block-size:1.25rem}.mb-switch--lg.mb-switch--checked .mb-switch__thumb{transform:translate(1.35rem)}:host-context([dir=rtl]) .mb-switch--lg.mb-switch--checked .mb-switch__thumb,:host-context(.mb-rtl) .mb-switch--lg.mb-switch--checked .mb-switch__thumb{transform:translate(-1.35rem)}.mb-switch--disabled{opacity:.62;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbSwitchComponent, decorators: [{
37
+ type: Component,
38
+ args: [{ selector: 'mb-switch', standalone: true, imports: [NgClass, NgIf], providers: [
39
+ {
40
+ provide: NG_VALUE_ACCESSOR,
41
+ useExisting: forwardRef(() => MbSwitchComponent),
42
+ multi: true,
43
+ },
44
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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", styles: [":host{display:inline-flex}.mb-switch{border:0;background:transparent;color:var(--mb-color-text);display:inline-flex;align-items:center;gap:.6rem;cursor:pointer;padding:0;font:inherit;text-align:start}.mb-switch__track{inline-size:2.45rem;block-size:1.35rem;border-radius:999px;background:var(--mb-color-border-strong);padding:.15rem;transition:var(--mb-transition-fast);display:flex;align-items:center}.mb-switch__thumb{inline-size:1.05rem;block-size:1.05rem;border-radius:999px;background:#fff;box-shadow:var(--mb-shadow-sm);transition:transform var(--mb-transition-fast)}.mb-switch--checked .mb-switch__track{background:var(--mb-color-primary)}.mb-switch--checked .mb-switch__thumb{transform:translate(1.1rem)}:host-context([dir=rtl]) .mb-switch--checked .mb-switch__thumb,:host-context(.mb-rtl) .mb-switch--checked .mb-switch__thumb{transform:translate(-1.1rem)}.mb-switch:focus-visible .mb-switch__track{box-shadow:var(--mb-focus-ring)}.mb-switch__content{display:grid;gap:.1rem}.mb-switch__label{font-size:.9rem;font-weight:700}.mb-switch__hint{font-size:.78rem;color:var(--mb-color-muted)}.mb-switch--sm .mb-switch__track{inline-size:2rem;block-size:1.1rem}.mb-switch--sm .mb-switch__thumb{inline-size:.82rem;block-size:.82rem}.mb-switch--sm.mb-switch--checked .mb-switch__thumb{transform:translate(.9rem)}:host-context([dir=rtl]) .mb-switch--sm.mb-switch--checked .mb-switch__thumb,:host-context(.mb-rtl) .mb-switch--sm.mb-switch--checked .mb-switch__thumb{transform:translate(-.9rem)}.mb-switch--lg .mb-switch__track{inline-size:2.9rem;block-size:1.55rem}.mb-switch--lg .mb-switch__thumb{inline-size:1.25rem;block-size:1.25rem}.mb-switch--lg.mb-switch--checked .mb-switch__thumb{transform:translate(1.35rem)}:host-context([dir=rtl]) .mb-switch--lg.mb-switch--checked .mb-switch__thumb,:host-context(.mb-rtl) .mb-switch--lg.mb-switch--checked .mb-switch__thumb{transform:translate(-1.35rem)}.mb-switch--disabled{opacity:.62;cursor:not-allowed}\n"] }]
45
+ }], propDecorators: { label: [{
46
+ type: Input
47
+ }], hint: [{
48
+ type: Input
49
+ }], size: [{
50
+ type: Input
51
+ }], disabled: [{
52
+ type: Input
53
+ }], checkedChange: [{
54
+ type: Output
55
+ }], hostClass: [{
56
+ type: HostBinding,
57
+ args: ['class']
58
+ }] } });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItc3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc3dpdGNoL21iLXN3aXRjaC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3N3aXRjaC9tYi1zd2l0Y2guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pILE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQWtCekUsTUFBTSxPQUFPLGlCQUFpQjtJQUNuQixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNWLElBQUksR0FBVyxJQUFJLENBQUM7SUFDcEIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNoQixhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztJQUVoQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUM7SUFFbkQsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNSLFFBQVEsR0FBNkIsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ3JELFNBQVMsR0FBZSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFFaEQsVUFBVSxDQUFDLEtBQXFCLElBQVUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNuRSxnQkFBZ0IsQ0FBQyxFQUE0QixJQUFVLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RSxpQkFBaUIsQ0FBQyxFQUFjLElBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLGdCQUFnQixDQUFDLFVBQW1CLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBRTNFLE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7d0dBeEJVLGlCQUFpQjs0RkFBakIsaUJBQWlCLHdPQVRqQjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUM7Z0JBQ2hELEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRiwwQkNqQkgsbWxCQWdCQSwwOUREUlksT0FBTyxvRkFBRSxJQUFJOzs0RkFZWixpQkFBaUI7a0JBZjdCLFNBQVM7K0JBQ0UsV0FBVyxjQUNULElBQUksV0FDUCxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFHYjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzs0QkFDaEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFFZSxTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1iU2l6ZSB9IGZyb20gJy4uL3Rva2Vucy9tYi11aS1jb25maWcudG9rZW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYi1zd2l0Y2gnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdDbGFzcywgTmdJZl0sXG4gIHRlbXBsYXRlVXJsOiAnLi9tYi1zd2l0Y2guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbWItc3dpdGNoLmNvbXBvbmVudC5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYlN3aXRjaENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgTWJTd2l0Y2hDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIGhpbnQgPSAnJztcbiAgQElucHV0KCkgc2l6ZTogTWJTaXplID0gJ21kJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQE91dHB1dCgpIGNoZWNrZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGhvc3RDbGFzcyA9ICdtYi1zd2l0Y2gtaG9zdCc7XG5cbiAgY2hlY2tlZCA9IGZhbHNlO1xuICBwcml2YXRlIG9uQ2hhbmdlOiAodmFsdWU6IGJvb2xlYW4pID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4gdW5kZWZpbmVkO1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGJvb2xlYW4gfCBudWxsKTogdm9pZCB7IHRoaXMuY2hlY2tlZCA9ICEhdmFsdWU7IH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBib29sZWFuKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQgeyB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDsgfVxuXG4gIHRvZ2dsZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuY2hlY2tlZCA9ICF0aGlzLmNoZWNrZWQ7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmNoZWNrZWQpO1xuICAgIHRoaXMuY2hlY2tlZENoYW5nZS5lbWl0KHRoaXMuY2hlY2tlZCk7XG4gICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgfVxufVxuIiwiPGJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgY2xhc3M9XCJtYi1zd2l0Y2hcIlxuICBbY2xhc3MubWItc3dpdGNoLS1jaGVja2VkXT1cImNoZWNrZWRcIlxuICBbY2xhc3MubWItc3dpdGNoLS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gIFtuZ0NsYXNzXT1cIidtYi1zd2l0Y2gtLScgKyBzaXplXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgcm9sZT1cInN3aXRjaFwiXG4gIFthdHRyLmFyaWEtY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgKGNsaWNrKT1cInRvZ2dsZSgpXCI+XG4gIDxzcGFuIGNsYXNzPVwibWItc3dpdGNoX190cmFja1wiPjxzcGFuIGNsYXNzPVwibWItc3dpdGNoX190aHVtYlwiPjwvc3Bhbj48L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwibWItc3dpdGNoX19jb250ZW50XCIgKm5nSWY9XCJsYWJlbCB8fCBoaW50XCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtYi1zd2l0Y2hfX2xhYmVsXCIgKm5nSWY9XCJsYWJlbFwiPnt7IGxhYmVsIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwibWItc3dpdGNoX19oaW50XCIgKm5nSWY9XCJoaW50XCI+e3sgaGludCB9fTwvc3Bhbj5cbiAgPC9zcGFuPlxuPC9idXR0b24+XG4iXX0=
@@ -0,0 +1,31 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output } from '@angular/core';
2
+ import { NgFor, NgIf } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ export class MbTabsComponent {
5
+ tabs = [];
6
+ activeId = '';
7
+ variant = 'line';
8
+ activeIdChange = new EventEmitter();
9
+ hostClass = 'mb-tabs-host';
10
+ select(tab) { if (!tab.disabled)
11
+ this.activeIdChange.emit(tab.id); }
12
+ trackById(_, item) { return item.id; }
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MbTabsComponent, isStandalone: true, selector: "mb-tabs", inputs: { tabs: "tabs", activeId: "activeId", variant: "variant" }, outputs: { activeIdChange: "activeIdChange" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<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", styles: [".mb-tabs{display:flex;gap:.25rem;border-block-end:1px solid var(--mb-color-border);overflow-x:auto}.mb-tabs__tab{border:0;background:transparent;color:var(--mb-color-muted);font:inherit;cursor:pointer;padding:.75rem 1rem;border-block-end:2px solid transparent;display:inline-flex;gap:.45rem;align-items:center;font-weight:700;white-space:nowrap}.mb-tabs__tab--active{color:var(--mb-color-primary);border-block-end-color:var(--mb-color-primary)}.mb-tabs__tab:disabled{opacity:.55;cursor:not-allowed}.mb-tabs__badge{background:var(--mb-color-surface);border:1px solid var(--mb-color-border);border-radius:999px;padding:.05rem .38rem;font-size:.72rem}.mb-tabs--pills{border:0;gap:.4rem}.mb-tabs--pills .mb-tabs__tab{border:1px solid var(--mb-color-border);border-radius:999px;padding:.5rem .85rem}.mb-tabs--pills .mb-tabs__tab--active{background:var(--mb-color-primary);color:#fff;border-color:var(--mb-color-primary)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbTabsComponent, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: 'mb-tabs', standalone: true, imports: [NgFor, NgIf], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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", styles: [".mb-tabs{display:flex;gap:.25rem;border-block-end:1px solid var(--mb-color-border);overflow-x:auto}.mb-tabs__tab{border:0;background:transparent;color:var(--mb-color-muted);font:inherit;cursor:pointer;padding:.75rem 1rem;border-block-end:2px solid transparent;display:inline-flex;gap:.45rem;align-items:center;font-weight:700;white-space:nowrap}.mb-tabs__tab--active{color:var(--mb-color-primary);border-block-end-color:var(--mb-color-primary)}.mb-tabs__tab:disabled{opacity:.55;cursor:not-allowed}.mb-tabs__badge{background:var(--mb-color-surface);border:1px solid var(--mb-color-border);border-radius:999px;padding:.05rem .38rem;font-size:.72rem}.mb-tabs--pills{border:0;gap:.4rem}.mb-tabs--pills .mb-tabs__tab{border:1px solid var(--mb-color-border);border-radius:999px;padding:.5rem .85rem}.mb-tabs--pills .mb-tabs__tab--active{background:var(--mb-color-primary);color:#fff;border-color:var(--mb-color-primary)}\n"] }]
19
+ }], propDecorators: { tabs: [{
20
+ type: Input
21
+ }], activeId: [{
22
+ type: Input
23
+ }], variant: [{
24
+ type: Input
25
+ }], activeIdChange: [{
26
+ type: Output
27
+ }], hostClass: [{
28
+ type: HostBinding,
29
+ args: ['class']
30
+ }] } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItdGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3RhYnMvbWItdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3RhYnMvbWItdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVU5QyxNQUFNLE9BQU8sZUFBZTtJQUNqQixJQUFJLEdBQWdCLEVBQUUsQ0FBQztJQUN2QixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsT0FBTyxHQUFxQixNQUFNLENBQUM7SUFDbEMsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFDaEMsU0FBUyxHQUFHLGNBQWMsQ0FBQztJQUNqRCxNQUFNLENBQUMsR0FBYyxJQUFVLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUTtRQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsU0FBUyxDQUFDLENBQVMsRUFBRSxJQUFlLElBQVksT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQzt3R0FQdEQsZUFBZTs0RkFBZixlQUFlLDJPQ1g1Qiw0aEJBY0EsKzhCRFJZLEtBQUssbUhBQUUsSUFBSTs7NEZBS1YsZUFBZTtrQkFSM0IsU0FBUzsrQkFDRSxTQUFTLGNBQ1AsSUFBSSxXQUNQLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxtQkFHTCx1QkFBdUIsQ0FBQyxNQUFNOzhCQUd0QyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDZSxTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5leHBvcnQgaW50ZXJmYWNlIE1iVGFiSXRlbSB7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IGRpc2FibGVkPzogYm9vbGVhbjsgYmFkZ2U/OiBzdHJpbmcgfCBudW1iZXI7IH1cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21iLXRhYnMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbTmdGb3IsIE5nSWZdLFxuICB0ZW1wbGF0ZVVybDogJy4vbWItdGFicy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9tYi10YWJzLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1iVGFic0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRhYnM6IE1iVGFiSXRlbVtdID0gW107XG4gIEBJbnB1dCgpIGFjdGl2ZUlkID0gJyc7XG4gIEBJbnB1dCgpIHZhcmlhbnQ6ICdsaW5lJyB8ICdwaWxscycgPSAnbGluZSc7XG4gIEBPdXRwdXQoKSBhY3RpdmVJZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgaG9zdENsYXNzID0gJ21iLXRhYnMtaG9zdCc7XG4gIHNlbGVjdCh0YWI6IE1iVGFiSXRlbSk6IHZvaWQgeyBpZiAoIXRhYi5kaXNhYmxlZCkgdGhpcy5hY3RpdmVJZENoYW5nZS5lbWl0KHRhYi5pZCk7IH1cbiAgdHJhY2tCeUlkKF86IG51bWJlciwgaXRlbTogTWJUYWJJdGVtKTogc3RyaW5nIHsgcmV0dXJuIGl0ZW0uaWQ7IH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYi10YWJzXCIgW2NsYXNzLm1iLXRhYnMtLXBpbGxzXT1cInZhcmlhbnQgPT09ICdwaWxscydcIiByb2xlPVwidGFibGlzdFwiPlxuICA8YnV0dG9uXG4gICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyB0cmFja0J5OiB0cmFja0J5SWRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIGNsYXNzPVwibWItdGFic19fdGFiXCJcbiAgICByb2xlPVwidGFiXCJcbiAgICBbY2xhc3MubWItdGFic19fdGFiLS1hY3RpdmVdPVwidGFiLmlkID09PSBhY3RpdmVJZFwiXG4gICAgW2Rpc2FibGVkXT1cInRhYi5kaXNhYmxlZFwiXG4gICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJ0YWIuaWQgPT09IGFjdGl2ZUlkXCJcbiAgICAoY2xpY2spPVwic2VsZWN0KHRhYilcIj5cbiAgICA8c3Bhbj57eyB0YWIubGFiZWwgfX08L3NwYW4+XG4gICAgPHNwYW4gKm5nSWY9XCJ0YWIuYmFkZ2UgIT09IHVuZGVmaW5lZFwiIGNsYXNzPVwibWItdGFic19fYmFkZ2VcIj57eyB0YWIuYmFkZ2UgfX08L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,83 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, HostBinding, Input, Output, ViewChild } from '@angular/core';
2
+ import { NgClass } from '@angular/common';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ export class MbTextareaComponent {
6
+ placeholder = '';
7
+ rows = 4;
8
+ size = 'md';
9
+ disabled = false;
10
+ readonly = false;
11
+ invalid = false;
12
+ autoResize = false;
13
+ maxLength;
14
+ valueChange = new EventEmitter();
15
+ textarea;
16
+ hostClass = 'mb-textarea-host';
17
+ value = '';
18
+ onChange = () => undefined;
19
+ onTouched = () => undefined;
20
+ writeValue(value) { this.value = value ?? ''; }
21
+ registerOnChange(fn) { this.onChange = fn; }
22
+ registerOnTouched(fn) { this.onTouched = fn; }
23
+ setDisabledState(isDisabled) { this.disabled = isDisabled; }
24
+ onInput(event) {
25
+ const next = event.target.value;
26
+ this.value = next;
27
+ this.onChange(next);
28
+ this.valueChange.emit(next);
29
+ if (this.autoResize)
30
+ this.resize();
31
+ }
32
+ blur() { this.onTouched(); }
33
+ resize() {
34
+ const el = this.textarea?.nativeElement;
35
+ if (!el)
36
+ return;
37
+ el.style.height = 'auto';
38
+ el.style.height = `${el.scrollHeight}px`;
39
+ }
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbTextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
41
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MbTextareaComponent, isStandalone: true, selector: "mb-textarea", inputs: { placeholder: "placeholder", rows: "rows", size: "size", disabled: "disabled", readonly: "readonly", invalid: "invalid", autoResize: "autoResize", maxLength: "maxLength" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class": "this.hostClass" } }, providers: [
42
+ {
43
+ provide: NG_VALUE_ACCESSOR,
44
+ useExisting: forwardRef(() => MbTextareaComponent),
45
+ multi: true,
46
+ },
47
+ ], viewQueries: [{ propertyName: "textarea", first: true, predicate: ["textarea"], descendants: true }], ngImport: i0, template: "<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", styles: [":host{display:block}.mb-textarea{inline-size:100%;min-block-size:5rem;border:1px solid var(--mb-color-border);border-radius:var(--mb-radius-md);background:var(--mb-color-bg);color:var(--mb-color-text);font:inherit;padding:.72rem .85rem;resize:vertical;outline:none;transition:var(--mb-transition-fast)}.mb-textarea:focus{border-color:var(--mb-color-primary);box-shadow:var(--mb-focus-ring)}.mb-textarea::placeholder{color:var(--mb-color-muted)}.mb-textarea:disabled{opacity:.7;cursor:not-allowed;background:var(--mb-color-surface)}.mb-textarea--invalid{border-color:var(--mb-color-danger)}.mb-textarea--sm{padding:.55rem .7rem;font-size:.86rem}.mb-textarea--lg{padding:.9rem 1rem;font-size:1rem}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
48
+ }
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbTextareaComponent, decorators: [{
50
+ type: Component,
51
+ args: [{ selector: 'mb-textarea', standalone: true, imports: [NgClass], providers: [
52
+ {
53
+ provide: NG_VALUE_ACCESSOR,
54
+ useExisting: forwardRef(() => MbTextareaComponent),
55
+ multi: true,
56
+ },
57
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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", styles: [":host{display:block}.mb-textarea{inline-size:100%;min-block-size:5rem;border:1px solid var(--mb-color-border);border-radius:var(--mb-radius-md);background:var(--mb-color-bg);color:var(--mb-color-text);font:inherit;padding:.72rem .85rem;resize:vertical;outline:none;transition:var(--mb-transition-fast)}.mb-textarea:focus{border-color:var(--mb-color-primary);box-shadow:var(--mb-focus-ring)}.mb-textarea::placeholder{color:var(--mb-color-muted)}.mb-textarea:disabled{opacity:.7;cursor:not-allowed;background:var(--mb-color-surface)}.mb-textarea--invalid{border-color:var(--mb-color-danger)}.mb-textarea--sm{padding:.55rem .7rem;font-size:.86rem}.mb-textarea--lg{padding:.9rem 1rem;font-size:1rem}\n"] }]
58
+ }], propDecorators: { placeholder: [{
59
+ type: Input
60
+ }], rows: [{
61
+ type: Input
62
+ }], size: [{
63
+ type: Input
64
+ }], disabled: [{
65
+ type: Input
66
+ }], readonly: [{
67
+ type: Input
68
+ }], invalid: [{
69
+ type: Input
70
+ }], autoResize: [{
71
+ type: Input
72
+ }], maxLength: [{
73
+ type: Input
74
+ }], valueChange: [{
75
+ type: Output
76
+ }], textarea: [{
77
+ type: ViewChild,
78
+ args: ['textarea']
79
+ }], hostClass: [{
80
+ type: HostBinding,
81
+ args: ['class']
82
+ }] } });
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItdGV4dGFyZWEuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90ZXh0YXJlYS9tYi10ZXh0YXJlYS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3RleHRhcmVhL21iLXRleHRhcmVhLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFrQnpFLE1BQU0sT0FBTyxtQkFBbUI7SUFDckIsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUNqQixJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ1QsSUFBSSxHQUFXLElBQUksQ0FBQztJQUNwQixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQ25CLFNBQVMsQ0FBVTtJQUNsQixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUM1QixRQUFRLENBQW1DO0lBRTVDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQztJQUNyRCxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBRUgsUUFBUSxHQUE0QixHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDcEQsU0FBUyxHQUFlLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUVoRCxVQUFVLENBQUMsS0FBb0IsSUFBVSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLGdCQUFnQixDQUFDLEVBQTJCLElBQVUsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNFLGlCQUFpQixDQUFDLEVBQWMsSUFBVSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsZ0JBQWdCLENBQUMsVUFBbUIsSUFBVSxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFM0UsT0FBTyxDQUFDLEtBQVk7UUFDbEIsTUFBTSxJQUFJLEdBQUksS0FBSyxDQUFDLE1BQThCLENBQUMsS0FBSyxDQUFDO1FBQ3pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUIsSUFBSSxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxLQUFXLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFMUIsTUFBTTtRQUNaLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTztRQUNoQixFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDekIsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsWUFBWSxJQUFJLENBQUM7SUFDM0MsQ0FBQzt3R0F0Q1UsbUJBQW1COzRGQUFuQixtQkFBbUIsOFVBVG5CO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbEQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLGdJQ2pCSCwyV0FhQSxtdkJETFksT0FBTzs7NEZBWU4sbUJBQW1CO2tCQWYvQixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1AsQ0FBQyxPQUFPLENBQUMsYUFHUDt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0YsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07OEJBR3RDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNnQixRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBRUMsU0FBUztzQkFBOUIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1iU2l6ZSB9IGZyb20gJy4uL3Rva2Vucy9tYi11aS1jb25maWcudG9rZW4nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYi10ZXh0YXJlYScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ0NsYXNzXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21iLXRleHRhcmVhLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21iLXRleHRhcmVhLmNvbXBvbmVudC5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYlRleHRhcmVhQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNYlRleHRhcmVhQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICcnO1xuICBASW5wdXQoKSByb3dzID0gNDtcbiAgQElucHV0KCkgc2l6ZTogTWJTaXplID0gJ21kJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuICBASW5wdXQoKSBhdXRvUmVzaXplID0gZmFsc2U7XG4gIEBJbnB1dCgpIG1heExlbmd0aD86IG51bWJlcjtcbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBWaWV3Q2hpbGQoJ3RleHRhcmVhJykgdGV4dGFyZWE/OiBFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBob3N0Q2xhc3MgPSAnbWItdGV4dGFyZWEtaG9zdCc7XG4gIHZhbHVlID0gJyc7XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWQgPSAoKSA9PiB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4gdW5kZWZpbmVkO1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpOiB2b2lkIHsgdGhpcy52YWx1ZSA9IHZhbHVlID8/ICcnOyB9XG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQgeyB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDsgfVxuXG4gIG9uSW5wdXQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgbmV4dCA9IChldmVudC50YXJnZXQgYXMgSFRNTFRleHRBcmVhRWxlbWVudCkudmFsdWU7XG4gICAgdGhpcy52YWx1ZSA9IG5leHQ7XG4gICAgdGhpcy5vbkNoYW5nZShuZXh0KTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQobmV4dCk7XG4gICAgaWYgKHRoaXMuYXV0b1Jlc2l6ZSkgdGhpcy5yZXNpemUoKTtcbiAgfVxuXG4gIGJsdXIoKTogdm9pZCB7IHRoaXMub25Ub3VjaGVkKCk7IH1cblxuICBwcml2YXRlIHJlc2l6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMudGV4dGFyZWE/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCFlbCkgcmV0dXJuO1xuICAgIGVsLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICBlbC5zdHlsZS5oZWlnaHQgPSBgJHtlbC5zY3JvbGxIZWlnaHR9cHhgO1xuICB9XG59XG4iLCI8dGV4dGFyZWFcbiAgI3RleHRhcmVhXG4gIGNsYXNzPVwibWItdGV4dGFyZWFcIlxuICBbY2xhc3MubWItdGV4dGFyZWEtLWludmFsaWRdPVwiaW52YWxpZFwiXG4gIFtuZ0NsYXNzXT1cIidtYi10ZXh0YXJlYS0tJyArIHNpemVcIlxuICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICBbcm93c109XCJyb3dzXCJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcbiAgW21heExlbmd0aF09XCJtYXhMZW5ndGggPz8gbnVsbFwiXG4gIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIlxuICAoYmx1cik9XCJibHVyKClcIj48L3RleHRhcmVhPlxuIl19
@@ -0,0 +1,21 @@
1
+ import { AsyncPipe, NgClass, NgFor, NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
3
+ import { MB_UI_MESSAGES } from '../i18n/mb-ui-messages';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./mb-toast.service";
6
+ export class MbToastContainerComponent {
7
+ toastService;
8
+ messages = inject(MB_UI_MESSAGES);
9
+ toasts$;
10
+ constructor(toastService) {
11
+ this.toastService = toastService;
12
+ this.toasts$ = this.toastService.toasts$;
13
+ }
14
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbToastContainerComponent, deps: [{ token: i1.MbToastService }], target: i0.ɵɵFactoryTarget.Component });
15
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MbToastContainerComponent, isStandalone: true, selector: "mb-toast-container", ngImport: i0, template: "<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)\">\u00D7</button>\n </article>\n</div>\n", styles: [".mb-toast-container{position:fixed;inset-block-start:1rem;inset-inline-end:1rem;z-index:1100;display:flex;flex-direction:column;gap:.75rem;inline-size:min(24rem,100vw - 2rem);pointer-events:none}.mb-toast{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;border:1px solid var(--mb-color-border);border-inline-start:4px solid var(--mb-color-primary);background:var(--mb-color-surface-elevated);color:var(--mb-color-text);border-radius:var(--mb-radius-lg);box-shadow:var(--mb-shadow-md);padding:.875rem;pointer-events:auto}.mb-toast--success{border-inline-start-color:var(--mb-color-success)}.mb-toast--warning{border-inline-start-color:var(--mb-color-warning)}.mb-toast--danger{border-inline-start-color:var(--mb-color-danger)}.mb-toast__title{display:block;margin-block-end:.2rem;font-size:.875rem}.mb-toast__message{margin:0;color:var(--mb-color-muted);font-size:.8125rem}.mb-toast__close{border:0;background:transparent;color:var(--mb-color-muted);cursor:pointer;font-size:1.25rem;line-height:1}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbToastContainerComponent, decorators: [{
18
+ type: Component,
19
+ args: [{ selector: 'mb-toast-container', standalone: true, imports: [AsyncPipe, NgFor, NgIf, NgClass], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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)\">\u00D7</button>\n </article>\n</div>\n", styles: [".mb-toast-container{position:fixed;inset-block-start:1rem;inset-inline-end:1rem;z-index:1100;display:flex;flex-direction:column;gap:.75rem;inline-size:min(24rem,100vw - 2rem);pointer-events:none}.mb-toast{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;border:1px solid var(--mb-color-border);border-inline-start:4px solid var(--mb-color-primary);background:var(--mb-color-surface-elevated);color:var(--mb-color-text);border-radius:var(--mb-radius-lg);box-shadow:var(--mb-shadow-md);padding:.875rem;pointer-events:auto}.mb-toast--success{border-inline-start-color:var(--mb-color-success)}.mb-toast--warning{border-inline-start-color:var(--mb-color-warning)}.mb-toast--danger{border-inline-start-color:var(--mb-color-danger)}.mb-toast__title{display:block;margin-block-end:.2rem;font-size:.875rem}.mb-toast__message{margin:0;color:var(--mb-color-muted);font-size:.8125rem}.mb-toast__close{border:0;background:transparent;color:var(--mb-color-muted);cursor:pointer;font-size:1.25rem;line-height:1}\n"] }]
20
+ }], ctorParameters: () => [{ type: i1.MbToastService }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItdG9hc3QtY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9hc3QvbWItdG9hc3QtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9hc3QvbWItdG9hc3QtY29udGFpbmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQVd4RCxNQUFNLE9BQU8seUJBQXlCO0lBSWY7SUFIWixRQUFRLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2xDLE9BQU8sQ0FBQztJQUVqQixZQUFxQixZQUE0QjtRQUE1QixpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFDL0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztJQUMzQyxDQUFDO3dHQU5VLHlCQUF5Qjs0RkFBekIseUJBQXlCLDhFQ2J0QyxpbEJBWUEscWpDREpZLFNBQVMsOENBQUUsS0FBSyxtSEFBRSxJQUFJLDZGQUFFLE9BQU87OzRGQUs5Qix5QkFBeUI7a0JBUnJDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxtQkFHekIsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQl9VSV9NRVNTQUdFUyB9IGZyb20gJy4uL2kxOG4vbWItdWktbWVzc2FnZXMnO1xuaW1wb3J0IHsgTWJUb2FzdFNlcnZpY2UgfSBmcm9tICcuL21iLXRvYXN0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYi10b2FzdC1jb250YWluZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQXN5bmNQaXBlLCBOZ0ZvciwgTmdJZiwgTmdDbGFzc10sXG4gIHRlbXBsYXRlVXJsOiAnLi9tYi10b2FzdC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vbWItdG9hc3QtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1iVG9hc3RDb250YWluZXJDb21wb25lbnQge1xuICByZWFkb25seSBtZXNzYWdlcyA9IGluamVjdChNQl9VSV9NRVNTQUdFUyk7XG4gIHJlYWRvbmx5IHRvYXN0cyQ7XG5cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgdG9hc3RTZXJ2aWNlOiBNYlRvYXN0U2VydmljZSkge1xuICAgIHRoaXMudG9hc3RzJCA9IHRoaXMudG9hc3RTZXJ2aWNlLnRvYXN0cyQ7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtYi10b2FzdC1jb250YWluZXJcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIiBhcmlhLWF0b21pYz1cInRydWVcIj5cbiAgPGFydGljbGVcbiAgICAqbmdGb3I9XCJsZXQgdG9hc3Qgb2YgdG9hc3RzJCB8IGFzeW5jXCJcbiAgICBjbGFzcz1cIm1iLXRvYXN0XCJcbiAgICBbbmdDbGFzc109XCInbWItdG9hc3QtLScgKyB0b2FzdC52YXJpYW50XCI+XG4gICAgPGRpdiBjbGFzcz1cIm1iLXRvYXN0X19jb250ZW50XCI+XG4gICAgICA8c3Ryb25nICpuZ0lmPVwidG9hc3QudGl0bGVcIiBjbGFzcz1cIm1iLXRvYXN0X190aXRsZVwiPnt7IHRvYXN0LnRpdGxlIH19PC9zdHJvbmc+XG4gICAgICA8cCBjbGFzcz1cIm1iLXRvYXN0X19tZXNzYWdlXCI+e3sgdG9hc3QubWVzc2FnZSB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1iLXRvYXN0X19jbG9zZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwibWVzc2FnZXMuY29tbW9uLmNsb3NlXCIgKGNsaWNrKT1cInRvYXN0U2VydmljZS5kaXNtaXNzKHRvYXN0LmlkKVwiPsOXPC9idXR0b24+XG4gIDwvYXJ0aWNsZT5cbjwvZGl2PlxuIl19
@@ -0,0 +1,47 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class MbToastService {
5
+ toastsSubject = new BehaviorSubject([]);
6
+ toasts$ = this.toastsSubject.asObservable();
7
+ show(message, options = {}) {
8
+ const id = globalThis.crypto?.randomUUID?.() ?? `${Date.now()}-${Math.random()}`;
9
+ const toast = {
10
+ id,
11
+ message,
12
+ title: options.title,
13
+ variant: options.variant ?? 'info',
14
+ duration: options.duration ?? 4000,
15
+ };
16
+ this.toastsSubject.next([...this.toastsSubject.value, toast]);
17
+ if (toast.duration > 0) {
18
+ globalThis.setTimeout(() => this.dismiss(id), toast.duration);
19
+ }
20
+ return id;
21
+ }
22
+ success(message, title) {
23
+ return this.show(message, { title, variant: 'success' });
24
+ }
25
+ info(message, title) {
26
+ return this.show(message, { title, variant: 'info' });
27
+ }
28
+ warning(message, title) {
29
+ return this.show(message, { title, variant: 'warning' });
30
+ }
31
+ danger(message, title) {
32
+ return this.show(message, { title, variant: 'danger' });
33
+ }
34
+ dismiss(id) {
35
+ this.toastsSubject.next(this.toastsSubject.value.filter((toast) => toast.id !== id));
36
+ }
37
+ clear() {
38
+ this.toastsSubject.next([]);
39
+ }
40
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbToastService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
41
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbToastService, providedIn: 'root' });
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MbToastService, decorators: [{
44
+ type: Injectable,
45
+ args: [{ providedIn: 'root' }]
46
+ }] });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItdG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvdG9hc3QvbWItdG9hc3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBSXZDLE1BQU0sT0FBTyxjQUFjO0lBQ1IsYUFBYSxHQUFHLElBQUksZUFBZSxDQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQzNELE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBRXJELElBQUksQ0FBQyxPQUFlLEVBQUUsVUFBb0QsRUFBRTtRQUMxRSxNQUFNLEVBQUUsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDakYsTUFBTSxLQUFLLEdBQVk7WUFDckIsRUFBRTtZQUNGLE9BQU87WUFDUCxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7WUFDcEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksTUFBTTtZQUNsQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxJQUFJO1NBQ25DLENBQUM7UUFFRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUU5RCxJQUFJLEtBQUssQ0FBQyxRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdkIsVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWUsRUFBRSxLQUFjO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFlLEVBQUUsS0FBYztRQUNsQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZSxFQUFFLEtBQWM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQWUsRUFBRSxLQUFjO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUFVO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUIsQ0FBQzt3R0E3Q1UsY0FBYzs0R0FBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNYlRvYXN0LCBNYlRvYXN0VmFyaWFudCB9IGZyb20gJy4vbWItdG9hc3QudHlwZXMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1iVG9hc3RTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSB0b2FzdHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYlRvYXN0W10+KFtdKTtcbiAgcmVhZG9ubHkgdG9hc3RzJCA9IHRoaXMudG9hc3RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICBzaG93KG1lc3NhZ2U6IHN0cmluZywgb3B0aW9uczogUGFydGlhbDxPbWl0PE1iVG9hc3QsICdpZCcgfCAnbWVzc2FnZSc+PiA9IHt9KTogc3RyaW5nIHtcbiAgICBjb25zdCBpZCA9IGdsb2JhbFRoaXMuY3J5cHRvPy5yYW5kb21VVUlEPy4oKSA/PyBgJHtEYXRlLm5vdygpfS0ke01hdGgucmFuZG9tKCl9YDtcbiAgICBjb25zdCB0b2FzdDogTWJUb2FzdCA9IHtcbiAgICAgIGlkLFxuICAgICAgbWVzc2FnZSxcbiAgICAgIHRpdGxlOiBvcHRpb25zLnRpdGxlLFxuICAgICAgdmFyaWFudDogb3B0aW9ucy52YXJpYW50ID8/ICdpbmZvJyxcbiAgICAgIGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uID8/IDQwMDAsXG4gICAgfTtcblxuICAgIHRoaXMudG9hc3RzU3ViamVjdC5uZXh0KFsuLi50aGlzLnRvYXN0c1N1YmplY3QudmFsdWUsIHRvYXN0XSk7XG5cbiAgICBpZiAodG9hc3QuZHVyYXRpb24gPiAwKSB7XG4gICAgICBnbG9iYWxUaGlzLnNldFRpbWVvdXQoKCkgPT4gdGhpcy5kaXNtaXNzKGlkKSwgdG9hc3QuZHVyYXRpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIHN1Y2Nlc3MobWVzc2FnZTogc3RyaW5nLCB0aXRsZT86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdyhtZXNzYWdlLCB7IHRpdGxlLCB2YXJpYW50OiAnc3VjY2VzcycgfSk7XG4gIH1cblxuICBpbmZvKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnNob3cobWVzc2FnZSwgeyB0aXRsZSwgdmFyaWFudDogJ2luZm8nIH0pO1xuICB9XG5cbiAgd2FybmluZyhtZXNzYWdlOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zaG93KG1lc3NhZ2UsIHsgdGl0bGUsIHZhcmlhbnQ6ICd3YXJuaW5nJyB9KTtcbiAgfVxuXG4gIGRhbmdlcihtZXNzYWdlOiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zaG93KG1lc3NhZ2UsIHsgdGl0bGUsIHZhcmlhbnQ6ICdkYW5nZXInIH0pO1xuICB9XG5cbiAgZGlzbWlzcyhpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdHNTdWJqZWN0Lm5leHQodGhpcy50b2FzdHNTdWJqZWN0LnZhbHVlLmZpbHRlcigodG9hc3QpID0+IHRvYXN0LmlkICE9PSBpZCkpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy50b2FzdHNTdWJqZWN0Lm5leHQoW10pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItdG9hc3QudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3RvYXN0L21iLXRvYXN0LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBNYlRvYXN0VmFyaWFudCA9ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1iVG9hc3Qge1xuICBpZDogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xuICB2YXJpYW50OiBNYlRvYXN0VmFyaWFudDtcbiAgZHVyYXRpb246IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,11 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const MB_UI_DEFAULT_CONFIG = {
3
+ direction: 'ltr',
4
+ density: 'comfortable',
5
+ locale: 'en-US',
6
+ };
7
+ export const MB_UI_CONFIG = new InjectionToken('MB_UI_CONFIG', {
8
+ providedIn: 'root',
9
+ factory: () => MB_UI_DEFAULT_CONFIG,
10
+ });
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWItdWktY29uZmlnLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi90b2tlbnMvbWItdWktY29uZmlnLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFhL0MsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQWU7SUFDOUMsU0FBUyxFQUFFLEtBQUs7SUFDaEIsT0FBTyxFQUFFLGFBQWE7SUFDdEIsTUFBTSxFQUFFLE9BQU87Q0FDaEIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBYSxjQUFjLEVBQUU7SUFDekUsVUFBVSxFQUFFLE1BQU07SUFDbEIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLG9CQUFvQjtDQUNwQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWJVaUxvY2FsZSB9IGZyb20gJy4uL2kxOG4vbWItdWktbG9jYWxlJztcblxuZXhwb3J0IHR5cGUgTWJEaXJlY3Rpb24gPSAnbHRyJyB8ICdydGwnO1xuZXhwb3J0IHR5cGUgTWJTaXplID0gJ3NtJyB8ICdtZCcgfCAnbGcnO1xuZXhwb3J0IHR5cGUgTWJEZW5zaXR5ID0gJ2NvbXBhY3QnIHwgJ2NvbWZvcnRhYmxlJyB8ICdzcGFjaW91cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWJVaUNvbmZpZyB7XG4gIGRpcmVjdGlvbjogTWJEaXJlY3Rpb247XG4gIGRlbnNpdHk6IE1iRGVuc2l0eTtcbiAgbG9jYWxlOiBNYlVpTG9jYWxlO1xufVxuXG5leHBvcnQgY29uc3QgTUJfVUlfREVGQVVMVF9DT05GSUc6IE1iVWlDb25maWcgPSB7XG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIGRlbnNpdHk6ICdjb21mb3J0YWJsZScsXG4gIGxvY2FsZTogJ2VuLVVTJyxcbn07XG5cbmV4cG9ydCBjb25zdCBNQl9VSV9DT05GSUcgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWJVaUNvbmZpZz4oJ01CX1VJX0NPTkZJRycsIHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICBmYWN0b3J5OiAoKSA9PiBNQl9VSV9ERUZBVUxUX0NPTkZJRyxcbn0pO1xuIl19