@mesgflow/ui-kit 0.6.0 → 0.7.0
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/README.md +56 -5
- package/fesm2022/mesgflow-ui-kit-accordion.mjs +3 -2
- package/fesm2022/mesgflow-ui-kit-accordion.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-agenda.mjs +208 -0
- package/fesm2022/mesgflow-ui-kit-agenda.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs +37 -0
- package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-blocks.mjs +207 -0
- package/fesm2022/mesgflow-ui-kit-blocks.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-box-input.mjs +2 -2
- package/fesm2022/mesgflow-ui-kit-box-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-button.mjs +188 -242
- package/fesm2022/mesgflow-ui-kit-button.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-card.mjs +37 -16
- package/fesm2022/mesgflow-ui-kit-card.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-carousel.mjs +308 -0
- package/fesm2022/mesgflow-ui-kit-carousel.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-checkbox.mjs +16 -21
- package/fesm2022/mesgflow-ui-kit-checkbox.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-chip.mjs +2 -2
- package/fesm2022/mesgflow-ui-kit-chip.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-code-block.mjs +9 -5
- package/fesm2022/mesgflow-ui-kit-code-block.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-color-picker.mjs +6 -4
- package/fesm2022/mesgflow-ui-kit-color-picker.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-combobox.mjs +145 -65
- package/fesm2022/mesgflow-ui-kit-combobox.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-context-menu.mjs +4 -6
- package/fesm2022/mesgflow-ui-kit-context-menu.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-core.mjs +441 -128
- package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-countdown.mjs +149 -0
- package/fesm2022/mesgflow-ui-kit-countdown.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-date-picker.mjs +131 -10
- package/fesm2022/mesgflow-ui-kit-date-picker.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-dialog.mjs +117 -34
- package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-drawer.mjs +109 -0
- package/fesm2022/mesgflow-ui-kit-drawer.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-dropzone.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-dropzone.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-field.mjs +53 -12
- package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-file-upload.mjs +356 -0
- package/fesm2022/mesgflow-ui-kit-file-upload.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +131 -0
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-icon.mjs +6 -1
- package/fesm2022/mesgflow-ui-kit-icon.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-icons-lucide.mjs +371 -0
- package/fesm2022/mesgflow-ui-kit-icons-lucide.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-inline-edit.mjs +279 -0
- package/fesm2022/mesgflow-ui-kit-inline-edit.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-input.mjs +147 -4
- package/fesm2022/mesgflow-ui-kit-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-lightbox.mjs +299 -0
- package/fesm2022/mesgflow-ui-kit-lightbox.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-link.mjs +2 -2
- package/fesm2022/mesgflow-ui-kit-link.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-listbox.mjs +151 -0
- package/fesm2022/mesgflow-ui-kit-listbox.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-mention.mjs +283 -0
- package/fesm2022/mesgflow-ui-kit-mention.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-menu.mjs +169 -5
- package/fesm2022/mesgflow-ui-kit-menu.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-nav-menu.mjs +276 -0
- package/fesm2022/mesgflow-ui-kit-nav-menu.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-notification-center.mjs +281 -0
- package/fesm2022/mesgflow-ui-kit-notification-center.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-number-input.mjs +7 -4
- package/fesm2022/mesgflow-ui-kit-number-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-pagination.mjs +4 -3
- package/fesm2022/mesgflow-ui-kit-pagination.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-password-input.mjs +7 -2
- package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-popover.mjs +9 -49
- package/fesm2022/mesgflow-ui-kit-popover.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-progress.mjs +162 -21
- package/fesm2022/mesgflow-ui-kit-progress.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-radio.mjs +4 -6
- package/fesm2022/mesgflow-ui-kit-radio.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-rating.mjs +2 -2
- package/fesm2022/mesgflow-ui-kit-rating.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-search-input.mjs +9 -5
- package/fesm2022/mesgflow-ui-kit-search-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +12 -8
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-select.mjs +3 -2
- package/fesm2022/mesgflow-ui-kit-select.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-sidebar.mjs +16 -13
- package/fesm2022/mesgflow-ui-kit-sidebar.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-skeleton.mjs +4 -3
- package/fesm2022/mesgflow-ui-kit-skeleton.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-slider.mjs +250 -3
- package/fesm2022/mesgflow-ui-kit-slider.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-sortable.mjs +526 -0
- package/fesm2022/mesgflow-ui-kit-sortable.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-spinner.mjs +42 -13
- package/fesm2022/mesgflow-ui-kit-spinner.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-split-button.mjs +205 -0
- package/fesm2022/mesgflow-ui-kit-split-button.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-splitter.mjs +210 -3
- package/fesm2022/mesgflow-ui-kit-splitter.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +11 -4
- package/fesm2022/mesgflow-ui-kit-stat-tile.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-stepper.mjs +167 -60
- package/fesm2022/mesgflow-ui-kit-stepper.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-switch.mjs +2 -2
- package/fesm2022/mesgflow-ui-kit-switch.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-table.mjs +16 -10
- package/fesm2022/mesgflow-ui-kit-table.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-tabs.mjs +410 -169
- package/fesm2022/mesgflow-ui-kit-tabs.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-tag-input.mjs +7 -2
- package/fesm2022/mesgflow-ui-kit-tag-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-theming.mjs +4 -4
- package/fesm2022/mesgflow-ui-kit-theming.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-time-picker.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-time-picker.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-toast.mjs +113 -30
- package/fesm2022/mesgflow-ui-kit-toast.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-toggle.mjs +3 -2
- package/fesm2022/mesgflow-ui-kit-toggle.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-toolbar.mjs +4 -2
- package/fesm2022/mesgflow-ui-kit-toolbar.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-tooltip.mjs +73 -50
- package/fesm2022/mesgflow-ui-kit-tooltip.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-tour.mjs +8 -20
- package/fesm2022/mesgflow-ui-kit-tour.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-transfer-list.mjs +288 -0
- package/fesm2022/mesgflow-ui-kit-transfer-list.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tree.mjs +1 -1
- package/fesm2022/mesgflow-ui-kit-tree.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-virtual-list.mjs +109 -0
- package/fesm2022/mesgflow-ui-kit-virtual-list.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit.mjs +92 -12836
- package/fesm2022/mesgflow-ui-kit.mjs.map +1 -1
- package/package.json +87 -3
- package/schematics/collection.json +10 -0
- package/schematics/migration.json +10 -0
- package/schematics/migrations/v0-7.cjs +70 -0
- package/schematics/ng-add/index.cjs +234 -0
- package/schematics/ng-add/schema.json +43 -0
- package/tokens/color.css +96 -0
- package/tokens/controls.css +145 -0
- package/tokens/elevation.css +62 -6
- package/tokens/motion.css +304 -66
- package/tokens/radius.css +14 -0
- package/tokens.css +1 -0
- package/tokens.json +1583 -0
- package/types/mesgflow-ui-kit-agenda.d.ts +49 -0
- package/types/mesgflow-ui-kit-aspect-ratio.d.ts +18 -0
- package/types/mesgflow-ui-kit-blocks.d.ts +128 -0
- package/types/mesgflow-ui-kit-button.d.ts +23 -38
- package/types/mesgflow-ui-kit-card.d.ts +26 -16
- package/types/mesgflow-ui-kit-carousel.d.ts +51 -0
- package/types/mesgflow-ui-kit-checkbox.d.ts +8 -5
- package/types/mesgflow-ui-kit-code-block.d.ts +4 -1
- package/types/mesgflow-ui-kit-combobox.d.ts +47 -22
- package/types/mesgflow-ui-kit-core.d.ts +271 -21
- package/types/mesgflow-ui-kit-countdown.d.ts +47 -0
- package/types/mesgflow-ui-kit-date-picker.d.ts +31 -1
- package/types/mesgflow-ui-kit-dialog.d.ts +29 -6
- package/types/mesgflow-ui-kit-drawer.d.ts +45 -0
- package/types/mesgflow-ui-kit-field.d.ts +17 -8
- package/types/mesgflow-ui-kit-file-upload.d.ts +64 -0
- package/types/mesgflow-ui-kit-hover-card.d.ts +2 -2
- package/types/mesgflow-ui-kit-icons-lucide.d.ts +27 -0
- package/types/mesgflow-ui-kit-inline-edit.d.ts +42 -0
- package/types/mesgflow-ui-kit-input.d.ts +64 -2
- package/types/mesgflow-ui-kit-lightbox.d.ts +54 -0
- package/types/mesgflow-ui-kit-listbox.d.ts +30 -0
- package/types/mesgflow-ui-kit-mention.d.ts +59 -0
- package/types/mesgflow-ui-kit-menu.d.ts +41 -2
- package/types/mesgflow-ui-kit-nav-menu.d.ts +58 -0
- package/types/mesgflow-ui-kit-notification-center.d.ts +41 -0
- package/types/mesgflow-ui-kit-number-input.d.ts +3 -1
- package/types/mesgflow-ui-kit-password-input.d.ts +3 -1
- package/types/mesgflow-ui-kit-popover.d.ts +13 -5
- package/types/mesgflow-ui-kit-progress.d.ts +33 -12
- package/types/mesgflow-ui-kit-radio.d.ts +2 -2
- package/types/mesgflow-ui-kit-search-input.d.ts +3 -1
- package/types/mesgflow-ui-kit-segmented-control.d.ts +4 -0
- package/types/mesgflow-ui-kit-sidebar.d.ts +1 -1
- package/types/mesgflow-ui-kit-slider.d.ts +60 -1
- package/types/mesgflow-ui-kit-sortable.d.ts +103 -0
- package/types/mesgflow-ui-kit-spinner.d.ts +5 -8
- package/types/mesgflow-ui-kit-split-button.d.ts +47 -0
- package/types/mesgflow-ui-kit-splitter.d.ts +64 -1
- package/types/mesgflow-ui-kit-stat-tile.d.ts +3 -0
- package/types/mesgflow-ui-kit-stepper.d.ts +54 -32
- package/types/mesgflow-ui-kit-table.d.ts +2 -0
- package/types/mesgflow-ui-kit-tabs.d.ts +193 -93
- package/types/mesgflow-ui-kit-tag-input.d.ts +3 -1
- package/types/mesgflow-ui-kit-toast.d.ts +48 -22
- package/types/mesgflow-ui-kit-tooltip.d.ts +15 -12
- package/types/mesgflow-ui-kit-transfer-list.d.ts +34 -0
- package/types/mesgflow-ui-kit-virtual-list.d.ts +35 -0
- package/types/mesgflow-ui-kit.d.ts +87 -5444
|
@@ -1,26 +1,42 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import * as i1 from '@angular/aria/tabs';
|
|
3
3
|
import { TabList as TabList$1, TabPanel as TabPanel$1 } from '@angular/aria/tabs';
|
|
4
|
+
import * as _mesgflow_ui_kit_core from '@mesgflow/ui-kit/core';
|
|
5
|
+
import { MfSize } from '@mesgflow/ui-kit/core';
|
|
4
6
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
5
7
|
import { VariantProps } from 'class-variance-authority';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
|
-
* `<button mfTab value="genel">Genel</button>`
|
|
9
|
-
* konur. ARIA/klavye/seçim davranışı `@angular/aria/tabs`'ın `Tab`
|
|
10
|
-
* pattern'inden `hostDirectives` ile geliyor (bkz. `tabs.ts` üstündeki not);
|
|
11
|
-
* bu directive sadece görsel katmanı ekliyor. `value`/`disabled`/`id`
|
|
12
|
-
* girdileri `hostDirectives`'in `inputs` listesiyle dışarı açıldı — tüketici
|
|
13
|
-
* doğrudan `[value]`/`[disabled]` bağlar, `ngTab` attribute'unu YAZMAZ.
|
|
10
|
+
* `<button mfTab value="genel"><span mfIcon [size]="16">tune</span>Genel <span mfTabCount>3</span></button>`
|
|
14
11
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
12
|
+
* ARIA/klavye/seçim `@angular/aria/tabs`'ın `Tab`'ından `hostDirectives` ile
|
|
13
|
+
* gelir; `value`/`disabled`/`id` doğrudan bağlanır (`ngTab` YAZILMAZ). Görünüm
|
|
14
|
+
* (varyant, boyut, yön, stretch) ebeveyn `mf-tab-list`'ten `inject()` ile
|
|
15
|
+
* okunur — sekme kendi görünüm girdisini TAŞIMAZ, tek kaynak liste.
|
|
17
16
|
*/
|
|
18
17
|
declare class Tab {
|
|
19
18
|
private readonly ariaTab;
|
|
20
19
|
private readonly tabList;
|
|
20
|
+
/** `TabCount` seçili tonu için okur. */
|
|
21
|
+
readonly selected: _angular_core.Signal<boolean>;
|
|
21
22
|
protected readonly classes: _angular_core.Signal<string>;
|
|
22
23
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tab, never>;
|
|
23
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Tab, "button[mfTab]",
|
|
24
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Tab, "button[mfTab]", ["mfTab"], {}, {}, never, never, true, [{ directive: typeof i1.Tab; inputs: { "value": "value"; "disabled": "disabled"; "id": "id"; }; outputs: {}; }]>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* `<button mfTab value="inbox">Gelen <span mfTabCount>12</span></button>`
|
|
29
|
+
*
|
|
30
|
+
* Sekme içi sayaç rozeti — seçili sekmede tonlanır (`pills`'te hap zaten ton
|
|
31
|
+
* olduğu için yüzey rengine döner). Görsel bir ektir: ekran okuyucu sayıyı
|
|
32
|
+
* sekme adının parçası olarak okur ("Gelen 12").
|
|
33
|
+
*/
|
|
34
|
+
declare class TabCount {
|
|
35
|
+
private readonly tab;
|
|
36
|
+
private readonly tabList;
|
|
37
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
38
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabCount, never>;
|
|
39
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TabCount, "span[mfTabCount]", ["mfTabCount"], {}, {}, never, never, true, never>;
|
|
24
40
|
}
|
|
25
41
|
|
|
26
42
|
/**
|
|
@@ -54,99 +70,171 @@ declare class TabScroller {
|
|
|
54
70
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TabScroller, "[mfTabScroller]", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
55
71
|
}
|
|
56
72
|
|
|
57
|
-
|
|
73
|
+
/**
|
|
74
|
+
* - `underline` — hairline ray + kayan 2px çizgi (varsayılan; sayfa içi gezinme).
|
|
75
|
+
* - `pills` — seçili sekmenin arkasında kayan yumuşak ton hap (araç/filtre çubukları).
|
|
76
|
+
* - `segmented` — kapalı ray + kayan yükseltilmiş parça (görünüm değiştiriciler).
|
|
77
|
+
* - `card` — ayrık kutu sekmeler; seçili kutunun kenarında 2px çizgi (belge/düzenleyici).
|
|
78
|
+
*/
|
|
79
|
+
type TabsVariant = 'underline' | 'pills' | 'segmented' | 'card';
|
|
58
80
|
type TabsOrientation = 'horizontal' | 'vertical';
|
|
81
|
+
type TabsAlign = 'start' | 'center' | 'end';
|
|
82
|
+
type TabsSize = MfSize;
|
|
59
83
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* `card` görünümünde her sekme zaten kendi kenarlığıyla ayrık bir kutu —
|
|
64
|
-
* kayan tek bir gösterge o kutuların üstünden "kayarak" geçmezdi, doğal
|
|
65
|
-
* durmazdı. `relative` — kayan gösterge `absolute` konumlanıyor buna göre.
|
|
66
|
-
*
|
|
67
|
-
* `orientation` ekseni sol dikey grup rayı gerektiren ekranlar için eklendi —
|
|
68
|
-
* `@angular/aria/tabs`'ın ARIA/klavye desteği zaten yön-agnostik
|
|
69
|
-
* (`hostDirectives`'in `orientation` girdisi, bkz. `tab-list.ts`), eksik
|
|
70
|
-
* olan sadece bu görsel katmandı.
|
|
84
|
+
* Sekme satırı (`#row`). `relative` — kayan göstergeler `absolute` konumlanır ve
|
|
85
|
+
* satır onların `offsetParent`'ı. `fill`: satır rayı tüm genişliğe yayılsın mı
|
|
86
|
+
* (underline'ın hairline'ı, `stretch`, `align` ≠ start).
|
|
71
87
|
*/
|
|
72
88
|
declare const tabListVariants: (props?: ({
|
|
73
|
-
variant?: "underline" | "card" | null | undefined;
|
|
89
|
+
variant?: "underline" | "pills" | "segmented" | "card" | null | undefined;
|
|
74
90
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
91
|
+
align?: "center" | "end" | "start" | null | undefined;
|
|
92
|
+
fill?: boolean | null | undefined;
|
|
75
93
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
76
94
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
|
|
81
|
-
|
|
95
|
+
* Seçili sekmeyi izleyen kayan öğe (`[mfSlidingIndicator]`). Motor yalnız ana
|
|
96
|
+
* ekseni (konum + genişlik/yükseklik) yazar; çapraz eksen buradan gelir.
|
|
97
|
+
* `card`'da kayan gösterge YOK — ayrık kutuların arasından kayması doğal durmaz.
|
|
98
|
+
*/
|
|
99
|
+
declare const tabIndicatorVariants: (props?: ({
|
|
100
|
+
variant?: "underline" | "pills" | "segmented" | "card" | null | undefined;
|
|
101
|
+
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
102
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
103
|
+
/** İmleç altındaki sekmeyi izleyen yumuşak vurgu (yalnız underline/pills). */
|
|
104
|
+
declare const tabHoverVariants: (props?: ({
|
|
105
|
+
variant?: "underline" | "pills" | null | undefined;
|
|
106
|
+
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
107
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
108
|
+
/**
|
|
109
|
+
* Sekme (`button[mfTab]`, `a[mfTabLink]`, TabStrip). Seçili durum yalnız RENK
|
|
110
|
+
* değiştirir — `font-medium` her durumda, genişlik zıplaması olmaz. `ownHover`:
|
|
111
|
+
* satır hover vurgusunu kendisi çizmiyorsa sekme kendi hover zeminini çizer.
|
|
112
|
+
* `selected`/`disabled` CSS öznitelik seçicisiyle değil, sekmenin kendi
|
|
113
|
+
* sinyalleriyle besleniyor (Select `optionClasses`, Table `rowClasses` deseni).
|
|
114
|
+
*
|
|
115
|
+
* Odak halkası İÇERİDE (`-outline-offset-2`): sekmeler taşma kaydırıcısının
|
|
116
|
+
* (`overflow: auto`) içinde; dışa taşan halka kapsayıcı kenarında kırpılıyordu.
|
|
82
117
|
*/
|
|
83
118
|
declare const tabVariants: (props?: ({
|
|
84
|
-
variant?: "underline" | "card" | null | undefined;
|
|
119
|
+
variant?: "underline" | "pills" | "segmented" | "card" | null | undefined;
|
|
120
|
+
size?: "sm" | "md" | "lg" | null | undefined;
|
|
85
121
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
86
122
|
selected?: boolean | null | undefined;
|
|
87
123
|
disabled?: boolean | null | undefined;
|
|
124
|
+
stretch?: boolean | null | undefined;
|
|
125
|
+
ownHover?: boolean | null | undefined;
|
|
126
|
+
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
127
|
+
/** `<span mfTabCount>12</span>` — sekme içi sayaç rozeti; seçili sekmede tonlanır. */
|
|
128
|
+
declare const tabCountVariants: (props?: ({
|
|
129
|
+
selected?: boolean | null | undefined;
|
|
130
|
+
variant?: "underline" | "pills" | "segmented" | "card" | null | undefined;
|
|
88
131
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
89
132
|
type TabSelected = VariantProps<typeof tabVariants>['selected'];
|
|
90
133
|
|
|
91
134
|
/**
|
|
92
|
-
* `<mf-tab-list [(selectedTab)]="active" variant="
|
|
93
|
-
* — `mf-tabs` içine konur, `mfTab`
|
|
94
|
-
*
|
|
95
|
-
* `hostDirectives` ile
|
|
96
|
-
*
|
|
97
|
-
* İki premium detay burada yaşıyor:
|
|
98
|
-
* 1. **Kayan ray göstergesi** (`underline` varyantı) — aktif sekme
|
|
99
|
-
* değişince `positionIndicator()` DOM'dan `[aria-selected="true"]`
|
|
100
|
-
* elemanın `offsetLeft`/`offsetWidth`'ini (yatayda) ya da `offsetTop`/
|
|
101
|
-
* `offsetHeight`'ını (dikeyde) ölçüp göstergeyi kaydırıyor (emsal:
|
|
102
|
-
* `table-pagination.ts`'in odak restorasyonundaki `afterRenderEffect` +
|
|
103
|
-
* `viewChild(ElementRef)` deseni). `ResizeObserver` yeniden boyutlanmada
|
|
104
|
-
* (font yüklenmesi, viewport) yeniden ölçer. `card` varyantında AYRI bir
|
|
105
|
-
* gösterge YOK — ray her sekmenin kendi `box-shadow`'unda yaşıyor
|
|
106
|
-
* (bkz. tabs.variants.ts).
|
|
107
|
-
* 2. **Taşma yönetimi** — `mfTabScroller` (bkz. o dosya) kaydırma+kenar
|
|
108
|
-
* solma maskesi sağlıyor; ok butonları SADECE o yönde taşma varken
|
|
109
|
-
* render edilir. Aktif sekme değişince görünür alana kaydırılır.
|
|
135
|
+
* `<mf-tab-list [(selectedTab)]="active" variant="pills" size="sm">…</mf-tab-list>`
|
|
136
|
+
* — `mf-tabs` içine konur, `mfTab` düğmelerini sarar. ARIA/klavye (oklar,
|
|
137
|
+
* Home/End, Enter/Boşluk) `@angular/aria/tabs`'ın `TabList`'inden
|
|
138
|
+
* `hostDirectives` ile gelir; `orientation`/`selectedTab`/`selectionMode`…
|
|
139
|
+
* oradan iletilir (burada ikinci kez `input()` TANIMLANMAZ — NG2017).
|
|
110
140
|
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* `
|
|
116
|
-
*
|
|
117
|
-
*
|
|
118
|
-
*
|
|
141
|
+
* Premium katman:
|
|
142
|
+
* - **Kayan gösterge** — `underline` çizgisi, `pills` hapı, `segmented` parçası
|
|
143
|
+
* tek motorla (`[mfSlidingIndicator]`, core) yay eğrisiyle kayar. `card`'da
|
|
144
|
+
* seçili çizgi her kutunun kendisinde (bkz. tabs.variants.ts).
|
|
145
|
+
* - **Hover izleme** — `hoverHighlight` (underline/pills): imlecin altındaki
|
|
146
|
+
* sekmenin arkasında ikinci bir yumuşak vurgu kayar; dokunmatikte yok.
|
|
147
|
+
* - **Boyut** `sm | md | lg` — Button/Input ile aynı kontrol yüksekliği merdiveni.
|
|
148
|
+
* - **Yerleşim** — `stretch` (sekmeler eşit genişler), `align` (yatay hizalama);
|
|
149
|
+
* `orientation="vertical"` olunca `mf-tabs` kendiliğinden yan yana yerleşir.
|
|
150
|
+
* - **Taşma** — `mfTabScroller` kaydırma + kenar maskesi; oklar yalnız taşma
|
|
151
|
+
* varken çıkar, seçili sekme görünür alana kaydırılır.
|
|
152
|
+
* - Hiçbir sekme bağlı değilse ilk etkin sekme seçilir.
|
|
119
153
|
*
|
|
120
|
-
* `
|
|
121
|
-
* `
|
|
122
|
-
*
|
|
123
|
-
* preserveContent`'teki aynı kısıt), `ariaTabList.orientation()` üzerinden
|
|
124
|
-
* `protected readonly orientation` olarak okunuyor; `Tab` (tab.ts) bunu
|
|
125
|
-
* `variant()` ile aynı `inject()` deseniyle ebeveynden alıyor.
|
|
154
|
+
* `tab-list.html`'deki sarmalayıcının dikeydeki `items-stretch`'i BİLEREK —
|
|
155
|
+
* `items-center` genişliği scroller/satır/sekmelere iletmiyor, `truncate`
|
|
156
|
+
* hiç devreye girmiyordu (gerçek bir hataydı).
|
|
126
157
|
*/
|
|
127
158
|
declare class TabList {
|
|
128
159
|
readonly variant: _angular_core.InputSignal<TabsVariant>;
|
|
160
|
+
readonly size: _angular_core.InputSignal<_mesgflow_ui_kit_core.MfSize>;
|
|
161
|
+
/** Yatay: sekmeler satırı eşit paylaşır. */
|
|
162
|
+
readonly stretch: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
163
|
+
/** Yatay hizalama. */
|
|
164
|
+
readonly align: _angular_core.InputSignal<TabsAlign>;
|
|
165
|
+
/** İmleci izleyen yumuşak vurgu (yalnız `underline` ve `pills`). */
|
|
166
|
+
readonly hoverHighlight: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
129
167
|
readonly scrollStartLabel: _angular_core.InputSignal<string | undefined>;
|
|
130
168
|
readonly scrollEndLabel: _angular_core.InputSignal<string | undefined>;
|
|
131
169
|
private readonly tabsLabels;
|
|
132
170
|
protected readonly effectiveScrollStartLabel: _angular_core.Signal<string>;
|
|
133
171
|
protected readonly effectiveScrollEndLabel: _angular_core.Signal<string>;
|
|
134
|
-
/** `
|
|
135
|
-
|
|
136
|
-
/** `Tab` (tab.ts) bunu `variant()` ile aynı `inject()` deseniyle okuyor — bu yüzden `public`. */
|
|
172
|
+
/** `Tab`, `TabCount` ve `Tabs` bu sınıfı `inject()` ile okur — tek kaynak. */
|
|
173
|
+
readonly ariaTabList: TabList$1;
|
|
137
174
|
readonly orientation: _angular_core.Signal<"horizontal" | "vertical">;
|
|
138
|
-
|
|
175
|
+
readonly isVertical: _angular_core.Signal<boolean>;
|
|
176
|
+
protected readonly axis: _angular_core.Signal<"y" | "x">;
|
|
177
|
+
/** Satır kendi hover vurgusunu çiziyor mu — öyleyse sekmeler kendininkini çizmez. */
|
|
178
|
+
readonly drawsHover: _angular_core.Signal<boolean>;
|
|
139
179
|
protected readonly listClasses: _angular_core.Signal<string>;
|
|
140
180
|
protected readonly indicatorClasses: _angular_core.Signal<string>;
|
|
181
|
+
protected readonly hoverClasses: _angular_core.Signal<string>;
|
|
182
|
+
protected readonly hoveredTab: _angular_core.WritableSignal<HTMLElement | null>;
|
|
141
183
|
protected readonly scroller: _angular_core.Signal<TabScroller | undefined>;
|
|
142
184
|
protected readonly showStartArrow: _angular_core.Signal<boolean>;
|
|
143
185
|
protected readonly showEndArrow: _angular_core.Signal<boolean>;
|
|
144
186
|
private readonly rowEl;
|
|
145
|
-
private readonly
|
|
187
|
+
private readonly tabs;
|
|
146
188
|
constructor();
|
|
147
|
-
|
|
189
|
+
protected onPointerOver(event: PointerEvent): void;
|
|
190
|
+
protected onPointerLeave(): void;
|
|
148
191
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabList, never>;
|
|
149
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabList, "mf-tab-list",
|
|
192
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabList, "mf-tab-list", ["mfTabList"], { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "stretch": { "alias": "stretch"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "hoverHighlight": { "alias": "hoverHighlight"; "required": false; "isSignal": true; }; "scrollStartLabel": { "alias": "scrollStartLabel"; "required": false; "isSignal": true; }; "scrollEndLabel": { "alias": "scrollEndLabel"; "required": false; "isSignal": true; }; }, {}, ["tabs"], ["*"], true, [{ directive: typeof i1.TabList; inputs: { "orientation": "orientation"; "wrap": "wrap"; "softDisabled": "softDisabled"; "focusMode": "focusMode"; "selectionMode": "selectionMode"; "disabled": "disabled"; "selectedTab": "selectedTab"; }; outputs: { "selectedTabChange": "selectedTabChange"; }; }]>;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* ```html
|
|
197
|
+
* <mf-tab-nav ariaLabel="Proje">
|
|
198
|
+
* <a mfTabLink routerLink="overview" routerLinkActive #o="routerLinkActive" [active]="o.isActive">Genel bakış</a>
|
|
199
|
+
* <a mfTabLink routerLink="settings" routerLinkActive #s="routerLinkActive" [active]="s.isActive">Ayarlar</a>
|
|
200
|
+
* </mf-tab-nav>
|
|
201
|
+
* ```
|
|
202
|
+
*
|
|
203
|
+
* Sayfalar arası GEZİNME için sekme görünümü — `mf-tabs` ile aynı varyantlar,
|
|
204
|
+
* boyutlar ve kayan gösterge, ama semantik olarak bir `<nav>` + bağlantılar:
|
|
205
|
+
* `role="tab"`/ok tuşu YOK (gezinen bağlantıda sekme rolü WAI-ARIA'da yanlış
|
|
206
|
+
* desen), etkin bağlantı `aria-current="page"` taşır, klavye doğal Tab/Enter.
|
|
207
|
+
* Kit `@angular/router`'a bağımlı değil — `active`'i tüketici bağlar
|
|
208
|
+
* (`routerLinkActive` ya da kendi durumu). Yalnız yatay; dikey gezinme Sidebar'ın işi.
|
|
209
|
+
*/
|
|
210
|
+
declare class TabNav {
|
|
211
|
+
readonly variant: _angular_core.InputSignal<TabsVariant>;
|
|
212
|
+
readonly size: _angular_core.InputSignal<_mesgflow_ui_kit_core.MfSize>;
|
|
213
|
+
readonly stretch: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
214
|
+
readonly align: _angular_core.InputSignal<TabsAlign>;
|
|
215
|
+
readonly hoverHighlight: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
216
|
+
/** `<nav>` işaret noktasının adı — sayfada birden çok nav varsa zorunlu. */
|
|
217
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
218
|
+
private readonly links;
|
|
219
|
+
/** Etkin bağlantı değişince göstergeyi yeniden ölçtürür. */
|
|
220
|
+
protected readonly activeIndex: _angular_core.Signal<number>;
|
|
221
|
+
readonly drawsHover: _angular_core.Signal<boolean>;
|
|
222
|
+
protected readonly listClasses: _angular_core.Signal<string>;
|
|
223
|
+
protected readonly indicatorClasses: _angular_core.Signal<string>;
|
|
224
|
+
protected readonly hoverClasses: _angular_core.Signal<string>;
|
|
225
|
+
protected readonly hoveredLink: _angular_core.WritableSignal<HTMLElement | null>;
|
|
226
|
+
protected onPointerOver(event: PointerEvent): void;
|
|
227
|
+
protected onPointerLeave(): void;
|
|
228
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabNav, never>;
|
|
229
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabNav, "mf-tab-nav", ["mfTabNav"], { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "stretch": { "alias": "stretch"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "hoverHighlight": { "alias": "hoverHighlight"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, ["links"], ["*"], true, never>;
|
|
230
|
+
}
|
|
231
|
+
/** `a[mfTabLink]` — `mf-tab-nav` içindeki bağlantı; `active` → `aria-current="page"`. */
|
|
232
|
+
declare class TabLink {
|
|
233
|
+
readonly active: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
234
|
+
private readonly nav;
|
|
235
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
236
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabLink, never>;
|
|
237
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<TabLink, "a[mfTabLink]", ["mfTabLink"], { "active": { "alias": "active"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
150
238
|
}
|
|
151
239
|
|
|
152
240
|
/**
|
|
@@ -156,24 +244,25 @@ declare class TabList {
|
|
|
156
244
|
* </mf-tab-panel>
|
|
157
245
|
* ```
|
|
158
246
|
*
|
|
159
|
-
* `ngTabContent` (`@angular/aria/tabs`'ın `TabContent`'i) doğrudan
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
* `DeferredContent` mekanizması, panel aktif olana kadar içeriği hiç
|
|
163
|
-
* oluşturmaz — lazy). `<ng-content />` bilerek TEK satır: panelin kendi
|
|
164
|
-
* `role="tabpanel"`/`tabindex`/`inert` host bağlamaları `hostDirectives`'ten
|
|
165
|
-
* geliyor, ekstra bir sarmalayıcıya gerek yok.
|
|
247
|
+
* `ngTabContent` (`@angular/aria/tabs`'ın `TabContent`'i) doğrudan kullanılır —
|
|
248
|
+
* içerik panel ilk kez etkinleşene kadar oluşturulmaz (lazy). `preserveContent`
|
|
249
|
+
* `hostDirectives` ile yeniden iletilemiyor (NG2017), bu yüzden açık değil.
|
|
166
250
|
*
|
|
167
|
-
* `[class.hidden]` ELLE
|
|
168
|
-
*
|
|
169
|
-
*
|
|
170
|
-
*
|
|
171
|
-
*
|
|
251
|
+
* - `[class.hidden]` ELLE — aria'nın `inert`'i paneli erişilebilirlik ağacından
|
|
252
|
+
* çıkarır ama GÖRSEL olarak gizlemez (kütüphanenin kendi notu).
|
|
253
|
+
* - **Geçiş:** görünür olan panel `animate-panel-in` ile solarak/hafifçe
|
|
254
|
+
* yükselerek gelir; `display:none → block` animasyonu kendiliğinden yeniden
|
|
255
|
+
* başlatır. `[animate]="false"` kapatır; azaltılmış harekette zaten yok.
|
|
256
|
+
* - Dikey `mf-tabs` içinde kalan genişliği doldurur (`flex-1 min-w-0`).
|
|
172
257
|
*/
|
|
173
258
|
declare class TabPanel {
|
|
259
|
+
/** Görünür olunca giriş animasyonu. */
|
|
260
|
+
readonly animate: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
174
261
|
protected readonly ariaTabPanel: TabPanel$1;
|
|
262
|
+
private readonly tabs;
|
|
263
|
+
protected inVertical(): boolean;
|
|
175
264
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TabPanel, never>;
|
|
176
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabPanel, "mf-tab-panel",
|
|
265
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TabPanel, "mf-tab-panel", ["mfTabPanel"], { "animate": { "alias": "animate"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.TabPanel; inputs: { "value": "value"; "id": "id"; }; outputs: {}; }]>;
|
|
177
266
|
}
|
|
178
267
|
|
|
179
268
|
interface TabStripItem {
|
|
@@ -248,22 +337,33 @@ declare class TabStrip {
|
|
|
248
337
|
}
|
|
249
338
|
|
|
250
339
|
/**
|
|
251
|
-
*
|
|
340
|
+
* ```html
|
|
341
|
+
* <mf-tabs>
|
|
342
|
+
* <mf-tab-list [(selectedTab)]="tab" variant="pills" orientation="vertical" class="w-56">
|
|
343
|
+
* <button mfTab value="profile">Profil</button>
|
|
344
|
+
* <button mfTab value="billing">Faturalandırma</button>
|
|
345
|
+
* </mf-tab-list>
|
|
346
|
+
* <mf-tab-panel value="profile"><ng-template ngTabContent>…</ng-template></mf-tab-panel>
|
|
347
|
+
* <mf-tab-panel value="billing"><ng-template ngTabContent>…</ng-template></mf-tab-panel>
|
|
348
|
+
* </mf-tabs>
|
|
349
|
+
* ```
|
|
350
|
+
*
|
|
351
|
+
* `@angular/aria/tabs` kompozisyonu: `Tabs`/`TabList`/`Tab`/`TabPanel` her biri
|
|
352
|
+
* aria'nın aynı adlı yapı taşını `hostDirectives` ile taşır (ARIA rolleri,
|
|
353
|
+
* roving tabindex, ok tuşları, Home/End) — kit yalnız görsel katmanı ekler.
|
|
252
354
|
*
|
|
253
|
-
*
|
|
254
|
-
* `
|
|
255
|
-
*
|
|
256
|
-
*
|
|
257
|
-
* host elemanına `Tabs`'ın DI sağlayıcısını (`TABS` token) ekliyor — alttaki
|
|
258
|
-
* `mf-tab-list`/`mf-tab-panel` bunu `inject()` ile bulup kendini
|
|
259
|
-
* kaydediyor, template'te `ngTabs` attribute'unu ELLE yazmaya gerek yok
|
|
260
|
-
* (`hostDirectives`'te selector yok sayılır, bkz. Angular directive
|
|
261
|
-
* composition API).
|
|
355
|
+
* **Dikey yerleşim otomatik:** liste `orientation="vertical"` olunca kök yan
|
|
356
|
+
* yana (`flex`) dizilir, paneller kalan alanı doldurur. Yönün tek kaynağı
|
|
357
|
+
* listedir (ARIA `aria-orientation` orada); liste genişliği tüketicinin
|
|
358
|
+
* `class`'ı (ör. `w-56`).
|
|
262
359
|
*/
|
|
263
360
|
declare class Tabs {
|
|
361
|
+
private readonly list;
|
|
362
|
+
/** `TabPanel` panel genişliği için okur. */
|
|
363
|
+
readonly vertical: _angular_core.Signal<boolean>;
|
|
264
364
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tabs, never>;
|
|
265
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tabs, "mf-tabs", ["mfTabs"], {}, {},
|
|
365
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tabs, "mf-tabs", ["mfTabs"], {}, {}, ["list"], ["*"], true, [{ directive: typeof i1.Tabs; inputs: {}; outputs: {}; }]>;
|
|
266
366
|
}
|
|
267
367
|
|
|
268
|
-
export { Tab, TabList, TabPanel, TabScroller, TabStrip, Tabs, tabListVariants, tabVariants };
|
|
269
|
-
export type { TabSelected, TabStripItem, TabsOrientation, TabsVariant };
|
|
368
|
+
export { Tab, TabCount, TabLink, TabList, TabNav, TabPanel, TabScroller, TabStrip, Tabs, tabCountVariants, tabHoverVariants, tabIndicatorVariants, tabListVariants, tabVariants };
|
|
369
|
+
export type { TabSelected, TabStripItem, TabsAlign, TabsOrientation, TabsSize, TabsVariant };
|
|
@@ -15,6 +15,8 @@ declare class TagInput extends ValueAccessorBase<string[]> implements ControlVal
|
|
|
15
15
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
16
16
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
17
17
|
readonly hasError: _angular_core.InputSignal<boolean>;
|
|
18
|
+
/** İç `<input>`'un id'si — harici bir `<label for>` / `mf-field for` ile ilişkilendirmek için. */
|
|
19
|
+
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
18
20
|
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
19
21
|
readonly fullWidth: _angular_core.InputSignal<boolean>;
|
|
20
22
|
/** Verilmezse alttaki `Chip`'in kendi `MF_CHIP_LABELS` düşüşü kullanılır (bkz. `chip.ts`). */
|
|
@@ -27,7 +29,7 @@ declare class TagInput extends ValueAccessorBase<string[]> implements ControlVal
|
|
|
27
29
|
protected commitDraft(): void;
|
|
28
30
|
protected removeTag(tag: string): void;
|
|
29
31
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TagInput, never>;
|
|
30
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagInput, "mf-tag-input", ["mfTagInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "unique": { "alias": "unique"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
32
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TagInput, "mf-tag-input", ["mfTagInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "hasError": { "alias": "hasError"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "unique": { "alias": "unique"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
export { TagInput };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
|
|
3
3
|
type ToastTone = 'success' | 'danger' | 'info' | 'warning';
|
|
4
|
-
/** @deprecated `ToastTone` kullan — `'error'` değeri `'danger'`ya
|
|
4
|
+
/** @deprecated `ToastTone` kullan — `'error'` değeri `'danger'`ya taşındı. */
|
|
5
5
|
type ToastType = ToastTone;
|
|
6
6
|
interface ToastAction {
|
|
7
7
|
label: string;
|
|
@@ -19,46 +19,71 @@ interface ToastItem {
|
|
|
19
19
|
title: string;
|
|
20
20
|
description?: string;
|
|
21
21
|
action?: ToastAction;
|
|
22
|
-
/** `true` — çıkış animasyonu (`animate-toast-out`) oynuyor, `
|
|
22
|
+
/** `true` — çıkış animasyonu (`animate-toast-out`) oynuyor, `exitDurationMs()` sonra listeden gerçekten kaldırılır (bkz. `dismiss()`). */
|
|
23
23
|
leaving: boolean;
|
|
24
|
+
/** Otomatik kapanma süresi (ms) — `0` kalıcı. Host geri sayım çubuğunu buna göre çizer. */
|
|
25
|
+
duration: number;
|
|
26
|
+
/** Üzerine gelinince/odaklanınca geri sayım durur (bkz. `pause()`/`resume()`). */
|
|
27
|
+
paused: boolean;
|
|
28
|
+
/** `promise()` bekleme durumu — spinner gösterilir, kendiliğinden kapanmaz. */
|
|
29
|
+
loading: boolean;
|
|
30
|
+
}
|
|
31
|
+
interface ToastPromiseMessages<T> {
|
|
32
|
+
loading: string;
|
|
33
|
+
success: string | ((value: T) => string);
|
|
34
|
+
error: string | ((error: unknown) => string);
|
|
35
|
+
description?: string;
|
|
24
36
|
}
|
|
25
37
|
/**
|
|
26
38
|
* Uygulamanın tek, global toast kaynağı — signal-first, `providedIn: 'root'`.
|
|
27
39
|
* Görsel katman `ToastHost`'ta (`<mf-toast-host>`, kök seviyede bir kez
|
|
28
|
-
* render edilir) — burası SADECE state.
|
|
29
|
-
* uygulamanın kendi bildirim sistemine bağımlı OLAMAZ, bu yüzden bu servis
|
|
30
|
-
* bir ürün deposunun eski bildirim servisinden kite taşındı (2026-09-07) —
|
|
31
|
-
* artık kütüphanenin kendi parçası.
|
|
40
|
+
* render edilir) — burası SADECE state.
|
|
32
41
|
*
|
|
33
42
|
* `success`/`error`/`info`/`warning`'in ikinci parametresi HEM düz bir
|
|
34
|
-
* `description` string'i HEM `ToastOptions` kabul eder
|
|
35
|
-
*
|
|
36
|
-
*
|
|
43
|
+
* `description` string'i HEM `ToastOptions` kabul eder.
|
|
44
|
+
*
|
|
45
|
+
* Premium davranışlar (Sonner/Radix Toast ile aynı beklentiler):
|
|
46
|
+
* - Üzerine gelince / klavyeyle odaklanınca geri sayım DURUR, ayrılınca
|
|
47
|
+
* KALAN süreden devam eder (WCAG 2.2.1 "Timing Adjustable").
|
|
48
|
+
* - `promise()` — tek toast: "Kaydediliyor…" → "Kaydedildi" / hata.
|
|
37
49
|
*/
|
|
38
50
|
declare class ToastService {
|
|
39
51
|
readonly items: _angular_core.WritableSignal<ToastItem[]>;
|
|
40
52
|
/**
|
|
41
|
-
* `ToastHost` tarafından kuruluşta ayarlanır
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* (animasyonsuz) kaldırılır. `null` (varsayılan) → sınırsız.
|
|
53
|
+
* `ToastHost` tarafından kuruluşta ayarlanır — aynı anda gösterilecek
|
|
54
|
+
* AZAMİ toast sayısı, aşılırsa EN ESKİ (henüz çıkış animasyonu oynamayan)
|
|
55
|
+
* toast'lar ANINDA kaldırılır. `null` (varsayılan) → sınırsız.
|
|
45
56
|
*/
|
|
46
57
|
readonly limit: _angular_core.WritableSignal<number | null>;
|
|
47
58
|
private nextId;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
59
|
+
private readonly timers;
|
|
60
|
+
success(title: string, options?: string | ToastOptions): number;
|
|
61
|
+
error(title: string, options?: string | ToastOptions): number;
|
|
62
|
+
info(title: string, options?: string | ToastOptions): number;
|
|
63
|
+
warning(title: string, options?: string | ToastOptions): number;
|
|
64
|
+
/**
|
|
65
|
+
* `await toasts.promise(save(), { loading: 'Kaydediliyor…', success: 'Kaydedildi', error: 'Kaydedilemedi' })`
|
|
66
|
+
* — tek bir toast bekleme → sonuç durumuna GEÇER (yeni toast açılmaz).
|
|
67
|
+
* Promise'in kendi sonucunu/hatasını olduğu gibi geri döndürür/fırlatır.
|
|
68
|
+
*/
|
|
69
|
+
promise<T>(task: Promise<T>, messages: ToastPromiseMessages<T>): Promise<T>;
|
|
70
|
+
/** Geri sayımı durdurur (host: `mouseenter`/`focusin`). */
|
|
71
|
+
pause(id: number): void;
|
|
72
|
+
/** Kalan süreden devam eder (host: `mouseleave`/`focusout`). */
|
|
73
|
+
resume(id: number): void;
|
|
52
74
|
/**
|
|
53
75
|
* İki aşamalı: önce `leaving:true` işaretler (panel `animate-toast-out`
|
|
54
|
-
* oynatır
|
|
55
|
-
*
|
|
56
|
-
* X'e hızlı hızlı tıklarsa) YOK SAYILIR — `list.map` idempotent.
|
|
76
|
+
* oynatır), `exitDurationMs()` sonra listeden gerçekten çıkarır. Zaten
|
|
77
|
+
* çıkış oynayan bir öğede tekrar çağrılırsa YOK SAYILIR.
|
|
57
78
|
*/
|
|
58
79
|
dismiss(id: number): void;
|
|
59
|
-
/** Şu an gösterilen (henüz çıkış oynamayan) TÜM toast'ları kapatır — her biri kendi çıkış animasyonuyla
|
|
80
|
+
/** Şu an gösterilen (henüz çıkış oynamayan) TÜM toast'ları kapatır — her biri kendi çıkış animasyonuyla. */
|
|
60
81
|
dismissAll(): void;
|
|
61
82
|
private push;
|
|
83
|
+
private settle;
|
|
84
|
+
private arm;
|
|
85
|
+
private clearTimer;
|
|
86
|
+
private patch;
|
|
62
87
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToastService, never>;
|
|
63
88
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
|
|
64
89
|
}
|
|
@@ -75,6 +100,7 @@ declare class ToastHost {
|
|
|
75
100
|
protected readonly toasts: ToastService;
|
|
76
101
|
protected readonly iconFor: (type: ToastTone) => string;
|
|
77
102
|
protected readonly chipBgFor: (type: ToastTone) => string;
|
|
103
|
+
protected readonly countdownClassFor: (type: ToastTone) => string;
|
|
78
104
|
protected readonly cardClassFor: (item: ToastItem) => string;
|
|
79
105
|
/** Kapat butonunun `aria-label`'ı — toast'ın kendi başlığıyla birleştirilir. Verilmezse `MF_TOAST_LABELS`. */
|
|
80
106
|
readonly dismissLabel: _angular_core.InputSignal<string | undefined>;
|
|
@@ -91,4 +117,4 @@ declare class ToastHost {
|
|
|
91
117
|
}
|
|
92
118
|
|
|
93
119
|
export { ToastHost, ToastService };
|
|
94
|
-
export type { ToastAction, ToastItem, ToastOptions, ToastPosition, ToastTone, ToastType };
|
|
120
|
+
export type { ToastAction, ToastItem, ToastOptions, ToastPosition, ToastPromiseMessages, ToastTone, ToastType };
|
|
@@ -15,11 +15,11 @@ type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
|
15
15
|
* </ng-template>
|
|
16
16
|
* ```
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
18
|
+
* Erişilebilirlik: balon açıkken tetikleyiciye `aria-describedby` eklenir
|
|
19
|
+
* (tetikleyicinin `aria-label`'ı balon metniyle AYNIYSA eklenmez — ekran
|
|
20
|
+
* okuyucu aynı cümleyi iki kez okumasın). Konum ortak `overlayPositions()`
|
|
21
|
+
* üreticisinden gelir: balon tetikleyiciden dışarı doğru büyür, taşmada
|
|
22
|
+
* karşı tarafa çevrilir.
|
|
23
23
|
*/
|
|
24
24
|
declare class Tooltip implements OnDestroy {
|
|
25
25
|
/** Boş string verilirse (ve `mfTooltipContent` de yoksa) tooltip tamamen devre dışı kalır (ör. koşullu etiketler için). */
|
|
@@ -30,6 +30,7 @@ declare class Tooltip implements OnDestroy {
|
|
|
30
30
|
private readonly overlay;
|
|
31
31
|
private readonly elementRef;
|
|
32
32
|
private readonly viewContainerRef;
|
|
33
|
+
private readonly bubbleId;
|
|
33
34
|
private overlayRef?;
|
|
34
35
|
private bubbleEl?;
|
|
35
36
|
private showHandle?;
|
|
@@ -37,16 +38,18 @@ declare class Tooltip implements OnDestroy {
|
|
|
37
38
|
protected show(): void;
|
|
38
39
|
/**
|
|
39
40
|
* Public: `SearchInput` gibi, kendi state değişimiyle tooltip'i ANINDA
|
|
40
|
-
* kapatmak isteyen tüketiciler için (bkz. search-input.ts `expand()`)
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* `
|
|
46
|
-
*
|
|
41
|
+
* kapatmak isteyen tüketiciler için (bkz. search-input.ts `expand()`).
|
|
42
|
+
*
|
|
43
|
+
* Erişilebilirlik ağacından ANINDA çıkar (`role`/`aria-describedby`
|
|
44
|
+
* kaldırılır — ekran okuyucu ve testler için "blur → kaldırıldı"
|
|
45
|
+
* sözleşmesi korunur), görsel balon ise `animate-overlay-out` oynatıp
|
|
46
|
+
* `exitDurationMs()` sonra dispose edilir. Yeni bir hover bu sırada yeni
|
|
47
|
+
* bir balon açabilir — eski ref bağımsız olarak kapanır.
|
|
47
48
|
*/
|
|
48
49
|
hide(): void;
|
|
49
50
|
ngOnDestroy(): void;
|
|
51
|
+
private describe;
|
|
52
|
+
private undescribe;
|
|
50
53
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tooltip, never>;
|
|
51
54
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<Tooltip, "[mfTooltip], [mfTooltipContent]", ["mfTooltip"], { "mfTooltip": { "alias": "mfTooltip"; "required": false; "isSignal": true; }; "mfTooltipContent": { "alias": "mfTooltipContent"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
52
55
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import * as _mesgflow_ui_kit_core from '@mesgflow/ui-kit/core';
|
|
2
|
+
import * as _angular_core from '@angular/core';
|
|
3
|
+
import { ListboxOption } from '@mesgflow/ui-kit/listbox';
|
|
4
|
+
|
|
5
|
+
type Side = 'left' | 'right';
|
|
6
|
+
/**
|
|
7
|
+
* `<mf-transfer-list [options]="permissions" [(value)]="granted" />`
|
|
8
|
+
*
|
|
9
|
+
* İki listeli seçim (izinler, alan eşleme, sütun seçimi): solda seçilebilir,
|
|
10
|
+
* sağda seçilmiş öğeler. Her panel kendi araması ve çoklu seçimli
|
|
11
|
+
* `mf-listbox`'ı (ok tuşları, Shift+ok aralık, typeahead) ile gelir; ortadaki
|
|
12
|
+
* düğmeler işaretlileri ya da tümünü taşır. `value` sağ taraftaki değerler.
|
|
13
|
+
*/
|
|
14
|
+
declare class TransferList<V> {
|
|
15
|
+
readonly options: _angular_core.InputSignal<ListboxOption<V>[]>;
|
|
16
|
+
/** Sağ taraftaki (seçilmiş) değerler. */
|
|
17
|
+
readonly value: _angular_core.ModelSignal<V[]>;
|
|
18
|
+
protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfTransferListLabels>;
|
|
19
|
+
protected readonly sides: Side[];
|
|
20
|
+
protected readonly query: _angular_core.WritableSignal<Record<Side, string>>;
|
|
21
|
+
protected readonly checked: _angular_core.WritableSignal<Record<Side, V[]>>;
|
|
22
|
+
protected readonly leftOptions: _angular_core.Signal<ListboxOption<V>[]>;
|
|
23
|
+
protected readonly rightOptions: _angular_core.Signal<ListboxOption<V>[]>;
|
|
24
|
+
protected readonly filtered: _angular_core.Signal<Record<Side, ListboxOption<V>[]>>;
|
|
25
|
+
protected countText(side: Side): string;
|
|
26
|
+
protected setQuery(side: Side, text: string): void;
|
|
27
|
+
protected setChecked(side: Side, values: V[]): void;
|
|
28
|
+
protected move(from: Side): void;
|
|
29
|
+
protected moveAll(from: Side): void;
|
|
30
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TransferList<any>, never>;
|
|
31
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TransferList<any>, "mf-transfer-list", ["mfTransferList"], { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { TransferList };
|