@mesgflow/ui-kit 0.7.0 → 0.9.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/fesm2022/mesgflow-ui-kit-accordion.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-agenda.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-alert.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-avatar-group.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-avatar.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-badge.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-banner.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-blocks.mjs +16 -16
- package/fesm2022/mesgflow-ui-kit-blocks.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-box-input.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-brand.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-breadcrumb.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-button-group.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-button.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-card.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-carousel.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-chart.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-checkbox.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-chip.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-code-block.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-collapsible.mjs +9 -9
- package/fesm2022/mesgflow-ui-kit-color-picker.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-combobox.mjs +4 -4
- package/fesm2022/mesgflow-ui-kit-combobox.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-command.mjs +15 -16
- package/fesm2022/mesgflow-ui-kit-command.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-context-menu.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-copy-button.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-core.mjs +9 -4
- package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-countdown.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-date-picker.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-description-list.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-dialog.mjs +197 -34
- package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-divider.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-drawer.mjs +4 -4
- package/fesm2022/mesgflow-ui-kit-drawer.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-dropzone.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-empty-state.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-field.mjs +38 -7
- package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-file-upload.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-hover-card.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +4 -0
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-icon.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-inline-edit.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-input.mjs +21 -19
- package/fesm2022/mesgflow-ui-kit-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-kbd.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-lightbox.mjs +9 -9
- package/fesm2022/mesgflow-ui-kit-link.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-listbox.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-mention.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-menu.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-nav-menu.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-notification-center.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-number-input.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-otp-input.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-page-header.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-pagination.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-password-input.mjs +47 -71
- package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-popover.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-progress.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-qr-code.mjs +766 -0
- package/fesm2022/mesgflow-ui-kit-qr-code.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-radio.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-rating.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-scroll-area.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-search-input.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +34 -22
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-select.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-sidebar.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-skeleton.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-slider.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-sortable.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-spinner.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-split-button.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-splitter.mjs +12 -12
- package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-stepper.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-switch.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-table.mjs +21 -21
- package/fesm2022/mesgflow-ui-kit-tabs.mjs +27 -27
- package/fesm2022/mesgflow-ui-kit-tag-input.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-theme-switcher.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-theming.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-time-picker.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-timeline.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-toast.mjs +6 -6
- package/fesm2022/mesgflow-ui-kit-toggle.mjs +9 -9
- package/fesm2022/mesgflow-ui-kit-toolbar.mjs +9 -9
- package/fesm2022/mesgflow-ui-kit-tooltip.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-tour.mjs +9 -9
- package/fesm2022/mesgflow-ui-kit-transfer-list.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-tree-select.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-tree.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-virtual-list.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit.mjs +1 -0
- package/fesm2022/mesgflow-ui-kit.mjs.map +1 -1
- package/package.json +5 -1
- package/tokens.json +1583 -1583
- package/types/mesgflow-ui-kit-command.d.ts +2 -2
- package/types/mesgflow-ui-kit-core.d.ts +10 -2
- package/types/mesgflow-ui-kit-dialog.d.ts +97 -12
- package/types/mesgflow-ui-kit-field.d.ts +24 -2
- package/types/mesgflow-ui-kit-input.d.ts +2 -0
- package/types/mesgflow-ui-kit-password-input.d.ts +43 -6
- package/types/mesgflow-ui-kit-qr-code.d.ts +160 -0
- package/types/mesgflow-ui-kit-segmented-control.d.ts +19 -11
- package/types/mesgflow-ui-kit.d.ts +1 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _mesgflow_ui_kit_command from '@mesgflow/ui-kit/command';
|
|
2
2
|
import * as _mesgflow_ui_kit_core from '@mesgflow/ui-kit/core';
|
|
3
3
|
import * as _angular_core from '@angular/core';
|
|
4
|
-
import
|
|
4
|
+
import * as _mesgflow_ui_kit_dialog from '@mesgflow/ui-kit/dialog';
|
|
5
5
|
|
|
6
6
|
/** `mf-command`'ın tek öğesi — `data` tüketicinin kendi yükü (rota, eylem kimliği vb.). */
|
|
7
7
|
interface MfCommandItem<T = unknown> {
|
|
@@ -125,7 +125,7 @@ interface CommandPaletteData<T = unknown> {
|
|
|
125
125
|
*/
|
|
126
126
|
declare class CommandPalette<T = unknown> {
|
|
127
127
|
protected readonly data: CommandPaletteData<T>;
|
|
128
|
-
protected readonly ref:
|
|
128
|
+
protected readonly ref: _mesgflow_ui_kit_dialog.MfDialogRef<MfCommandItem<T>, CommandPalette<T>>;
|
|
129
129
|
/** `DialogService` çıkış animasyonu turu — `Dialog`'un aynı reaktif sınıfı (bkz. dialog.service.ts). */
|
|
130
130
|
private readonly surface;
|
|
131
131
|
protected readonly closing: _angular_core.Signal<boolean>;
|
|
@@ -384,6 +384,12 @@ interface MfPasswordInputLabels {
|
|
|
384
384
|
show: string;
|
|
385
385
|
hide: string;
|
|
386
386
|
}
|
|
387
|
+
interface MfQrCodeLabels {
|
|
388
|
+
/** `role="img"` için varsayılan erişilebilir ad. */
|
|
389
|
+
ariaLabel: string;
|
|
390
|
+
/** İçerik seçilen hata düzeltme seviyesiyle sığmadığında. */
|
|
391
|
+
error: string;
|
|
392
|
+
}
|
|
387
393
|
interface MfChipLabels {
|
|
388
394
|
remove: string;
|
|
389
395
|
}
|
|
@@ -622,6 +628,7 @@ interface MfLabels {
|
|
|
622
628
|
stepper: MfStepperLabels;
|
|
623
629
|
progress: MfProgressLabels;
|
|
624
630
|
passwordInput: MfPasswordInputLabels;
|
|
631
|
+
qrCode: MfQrCodeLabels;
|
|
625
632
|
chip: MfChipLabels;
|
|
626
633
|
alert: MfAlertLabels;
|
|
627
634
|
breadcrumb: MfBreadcrumbLabels;
|
|
@@ -696,6 +703,7 @@ declare const MF_OTP_INPUT_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.M
|
|
|
696
703
|
declare const MF_STEPPER_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfStepperLabels>>;
|
|
697
704
|
declare const MF_PROGRESS_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfProgressLabels>>;
|
|
698
705
|
declare const MF_PASSWORD_INPUT_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfPasswordInputLabels>>;
|
|
706
|
+
declare const MF_QR_CODE_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfQrCodeLabels>>;
|
|
699
707
|
declare const MF_CHIP_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfChipLabels>>;
|
|
700
708
|
declare const MF_ALERT_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfAlertLabels>>;
|
|
701
709
|
declare const MF_BREADCRUMB_LABELS: InjectionToken<Signal<_mesgflow_ui_kit_core.MfBreadcrumbLabels>>;
|
|
@@ -754,5 +762,5 @@ interface ProvideMesgflowUiOptions {
|
|
|
754
762
|
*/
|
|
755
763
|
declare function provideMesgflowUi(options?: ProvideMesgflowUiOptions): EnvironmentProviders;
|
|
756
764
|
|
|
757
|
-
export { MF_AGENDA_LABELS, MF_ALERT_LABELS, MF_AUTH_CARD_LABELS, MF_AVATAR_GROUP_LABELS, MF_BOX_INPUT_LABELS, MF_BREADCRUMB_LABELS, MF_CAROUSEL_LABELS, MF_CHARACTER_COUNT_LABELS, MF_CHART_LABELS, MF_CHIP_LABELS, MF_COLOR_PICKER_LABELS, MF_COMBOBOX_LABELS, MF_COMMAND_LABELS, MF_COMMON_LABELS, MF_COPY_LABELS, MF_COUNTDOWN_LABELS, MF_DATE_LOCALE, MF_DATE_PICKER_LABELS, MF_DIALOG_LABELS, MF_DROPZONE_LABELS, MF_FILE_UPLOAD_LABELS, MF_INLINE_EDIT_LABELS, MF_INVITE_MEMBERS_LABELS, MF_LABELS, MF_LIGHTBOX_LABELS, MF_MENTION_LABELS, MF_NOTIFICATION_CENTER_LABELS, MF_OTP_INPUT_LABELS, MF_PAGINATION_LABELS, MF_PANEL_GROUP_LABELS, MF_PASSWORD_INPUT_LABELS, MF_PROGRESS_LABELS, MF_RATING_LABELS, MF_SEARCH_INPUT_LABELS, MF_SELECT_LABELS, MF_SIDEBAR_LABELS, MF_SLIDER_LABELS, MF_SORTABLE_LABELS, MF_SPLIT_BUTTON_LABELS, MF_STAT_TILE_LABELS, MF_STEPPER_LABELS, MF_TABLE_LABELS, MF_TABS_LABELS, MF_THEME_SWITCHER_LABELS, MF_TIME_PICKER_LABELS, MF_TOAST_LABELS, MF_TOUR_LABELS, MF_TRANSFER_LIST_LABELS, MF_TREE_SELECT_LABELS, SlidingIndicator, ValueAccessorBase, cn, containerSurface, controlSize, controlSurface, disabledRecipe, errorRecipe, exitDurationMs, focusRecipe, glassSurface, inlineStartRatio, isRtl, mergeLabels, mfLabelsEn, nextId, overlayPositions, overlaySurface, parseCssDuration, pointerPositions, prefersReducedMotion, pressRecipe, provideMesgflowUi, scrollFromInlineStart, transitionRecipe };
|
|
758
|
-
export type { DeepPartial, MfAgendaLabels, MfAlertLabels, MfAuthCardLabels, MfAvatarGroupLabels, MfBoxInputLabels, MfBreadcrumbLabels, MfCarouselLabels, MfCharacterCountLabels, MfChartLabels, MfChipLabels, MfColorPickerLabels, MfComboboxLabels, MfCommandLabels, MfCommonLabels, MfControlSize, MfCopyLabels, MfCountdownLabels, MfDatePickerLabels, MfDialogLabels, MfDropzoneLabels, MfFileUploadLabels, MfInlineEditLabels, MfInviteMembersLabels, MfLabels, MfLightboxLabels, MfMentionLabels, MfNotificationCenterLabels, MfOtpInputLabels, MfPaginationLabels, MfPanelGroupLabels, MfPasswordInputLabels, MfPlacement, MfProgressLabels, MfRatingLabels, MfSearchInputLabels, MfSelectLabels, MfSidebarLabels, MfSize, MfSliderLabels, MfSortableLabels, MfSplitButtonLabels, MfStatTileLabels, MfStepperLabels, MfTableFilterLabels, MfTableFilterOperatorLabels, MfTableLabels, MfTablePaginationLabels, MfTabsLabels, MfThemeSwitcherLabels, MfTimePickerLabels, MfToastLabels, MfTone, MfTourLabels, MfTransferListLabels, MfTreeSelectLabels, ProvideMesgflowUiOptions, SlidingIndicatorAxis };
|
|
765
|
+
export { MF_AGENDA_LABELS, MF_ALERT_LABELS, MF_AUTH_CARD_LABELS, MF_AVATAR_GROUP_LABELS, MF_BOX_INPUT_LABELS, MF_BREADCRUMB_LABELS, MF_CAROUSEL_LABELS, MF_CHARACTER_COUNT_LABELS, MF_CHART_LABELS, MF_CHIP_LABELS, MF_COLOR_PICKER_LABELS, MF_COMBOBOX_LABELS, MF_COMMAND_LABELS, MF_COMMON_LABELS, MF_COPY_LABELS, MF_COUNTDOWN_LABELS, MF_DATE_LOCALE, MF_DATE_PICKER_LABELS, MF_DIALOG_LABELS, MF_DROPZONE_LABELS, MF_FILE_UPLOAD_LABELS, MF_INLINE_EDIT_LABELS, MF_INVITE_MEMBERS_LABELS, MF_LABELS, MF_LIGHTBOX_LABELS, MF_MENTION_LABELS, MF_NOTIFICATION_CENTER_LABELS, MF_OTP_INPUT_LABELS, MF_PAGINATION_LABELS, MF_PANEL_GROUP_LABELS, MF_PASSWORD_INPUT_LABELS, MF_PROGRESS_LABELS, MF_QR_CODE_LABELS, MF_RATING_LABELS, MF_SEARCH_INPUT_LABELS, MF_SELECT_LABELS, MF_SIDEBAR_LABELS, MF_SLIDER_LABELS, MF_SORTABLE_LABELS, MF_SPLIT_BUTTON_LABELS, MF_STAT_TILE_LABELS, MF_STEPPER_LABELS, MF_TABLE_LABELS, MF_TABS_LABELS, MF_THEME_SWITCHER_LABELS, MF_TIME_PICKER_LABELS, MF_TOAST_LABELS, MF_TOUR_LABELS, MF_TRANSFER_LIST_LABELS, MF_TREE_SELECT_LABELS, SlidingIndicator, ValueAccessorBase, cn, containerSurface, controlSize, controlSurface, disabledRecipe, errorRecipe, exitDurationMs, focusRecipe, glassSurface, inlineStartRatio, isRtl, mergeLabels, mfLabelsEn, nextId, overlayPositions, overlaySurface, parseCssDuration, pointerPositions, prefersReducedMotion, pressRecipe, provideMesgflowUi, scrollFromInlineStart, transitionRecipe };
|
|
766
|
+
export type { DeepPartial, MfAgendaLabels, MfAlertLabels, MfAuthCardLabels, MfAvatarGroupLabels, MfBoxInputLabels, MfBreadcrumbLabels, MfCarouselLabels, MfCharacterCountLabels, MfChartLabels, MfChipLabels, MfColorPickerLabels, MfComboboxLabels, MfCommandLabels, MfCommonLabels, MfControlSize, MfCopyLabels, MfCountdownLabels, MfDatePickerLabels, MfDialogLabels, MfDropzoneLabels, MfFileUploadLabels, MfInlineEditLabels, MfInviteMembersLabels, MfLabels, MfLightboxLabels, MfMentionLabels, MfNotificationCenterLabels, MfOtpInputLabels, MfPaginationLabels, MfPanelGroupLabels, MfPasswordInputLabels, MfPlacement, MfProgressLabels, MfQrCodeLabels, MfRatingLabels, MfSearchInputLabels, MfSelectLabels, MfSidebarLabels, MfSize, MfSliderLabels, MfSortableLabels, MfSplitButtonLabels, MfStatTileLabels, MfStepperLabels, MfTableFilterLabels, MfTableFilterOperatorLabels, MfTableLabels, MfTablePaginationLabels, MfTabsLabels, MfThemeSwitcherLabels, MfTimePickerLabels, MfToastLabels, MfTone, MfTourLabels, MfTransferListLabels, MfTreeSelectLabels, ProvideMesgflowUiOptions, SlidingIndicatorAxis };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { TemplateRef } from '@angular/core';
|
|
2
|
+
import { Signal, ComponentRef, TemplateRef } from '@angular/core';
|
|
3
3
|
import * as _mesgflow_ui_kit_core from '@mesgflow/ui-kit/core';
|
|
4
4
|
import * as i1 from '@angular/cdk/drag-drop';
|
|
5
5
|
import { DialogRef } from '@angular/cdk/dialog';
|
|
6
|
+
import { OverlayRef } from '@angular/cdk/overlay';
|
|
7
|
+
import { Observable } from 'rxjs';
|
|
6
8
|
import { ComponentType } from '@angular/cdk/portal';
|
|
7
9
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
8
10
|
import { VariantProps } from 'class-variance-authority';
|
|
@@ -160,9 +162,20 @@ declare class Dialog {
|
|
|
160
162
|
* kuralının uygulama noktası: dialog gövdesi + içerik aynı anda kaymaz.
|
|
161
163
|
*/
|
|
162
164
|
readonly fillBody: _angular_core.InputSignal<boolean>;
|
|
165
|
+
/**
|
|
166
|
+
* `true` (varsayılan): kapat (X) düğmesi `close` olayını yayınladıktan SONRA
|
|
167
|
+
* dialog'u kendisi de kapatır (`MfDialogRef.close()` — idempotent, tüketicinin
|
|
168
|
+
* `(close)` handler'ında sonuçla yaptığı kapanış önce davranır ve kazanır).
|
|
169
|
+
* `false`: yalnızca `close` yayınlanır — kapanışı tamamen tüketici yönetir.
|
|
170
|
+
*/
|
|
171
|
+
readonly autoClose: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
163
172
|
readonly close: _angular_core.OutputEmitterRef<void>;
|
|
164
173
|
protected readonly surface: DialogSurface;
|
|
165
174
|
protected readonly labels: _angular_core.Signal<_mesgflow_ui_kit_core.MfDialogLabels>;
|
|
175
|
+
/** Görünür başlığın id'si — CDK konteynerinin `aria-labelledby`'ı buna bağlanır. */
|
|
176
|
+
protected readonly titleId: string;
|
|
177
|
+
private readonly mfRef;
|
|
178
|
+
private readonly cdkRef;
|
|
166
179
|
private readonly elementRef;
|
|
167
180
|
private readonly cdkDrag;
|
|
168
181
|
private readonly scrollBody;
|
|
@@ -184,6 +197,8 @@ declare class Dialog {
|
|
|
184
197
|
protected readonly headerBorder: _angular_core.Signal<boolean>;
|
|
185
198
|
protected readonly footerBorder: _angular_core.Signal<boolean>;
|
|
186
199
|
constructor();
|
|
200
|
+
/** Kapat (X): önce `close` olayı (tüketici sonuçla kapatabilsin), sonra — `autoClose` ise — ref'in kendisi. */
|
|
201
|
+
protected onDismiss(): void;
|
|
187
202
|
protected updateScrollShadow(): void;
|
|
188
203
|
/**
|
|
189
204
|
* Ctrl/Cmd+Enter — tek yerde çözülür, her form bedava kazanır. Kaydet düğmesi
|
|
@@ -194,9 +209,72 @@ declare class Dialog {
|
|
|
194
209
|
*/
|
|
195
210
|
protected requestSubmit(): void;
|
|
196
211
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Dialog, never>;
|
|
197
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Dialog, "mf-dialog", ["mfDialog"], { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fillBody": { "alias": "fillBody"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, ["[dialog-header]", "*", "[dialog-footer]"], true, [{ directive: typeof i1.CdkDrag; inputs: {}; outputs: {}; }]>;
|
|
212
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Dialog, "mf-dialog", ["mfDialog"], { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "fillBody": { "alias": "fillBody"; "required": false; "isSignal": true; }; "autoClose": { "alias": "autoClose"; "required": false; "isSignal": true; }; }, { "close": "close"; }, never, ["[dialog-header]", "*", "[dialog-footer]"], true, [{ directive: typeof i1.CdkDrag; inputs: {}; outputs: {}; }]>;
|
|
198
213
|
}
|
|
199
214
|
|
|
215
|
+
/** `open` → (`close()` çağrıldı, çıkış animasyonu oynuyor) `closing` → (dispose edildi) `closed`. */
|
|
216
|
+
type DialogState = 'open' | 'closing' | 'closed';
|
|
217
|
+
/**
|
|
218
|
+
* `DialogService.open()`/`openDrawer()`'ın döndürdüğü, kite ait dialog referansı.
|
|
219
|
+
*
|
|
220
|
+
* CDK `DialogRef`'in günlük kullanılan yüzeyini (`close`, `closed`,
|
|
221
|
+
* `componentInstance`, `disableClose`, `backdropClick`, `keydownEvents` …)
|
|
222
|
+
* birebir DELEGE eder — yani eski `ref.closed.subscribe(...)` kodu aynen derlenir.
|
|
223
|
+
* Üstüne kitin kendi dünyasını ekler:
|
|
224
|
+
*
|
|
225
|
+
* - `afterClosed()` — `await` edilebilir sonuç (çıkış animasyonu BİTTİKTEN sonra çözülür).
|
|
226
|
+
* - `state` — `'open' | 'closing' | 'closed'` signal'i (şablonda/`computed`'ta okunur).
|
|
227
|
+
* - `surface` — boyut/maximize/kirli-form durumuna tipli erişim (`setSize`, `toggleMaximize`,
|
|
228
|
+
* `registerDirty`, `markClean` kısayolları).
|
|
229
|
+
* - `cdk` — ham CDK referansı (kaçış kapısı; ör. `updatePosition()`).
|
|
230
|
+
*
|
|
231
|
+
* `close()` İDEMPOTENT'tir: çıkış animasyonu sürerken ya da kirli-form onayı
|
|
232
|
+
* açıkken gelen ek çağrılar yok sayılır (bkz. `dialog.service.ts` `closePredicate`).
|
|
233
|
+
*
|
|
234
|
+
* İçerik component'i içinde `injectDialogRef<Sonuç>()` ile alınır.
|
|
235
|
+
*/
|
|
236
|
+
declare class MfDialogRef<R = unknown, C = unknown> {
|
|
237
|
+
readonly cdk: DialogRef<R, C>;
|
|
238
|
+
readonly surface: DialogSurface;
|
|
239
|
+
readonly closed: Observable<R | undefined>;
|
|
240
|
+
readonly backdropClick: Observable<MouseEvent>;
|
|
241
|
+
readonly keydownEvents: Observable<KeyboardEvent>;
|
|
242
|
+
readonly outsidePointerEvents: Observable<MouseEvent>;
|
|
243
|
+
readonly overlayRef: OverlayRef;
|
|
244
|
+
readonly id: string;
|
|
245
|
+
private readonly isClosed;
|
|
246
|
+
private readonly result;
|
|
247
|
+
/** Dialog'un yaşam döngüsü — `closing` çıkış animasyonu boyunca. */
|
|
248
|
+
readonly state: Signal<DialogState>;
|
|
249
|
+
constructor(cdk: DialogRef<R, C>, surface: DialogSurface);
|
|
250
|
+
/** Açılan component örneği (şablonla açıldıysa ve kapandıktan sonra `null`). */
|
|
251
|
+
get componentInstance(): C | null;
|
|
252
|
+
get componentRef(): ComponentRef<C> | null;
|
|
253
|
+
/** `true` iken ESC/backdrop kapatmaz; programatik `close()` yine çalışır. */
|
|
254
|
+
get disableClose(): boolean | undefined;
|
|
255
|
+
set disableClose(value: boolean | undefined);
|
|
256
|
+
/** Dialog'u (çıkış animasyonu + kirli-form koruması üzerinden) kapatır. İdempotent. */
|
|
257
|
+
close(result?: R): void;
|
|
258
|
+
/** Kapanış tamamlandığında (animasyon dahil) sonuçla çözülür; ESC/backdrop'ta `undefined`. */
|
|
259
|
+
afterClosed(): Promise<R | undefined>;
|
|
260
|
+
/** Açıkken genişlik basamağını değiştirir (`sm`…`xl`, `full`). */
|
|
261
|
+
setSize(size: DialogSize): void;
|
|
262
|
+
toggleMaximize(): void;
|
|
263
|
+
/** Kirli-form sorusunu kaydeder — ESC/backdrop/X kapanışında `true` dönerse onay sorulur. */
|
|
264
|
+
registerDirty(check: () => boolean): void;
|
|
265
|
+
/** Başarılı kayıttan hemen önce — sonraki `close()` kirli-form onayı sormaz. */
|
|
266
|
+
markClean(): void;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* `DIALOG_DATA`'nın kite ait adı — AYNI token nesnesi, CDK'dan ayrıca import
|
|
270
|
+
* etmeye gerek kalmasın diye. `inject(MF_DIALOG_DATA)` ≡ `injectDialogData()`.
|
|
271
|
+
*/
|
|
272
|
+
declare const MF_DIALOG_DATA: _angular_core.InjectionToken<any>;
|
|
273
|
+
/** İçerik component'inde `DialogService.open(..., { data })` ile geçilen veriyi okur. */
|
|
274
|
+
declare function injectDialogData<D>(): D;
|
|
275
|
+
/** İçerik component'inde kendi dialog referansını alır — `ref.close(sonuç)`. */
|
|
276
|
+
declare function injectDialogRef<R = unknown, C = unknown>(): MfDialogRef<R, C>;
|
|
277
|
+
|
|
200
278
|
/**
|
|
201
279
|
* `<button mfDialogResizeHandle [ariaLabel]="...">` — `Dialog`'un (dialog.ts)
|
|
202
280
|
* sağ-alt köşesinde, `DialogSurface.customSize`'ı besleyen serbest boyutlandırma
|
|
@@ -231,9 +309,10 @@ declare class DialogResizeHandle {
|
|
|
231
309
|
* engelleme davranışının TAMAMI CDK'dan geliyor, burada TEKRAR YAZILMADI — bkz.
|
|
232
310
|
* projects/ui-kit/README.md "a11y checklist" bölümündeki "elle yazmak son çare" ilkesi).
|
|
233
311
|
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
312
|
+
* `open()` kite ait `MfDialogRef` döndürür (CDK `DialogRef` yüzeyini delege eder +
|
|
313
|
+
* `afterClosed()`/`state`/`surface`). İçerik component'i `injectDialogRef()`/
|
|
314
|
+
* `injectDialogData()` (bkz. dialog-ref.ts) kullanır — CDK'nın kendi `DialogRef`/
|
|
315
|
+
* `DIALOG_DATA` token'larını inject etmek de çalışmaya devam eder. Boyut/placement/maximize/drag/resize/sheet durumu
|
|
237
316
|
* `DialogSurface` (bkz. o dosya) üzerinden, `providers` ile o dialog'un injector'ına
|
|
238
317
|
* verilir — `Dialog` (dialog.ts) bunu DI'dan okuyarak render eder.
|
|
239
318
|
*
|
|
@@ -250,7 +329,9 @@ declare class DialogResizeHandle {
|
|
|
250
329
|
* kendi reaktif `animate-dialog-out`/`animate-sheet-out`/`animate-drawer-out` class'ıyla
|
|
251
330
|
* görsel olarak kapanır), ikinci çağrıda (zaten `closing()===true`) gerçek `dispose()`'a
|
|
252
331
|
* izin veriyoruz. ESC/backdrop/programatik `dialogRef.close(...)` HEPSİ bu predicate'ten
|
|
253
|
-
* geçtiği için davranış tekdüze.
|
|
332
|
+
* geçtiği için davranış tekdüze. Animasyon sürerken gelen EK `close()` çağrıları
|
|
333
|
+
* yok sayılır (`disposeArmed` yalnızca zamanlayıcı tarafından kurulur) — X düğmesi +
|
|
334
|
+
* tüketicinin `(close)` handler'ı aynı anda kapatsa bile animasyon kesilmez. `prefers-reduced-motion` gecikmeyi tamamen atlıyor —
|
|
254
335
|
* AMA kirli-form kontrolünden SONRA: koruma reduced-motion kullanıcılarında da çalışmalı.
|
|
255
336
|
*
|
|
256
337
|
* **Kirli form koruması**: `surface.isDirty()` `true` dönerse kapanış iptal edilip
|
|
@@ -271,7 +352,7 @@ declare class DialogService {
|
|
|
271
352
|
* Bir component'i ya da bir `TemplateRef'i açar (şablon yolu `<mf-drawer>` gibi
|
|
272
353
|
* bildirimsel sarmalayıcılar içindir — şablonun injector'ı da `DialogSurface'i görür).
|
|
273
354
|
*/
|
|
274
|
-
open<R = void, D = undefined, C = unknown>(component: ComponentType<C> | TemplateRef<C>, options?: DialogOptions<D>):
|
|
355
|
+
open<R = void, D = undefined, C = unknown>(component: ComponentType<C> | TemplateRef<C>, options?: DialogOptions<D>): MfDialogRef<R, C>;
|
|
275
356
|
/**
|
|
276
357
|
* Kayıt oluştur/düzenle formlarının TEK açılış noktası — sağdan drawer.
|
|
277
358
|
* `maximizable` bilerek zorla kapatılıyor: drawer zaten tam yükseklik, büyütme
|
|
@@ -283,7 +364,7 @@ declare class DialogService {
|
|
|
283
364
|
*/
|
|
284
365
|
openDrawer<R = void, D = undefined, C = unknown>(component: ComponentType<C>, options?: Omit<DialogOptions<D>, 'placement'> & {
|
|
285
366
|
placement?: Exclude<DialogPlacement, 'center'>;
|
|
286
|
-
}):
|
|
367
|
+
}): MfDialogRef<R, C>;
|
|
287
368
|
/** `Promise<boolean>` döner — `if (await dialog.confirm(...))` çağıran taraf için `.subscribe()` zincirinden daha sade. */
|
|
288
369
|
confirm(data: ConfirmDialogData): Promise<boolean>;
|
|
289
370
|
/**
|
|
@@ -298,8 +379,12 @@ declare class DialogService {
|
|
|
298
379
|
* kaldırıldı).
|
|
299
380
|
*/
|
|
300
381
|
confirmDiscard(): Promise<boolean>;
|
|
301
|
-
/**
|
|
302
|
-
|
|
382
|
+
/**
|
|
383
|
+
* Tüketici bir ref'i kapatmadan ÖNCE kirli mi diye sormak istiyorsa — kendi `closePredicate`'inin
|
|
384
|
+
* async akışıyla yarışmamak için `DialogSurface`'e doğrudan erişim. `MfDialogRef` için
|
|
385
|
+
* `ref.surface` tercih edilir; ham CDK ref'i (ör. içerikte inject edilen) de kabul edilir.
|
|
386
|
+
*/
|
|
387
|
+
getSurface(ref: DialogRef<any, any> | MfDialogRef<any, any>): DialogSurface | undefined;
|
|
303
388
|
/** `confirm()`'in silme kısayolu — `tone:'danger'` + varsayılan "Sil" etiketi. */
|
|
304
389
|
confirmDelete(data: Omit<ConfirmDialogData, 'tone'>): Promise<boolean>;
|
|
305
390
|
/** Tek butonlu bilgilendirme modu — sonuç önemsiz olduğu için `Promise<void>` döner. */
|
|
@@ -361,5 +446,5 @@ declare const dialogVariants: (props?: ({
|
|
|
361
446
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
362
447
|
type DialogVariants = VariantProps<typeof dialogVariants>;
|
|
363
448
|
|
|
364
|
-
export { ConfirmDialog, Dialog, DialogResizeHandle, DialogService, DialogSurface, dialogVariants };
|
|
365
|
-
export type { ConfirmDialogData, ConfirmTone, DialogCustomSize, DialogOptions, DialogPlacement, DialogSize, DialogVariants, DrawerSide };
|
|
449
|
+
export { ConfirmDialog, Dialog, DialogResizeHandle, DialogService, DialogSurface, MF_DIALOG_DATA, MfDialogRef, dialogVariants, injectDialogData, injectDialogRef };
|
|
450
|
+
export type { ConfirmDialogData, ConfirmTone, DialogCustomSize, DialogOptions, DialogPlacement, DialogSize, DialogState, DialogVariants, DrawerSide };
|
|
@@ -12,6 +12,10 @@ import * as _angular_core from '@angular/core';
|
|
|
12
12
|
* - `aria-required="true"` → `required` iken.
|
|
13
13
|
* Hata metni `role="alert"` DEĞİL, `aria-live="polite"` — her tuş vuruşunda
|
|
14
14
|
* ekran okuyucuyu kesmesin. `error` `string | undefined` kabul eder.
|
|
15
|
+
*
|
|
16
|
+
* Etiket satırında eylem: `[mfFieldLabelAction]` işaretli çocuk (ör. "Şifremi
|
|
17
|
+
* unuttum" bağlantısı) etiketin sağına, label'ın KARDEŞİ olarak projekte edilir —
|
|
18
|
+
* bkz. `FieldLabelAction`. Etiket boşsa da satır eylem için çizilir.
|
|
15
19
|
*/
|
|
16
20
|
declare class Field {
|
|
17
21
|
readonly label: _angular_core.InputSignal<string>;
|
|
@@ -21,6 +25,8 @@ declare class Field {
|
|
|
21
25
|
readonly required: _angular_core.InputSignal<boolean>;
|
|
22
26
|
/** `true` ise kalan yüksekliği doldurur (`flex-1 min-h-0`). */
|
|
23
27
|
readonly grow: _angular_core.InputSignal<boolean>;
|
|
28
|
+
private readonly labelAction;
|
|
29
|
+
protected readonly hasLabelRow: _angular_core.Signal<boolean>;
|
|
24
30
|
private readonly host;
|
|
25
31
|
private readonly baseId;
|
|
26
32
|
protected readonly hintId: string;
|
|
@@ -29,7 +35,23 @@ declare class Field {
|
|
|
29
35
|
protected readonly describedId: _angular_core.Signal<string | null>;
|
|
30
36
|
constructor();
|
|
31
37
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Field, never>;
|
|
32
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Field, "mf-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "for": { "alias": "for"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "grow": { "alias": "grow"; "required": false; "isSignal": true; }; }, {},
|
|
38
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Field, "mf-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "for": { "alias": "for"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "grow": { "alias": "grow"; "required": false; "isSignal": true; }; }, {}, ["labelAction"], ["[mfFieldLabelAction]", "*"], true, never>;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* `<a mfLink mfFieldLabelAction routerLink="/forgot-password">Şifremi unuttum</a>` —
|
|
43
|
+
* `mf-field` içine konan öğeyi etiket satırının SAĞINA taşır (yaygın "etiket + eylem"
|
|
44
|
+
* kalıbı: parola alanının yanında "Şifremi unuttum").
|
|
45
|
+
*
|
|
46
|
+
* Öğe `<label>`'ın İÇİNE değil, KARDEŞİNE projekte edilir — label içindeki bir bağlantı
|
|
47
|
+
* tıklamayı alana yönlendirir ve ekran okuyucuda etiket adına karışırdı. DOM sırası =
|
|
48
|
+
* görsel sıra (etiket → eylem → alan), sekme sırası da buna uyar.
|
|
49
|
+
*
|
|
50
|
+
* `ms-auto`: etiket yoksa ya da dar ekranda alt satıra sarıldığında da sağda kalır.
|
|
51
|
+
*/
|
|
52
|
+
declare class FieldLabelAction {
|
|
53
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FieldLabelAction, never>;
|
|
54
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FieldLabelAction, "[mfFieldLabelAction]", never, {}, {}, never, never, true, never>;
|
|
33
55
|
}
|
|
34
56
|
|
|
35
|
-
export { Field };
|
|
57
|
+
export { Field, FieldLabelAction };
|
|
@@ -164,6 +164,8 @@ declare class InputSuffix {
|
|
|
164
164
|
* textarea `rows` arttıkça bu tabanın üstüne doğal büyüyor. `min-h-(--control-h-*)`
|
|
165
165
|
* — Tailwind v4'ün parantezli kısayolu, `--control-h-*` token'ına (radius.css)
|
|
166
166
|
* doğrudan referans, ayrı bir `min-h-control-*` utility'si tanımlamaya gerek yok.
|
|
167
|
+
* `py-*` + satır yüksekliği + kenarlık token'ı AŞMAMALI — aşarsa `min-h` etkisiz kalır ve
|
|
168
|
+
* alan `mf-input-group`/`mfButton`'dan uzun çıkar (lg eskiden `py-2` + `text-base` = 42px ≠ 40px).
|
|
167
169
|
*
|
|
168
170
|
* `hasError` (invalid DEĞİL): `@angular/forms/signals`'ın `[formField]`
|
|
169
171
|
* directive'i, AYNI native elemandaki başka bir directive'in `invalid`/
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import { ControlValueAccessor } from '@angular/forms';
|
|
3
|
-
import { ValueAccessorBase } from '@mesgflow/ui-kit/core';
|
|
3
|
+
import { ValueAccessorBase, MfSize } from '@mesgflow/ui-kit/core';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Parola alanının `autocomplete` ipucu — parola yöneticileri/tarayıcı bunu okur:
|
|
7
|
+
* - `current-password` (varsayılan): giriş formu — kayıtlı parolayı doldurur.
|
|
8
|
+
* - `new-password`: kayıt/parola değiştirme — güçlü parola ÖNERİR, eskisini doldurmaz
|
|
9
|
+
* (hem "yeni" hem "tekrar" alanında kullanılır).
|
|
10
|
+
* - `off`: modern tarayıcılar parola alanlarında çoğunlukla YOK SAYAR — sadece
|
|
11
|
+
* gerçekten tek kullanımlık alanlarda (ör. API anahtarı onayı) kullanın.
|
|
12
|
+
* - Diğer geçerli token dizileri de kabul edilir (ör. `section-billing current-password`).
|
|
13
|
+
*/
|
|
14
|
+
type PasswordAutocomplete = 'current-password' | 'new-password' | 'off' | (string & {});
|
|
5
15
|
/**
|
|
6
16
|
* `<mf-password-input [(value)]="password" />` — `InputGroup` üstüne kompoze
|
|
7
17
|
* edilmiş, sağda göster/gizle düğmesi taşıyan parola alanı (emsal:
|
|
@@ -9,27 +19,54 @@ import { ValueAccessorBase } from '@mesgflow/ui-kit/core';
|
|
|
9
19
|
* kullanma deseni). `type="password"`/`"text"` arasında geçiş SADECE
|
|
10
20
|
* görünürlük içindir — değer her zaman `value` model'inde düz metin olarak
|
|
11
21
|
* tutulur.
|
|
22
|
+
*
|
|
23
|
+
* Parola yöneticisi uyumu: `autocomplete` (varsayılan `current-password`) ve
|
|
24
|
+
* `name` iç `<input>`'a iletilir; `autocapitalize="off"`/`spellcheck="false"`
|
|
25
|
+
* sabit — parola görünür moda (`type="text"`) geçtiğinde de mobil klavye büyük
|
|
26
|
+
* harfe çevirmez, yazım denetimi parolayı bir sözlük servisine göndermez.
|
|
27
|
+
* Signal Forms `[formField]` bağlandığında `name`/`required`/`readonly`/`disabled`
|
|
28
|
+
* alan durumundan OTOMATİK doldurulur.
|
|
29
|
+
*
|
|
30
|
+
* `size`: `input[mfInput]`/`mf-input-group` ile AYNI yükseklik/dolgu/font token'ları —
|
|
31
|
+
* aynı boydaki düz bir `mfInput` ile yan yana hizalı durur; göster/gizle ikonu boyla büyür.
|
|
32
|
+
*
|
|
33
|
+
* Önek: `[mfInputPrefix]` işaretli çocuk (ör. `<span mfIcon mfInputPrefix>lock</span>`)
|
|
34
|
+
* alanın soluna, `mf-input-group`'un önek yuvasına projekte edilir — metin başlangıcı
|
|
35
|
+
* önekli bir `mf-input-group` ile aynı. Önek dekoratif kabul edilir (`aria-hidden`).
|
|
12
36
|
*/
|
|
13
37
|
declare class PasswordInput extends ValueAccessorBase<string> implements ControlValueAccessor {
|
|
14
38
|
readonly value: _angular_core.ModelSignal<string>;
|
|
39
|
+
readonly size: _angular_core.InputSignal<MfSize>;
|
|
15
40
|
readonly placeholder: _angular_core.InputSignal<string>;
|
|
16
|
-
readonly disabled: _angular_core.
|
|
17
|
-
readonly hasError: _angular_core.
|
|
41
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
42
|
+
readonly hasError: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
18
43
|
/** İç `<input>`'un id'si — harici bir `<label for>` / `mf-field for` ile ilişkilendirmek için. */
|
|
19
44
|
readonly inputId: _angular_core.InputSignal<string | undefined>;
|
|
20
45
|
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
21
|
-
readonly fullWidth: _angular_core.
|
|
46
|
+
readonly fullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
22
47
|
readonly showLabel: _angular_core.InputSignal<string | undefined>;
|
|
23
48
|
readonly hideLabel: _angular_core.InputSignal<string | undefined>;
|
|
49
|
+
/** Parola yöneticisi ipucu — bkz. `PasswordAutocomplete`. */
|
|
50
|
+
readonly autocomplete: _angular_core.InputSignal<PasswordAutocomplete>;
|
|
51
|
+
/** İç `<input>`'un `name`'i — form gönderimi ve parola yöneticilerinin alanı tanıması için. */
|
|
52
|
+
readonly name: _angular_core.InputSignal<string | undefined>;
|
|
53
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
54
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
24
55
|
private readonly passwordLabels;
|
|
25
56
|
protected readonly effectiveShowLabel: _angular_core.Signal<string>;
|
|
26
57
|
protected readonly effectiveHideLabel: _angular_core.Signal<string>;
|
|
58
|
+
/** Reactive Forms `control.disable()` — `disabled` girdisiyle VEYA'lanır. */
|
|
59
|
+
private readonly formDisabled;
|
|
60
|
+
protected readonly isDisabled: _angular_core.Signal<boolean>;
|
|
27
61
|
protected readonly visible: _angular_core.WritableSignal<boolean>;
|
|
28
|
-
|
|
62
|
+
protected readonly toggleIconSize: _angular_core.Signal<number>;
|
|
63
|
+
writeValue(value: string | null): void;
|
|
64
|
+
setDisabledState(disabled: boolean): void;
|
|
29
65
|
protected toggle(): void;
|
|
30
66
|
protected onInput(raw: string): void;
|
|
31
67
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PasswordInput, never>;
|
|
32
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordInput, "mf-password-input", ["mfPasswordInput"], { "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; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never,
|
|
68
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordInput, "mf-password-input", ["mfPasswordInput"], { "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "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; }; "showLabel": { "alias": "showLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, ["[mfInputPrefix]"], true, never>;
|
|
33
69
|
}
|
|
34
70
|
|
|
35
71
|
export { PasswordInput };
|
|
72
|
+
export type { PasswordAutocomplete };
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import * as _mesgflow_ui_kit_qr_code from '@mesgflow/ui-kit/qr-code';
|
|
2
|
+
import * as _angular_core from '@angular/core';
|
|
3
|
+
|
|
4
|
+
/** Hata düzeltme seviyesi — kurtarılabilir hasar oranı: L ~%7, M ~%15, Q ~%25, H ~%30. */
|
|
5
|
+
type QrEcc = 'L' | 'M' | 'Q' | 'H';
|
|
6
|
+
interface QrEncodeOptions {
|
|
7
|
+
/** Varsayılan `'M'`. */
|
|
8
|
+
ecc?: QrEcc;
|
|
9
|
+
/** 1–40, varsayılan 1. */
|
|
10
|
+
minVersion?: number;
|
|
11
|
+
/** 1–40, varsayılan 40. */
|
|
12
|
+
maxVersion?: number;
|
|
13
|
+
/**
|
|
14
|
+
* Seçilen sürüm (boyut) büyümeden daha yüksek bir hata düzeltme seviyesi sığıyorsa
|
|
15
|
+
* onu kullanır — aynı boyutta bedava dayanıklılık. Varsayılan `true`.
|
|
16
|
+
*/
|
|
17
|
+
boostEcc?: boolean;
|
|
18
|
+
}
|
|
19
|
+
interface QrMatrix {
|
|
20
|
+
/** Modül cinsinden kenar (21–177) — sessiz bölge (quiet zone) HARİÇ. */
|
|
21
|
+
readonly size: number;
|
|
22
|
+
/** 1–40. */
|
|
23
|
+
readonly version: number;
|
|
24
|
+
/** Gerçekte kullanılan seviye (`boostEcc` ile istenenden yüksek olabilir). */
|
|
25
|
+
readonly ecc: QrEcc;
|
|
26
|
+
readonly mask: number;
|
|
27
|
+
/** `modules[y][x]` — `true` koyu modül. */
|
|
28
|
+
readonly modules: readonly (readonly boolean[])[];
|
|
29
|
+
/** `isFunction[y][x]` — finder/timing/alignment/format/version modülü (veri değil). */
|
|
30
|
+
readonly isFunction: readonly (readonly boolean[])[];
|
|
31
|
+
}
|
|
32
|
+
/** İçerik, `maxVersion` ve seçilen `ecc` ile sığmıyor. */
|
|
33
|
+
declare class QrCapacityError extends Error {
|
|
34
|
+
constructor();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Metni (UTF-8; tamamen rakamsa numeric, büyük harf/rakam/` $%*+-./:` ise
|
|
38
|
+
* alphanumeric kip) ya da ham baytları bir QR matrisine kodlar. En küçük uygun
|
|
39
|
+
* sürümü ve en düşük cezalı maskeyi seçer.
|
|
40
|
+
*
|
|
41
|
+
* @throws {QrCapacityError} içerik sığmıyorsa.
|
|
42
|
+
*/
|
|
43
|
+
declare function encodeQr(data: string | Uint8Array, options?: QrEncodeOptions): QrMatrix;
|
|
44
|
+
|
|
45
|
+
/** Veri modüllerinin çizim biçimi. */
|
|
46
|
+
type QrModuleShape = 'square' | 'rounded' | 'dots';
|
|
47
|
+
/** Üç köşedeki konum (finder) desenlerinin biçimi. */
|
|
48
|
+
type QrFinderShape = 'square' | 'rounded';
|
|
49
|
+
interface QrGeometry {
|
|
50
|
+
/** Modül cinsinden QR kenarı (sessiz bölge hariç). */
|
|
51
|
+
readonly size: number;
|
|
52
|
+
/** Veri + timing + alignment modülleri — tek `<path>` (tek path = komşu modüller arasında AA dikişi yok). */
|
|
53
|
+
readonly dataPath: string;
|
|
54
|
+
/** Finder dış halkaları (`fill-rule="evenodd"`). */
|
|
55
|
+
readonly finderOuterPath: string;
|
|
56
|
+
/** Finder iç 3×3 gözleri. */
|
|
57
|
+
readonly finderInnerPath: string;
|
|
58
|
+
/** Logo için boşaltılan kare (modül); logo yoksa 0. */
|
|
59
|
+
readonly excavated: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Logo için merkezde boşaltılacak kare kenarı (modül). QR kenarıyla aynı
|
|
63
|
+
* paritede (tek) tutulur ki kare tam ortalansın; oran 0–0.3 arası kırpılır
|
|
64
|
+
* (H seviyesi ~%30 hasarı kurtarır — alan olarak 0.3² ≈ %9, güvenli pay).
|
|
65
|
+
*/
|
|
66
|
+
declare function excavationSize(size: number, ratio: number): number;
|
|
67
|
+
/** Kodlanmış matrisi saf SVG yol dizelerine çevirir — DOM'suz, `computed()` içinde çağrılır. */
|
|
68
|
+
declare function qrGeometry(matrix: QrMatrix, shape: QrModuleShape, finder: QrFinderShape, logoRatio: number): QrGeometry;
|
|
69
|
+
interface QrSvgStringOptions {
|
|
70
|
+
/** Sessiz bölge (modül), varsayılan 4 — baskı/dışa aktarım için standart. */
|
|
71
|
+
margin?: number;
|
|
72
|
+
/** Piksel kenar, varsayılan 256. */
|
|
73
|
+
pixelSize?: number;
|
|
74
|
+
foreground?: string;
|
|
75
|
+
background?: string;
|
|
76
|
+
}
|
|
77
|
+
/** Bağımsız bir `<svg>` belgesi (indirme/paylaşım için) — logo katmanı HTML olduğu için dahil DEĞİL. */
|
|
78
|
+
declare function qrSvgString(geometry: QrGeometry, options?: QrSvgStringOptions): string;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* `<mf-qr-code data="…"><img mfQrCodeLogo src="logo.svg" alt="" /></mf-qr-code>` —
|
|
82
|
+
* QR'ın ortasına yerleştirilen logo. Varlığı hata düzeltmeyi otomatik `H`'ye
|
|
83
|
+
* yükseltir ve altındaki modülleri boşaltır. Dekoratif olduğu için `alt=""`
|
|
84
|
+
* önerilir — erişilebilir ad `mf-qr-code`'un kendi `aria-label`'ındadır.
|
|
85
|
+
*/
|
|
86
|
+
declare class QrCodeLogo {
|
|
87
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<QrCodeLogo, never>;
|
|
88
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<QrCodeLogo, "[mfQrCodeLogo]", never, {}, {}, never, never, true, never>;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* `<mf-qr-code data="https://mesgflow.dev" />`
|
|
92
|
+
*
|
|
93
|
+
* Saf SVG QR kod — kodlayıcı kitin içinde (`qr-encoder.ts`, Nayuki portu), ek
|
|
94
|
+
* bağımlılık yok; tüm geometri `computed()` ile üretilir, DOM API'si
|
|
95
|
+
* kullanılmaz (SSR güvenli).
|
|
96
|
+
*
|
|
97
|
+
* - `shape`: `square` (klasik) · `rounded` (akışkan, komşu modüllerle birleşen) · `dots`.
|
|
98
|
+
* - `finder`: köşe desenleri `square` / `rounded`.
|
|
99
|
+
* - `ecc`: L/M/Q/H — logo varsa otomatik `H`. Aynı boyutta daha yüksek seviye
|
|
100
|
+
* sığıyorsa zaten yükseltilir (`boostEcc`).
|
|
101
|
+
* - `margin`: sessiz bölge (modül). Okuyucular ≥ 2 ister; baskı için 4.
|
|
102
|
+
* - Logo: `[mfQrCodeLogo]` içerik (bkz. `QrCodeLogo`).
|
|
103
|
+
* - `toSvgString()`: indirme/paylaşım için bağımsız SVG.
|
|
104
|
+
*
|
|
105
|
+
* Renk: varsayılan beyaz kart üstünde siyah modül — BİLİNÇLİ ham renk istisnası:
|
|
106
|
+
* kameralar koyu-üstünde-açık (ters) QR'ı güvenilir okuyamaz, bu yüzden koyu temada
|
|
107
|
+
* da açık kart kalır. `foreground`/`background` (herhangi bir CSS rengi, `var(--…)`
|
|
108
|
+
* dahil) ile değiştirilir — satır içi stil olduğu için sınıf sırası çakışması yok;
|
|
109
|
+
* modüller `currentColor`, logo kutusu zemini miras alır. Koyu modül / açık zemin ve
|
|
110
|
+
* yeterli kontrast (≥ ~4:1) korunmalı.
|
|
111
|
+
*
|
|
112
|
+
* İçerik sığmazsa hata fırlatmaz: yerinde erişilebilir bir hata durumu çizer ve
|
|
113
|
+
* `encoded` çıkışı `null` yayar.
|
|
114
|
+
*/
|
|
115
|
+
declare class QrCode {
|
|
116
|
+
/** Kodlanacak içerik (URL, metin, `WIFI:…`, `mailto:` vb.). */
|
|
117
|
+
readonly data: _angular_core.InputSignal<string>;
|
|
118
|
+
/** Piksel kenar (sessiz bölge dahil). */
|
|
119
|
+
readonly size: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
120
|
+
readonly ecc: _angular_core.InputSignal<QrEcc>;
|
|
121
|
+
/** Sessiz bölge, modül cinsinden. */
|
|
122
|
+
readonly margin: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
123
|
+
readonly shape: _angular_core.InputSignal<QrModuleShape>;
|
|
124
|
+
readonly finder: _angular_core.InputSignal<QrFinderShape>;
|
|
125
|
+
/** Logo karesinin QR kenarına oranı (0–0.3); yalnızca `[mfQrCodeLogo]` varken etkili. */
|
|
126
|
+
readonly logoSize: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
127
|
+
/** Modül rengi (CSS rengi). Verilmezse siyah. */
|
|
128
|
+
readonly foreground: _angular_core.InputSignal<string | undefined>;
|
|
129
|
+
/** Zemin rengi (CSS rengi). Verilmezse beyaz. */
|
|
130
|
+
readonly background: _angular_core.InputSignal<string | undefined>;
|
|
131
|
+
/** `role="img"` erişilebilir adı — verilmezse `MF_QR_CODE_LABELS.ariaLabel`. İçeriği anlatan bir ad önerilir. */
|
|
132
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
133
|
+
/** Her yeniden kodlamada matris (hata durumunda `null`). */
|
|
134
|
+
readonly encoded: _angular_core.OutputEmitterRef<QrMatrix | null>;
|
|
135
|
+
private readonly labels;
|
|
136
|
+
private readonly logo;
|
|
137
|
+
protected readonly hasLogo: _angular_core.Signal<boolean>;
|
|
138
|
+
protected readonly effectiveEcc: _angular_core.Signal<QrEcc>;
|
|
139
|
+
protected readonly matrix: _angular_core.Signal<QrMatrix | null>;
|
|
140
|
+
protected readonly geometry: _angular_core.Signal<_mesgflow_ui_kit_qr_code.QrGeometry | null>;
|
|
141
|
+
protected readonly quietZone: _angular_core.Signal<number>;
|
|
142
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
143
|
+
/** Logo kutusunun piksel kenarı — boşaltılan karenin ekrandaki karşılığı. */
|
|
144
|
+
protected readonly logoBoxPx: _angular_core.Signal<number>;
|
|
145
|
+
protected readonly crisp: _angular_core.Signal<boolean>;
|
|
146
|
+
protected readonly effectiveAriaLabel: _angular_core.Signal<string>;
|
|
147
|
+
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
148
|
+
constructor();
|
|
149
|
+
/**
|
|
150
|
+
* Bağımsız SVG belgesi — logo katmanı dahil DEĞİL. İçerik sığmıyorsa `null`.
|
|
151
|
+
* Renkler verilmezse `foreground`/`background` girdileri (onlar da yoksa siyah/beyaz);
|
|
152
|
+
* `var(--…)` gibi bağlama bağlı değerler dışa aktarımda çözülmez — somut renk geçin.
|
|
153
|
+
*/
|
|
154
|
+
toSvgString(options?: QrSvgStringOptions): string | null;
|
|
155
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<QrCode, never>;
|
|
156
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<QrCode, "mf-qr-code", ["mfQrCode"], { "data": { "alias": "data"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ecc": { "alias": "ecc"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "finder": { "alias": "finder"; "required": false; "isSignal": true; }; "logoSize": { "alias": "logoSize"; "required": false; "isSignal": true; }; "foreground": { "alias": "foreground"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "encoded": "encoded"; }, ["logo"], ["[mfQrCodeLogo]"], true, never>;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
export { QrCapacityError, QrCode, QrCodeLogo, encodeQr, excavationSize, qrGeometry, qrSvgString };
|
|
160
|
+
export type { QrEcc, QrEncodeOptions, QrFinderShape, QrGeometry, QrMatrix, QrModuleShape, QrSvgStringOptions };
|
|
@@ -14,8 +14,16 @@ interface SegmentedOption<T> {
|
|
|
14
14
|
* farkı: içerik paneli YOK, sadece bir değer seçimi. ARIA/klavye (roving
|
|
15
15
|
* tabindex, ok tuşu navigasyonu) `@angular/aria/toolbar`'ın
|
|
16
16
|
* `Toolbar`/`ToolbarWidgetGroup`/`ToolbarWidget` pattern'inden geliyor —
|
|
17
|
-
* dokümantasyondaki kompozisyon şekli
|
|
18
|
-
*
|
|
17
|
+
* dokümantasyondaki kompozisyon şekli izlendi (dıştaki `ngToolbar`, içteki
|
|
18
|
+
* `ngToolbarWidgetGroup`).
|
|
19
|
+
*
|
|
20
|
+
* SEÇİM toolbar'dan DEĞİL, bileşenin kendisinden: `@angular/aria` 22.2 toolbar'ın
|
|
21
|
+
* `value`/`valueChange`'ini ve grubun `multi`'sini KALDIRDI (toolbar artık yalnızca
|
|
22
|
+
* gezinme). Kit önceden derlendiği için tüketicide derleme hatası çıkmıyor, tıklama
|
|
23
|
+
* sessizce etkisiz kalıyordu (gerçek bulgu, 0.6–0.8). Artık tıklama + Enter/Space
|
|
24
|
+
* doğrudan `select()`'i çağırır — 22.1 ve 22.2'de aynı çalışır. Widget'ın `[value]`'su
|
|
25
|
+
* yalnızca 22.1'in zorunlu girdisi için duruyor (22.2'de düğmenin DOM `value`'suna düşer).
|
|
26
|
+
* Seçili durum `aria-pressed` ile duyurulur (toolbar hiçbir sürümde vermiyor).
|
|
19
27
|
*
|
|
20
28
|
* Seçili parça core'un `[mfSlidingIndicator]`'ıyla (Tabs ile aynı motor) yay
|
|
21
29
|
* eğrisiyle kayar; aria/toolbar seçili öznitelik vermediği için hedef
|
|
@@ -27,19 +35,19 @@ declare class SegmentedControl<T> extends ValueAccessorBase<T | null> implements
|
|
|
27
35
|
readonly size: _angular_core.InputSignal<"sm" | "md" | null | undefined>;
|
|
28
36
|
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
29
37
|
readonly disabled: _angular_core.InputSignal<boolean>;
|
|
30
|
-
protected readonly toolbarValue: _angular_core.Signal<T[]>;
|
|
31
38
|
protected readonly trackClasses: _angular_core.Signal<string>;
|
|
32
39
|
writeValue(value: T | null): void;
|
|
33
40
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
+
* Seçili seçeneğe tekrar basmak seçimi KALDIRMAZ (segmented control'de her zaman bir
|
|
42
|
+
* seçim durur) ve değişiklik bildirmez; CVA `onChange` yalnızca gerçek bir değişimde.
|
|
43
|
+
*/
|
|
44
|
+
protected select(value: T): void;
|
|
45
|
+
/**
|
|
46
|
+
* Enter/Space: 22.1'in toolbar'ı bu tuşları kendisi yakalayıp `preventDefault` ettiği
|
|
47
|
+
* için düğmenin yerel `click`'i gelmiyordu; 22.2'de geliyor. Burada seçip varsayılanı
|
|
48
|
+
* engellemek iki sürümde de TEK seçim üretir.
|
|
41
49
|
*/
|
|
42
|
-
protected
|
|
50
|
+
protected onActivateKey(event: Event, value: T): void;
|
|
43
51
|
protected itemClasses(option: SegmentedOption<T>): string;
|
|
44
52
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SegmentedControl<any>, never>;
|
|
45
53
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SegmentedControl<any>, "mf-segmented-control", ["mfSegmentedControl"], { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
@@ -54,6 +54,7 @@ export * from '@mesgflow/ui-kit/pagination';
|
|
|
54
54
|
export * from '@mesgflow/ui-kit/password-input';
|
|
55
55
|
export * from '@mesgflow/ui-kit/popover';
|
|
56
56
|
export * from '@mesgflow/ui-kit/progress';
|
|
57
|
+
export * from '@mesgflow/ui-kit/qr-code';
|
|
57
58
|
export * from '@mesgflow/ui-kit/radio';
|
|
58
59
|
export * from '@mesgflow/ui-kit/rating';
|
|
59
60
|
export * from '@mesgflow/ui-kit/scroll-area';
|