@mesgflow/ui-kit 0.7.0 → 0.8.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 +3 -3
- 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 +3 -3
- 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 +18 -18
- 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 +35 -70
- 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 +3 -3
- 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 +1 -1
- 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-password-input.d.ts +33 -5
- package/types/mesgflow-ui-kit-qr-code.d.ts +160 -0
- package/types/mesgflow-ui-kit.d.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesgflow-ui-kit-qr-code.mjs","sources":["../../../projects/ui-kit/qr-code/qr-code-geometry.ts","../../../projects/ui-kit/qr-code/qr-encoder.ts","../../../projects/ui-kit/qr-code/qr-code.ts","../../../projects/ui-kit/qr-code/qr-code.html","../../../projects/ui-kit/qr-code/mesgflow-ui-kit-qr-code.ts"],"sourcesContent":["import type { QrMatrix } from './qr-encoder';\r\n\r\n/** Veri modüllerinin çizim biçimi. */\r\nexport type QrModuleShape = 'square' | 'rounded' | 'dots';\r\n/** Üç köşedeki konum (finder) desenlerinin biçimi. */\r\nexport type QrFinderShape = 'square' | 'rounded';\r\n\r\nexport interface QrGeometry {\r\n /** Modül cinsinden QR kenarı (sessiz bölge hariç). */\r\n readonly size: number;\r\n /** Veri + timing + alignment modülleri — tek `<path>` (tek path = komşu modüller arasında AA dikişi yok). */\r\n readonly dataPath: string;\r\n /** Finder dış halkaları (`fill-rule=\"evenodd\"`). */\r\n readonly finderOuterPath: string;\r\n /** Finder iç 3×3 gözleri. */\r\n readonly finderInnerPath: string;\r\n /** Logo için boşaltılan kare (modül); logo yoksa 0. */\r\n readonly excavated: number;\r\n}\r\n\r\nconst FINDER = 7;\r\n\r\n/** SVG yolu sayıları — gereksiz ondalıkları at, çıktıyı kısa tut. */\r\nfunction n(value: number): string {\r\n return String(Math.round(value * 1000) / 1000);\r\n}\r\n\r\nfunction isFinder(x: number, y: number, size: number): boolean {\r\n return (\r\n (x < FINDER && y < FINDER) ||\r\n (x >= size - FINDER && y < FINDER) ||\r\n (x < FINDER && y >= size - FINDER)\r\n );\r\n}\r\n\r\n/** Saat yönünde yuvarlatılmış dikdörtgen alt yolu. */\r\nfunction roundedRect(x: number, y: number, w: number, h: number, r: number): string {\r\n if (r <= 0) return `M${n(x)} ${n(y)}h${n(w)}v${n(h)}h${n(-w)}z`;\r\n return (\r\n `M${n(x + r)} ${n(y)}h${n(w - 2 * r)}a${n(r)} ${n(r)} 0 0 1 ${n(r)} ${n(r)}` +\r\n `v${n(h - 2 * r)}a${n(r)} ${n(r)} 0 0 1 ${n(-r)} ${n(r)}` +\r\n `h${n(-(w - 2 * r))}a${n(r)} ${n(r)} 0 0 1 ${n(-r)} ${n(-r)}` +\r\n `v${n(-(h - 2 * r))}a${n(r)} ${n(r)} 0 0 1 ${n(r)} ${n(-r)}z`\r\n );\r\n}\r\n\r\n/**\r\n * Köşe başına yarıçaplı tek modül — bir köşe yalnızca o köşeye bakan İKİ komşu\r\n * de açıksa yuvarlanır. Sonuç: yan yana modüller kesintisiz \"akışkan\" bloklar,\r\n * yalnız modüller daire olur.\r\n */\r\nfunction blobModule(x: number, y: number, tl: number, tr: number, br: number, bl: number): string {\r\n let d = `M${n(x + tl)} ${n(y)}H${n(x + 1 - tr)}`;\r\n if (tr) d += `a${n(tr)} ${n(tr)} 0 0 1 ${n(tr)} ${n(tr)}`;\r\n d += `V${n(y + 1 - br)}`;\r\n if (br) d += `a${n(br)} ${n(br)} 0 0 1 ${n(-br)} ${n(br)}`;\r\n d += `H${n(x + bl)}`;\r\n if (bl) d += `a${n(bl)} ${n(bl)} 0 0 1 ${n(-bl)} ${n(-bl)}`;\r\n d += `V${n(y + tl)}`;\r\n if (tl) d += `a${n(tl)} ${n(tl)} 0 0 1 ${n(tl)} ${n(-tl)}`;\r\n return `${d}z`;\r\n}\r\n\r\nfunction dot(x: number, y: number, r: number): string {\r\n return `M${n(x + 0.5 - r)} ${n(y + 0.5)}a${n(r)} ${n(r)} 0 1 0 ${n(2 * r)} 0a${n(r)} ${n(r)} 0 1 0 ${n(-2 * r)} 0z`;\r\n}\r\n\r\n/**\r\n * Logo için merkezde boşaltılacak kare kenarı (modül). QR kenarıyla aynı\r\n * paritede (tek) tutulur ki kare tam ortalansın; oran 0–0.3 arası kırpılır\r\n * (H seviyesi ~%30 hasarı kurtarır — alan olarak 0.3² ≈ %9, güvenli pay).\r\n */\r\nexport function excavationSize(size: number, ratio: number): number {\r\n const clamped = Math.min(0.3, Math.max(0, ratio));\r\n if (clamped === 0) return 0;\r\n let side = Math.round(size * clamped);\r\n if (side % 2 !== size % 2) side += 1;\r\n return Math.min(side, size - 2 * (FINDER + 1));\r\n}\r\n\r\n/** Kodlanmış matrisi saf SVG yol dizelerine çevirir — DOM'suz, `computed()` içinde çağrılır. */\r\nexport function qrGeometry(\r\n matrix: QrMatrix,\r\n shape: QrModuleShape,\r\n finder: QrFinderShape,\r\n logoRatio: number,\r\n): QrGeometry {\r\n const size = matrix.size;\r\n const excavated = excavationSize(size, logoRatio);\r\n const start = (size - excavated) / 2;\r\n const inLogo = (x: number, y: number): boolean =>\r\n excavated > 0 && x >= start && x < start + excavated && y >= start && y < start + excavated;\r\n\r\n const drawn = (x: number, y: number): boolean =>\r\n x >= 0 &&\r\n y >= 0 &&\r\n x < size &&\r\n y < size &&\r\n matrix.modules[y][x] &&\r\n !isFinder(x, y, size) &&\r\n !inLogo(x, y);\r\n\r\n let dataPath = '';\r\n for (let y = 0; y < size; y++) {\r\n if (shape === 'square') {\r\n // Yatay koşuları birleştir — path ~%60 kısalır.\r\n for (let x = 0; x < size;) {\r\n if (!drawn(x, y)) {\r\n x++;\r\n continue;\r\n }\r\n let run = 1;\r\n while (drawn(x + run, y)) run++;\r\n dataPath += `M${x} ${y}h${run}v1h${-run}z`;\r\n x += run;\r\n }\r\n continue;\r\n }\r\n for (let x = 0; x < size; x++) {\r\n if (!drawn(x, y)) continue;\r\n if (shape === 'dots') {\r\n dataPath += dot(x, y, 0.42);\r\n continue;\r\n }\r\n const up = drawn(x, y - 1);\r\n const down = drawn(x, y + 1);\r\n const left = drawn(x - 1, y);\r\n const right = drawn(x + 1, y);\r\n const r = 0.5;\r\n dataPath += blobModule(\r\n x,\r\n y,\r\n !up && !left ? r : 0,\r\n !up && !right ? r : 0,\r\n !down && !right ? r : 0,\r\n !down && !left ? r : 0,\r\n );\r\n }\r\n }\r\n\r\n const rounded = finder === 'rounded';\r\n const origins: [number, number][] = [\r\n [0, 0],\r\n [size - FINDER, 0],\r\n [0, size - FINDER],\r\n ];\r\n let finderOuterPath = '';\r\n let finderInnerPath = '';\r\n for (const [x, y] of origins) {\r\n finderOuterPath +=\r\n roundedRect(x, y, 7, 7, rounded ? 2 : 0) + roundedRect(x + 1, y + 1, 5, 5, rounded ? 1.4 : 0);\r\n finderInnerPath += roundedRect(x + 2, y + 2, 3, 3, rounded ? 0.9 : 0);\r\n }\r\n\r\n return { size, dataPath, finderOuterPath, finderInnerPath, excavated };\r\n}\r\n\r\nexport interface QrSvgStringOptions {\r\n /** Sessiz bölge (modül), varsayılan 4 — baskı/dışa aktarım için standart. */\r\n margin?: number;\r\n /** Piksel kenar, varsayılan 256. */\r\n pixelSize?: number;\r\n foreground?: string;\r\n background?: string;\r\n}\r\n\r\n/** Bağımsız bir `<svg>` belgesi (indirme/paylaşım için) — logo katmanı HTML olduğu için dahil DEĞİL. */\r\nexport function qrSvgString(geometry: QrGeometry, options: QrSvgStringOptions = {}): string {\r\n const margin = options.margin ?? 4;\r\n const px = options.pixelSize ?? 256;\r\n const fg = escapeAttr(options.foreground ?? '#000000');\r\n const bg = escapeAttr(options.background ?? '#ffffff');\r\n const total = geometry.size + margin * 2;\r\n return (\r\n `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"${px}\" height=\"${px}\" viewBox=\"${-margin} ${-margin} ${total} ${total}\">` +\r\n `<rect x=\"${-margin}\" y=\"${-margin}\" width=\"${total}\" height=\"${total}\" fill=\"${bg}\"/>` +\r\n `<path d=\"${geometry.finderOuterPath}\" fill=\"${fg}\" fill-rule=\"evenodd\"/>` +\r\n `<path d=\"${geometry.finderInnerPath}\" fill=\"${fg}\"/>` +\r\n `<path d=\"${geometry.dataPath}\" fill=\"${fg}\"/>` +\r\n `</svg>`\r\n );\r\n}\r\n\r\nfunction escapeAttr(value: string): string {\r\n return value.replace(/[&\"<>]/g, (c) => `&#${c.charCodeAt(0)};`);\r\n}\r\n","/*\r\n * QR Code encoder — Project Nayuki \"QR Code generator library\" (TypeScript)\r\n * algoritmasının kite ait, tipli ve sadeleştirilmiş portu.\r\n *\r\n * Copyright (c) Project Nayuki. (MIT License)\r\n * https://www.nayuki.io/page/qr-code-generator-library\r\n *\r\n * Permission is hereby granted, free of charge, to any person obtaining a copy of\r\n * this software and associated documentation files (the \"Software\"), to deal in\r\n * the Software without restriction, including without limitation the rights to\r\n * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r\n * the Software, and to permit persons to whom the Software is furnished to do so,\r\n * subject to the following conditions:\r\n * - The above copyright notice and this permission notice shall be included in\r\n * all copies or substantial portions of the Software.\r\n * - The Software is provided \"as is\", without warranty of any kind, express or\r\n * implied, including but not limited to the warranties of merchantability,\r\n * fitness for a particular purpose and noninfringement. In no event shall the\r\n * authors or copyright holders be liable for any claim, damages or other\r\n * liability, whether in an action of contract, tort or otherwise, arising from,\r\n * out of or in connection with the Software or the use or other dealings in the\r\n * Software.\r\n *\r\n * Neden vendor (bağımlılık değil): kitin her runtime kütüphanesi bir peerDependency\r\n * olmak zorunda ve `ng add` bunu HER tüketiciye kurar — ~5 KB'lık saf bir algoritma\r\n * için yeni bir peer eklemek yerine kodlayıcı burada yaşıyor. DOM'a dokunmaz (SSR güvenli).\r\n */\r\n\r\n/** Hata düzeltme seviyesi — kurtarılabilir hasar oranı: L ~%7, M ~%15, Q ~%25, H ~%30. */\r\nexport type QrEcc = 'L' | 'M' | 'Q' | 'H';\r\n\r\nexport interface QrEncodeOptions {\r\n /** Varsayılan `'M'`. */\r\n ecc?: QrEcc;\r\n /** 1–40, varsayılan 1. */\r\n minVersion?: number;\r\n /** 1–40, varsayılan 40. */\r\n maxVersion?: number;\r\n /**\r\n * Seçilen sürüm (boyut) büyümeden daha yüksek bir hata düzeltme seviyesi sığıyorsa\r\n * onu kullanır — aynı boyutta bedava dayanıklılık. Varsayılan `true`.\r\n */\r\n boostEcc?: boolean;\r\n}\r\n\r\nexport interface QrMatrix {\r\n /** Modül cinsinden kenar (21–177) — sessiz bölge (quiet zone) HARİÇ. */\r\n readonly size: number;\r\n /** 1–40. */\r\n readonly version: number;\r\n /** Gerçekte kullanılan seviye (`boostEcc` ile istenenden yüksek olabilir). */\r\n readonly ecc: QrEcc;\r\n readonly mask: number;\r\n /** `modules[y][x]` — `true` koyu modül. */\r\n readonly modules: readonly (readonly boolean[])[];\r\n /** `isFunction[y][x]` — finder/timing/alignment/format/version modülü (veri değil). */\r\n readonly isFunction: readonly (readonly boolean[])[];\r\n}\r\n\r\n/** İçerik, `maxVersion` ve seçilen `ecc` ile sığmıyor. */\r\nexport class QrCapacityError extends Error {\r\n constructor() {\r\n super('QR code data too long for the requested version / error correction level');\r\n this.name = 'QrCapacityError';\r\n }\r\n}\r\n\r\nconst ECC_ORDINAL: Record<QrEcc, number> = { L: 0, M: 1, Q: 2, H: 3 };\r\nconst ECC_FORMAT_BITS: Record<QrEcc, number> = { L: 1, M: 0, Q: 3, H: 2 };\r\n\r\n// prettier-ignore\r\nconst ECC_CODEWORDS_PER_BLOCK: readonly (readonly number[])[] = [\r\n // Sürüm: 0 (dolgu), 1 … 40\r\n [-1, 7, 10, 15, 20, 26, 18, 20, 24, 30, 18, 20, 24, 26, 30, 22, 24, 28, 30, 28, 28, 28, 28, 30, 30, 26, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30], // L\r\n [-1, 10, 16, 26, 18, 24, 16, 18, 22, 22, 26, 30, 22, 22, 24, 24, 28, 28, 26, 26, 26, 26, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28], // M\r\n [-1, 13, 22, 18, 26, 18, 24, 18, 22, 20, 24, 28, 26, 24, 20, 30, 24, 28, 28, 26, 30, 28, 30, 30, 30, 30, 28, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30], // Q\r\n [-1, 17, 28, 22, 16, 22, 28, 26, 26, 24, 28, 24, 28, 22, 24, 24, 30, 28, 28, 26, 28, 30, 24, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30], // H\r\n];\r\n\r\n// prettier-ignore\r\nconst NUM_ERROR_CORRECTION_BLOCKS: readonly (readonly number[])[] = [\r\n [-1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 6, 6, 6, 6, 7, 8, 8, 9, 9, 10, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 20, 21, 22, 24, 25], // L\r\n [-1, 1, 1, 1, 2, 2, 4, 4, 4, 5, 5, 5, 8, 9, 9, 10, 10, 11, 13, 14, 16, 17, 17, 18, 20, 21, 23, 25, 26, 28, 29, 31, 33, 35, 37, 38, 40, 43, 45, 47, 49], // M\r\n [-1, 1, 1, 2, 2, 4, 4, 6, 6, 8, 8, 8, 10, 12, 16, 12, 17, 16, 18, 21, 20, 23, 23, 25, 27, 29, 34, 34, 35, 38, 40, 43, 45, 48, 51, 53, 56, 59, 62, 65, 68], // Q\r\n [-1, 1, 1, 2, 4, 4, 4, 5, 6, 8, 8, 11, 11, 16, 16, 18, 16, 19, 21, 25, 25, 25, 34, 30, 32, 35, 37, 40, 42, 45, 48, 51, 54, 57, 60, 63, 66, 70, 74, 77, 81], // H\r\n];\r\n\r\nconst PENALTY_N1 = 3;\r\nconst PENALTY_N2 = 3;\r\nconst PENALTY_N3 = 40;\r\nconst PENALTY_N4 = 10;\r\n\r\nconst ALPHANUMERIC_CHARSET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:';\r\nconst NUMERIC = /^[0-9]*$/;\r\nconst ALPHANUMERIC = /^[A-Z0-9 $%*+./:-]*$/;\r\n\r\ninterface Mode {\r\n readonly bits: number;\r\n /** Karakter sayacı genişliği: sürüm 1–9, 10–26, 27–40. */\r\n readonly countBits: readonly [number, number, number];\r\n}\r\nconst MODE_NUMERIC: Mode = { bits: 0x1, countBits: [10, 12, 14] };\r\nconst MODE_ALPHANUMERIC: Mode = { bits: 0x2, countBits: [9, 11, 13] };\r\nconst MODE_BYTE: Mode = { bits: 0x4, countBits: [8, 16, 16] };\r\n\r\ninterface Segment {\r\n readonly mode: Mode;\r\n readonly numChars: number;\r\n readonly data: readonly number[]; // bit dizisi\r\n}\r\n\r\nfunction appendBits(value: number, length: number, out: number[]): void {\r\n for (let i = length - 1; i >= 0; i--) out.push((value >>> i) & 1);\r\n}\r\n\r\nfunction getBit(value: number, i: number): boolean {\r\n return ((value >>> i) & 1) !== 0;\r\n}\r\n\r\nfunction charCountBits(mode: Mode, version: number): number {\r\n return mode.countBits[Math.floor((version + 7) / 17)];\r\n}\r\n\r\nfunction makeSegment(data: string | Uint8Array): Segment | null {\r\n if (typeof data !== 'string') return byteSegment(data);\r\n if (data === '') return null;\r\n if (NUMERIC.test(data)) {\r\n const bits: number[] = [];\r\n for (let i = 0; i < data.length; i += 3) {\r\n const chunk = data.substring(i, i + 3);\r\n appendBits(Number.parseInt(chunk, 10), chunk.length * 3 + 1, bits);\r\n }\r\n return { mode: MODE_NUMERIC, numChars: data.length, data: bits };\r\n }\r\n if (ALPHANUMERIC.test(data)) {\r\n const bits: number[] = [];\r\n let i = 0;\r\n for (; i + 2 <= data.length; i += 2) {\r\n const pair =\r\n ALPHANUMERIC_CHARSET.indexOf(data.charAt(i)) * 45 +\r\n ALPHANUMERIC_CHARSET.indexOf(data.charAt(i + 1));\r\n appendBits(pair, 11, bits);\r\n }\r\n if (i < data.length) appendBits(ALPHANUMERIC_CHARSET.indexOf(data.charAt(i)), 6, bits);\r\n return { mode: MODE_ALPHANUMERIC, numChars: data.length, data: bits };\r\n }\r\n return byteSegment(new TextEncoder().encode(data));\r\n}\r\n\r\nfunction byteSegment(bytes: Uint8Array): Segment {\r\n const bits: number[] = [];\r\n for (const b of bytes) appendBits(b, 8, bits);\r\n return { mode: MODE_BYTE, numChars: bytes.length, data: bits };\r\n}\r\n\r\nfunction totalBits(segments: readonly Segment[], version: number): number {\r\n let result = 0;\r\n for (const seg of segments) {\r\n const ccBits = charCountBits(seg.mode, version);\r\n if (seg.numChars >= 1 << ccBits) return Number.POSITIVE_INFINITY;\r\n result += 4 + ccBits + seg.data.length;\r\n }\r\n return result;\r\n}\r\n\r\nfunction numRawDataModules(version: number): number {\r\n let result = (16 * version + 128) * version + 64;\r\n if (version >= 2) {\r\n const numAlign = Math.floor(version / 7) + 2;\r\n result -= (25 * numAlign - 10) * numAlign - 55;\r\n if (version >= 7) result -= 36;\r\n }\r\n return result;\r\n}\r\n\r\nfunction numDataCodewords(version: number, ecc: QrEcc): number {\r\n const o = ECC_ORDINAL[ecc];\r\n return (\r\n Math.floor(numRawDataModules(version) / 8) -\r\n ECC_CODEWORDS_PER_BLOCK[o][version] * NUM_ERROR_CORRECTION_BLOCKS[o][version]\r\n );\r\n}\r\n\r\n// --- Reed–Solomon (GF(2^8), indirgeme polinomu 0x11D) ---\r\n\r\nfunction rsMultiply(x: number, y: number): number {\r\n let z = 0;\r\n for (let i = 7; i >= 0; i--) {\r\n z = (z << 1) ^ ((z >>> 7) * 0x11d);\r\n z ^= ((y >>> i) & 1) * x;\r\n }\r\n return z;\r\n}\r\n\r\nfunction rsDivisor(degree: number): number[] {\r\n const result = new Array<number>(degree).fill(0);\r\n result[degree - 1] = 1;\r\n let root = 1;\r\n for (let i = 0; i < degree; i++) {\r\n for (let j = 0; j < result.length; j++) {\r\n result[j] = rsMultiply(result[j], root);\r\n if (j + 1 < result.length) result[j] ^= result[j + 1];\r\n }\r\n root = rsMultiply(root, 0x02);\r\n }\r\n return result;\r\n}\r\n\r\nfunction rsRemainder(data: readonly number[], divisor: readonly number[]): number[] {\r\n const result = divisor.map(() => 0);\r\n for (const b of data) {\r\n const factor = b ^ (result.shift() as number);\r\n result.push(0);\r\n divisor.forEach((coef, i) => (result[i] ^= rsMultiply(coef, factor)));\r\n }\r\n return result;\r\n}\r\n\r\n// --- Matris ---\r\n\r\nclass Grid {\r\n readonly size: number;\r\n readonly modules: boolean[][];\r\n readonly isFunction: boolean[][];\r\n\r\n constructor(readonly version: number) {\r\n this.size = version * 4 + 17;\r\n this.modules = Array.from({ length: this.size }, () =>\r\n new Array<boolean>(this.size).fill(false),\r\n );\r\n this.isFunction = Array.from({ length: this.size }, () =>\r\n new Array<boolean>(this.size).fill(false),\r\n );\r\n }\r\n\r\n setFunction(x: number, y: number, dark: boolean): void {\r\n this.modules[y][x] = dark;\r\n this.isFunction[y][x] = true;\r\n }\r\n\r\n drawFunctionPatterns(ecc: QrEcc): void {\r\n for (let i = 0; i < this.size; i++) {\r\n this.setFunction(6, i, i % 2 === 0);\r\n this.setFunction(i, 6, i % 2 === 0);\r\n }\r\n this.drawFinder(3, 3);\r\n this.drawFinder(this.size - 4, 3);\r\n this.drawFinder(3, this.size - 4);\r\n\r\n const align = this.alignmentPositions();\r\n const n = align.length;\r\n for (let i = 0; i < n; i++) {\r\n for (let j = 0; j < n; j++) {\r\n const corner = (i === 0 && j === 0) || (i === 0 && j === n - 1) || (i === n - 1 && j === 0);\r\n if (!corner) this.drawAlignment(align[i], align[j]);\r\n }\r\n }\r\n this.drawFormatBits(ecc, 0); // yer tutucu — maske seçildikten sonra üzerine yazılır\r\n this.drawVersion();\r\n }\r\n\r\n private drawFinder(cx: number, cy: number): void {\r\n for (let dy = -4; dy <= 4; dy++) {\r\n for (let dx = -4; dx <= 4; dx++) {\r\n const dist = Math.max(Math.abs(dx), Math.abs(dy));\r\n const x = cx + dx;\r\n const y = cy + dy;\r\n if (x >= 0 && x < this.size && y >= 0 && y < this.size) {\r\n this.setFunction(x, y, dist !== 2 && dist !== 4);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private drawAlignment(cx: number, cy: number): void {\r\n for (let dy = -2; dy <= 2; dy++) {\r\n for (let dx = -2; dx <= 2; dx++) {\r\n this.setFunction(cx + dx, cy + dy, Math.max(Math.abs(dx), Math.abs(dy)) !== 1);\r\n }\r\n }\r\n }\r\n\r\n private alignmentPositions(): number[] {\r\n if (this.version === 1) return [];\r\n const numAlign = Math.floor(this.version / 7) + 2;\r\n const step =\r\n this.version === 32 ? 26 : Math.ceil((this.version * 4 + 4) / (numAlign * 2 - 2)) * 2;\r\n const result = [6];\r\n for (let pos = this.size - 7; result.length < numAlign; pos -= step) result.splice(1, 0, pos);\r\n return result;\r\n }\r\n\r\n drawFormatBits(ecc: QrEcc, mask: number): void {\r\n const data = (ECC_FORMAT_BITS[ecc] << 3) | mask;\r\n let rem = data;\r\n for (let i = 0; i < 10; i++) rem = (rem << 1) ^ ((rem >>> 9) * 0x537);\r\n const bits = ((data << 10) | rem) ^ 0x5412;\r\n\r\n for (let i = 0; i <= 5; i++) this.setFunction(8, i, getBit(bits, i));\r\n this.setFunction(8, 7, getBit(bits, 6));\r\n this.setFunction(8, 8, getBit(bits, 7));\r\n this.setFunction(7, 8, getBit(bits, 8));\r\n for (let i = 9; i < 15; i++) this.setFunction(14 - i, 8, getBit(bits, i));\r\n\r\n for (let i = 0; i < 8; i++) this.setFunction(this.size - 1 - i, 8, getBit(bits, i));\r\n for (let i = 8; i < 15; i++) this.setFunction(8, this.size - 15 + i, getBit(bits, i));\r\n this.setFunction(8, this.size - 8, true); // her zaman koyu modül\r\n }\r\n\r\n private drawVersion(): void {\r\n if (this.version < 7) return;\r\n let rem = this.version;\r\n for (let i = 0; i < 12; i++) rem = (rem << 1) ^ ((rem >>> 11) * 0x1f25);\r\n const bits = (this.version << 12) | rem;\r\n for (let i = 0; i < 18; i++) {\r\n const dark = getBit(bits, i);\r\n const a = this.size - 11 + (i % 3);\r\n const b = Math.floor(i / 3);\r\n this.setFunction(a, b, dark);\r\n this.setFunction(b, a, dark);\r\n }\r\n }\r\n\r\n drawCodewords(codewords: readonly number[]): void {\r\n let i = 0;\r\n for (let right = this.size - 1; right >= 1; right -= 2) {\r\n if (right === 6) right = 5;\r\n for (let vert = 0; vert < this.size; vert++) {\r\n for (let j = 0; j < 2; j++) {\r\n const x = right - j;\r\n const upward = ((right + 1) & 2) === 0;\r\n const y = upward ? this.size - 1 - vert : vert;\r\n if (!this.isFunction[y][x] && i < codewords.length * 8) {\r\n this.modules[y][x] = getBit(codewords[i >>> 3], 7 - (i & 7));\r\n i++;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n applyMask(mask: number): void {\r\n for (let y = 0; y < this.size; y++) {\r\n for (let x = 0; x < this.size; x++) {\r\n if (!this.isFunction[y][x] && maskBit(mask, x, y)) {\r\n this.modules[y][x] = !this.modules[y][x];\r\n }\r\n }\r\n }\r\n }\r\n\r\n penalty(): number {\r\n let result = 0;\r\n const size = this.size;\r\n const m = this.modules;\r\n\r\n const line = (get: (i: number) => boolean): void => {\r\n let runColor = false;\r\n let run = 0;\r\n const history = [0, 0, 0, 0, 0, 0, 0];\r\n for (let i = 0; i < size; i++) {\r\n if (get(i) === runColor) {\r\n run++;\r\n if (run === 5) result += PENALTY_N1;\r\n else if (run > 5) result++;\r\n } else {\r\n this.addHistory(run, history);\r\n if (!runColor) result += this.countFinderLike(history) * PENALTY_N3;\r\n runColor = get(i);\r\n run = 1;\r\n }\r\n }\r\n if (runColor) {\r\n this.addHistory(run, history);\r\n run = 0;\r\n }\r\n run += size;\r\n this.addHistory(run, history);\r\n result += this.countFinderLike(history) * PENALTY_N3;\r\n };\r\n\r\n for (let y = 0; y < size; y++) line((x) => m[y][x]);\r\n for (let x = 0; x < size; x++) line((y) => m[y][x]);\r\n\r\n for (let y = 0; y < size - 1; y++) {\r\n for (let x = 0; x < size - 1; x++) {\r\n const c = m[y][x];\r\n if (c === m[y][x + 1] && c === m[y + 1][x] && c === m[y + 1][x + 1]) result += PENALTY_N2;\r\n }\r\n }\r\n\r\n let dark = 0;\r\n for (const row of m) for (const c of row) if (c) dark++;\r\n const total = size * size;\r\n const k = Math.ceil(Math.abs(dark * 20 - total * 10) / total) - 1;\r\n result += k * PENALTY_N4;\r\n return result;\r\n }\r\n\r\n private countFinderLike(h: readonly number[]): number {\r\n const n = h[1];\r\n const core = n > 0 && h[2] === n && h[3] === n * 3 && h[4] === n && h[5] === n;\r\n return (\r\n (core && h[0] >= n * 4 && h[6] >= n ? 1 : 0) + (core && h[6] >= n * 4 && h[0] >= n ? 1 : 0)\r\n );\r\n }\r\n\r\n private addHistory(run: number, history: number[]): void {\r\n if (history[0] === 0) run += this.size; // ilk koşuya sanal açık sessiz bölge\r\n history.pop();\r\n history.unshift(run);\r\n }\r\n}\r\n\r\nfunction maskBit(mask: number, x: number, y: number): boolean {\r\n switch (mask) {\r\n case 0:\r\n return (x + y) % 2 === 0;\r\n case 1:\r\n return y % 2 === 0;\r\n case 2:\r\n return x % 3 === 0;\r\n case 3:\r\n return (x + y) % 3 === 0;\r\n case 4:\r\n return (Math.floor(x / 3) + Math.floor(y / 2)) % 2 === 0;\r\n case 5:\r\n return ((x * y) % 2) + ((x * y) % 3) === 0;\r\n case 6:\r\n return (((x * y) % 2) + ((x * y) % 3)) % 2 === 0;\r\n default:\r\n return (((x + y) % 2) + ((x * y) % 3)) % 2 === 0;\r\n }\r\n}\r\n\r\nfunction addEccAndInterleave(data: readonly number[], version: number, ecc: QrEcc): number[] {\r\n const o = ECC_ORDINAL[ecc];\r\n const numBlocks = NUM_ERROR_CORRECTION_BLOCKS[o][version];\r\n const blockEccLen = ECC_CODEWORDS_PER_BLOCK[o][version];\r\n const rawCodewords = Math.floor(numRawDataModules(version) / 8);\r\n const numShortBlocks = numBlocks - (rawCodewords % numBlocks);\r\n const shortBlockLen = Math.floor(rawCodewords / numBlocks);\r\n\r\n const divisor = rsDivisor(blockEccLen);\r\n const blocks: number[][] = [];\r\n for (let i = 0, k = 0; i < numBlocks; i++) {\r\n const dat = data.slice(k, k + shortBlockLen - blockEccLen + (i < numShortBlocks ? 0 : 1));\r\n k += dat.length;\r\n const eccBytes = rsRemainder(dat, divisor);\r\n if (i < numShortBlocks) dat.push(0);\r\n blocks.push(dat.concat(eccBytes));\r\n }\r\n\r\n const result: number[] = [];\r\n for (let i = 0; i < blocks[0].length; i++) {\r\n blocks.forEach((block, j) => {\r\n if (i !== shortBlockLen - blockEccLen || j >= numShortBlocks) result.push(block[i]);\r\n });\r\n }\r\n return result;\r\n}\r\n\r\n/**\r\n * Metni (UTF-8; tamamen rakamsa numeric, büyük harf/rakam/` $%*+-./:` ise\r\n * alphanumeric kip) ya da ham baytları bir QR matrisine kodlar. En küçük uygun\r\n * sürümü ve en düşük cezalı maskeyi seçer.\r\n *\r\n * @throws {QrCapacityError} içerik sığmıyorsa.\r\n */\r\nexport function encodeQr(data: string | Uint8Array, options: QrEncodeOptions = {}): QrMatrix {\r\n const minVersion = Math.max(1, Math.min(40, Math.floor(options.minVersion ?? 1)));\r\n const maxVersion = Math.max(minVersion, Math.min(40, Math.floor(options.maxVersion ?? 40)));\r\n let ecc: QrEcc = options.ecc ?? 'M';\r\n const boost = options.boostEcc ?? true;\r\n\r\n const segment = makeSegment(data);\r\n const segments = segment ? [segment] : [];\r\n\r\n let version = minVersion;\r\n let usedBits: number;\r\n for (; ; version++) {\r\n usedBits = totalBits(segments, version);\r\n if (usedBits <= numDataCodewords(version, ecc) * 8) break;\r\n if (version >= maxVersion) throw new QrCapacityError();\r\n }\r\n\r\n if (boost) {\r\n for (const higher of ['M', 'Q', 'H'] as const) {\r\n if (usedBits <= numDataCodewords(version, higher) * 8) ecc = higher;\r\n }\r\n }\r\n\r\n const bits: number[] = [];\r\n for (const seg of segments) {\r\n appendBits(seg.mode.bits, 4, bits);\r\n appendBits(seg.numChars, charCountBits(seg.mode, version), bits);\r\n for (const b of seg.data) bits.push(b);\r\n }\r\n const capacity = numDataCodewords(version, ecc) * 8;\r\n appendBits(0, Math.min(4, capacity - bits.length), bits); // sonlandırıcı\r\n appendBits(0, (8 - (bits.length % 8)) % 8, bits);\r\n for (let pad = 0xec; bits.length < capacity; pad ^= 0xec ^ 0x11) appendBits(pad, 8, bits);\r\n\r\n const codewords = new Array<number>(bits.length / 8).fill(0);\r\n bits.forEach((b, i) => (codewords[i >>> 3] |= b << (7 - (i & 7))));\r\n\r\n const grid = new Grid(version);\r\n grid.drawFunctionPatterns(ecc);\r\n grid.drawCodewords(addEccAndInterleave(codewords, version, ecc));\r\n\r\n let bestMask = 0;\r\n let minPenalty = Number.POSITIVE_INFINITY;\r\n for (let mask = 0; mask < 8; mask++) {\r\n grid.applyMask(mask);\r\n grid.drawFormatBits(ecc, mask);\r\n const penalty = grid.penalty();\r\n if (penalty < minPenalty) {\r\n bestMask = mask;\r\n minPenalty = penalty;\r\n }\r\n grid.applyMask(mask); // XOR — geri al\r\n }\r\n grid.applyMask(bestMask);\r\n grid.drawFormatBits(ecc, bestMask);\r\n\r\n return {\r\n size: grid.size,\r\n version,\r\n ecc,\r\n mask: bestMask,\r\n modules: grid.modules,\r\n isFunction: grid.isFunction,\r\n };\r\n}\r\n","import {\r\n Component,\r\n Directive,\r\n computed,\r\n contentChild,\r\n effect,\r\n inject,\r\n input,\r\n numberAttribute,\r\n output,\r\n} from '@angular/core';\r\nimport { cn, MF_QR_CODE_LABELS } from '@mesgflow/ui-kit/core';\r\nimport {\r\n qrGeometry,\r\n qrSvgString,\r\n type QrFinderShape,\r\n type QrModuleShape,\r\n type QrSvgStringOptions,\r\n} from './qr-code-geometry';\r\nimport { QrCapacityError, encodeQr, type QrEcc, type QrMatrix } from './qr-encoder';\r\n\r\n/**\r\n * `<mf-qr-code data=\"…\"><img mfQrCodeLogo src=\"logo.svg\" alt=\"\" /></mf-qr-code>` —\r\n * QR'ın ortasına yerleştirilen logo. Varlığı hata düzeltmeyi otomatik `H`'ye\r\n * yükseltir ve altındaki modülleri boşaltır. Dekoratif olduğu için `alt=\"\"`\r\n * önerilir — erişilebilir ad `mf-qr-code`'un kendi `aria-label`'ındadır.\r\n */\r\n@Directive({\r\n selector: '[mfQrCodeLogo]',\r\n host: { class: 'block max-h-full max-w-full object-contain' },\r\n})\r\nexport class QrCodeLogo {}\r\n\r\n/**\r\n * `<mf-qr-code data=\"https://mesgflow.dev\" />`\r\n *\r\n * Saf SVG QR kod — kodlayıcı kitin içinde (`qr-encoder.ts`, Nayuki portu), ek\r\n * bağımlılık yok; tüm geometri `computed()` ile üretilir, DOM API'si\r\n * kullanılmaz (SSR güvenli).\r\n *\r\n * - `shape`: `square` (klasik) · `rounded` (akışkan, komşu modüllerle birleşen) · `dots`.\r\n * - `finder`: köşe desenleri `square` / `rounded`.\r\n * - `ecc`: L/M/Q/H — logo varsa otomatik `H`. Aynı boyutta daha yüksek seviye\r\n * sığıyorsa zaten yükseltilir (`boostEcc`).\r\n * - `margin`: sessiz bölge (modül). Okuyucular ≥ 2 ister; baskı için 4.\r\n * - Logo: `[mfQrCodeLogo]` içerik (bkz. `QrCodeLogo`).\r\n * - `toSvgString()`: indirme/paylaşım için bağımsız SVG.\r\n *\r\n * Renk: varsayılan beyaz kart üstünde siyah modül — BİLİNÇLİ ham renk istisnası:\r\n * kameralar koyu-üstünde-açık (ters) QR'ı güvenilir okuyamaz, bu yüzden koyu temada\r\n * da açık kart kalır. `foreground`/`background` (herhangi bir CSS rengi, `var(--…)`\r\n * dahil) ile değiştirilir — satır içi stil olduğu için sınıf sırası çakışması yok;\r\n * modüller `currentColor`, logo kutusu zemini miras alır. Koyu modül / açık zemin ve\r\n * yeterli kontrast (≥ ~4:1) korunmalı.\r\n *\r\n * İçerik sığmazsa hata fırlatmaz: yerinde erişilebilir bir hata durumu çizer ve\r\n * `encoded` çıkışı `null` yayar.\r\n */\r\n@Component({\r\n selector: 'mf-qr-code',\r\n exportAs: 'mfQrCode',\r\n host: {\r\n role: 'img',\r\n '[attr.aria-label]': 'effectiveAriaLabel()',\r\n '[class]': 'hostClasses()',\r\n '[style.width.px]': 'size()',\r\n '[style.height.px]': 'size()',\r\n '[style.color]': \"matrix() ? (foreground() ?? '#000') : null\",\r\n '[style.background-color]': \"matrix() ? (background() ?? '#fff') : null\",\r\n },\r\n templateUrl: './qr-code.html',\r\n})\r\nexport class QrCode {\r\n /** Kodlanacak içerik (URL, metin, `WIFI:…`, `mailto:` vb.). */\r\n readonly data = input.required<string>();\r\n /** Piksel kenar (sessiz bölge dahil). */\r\n readonly size = input(160, { transform: numberAttribute });\r\n readonly ecc = input<QrEcc>('M');\r\n /** Sessiz bölge, modül cinsinden. */\r\n readonly margin = input(2, { transform: numberAttribute });\r\n readonly shape = input<QrModuleShape>('square');\r\n readonly finder = input<QrFinderShape>('square');\r\n /** Logo karesinin QR kenarına oranı (0–0.3); yalnızca `[mfQrCodeLogo]` varken etkili. */\r\n readonly logoSize = input(0.22, { transform: numberAttribute });\r\n /** Modül rengi (CSS rengi). Verilmezse siyah. */\r\n readonly foreground = input<string>();\r\n /** Zemin rengi (CSS rengi). Verilmezse beyaz. */\r\n readonly background = input<string>();\r\n /** `role=\"img\"` erişilebilir adı — verilmezse `MF_QR_CODE_LABELS.ariaLabel`. İçeriği anlatan bir ad önerilir. */\r\n readonly ariaLabel = input<string>();\r\n\r\n /** Her yeniden kodlamada matris (hata durumunda `null`). */\r\n readonly encoded = output<QrMatrix | null>();\r\n\r\n private readonly labels = inject(MF_QR_CODE_LABELS);\r\n private readonly logo = contentChild(QrCodeLogo);\r\n protected readonly hasLogo = computed(() => !!this.logo());\r\n\r\n protected readonly effectiveEcc = computed<QrEcc>(() => (this.hasLogo() ? 'H' : this.ecc()));\r\n\r\n protected readonly matrix = computed<QrMatrix | null>(() => {\r\n try {\r\n return encodeQr(this.data(), { ecc: this.effectiveEcc() });\r\n } catch (error) {\r\n if (error instanceof QrCapacityError) return null;\r\n throw error;\r\n }\r\n });\r\n\r\n protected readonly geometry = computed(() => {\r\n const matrix = this.matrix();\r\n if (!matrix) return null;\r\n return qrGeometry(matrix, this.shape(), this.finder(), this.hasLogo() ? this.logoSize() : 0);\r\n });\r\n\r\n protected readonly quietZone = computed(() => Math.max(0, this.margin()));\r\n protected readonly viewBox = computed(() => {\r\n const g = this.geometry();\r\n if (!g) return '0 0 1 1';\r\n const m = this.quietZone();\r\n const total = g.size + m * 2;\r\n return `${-m} ${-m} ${total} ${total}`;\r\n });\r\n\r\n /** Logo kutusunun piksel kenarı — boşaltılan karenin ekrandaki karşılığı. */\r\n protected readonly logoBoxPx = computed(() => {\r\n const g = this.geometry();\r\n if (!g || !g.excavated) return 0;\r\n return (g.excavated / (g.size + this.quietZone() * 2)) * this.size();\r\n });\r\n\r\n protected readonly crisp = computed(() => this.shape() === 'square');\r\n\r\n protected readonly effectiveAriaLabel = computed(() =>\r\n this.matrix() ? (this.ariaLabel() ?? this.labels().ariaLabel) : this.labels().error,\r\n );\r\n\r\n protected readonly hostClasses = computed(() =>\r\n cn(\r\n 'relative inline-flex shrink-0 items-center justify-center overflow-hidden rounded-lg',\r\n this.matrix() ? '' : 'bg-danger-tint text-danger-tint-fg',\r\n ),\r\n );\r\n\r\n constructor() {\r\n effect(() => this.encoded.emit(this.matrix()));\r\n }\r\n\r\n /**\r\n * Bağımsız SVG belgesi — logo katmanı dahil DEĞİL. İçerik sığmıyorsa `null`.\r\n * Renkler verilmezse `foreground`/`background` girdileri (onlar da yoksa siyah/beyaz);\r\n * `var(--…)` gibi bağlama bağlı değerler dışa aktarımda çözülmez — somut renk geçin.\r\n */\r\n toSvgString(options?: QrSvgStringOptions): string | null {\r\n const g = this.geometry();\r\n if (!g) return null;\r\n return qrSvgString(g, {\r\n margin: this.quietZone(),\r\n foreground: this.foreground(),\r\n background: this.background(),\r\n ...options,\r\n });\r\n }\r\n}\r\n","@if (geometry(); as g) {\r\n <svg\r\n class=\"block h-full w-full\"\r\n [attr.viewBox]=\"viewBox()\"\r\n [attr.shape-rendering]=\"crisp() ? 'crispEdges' : 'geometricPrecision'\"\r\n aria-hidden=\"true\"\r\n focusable=\"false\"\r\n >\r\n <path data-part=\"finder\" fill=\"currentColor\" fill-rule=\"evenodd\" [attr.d]=\"g.finderOuterPath\" />\r\n <path data-part=\"finder\" fill=\"currentColor\" [attr.d]=\"g.finderInnerPath\" />\r\n <path data-part=\"modules\" fill=\"currentColor\" [attr.d]=\"g.dataPath\" />\r\n </svg>\r\n} @else {\r\n <span class=\"p-3 text-center text-xs\" aria-hidden=\"true\">{{ effectiveAriaLabel() }}</span>\r\n}\r\n\r\n<!-- `contentChild` logo'yu projeksiyon yerinden bağımsız görür; kutu yalnızca boşaltma varken çizilir. -->\r\n@if (logoBoxPx()) {\r\n <span\r\n class=\"absolute inset-0 m-auto flex items-center justify-center overflow-hidden rounded-md bg-inherit p-[6%]\"\r\n [style.width.px]=\"logoBoxPx()\"\r\n [style.height.px]=\"logoBoxPx()\"\r\n >\r\n <ng-content select=\"[mfQrCodeLogo]\" />\r\n </span>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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A,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AAC7I,IAAA,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACtJ,IAAA,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,E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"}
|
|
@@ -49,12 +49,12 @@ class RadioGroup {
|
|
|
49
49
|
this.onChange(value);
|
|
50
50
|
this.onTouched();
|
|
51
51
|
}
|
|
52
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
53
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.
|
|
52
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: RadioGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: RadioGroup, isStandalone: true, selector: "mf-radio-group", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { attributes: { "role": "radiogroup" }, properties: { "class": "hostClasses()", "attr.aria-label": "ariaLabel() || null", "attr.aria-orientation": "orientation()" } }, providers: [
|
|
54
54
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroup), multi: true },
|
|
55
55
|
], exportAs: ["mfRadioGroup"], ngImport: i0, template: '<ng-content />', isInline: true });
|
|
56
56
|
}
|
|
57
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
57
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: RadioGroup, decorators: [{
|
|
58
58
|
type: Component,
|
|
59
59
|
args: [{
|
|
60
60
|
selector: 'mf-radio-group',
|
|
@@ -96,10 +96,10 @@ class Radio {
|
|
|
96
96
|
this.group.onRadioChange(value);
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
100
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.
|
|
99
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Radio, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
100
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.7", type: Radio, isStandalone: true, selector: "input[type=radio][mfRadio]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "change": "onChange()" }, properties: { "class": "classes()", "attr.name": "group.name()", "checked": "group.value() === value()", "disabled": "group.disabled() || disabled()" } }, ngImport: i0 });
|
|
101
101
|
}
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
102
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Radio, decorators: [{
|
|
103
103
|
type: Directive,
|
|
104
104
|
args: [{
|
|
105
105
|
selector: 'input[type=radio][mfRadio]',
|
|
@@ -94,10 +94,10 @@ class Rating extends ValueAccessorBase {
|
|
|
94
94
|
setDisabledState(disabled) {
|
|
95
95
|
this.formDisabled.set(disabled);
|
|
96
96
|
}
|
|
97
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
98
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
97
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Rating, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
98
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: Rating, isStandalone: true, selector: "mf-rating", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, allowClear: { classPropertyName: "allowClear", publicName: "allowClear", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { listeners: { "pointerleave": "hover.set(null)" }, properties: { "attr.role": "readonly() ? 'img' : 'radiogroup'", "attr.aria-label": "hostLabel()", "attr.aria-disabled": "isDisabled() || null" }, classAttribute: "inline-flex" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Rating), multi: true }], exportAs: ["mfRating"], usesInheritance: true, ngImport: i0, template: "@for (star of stars(); track star) {\r\n <!-- G\u00F6rsel y\u0131ld\u0131z: bo\u015F taban + \u00FCstte doluluk y\u00FCzdesi kadar k\u0131rp\u0131lm\u0131\u015F dolu y\u0131ld\u0131z. -->\r\n <ng-template #glyph>\r\n <span\r\n aria-hidden=\"true\"\r\n class=\"relative block\"\r\n [style.width.px]=\"size()\"\r\n [style.height.px]=\"size()\"\r\n >\r\n <span mfIcon [size]=\"size()\" class=\"absolute inset-0 text-fg-subtle\">star</span>\r\n <span class=\"absolute inset-y-0 start-0 overflow-hidden\" [style.width.%]=\"fill(star)\">\r\n <span mfIcon [size]=\"size()\" [filled]=\"true\" class=\"absolute top-0 start-0 text-warning\"\r\n >star</span\r\n >\r\n </span>\r\n </span>\r\n </ng-template>\r\n\r\n @if (readonly()) {\r\n <span class=\"p-0.5\"><ng-container [ngTemplateOutlet]=\"glyph\" /></span>\r\n } @else {\r\n <label\r\n class=\"cursor-pointer rounded-sm p-0.5 transition-transform duration-fast ease-spring has-[:focus-visible]:outline has-[:focus-visible]:outline-2 has-[:focus-visible]:outline-offset-1 has-[:focus-visible]:outline-focus-ring hover:scale-110\"\r\n [class.opacity-50]=\"isDisabled()\"\r\n [class.pointer-events-none]=\"isDisabled()\"\r\n (pointerenter)=\"preview(star)\"\r\n >\r\n <input\r\n type=\"radio\"\r\n class=\"sr-only\"\r\n [name]=\"name\"\r\n [value]=\"star\"\r\n [checked]=\"value() === star\"\r\n [disabled]=\"isDisabled()\"\r\n [attr.aria-label]=\"starLabel(star)\"\r\n (click)=\"choose(star)\"\r\n (keydown.delete)=\"clear($event)\"\r\n (keydown.backspace)=\"clear($event)\"\r\n (blur)=\"onTouched()\"\r\n />\r\n <ng-container [ngTemplateOutlet]=\"glyph\" />\r\n </label>\r\n }\r\n}\r\n", dependencies: [{ kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
99
99
|
}
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Rating, decorators: [{
|
|
101
101
|
type: Component,
|
|
102
102
|
args: [{ selector: 'mf-rating', exportAs: 'mfRating', imports: [Icon, NgTemplateOutlet], host: {
|
|
103
103
|
class: 'inline-flex',
|
|
@@ -60,10 +60,10 @@ class ScrollArea {
|
|
|
60
60
|
this.canScrollStart.set(offset > 1);
|
|
61
61
|
this.canScrollEnd.set(max > 1 && offset < max - 1);
|
|
62
62
|
}
|
|
63
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
64
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.
|
|
63
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: ScrollArea, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
64
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.7", type: ScrollArea, isStandalone: true, selector: "mf-scroll-area", inputs: { orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "scroll": "updateEdges()" }, properties: { "class": "hostClasses()" } }, exportAs: ["mfScrollArea"], ngImport: i0, template: '<ng-content />', isInline: true });
|
|
65
65
|
}
|
|
66
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: ScrollArea, decorators: [{
|
|
67
67
|
type: Component,
|
|
68
68
|
args: [{
|
|
69
69
|
selector: 'mf-scroll-area',
|
|
@@ -138,12 +138,12 @@ class SearchInput extends ValueAccessorBase {
|
|
|
138
138
|
else
|
|
139
139
|
this.inputEl()?.nativeElement.blur();
|
|
140
140
|
}
|
|
141
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
142
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
141
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
142
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SearchInput, isStandalone: true, selector: "mf-search-input", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, tooltipLabel: { classPropertyName: "tooltipLabel", publicName: "tooltipLabel", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, debounceMs: { classPropertyName: "debounceMs", publicName: "debounceMs", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { properties: { "class.w-full": "fullWidth()" }, classAttribute: "inline-block" }, providers: [
|
|
143
143
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SearchInput), multi: true },
|
|
144
144
|
], viewQueries: [{ propertyName: "inputEl", first: true, predicate: ["inputEl"], descendants: true, isSignal: true }, { propertyName: "tooltipRef", first: true, predicate: Tooltip, descendants: true, isSignal: true }], exportAs: ["mfSearchInput"], usesInheritance: true, ngImport: i0, template: "<div class=\"relative inline-flex items-center\" [class.w-full]=\"fullWidth()\">\r\n @if (showSpinner()) {\r\n <span\r\n aria-hidden=\"true\"\r\n class=\"pointer-events-none absolute top-1/2 start-2.5 inline-flex -translate-y-1/2 text-fg-subtle\"\r\n ><mf-spinner size=\"sm\"\r\n /></span>\r\n } @else {\r\n <span\r\n mfIcon\r\n [size]=\"18\"\r\n class=\"pointer-events-none absolute top-1/2 start-2.5 -translate-y-1/2 text-fg-subtle\"\r\n >search</span\r\n >\r\n }\r\n <input\r\n mfInput\r\n [attr.id]=\"inputId() || null\"\r\n #inputEl\r\n type=\"text\"\r\n [class]=\"inputWidthClass()\"\r\n class=\"transition-[width] duration-base ease-out\"\r\n [value]=\"draft()\"\r\n [placeholder]=\"expanded() ? effectivePlaceholder() : ''\"\r\n [attr.aria-label]=\"effectiveAriaLabel()\"\r\n [mfTooltip]=\"expanded() ? '' : effectiveTooltipLabel()\"\r\n (focus)=\"expand()\"\r\n (input)=\"onInput($any($event.target).value)\"\r\n (blur)=\"collapseIfEmpty()\"\r\n (keydown.escape)=\"onEscape()\"\r\n />\r\n @if (expanded() && draft()) {\r\n <button\r\n type=\"button\"\r\n class=\"inline-flex items-center justify-center absolute top-1/2 end-2 -translate-y-1/2 appearance-none border-0 bg-transparent p-0 text-fg-subtle transition-colors duration-fast ease-emphasis hover:text-fg\"\r\n (click)=\"clear()\"\r\n [attr.aria-label]=\"effectiveClearAriaLabel()\"\r\n >\r\n <span mfIcon [size]=\"16\">close</span>\r\n </button>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }, { kind: "directive", type: Input, selector: "input[mfInput]:not([type=checkbox]):not([type=radio]), textarea[mfInput]", inputs: ["size", "hasError", "autosize", "minRows", "maxRows"] }, { kind: "component", type: Spinner, selector: "mf-spinner", inputs: ["size", "tone", "ariaLabel"], exportAs: ["mfSpinner"] }, { kind: "directive", type: Tooltip, selector: "[mfTooltip], [mfTooltipContent]", inputs: ["mfTooltip", "mfTooltipContent", "tooltipPosition"], exportAs: ["mfTooltip"] }] });
|
|
145
145
|
}
|
|
146
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SearchInput, decorators: [{
|
|
147
147
|
type: Component,
|
|
148
148
|
args: [{ selector: 'mf-search-input', exportAs: 'mfSearchInput', imports: [Icon, Input, Spinner, Tooltip], host: { class: 'inline-block', '[class.w-full]': 'fullWidth()' }, providers: [
|
|
149
149
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SearchInput), multi: true },
|
|
@@ -79,12 +79,12 @@ class SegmentedControl extends ValueAccessorBase {
|
|
|
79
79
|
itemClasses(option) {
|
|
80
80
|
return cn(segmentedItemVariants({ selected: option.value === this.value(), disabled: this.disabled() }));
|
|
81
81
|
}
|
|
82
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
83
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
82
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SegmentedControl, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
83
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SegmentedControl, isStandalone: true, selector: "mf-segmented-control", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { classAttribute: "inline-block" }, providers: [
|
|
84
84
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SegmentedControl), multi: true },
|
|
85
85
|
], exportAs: ["mfSegmentedControl"], usesInheritance: true, ngImport: i0, template: "<div\r\n ngToolbar\r\n [disabled]=\"disabled()\"\r\n [value]=\"toolbarValue()\"\r\n (valueChange)=\"onToolbarValueChange($event)\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n [class]=\"trackClasses()\"\r\n>\r\n <!-- Kayan par\u00E7a (core `[mfSlidingIndicator]`) \u2014 se\u00E7enekler `relative`, \u00FCst\u00FCne boyan\u0131r. -->\r\n <span\r\n mfSlidingIndicator\r\n target='[data-selected=\"true\"]'\r\n [track]=\"value()\"\r\n class=\"inset-y-0.5 rounded-sm bg-surface shadow-1\"\r\n ></span>\r\n <div ngToolbarWidgetGroup [multi]=\"false\" [disabled]=\"disabled()\" class=\"contents\">\r\n @for (option of options(); track option.value) {\r\n <button\r\n type=\"button\"\r\n ngToolbarWidget\r\n [value]=\"option.value\"\r\n [attr.data-selected]=\"option.value === value()\"\r\n [class]=\"itemClasses(option)\"\r\n >\r\n {{ option.label }}\r\n </button>\r\n }\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: Toolbar, selector: "[ngToolbar]", inputs: ["orientation", "softDisabled", "disabled", "wrap", "value"], outputs: ["valueChange"], exportAs: ["ngToolbar"] }, { kind: "directive", type: ToolbarWidgetGroup, selector: "[ngToolbarWidgetGroup]", inputs: ["disabled", "multi"], exportAs: ["ngToolbarWidgetGroup"] }, { kind: "directive", type: ToolbarWidget, selector: "[ngToolbarWidget]", inputs: ["id", "disabled", "value"], exportAs: ["ngToolbarWidget"] }, { kind: "directive", type: SlidingIndicator, selector: "[mfSlidingIndicator]", inputs: ["axis", "target", "track", "container"], exportAs: ["mfSlidingIndicator"] }] });
|
|
86
86
|
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SegmentedControl, decorators: [{
|
|
88
88
|
type: Component,
|
|
89
89
|
args: [{ selector: 'mf-segmented-control', exportAs: 'mfSegmentedControl', imports: [Toolbar, ToolbarWidgetGroup, ToolbarWidget, SlidingIndicator], host: { class: 'inline-block' }, providers: [
|
|
90
90
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SegmentedControl), multi: true },
|
|
@@ -212,10 +212,10 @@ class Select {
|
|
|
212
212
|
this.select(option);
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
216
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
215
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Select, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
216
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: Select, isStandalone: true, selector: "mf-select", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: true, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleChips: { classPropertyName: "maxVisibleChips", publicName: "maxVisibleChips", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", values: "valuesChange" }, host: { classAttribute: "block" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Select), multi: true }], exportAs: ["mfSelect"], ngImport: i0, template: "<button\r\n type=\"button\"\r\n cdkOverlayOrigin\r\n #origin=\"cdkOverlayOrigin\"\r\n [class]=\"triggerClasses()\"\r\n [disabled]=\"disabled()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n [attr.aria-expanded]=\"open()\"\r\n aria-haspopup=\"listbox\"\r\n (click)=\"toggle()\"\r\n (keydown)=\"onTriggerKeydown($event)\"\r\n>\r\n @if (multiple()) {\r\n @if (selectedOptions().length > 0) {\r\n <span class=\"flex min-w-0 flex-1 flex-wrap items-center gap-1\">\r\n @for (option of visibleChips(); track option.label) {\r\n <mf-chip size=\"sm\">{{ option.label }}</mf-chip>\r\n }\r\n @if (overflowChipCount() > 0) {\r\n <mf-chip size=\"sm\">+{{ overflowChipCount() }}</mf-chip>\r\n }\r\n </span>\r\n } @else {\r\n <span class=\"truncate text-fg-subtle\">{{ effectivePlaceholder() }}</span>\r\n }\r\n } @else {\r\n <span class=\"truncate\" [class.text-fg-subtle]=\"!selectedLabel()\">\r\n {{ selectedLabel() || effectivePlaceholder() }}\r\n </span>\r\n }\r\n <span mfIcon [size]=\"18\" class=\"shrink-0 text-fg-subtle\">unfold_more</span>\r\n</button>\r\n\r\n<mf-popover\r\n [origin]=\"origin\"\r\n [open]=\"open()\"\r\n placement=\"bottom-start\"\r\n padding=\"sm\"\r\n [matchTriggerWidth]=\"true\"\r\n (closed)=\"close()\"\r\n>\r\n <ul\r\n role=\"listbox\"\r\n tabindex=\"0\"\r\n [attr.aria-multiselectable]=\"multiple() || null\"\r\n class=\"w-full max-h-64 min-w-[8rem] text-sm\"\r\n (keydown)=\"onPanelKeydown($event)\"\r\n >\r\n @for (option of options(); track option.label; let i = $index) {\r\n <!-- role=\"option\" B\u0130LEREK odaklanabilir de\u011Fil \u2014 klavye gezinmesi yukar\u0131daki listbox (keydown)'da merkezi. -->\r\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\r\n <li\r\n role=\"option\"\r\n [attr.aria-selected]=\"isSelected(option)\"\r\n [class]=\"optionClasses(option, i)\"\r\n (mouseenter)=\"highlighted.set(i)\"\r\n (click)=\"select(option)\"\r\n >\r\n <span class=\"truncate\">{{ option.label }}</span>\r\n @if (isSelected(option)) {\r\n <span mfIcon [size]=\"16\">check</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</mf-popover>\r\n", dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }, { kind: "component", type: Popover, selector: "mf-popover", inputs: ["origin", "open", "placement", "padding", "hasBackdrop", "matchTriggerWidth", "panelClass"], outputs: ["openChange", "closed"], exportAs: ["mfPopover"] }, { kind: "component", type: Chip, selector: "mf-chip", inputs: ["tone", "size", "selected", "disabled", "removable", "removeLabel"], outputs: ["removed"], exportAs: ["mfChip"] }] });
|
|
217
217
|
}
|
|
218
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
218
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Select, decorators: [{
|
|
219
219
|
type: Component,
|
|
220
220
|
args: [{ selector: 'mf-select', exportAs: 'mfSelect', imports: [OverlayModule, Icon, Popover, Chip], host: { class: 'block' }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Select), multi: true }], template: "<button\r\n type=\"button\"\r\n cdkOverlayOrigin\r\n #origin=\"cdkOverlayOrigin\"\r\n [class]=\"triggerClasses()\"\r\n [disabled]=\"disabled()\"\r\n [attr.aria-label]=\"ariaLabel() || null\"\r\n [attr.aria-expanded]=\"open()\"\r\n aria-haspopup=\"listbox\"\r\n (click)=\"toggle()\"\r\n (keydown)=\"onTriggerKeydown($event)\"\r\n>\r\n @if (multiple()) {\r\n @if (selectedOptions().length > 0) {\r\n <span class=\"flex min-w-0 flex-1 flex-wrap items-center gap-1\">\r\n @for (option of visibleChips(); track option.label) {\r\n <mf-chip size=\"sm\">{{ option.label }}</mf-chip>\r\n }\r\n @if (overflowChipCount() > 0) {\r\n <mf-chip size=\"sm\">+{{ overflowChipCount() }}</mf-chip>\r\n }\r\n </span>\r\n } @else {\r\n <span class=\"truncate text-fg-subtle\">{{ effectivePlaceholder() }}</span>\r\n }\r\n } @else {\r\n <span class=\"truncate\" [class.text-fg-subtle]=\"!selectedLabel()\">\r\n {{ selectedLabel() || effectivePlaceholder() }}\r\n </span>\r\n }\r\n <span mfIcon [size]=\"18\" class=\"shrink-0 text-fg-subtle\">unfold_more</span>\r\n</button>\r\n\r\n<mf-popover\r\n [origin]=\"origin\"\r\n [open]=\"open()\"\r\n placement=\"bottom-start\"\r\n padding=\"sm\"\r\n [matchTriggerWidth]=\"true\"\r\n (closed)=\"close()\"\r\n>\r\n <ul\r\n role=\"listbox\"\r\n tabindex=\"0\"\r\n [attr.aria-multiselectable]=\"multiple() || null\"\r\n class=\"w-full max-h-64 min-w-[8rem] text-sm\"\r\n (keydown)=\"onPanelKeydown($event)\"\r\n >\r\n @for (option of options(); track option.label; let i = $index) {\r\n <!-- role=\"option\" B\u0130LEREK odaklanabilir de\u011Fil \u2014 klavye gezinmesi yukar\u0131daki listbox (keydown)'da merkezi. -->\r\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\r\n <li\r\n role=\"option\"\r\n [attr.aria-selected]=\"isSelected(option)\"\r\n [class]=\"optionClasses(option, i)\"\r\n (mouseenter)=\"highlighted.set(i)\"\r\n (click)=\"select(option)\"\r\n >\r\n <span class=\"truncate\">{{ option.label }}</span>\r\n @if (isSelected(option)) {\r\n <span mfIcon [size]=\"16\">check</span>\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</mf-popover>\r\n" }]
|
|
221
221
|
}], propDecorators: { options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], values: [{ type: i0.Input, args: [{ isSignal: true, alias: "values", required: false }] }, { type: i0.Output, args: ["valuesChange"] }], maxVisibleChips: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxVisibleChips", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], hasError: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasError", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
@@ -184,10 +184,10 @@ class SidebarNavItemRow {
|
|
|
184
184
|
closeFlyout() {
|
|
185
185
|
this.flyoutOpen.set(false);
|
|
186
186
|
}
|
|
187
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
188
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
187
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SidebarNavItemRow, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
188
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SidebarNavItemRow, isStandalone: true, selector: "mf-sidebar-nav-item", inputs: { item: { classPropertyName: "item", publicName: "item", isSignal: true, isRequired: true, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, activeItemId: { classPropertyName: "activeItemId", publicName: "activeItemId", isSignal: true, isRequired: false, transformFunction: null }, expanded: { classPropertyName: "expanded", publicName: "expanded", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activate: "activate", toggleExpand: "toggleExpand" }, host: { classAttribute: "contents" }, ngImport: i0, template: "<button\r\n type=\"button\"\r\n cdkOverlayOrigin\r\n #origin=\"cdkOverlayOrigin\"\r\n [class]=\"rowClasses()\"\r\n [attr.aria-expanded]=\"hasChildren() && !collapsed() ? expanded() : null\"\r\n [attr.aria-current]=\"isActive() && !hasChildren() ? 'page' : null\"\r\n [attr.aria-label]=\"collapsed() ? item().label : null\"\r\n [mfTooltip]=\"collapsed() ? item().label : ''\"\r\n tooltipPosition=\"right\"\r\n (click)=\"onRowClick()\"\r\n>\r\n <span mfIcon [size]=\"20\" [filled]=\"isActive()\">{{ item().icon }}</span>\r\n\r\n @if (!collapsed()) {\r\n <span class=\"min-w-0 flex-1 truncate\">{{ item().label }}</span>\r\n @if (item().badge !== undefined) {\r\n <span\r\n class=\"rounded-full bg-primary-tint px-1.5 py-0.5 font-mono text-eyebrow text-primary-tint-fg group-data-[appearance=brand]/sidebar:bg-primary-800 group-data-[appearance=brand]/sidebar:text-primary-100 group-data-[appearance=brand-light]/sidebar:bg-primary-200 group-data-[appearance=brand-light]/sidebar:text-primary-800\"\r\n >\r\n {{ item().badge }}\r\n </span>\r\n }\r\n @if (hasChildren()) {\r\n <span\r\n mfIcon\r\n [size]=\"16\"\r\n class=\"shrink-0 text-fg-subtle transition-transform duration-base group-data-[appearance=brand]/sidebar:text-primary-300 group-data-[appearance=brand-light]/sidebar:text-primary-700 rtl:-scale-x-100\"\r\n [class.rotate-90]=\"expanded()\"\r\n [class.rtl:-rotate-90]=\"expanded()\"\r\n >\r\n chevron_right\r\n </span>\r\n }\r\n }\r\n</button>\r\n\r\n@if (hasChildren() && !collapsed()) {\r\n <div\r\n class=\"grid overflow-hidden transition-[grid-template-rows] duration-base ease-out\"\r\n [style.grid-template-rows]=\"expanded() ? '1fr' : '0fr'\"\r\n [attr.inert]=\"expanded() ? null : true\"\r\n >\r\n <ul class=\"m-0 min-h-0 list-none overflow-hidden p-0\">\r\n @for (child of item().children; track child.id) {\r\n <li>\r\n <button type=\"button\" [class]=\"childRowClasses(child)\" (click)=\"onChildClick(child)\">\r\n <span mfIcon [size]=\"16\">{{ child.icon }}</span>\r\n <span class=\"truncate\">{{ child.label }}</span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n}\r\n\r\n@if (hasChildren() && collapsed()) {\r\n <mf-popover\r\n [origin]=\"origin\"\r\n [open]=\"flyoutOpen()\"\r\n placement=\"right-start\"\r\n padding=\"sm\"\r\n panelClass=\"min-w-48\"\r\n (closed)=\"closeFlyout()\"\r\n >\r\n <div role=\"menu\" [attr.aria-label]=\"item().label\">\r\n <p class=\"truncate px-2.5 py-1.5 text-eyebrow text-fg-subtle\">{{ item().label }}</p>\r\n @for (child of item().children; track child.id) {\r\n <button\r\n type=\"button\"\r\n role=\"menuitem\"\r\n class=\"flex w-full appearance-none items-center gap-2.5 rounded-sm border-0 bg-transparent px-2.5 py-1.5 text-start text-sm font-medium text-fg-muted transition-colors duration-fast ease-emphasis hover:bg-state-hover\"\r\n (click)=\"onChildClick(child)\"\r\n >\r\n <span mfIcon [size]=\"16\">{{ child.icon }}</span>\r\n <span class=\"truncate\">{{ child.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </mf-popover>\r\n}\r\n", dependencies: [{ kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: Popover, selector: "mf-popover", inputs: ["origin", "open", "placement", "padding", "hasBackdrop", "matchTriggerWidth", "panelClass"], outputs: ["openChange", "closed"], exportAs: ["mfPopover"] }, { kind: "directive", type: Tooltip, selector: "[mfTooltip], [mfTooltipContent]", inputs: ["mfTooltip", "mfTooltipContent", "tooltipPosition"], exportAs: ["mfTooltip"] }] });
|
|
189
189
|
}
|
|
190
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SidebarNavItemRow, decorators: [{
|
|
191
191
|
type: Component,
|
|
192
192
|
args: [{ selector: 'mf-sidebar-nav-item', imports: [Icon, OverlayModule, Popover, Tooltip], host: { class: 'contents' }, template: "<button\r\n type=\"button\"\r\n cdkOverlayOrigin\r\n #origin=\"cdkOverlayOrigin\"\r\n [class]=\"rowClasses()\"\r\n [attr.aria-expanded]=\"hasChildren() && !collapsed() ? expanded() : null\"\r\n [attr.aria-current]=\"isActive() && !hasChildren() ? 'page' : null\"\r\n [attr.aria-label]=\"collapsed() ? item().label : null\"\r\n [mfTooltip]=\"collapsed() ? item().label : ''\"\r\n tooltipPosition=\"right\"\r\n (click)=\"onRowClick()\"\r\n>\r\n <span mfIcon [size]=\"20\" [filled]=\"isActive()\">{{ item().icon }}</span>\r\n\r\n @if (!collapsed()) {\r\n <span class=\"min-w-0 flex-1 truncate\">{{ item().label }}</span>\r\n @if (item().badge !== undefined) {\r\n <span\r\n class=\"rounded-full bg-primary-tint px-1.5 py-0.5 font-mono text-eyebrow text-primary-tint-fg group-data-[appearance=brand]/sidebar:bg-primary-800 group-data-[appearance=brand]/sidebar:text-primary-100 group-data-[appearance=brand-light]/sidebar:bg-primary-200 group-data-[appearance=brand-light]/sidebar:text-primary-800\"\r\n >\r\n {{ item().badge }}\r\n </span>\r\n }\r\n @if (hasChildren()) {\r\n <span\r\n mfIcon\r\n [size]=\"16\"\r\n class=\"shrink-0 text-fg-subtle transition-transform duration-base group-data-[appearance=brand]/sidebar:text-primary-300 group-data-[appearance=brand-light]/sidebar:text-primary-700 rtl:-scale-x-100\"\r\n [class.rotate-90]=\"expanded()\"\r\n [class.rtl:-rotate-90]=\"expanded()\"\r\n >\r\n chevron_right\r\n </span>\r\n }\r\n }\r\n</button>\r\n\r\n@if (hasChildren() && !collapsed()) {\r\n <div\r\n class=\"grid overflow-hidden transition-[grid-template-rows] duration-base ease-out\"\r\n [style.grid-template-rows]=\"expanded() ? '1fr' : '0fr'\"\r\n [attr.inert]=\"expanded() ? null : true\"\r\n >\r\n <ul class=\"m-0 min-h-0 list-none overflow-hidden p-0\">\r\n @for (child of item().children; track child.id) {\r\n <li>\r\n <button type=\"button\" [class]=\"childRowClasses(child)\" (click)=\"onChildClick(child)\">\r\n <span mfIcon [size]=\"16\">{{ child.icon }}</span>\r\n <span class=\"truncate\">{{ child.label }}</span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n}\r\n\r\n@if (hasChildren() && collapsed()) {\r\n <mf-popover\r\n [origin]=\"origin\"\r\n [open]=\"flyoutOpen()\"\r\n placement=\"right-start\"\r\n padding=\"sm\"\r\n panelClass=\"min-w-48\"\r\n (closed)=\"closeFlyout()\"\r\n >\r\n <div role=\"menu\" [attr.aria-label]=\"item().label\">\r\n <p class=\"truncate px-2.5 py-1.5 text-eyebrow text-fg-subtle\">{{ item().label }}</p>\r\n @for (child of item().children; track child.id) {\r\n <button\r\n type=\"button\"\r\n role=\"menuitem\"\r\n class=\"flex w-full appearance-none items-center gap-2.5 rounded-sm border-0 bg-transparent px-2.5 py-1.5 text-start text-sm font-medium text-fg-muted transition-colors duration-fast ease-emphasis hover:bg-state-hover\"\r\n (click)=\"onChildClick(child)\"\r\n >\r\n <span mfIcon [size]=\"16\">{{ child.icon }}</span>\r\n <span class=\"truncate\">{{ child.label }}</span>\r\n </button>\r\n }\r\n </div>\r\n </mf-popover>\r\n}\r\n" }]
|
|
193
193
|
}], propDecorators: { item: [{ type: i0.Input, args: [{ isSignal: true, alias: "item", required: true }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }], activeItemId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeItemId", required: false }] }], expanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "expanded", required: false }] }], activate: [{ type: i0.Output, args: ["activate"] }], toggleExpand: [{ type: i0.Output, args: ["toggleExpand"] }] } });
|
|
@@ -276,10 +276,10 @@ class SidebarTenantSwitcher {
|
|
|
276
276
|
this.select(tenant);
|
|
277
277
|
}
|
|
278
278
|
}
|
|
279
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
280
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
279
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SidebarTenantSwitcher, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
280
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SidebarTenantSwitcher, isStandalone: true, selector: "mf-sidebar-tenant-switcher", inputs: { tenants: { classPropertyName: "tenants", publicName: "tenants", isSignal: true, isRequired: false, transformFunction: null }, activeTenantId: { classPropertyName: "activeTenantId", publicName: "activeTenantId", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, noTenantsLabel: { classPropertyName: "noTenantsLabel", publicName: "noTenantsLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { tenantChange: "tenantChange" }, host: { classAttribute: "contents" }, ngImport: i0, template: "<button\r\n type=\"button\"\r\n cdkOverlayOrigin\r\n #origin=\"cdkOverlayOrigin\"\r\n class=\"flex h-16 w-full shrink-0 appearance-none items-center gap-2.5 border-x-0 border-t-0 border-b border-border bg-transparent px-3 text-start transition-colors duration-fast ease-emphasis hover:bg-state-hover focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus-ring group-data-[appearance=brand]/sidebar:border-primary-800 group-data-[appearance=brand]/sidebar:hover:bg-primary-800 group-data-[appearance=brand]/sidebar:focus-visible:outline-primary-300 group-data-[appearance=brand-light]/sidebar:border-primary-200 group-data-[appearance=brand-light]/sidebar:hover:bg-primary-200 group-data-[appearance=brand-light]/sidebar:focus-visible:outline-primary-700\"\r\n [class.justify-center]=\"collapsed()\"\r\n [attr.aria-label]=\"collapsed() ? (activeTenant()?.name ?? effectiveLabel()) : null\"\r\n [mfTooltip]=\"collapsed() ? (activeTenant()?.name ?? effectiveLabel()) : ''\"\r\n tooltipPosition=\"right\"\r\n [attr.aria-expanded]=\"open()\"\r\n aria-haspopup=\"listbox\"\r\n (click)=\"toggle()\"\r\n (keydown)=\"onTriggerKeydown($event)\"\r\n>\r\n <mf-avatar [name]=\"activeTenant()?.name ?? '?'\" shape=\"square\" size=\"md\" [colorful]=\"true\" />\r\n @if (!collapsed()) {\r\n <span class=\"flex min-w-0 flex-1 flex-col\">\r\n <span\r\n class=\"truncate font-display text-sm font-semibold text-fg group-data-[appearance=brand]/sidebar:text-primary-50 group-data-[appearance=brand-light]/sidebar:text-primary-900\"\r\n >\r\n {{ activeTenant()?.name ?? effectiveNoTenantsLabel() }}\r\n </span>\r\n <span\r\n class=\"truncate text-xs text-fg-subtle group-data-[appearance=brand]/sidebar:text-primary-300 group-data-[appearance=brand-light]/sidebar:text-primary-700\"\r\n >{{ effectiveLabel() }}</span\r\n >\r\n </span>\r\n <span\r\n mfIcon\r\n [size]=\"18\"\r\n class=\"shrink-0 text-fg-subtle group-data-[appearance=brand]/sidebar:text-primary-300 group-data-[appearance=brand-light]/sidebar:text-primary-700\"\r\n >unfold_more</span\r\n >\r\n }\r\n</button>\r\n\r\n<mf-popover\r\n [origin]=\"origin\"\r\n [open]=\"open()\"\r\n placement=\"bottom-start\"\r\n padding=\"sm\"\r\n [matchTriggerWidth]=\"!collapsed()\"\r\n [panelClass]=\"cn('max-h-72', collapsed() ? 'min-w-60' : '')\"\r\n (closed)=\"close()\"\r\n>\r\n <ul\r\n role=\"listbox\"\r\n tabindex=\"0\"\r\n [attr.aria-label]=\"effectiveLabel()\"\r\n class=\"w-full text-sm\"\r\n (keydown)=\"onPanelKeydown($event)\"\r\n >\r\n @for (tenant of tenants(); track tenant.id; let i = $index) {\r\n <!-- role=\"option\" B\u0130LEREK odaklanabilir de\u011Fil \u2014 klavye gezinmesi yukar\u0131daki listbox (keydown)'da merkezi. -->\r\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\r\n <li\r\n role=\"option\"\r\n [attr.aria-selected]=\"tenant.id === activeTenantId()\"\r\n [class]=\"optionClasses(tenant, i)\"\r\n (mouseenter)=\"highlighted.set(i)\"\r\n (click)=\"select(tenant)\"\r\n >\r\n <mf-avatar [name]=\"tenant.name\" shape=\"square\" size=\"sm\" [colorful]=\"true\" />\r\n <span class=\"min-w-0 flex-1 truncate text-fg-muted\">{{ tenant.name }}</span>\r\n @if (tenant.id === activeTenantId()) {\r\n <span mfIcon [size]=\"16\">check</span>\r\n }\r\n </li>\r\n } @empty {\r\n <li class=\"px-2.5 py-1.5 text-fg-subtle\">{{ effectiveNoTenantsLabel() }}</li>\r\n }\r\n </ul>\r\n</mf-popover>\r\n", dependencies: [{ kind: "component", type: Avatar, selector: "mf-avatar", inputs: ["name", "src", "size", "shape", "colorful", "tone"] }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: Popover, selector: "mf-popover", inputs: ["origin", "open", "placement", "padding", "hasBackdrop", "matchTriggerWidth", "panelClass"], outputs: ["openChange", "closed"], exportAs: ["mfPopover"] }, { kind: "directive", type: Tooltip, selector: "[mfTooltip], [mfTooltipContent]", inputs: ["mfTooltip", "mfTooltipContent", "tooltipPosition"], exportAs: ["mfTooltip"] }] });
|
|
281
281
|
}
|
|
282
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
282
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SidebarTenantSwitcher, decorators: [{
|
|
283
283
|
type: Component,
|
|
284
284
|
args: [{ selector: 'mf-sidebar-tenant-switcher', imports: [Avatar, Icon, OverlayModule, Popover, Tooltip], host: { class: 'contents' }, template: "<button\r\n type=\"button\"\r\n cdkOverlayOrigin\r\n #origin=\"cdkOverlayOrigin\"\r\n class=\"flex h-16 w-full shrink-0 appearance-none items-center gap-2.5 border-x-0 border-t-0 border-b border-border bg-transparent px-3 text-start transition-colors duration-fast ease-emphasis hover:bg-state-hover focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus-ring group-data-[appearance=brand]/sidebar:border-primary-800 group-data-[appearance=brand]/sidebar:hover:bg-primary-800 group-data-[appearance=brand]/sidebar:focus-visible:outline-primary-300 group-data-[appearance=brand-light]/sidebar:border-primary-200 group-data-[appearance=brand-light]/sidebar:hover:bg-primary-200 group-data-[appearance=brand-light]/sidebar:focus-visible:outline-primary-700\"\r\n [class.justify-center]=\"collapsed()\"\r\n [attr.aria-label]=\"collapsed() ? (activeTenant()?.name ?? effectiveLabel()) : null\"\r\n [mfTooltip]=\"collapsed() ? (activeTenant()?.name ?? effectiveLabel()) : ''\"\r\n tooltipPosition=\"right\"\r\n [attr.aria-expanded]=\"open()\"\r\n aria-haspopup=\"listbox\"\r\n (click)=\"toggle()\"\r\n (keydown)=\"onTriggerKeydown($event)\"\r\n>\r\n <mf-avatar [name]=\"activeTenant()?.name ?? '?'\" shape=\"square\" size=\"md\" [colorful]=\"true\" />\r\n @if (!collapsed()) {\r\n <span class=\"flex min-w-0 flex-1 flex-col\">\r\n <span\r\n class=\"truncate font-display text-sm font-semibold text-fg group-data-[appearance=brand]/sidebar:text-primary-50 group-data-[appearance=brand-light]/sidebar:text-primary-900\"\r\n >\r\n {{ activeTenant()?.name ?? effectiveNoTenantsLabel() }}\r\n </span>\r\n <span\r\n class=\"truncate text-xs text-fg-subtle group-data-[appearance=brand]/sidebar:text-primary-300 group-data-[appearance=brand-light]/sidebar:text-primary-700\"\r\n >{{ effectiveLabel() }}</span\r\n >\r\n </span>\r\n <span\r\n mfIcon\r\n [size]=\"18\"\r\n class=\"shrink-0 text-fg-subtle group-data-[appearance=brand]/sidebar:text-primary-300 group-data-[appearance=brand-light]/sidebar:text-primary-700\"\r\n >unfold_more</span\r\n >\r\n }\r\n</button>\r\n\r\n<mf-popover\r\n [origin]=\"origin\"\r\n [open]=\"open()\"\r\n placement=\"bottom-start\"\r\n padding=\"sm\"\r\n [matchTriggerWidth]=\"!collapsed()\"\r\n [panelClass]=\"cn('max-h-72', collapsed() ? 'min-w-60' : '')\"\r\n (closed)=\"close()\"\r\n>\r\n <ul\r\n role=\"listbox\"\r\n tabindex=\"0\"\r\n [attr.aria-label]=\"effectiveLabel()\"\r\n class=\"w-full text-sm\"\r\n (keydown)=\"onPanelKeydown($event)\"\r\n >\r\n @for (tenant of tenants(); track tenant.id; let i = $index) {\r\n <!-- role=\"option\" B\u0130LEREK odaklanabilir de\u011Fil \u2014 klavye gezinmesi yukar\u0131daki listbox (keydown)'da merkezi. -->\r\n <!-- eslint-disable-next-line @angular-eslint/template/click-events-have-key-events, @angular-eslint/template/interactive-supports-focus -->\r\n <li\r\n role=\"option\"\r\n [attr.aria-selected]=\"tenant.id === activeTenantId()\"\r\n [class]=\"optionClasses(tenant, i)\"\r\n (mouseenter)=\"highlighted.set(i)\"\r\n (click)=\"select(tenant)\"\r\n >\r\n <mf-avatar [name]=\"tenant.name\" shape=\"square\" size=\"sm\" [colorful]=\"true\" />\r\n <span class=\"min-w-0 flex-1 truncate text-fg-muted\">{{ tenant.name }}</span>\r\n @if (tenant.id === activeTenantId()) {\r\n <span mfIcon [size]=\"16\">check</span>\r\n }\r\n </li>\r\n } @empty {\r\n <li class=\"px-2.5 py-1.5 text-fg-subtle\">{{ effectiveNoTenantsLabel() }}</li>\r\n }\r\n </ul>\r\n</mf-popover>\r\n" }]
|
|
285
285
|
}], propDecorators: { tenants: [{ type: i0.Input, args: [{ isSignal: true, alias: "tenants", required: false }] }], activeTenantId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTenantId", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], noTenantsLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "noTenantsLabel", required: false }] }], tenantChange: [{ type: i0.Output, args: ["tenantChange"] }] } });
|
|
@@ -300,10 +300,10 @@ class SidebarUserMenu {
|
|
|
300
300
|
sidebarLabels = inject(MF_SIDEBAR_LABELS);
|
|
301
301
|
effectiveNoUserLabel = computed(() => this.noUserLabel() ?? this.sidebarLabels().noUser, /* @ts-ignore */
|
|
302
302
|
...(ngDevMode ? [{ debugName: "effectiveNoUserLabel" }] : /* istanbul ignore next */ []));
|
|
303
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
304
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
303
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SidebarUserMenu, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
304
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: SidebarUserMenu, isStandalone: true, selector: "mf-sidebar-user-menu", inputs: { user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, noUserLabel: { classPropertyName: "noUserLabel", publicName: "noUserLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { profileClick: "profileClick" }, host: { classAttribute: "contents" }, ngImport: i0, template: "@if (user(); as current) {\r\n <button\r\n type=\"button\"\r\n class=\"flex h-16 w-full shrink-0 appearance-none items-center gap-2.5 border-0 bg-transparent px-3 text-start transition-colors duration-fast ease-emphasis hover:bg-state-hover focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus-ring group-data-[appearance=brand]/sidebar:hover:bg-primary-800 group-data-[appearance=brand]/sidebar:focus-visible:outline-primary-300 group-data-[appearance=brand-light]/sidebar:hover:bg-primary-200 group-data-[appearance=brand-light]/sidebar:focus-visible:outline-primary-700\"\r\n [class.justify-center]=\"collapsed()\"\r\n [attr.aria-label]=\"collapsed() ? current.name : null\"\r\n [mfTooltip]=\"collapsed() ? current.name : ''\"\r\n tooltipPosition=\"right\"\r\n (click)=\"profileClick.emit()\"\r\n >\r\n <mf-avatar [name]=\"current.name\" tone=\"info\" size=\"md\" />\r\n @if (!collapsed()) {\r\n <span class=\"flex min-w-0 flex-1 flex-col\">\r\n <span\r\n class=\"truncate text-sm font-semibold text-fg group-data-[appearance=brand]/sidebar:text-primary-50 group-data-[appearance=brand-light]/sidebar:text-primary-900\"\r\n >{{ current.name }}</span\r\n >\r\n <span\r\n class=\"truncate text-xs text-fg-subtle group-data-[appearance=brand]/sidebar:text-primary-300 group-data-[appearance=brand-light]/sidebar:text-primary-700\"\r\n >{{ current.role ?? current.email }}</span\r\n >\r\n </span>\r\n <span\r\n mfIcon\r\n [size]=\"18\"\r\n class=\"shrink-0 text-fg-subtle group-data-[appearance=brand]/sidebar:text-primary-300 group-data-[appearance=brand-light]/sidebar:text-primary-700\"\r\n >settings</span\r\n >\r\n }\r\n </button>\r\n} @else {\r\n <div\r\n class=\"flex h-16 shrink-0 items-center gap-2.5 px-3 text-fg-subtle\"\r\n [class.justify-center]=\"collapsed()\"\r\n >\r\n <span mfIcon [size]=\"20\">person_off</span>\r\n @if (!collapsed()) {\r\n <span class=\"truncate text-sm\">{{ effectiveNoUserLabel() }}</span>\r\n }\r\n </div>\r\n}\r\n", dependencies: [{ kind: "component", type: Avatar, selector: "mf-avatar", inputs: ["name", "src", "size", "shape", "colorful", "tone"] }, { kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }, { kind: "directive", type: Tooltip, selector: "[mfTooltip], [mfTooltipContent]", inputs: ["mfTooltip", "mfTooltipContent", "tooltipPosition"], exportAs: ["mfTooltip"] }] });
|
|
305
305
|
}
|
|
306
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
306
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: SidebarUserMenu, decorators: [{
|
|
307
307
|
type: Component,
|
|
308
308
|
args: [{ selector: 'mf-sidebar-user-menu', imports: [Avatar, Icon, Tooltip], host: { class: 'contents' }, template: "@if (user(); as current) {\r\n <button\r\n type=\"button\"\r\n class=\"flex h-16 w-full shrink-0 appearance-none items-center gap-2.5 border-0 bg-transparent px-3 text-start transition-colors duration-fast ease-emphasis hover:bg-state-hover focus-visible:outline focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-focus-ring group-data-[appearance=brand]/sidebar:hover:bg-primary-800 group-data-[appearance=brand]/sidebar:focus-visible:outline-primary-300 group-data-[appearance=brand-light]/sidebar:hover:bg-primary-200 group-data-[appearance=brand-light]/sidebar:focus-visible:outline-primary-700\"\r\n [class.justify-center]=\"collapsed()\"\r\n [attr.aria-label]=\"collapsed() ? current.name : null\"\r\n [mfTooltip]=\"collapsed() ? current.name : ''\"\r\n tooltipPosition=\"right\"\r\n (click)=\"profileClick.emit()\"\r\n >\r\n <mf-avatar [name]=\"current.name\" tone=\"info\" size=\"md\" />\r\n @if (!collapsed()) {\r\n <span class=\"flex min-w-0 flex-1 flex-col\">\r\n <span\r\n class=\"truncate text-sm font-semibold text-fg group-data-[appearance=brand]/sidebar:text-primary-50 group-data-[appearance=brand-light]/sidebar:text-primary-900\"\r\n >{{ current.name }}</span\r\n >\r\n <span\r\n class=\"truncate text-xs text-fg-subtle group-data-[appearance=brand]/sidebar:text-primary-300 group-data-[appearance=brand-light]/sidebar:text-primary-700\"\r\n >{{ current.role ?? current.email }}</span\r\n >\r\n </span>\r\n <span\r\n mfIcon\r\n [size]=\"18\"\r\n class=\"shrink-0 text-fg-subtle group-data-[appearance=brand]/sidebar:text-primary-300 group-data-[appearance=brand-light]/sidebar:text-primary-700\"\r\n >settings</span\r\n >\r\n }\r\n </button>\r\n} @else {\r\n <div\r\n class=\"flex h-16 shrink-0 items-center gap-2.5 px-3 text-fg-subtle\"\r\n [class.justify-center]=\"collapsed()\"\r\n >\r\n <span mfIcon [size]=\"20\">person_off</span>\r\n @if (!collapsed()) {\r\n <span class=\"truncate text-sm\">{{ effectiveNoUserLabel() }}</span>\r\n }\r\n </div>\r\n}\r\n" }]
|
|
309
309
|
}], propDecorators: { user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }], noUserLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "noUserLabel", required: false }] }], profileClick: [{ type: i0.Output, args: ["profileClick"] }] } });
|
|
@@ -436,10 +436,10 @@ class Sidebar {
|
|
|
436
436
|
toggleCollapse() {
|
|
437
437
|
this.collapsed.update((v) => !v);
|
|
438
438
|
}
|
|
439
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
440
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
439
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Sidebar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
440
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: Sidebar, isStandalone: true, selector: "mf-sidebar", inputs: { tenants: { classPropertyName: "tenants", publicName: "tenants", isSignal: true, isRequired: false, transformFunction: null }, activeTenantId: { classPropertyName: "activeTenantId", publicName: "activeTenantId", isSignal: true, isRequired: false, transformFunction: null }, navItems: { classPropertyName: "navItems", publicName: "navItems", isSignal: true, isRequired: true, transformFunction: null }, activeItemId: { classPropertyName: "activeItemId", publicName: "activeItemId", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, showUserMenu: { classPropertyName: "showUserMenu", publicName: "showUserMenu", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null }, showCollapseToggle: { classPropertyName: "showCollapseToggle", publicName: "showCollapseToggle", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, collapseLabel: { classPropertyName: "collapseLabel", publicName: "collapseLabel", isSignal: true, isRequired: false, transformFunction: null }, expandLabel: { classPropertyName: "expandLabel", publicName: "expandLabel", isSignal: true, isRequired: false, transformFunction: null }, navAriaLabel: { classPropertyName: "navAriaLabel", publicName: "navAriaLabel", isSignal: true, isRequired: false, transformFunction: null }, expandedIds: { classPropertyName: "expandedIds", publicName: "expandedIds", isSignal: true, isRequired: false, transformFunction: null }, autoExpandActive: { classPropertyName: "autoExpandActive", publicName: "autoExpandActive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { activeTenantId: "activeTenantIdChange", activeItemId: "activeItemIdChange", collapsed: "collapsedChange", tenantChange: "tenantChange", itemClick: "itemClick", profileClick: "profileClick", expandedIds: "expandedIdsChange" }, host: { classAttribute: "flex h-full" }, exportAs: ["mfSidebar"], ngImport: i0, template: "<aside [class]=\"rootClasses()\" [attr.data-appearance]=\"appearance()\">\r\n <div class=\"flex h-full min-h-0 w-full flex-col overflow-hidden\">\r\n @if (tenants().length > 0) {\r\n <mf-sidebar-tenant-switcher\r\n [tenants]=\"tenants()\"\r\n [activeTenantId]=\"activeTenantId()\"\r\n [collapsed]=\"collapsed()\"\r\n (tenantChange)=\"onTenantSelect($event)\"\r\n />\r\n } @else {\r\n <!--\r\n Tenant kavram\u0131 olmayan t\u00FCketiciler `tenants` input'unu hi\u00E7 ge\u00E7mez \u2014 bu\r\n durumda tenant switcher'\u0131n \"Kirac\u0131 bulunamad\u0131\" bo\u015F-durumunu g\u00F6stermek\r\n yerine (kafa kar\u0131\u015Ft\u0131r\u0131c\u0131, ger\u00E7ek bir hata gibi okunur) \u00E7a\u011F\u0131ran\u0131n kendi\r\n marka ba\u015Fl\u0131\u011F\u0131n\u0131 buraya projekte etmesi bekleniyor (\u00F6r. `<mf-brand />`).\r\n -->\r\n <div\r\n class=\"flex h-16 shrink-0 items-center gap-2 border-b border-border px-4 group-data-[appearance=brand]/sidebar:border-primary-800 group-data-[appearance=brand-light]/sidebar:border-primary-200\"\r\n [class.justify-center]=\"collapsed()\"\r\n >\r\n <ng-content select=\"[brand]\" />\r\n </div>\r\n }\r\n\r\n <nav\r\n class=\"flex-1 overflow-x-hidden overflow-y-auto px-2 py-3\"\r\n [attr.aria-label]=\"effectiveNavAriaLabel()\"\r\n >\r\n <ul class=\"m-0 flex list-none flex-col gap-1 p-0\">\r\n @for (item of navItems(); track item.id) {\r\n <li>\r\n <mf-sidebar-nav-item\r\n [item]=\"item\"\r\n [collapsed]=\"collapsed()\"\r\n [activeItemId]=\"activeItemId()\"\r\n [expanded]=\"isExpanded(item.id)\"\r\n (activate)=\"onItemActivate($event)\"\r\n (toggleExpand)=\"onToggleExpand($event)\"\r\n />\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n\r\n @if (showUserMenu()) {\r\n <div\r\n class=\"border-t border-border group-data-[appearance=brand]/sidebar:border-primary-800 group-data-[appearance=brand-light]/sidebar:border-primary-200\"\r\n ></div>\r\n\r\n <mf-sidebar-user-menu\r\n [user]=\"user()\"\r\n [collapsed]=\"collapsed()\"\r\n (profileClick)=\"profileClick.emit()\"\r\n />\r\n }\r\n </div>\r\n\r\n @if (showCollapseToggle()) {\r\n <button\r\n type=\"button\"\r\n class=\"absolute top-14 -end-3 z-10 flex h-6 w-6 appearance-none items-center justify-center rounded-full border border-hairline bg-chrome p-0 text-fg-subtle shadow-1 transition-colors duration-fast ease-emphasis hover:bg-state-hover hover:text-fg active:scale-[0.99] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring group-data-[appearance=brand]/sidebar:bg-primary-900 group-data-[appearance=brand]/sidebar:text-primary-200 group-data-[appearance=brand]/sidebar:hover:bg-primary-800 group-data-[appearance=brand]/sidebar:hover:text-primary-50 group-data-[appearance=brand]/sidebar:focus-visible:outline-primary-300 group-data-[appearance=brand-light]/sidebar:bg-primary-100 group-data-[appearance=brand-light]/sidebar:text-primary-800 group-data-[appearance=brand-light]/sidebar:hover:bg-primary-200 group-data-[appearance=brand-light]/sidebar:hover:text-primary-900 group-data-[appearance=brand-light]/sidebar:focus-visible:outline-primary-700\"\r\n [mfTooltip]=\"collapsed() ? effectiveExpandLabel() : effectiveCollapseLabel()\"\r\n tooltipPosition=\"right\"\r\n [attr.aria-label]=\"collapsed() ? effectiveExpandLabel() : effectiveCollapseLabel()\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <span mfIcon [size]=\"14\" class=\"rtl:-scale-x-100\">{{\r\n collapsed() ? 'chevron_right' : 'chevron_left'\r\n }}</span>\r\n </button>\r\n }\r\n</aside>\r\n", dependencies: [{ kind: "directive", type: Icon, selector: "span[mfIcon]", inputs: ["size", "filled"] }, { kind: "directive", type: Tooltip, selector: "[mfTooltip], [mfTooltipContent]", inputs: ["mfTooltip", "mfTooltipContent", "tooltipPosition"], exportAs: ["mfTooltip"] }, { kind: "component", type: SidebarTenantSwitcher, selector: "mf-sidebar-tenant-switcher", inputs: ["tenants", "activeTenantId", "collapsed", "label", "noTenantsLabel"], outputs: ["tenantChange"] }, { kind: "component", type: SidebarNavItemRow, selector: "mf-sidebar-nav-item", inputs: ["item", "collapsed", "activeItemId", "expanded"], outputs: ["activate", "toggleExpand"] }, { kind: "component", type: SidebarUserMenu, selector: "mf-sidebar-user-menu", inputs: ["user", "collapsed", "noUserLabel"], outputs: ["profileClick"] }] });
|
|
441
441
|
}
|
|
442
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
442
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: Sidebar, decorators: [{
|
|
443
443
|
type: Component,
|
|
444
444
|
args: [{ selector: 'mf-sidebar', exportAs: 'mfSidebar', host: { class: 'flex h-full' }, imports: [Icon, Tooltip, SidebarTenantSwitcher, SidebarNavItemRow, SidebarUserMenu], template: "<aside [class]=\"rootClasses()\" [attr.data-appearance]=\"appearance()\">\r\n <div class=\"flex h-full min-h-0 w-full flex-col overflow-hidden\">\r\n @if (tenants().length > 0) {\r\n <mf-sidebar-tenant-switcher\r\n [tenants]=\"tenants()\"\r\n [activeTenantId]=\"activeTenantId()\"\r\n [collapsed]=\"collapsed()\"\r\n (tenantChange)=\"onTenantSelect($event)\"\r\n />\r\n } @else {\r\n <!--\r\n Tenant kavram\u0131 olmayan t\u00FCketiciler `tenants` input'unu hi\u00E7 ge\u00E7mez \u2014 bu\r\n durumda tenant switcher'\u0131n \"Kirac\u0131 bulunamad\u0131\" bo\u015F-durumunu g\u00F6stermek\r\n yerine (kafa kar\u0131\u015Ft\u0131r\u0131c\u0131, ger\u00E7ek bir hata gibi okunur) \u00E7a\u011F\u0131ran\u0131n kendi\r\n marka ba\u015Fl\u0131\u011F\u0131n\u0131 buraya projekte etmesi bekleniyor (\u00F6r. `<mf-brand />`).\r\n -->\r\n <div\r\n class=\"flex h-16 shrink-0 items-center gap-2 border-b border-border px-4 group-data-[appearance=brand]/sidebar:border-primary-800 group-data-[appearance=brand-light]/sidebar:border-primary-200\"\r\n [class.justify-center]=\"collapsed()\"\r\n >\r\n <ng-content select=\"[brand]\" />\r\n </div>\r\n }\r\n\r\n <nav\r\n class=\"flex-1 overflow-x-hidden overflow-y-auto px-2 py-3\"\r\n [attr.aria-label]=\"effectiveNavAriaLabel()\"\r\n >\r\n <ul class=\"m-0 flex list-none flex-col gap-1 p-0\">\r\n @for (item of navItems(); track item.id) {\r\n <li>\r\n <mf-sidebar-nav-item\r\n [item]=\"item\"\r\n [collapsed]=\"collapsed()\"\r\n [activeItemId]=\"activeItemId()\"\r\n [expanded]=\"isExpanded(item.id)\"\r\n (activate)=\"onItemActivate($event)\"\r\n (toggleExpand)=\"onToggleExpand($event)\"\r\n />\r\n </li>\r\n }\r\n </ul>\r\n </nav>\r\n\r\n @if (showUserMenu()) {\r\n <div\r\n class=\"border-t border-border group-data-[appearance=brand]/sidebar:border-primary-800 group-data-[appearance=brand-light]/sidebar:border-primary-200\"\r\n ></div>\r\n\r\n <mf-sidebar-user-menu\r\n [user]=\"user()\"\r\n [collapsed]=\"collapsed()\"\r\n (profileClick)=\"profileClick.emit()\"\r\n />\r\n }\r\n </div>\r\n\r\n @if (showCollapseToggle()) {\r\n <button\r\n type=\"button\"\r\n class=\"absolute top-14 -end-3 z-10 flex h-6 w-6 appearance-none items-center justify-center rounded-full border border-hairline bg-chrome p-0 text-fg-subtle shadow-1 transition-colors duration-fast ease-emphasis hover:bg-state-hover hover:text-fg active:scale-[0.99] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring group-data-[appearance=brand]/sidebar:bg-primary-900 group-data-[appearance=brand]/sidebar:text-primary-200 group-data-[appearance=brand]/sidebar:hover:bg-primary-800 group-data-[appearance=brand]/sidebar:hover:text-primary-50 group-data-[appearance=brand]/sidebar:focus-visible:outline-primary-300 group-data-[appearance=brand-light]/sidebar:bg-primary-100 group-data-[appearance=brand-light]/sidebar:text-primary-800 group-data-[appearance=brand-light]/sidebar:hover:bg-primary-200 group-data-[appearance=brand-light]/sidebar:hover:text-primary-900 group-data-[appearance=brand-light]/sidebar:focus-visible:outline-primary-700\"\r\n [mfTooltip]=\"collapsed() ? effectiveExpandLabel() : effectiveCollapseLabel()\"\r\n tooltipPosition=\"right\"\r\n [attr.aria-label]=\"collapsed() ? effectiveExpandLabel() : effectiveCollapseLabel()\"\r\n (click)=\"toggleCollapse()\"\r\n >\r\n <span mfIcon [size]=\"14\" class=\"rtl:-scale-x-100\">{{\r\n collapsed() ? 'chevron_right' : 'chevron_left'\r\n }}</span>\r\n </button>\r\n }\r\n</aside>\r\n" }]
|
|
445
445
|
}], ctorParameters: () => [], propDecorators: { tenants: [{ type: i0.Input, args: [{ isSignal: true, alias: "tenants", required: false }] }], activeTenantId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeTenantId", required: false }] }, { type: i0.Output, args: ["activeTenantIdChange"] }], navItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "navItems", required: true }] }], activeItemId: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeItemId", required: false }] }, { type: i0.Output, args: ["activeItemIdChange"] }], user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: false }] }], showUserMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "showUserMenu", required: false }] }], collapsed: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsed", required: false }] }, { type: i0.Output, args: ["collapsedChange"] }], showCollapseToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCollapseToggle", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], collapseLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapseLabel", required: false }] }], expandLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandLabel", required: false }] }], navAriaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "navAriaLabel", required: false }] }], tenantChange: [{ type: i0.Output, args: ["tenantChange"] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], profileClick: [{ type: i0.Output, args: ["profileClick"] }], expandedIds: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandedIds", required: false }] }, { type: i0.Output, args: ["expandedIdsChange"] }], autoExpandActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoExpandActive", required: false }] }] } });
|