@mesgflow/ui-kit 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -5
- package/fesm2022/mesgflow-ui-kit-accordion.mjs +3 -2
- package/fesm2022/mesgflow-ui-kit-accordion.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-agenda.mjs +208 -0
- package/fesm2022/mesgflow-ui-kit-agenda.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs +37 -0
- package/fesm2022/mesgflow-ui-kit-aspect-ratio.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-blocks.mjs +207 -0
- package/fesm2022/mesgflow-ui-kit-blocks.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-box-input.mjs +2 -2
- package/fesm2022/mesgflow-ui-kit-box-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-button.mjs +188 -242
- package/fesm2022/mesgflow-ui-kit-button.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-card.mjs +37 -16
- package/fesm2022/mesgflow-ui-kit-card.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-carousel.mjs +308 -0
- package/fesm2022/mesgflow-ui-kit-carousel.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-checkbox.mjs +16 -21
- package/fesm2022/mesgflow-ui-kit-checkbox.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-chip.mjs +2 -2
- package/fesm2022/mesgflow-ui-kit-chip.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-code-block.mjs +9 -5
- package/fesm2022/mesgflow-ui-kit-code-block.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-color-picker.mjs +6 -4
- package/fesm2022/mesgflow-ui-kit-color-picker.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-combobox.mjs +145 -65
- package/fesm2022/mesgflow-ui-kit-combobox.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-context-menu.mjs +4 -6
- package/fesm2022/mesgflow-ui-kit-context-menu.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-core.mjs +441 -128
- package/fesm2022/mesgflow-ui-kit-core.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-countdown.mjs +149 -0
- package/fesm2022/mesgflow-ui-kit-countdown.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-date-picker.mjs +131 -10
- package/fesm2022/mesgflow-ui-kit-date-picker.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-dialog.mjs +117 -34
- package/fesm2022/mesgflow-ui-kit-dialog.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-drawer.mjs +109 -0
- package/fesm2022/mesgflow-ui-kit-drawer.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-dropzone.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-dropzone.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-field.mjs +53 -12
- package/fesm2022/mesgflow-ui-kit-field.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-file-upload.mjs +356 -0
- package/fesm2022/mesgflow-ui-kit-file-upload.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs +131 -0
- package/fesm2022/mesgflow-ui-kit-i18n-tr.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-icon.mjs +6 -1
- package/fesm2022/mesgflow-ui-kit-icon.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-icons-lucide.mjs +371 -0
- package/fesm2022/mesgflow-ui-kit-icons-lucide.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-inline-edit.mjs +279 -0
- package/fesm2022/mesgflow-ui-kit-inline-edit.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-input.mjs +147 -4
- package/fesm2022/mesgflow-ui-kit-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-lightbox.mjs +299 -0
- package/fesm2022/mesgflow-ui-kit-lightbox.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-link.mjs +2 -2
- package/fesm2022/mesgflow-ui-kit-link.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-listbox.mjs +151 -0
- package/fesm2022/mesgflow-ui-kit-listbox.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-mention.mjs +283 -0
- package/fesm2022/mesgflow-ui-kit-mention.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-menu.mjs +169 -5
- package/fesm2022/mesgflow-ui-kit-menu.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-nav-menu.mjs +276 -0
- package/fesm2022/mesgflow-ui-kit-nav-menu.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-notification-center.mjs +281 -0
- package/fesm2022/mesgflow-ui-kit-notification-center.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-number-input.mjs +7 -4
- package/fesm2022/mesgflow-ui-kit-number-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-pagination.mjs +4 -3
- package/fesm2022/mesgflow-ui-kit-pagination.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-password-input.mjs +7 -2
- package/fesm2022/mesgflow-ui-kit-password-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-popover.mjs +9 -49
- package/fesm2022/mesgflow-ui-kit-popover.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-progress.mjs +162 -21
- package/fesm2022/mesgflow-ui-kit-progress.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-radio.mjs +4 -6
- package/fesm2022/mesgflow-ui-kit-radio.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-rating.mjs +2 -2
- package/fesm2022/mesgflow-ui-kit-rating.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-search-input.mjs +9 -5
- package/fesm2022/mesgflow-ui-kit-search-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs +12 -8
- package/fesm2022/mesgflow-ui-kit-segmented-control.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-select.mjs +3 -2
- package/fesm2022/mesgflow-ui-kit-select.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-sidebar.mjs +16 -13
- package/fesm2022/mesgflow-ui-kit-sidebar.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-skeleton.mjs +4 -3
- package/fesm2022/mesgflow-ui-kit-skeleton.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-slider.mjs +250 -3
- package/fesm2022/mesgflow-ui-kit-slider.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-sortable.mjs +526 -0
- package/fesm2022/mesgflow-ui-kit-sortable.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-spinner.mjs +42 -13
- package/fesm2022/mesgflow-ui-kit-spinner.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-split-button.mjs +205 -0
- package/fesm2022/mesgflow-ui-kit-split-button.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-splitter.mjs +210 -3
- package/fesm2022/mesgflow-ui-kit-splitter.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-stat-tile.mjs +11 -4
- package/fesm2022/mesgflow-ui-kit-stat-tile.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-stepper.mjs +167 -60
- package/fesm2022/mesgflow-ui-kit-stepper.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-switch.mjs +2 -2
- package/fesm2022/mesgflow-ui-kit-switch.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-table.mjs +16 -10
- package/fesm2022/mesgflow-ui-kit-table.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-tabs.mjs +410 -169
- package/fesm2022/mesgflow-ui-kit-tabs.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-tag-input.mjs +7 -2
- package/fesm2022/mesgflow-ui-kit-tag-input.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-theming.mjs +4 -4
- package/fesm2022/mesgflow-ui-kit-theming.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-time-picker.mjs +3 -3
- package/fesm2022/mesgflow-ui-kit-time-picker.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-toast.mjs +113 -30
- package/fesm2022/mesgflow-ui-kit-toast.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-toggle.mjs +3 -2
- package/fesm2022/mesgflow-ui-kit-toggle.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-toolbar.mjs +4 -2
- package/fesm2022/mesgflow-ui-kit-toolbar.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-tooltip.mjs +73 -50
- package/fesm2022/mesgflow-ui-kit-tooltip.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-tour.mjs +8 -20
- package/fesm2022/mesgflow-ui-kit-tour.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-transfer-list.mjs +288 -0
- package/fesm2022/mesgflow-ui-kit-transfer-list.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit-tree.mjs +1 -1
- package/fesm2022/mesgflow-ui-kit-tree.mjs.map +1 -1
- package/fesm2022/mesgflow-ui-kit-virtual-list.mjs +109 -0
- package/fesm2022/mesgflow-ui-kit-virtual-list.mjs.map +1 -0
- package/fesm2022/mesgflow-ui-kit.mjs +92 -12836
- package/fesm2022/mesgflow-ui-kit.mjs.map +1 -1
- package/package.json +87 -3
- package/schematics/collection.json +10 -0
- package/schematics/migration.json +10 -0
- package/schematics/migrations/v0-7.cjs +70 -0
- package/schematics/ng-add/index.cjs +234 -0
- package/schematics/ng-add/schema.json +43 -0
- package/tokens/color.css +96 -0
- package/tokens/controls.css +145 -0
- package/tokens/elevation.css +62 -6
- package/tokens/motion.css +304 -66
- package/tokens/radius.css +14 -0
- package/tokens.css +1 -0
- package/tokens.json +1583 -0
- package/types/mesgflow-ui-kit-agenda.d.ts +49 -0
- package/types/mesgflow-ui-kit-aspect-ratio.d.ts +18 -0
- package/types/mesgflow-ui-kit-blocks.d.ts +128 -0
- package/types/mesgflow-ui-kit-button.d.ts +23 -38
- package/types/mesgflow-ui-kit-card.d.ts +26 -16
- package/types/mesgflow-ui-kit-carousel.d.ts +51 -0
- package/types/mesgflow-ui-kit-checkbox.d.ts +8 -5
- package/types/mesgflow-ui-kit-code-block.d.ts +4 -1
- package/types/mesgflow-ui-kit-combobox.d.ts +47 -22
- package/types/mesgflow-ui-kit-core.d.ts +271 -21
- package/types/mesgflow-ui-kit-countdown.d.ts +47 -0
- package/types/mesgflow-ui-kit-date-picker.d.ts +31 -1
- package/types/mesgflow-ui-kit-dialog.d.ts +29 -6
- package/types/mesgflow-ui-kit-drawer.d.ts +45 -0
- package/types/mesgflow-ui-kit-field.d.ts +17 -8
- package/types/mesgflow-ui-kit-file-upload.d.ts +64 -0
- package/types/mesgflow-ui-kit-hover-card.d.ts +2 -2
- package/types/mesgflow-ui-kit-icons-lucide.d.ts +27 -0
- package/types/mesgflow-ui-kit-inline-edit.d.ts +42 -0
- package/types/mesgflow-ui-kit-input.d.ts +64 -2
- package/types/mesgflow-ui-kit-lightbox.d.ts +54 -0
- package/types/mesgflow-ui-kit-listbox.d.ts +30 -0
- package/types/mesgflow-ui-kit-mention.d.ts +59 -0
- package/types/mesgflow-ui-kit-menu.d.ts +41 -2
- package/types/mesgflow-ui-kit-nav-menu.d.ts +58 -0
- package/types/mesgflow-ui-kit-notification-center.d.ts +41 -0
- package/types/mesgflow-ui-kit-number-input.d.ts +3 -1
- package/types/mesgflow-ui-kit-password-input.d.ts +3 -1
- package/types/mesgflow-ui-kit-popover.d.ts +13 -5
- package/types/mesgflow-ui-kit-progress.d.ts +33 -12
- package/types/mesgflow-ui-kit-radio.d.ts +2 -2
- package/types/mesgflow-ui-kit-search-input.d.ts +3 -1
- package/types/mesgflow-ui-kit-segmented-control.d.ts +4 -0
- package/types/mesgflow-ui-kit-sidebar.d.ts +1 -1
- package/types/mesgflow-ui-kit-slider.d.ts +60 -1
- package/types/mesgflow-ui-kit-sortable.d.ts +103 -0
- package/types/mesgflow-ui-kit-spinner.d.ts +5 -8
- package/types/mesgflow-ui-kit-split-button.d.ts +47 -0
- package/types/mesgflow-ui-kit-splitter.d.ts +64 -1
- package/types/mesgflow-ui-kit-stat-tile.d.ts +3 -0
- package/types/mesgflow-ui-kit-stepper.d.ts +54 -32
- package/types/mesgflow-ui-kit-table.d.ts +2 -0
- package/types/mesgflow-ui-kit-tabs.d.ts +193 -93
- package/types/mesgflow-ui-kit-tag-input.d.ts +3 -1
- package/types/mesgflow-ui-kit-toast.d.ts +48 -22
- package/types/mesgflow-ui-kit-tooltip.d.ts +15 -12
- package/types/mesgflow-ui-kit-transfer-list.d.ts +34 -0
- package/types/mesgflow-ui-kit-virtual-list.d.ts +35 -0
- package/types/mesgflow-ui-kit.d.ts +87 -5444
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, inject, computed, Component } from '@angular/core';
|
|
2
|
+
import { input, booleanAttribute, inject, computed, Component } from '@angular/core';
|
|
3
3
|
import { MF_PROGRESS_LABELS, cn } from '@mesgflow/ui-kit/core';
|
|
4
4
|
import { cva } from 'class-variance-authority';
|
|
5
5
|
|
|
@@ -8,42 +8,138 @@ const progressTrackVariants = cva('relative block w-full overflow-hidden rounded
|
|
|
8
8
|
size: {
|
|
9
9
|
sm: 'h-1',
|
|
10
10
|
md: 'h-1.5',
|
|
11
|
+
lg: 'h-2.5',
|
|
11
12
|
},
|
|
12
13
|
},
|
|
13
14
|
defaultVariants: { size: 'md' },
|
|
14
15
|
});
|
|
15
16
|
|
|
17
|
+
/** Halka çapı (px) ve çizgi kalınlığı — boyut ekseni doğrusal çubuğun kalınlığıyla eşleşir. */
|
|
18
|
+
const RING = {
|
|
19
|
+
sm: { size: 32, stroke: 3 },
|
|
20
|
+
md: { size: 48, stroke: 4 },
|
|
21
|
+
lg: { size: 72, stroke: 6 },
|
|
22
|
+
};
|
|
23
|
+
const RING_TONE = {
|
|
24
|
+
primary: 'text-accent',
|
|
25
|
+
success: 'text-success',
|
|
26
|
+
warning: 'text-warning',
|
|
27
|
+
danger: 'text-danger',
|
|
28
|
+
info: 'text-info',
|
|
29
|
+
help: 'text-help',
|
|
30
|
+
};
|
|
31
|
+
const BAR_TONE = {
|
|
32
|
+
primary: 'bg-accent-fill',
|
|
33
|
+
success: 'bg-success-fill',
|
|
34
|
+
warning: 'bg-warning-fill',
|
|
35
|
+
danger: 'bg-danger-fill',
|
|
36
|
+
info: 'bg-info-fill',
|
|
37
|
+
help: 'bg-help-fill',
|
|
38
|
+
};
|
|
16
39
|
/**
|
|
17
|
-
* `<mf-progress [value]="42" />`
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
40
|
+
* `<mf-progress [value]="42" />` · `<mf-progress indeterminate />` ·
|
|
41
|
+
* `<mf-progress variant="ring" [value]="72" showValue />`
|
|
42
|
+
*
|
|
43
|
+
* - `linear` (varsayılan): ince çubuk; belirsiz modda kayan şerit
|
|
44
|
+
* (`animate-progress-slide`, Table'ın yenileme göstergesiyle aynı).
|
|
45
|
+
* - `ring`: dairesel gösterge — `stroke-dashoffset` geçişiyle akıcı dolar,
|
|
46
|
+
* belirsiz modda döner (`animate-spin-slow`). `showValue` ortada yüzdeyi yazar.
|
|
47
|
+
* - `tone`: dolgu rengi (kota uyarısı, hata vb.).
|
|
48
|
+
*
|
|
49
|
+
* `role="progressbar"` + `aria-valuenow` (belirsizde yazılmaz) host'ta.
|
|
22
50
|
*/
|
|
23
51
|
class Progress {
|
|
24
52
|
value = input(0, /* @ts-ignore */
|
|
25
53
|
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
26
|
-
indeterminate = input(false, /*
|
|
27
|
-
...(ngDevMode ? [{ debugName: "indeterminate" }] : /* istanbul ignore next */ []));
|
|
54
|
+
indeterminate = input(false, { ...(ngDevMode ? { debugName: "indeterminate" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
28
55
|
size = input('md', /* @ts-ignore */
|
|
29
56
|
...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
30
|
-
|
|
57
|
+
variant = input('linear', /* @ts-ignore */
|
|
58
|
+
...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
59
|
+
tone = input('primary', /* @ts-ignore */
|
|
60
|
+
...(ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []));
|
|
61
|
+
/** Yalnızca `ring`: ortada yüzde metni. */
|
|
62
|
+
showValue = input(false, { ...(ngDevMode ? { debugName: "showValue" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
63
|
+
/** `role="progressbar"` için erişilebilir ad — verilmezse `MF_PROGRESS_LABELS`. */
|
|
31
64
|
ariaLabel = input(/* @ts-ignore */
|
|
32
65
|
...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
33
66
|
progressLabels = inject(MF_PROGRESS_LABELS);
|
|
34
67
|
effectiveAriaLabel = computed(() => this.ariaLabel() ?? this.progressLabels().ariaLabel, /* @ts-ignore */
|
|
35
68
|
...(ngDevMode ? [{ debugName: "effectiveAriaLabel" }] : /* istanbul ignore next */ []));
|
|
36
|
-
clampedValue = computed(() => Math.min(100, Math.max(0, this.value())), /* @ts-ignore */
|
|
69
|
+
clampedValue = computed(() => Math.round(Math.min(100, Math.max(0, this.value()))), /* @ts-ignore */
|
|
37
70
|
...(ngDevMode ? [{ debugName: "clampedValue" }] : /* istanbul ignore next */ []));
|
|
38
|
-
|
|
39
|
-
...(ngDevMode ? [{ debugName: "
|
|
71
|
+
ring = computed(() => RING[this.size() ?? 'md'], /* @ts-ignore */
|
|
72
|
+
...(ngDevMode ? [{ debugName: "ring" }] : /* istanbul ignore next */ []));
|
|
73
|
+
radius = computed(() => (this.ring().size - this.ring().stroke) / 2, /* @ts-ignore */
|
|
74
|
+
...(ngDevMode ? [{ debugName: "radius" }] : /* istanbul ignore next */ []));
|
|
75
|
+
circumference = computed(() => 2 * Math.PI * this.radius(), /* @ts-ignore */
|
|
76
|
+
...(ngDevMode ? [{ debugName: "circumference" }] : /* istanbul ignore next */ []));
|
|
77
|
+
dashOffset = computed(() => {
|
|
78
|
+
// Belirsiz halka: çeyrek yay döner.
|
|
79
|
+
const filled = this.indeterminate() ? 25 : this.clampedValue();
|
|
80
|
+
return this.circumference() * (1 - filled / 100);
|
|
81
|
+
}, /* @ts-ignore */
|
|
82
|
+
...(ngDevMode ? [{ debugName: "dashOffset" }] : /* istanbul ignore next */ []));
|
|
83
|
+
ringToneClass = computed(() => RING_TONE[this.tone()], /* @ts-ignore */
|
|
84
|
+
...(ngDevMode ? [{ debugName: "ringToneClass" }] : /* istanbul ignore next */ []));
|
|
85
|
+
barToneClass = computed(() => BAR_TONE[this.tone()], /* @ts-ignore */
|
|
86
|
+
...(ngDevMode ? [{ debugName: "barToneClass" }] : /* istanbul ignore next */ []));
|
|
87
|
+
hostClasses = computed(() => this.variant() === 'ring'
|
|
88
|
+
? cn('relative inline-flex shrink-0 items-center justify-center')
|
|
89
|
+
: cn(progressTrackVariants({ size: this.size() })), /* @ts-ignore */
|
|
90
|
+
...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
40
91
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: Progress, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
41
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: Progress, isStandalone: true, selector: "mf-progress", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", 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 } }, host: { attributes: { "role": "progressbar" }, properties: { "attr.aria-valuenow": "indeterminate() ? null : clampedValue()", "attr.aria-valuemin": "0", "attr.aria-valuemax": "100", "attr.aria-label": "effectiveAriaLabel()", "class": "
|
|
42
|
-
@if (
|
|
43
|
-
<
|
|
92
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: Progress, isStandalone: true, selector: "mf-progress", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, showValue: { classPropertyName: "showValue", publicName: "showValue", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar" }, properties: { "attr.aria-valuenow": "indeterminate() ? null : clampedValue()", "attr.aria-valuemin": "0", "attr.aria-valuemax": "100", "attr.aria-label": "effectiveAriaLabel()", "class": "hostClasses()" } }, ngImport: i0, template: `
|
|
93
|
+
@if (variant() === 'ring') {
|
|
94
|
+
<svg
|
|
95
|
+
[attr.width]="ring().size"
|
|
96
|
+
[attr.height]="ring().size"
|
|
97
|
+
[attr.viewBox]="'0 0 ' + ring().size + ' ' + ring().size"
|
|
98
|
+
class="-rotate-90 rtl:scale-x-[-1]"
|
|
99
|
+
[class]="ringToneClass()"
|
|
100
|
+
[class.animate-spin-slow]="indeterminate()"
|
|
101
|
+
aria-hidden="true"
|
|
102
|
+
>
|
|
103
|
+
<circle
|
|
104
|
+
[attr.cx]="ring().size / 2"
|
|
105
|
+
[attr.cy]="ring().size / 2"
|
|
106
|
+
[attr.r]="radius()"
|
|
107
|
+
fill="none"
|
|
108
|
+
stroke="currentColor"
|
|
109
|
+
stroke-opacity="0.15"
|
|
110
|
+
[attr.stroke-width]="ring().stroke"
|
|
111
|
+
/>
|
|
112
|
+
<circle
|
|
113
|
+
[attr.cx]="ring().size / 2"
|
|
114
|
+
[attr.cy]="ring().size / 2"
|
|
115
|
+
[attr.r]="radius()"
|
|
116
|
+
fill="none"
|
|
117
|
+
stroke="currentColor"
|
|
118
|
+
stroke-linecap="round"
|
|
119
|
+
[attr.stroke-width]="ring().stroke"
|
|
120
|
+
[attr.stroke-dasharray]="circumference()"
|
|
121
|
+
[attr.stroke-dashoffset]="dashOffset()"
|
|
122
|
+
class="transition-[stroke-dashoffset] duration-slow ease-emphasis"
|
|
123
|
+
/>
|
|
124
|
+
</svg>
|
|
125
|
+
@if (showValue() && !indeterminate()) {
|
|
126
|
+
<span
|
|
127
|
+
class="absolute inset-0 flex items-center justify-center font-medium text-fg tabular-nums"
|
|
128
|
+
[class]="size() === 'lg' ? 'text-base' : 'text-[0.6875rem]'"
|
|
129
|
+
aria-hidden="true"
|
|
130
|
+
>{{ clampedValue() }}%</span
|
|
131
|
+
>
|
|
132
|
+
}
|
|
133
|
+
} @else if (indeterminate()) {
|
|
134
|
+
<div
|
|
135
|
+
class="h-full w-1/3 animate-progress-slide"
|
|
136
|
+
[class]="barToneClass()"
|
|
137
|
+
aria-hidden="true"
|
|
138
|
+
></div>
|
|
44
139
|
} @else {
|
|
45
140
|
<div
|
|
46
|
-
class="h-full rounded-full
|
|
141
|
+
class="h-full rounded-full transition-[width] duration-slow ease-emphasis"
|
|
142
|
+
[class]="barToneClass()"
|
|
47
143
|
[style.width.%]="clampedValue()"
|
|
48
144
|
></div>
|
|
49
145
|
}
|
|
@@ -59,20 +155,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
|
|
|
59
155
|
'[attr.aria-valuemin]': '0',
|
|
60
156
|
'[attr.aria-valuemax]': '100',
|
|
61
157
|
'[attr.aria-label]': 'effectiveAriaLabel()',
|
|
62
|
-
'[class]': '
|
|
158
|
+
'[class]': 'hostClasses()',
|
|
63
159
|
},
|
|
64
160
|
template: `
|
|
65
|
-
@if (
|
|
66
|
-
<
|
|
161
|
+
@if (variant() === 'ring') {
|
|
162
|
+
<svg
|
|
163
|
+
[attr.width]="ring().size"
|
|
164
|
+
[attr.height]="ring().size"
|
|
165
|
+
[attr.viewBox]="'0 0 ' + ring().size + ' ' + ring().size"
|
|
166
|
+
class="-rotate-90 rtl:scale-x-[-1]"
|
|
167
|
+
[class]="ringToneClass()"
|
|
168
|
+
[class.animate-spin-slow]="indeterminate()"
|
|
169
|
+
aria-hidden="true"
|
|
170
|
+
>
|
|
171
|
+
<circle
|
|
172
|
+
[attr.cx]="ring().size / 2"
|
|
173
|
+
[attr.cy]="ring().size / 2"
|
|
174
|
+
[attr.r]="radius()"
|
|
175
|
+
fill="none"
|
|
176
|
+
stroke="currentColor"
|
|
177
|
+
stroke-opacity="0.15"
|
|
178
|
+
[attr.stroke-width]="ring().stroke"
|
|
179
|
+
/>
|
|
180
|
+
<circle
|
|
181
|
+
[attr.cx]="ring().size / 2"
|
|
182
|
+
[attr.cy]="ring().size / 2"
|
|
183
|
+
[attr.r]="radius()"
|
|
184
|
+
fill="none"
|
|
185
|
+
stroke="currentColor"
|
|
186
|
+
stroke-linecap="round"
|
|
187
|
+
[attr.stroke-width]="ring().stroke"
|
|
188
|
+
[attr.stroke-dasharray]="circumference()"
|
|
189
|
+
[attr.stroke-dashoffset]="dashOffset()"
|
|
190
|
+
class="transition-[stroke-dashoffset] duration-slow ease-emphasis"
|
|
191
|
+
/>
|
|
192
|
+
</svg>
|
|
193
|
+
@if (showValue() && !indeterminate()) {
|
|
194
|
+
<span
|
|
195
|
+
class="absolute inset-0 flex items-center justify-center font-medium text-fg tabular-nums"
|
|
196
|
+
[class]="size() === 'lg' ? 'text-base' : 'text-[0.6875rem]'"
|
|
197
|
+
aria-hidden="true"
|
|
198
|
+
>{{ clampedValue() }}%</span
|
|
199
|
+
>
|
|
200
|
+
}
|
|
201
|
+
} @else if (indeterminate()) {
|
|
202
|
+
<div
|
|
203
|
+
class="h-full w-1/3 animate-progress-slide"
|
|
204
|
+
[class]="barToneClass()"
|
|
205
|
+
aria-hidden="true"
|
|
206
|
+
></div>
|
|
67
207
|
} @else {
|
|
68
208
|
<div
|
|
69
|
-
class="h-full rounded-full
|
|
209
|
+
class="h-full rounded-full transition-[width] duration-slow ease-emphasis"
|
|
210
|
+
[class]="barToneClass()"
|
|
70
211
|
[style.width.%]="clampedValue()"
|
|
71
212
|
></div>
|
|
72
213
|
}
|
|
73
214
|
`,
|
|
74
215
|
}]
|
|
75
|
-
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
216
|
+
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], indeterminate: [{ type: i0.Input, args: [{ isSignal: true, alias: "indeterminate", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], showValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "showValue", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
76
217
|
|
|
77
218
|
/**
|
|
78
219
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesgflow-ui-kit-progress.mjs","sources":["../../../projects/ui-kit/progress/progress.variants.ts","../../../projects/ui-kit/progress/progress.ts","../../../projects/ui-kit/progress/mesgflow-ui-kit-progress.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\r\n\r\nexport const progressTrackVariants = cva(\r\n 'relative block w-full overflow-hidden rounded-full bg-primary-tint',\r\n {\r\n variants: {\r\n size: {\r\n sm: 'h-1',\r\n md: 'h-1.5',\r\n },\r\n },\r\n defaultVariants: { size: 'md' },\r\n },\r\n);\r\n\r\nexport type ProgressSize = VariantProps<typeof progressTrackVariants>['size'];\r\n","import { Component, computed, inject, input } from '@angular/core';\r\nimport { cn, MF_PROGRESS_LABELS } from '@mesgflow/ui-kit/core';\r\nimport { progressTrackVariants, type ProgressSize } from './progress.variants';\r\n\r\n/**\r\n * `<mf-progress [value]=\"42\" />` (belirlenmiş) veya `<mf-progress\r\n * indeterminate />` (belirsiz — yükleme/tarama gibi süresi bilinmeyen\r\n * işlemler). `animate-progress-slide` keyframe'i `Table`'ın `showStaleOverlay`\r\n * şeridiyle AYNI (tokens.css'te tek tanım, bkz. table.html) — iki yerde ayrı\r\n * ayrı animasyon TANIMLANMADI.\r\n */\r\n@Component({\r\n selector: 'mf-progress',\r\n host: {\r\n role: 'progressbar',\r\n '[attr.aria-valuenow]': 'indeterminate() ? null : clampedValue()',\r\n '[attr.aria-valuemin]': '0',\r\n '[attr.aria-valuemax]': '100',\r\n '[attr.aria-label]': 'effectiveAriaLabel()',\r\n '[class]': 'trackClasses()',\r\n },\r\n template: `\r\n @if (indeterminate()) {\r\n <div class=\"h-full w-1/3 animate-progress-slide bg-accent-fill\" aria-hidden=\"true\"></div>\r\n } @else {\r\n <div\r\n class=\"h-full rounded-full bg-accent-fill transition-[width] duration-base ease-out\"\r\n [style.width.%]=\"clampedValue()\"\r\n ></div>\r\n }\r\n `,\r\n})\r\nexport class Progress {\r\n readonly value = input(0);\r\n readonly indeterminate = input(false);\r\n readonly size = input<ProgressSize>('md');\r\n /** `role=\"progressbar\"` için ARIA gerektirdiği erişilebilir ad — bağlamına göre (ör. \"Loading\", \"File upload\") override edilmeli; verilmezse `MF_PROGRESS_LABELS`. */\r\n readonly ariaLabel = input<string>();\r\n\r\n private readonly progressLabels = inject(MF_PROGRESS_LABELS);\r\n protected readonly effectiveAriaLabel = computed(\r\n () => this.ariaLabel() ?? this.progressLabels().ariaLabel,\r\n );\r\n\r\n protected readonly clampedValue = computed(() => Math.min(100, Math.max(0, this.value())));\r\n protected readonly trackClasses = computed(() =>\r\n cn(progressTrackVariants({ size: this.size() })),\r\n );\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mesgflow-ui-kit-progress.mjs","sources":["../../../projects/ui-kit/progress/progress.variants.ts","../../../projects/ui-kit/progress/progress.ts","../../../projects/ui-kit/progress/mesgflow-ui-kit-progress.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\r\n\r\nexport const progressTrackVariants = cva(\r\n 'relative block w-full overflow-hidden rounded-full bg-primary-tint',\r\n {\r\n variants: {\r\n size: {\r\n sm: 'h-1',\r\n md: 'h-1.5',\r\n lg: 'h-2.5',\r\n },\r\n },\r\n defaultVariants: { size: 'md' },\r\n },\r\n);\r\n\r\nexport type ProgressSize = VariantProps<typeof progressTrackVariants>['size'];\r\n","import { Component, booleanAttribute, computed, inject, input } from '@angular/core';\r\nimport { cn, MF_PROGRESS_LABELS, type MfTone } from '@mesgflow/ui-kit/core';\r\nimport { progressTrackVariants, type ProgressSize } from './progress.variants';\r\n\r\nexport type ProgressVariant = 'linear' | 'ring';\r\nexport type ProgressTone = Exclude<MfTone, 'neutral'>;\r\n\r\n/** Halka çapı (px) ve çizgi kalınlığı — boyut ekseni doğrusal çubuğun kalınlığıyla eşleşir. */\r\nconst RING: Record<NonNullable<ProgressSize>, { size: number; stroke: number }> = {\r\n sm: { size: 32, stroke: 3 },\r\n md: { size: 48, stroke: 4 },\r\n lg: { size: 72, stroke: 6 },\r\n};\r\n\r\nconst RING_TONE: Record<ProgressTone, string> = {\r\n primary: 'text-accent',\r\n success: 'text-success',\r\n warning: 'text-warning',\r\n danger: 'text-danger',\r\n info: 'text-info',\r\n help: 'text-help',\r\n};\r\n\r\nconst BAR_TONE: Record<ProgressTone, string> = {\r\n primary: 'bg-accent-fill',\r\n success: 'bg-success-fill',\r\n warning: 'bg-warning-fill',\r\n danger: 'bg-danger-fill',\r\n info: 'bg-info-fill',\r\n help: 'bg-help-fill',\r\n};\r\n\r\n/**\r\n * `<mf-progress [value]=\"42\" />` · `<mf-progress indeterminate />` ·\r\n * `<mf-progress variant=\"ring\" [value]=\"72\" showValue />`\r\n *\r\n * - `linear` (varsayılan): ince çubuk; belirsiz modda kayan şerit\r\n * (`animate-progress-slide`, Table'ın yenileme göstergesiyle aynı).\r\n * - `ring`: dairesel gösterge — `stroke-dashoffset` geçişiyle akıcı dolar,\r\n * belirsiz modda döner (`animate-spin-slow`). `showValue` ortada yüzdeyi yazar.\r\n * - `tone`: dolgu rengi (kota uyarısı, hata vb.).\r\n *\r\n * `role=\"progressbar\"` + `aria-valuenow` (belirsizde yazılmaz) host'ta.\r\n */\r\n@Component({\r\n selector: 'mf-progress',\r\n host: {\r\n role: 'progressbar',\r\n '[attr.aria-valuenow]': 'indeterminate() ? null : clampedValue()',\r\n '[attr.aria-valuemin]': '0',\r\n '[attr.aria-valuemax]': '100',\r\n '[attr.aria-label]': 'effectiveAriaLabel()',\r\n '[class]': 'hostClasses()',\r\n },\r\n template: `\r\n @if (variant() === 'ring') {\r\n <svg\r\n [attr.width]=\"ring().size\"\r\n [attr.height]=\"ring().size\"\r\n [attr.viewBox]=\"'0 0 ' + ring().size + ' ' + ring().size\"\r\n class=\"-rotate-90 rtl:scale-x-[-1]\"\r\n [class]=\"ringToneClass()\"\r\n [class.animate-spin-slow]=\"indeterminate()\"\r\n aria-hidden=\"true\"\r\n >\r\n <circle\r\n [attr.cx]=\"ring().size / 2\"\r\n [attr.cy]=\"ring().size / 2\"\r\n [attr.r]=\"radius()\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-opacity=\"0.15\"\r\n [attr.stroke-width]=\"ring().stroke\"\r\n />\r\n <circle\r\n [attr.cx]=\"ring().size / 2\"\r\n [attr.cy]=\"ring().size / 2\"\r\n [attr.r]=\"radius()\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-linecap=\"round\"\r\n [attr.stroke-width]=\"ring().stroke\"\r\n [attr.stroke-dasharray]=\"circumference()\"\r\n [attr.stroke-dashoffset]=\"dashOffset()\"\r\n class=\"transition-[stroke-dashoffset] duration-slow ease-emphasis\"\r\n />\r\n </svg>\r\n @if (showValue() && !indeterminate()) {\r\n <span\r\n class=\"absolute inset-0 flex items-center justify-center font-medium text-fg tabular-nums\"\r\n [class]=\"size() === 'lg' ? 'text-base' : 'text-[0.6875rem]'\"\r\n aria-hidden=\"true\"\r\n >{{ clampedValue() }}%</span\r\n >\r\n }\r\n } @else if (indeterminate()) {\r\n <div\r\n class=\"h-full w-1/3 animate-progress-slide\"\r\n [class]=\"barToneClass()\"\r\n aria-hidden=\"true\"\r\n ></div>\r\n } @else {\r\n <div\r\n class=\"h-full rounded-full transition-[width] duration-slow ease-emphasis\"\r\n [class]=\"barToneClass()\"\r\n [style.width.%]=\"clampedValue()\"\r\n ></div>\r\n }\r\n `,\r\n})\r\nexport class Progress {\r\n readonly value = input(0);\r\n readonly indeterminate = input(false, { transform: booleanAttribute });\r\n readonly size = input<ProgressSize>('md');\r\n readonly variant = input<ProgressVariant>('linear');\r\n readonly tone = input<ProgressTone>('primary');\r\n /** Yalnızca `ring`: ortada yüzde metni. */\r\n readonly showValue = input(false, { transform: booleanAttribute });\r\n /** `role=\"progressbar\"` için erişilebilir ad — verilmezse `MF_PROGRESS_LABELS`. */\r\n readonly ariaLabel = input<string>();\r\n\r\n private readonly progressLabels = inject(MF_PROGRESS_LABELS);\r\n protected readonly effectiveAriaLabel = computed(\r\n () => this.ariaLabel() ?? this.progressLabels().ariaLabel,\r\n );\r\n\r\n protected readonly clampedValue = computed(() =>\r\n Math.round(Math.min(100, Math.max(0, this.value()))),\r\n );\r\n\r\n protected readonly ring = computed(() => RING[this.size() ?? 'md']);\r\n protected readonly radius = computed(() => (this.ring().size - this.ring().stroke) / 2);\r\n protected readonly circumference = computed(() => 2 * Math.PI * this.radius());\r\n protected readonly dashOffset = computed(() => {\r\n // Belirsiz halka: çeyrek yay döner.\r\n const filled = this.indeterminate() ? 25 : this.clampedValue();\r\n return this.circumference() * (1 - filled / 100);\r\n });\r\n\r\n protected readonly ringToneClass = computed(() => RING_TONE[this.tone()]);\r\n protected readonly barToneClass = computed(() => BAR_TONE[this.tone()]);\r\n\r\n protected readonly hostClasses = computed(() =>\r\n this.variant() === 'ring'\r\n ? cn('relative inline-flex shrink-0 items-center justify-center')\r\n : cn(progressTrackVariants({ size: this.size() })),\r\n );\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { model, input, computed, forwardRef, Component, inject, Directive } from '@angular/core';
|
|
3
|
-
import { nextId, cn } from '@mesgflow/ui-kit/core';
|
|
3
|
+
import { nextId, cn, focusRecipe } from '@mesgflow/ui-kit/core';
|
|
4
4
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
5
|
|
|
6
6
|
/**
|
|
@@ -75,8 +75,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
|
|
|
75
75
|
const SIZE_CLASSES = { sm: 'h-3.5 w-3.5', md: 'h-4 w-4', lg: 'h-5 w-5' };
|
|
76
76
|
/**
|
|
77
77
|
* `<input type="radio" mfRadio [value]="'pro'" />` — `Checkbox` (bkz.
|
|
78
|
-
* checkbox.ts) ile AYNI
|
|
79
|
-
*
|
|
78
|
+
* checkbox.ts) ile AYNI desen — native input + `mf-radio` görsel katmanı
|
|
79
|
+
* (styles/tokens/controls.css, yay eğrisiyle büyüyen nokta). Bir `mf-radio-group` ATASI ZORUNLU — `name`/`checked`/`disabled`
|
|
80
80
|
* DI ile ondan okunur (bkz. `radio-group.ts`'in JSDoc'u); grup dışında
|
|
81
81
|
* kullanılırsa `inject(RadioGroup)` hata fırlatır (fail-fast).
|
|
82
82
|
*/
|
|
@@ -88,9 +88,7 @@ class Radio {
|
|
|
88
88
|
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
89
89
|
disabled = input(false, /* @ts-ignore */
|
|
90
90
|
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
91
|
-
classes = computed(() => cn(SIZE_CLASSES[this.size()],
|
|
92
|
-
'focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-focus-ring ' +
|
|
93
|
-
'disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50'), /* @ts-ignore */
|
|
91
|
+
classes = computed(() => cn('mf-radio', SIZE_CLASSES[this.size()], focusRecipe), /* @ts-ignore */
|
|
94
92
|
...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
|
|
95
93
|
onChange() {
|
|
96
94
|
const value = this.value();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesgflow-ui-kit-radio.mjs","sources":["../../../projects/ui-kit/radio/radio-group.ts","../../../projects/ui-kit/radio/radio.ts","../../../projects/ui-kit/radio/mesgflow-ui-kit-radio.ts"],"sourcesContent":["import { Component, computed, forwardRef, input, model } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\nimport { nextId } from '@mesgflow/ui-kit/core';\r\n\r\nexport type RadioGroupOrientation = 'horizontal' | 'vertical';\r\n\r\n/**\r\n * `<mf-radio-group [(value)]=\"plan\"><label><input type=\"radio\" mfRadio\r\n * [value]=\"'pro'\" /> Pro</label>...</mf-radio-group>`\r\n *\r\n * Projekte edilen `input[mfRadio]` öğeleri DI ile bu bileşene bağlanır\r\n * (`Radio`'nun `inject(RadioGroup)`'u — bkz. `radio.ts`), `name`/`checked`/\r\n * `disabled` GRUPTAN gelir; her `mfRadio` KENDİ `mf-radio-group` atası\r\n * DIŞINDA kullanılamaz.\r\n *\r\n * Ok tuşu navigasyonu/roving tabindex için ÖZEL bir odak yöneticisi\r\n * (`@angular/aria`'da radio pattern'i olmadığı için akla gelen CDK\r\n * `FocusKeyManager`) BİLEREK YOK — hepsi AYNI native `name` attribute'unu\r\n * paylaşan gerçek `<input type=\"radio\">` öğeleri olduğu için tarayıcı bunu\r\n * ZATEN ücretsiz sağlıyor (native radio grubu semantiği). Üstüne bir odak\r\n * yöneticisi eklemek gerçek davranışı TEKRARLAYIP çakıştırırdı.\r\n */\r\n@Component({\r\n selector: 'mf-radio-group',\r\n exportAs: 'mfRadioGroup',\r\n host: {\r\n role: 'radiogroup',\r\n '[class]': 'hostClasses()',\r\n '[attr.aria-label]': 'ariaLabel() || null',\r\n '[attr.aria-orientation]': 'orientation()',\r\n },\r\n template: '<ng-content />',\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroup), multi: true },\r\n ],\r\n})\r\nexport class RadioGroup<T = unknown> implements ControlValueAccessor {\r\n readonly value = model<T | null>(null);\r\n readonly name = input(nextId('mf-radio-group'));\r\n readonly orientation = input<RadioGroupOrientation>('vertical');\r\n readonly disabled = input(false);\r\n readonly ariaLabel = input('');\r\n\r\n private onChange: (value: T | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n protected readonly hostClasses = computed(() =>\r\n this.orientation() === 'horizontal' ? 'flex items-center gap-4' : 'flex flex-col gap-2',\r\n );\r\n\r\n writeValue(value: T | null): void {\r\n this.value.set(value);\r\n }\r\n\r\n registerOnChange(fn: (value: T | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /** `Radio`'nun `(change)` işleyicisinden çağrılır — bkz. `radio.ts`. */\r\n onRadioChange(value: T): void {\r\n this.value.set(value);\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n}\r\n","import { Directive, computed, inject, input } from '@angular/core';\r\nimport { cn, type MfSize } from '@mesgflow/ui-kit/core';\r\nimport { RadioGroup } from './radio-group';\r\n\r\nconst SIZE_CLASSES: Record<MfSize, string> = { sm: 'h-3.5 w-3.5', md: 'h-4 w-4', lg: 'h-5 w-5' };\r\n\r\n/**\r\n * `<input type=\"radio\" mfRadio [value]=\"'pro'\" />` — `Checkbox` (bkz.\r\n * checkbox.ts) ile AYNI
|
|
1
|
+
{"version":3,"file":"mesgflow-ui-kit-radio.mjs","sources":["../../../projects/ui-kit/radio/radio-group.ts","../../../projects/ui-kit/radio/radio.ts","../../../projects/ui-kit/radio/mesgflow-ui-kit-radio.ts"],"sourcesContent":["import { Component, computed, forwardRef, input, model } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\nimport { nextId } from '@mesgflow/ui-kit/core';\r\n\r\nexport type RadioGroupOrientation = 'horizontal' | 'vertical';\r\n\r\n/**\r\n * `<mf-radio-group [(value)]=\"plan\"><label><input type=\"radio\" mfRadio\r\n * [value]=\"'pro'\" /> Pro</label>...</mf-radio-group>`\r\n *\r\n * Projekte edilen `input[mfRadio]` öğeleri DI ile bu bileşene bağlanır\r\n * (`Radio`'nun `inject(RadioGroup)`'u — bkz. `radio.ts`), `name`/`checked`/\r\n * `disabled` GRUPTAN gelir; her `mfRadio` KENDİ `mf-radio-group` atası\r\n * DIŞINDA kullanılamaz.\r\n *\r\n * Ok tuşu navigasyonu/roving tabindex için ÖZEL bir odak yöneticisi\r\n * (`@angular/aria`'da radio pattern'i olmadığı için akla gelen CDK\r\n * `FocusKeyManager`) BİLEREK YOK — hepsi AYNI native `name` attribute'unu\r\n * paylaşan gerçek `<input type=\"radio\">` öğeleri olduğu için tarayıcı bunu\r\n * ZATEN ücretsiz sağlıyor (native radio grubu semantiği). Üstüne bir odak\r\n * yöneticisi eklemek gerçek davranışı TEKRARLAYIP çakıştırırdı.\r\n */\r\n@Component({\r\n selector: 'mf-radio-group',\r\n exportAs: 'mfRadioGroup',\r\n host: {\r\n role: 'radiogroup',\r\n '[class]': 'hostClasses()',\r\n '[attr.aria-label]': 'ariaLabel() || null',\r\n '[attr.aria-orientation]': 'orientation()',\r\n },\r\n template: '<ng-content />',\r\n providers: [\r\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => RadioGroup), multi: true },\r\n ],\r\n})\r\nexport class RadioGroup<T = unknown> implements ControlValueAccessor {\r\n readonly value = model<T | null>(null);\r\n readonly name = input(nextId('mf-radio-group'));\r\n readonly orientation = input<RadioGroupOrientation>('vertical');\r\n readonly disabled = input(false);\r\n readonly ariaLabel = input('');\r\n\r\n private onChange: (value: T | null) => void = () => {};\r\n private onTouched: () => void = () => {};\r\n\r\n protected readonly hostClasses = computed(() =>\r\n this.orientation() === 'horizontal' ? 'flex items-center gap-4' : 'flex flex-col gap-2',\r\n );\r\n\r\n writeValue(value: T | null): void {\r\n this.value.set(value);\r\n }\r\n\r\n registerOnChange(fn: (value: T | null) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /** `Radio`'nun `(change)` işleyicisinden çağrılır — bkz. `radio.ts`. */\r\n onRadioChange(value: T): void {\r\n this.value.set(value);\r\n this.onChange(value);\r\n this.onTouched();\r\n }\r\n}\r\n","import { Directive, computed, inject, input } from '@angular/core';\r\nimport { cn, type MfSize, focusRecipe } from '@mesgflow/ui-kit/core';\r\nimport { RadioGroup } from './radio-group';\r\n\r\nconst SIZE_CLASSES: Record<MfSize, string> = { sm: 'h-3.5 w-3.5', md: 'h-4 w-4', lg: 'h-5 w-5' };\r\n\r\n/**\r\n * `<input type=\"radio\" mfRadio [value]=\"'pro'\" />` — `Checkbox` (bkz.\r\n * checkbox.ts) ile AYNI desen — native input + `mf-radio` görsel katmanı\r\n * (styles/tokens/controls.css, yay eğrisiyle büyüyen nokta). Bir `mf-radio-group` ATASI ZORUNLU — `name`/`checked`/`disabled`\r\n * DI ile ondan okunur (bkz. `radio-group.ts`'in JSDoc'u); grup dışında\r\n * kullanılırsa `inject(RadioGroup)` hata fırlatır (fail-fast).\r\n */\r\n@Directive({\r\n selector: 'input[type=radio][mfRadio]',\r\n host: {\r\n '[class]': 'classes()',\r\n '[attr.name]': 'group.name()',\r\n '[checked]': 'group.value() === value()',\r\n '[disabled]': 'group.disabled() || disabled()',\r\n '(change)': 'onChange()',\r\n },\r\n})\r\nexport class Radio<T = unknown> {\r\n protected readonly group = inject<RadioGroup<T>>(RadioGroup);\r\n\r\n readonly size = input<MfSize>('md');\r\n readonly value = input<T | undefined>(undefined);\r\n readonly disabled = input(false);\r\n\r\n protected readonly classes = computed(() =>\r\n cn('mf-radio', SIZE_CLASSES[this.size()], focusRecipe),\r\n );\r\n\r\n protected onChange(): void {\r\n const value = this.value();\r\n if (value !== undefined) {\r\n this.group.onRadioChange(value);\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -95,7 +95,7 @@ class Rating extends ValueAccessorBase {
|
|
|
95
95
|
this.formDisabled.set(disabled);
|
|
96
96
|
}
|
|
97
97
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: Rating, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
98
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", 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=\"text-warning\">star</span>\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"] }] });
|
|
98
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", 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
100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: Rating, decorators: [{
|
|
101
101
|
type: Component,
|
|
@@ -105,7 +105,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImpor
|
|
|
105
105
|
'[attr.aria-label]': 'hostLabel()',
|
|
106
106
|
'[attr.aria-disabled]': 'isDisabled() || null',
|
|
107
107
|
'(pointerleave)': 'hover.set(null)',
|
|
108
|
-
}, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Rating), multi: true }], 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=\"text-warning\">star</span>\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" }]
|
|
108
|
+
}, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Rating), multi: true }], 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" }]
|
|
109
109
|
}], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], allowClear: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowClear", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
110
110
|
|
|
111
111
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesgflow-ui-kit-rating.mjs","sources":["../../../projects/ui-kit/rating/rating.ts","../../../projects/ui-kit/rating/rating.html","../../../projects/ui-kit/rating/mesgflow-ui-kit-rating.ts"],"sourcesContent":["import {\r\n Component,\r\n booleanAttribute,\r\n computed,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n signal,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\nimport { MF_RATING_LABELS, ValueAccessorBase } from '@mesgflow/ui-kit/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { Icon } from '@mesgflow/ui-kit/icon';\r\n\r\nlet ratingIdSeq = 0;\r\n\r\n/**\r\n * `<mf-rating [(value)]=\"score\" />` · salt okunur ortalama: `<mf-rating [value]=\"3.7\" readonly />`\r\n *\r\n * Etkileşimli mod yerel `<input type=\"radio\">`'lar üzerine kurulu (görsel olarak gizli): ok tuşu\r\n * gezinmesi, tek sekme durağı, form davranışı tarayıcıdan gelir — `role=\"radiogroup\"` + her\r\n * yıldız \"3 out of 5\" gibi adlı bir radyo. Üzerine gelince önizleme; seçili yıldıza tekrar\r\n * tıklamak temizler (`allowClear`). Salt okunur mod tek bir `role=\"img\"` (\"3.7 out of 5\");\r\n * ondalıklar yıldızın kısmen dolmasıyla gösterilir (ortalama puanlar için).\r\n */\r\n@Component({\r\n selector: 'mf-rating',\r\n exportAs: 'mfRating',\r\n imports: [Icon, NgTemplateOutlet],\r\n host: {\r\n class: 'inline-flex',\r\n '[attr.role]': \"readonly() ? 'img' : 'radiogroup'\",\r\n '[attr.aria-label]': 'hostLabel()',\r\n '[attr.aria-disabled]': 'isDisabled() || null',\r\n '(pointerleave)': 'hover.set(null)',\r\n },\r\n templateUrl: './rating.html',\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Rating), multi: true }],\r\n})\r\nexport class Rating extends ValueAccessorBase<number> implements ControlValueAccessor {\r\n readonly value = model(0);\r\n readonly max = input(5);\r\n readonly readonly = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n /** Seçili yıldıza tekrar tıklamak değeri 0'a çeker. */\r\n readonly allowClear = input(true, { transform: booleanAttribute });\r\n readonly size = input(20);\r\n /** Verilmezse `MfLabels.rating.ariaLabel`. */\r\n readonly ariaLabel = input<string>();\r\n\r\n protected readonly labels = inject(MF_RATING_LABELS);\r\n protected readonly name = `mf-rating-${++ratingIdSeq}`;\r\n protected readonly hover = signal<number | null>(null);\r\n private readonly formDisabled = signal(false);\r\n\r\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\r\n protected readonly stars = computed(() => Array.from({ length: this.max() }, (_, i) => i + 1));\r\n /** Görüntülenen değer — önizleme varsa o, yoksa gerçek değer. */\r\n protected readonly shown = computed(() => this.hover() ?? this.value());\r\n\r\n protected readonly hostLabel = computed(() => {\r\n const base = this.ariaLabel() ?? this.labels().ariaLabel;\r\n if (!this.readonly()) return base;\r\n const rounded = Math.round(this.value() * 10) / 10;\r\n return `${base}: ${rounded} ${this.labels().outOf} ${this.max()}`;\r\n });\r\n\r\n /** Yıldızın doluluk yüzdesi (0–100) — salt okunur ondalıklar için kısmi. */\r\n protected fill(star: number): number {\r\n const amount = this.shown() - (star - 1);\r\n return Math.round(Math.min(1, Math.max(0, amount)) * 100);\r\n }\r\n\r\n protected starLabel(star: number): string {\r\n return `${star} ${this.labels().outOf} ${this.max()}`;\r\n }\r\n\r\n /**\r\n * TEK giriş noktası `click`: tarayıcı ok tuşuyla radyo seçiminde de `click` üretir. `change`\r\n * ayrıca dinlenmez — seçili radyoya tıklamak `change` üretmediğinden temizleme yalnızca\r\n * click'te yakalanabiliyor, ikisini birden dinlemek ise yeni seçimde çift tetiklenirdi.\r\n */\r\n protected choose(star: number): void {\r\n if (this.readonly() || this.isDisabled()) return;\r\n const next = this.allowClear() && star === this.value() ? 0 : star;\r\n this.value.set(next);\r\n this.onChange(next);\r\n this.onTouched();\r\n }\r\n\r\n /**\r\n * Klavyeyle temizleme: Delete/Backspace. Seçili radyoda Space tarayıcıda `click` üretmez\r\n * (radyo zaten seçili — gerçek tarayıcıda doğrulandı), bu yüzden fareyle yeniden tıklamanın\r\n * klavye karşılığı ayrı bir tuş.\r\n */\r\n protected clear(event: Event): void {\r\n if (this.readonly() || this.isDisabled() || !this.allowClear() || this.value() === 0) return;\r\n event.preventDefault();\r\n this.value.set(0);\r\n this.onChange(0);\r\n this.onTouched();\r\n }\r\n\r\n protected preview(star: number | null): void {\r\n if (!this.readonly() && !this.isDisabled()) this.hover.set(star);\r\n }\r\n\r\n writeValue(value: number | null): void {\r\n this.value.set(value ?? 0);\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.formDisabled.set(disabled);\r\n }\r\n}\r\n","@for (star of stars(); track star) {\r\n <!-- Görsel yıldız: boş taban + üstte doluluk yüzdesi kadar kırpılmış dolu yıldız. -->\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=\"text-warning\">star</span>\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mesgflow-ui-kit-rating.mjs","sources":["../../../projects/ui-kit/rating/rating.ts","../../../projects/ui-kit/rating/rating.html","../../../projects/ui-kit/rating/mesgflow-ui-kit-rating.ts"],"sourcesContent":["import {\r\n Component,\r\n booleanAttribute,\r\n computed,\r\n forwardRef,\r\n inject,\r\n input,\r\n model,\r\n signal,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\nimport { MF_RATING_LABELS, ValueAccessorBase } from '@mesgflow/ui-kit/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { Icon } from '@mesgflow/ui-kit/icon';\r\n\r\nlet ratingIdSeq = 0;\r\n\r\n/**\r\n * `<mf-rating [(value)]=\"score\" />` · salt okunur ortalama: `<mf-rating [value]=\"3.7\" readonly />`\r\n *\r\n * Etkileşimli mod yerel `<input type=\"radio\">`'lar üzerine kurulu (görsel olarak gizli): ok tuşu\r\n * gezinmesi, tek sekme durağı, form davranışı tarayıcıdan gelir — `role=\"radiogroup\"` + her\r\n * yıldız \"3 out of 5\" gibi adlı bir radyo. Üzerine gelince önizleme; seçili yıldıza tekrar\r\n * tıklamak temizler (`allowClear`). Salt okunur mod tek bir `role=\"img\"` (\"3.7 out of 5\");\r\n * ondalıklar yıldızın kısmen dolmasıyla gösterilir (ortalama puanlar için).\r\n */\r\n@Component({\r\n selector: 'mf-rating',\r\n exportAs: 'mfRating',\r\n imports: [Icon, NgTemplateOutlet],\r\n host: {\r\n class: 'inline-flex',\r\n '[attr.role]': \"readonly() ? 'img' : 'radiogroup'\",\r\n '[attr.aria-label]': 'hostLabel()',\r\n '[attr.aria-disabled]': 'isDisabled() || null',\r\n '(pointerleave)': 'hover.set(null)',\r\n },\r\n templateUrl: './rating.html',\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => Rating), multi: true }],\r\n})\r\nexport class Rating extends ValueAccessorBase<number> implements ControlValueAccessor {\r\n readonly value = model(0);\r\n readonly max = input(5);\r\n readonly readonly = input(false, { transform: booleanAttribute });\r\n readonly disabled = input(false, { transform: booleanAttribute });\r\n /** Seçili yıldıza tekrar tıklamak değeri 0'a çeker. */\r\n readonly allowClear = input(true, { transform: booleanAttribute });\r\n readonly size = input(20);\r\n /** Verilmezse `MfLabels.rating.ariaLabel`. */\r\n readonly ariaLabel = input<string>();\r\n\r\n protected readonly labels = inject(MF_RATING_LABELS);\r\n protected readonly name = `mf-rating-${++ratingIdSeq}`;\r\n protected readonly hover = signal<number | null>(null);\r\n private readonly formDisabled = signal(false);\r\n\r\n protected readonly isDisabled = computed(() => this.disabled() || this.formDisabled());\r\n protected readonly stars = computed(() => Array.from({ length: this.max() }, (_, i) => i + 1));\r\n /** Görüntülenen değer — önizleme varsa o, yoksa gerçek değer. */\r\n protected readonly shown = computed(() => this.hover() ?? this.value());\r\n\r\n protected readonly hostLabel = computed(() => {\r\n const base = this.ariaLabel() ?? this.labels().ariaLabel;\r\n if (!this.readonly()) return base;\r\n const rounded = Math.round(this.value() * 10) / 10;\r\n return `${base}: ${rounded} ${this.labels().outOf} ${this.max()}`;\r\n });\r\n\r\n /** Yıldızın doluluk yüzdesi (0–100) — salt okunur ondalıklar için kısmi. */\r\n protected fill(star: number): number {\r\n const amount = this.shown() - (star - 1);\r\n return Math.round(Math.min(1, Math.max(0, amount)) * 100);\r\n }\r\n\r\n protected starLabel(star: number): string {\r\n return `${star} ${this.labels().outOf} ${this.max()}`;\r\n }\r\n\r\n /**\r\n * TEK giriş noktası `click`: tarayıcı ok tuşuyla radyo seçiminde de `click` üretir. `change`\r\n * ayrıca dinlenmez — seçili radyoya tıklamak `change` üretmediğinden temizleme yalnızca\r\n * click'te yakalanabiliyor, ikisini birden dinlemek ise yeni seçimde çift tetiklenirdi.\r\n */\r\n protected choose(star: number): void {\r\n if (this.readonly() || this.isDisabled()) return;\r\n const next = this.allowClear() && star === this.value() ? 0 : star;\r\n this.value.set(next);\r\n this.onChange(next);\r\n this.onTouched();\r\n }\r\n\r\n /**\r\n * Klavyeyle temizleme: Delete/Backspace. Seçili radyoda Space tarayıcıda `click` üretmez\r\n * (radyo zaten seçili — gerçek tarayıcıda doğrulandı), bu yüzden fareyle yeniden tıklamanın\r\n * klavye karşılığı ayrı bir tuş.\r\n */\r\n protected clear(event: Event): void {\r\n if (this.readonly() || this.isDisabled() || !this.allowClear() || this.value() === 0) return;\r\n event.preventDefault();\r\n this.value.set(0);\r\n this.onChange(0);\r\n this.onTouched();\r\n }\r\n\r\n protected preview(star: number | null): void {\r\n if (!this.readonly() && !this.isDisabled()) this.hover.set(star);\r\n }\r\n\r\n writeValue(value: number | null): void {\r\n this.value.set(value ?? 0);\r\n }\r\n\r\n setDisabledState(disabled: boolean): void {\r\n this.formDisabled.set(disabled);\r\n }\r\n}\r\n","@for (star of stars(); track star) {\r\n <!-- Görsel yıldız: boş taban + üstte doluluk yüzdesi kadar kırpılmış dolu yıldız. -->\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
|
4
4
|
import { ValueAccessorBase, MF_SEARCH_INPUT_LABELS } from '@mesgflow/ui-kit/core';
|
|
5
5
|
import { Icon } from '@mesgflow/ui-kit/icon';
|
|
6
6
|
import { Input } from '@mesgflow/ui-kit/input';
|
|
7
|
+
import { Spinner } from '@mesgflow/ui-kit/spinner';
|
|
7
8
|
import { Tooltip } from '@mesgflow/ui-kit/tooltip';
|
|
8
9
|
|
|
9
10
|
/**
|
|
@@ -24,6 +25,9 @@ class SearchInput extends ValueAccessorBase {
|
|
|
24
25
|
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
25
26
|
placeholder = input(/* @ts-ignore */
|
|
26
27
|
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
28
|
+
/** İç `<input>`'un id'si — harici bir `<label for>` / `mf-field for` ile ilişkilendirmek için. */
|
|
29
|
+
inputId = input(/* @ts-ignore */
|
|
30
|
+
...(ngDevMode ? [undefined, { debugName: "inputId" }] : /* istanbul ignore next */ []));
|
|
27
31
|
ariaLabel = input(/* @ts-ignore */
|
|
28
32
|
...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
29
33
|
tooltipLabel = input(/* @ts-ignore */
|
|
@@ -135,16 +139,16 @@ class SearchInput extends ValueAccessorBase {
|
|
|
135
139
|
this.inputEl()?.nativeElement.blur();
|
|
136
140
|
}
|
|
137
141
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
138
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", 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 }, 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: [
|
|
142
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", 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: [
|
|
139
143
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SearchInput), multi: true },
|
|
140
|
-
], 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
|
|
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"] }] });
|
|
141
145
|
}
|
|
142
146
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: SearchInput, decorators: [{
|
|
143
147
|
type: Component,
|
|
144
|
-
args: [{ selector: 'mf-search-input', exportAs: 'mfSearchInput', imports: [Icon, Input, Tooltip], host: { class: 'inline-block', '[class.w-full]': 'fullWidth()' }, providers: [
|
|
148
|
+
args: [{ selector: 'mf-search-input', exportAs: 'mfSearchInput', imports: [Icon, Input, Spinner, Tooltip], host: { class: 'inline-block', '[class.w-full]': 'fullWidth()' }, providers: [
|
|
145
149
|
{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => SearchInput), multi: true },
|
|
146
|
-
], template: "<div class=\"relative inline-flex items-center\" [class.w-full]=\"fullWidth()\">\r\n
|
|
147
|
-
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], tooltipLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipLabel", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], debounceMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceMs", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], inputEl: [{ type: i0.ViewChild, args: ['inputEl', { isSignal: true }] }], tooltipRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => Tooltip), { isSignal: true }] }] } });
|
|
150
|
+
], 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" }]
|
|
151
|
+
}], ctorParameters: () => [], propDecorators: { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], inputId: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputId", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], tooltipLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltipLabel", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], debounceMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "debounceMs", required: false }] }], collapsible: [{ type: i0.Input, args: [{ isSignal: true, alias: "collapsible", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], inputEl: [{ type: i0.ViewChild, args: ['inputEl', { isSignal: true }] }], tooltipRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => Tooltip), { isSignal: true }] }] } });
|
|
148
152
|
|
|
149
153
|
/**
|
|
150
154
|
* Generated bundle index. Do not edit.
|