@konce-pt/angular 0.7.9 → 0.7.10
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/CHANGELOG.md +36 -0
- package/fesm2022/konce-pt-angular-charts.mjs +8 -8
- package/fesm2022/konce-pt-angular-charts.mjs.map +1 -1
- package/fesm2022/konce-pt-angular.mjs +305 -247
- package/fesm2022/konce-pt-angular.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/context-menu/llms.txt +2 -2
- package/src/lib/megamenu/llms.txt +1 -1
- package/src/lib/menu/llms.txt +2 -2
- package/src/lib/menubar/llms.txt +2 -2
- package/src/lib/speed-dial/llms.txt +2 -2
- package/src/lib/split-button/llms.txt +2 -2
- package/types/konce-pt-angular.d.ts +52 -32
- package/types/konce-pt-angular.d.ts.map +1 -1
|
@@ -1351,7 +1351,7 @@ function KptSplitButton_ng_template_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
1351
1351
|
* Wymaga `import '@angular/cdk/overlay-prebuilt.css';`
|
|
1352
1352
|
*
|
|
1353
1353
|
* @example
|
|
1354
|
-
* <kpt-split-button [items]="items" (primaryClick)="save()" (
|
|
1354
|
+
* <kpt-split-button [items]="items" (primaryClick)="save()" (selected)="onItem($event)">Zapisz</kpt-split-button>
|
|
1355
1355
|
*/
|
|
1356
1356
|
class KptSplitButton {
|
|
1357
1357
|
constructor() {
|
|
@@ -1361,7 +1361,7 @@ class KptSplitButton {
|
|
|
1361
1361
|
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
1362
1362
|
this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
1363
1363
|
this.primaryClick = output();
|
|
1364
|
-
this.
|
|
1364
|
+
this.selected = output();
|
|
1365
1365
|
this.i18n = inject(KptI18n);
|
|
1366
1366
|
this.open = signal(false, /* @ts-ignore */
|
|
1367
1367
|
...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
@@ -1373,11 +1373,11 @@ class KptSplitButton {
|
|
|
1373
1373
|
pick(item) {
|
|
1374
1374
|
if (item.disabled)
|
|
1375
1375
|
return;
|
|
1376
|
-
this.
|
|
1376
|
+
this.selected.emit(item);
|
|
1377
1377
|
this.open.set(false);
|
|
1378
1378
|
}
|
|
1379
1379
|
static { this.ɵfac = function KptSplitButton_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptSplitButton)(); }; }
|
|
1380
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptSplitButton, selectors: [["kpt-split-button"]], hostAttrs: [1, "kpt-split-button-host"], inputs: { variant: [1, "variant"], items: [1, "items"], disabled: [1, "disabled"] }, outputs: { primaryClick: "primaryClick",
|
|
1380
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptSplitButton, selectors: [["kpt-split-button"]], hostAttrs: [1, "kpt-split-button-host"], inputs: { variant: [1, "variant"], items: [1, "items"], disabled: [1, "disabled"] }, outputs: { primaryClick: "primaryClick", selected: "selected" }, ngContentSelectors: _c0$z, decls: 7, vars: 8, consts: [["origin", "cdkOverlayOrigin"], [1, "kpt-split-button"], ["type", "button", 1, "kpt-split-button__main", 3, "click", "disabled"], ["type", "button", "cdkOverlayOrigin", "", 1, "kpt-split-button__toggle", 3, "click", "disabled"], ["name", "chevron-down"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop"], ["role", "menu", 1, "kpt-split-button__panel"], ["role", "separator", 1, "kpt-split-button__separator"], ["role", "presentation", 1, "kpt-split-button__header"], ["type", "button", 1, "kpt-split-button__item", 3, "kpt-split-button__item--danger", "disabled"], ["size", "sm", 3, "src", "name", "icon"], [3, "name"], [1, "kpt-split-button__text"], [1, "kpt-split-button__label"], [1, "kpt-split-button__description"], ["type", "button", 1, "kpt-split-button__item", 3, "click", "disabled"], [1, "kpt-split-button__badge", 3, "value", "variant"]], template: function KptSplitButton_Template(rf, ctx) { if (rf & 1) {
|
|
1381
1381
|
i0.ɵɵprojectionDef();
|
|
1382
1382
|
i0.ɵɵelementStart(0, "div", 1)(1, "button", 2);
|
|
1383
1383
|
i0.ɵɵlistener("click", function KptSplitButton_Template_button_click_1_listener() { return ctx.primaryClick.emit(); });
|
|
@@ -1479,7 +1479,7 @@ class KptSplitButton {
|
|
|
1479
1479
|
</div>
|
|
1480
1480
|
</ng-template>
|
|
1481
1481
|
`, host: { class: 'kpt-split-button-host' }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-split-button-host{display:inline-flex}.kpt-split-button{--_bg: var(--kpt-color-primary);--_fg: var(--kpt-color-on-primary);--_bg-hover: var(--kpt-color-primary-hover);display:inline-flex;border-radius:var(--kpt-button-radius, .5rem);overflow:hidden}.kpt-split-button[data-variant=tonal]{--_bg: var(--kpt-color-muted);--_fg: var(--kpt-color-on-muted);--_bg-hover: var(--kpt-color-muted-hover)}.kpt-split-button__main,.kpt-split-button__toggle{border:0;background:var(--_bg);color:var(--_fg);cursor:pointer;font:inherit;font-size:var(--kpt-font-size-sm, .875rem);font-weight:var(--kpt-font-weight-medium, 500);height:2.5rem;position:relative;isolation:isolate}.kpt-split-button__main:after,.kpt-split-button__toggle:after{content:\"\";position:absolute;inset:0;z-index:-1;background-color:var(--_bg-hover);opacity:0;pointer-events:none;transition:opacity var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-split-button__main:hover:not(:disabled):after,.kpt-split-button__toggle:hover:not(:disabled):after{opacity:1}.kpt-split-button__main:disabled,.kpt-split-button__toggle:disabled{opacity:.5;cursor:not-allowed}@media(prefers-reduced-motion:reduce){.kpt-split-button__main:after,.kpt-split-button__toggle:after{transition:none}}.kpt-split-button__main{padding-inline:var(--kpt-space-4, 1rem)}.kpt-split-button__toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;border-inline-start:1px solid color-mix(in oklch,var(--_fg) 25%,transparent)}.kpt-split-button__panel{min-width:11rem;padding:.25rem;background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-split-button__item{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:.5rem .6rem;border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font:inherit;font-size:var(--kpt-font-size-sm, .875rem);text-align:start;cursor:pointer}.kpt-split-button__item:hover:not(:disabled){background:var(--kpt-color-surface-variant)}.kpt-split-button__item:disabled{opacity:.45;cursor:not-allowed}.kpt-split-button__item--danger{color:var(--kpt-color-danger)}.kpt-split-button__item kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-split-button__header{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:.5rem .6rem;font-size:var(--kpt-font-size-sm, .875rem);cursor:default}.kpt-split-button__header .kpt-split-button__label{font-weight:var(--kpt-font-weight-semibold, 600)}.kpt-split-button__header kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-split-button__text{display:flex;flex-direction:column;min-width:0}.kpt-split-button__label,.kpt-split-button__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-split-button__description{color:var(--kpt-color-on-surface-muted);font-size:var(--kpt-font-size-xs, .75rem)}.kpt-split-button__badge{margin-inline-start:auto}.kpt-split-button__separator{height:1px;margin:.25rem 0;background:var(--kpt-color-border)}}\n"] }]
|
|
1482
|
-
}], null, { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], primaryClick: [{ type: i0.Output, args: ["primaryClick"] }],
|
|
1482
|
+
}], null, { variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], primaryClick: [{ type: i0.Output, args: ["primaryClick"] }], selected: [{ type: i0.Output, args: ["selected"] }] }); })();
|
|
1483
1483
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptSplitButton, { className: "KptSplitButton", filePath: "lib/split-button/split-button.component.ts", lineNumber: 101 }); })();
|
|
1484
1484
|
|
|
1485
1485
|
// Do not edit directly — generated by scripts/gen-tokens.mjs
|
|
@@ -2795,6 +2795,11 @@ function KptClock_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
|
2795
2795
|
const R_OUTER = 40;
|
|
2796
2796
|
const R_INNER = 26;
|
|
2797
2797
|
const pad$2 = (n) => String(n).padStart(2, '0');
|
|
2798
|
+
/** Pozycja znacznika (% tarczy) na pierścieniu o promieniu `radius`: 12 na górze, zegarowo. */
|
|
2799
|
+
function markPos(index, radius) {
|
|
2800
|
+
const theta = (index / 12) * 2 * Math.PI;
|
|
2801
|
+
return { x: 50 + radius * Math.sin(theta), y: 50 - radius * Math.cos(theta) };
|
|
2802
|
+
}
|
|
2798
2803
|
/**
|
|
2799
2804
|
* Tarcza zegara (wybór godziny) — dwa etapy: godziny → minuty, klik lub przeciąganie.
|
|
2800
2805
|
* Format 12/24h (`hourFormat`); w 24h dodatkowy wewnętrzny pierścień 13–00, w 12h AM/PM.
|
|
@@ -2826,66 +2831,14 @@ class KptClock {
|
|
|
2826
2831
|
...(ngDevMode ? [{ debugName: "hourLabel" }] : /* istanbul ignore next */ []));
|
|
2827
2832
|
this.minuteLabel = computed(() => pad$2(this.minute()), /* @ts-ignore */
|
|
2828
2833
|
...(ngDevMode ? [{ debugName: "minuteLabel" }] : /* istanbul ignore next */ []));
|
|
2829
|
-
|
|
2830
|
-
|
|
2831
|
-
if (this.hourFormat() === 12) {
|
|
2832
|
-
const ap = this.ampm();
|
|
2833
|
-
const curH12 = this.hour12();
|
|
2834
|
-
for (let i = 0; i < 12; i++) {
|
|
2835
|
-
const theta = (i / 12) * 2 * Math.PI;
|
|
2836
|
-
const h12 = i === 0 ? 12 : i;
|
|
2837
|
-
marks.push({
|
|
2838
|
-
label: String(h12),
|
|
2839
|
-
hour24: this.from12h(h12, ap),
|
|
2840
|
-
x: 50 + R_OUTER * Math.sin(theta),
|
|
2841
|
-
y: 50 - R_OUTER * Math.cos(theta),
|
|
2842
|
-
inner: false,
|
|
2843
|
-
selected: curH12 === h12,
|
|
2844
|
-
});
|
|
2845
|
-
}
|
|
2846
|
-
return marks;
|
|
2847
|
-
}
|
|
2848
|
-
const cur = this.hour();
|
|
2849
|
-
for (let i = 0; i < 12; i++) {
|
|
2850
|
-
const theta = (i / 12) * 2 * Math.PI;
|
|
2851
|
-
const hour24 = i === 0 ? 12 : i;
|
|
2852
|
-
marks.push({
|
|
2853
|
-
label: i === 0 ? '12' : String(i),
|
|
2854
|
-
hour24,
|
|
2855
|
-
x: 50 + R_OUTER * Math.sin(theta),
|
|
2856
|
-
y: 50 - R_OUTER * Math.cos(theta),
|
|
2857
|
-
inner: false,
|
|
2858
|
-
selected: cur === hour24,
|
|
2859
|
-
});
|
|
2860
|
-
}
|
|
2861
|
-
for (let i = 0; i < 12; i++) {
|
|
2862
|
-
const theta = (i / 12) * 2 * Math.PI;
|
|
2863
|
-
const hour24 = i === 0 ? 0 : i + 12;
|
|
2864
|
-
marks.push({
|
|
2865
|
-
label: i === 0 ? '00' : String(i + 12),
|
|
2866
|
-
hour24,
|
|
2867
|
-
x: 50 + R_INNER * Math.sin(theta),
|
|
2868
|
-
y: 50 - R_INNER * Math.cos(theta),
|
|
2869
|
-
inner: true,
|
|
2870
|
-
selected: cur === hour24,
|
|
2871
|
-
});
|
|
2872
|
-
}
|
|
2873
|
-
return marks;
|
|
2874
|
-
}, /* @ts-ignore */
|
|
2834
|
+
/** W 12h jeden pierścień; w 24h zewnętrzny (12, 1–11) i wewnętrzny (00, 13–23). */
|
|
2835
|
+
this.hourMarks = computed(() => this.hourFormat() === 12 ? this.marks12h() : [...this.marks24hOuter(), ...this.marks24hInner()], /* @ts-ignore */
|
|
2875
2836
|
...(ngDevMode ? [{ debugName: "hourMarks" }] : /* istanbul ignore next */ []));
|
|
2876
2837
|
this.minuteMarks = computed(() => {
|
|
2877
2838
|
const cur = this.minute();
|
|
2878
2839
|
return Array.from({ length: 12 }, (_, i) => {
|
|
2879
2840
|
const val = i * 5;
|
|
2880
|
-
|
|
2881
|
-
return {
|
|
2882
|
-
label: pad$2(val),
|
|
2883
|
-
hour24: val,
|
|
2884
|
-
x: 50 + R_OUTER * Math.sin(theta),
|
|
2885
|
-
y: 50 - R_OUTER * Math.cos(theta),
|
|
2886
|
-
inner: false,
|
|
2887
|
-
selected: cur === val,
|
|
2888
|
-
};
|
|
2841
|
+
return { label: pad$2(val), hour24: val, ...markPos(i, R_OUTER), inner: false, selected: cur === val };
|
|
2889
2842
|
});
|
|
2890
2843
|
}, /* @ts-ignore */
|
|
2891
2844
|
...(ngDevMode ? [{ debugName: "minuteMarks" }] : /* istanbul ignore next */ []));
|
|
@@ -2911,6 +2864,31 @@ class KptClock {
|
|
|
2911
2864
|
const base = h12 % 12; // 12 → 0
|
|
2912
2865
|
return ap === 'PM' ? base + 12 : base;
|
|
2913
2866
|
}
|
|
2867
|
+
marks12h() {
|
|
2868
|
+
const ap = this.ampm();
|
|
2869
|
+
const cur = this.hour();
|
|
2870
|
+
return Array.from({ length: 12 }, (_, i) => {
|
|
2871
|
+
const h12 = i === 0 ? 12 : i;
|
|
2872
|
+
// Wartość docelowa bierze bieżące AM/PM — tarcza pokazuje tylko jedną połowę doby.
|
|
2873
|
+
const hour24 = this.from12h(h12, ap);
|
|
2874
|
+
return { label: String(h12), hour24, ...markPos(i, R_OUTER), inner: false, selected: cur === hour24 };
|
|
2875
|
+
});
|
|
2876
|
+
}
|
|
2877
|
+
marks24hOuter() {
|
|
2878
|
+
const cur = this.hour();
|
|
2879
|
+
return Array.from({ length: 12 }, (_, i) => {
|
|
2880
|
+
const hour24 = i === 0 ? 12 : i;
|
|
2881
|
+
return { label: String(hour24), hour24, ...markPos(i, R_OUTER), inner: false, selected: cur === hour24 };
|
|
2882
|
+
});
|
|
2883
|
+
}
|
|
2884
|
+
marks24hInner() {
|
|
2885
|
+
const cur = this.hour();
|
|
2886
|
+
return Array.from({ length: 12 }, (_, i) => {
|
|
2887
|
+
const hour24 = i === 0 ? 0 : i + 12;
|
|
2888
|
+
// `pad` daje '00' dla północy; 13–23 są już dwucyfrowe.
|
|
2889
|
+
return { label: pad$2(hour24), hour24, ...markPos(i, R_INNER), inner: true, selected: cur === hour24 };
|
|
2890
|
+
});
|
|
2891
|
+
}
|
|
2914
2892
|
setPhase(phase) {
|
|
2915
2893
|
this.clockPhase.set(phase);
|
|
2916
2894
|
}
|
|
@@ -2939,24 +2917,32 @@ class KptClock {
|
|
|
2939
2917
|
if (deg < 0)
|
|
2940
2918
|
deg += 360;
|
|
2941
2919
|
if (this.clockPhase() === 'hours') {
|
|
2942
|
-
|
|
2943
|
-
if (this.hourFormat() === 12) {
|
|
2944
|
-
const h12 = idx === 0 ? 12 : idx;
|
|
2945
|
-
this.hour.set(this.from12h(h12, this.ampm()));
|
|
2946
|
-
}
|
|
2947
|
-
else {
|
|
2948
|
-
const radius = Math.hypot(dx, dy) / (rect.width / 2);
|
|
2949
|
-
const inner = radius < (R_OUTER + R_INNER) / 2 / 50;
|
|
2950
|
-
this.hour.set(inner ? (idx === 0 ? 0 : idx + 12) : idx === 0 ? 12 : idx);
|
|
2951
|
-
}
|
|
2920
|
+
this.setHourFromAngle(deg, Math.hypot(dx, dy) / (rect.width / 2));
|
|
2952
2921
|
}
|
|
2953
2922
|
else {
|
|
2954
|
-
|
|
2955
|
-
const raw = Math.round(deg / 6) % 60;
|
|
2956
|
-
this.minute.set((Math.round(raw / step) * step) % 60);
|
|
2923
|
+
this.setMinuteFromAngle(deg);
|
|
2957
2924
|
}
|
|
2958
2925
|
this.emit();
|
|
2959
2926
|
}
|
|
2927
|
+
/** Godzina z kąta; w 24h o pierścieniu (a więc o 12–23 vs 0–11) decyduje promień kliknięcia. */
|
|
2928
|
+
setHourFromAngle(deg, radius) {
|
|
2929
|
+
const idx = Math.round(deg / 30) % 12;
|
|
2930
|
+
if (this.hourFormat() === 12) {
|
|
2931
|
+
this.hour.set(this.from12h(idx === 0 ? 12 : idx, this.ampm()));
|
|
2932
|
+
return;
|
|
2933
|
+
}
|
|
2934
|
+
const inner = radius < (R_OUTER + R_INNER) / 2 / 50;
|
|
2935
|
+
if (inner)
|
|
2936
|
+
this.hour.set(idx === 0 ? 0 : idx + 12);
|
|
2937
|
+
else
|
|
2938
|
+
this.hour.set(idx === 0 ? 12 : idx);
|
|
2939
|
+
}
|
|
2940
|
+
/** Minuta z kąta, dociągnięta do `minuteStep`. */
|
|
2941
|
+
setMinuteFromAngle(deg) {
|
|
2942
|
+
const step = Math.max(1, this.minuteStep());
|
|
2943
|
+
const raw = Math.round(deg / 6) % 60;
|
|
2944
|
+
this.minute.set((Math.round(raw / step) * step) % 60);
|
|
2945
|
+
}
|
|
2960
2946
|
onDialUp() {
|
|
2961
2947
|
if (this.clockPhase() === 'hours')
|
|
2962
2948
|
this.clockPhase.set('minutes');
|
|
@@ -3056,7 +3042,7 @@ class KptClock {
|
|
|
3056
3042
|
</div>
|
|
3057
3043
|
`, host: { class: 'kpt-clock-host' }, styles: ["@layer kpt.components{.kpt-clock-host{display:block}.kpt-clock__time{display:flex;align-items:center;justify-content:center;gap:var(--kpt-space-1, .25rem);margin-bottom:var(--kpt-space-3, .75rem);font-variant-numeric:tabular-nums}.kpt-clock__seg{border:0;background:none;padding:.1rem .4rem;border-radius:var(--kpt-radius-sm, .25rem);font-size:var(--kpt-font-size-2xl, 1.5rem);font-weight:var(--kpt-font-weight-semibold, 600);color:var(--kpt-color-on-surface-muted);cursor:pointer}.kpt-clock__seg.is-active{color:var(--kpt-color-primary);background:var(--kpt-color-muted)}.kpt-clock__colon{font-size:var(--kpt-font-size-2xl, 1.5rem);font-weight:var(--kpt-font-weight-semibold, 600);color:var(--kpt-color-on-surface-muted)}.kpt-clock__ampm{display:flex;flex-direction:column;gap:2px;margin-inline-start:var(--kpt-space-2, .5rem)}.kpt-clock__ampm button{border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);background:none;padding:.1rem .4rem;border-radius:var(--kpt-radius-sm, .25rem);font-size:var(--kpt-font-size-xs, .75rem);font-weight:var(--kpt-font-weight-semibold, 600);color:var(--kpt-color-on-surface-muted);cursor:pointer}.kpt-clock__ampm button.is-active{background:var(--kpt-color-primary);border-color:var(--kpt-color-primary);color:var(--kpt-color-on-primary)}.kpt-clock__face{position:relative;width:13rem;max-width:100%;aspect-ratio:1;margin:0 auto;border-radius:50%;background:var(--kpt-color-surface-variant);touch-action:none;-webkit-user-select:none;user-select:none}.kpt-clock__center{position:absolute;left:50%;top:50%;width:8px;height:8px;transform:translate(-50%,-50%);border-radius:50%;background:var(--kpt-color-primary);z-index:2}.kpt-clock__hand{position:absolute;left:50%;bottom:50%;width:2px;height:40%;margin-left:-1px;transform-origin:bottom center;background:var(--kpt-color-primary);z-index:1}.kpt-clock__hand--inner{height:26%}.kpt-clock__hand:before{content:\"\";position:absolute;top:-3px;left:50%;width:8px;height:8px;transform:translate(-50%);border-radius:50%;background:var(--kpt-color-primary)}.kpt-clock__num{position:absolute;transform:translate(-50%,-50%);display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:0;border-radius:50%;background:none;color:var(--kpt-color-on-surface);font:inherit;font-size:var(--kpt-font-size-sm, .875rem);cursor:pointer;z-index:2}.kpt-clock__num:hover{background:var(--kpt-color-muted)}.kpt-clock__num--inner{width:1.6rem;height:1.6rem;font-size:var(--kpt-font-size-xs, .75rem);color:var(--kpt-color-on-surface-muted)}.kpt-clock__num--selected{background:var(--kpt-color-primary)!important;color:var(--kpt-color-on-primary)}}\n"] }]
|
|
3058
3044
|
}], () => [], { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], hourFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "hourFormat", required: false }] }], minuteStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "minuteStep", required: false }] }] }); })();
|
|
3059
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptClock, { className: "KptClock", filePath: "lib/datepicker/clock.component.ts", lineNumber:
|
|
3045
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptClock, { className: "KptClock", filePath: "lib/datepicker/clock.component.ts", lineNumber: 100 }); })();
|
|
3060
3046
|
|
|
3061
3047
|
const _forTrack0$8 = ($index, $item) => $item.iso;
|
|
3062
3048
|
const _forTrack1$2 = ($index, $item) => $item.label;
|
|
@@ -3536,42 +3522,29 @@ class KptDatepicker {
|
|
|
3536
3522
|
return this.formatTime(t?.h ?? 0, t?.m ?? 0);
|
|
3537
3523
|
}, /* @ts-ignore */
|
|
3538
3524
|
...(ngDevMode ? [{ debugName: "timeBarLabel" }] : /* istanbul ignore next */ []));
|
|
3525
|
+
/**
|
|
3526
|
+
* Tekst w triggerze. Każdy tryb ma własny format wartości, więc `display` tylko rozdziela
|
|
3527
|
+
* robotę — formatowanie siedzi w metodach `display*` niżej. Wartość niepasująca do formatu
|
|
3528
|
+
* trybu daje pusty string (trigger nie pokazuje śmieci, np. po ręcznej podmianie modelu).
|
|
3529
|
+
*/
|
|
3539
3530
|
this.display = computed(() => {
|
|
3540
3531
|
const v = this.value();
|
|
3541
3532
|
if (!v)
|
|
3542
3533
|
return '';
|
|
3543
3534
|
const iso = this.displayFormat() === 'iso';
|
|
3544
3535
|
switch (this.selectionMode()) {
|
|
3545
|
-
case 'monthYear':
|
|
3546
|
-
|
|
3547
|
-
return m ? (iso ? v : `${m[2]}.${m[1]}`) : '';
|
|
3548
|
-
}
|
|
3536
|
+
case 'monthYear':
|
|
3537
|
+
return this.displayMonthYear(v, iso);
|
|
3549
3538
|
case 'year':
|
|
3550
3539
|
return /^\d{4}$/.test(v) ? v : '';
|
|
3551
|
-
case 'month':
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
|
|
3555
|
-
|
|
3556
|
-
|
|
3557
|
-
|
|
3558
|
-
|
|
3559
|
-
return t ? this.formatTime(t.h, t.m) : '';
|
|
3560
|
-
}
|
|
3561
|
-
case 'datetime': {
|
|
3562
|
-
const dt = this.parseDateTime(v);
|
|
3563
|
-
if (!dt)
|
|
3564
|
-
return '';
|
|
3565
|
-
const datePart = iso ? dt.date : `${dt.date.slice(8, 10)}.${dt.date.slice(5, 7)}.${dt.date.slice(0, 4)}`;
|
|
3566
|
-
const sep = iso ? 'T' : ' ';
|
|
3567
|
-
return `${datePart}${sep}${this.formatTime(dt.h, dt.m)}`;
|
|
3568
|
-
}
|
|
3569
|
-
default: {
|
|
3570
|
-
const d = this.parseDate(v);
|
|
3571
|
-
if (!d)
|
|
3572
|
-
return '';
|
|
3573
|
-
return iso ? toIso$1(d) : `${pad$1(d.getDate())}.${pad$1(d.getMonth() + 1)}.${d.getFullYear()}`;
|
|
3574
|
-
}
|
|
3540
|
+
case 'month':
|
|
3541
|
+
return this.displayMonth(v);
|
|
3542
|
+
case 'time':
|
|
3543
|
+
return this.displayTime(v);
|
|
3544
|
+
case 'datetime':
|
|
3545
|
+
return this.displayDateTime(v, iso);
|
|
3546
|
+
default:
|
|
3547
|
+
return this.displayDate(v, iso);
|
|
3575
3548
|
}
|
|
3576
3549
|
}, /* @ts-ignore */
|
|
3577
3550
|
...(ngDevMode ? [{ debugName: "display" }] : /* istanbul ignore next */ []));
|
|
@@ -3720,6 +3693,36 @@ class KptDatepicker {
|
|
|
3720
3693
|
}
|
|
3721
3694
|
return `${pad$1(h)}:${pad$1(m)}`;
|
|
3722
3695
|
}
|
|
3696
|
+
displayMonthYear(v, iso) {
|
|
3697
|
+
const m = /^(\d{4})-(\d{2})$/.exec(v);
|
|
3698
|
+
if (!m)
|
|
3699
|
+
return '';
|
|
3700
|
+
return iso ? v : `${m[2]}.${m[1]}`;
|
|
3701
|
+
}
|
|
3702
|
+
displayMonth(v) {
|
|
3703
|
+
const m = /^(\d{2})$/.exec(v);
|
|
3704
|
+
if (!m)
|
|
3705
|
+
return '';
|
|
3706
|
+
return this.monthDisplay() === 'number' ? m[1] : (this.months()[+m[1] - 1] ?? '');
|
|
3707
|
+
}
|
|
3708
|
+
displayTime(v) {
|
|
3709
|
+
const t = this.parseTime(v);
|
|
3710
|
+
return t ? this.formatTime(t.h, t.m) : '';
|
|
3711
|
+
}
|
|
3712
|
+
displayDateTime(v, iso) {
|
|
3713
|
+
const dt = this.parseDateTime(v);
|
|
3714
|
+
if (!dt)
|
|
3715
|
+
return '';
|
|
3716
|
+
const datePart = iso ? dt.date : `${dt.date.slice(8, 10)}.${dt.date.slice(5, 7)}.${dt.date.slice(0, 4)}`;
|
|
3717
|
+
const sep = iso ? 'T' : ' ';
|
|
3718
|
+
return `${datePart}${sep}${this.formatTime(dt.h, dt.m)}`;
|
|
3719
|
+
}
|
|
3720
|
+
displayDate(v, iso) {
|
|
3721
|
+
const d = this.parseDate(v);
|
|
3722
|
+
if (!d)
|
|
3723
|
+
return '';
|
|
3724
|
+
return iso ? toIso$1(d) : `${pad$1(d.getDate())}.${pad$1(d.getMonth() + 1)}.${d.getFullYear()}`;
|
|
3725
|
+
}
|
|
3723
3726
|
// ── Parsowanie ──
|
|
3724
3727
|
parseDate(iso) {
|
|
3725
3728
|
const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(iso ?? '');
|
|
@@ -9224,62 +9227,35 @@ class KptCellEditDef {
|
|
|
9224
9227
|
}], null, { kptCellEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "kptCellEdit", required: true }] }] }); })();
|
|
9225
9228
|
|
|
9226
9229
|
/*
|
|
9227
|
-
*
|
|
9228
|
-
* testować `node --test` bez ciągnięcia Angulara.
|
|
9230
|
+
* Zamiana wartości komórki na tekst dla filtrowania, sortowania i podsumowań — pure TS,
|
|
9231
|
+
* wydzielone żeby dało się testować `node --test` bez ciągnięcia Angulara (jak `csv-export.ts`).
|
|
9229
9232
|
*/
|
|
9230
|
-
|
|
9231
|
-
|
|
9232
|
-
|
|
9233
|
+
/**
|
|
9234
|
+
* Tekst z dowolnej wartości komórki. Prymitywy, `Date` i tablice zachowują się jak `String()`,
|
|
9235
|
+
* natomiast zwykły obiekt daje **pusty string**, nie `'[object Object]'`: ten drugi udawałby
|
|
9236
|
+
* sensowną zawartość — filtr tekstowy „obj" dopasowywałby każdy wiersz z obiektem w komórce,
|
|
9237
|
+
* a sortowanie uznawało je wszystkie za równe.
|
|
9238
|
+
*/
|
|
9239
|
+
function toText(value) {
|
|
9233
9240
|
switch (typeof value) {
|
|
9234
|
-
case 'undefined':
|
|
9235
|
-
return '';
|
|
9236
9241
|
case 'string':
|
|
9237
9242
|
return value;
|
|
9238
9243
|
case 'number':
|
|
9239
9244
|
case 'boolean':
|
|
9240
9245
|
case 'bigint':
|
|
9241
9246
|
return String(value);
|
|
9242
|
-
|
|
9247
|
+
case 'object':
|
|
9243
9248
|
if (value === null)
|
|
9244
9249
|
return '';
|
|
9245
9250
|
if (value instanceof Date)
|
|
9246
|
-
return value.
|
|
9247
|
-
|
|
9248
|
-
|
|
9249
|
-
|
|
9250
|
-
|
|
9251
|
-
|
|
9252
|
-
let text = stringifyCsvValue(value);
|
|
9253
|
-
// Wiodący `'` każe arkuszowi traktować komórkę jako tekst — sam znak nie jest wyświetlany.
|
|
9254
|
-
if (FORMULA_PREFIX.test(text))
|
|
9255
|
-
text = `'${text}`;
|
|
9256
|
-
return /[",\n;]/.test(text) ? `"${text.replaceAll('"', '""')}"` : text;
|
|
9257
|
-
}
|
|
9258
|
-
|
|
9259
|
-
/**
|
|
9260
|
-
* Szablon rozwijanego wiersza (row detail) dla `kpt-data-table`. Renderowany pod
|
|
9261
|
-
* wierszem po rozwinięciu. Kontekst: `$implicit` = wiersz. Wymaga `expandable`.
|
|
9262
|
-
*
|
|
9263
|
-
* @example
|
|
9264
|
-
* <kpt-data-table [columns]="cols" [data]="rows" expandable>
|
|
9265
|
-
* <ng-template kptRowDetail let-row>
|
|
9266
|
-
* <div class="szczegoly">{{ row.opis }}</div>
|
|
9267
|
-
* </ng-template>
|
|
9268
|
-
* </kpt-data-table>
|
|
9269
|
-
*/
|
|
9270
|
-
class KptRowDetailDef {
|
|
9271
|
-
constructor() {
|
|
9272
|
-
this.template = inject(TemplateRef);
|
|
9251
|
+
return value.toString();
|
|
9252
|
+
if (Array.isArray(value))
|
|
9253
|
+
return value.map(toText).join(',');
|
|
9254
|
+
return '';
|
|
9255
|
+
default:
|
|
9256
|
+
return '';
|
|
9273
9257
|
}
|
|
9274
|
-
static { this.ɵfac = function KptRowDetailDef_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptRowDetailDef)(); }; }
|
|
9275
|
-
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: KptRowDetailDef, selectors: [["ng-template", "kptRowDetail", ""]] }); }
|
|
9276
9258
|
}
|
|
9277
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptRowDetailDef, [{
|
|
9278
|
-
type: Directive,
|
|
9279
|
-
args: [{
|
|
9280
|
-
selector: 'ng-template[kptRowDetail]',
|
|
9281
|
-
}]
|
|
9282
|
-
}], null, null); })();
|
|
9283
9259
|
|
|
9284
9260
|
/*
|
|
9285
9261
|
* Agregacje wiersza podsumowania (`<tfoot>`) — pure TS, wydzielone żeby dało się
|
|
@@ -9297,8 +9273,8 @@ function toNumber(value) {
|
|
|
9297
9273
|
if (typeof value === 'number')
|
|
9298
9274
|
return value;
|
|
9299
9275
|
if (typeof value === 'string' && value.trim() !== '')
|
|
9300
|
-
return parseFloat(value);
|
|
9301
|
-
return NaN;
|
|
9276
|
+
return Number.parseFloat(value);
|
|
9277
|
+
return Number.NaN;
|
|
9302
9278
|
}
|
|
9303
9279
|
/**
|
|
9304
9280
|
* Agreguje jedno pole po wierszach. `count` liczy wiersze; pozostałe funkcje pomijają
|
|
@@ -9328,6 +9304,137 @@ function aggregate(rows, field, fn) {
|
|
|
9328
9304
|
}
|
|
9329
9305
|
}
|
|
9330
9306
|
|
|
9307
|
+
/*
|
|
9308
|
+
* Dopasowanie wiersza do filtrów kolumn tabeli — pure TS, wydzielone żeby dało się
|
|
9309
|
+
* testować `node --test` bez ciągnięcia Angulara (jak `csv-export.ts` i `summary.ts`).
|
|
9310
|
+
* Komponent trzyma tylko stan filtrów; cała semantyka „czy komórka pasuje" jest tutaj.
|
|
9311
|
+
*/
|
|
9312
|
+
/** Data komórki w formacie `YYYY-MM-DD` — do porównań leksykograficznych z granicami zakresu. */
|
|
9313
|
+
function toIsoDate(value) {
|
|
9314
|
+
if (value instanceof Date) {
|
|
9315
|
+
const p = (n) => String(n).padStart(2, '0');
|
|
9316
|
+
return `${value.getFullYear()}-${p(value.getMonth() + 1)}-${p(value.getDate())}`;
|
|
9317
|
+
}
|
|
9318
|
+
return toText(value);
|
|
9319
|
+
}
|
|
9320
|
+
/** Filtr „pusty" (nie wybrano nic) przepuszcza każdy wiersz. */
|
|
9321
|
+
function isEmptyFilterValue(value) {
|
|
9322
|
+
return value == null || value === '' || (Array.isArray(value) && value.length === 0);
|
|
9323
|
+
}
|
|
9324
|
+
const matchesText = (cell, value) => toText(cell).toLowerCase().includes(toText(value).toLowerCase());
|
|
9325
|
+
const matchesNumber = (cell, value) => toText(cell).includes(toText(value));
|
|
9326
|
+
const matchesSelect = (cell, value) => {
|
|
9327
|
+
const picked = Array.isArray(value) ? value : [value];
|
|
9328
|
+
// Komórka-tablica (np. lista tagów/członków) → dopasuj, gdy zawiera dowolną z wybranych wartości.
|
|
9329
|
+
if (Array.isArray(cell))
|
|
9330
|
+
return cell.some((c) => picked.includes(c));
|
|
9331
|
+
return picked.includes(cell);
|
|
9332
|
+
};
|
|
9333
|
+
const matchesNumberRange = (cell, value) => {
|
|
9334
|
+
const { min, max } = value ?? {};
|
|
9335
|
+
const lo = min == null || min === '' ? null : Number.parseFloat(min);
|
|
9336
|
+
const hi = max == null || max === '' ? null : Number.parseFloat(max);
|
|
9337
|
+
if (lo === null && hi === null)
|
|
9338
|
+
return true;
|
|
9339
|
+
const num = toNumber(cell);
|
|
9340
|
+
if (Number.isNaN(num))
|
|
9341
|
+
return false;
|
|
9342
|
+
if (lo !== null && num < lo)
|
|
9343
|
+
return false;
|
|
9344
|
+
if (hi !== null && num > hi)
|
|
9345
|
+
return false;
|
|
9346
|
+
return true;
|
|
9347
|
+
};
|
|
9348
|
+
const matchesSlider = (cell, value) => {
|
|
9349
|
+
const [lo, hi] = value;
|
|
9350
|
+
const num = toNumber(cell);
|
|
9351
|
+
if (Number.isNaN(num))
|
|
9352
|
+
return false;
|
|
9353
|
+
return num >= lo && num <= hi;
|
|
9354
|
+
};
|
|
9355
|
+
const matchesDateRange = (cell, value) => {
|
|
9356
|
+
const { start, end } = value ?? {};
|
|
9357
|
+
if (!start && !end)
|
|
9358
|
+
return true;
|
|
9359
|
+
const iso = toIsoDate(cell);
|
|
9360
|
+
if (start && iso < start)
|
|
9361
|
+
return false;
|
|
9362
|
+
if (end && iso > end)
|
|
9363
|
+
return false;
|
|
9364
|
+
return true;
|
|
9365
|
+
};
|
|
9366
|
+
/** Mapa zamiast `switch` — `Record` po unii typów wymusza komplet, więc nie ma martwego `default`. */
|
|
9367
|
+
const MATCHERS = {
|
|
9368
|
+
text: matchesText,
|
|
9369
|
+
number: matchesNumber,
|
|
9370
|
+
select: matchesSelect,
|
|
9371
|
+
numberRange: matchesNumberRange,
|
|
9372
|
+
slider: matchesSlider,
|
|
9373
|
+
dateRange: matchesDateRange,
|
|
9374
|
+
};
|
|
9375
|
+
/** Czy komórka przechodzi filtr kolumny. Wartości pustych filtrów odsiewa `isEmptyFilterValue`. */
|
|
9376
|
+
function matchesColumnFilter(filter, cell, value) {
|
|
9377
|
+
return MATCHERS[filter.type](cell, value);
|
|
9378
|
+
}
|
|
9379
|
+
|
|
9380
|
+
/*
|
|
9381
|
+
* Escapowanie komórek CSV dla `exportCsv()` — pure TS, wydzielone żeby dało się
|
|
9382
|
+
* testować `node --test` bez ciągnięcia Angulara.
|
|
9383
|
+
*/
|
|
9384
|
+
// Znak startowy, który arkusz kalkulacyjny czyta jako początek formuły (CWE-1236).
|
|
9385
|
+
const FORMULA_PREFIX = /^[=+\-@\t\r]/;
|
|
9386
|
+
function stringifyCsvValue(value) {
|
|
9387
|
+
switch (typeof value) {
|
|
9388
|
+
case 'undefined':
|
|
9389
|
+
return '';
|
|
9390
|
+
case 'string':
|
|
9391
|
+
return value;
|
|
9392
|
+
case 'number':
|
|
9393
|
+
case 'boolean':
|
|
9394
|
+
case 'bigint':
|
|
9395
|
+
return String(value);
|
|
9396
|
+
default:
|
|
9397
|
+
if (value === null)
|
|
9398
|
+
return '';
|
|
9399
|
+
if (value instanceof Date)
|
|
9400
|
+
return value.toISOString();
|
|
9401
|
+
return JSON.stringify(value);
|
|
9402
|
+
}
|
|
9403
|
+
}
|
|
9404
|
+
/** Escapuje pojedynczą wartość komórki/nagłówka do bezpiecznego pola CSV (separator `;`). */
|
|
9405
|
+
function escapeCsvCell(value) {
|
|
9406
|
+
let text = stringifyCsvValue(value);
|
|
9407
|
+
// Wiodący `'` każe arkuszowi traktować komórkę jako tekst — sam znak nie jest wyświetlany.
|
|
9408
|
+
if (FORMULA_PREFIX.test(text))
|
|
9409
|
+
text = `'${text}`;
|
|
9410
|
+
return /[",\n;]/.test(text) ? `"${text.replaceAll('"', '""')}"` : text;
|
|
9411
|
+
}
|
|
9412
|
+
|
|
9413
|
+
/**
|
|
9414
|
+
* Szablon rozwijanego wiersza (row detail) dla `kpt-data-table`. Renderowany pod
|
|
9415
|
+
* wierszem po rozwinięciu. Kontekst: `$implicit` = wiersz. Wymaga `expandable`.
|
|
9416
|
+
*
|
|
9417
|
+
* @example
|
|
9418
|
+
* <kpt-data-table [columns]="cols" [data]="rows" expandable>
|
|
9419
|
+
* <ng-template kptRowDetail let-row>
|
|
9420
|
+
* <div class="szczegoly">{{ row.opis }}</div>
|
|
9421
|
+
* </ng-template>
|
|
9422
|
+
* </kpt-data-table>
|
|
9423
|
+
*/
|
|
9424
|
+
class KptRowDetailDef {
|
|
9425
|
+
constructor() {
|
|
9426
|
+
this.template = inject(TemplateRef);
|
|
9427
|
+
}
|
|
9428
|
+
static { this.ɵfac = function KptRowDetailDef_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptRowDetailDef)(); }; }
|
|
9429
|
+
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: KptRowDetailDef, selectors: [["ng-template", "kptRowDetail", ""]] }); }
|
|
9430
|
+
}
|
|
9431
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(KptRowDetailDef, [{
|
|
9432
|
+
type: Directive,
|
|
9433
|
+
args: [{
|
|
9434
|
+
selector: 'ng-template[kptRowDetail]',
|
|
9435
|
+
}]
|
|
9436
|
+
}], null, null); })();
|
|
9437
|
+
|
|
9331
9438
|
const _c0$e = ["scrollEl"];
|
|
9332
9439
|
const _c1$5 = ["theadEl"];
|
|
9333
9440
|
const _c2$2 = ["editorHost"];
|
|
@@ -9875,7 +9982,7 @@ const REM_PX = 16;
|
|
|
9875
9982
|
const CHECKBOX_FROZEN_W = 3; // rem
|
|
9876
9983
|
const EXPANDER_FROZEN_W = 2.5; // rem
|
|
9877
9984
|
/** Edytory renderujące panel w CDK Overlay — otwierane od razu i zatwierdzane na zamknięciu panelu. */
|
|
9878
|
-
const OVERLAY_EDITORS = ['date', 'select', 'multiselect'];
|
|
9985
|
+
const OVERLAY_EDITORS = new Set(['date', 'select', 'multiselect']);
|
|
9879
9986
|
/** Tablice (multiselect) porównujemy po zawartości, resztę po referencji. */
|
|
9880
9987
|
function sameEditValue(a, b) {
|
|
9881
9988
|
if (a === b)
|
|
@@ -10082,7 +10189,7 @@ class KptDataTable {
|
|
|
10082
10189
|
const cols = this.columns();
|
|
10083
10190
|
let rows = this.data();
|
|
10084
10191
|
if (query) {
|
|
10085
|
-
rows = rows.filter((row) => cols.some((col) =>
|
|
10192
|
+
rows = rows.filter((row) => cols.some((col) => toText(row[col.field]).toLowerCase().includes(query)));
|
|
10086
10193
|
}
|
|
10087
10194
|
if (this.hasColumnFilters()) {
|
|
10088
10195
|
rows = rows.filter((row) => this.matchesColumnFilters(row));
|
|
@@ -10106,7 +10213,7 @@ class KptDataTable {
|
|
|
10106
10213
|
return -1;
|
|
10107
10214
|
if (typeof av === 'number' && typeof bv === 'number')
|
|
10108
10215
|
return (av - bv) * sign;
|
|
10109
|
-
return
|
|
10216
|
+
return toText(av).localeCompare(toText(bv)) * sign;
|
|
10110
10217
|
});
|
|
10111
10218
|
}, /* @ts-ignore */
|
|
10112
10219
|
...(ngDevMode ? [{ debugName: "sorted" }] : /* istanbul ignore next */ []));
|
|
@@ -10169,15 +10276,16 @@ class KptDataTable {
|
|
|
10169
10276
|
const overrides = this.summaryValues() ?? {};
|
|
10170
10277
|
const map = new Map();
|
|
10171
10278
|
for (const col of this.visibleOrderedColumns()) {
|
|
10172
|
-
|
|
10279
|
+
const summary = col.summary;
|
|
10280
|
+
// Gotowa wartość z `summaryValues` wygrywa z wyliczeniem — i wystarcza sama w sobie.
|
|
10281
|
+
if (col.field in overrides) {
|
|
10282
|
+
map.set(col.field, this.formatSummary(overrides[col.field], summary?.format));
|
|
10173
10283
|
continue;
|
|
10174
|
-
|
|
10175
|
-
|
|
10176
|
-
|
|
10177
|
-
|
|
10178
|
-
|
|
10179
|
-
const format = col.summary?.format;
|
|
10180
|
-
map.set(col.field, format ? format(raw) : raw == null ? '' : String(raw));
|
|
10284
|
+
}
|
|
10285
|
+
if (!summary)
|
|
10286
|
+
continue;
|
|
10287
|
+
const raw = typeof summary.fn === 'function' ? summary.fn(rows) : aggregate(rows, col.field, summary.fn);
|
|
10288
|
+
map.set(col.field, this.formatSummary(raw, summary.format));
|
|
10181
10289
|
}
|
|
10182
10290
|
return map;
|
|
10183
10291
|
}, /* @ts-ignore */
|
|
@@ -10367,7 +10475,7 @@ class KptDataTable {
|
|
|
10367
10475
|
// poza edytorem zamyka panel, a więc zatwierdza i zamyka edycję — bez tego edytor z zamkniętym
|
|
10368
10476
|
// panelem potrafiłby zostać otwarty w nieskończoność.
|
|
10369
10477
|
const type = col.edit?.type;
|
|
10370
|
-
this.editorPanelOpen.set(!!type && OVERLAY_EDITORS.
|
|
10478
|
+
this.editorPanelOpen.set(!!type && OVERLAY_EDITORS.has(type));
|
|
10371
10479
|
}
|
|
10372
10480
|
/**
|
|
10373
10481
|
* Panel edytora zamknięty (wybór, klik poza, Esc) → zatwierdź. Celowo NIE wieszamy tego na
|
|
@@ -10454,73 +10562,23 @@ class KptDataTable {
|
|
|
10454
10562
|
const v = this.columnFilters()[col.field];
|
|
10455
10563
|
return v ?? [mn, mx];
|
|
10456
10564
|
}
|
|
10457
|
-
|
|
10458
|
-
if (value instanceof Date) {
|
|
10459
|
-
const p = (n) => String(n).padStart(2, '0');
|
|
10460
|
-
return `${value.getFullYear()}-${p(value.getMonth() + 1)}-${p(value.getDate())}`;
|
|
10461
|
-
}
|
|
10462
|
-
return String(value ?? '');
|
|
10463
|
-
}
|
|
10565
|
+
/** Semantyka dopasowania siedzi w `./column-filter` — tu zostaje tylko spięcie ze stanem. */
|
|
10464
10566
|
matchesColumnFilters(row) {
|
|
10465
10567
|
const filters = this.columnFilters();
|
|
10568
|
+
const cells = row;
|
|
10466
10569
|
return this.columns().every((col) => {
|
|
10467
|
-
const
|
|
10468
|
-
if (!
|
|
10570
|
+
const filter = col.filter;
|
|
10571
|
+
if (!filter)
|
|
10469
10572
|
return true;
|
|
10470
|
-
const
|
|
10471
|
-
if (
|
|
10573
|
+
const value = filters[col.field];
|
|
10574
|
+
if (isEmptyFilterValue(value))
|
|
10472
10575
|
return true;
|
|
10473
|
-
|
|
10474
|
-
switch (f.type) {
|
|
10475
|
-
case 'text':
|
|
10476
|
-
return String(cell ?? '').toLowerCase().includes(String(fv).toLowerCase());
|
|
10477
|
-
case 'number':
|
|
10478
|
-
return String(cell ?? '').includes(String(fv));
|
|
10479
|
-
case 'select': {
|
|
10480
|
-
const vals = Array.isArray(fv) ? fv : [fv];
|
|
10481
|
-
// Komórka-tablica (np. lista tagów/członków) → dopasuj, gdy zawiera dowolną z wybranych wartości.
|
|
10482
|
-
if (Array.isArray(cell))
|
|
10483
|
-
return cell.some((c) => vals.includes(c));
|
|
10484
|
-
return vals.includes(cell);
|
|
10485
|
-
}
|
|
10486
|
-
case 'numberRange': {
|
|
10487
|
-
const { min, max } = fv ?? {};
|
|
10488
|
-
const hasMin = min != null && min !== '';
|
|
10489
|
-
const hasMax = max != null && max !== '';
|
|
10490
|
-
if (!hasMin && !hasMax)
|
|
10491
|
-
return true;
|
|
10492
|
-
const num = typeof cell === 'number' ? cell : parseFloat(String(cell ?? ''));
|
|
10493
|
-
if (Number.isNaN(num))
|
|
10494
|
-
return false;
|
|
10495
|
-
if (hasMin && num < parseFloat(min))
|
|
10496
|
-
return false;
|
|
10497
|
-
if (hasMax && num > parseFloat(max))
|
|
10498
|
-
return false;
|
|
10499
|
-
return true;
|
|
10500
|
-
}
|
|
10501
|
-
case 'slider': {
|
|
10502
|
-
const [lo, hi] = fv;
|
|
10503
|
-
const num = typeof cell === 'number' ? cell : parseFloat(String(cell ?? ''));
|
|
10504
|
-
if (Number.isNaN(num))
|
|
10505
|
-
return false;
|
|
10506
|
-
return num >= lo && num <= hi;
|
|
10507
|
-
}
|
|
10508
|
-
case 'dateRange': {
|
|
10509
|
-
const { start, end } = fv ?? { start: '', end: '' };
|
|
10510
|
-
if (!start && !end)
|
|
10511
|
-
return true;
|
|
10512
|
-
const iso = KptDataTable.toIso(cell);
|
|
10513
|
-
if (start && iso < start)
|
|
10514
|
-
return false;
|
|
10515
|
-
if (end && iso > end)
|
|
10516
|
-
return false;
|
|
10517
|
-
return true;
|
|
10518
|
-
}
|
|
10519
|
-
default:
|
|
10520
|
-
return true;
|
|
10521
|
-
}
|
|
10576
|
+
return matchesColumnFilter(filter, cells[col.field], value);
|
|
10522
10577
|
});
|
|
10523
10578
|
}
|
|
10579
|
+
formatSummary(raw, format) {
|
|
10580
|
+
return format ? format(raw) : toText(raw);
|
|
10581
|
+
}
|
|
10524
10582
|
summaryText(field) {
|
|
10525
10583
|
return this.summaryTexts().get(field) ?? '';
|
|
10526
10584
|
}
|
|
@@ -10528,7 +10586,7 @@ class KptDataTable {
|
|
|
10528
10586
|
parseWidthPx(width) {
|
|
10529
10587
|
if (!width)
|
|
10530
10588
|
return 8 * REM_PX;
|
|
10531
|
-
const n = parseFloat(width);
|
|
10589
|
+
const n = Number.parseFloat(width);
|
|
10532
10590
|
if (Number.isNaN(n))
|
|
10533
10591
|
return 8 * REM_PX;
|
|
10534
10592
|
return width.trim().endsWith('px') ? n : n * REM_PX;
|
|
@@ -10692,7 +10750,7 @@ class KptDataTable {
|
|
|
10692
10750
|
'[style.--kpt-thead-offset]': "theadOffset() + 'px'",
|
|
10693
10751
|
}, template: "@if (filterable() || exportable()) {\n <div class=\"kpt-data-table__toolbar\">\n @if (filterable()) {\n <input\n class=\"kpt-data-table__filter\"\n type=\"search\"\n [attr.placeholder]=\"i18n.t('dataTable.search')\"\n [value]=\"filterText()\"\n (input)=\"onFilter($event)\"\n />\n }\n @if (exportable()) {\n <kpt-button variant=\"outline\" size=\"sm\" (click)=\"exportCsv()\">{{ i18n.t('dataTable.exportCsv') }}</kpt-button>\n }\n </div>\n}\n\n<div class=\"kpt-data-table__scroll\" #scrollEl [style.max-height]=\"scrollHeight()\" (scroll)=\"onScroll($event)\">\n <table\n class=\"kpt-data-table__table\"\n [class.kpt-data-table__table--frozen]=\"hasFrozen()\"\n [class.kpt-data-table__table--virtual]=\"virtualScroll()\"\n >\n <thead #theadEl>\n @if (hasColumnFilters() && filterRowPosition() === 'top') {\n <ng-container [ngTemplateOutlet]=\"filterRowTpl\" />\n }\n <tr>\n @if (hasRowDetail()) {\n <th class=\"kpt-data-table__expander\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"expanderStickyLeft()\"></th>\n }\n @if (selectable() === 'multiple') {\n <th class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"checkboxStickyLeft()\">\n <input\n type=\"checkbox\"\n [checked]=\"pageAllSelected()\"\n [indeterminate]=\"pageSomeSelected()\"\n (change)=\"toggleAllOnPage()\"\n [attr.aria-label]=\"i18n.t('dataTable.selectAll')\"\n />\n </th>\n } @else if (selectable() === 'single') {\n <th class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"checkboxStickyLeft()\"></th>\n }\n @for (col of visibleOrderedColumns(); track col.field) {\n <th\n [attr.draggable]=\"isColDraggable(col) ? true : null\"\n [style.width]=\"col.width\"\n [style.left.px]=\"frozenLeft(col.field)\"\n [attr.data-align]=\"col.align ?? 'start'\"\n [class.kpt-data-table__cell--frozen]=\"isFrozen(col.field)\"\n [class.kpt-data-table__th--sortable]=\"col.sortable\"\n [class.kpt-data-table__th--draggable]=\"isColDraggable(col)\"\n [class.kpt-data-table__th--dragover]=\"dragField() !== null && dragField() !== col.field && !col.frozen\"\n [attr.aria-sort]=\"ariaSort(col)\"\n (click)=\"toggleSort(col)\"\n (dragstart)=\"onColDragStart(col.field, $event)\"\n (dragover)=\"reorderable() ? onColDragOver(col.field, $event) : null\"\n (drop)=\"reorderable() ? onColDrop(col.field, $event) : null\"\n (dragend)=\"onColDragEnd()\"\n >\n @if (isColDraggable(col)) {\n <kpt-icon class=\"kpt-data-table__grip\" name=\"grip-vertical\" />\n }\n <span>{{ col.header }}</span>\n @if (col.sortable) {\n <kpt-icon\n class=\"kpt-data-table__sort\"\n [class.kpt-data-table__sort--active]=\"ariaSort(col) !== 'none'\"\n [name]=\"sortIconName(col)\"\n />\n }\n </th>\n }\n </tr>\n @if (hasColumnFilters() && filterRowPosition() === 'bottom') {\n <ng-container [ngTemplateOutlet]=\"filterRowTpl\" />\n }\n </thead>\n <tbody>\n @if (loading()) {\n <tr><td class=\"kpt-data-table__state\" [attr.colspan]=\"colspan()\">{{ i18n.t('dataTable.loading') }}</td></tr>\n } @else if (displayCount() === 0) {\n <tr><td class=\"kpt-data-table__state\" [attr.colspan]=\"colspan()\">{{ emptyText() }}</td></tr>\n } @else if (virtualScroll()) {\n @if (topPad() > 0) {\n <tr class=\"kpt-data-table__spacer\" aria-hidden=\"true\"><td [attr.colspan]=\"colspan()\" [style.height.px]=\"topPad()\"></td></tr>\n }\n @for (row of virtualRows(); track trackRow(row)) {\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n }\n @if (bottomPad() > 0) {\n <tr class=\"kpt-data-table__spacer\" aria-hidden=\"true\"><td [attr.colspan]=\"colspan()\" [style.height.px]=\"bottomPad()\"></td></tr>\n }\n } @else {\n @for (row of paged(); track trackRow(row)) {\n <ng-container [ngTemplateOutlet]=\"rowTpl\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n }\n }\n </tbody>\n @if (hasSummary() && !loading() && displayCount() > 0) {\n <tfoot>\n <tr class=\"kpt-data-table__summary\">\n @if (summaryLabelSpan() > 0) {\n <th\n class=\"kpt-data-table__summary-label\"\n [attr.colspan]=\"summaryLabelSpan()\"\n [class.kpt-data-table__cell--frozen]=\"hasFrozen()\"\n [style.left.px]=\"hasFrozen() ? 0 : null\"\n >\n {{ summaryLabelText() }}\n </th>\n }\n @for (col of visibleOrderedColumns(); track col.field; let i = $index) {\n @if (i >= summaryStartIndex()) {\n <td\n [attr.data-align]=\"col.align ?? 'end'\"\n [style.width]=\"col.width\"\n [style.left.px]=\"frozenLeft(col.field)\"\n [class.kpt-data-table__cell--frozen]=\"isFrozen(col.field)\"\n >\n {{ summaryText(col.field) }}\n </td>\n }\n }\n </tr>\n </tfoot>\n }\n </table>\n</div>\n\n<ng-template #rowTpl let-row>\n <tr\n [class.kpt-data-table__row--selected]=\"isSelected(row)\"\n [class.kpt-data-table__row--expanded]=\"hasRowDetail() && isExpanded(row)\"\n [style.height.px]=\"virtualScroll() ? rowHeight() : null\"\n (click)=\"onRowClick(row)\"\n >\n @if (hasRowDetail()) {\n <td class=\"kpt-data-table__expander\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"expanderStickyLeft()\">\n <button\n type=\"button\"\n class=\"kpt-data-table__expander-btn\"\n [class.kpt-data-table__expander-btn--open]=\"isExpanded(row)\"\n [attr.aria-expanded]=\"isExpanded(row)\"\n [attr.aria-label]=\"i18n.t('dataTable.expandRow')\"\n (click)=\"$event.stopPropagation(); toggleExpand(row)\"\n >\n <kpt-icon name=\"chevron-right\" />\n </button>\n </td>\n }\n @if (selectable() !== 'none') {\n <td class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"checkboxStickyLeft()\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(row)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRow(row)\"\n [attr.aria-label]=\"i18n.t('dataTable.selectRow')\"\n />\n </td>\n }\n @for (col of visibleOrderedColumns(); track col.field) {\n <td\n [attr.data-align]=\"col.align ?? 'start'\"\n [style.left.px]=\"frozenLeft(col.field)\"\n [class.kpt-data-table__cell--frozen]=\"isFrozen(col.field)\"\n [class.kpt-data-table__cell--editable]=\"isEditable(col) && !isEditingCell(row, col.field)\"\n [attr.tabindex]=\"isEditable(col) && !isEditingCell(row, col.field) ? 0 : null\"\n [attr.aria-label]=\"isEditable(col) && !isEditingCell(row, col.field) ? i18n.t('dataTable.editCell', { column: col.header }) : null\"\n (click)=\"isEditable(col) ? startEdit(row, col, $event) : null\"\n (keydown.enter)=\"isEditable(col) && !isEditingCell(row, col.field) ? startEdit(row, col, $event) : null\"\n >\n @if (isEditingCell(row, col.field)) {\n <div\n class=\"kpt-data-table__editor\"\n #editorHost\n (click)=\"$event.stopPropagation()\"\n (focusout)=\"onEditorFocusOut($event)\"\n >\n @if (cellEditTemplate(col.field); as etpl) {\n <ng-container\n [ngTemplateOutlet]=\"etpl\"\n [ngTemplateOutletContext]=\"{ $implicit: editingValue(), row, commit: commitEditValue, cancel: cancelEdit }\"\n />\n } @else {\n @switch (col.edit?.type) {\n @case ('text') {\n <kpt-input\n [value]=\"$any(editingValue()) ?? ''\"\n [placeholder]=\"col.edit.placeholder ?? ''\"\n (valueChange)=\"editingValue.set($event)\"\n (keydown.enter)=\"commitEdit()\"\n (keydown.escape)=\"cancelEdit()\"\n />\n }\n @case ('number') {\n <kpt-input-number\n [value]=\"$any(editingValue())\"\n [min]=\"col.edit.min\"\n [max]=\"col.edit.max\"\n [step]=\"col.edit.step ?? 1\"\n (valueChange)=\"editingValue.set($event)\"\n (keydown.enter)=\"commitEdit()\"\n (keydown.escape)=\"cancelEdit()\"\n />\n }\n @case ('date') {\n <kpt-datepicker\n [value]=\"$any(editingValue()) ?? ''\"\n (valueChange)=\"editingValue.set($event)\"\n [open]=\"editorPanelOpen()\"\n (openChange)=\"onEditorPanelToggle($event)\"\n />\n }\n @case ('select') {\n <kpt-select\n [options]=\"col.edit.options ?? []\"\n [placeholder]=\"col.edit.placeholder ?? ''\"\n [value]=\"editingValue()\"\n (valueChange)=\"editingValue.set($event)\"\n [open]=\"editorPanelOpen()\"\n (openChange)=\"onEditorPanelToggle($event)\"\n />\n }\n @case ('multiselect') {\n <kpt-select\n multiple\n filter\n [options]=\"col.edit.options ?? []\"\n [placeholder]=\"col.edit.placeholder ?? ''\"\n [value]=\"editingValue()\"\n (valueChange)=\"editingValue.set($event)\"\n [open]=\"editorPanelOpen()\"\n (openChange)=\"onEditorPanelToggle($event)\"\n />\n }\n }\n }\n </div>\n } @else if (cellTemplate(col.field); as tpl) {\n <ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{ $implicit: row, value: getValue(row, col.field) }\"\n />\n } @else {\n {{ getValue(row, col.field) }}\n }\n </td>\n }\n </tr>\n @if (hasRowDetail() && isExpanded(row) && !virtualScroll()) {\n <tr class=\"kpt-data-table__detail-row\">\n <td class=\"kpt-data-table__detail\" [attr.colspan]=\"colspan()\">\n <ng-container [ngTemplateOutlet]=\"rowDetailTpl()\" [ngTemplateOutletContext]=\"{ $implicit: row }\" />\n </td>\n </tr>\n }\n</ng-template>\n\n<ng-template #filterRowTpl>\n <tr class=\"kpt-data-table__filter-row\">\n @if (hasRowDetail()) {\n <th class=\"kpt-data-table__expander\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"expanderStickyLeft()\"></th>\n }\n @if (selectable() !== 'none') {\n <th class=\"kpt-data-table__checkbox\" [class.kpt-data-table__cell--frozen]=\"hasFrozen()\" [style.left.px]=\"checkboxStickyLeft()\"></th>\n }\n @for (col of visibleOrderedColumns(); track col.field) {\n <th\n [style.width]=\"col.width\"\n [style.left.px]=\"frozenLeft(col.field)\"\n [attr.data-align]=\"col.align ?? 'start'\"\n [class.kpt-data-table__cell--frozen]=\"isFrozen(col.field)\"\n >\n @switch (col.filter?.type) {\n @case ('text') {\n <input\n class=\"kpt-data-table__fcell\"\n type=\"search\"\n [attr.placeholder]=\"col.filter.placeholder || ''\"\n [attr.aria-label]=\"i18n.t('dataTable.filter', { column: col.header })\"\n [value]=\"$any(columnFilters()[col.field]) || ''\"\n (input)=\"setColumnFilter(col.field, $any($event.target).value)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n @case ('number') {\n <input\n class=\"kpt-data-table__fcell\"\n type=\"text\"\n inputmode=\"numeric\"\n [attr.placeholder]=\"col.filter.placeholder || ''\"\n [attr.aria-label]=\"i18n.t('dataTable.filter', { column: col.header })\"\n [value]=\"$any(columnFilters()[col.field]) || ''\"\n (input)=\"onNumberFilter(col.field, $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n }\n @case ('select') {\n <kpt-select\n [options]=\"col.filter.options || []\"\n [multiple]=\"!!col.filter.multiple\"\n filter\n [placeholder]=\"col.filter.placeholder || i18n.t('dataTable.all')\"\n [value]=\"columnFilters()[col.field] ?? null\"\n (valueChange)=\"setColumnFilter(col.field, $event)\"\n />\n }\n @case ('numberRange') {\n <div class=\"kpt-data-table__frange\">\n <input\n class=\"kpt-data-table__fcell\"\n type=\"text\"\n inputmode=\"numeric\"\n [attr.placeholder]=\"i18n.t('dataTable.min')\"\n [attr.aria-label]=\"i18n.t('dataTable.filterMin', { column: col.header })\"\n [value]=\"rangeVal(col.field).min\"\n (input)=\"setRangeFilter(col.field, 'min', $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n <input\n class=\"kpt-data-table__fcell\"\n type=\"text\"\n inputmode=\"numeric\"\n [attr.placeholder]=\"i18n.t('dataTable.max')\"\n [attr.aria-label]=\"i18n.t('dataTable.filterMax', { column: col.header })\"\n [value]=\"rangeVal(col.field).max\"\n (input)=\"setRangeFilter(col.field, 'max', $event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n }\n @case ('slider') {\n <div class=\"kpt-data-table__fslider\" (click)=\"$event.stopPropagation()\">\n <kpt-slider\n range\n [min]=\"col.filter.min ?? 0\"\n [max]=\"col.filter.max ?? 100\"\n [step]=\"col.filter.step ?? 1\"\n [value]=\"sliderVal(col)\"\n (valueChange)=\"setColumnFilter(col.field, $event)\"\n showValue\n />\n </div>\n }\n @case ('dateRange') {\n <kpt-date-range\n [placeholder]=\"col.filter.placeholder || i18n.t('dataTable.dateRange')\"\n [value]=\"$any(columnFilters()[col.field]) || { start: '', end: '' }\"\n (valueChange)=\"setColumnFilter(col.field, $event)\"\n />\n }\n }\n </th>\n }\n </tr>\n</ng-template>\n\n@if (pageSize() > 0 && !virtualScroll()) {\n <div class=\"kpt-data-table__pager\">\n <ng-content select=\"[kptPaginatorActions]\" />\n <kpt-paginator\n [length]=\"filteredCount()\"\n [pageIndex]=\"pageIndex()\"\n (pageIndexChange)=\"pageIndex.set($event)\"\n [pageSize]=\"pageSizeState()\"\n (pageSizeChange)=\"pageSizeState.set($event)\"\n [pageSizeOptions]=\"pageSizeOptions()\"\n />\n </div>\n}\n", styles: ["@layer kpt.components{.kpt-data-table{display:flex;flex-direction:column;background:var(--kpt-table-bg);color:var(--kpt-table-fg);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-table-border);border-radius:var(--kpt-table-radius, .75rem);overflow:hidden;flex-grow:1}.kpt-data-table__toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--kpt-space-3, .75rem);padding:var(--kpt-space-3, .75rem);border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-table-border)}.kpt-data-table__filter{width:100%;max-width:20rem;height:2.25rem;padding-inline:var(--kpt-space-3, .75rem);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-form-field-border);border-radius:var(--kpt-form-field-radius, .5rem);background:var(--kpt-form-field-bg);color:var(--kpt-form-field-text)}.kpt-data-table__filter:focus-visible{outline:none;border-color:var(--kpt-form-field-border-focus);box-shadow:0 0 0 2px color-mix(in oklch,var(--kpt-form-field-border-focus) 30%,transparent)}.kpt-data-table__scroll{overflow:auto}.kpt-data-table__pager{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem)}.kpt-data-table__pager [kptPaginatorActions]{margin-inline-start:.5rem}.kpt-data-table__pager kpt-paginator{flex:1 1 auto;min-width:0}.kpt-data-table__table{width:100%;border-collapse:collapse;font-size:var(--kpt-font-size-sm, .875rem)}.kpt-data-table__table--frozen{width:max-content;min-width:100%}.kpt-data-table__table th,.kpt-data-table__table td{padding:var(--kpt-table-cell-padding, .75rem);text-align:start;border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-table-border)}.kpt-data-table__table th[data-align=center],.kpt-data-table__table td[data-align=center]{text-align:center}.kpt-data-table__table th[data-align=end],.kpt-data-table__table td[data-align=end]{text-align:end}.kpt-data-table__table thead th{position:sticky;top:0;z-index:1;background:var(--kpt-table-header-bg);color:var(--kpt-table-header-fg);font-weight:var(--kpt-font-weight-semibold, 600);white-space:nowrap;-webkit-user-select:none;user-select:none}.kpt-data-table__table thead tr:nth-child(2) th{top:var(--kpt-thead-offset, 0px)}.kpt-data-table__table tfoot th,.kpt-data-table__table tfoot td{position:sticky;bottom:0;z-index:1;background:var(--kpt-table-summary-bg, var(--kpt-table-header-bg));color:var(--kpt-table-header-fg);font-weight:var(--kpt-font-weight-semibold, 600);white-space:nowrap;border-bottom:0;border-top:var(--kpt-border-width-thin, 1px) solid var(--kpt-table-border)}.kpt-data-table__table .kpt-data-table__summary-label{text-align:end}.kpt-data-table__filter-row th{padding:var(--kpt-space-2, .5rem);font-weight:var(--kpt-font-weight-normal, 400);cursor:auto}.kpt-data-table__fcell{width:100%;height:2rem;padding-inline:var(--kpt-space-2, .5rem);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-form-field-border);border-radius:var(--kpt-form-field-radius, .5rem);background:var(--kpt-form-field-bg);color:var(--kpt-form-field-text);font:inherit}.kpt-data-table__fcell:focus-visible{outline:none;border-color:var(--kpt-form-field-border-focus);box-shadow:0 0 0 2px color-mix(in oklch,var(--kpt-form-field-border-focus) 30%,transparent)}.kpt-data-table__filter-row kpt-select,.kpt-data-table__filter-row kpt-date-range{display:block;width:100%;font-weight:var(--kpt-font-weight-normal, 400)}.kpt-data-table__frange{display:flex;gap:var(--kpt-space-2, .5rem)}.kpt-data-table__frange .kpt-data-table__fcell{min-width:0}.kpt-data-table__fslider .kpt-slider-host{width:100%}.kpt-data-table__fslider .kpt-slider__value{min-width:auto;font-size:var(--kpt-font-size-xs, .75rem);color:var(--kpt-color-on-surface-muted)}.kpt-data-table__th--sortable{cursor:pointer}.kpt-data-table__th--sortable:hover{color:var(--kpt-color-on-surface)}.kpt-data-table__cell--editable{cursor:pointer}.kpt-data-table__cell--editable:hover{background:var(--kpt-table-row-hover)}.kpt-data-table__cell--editable:focus-visible{outline:var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);outline-offset:-2px}.kpt-data-table__editor{display:block;min-width:8rem}.kpt-data-table__editor .kpt-input-number-host{max-width:6.5rem}.kpt-data-table__editor .kpt-input-number__btn{width:1.75rem}.kpt-data-table__sort{margin-inline-start:.35em;opacity:.35}.kpt-data-table__sort--active{opacity:1}.kpt-data-table__th--draggable{cursor:grab}.kpt-data-table__th--draggable:active{cursor:grabbing}.kpt-data-table__th--dragover{box-shadow:inset 2px 0 0 0 var(--kpt-color-primary)}.kpt-data-table__grip{margin-inline-end:.4em;opacity:.45}.kpt-data-table__checkbox{width:1px;white-space:nowrap;text-align:center}.kpt-data-table__checkbox input[type=checkbox]{appearance:none;-webkit-appearance:none;position:relative;display:inline-block;width:1.15rem;height:1.15rem;margin:0;vertical-align:middle;cursor:pointer;border:var(--kpt-border-width-medium, 2px) solid var(--kpt-form-field-border);border-radius:var(--kpt-radius-sm, .25rem);background:var(--kpt-form-field-bg);transition:background-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),border-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-data-table__checkbox input[type=checkbox]:after{content:\"\";position:absolute;inset:0;opacity:0;background-color:var(--kpt-color-on-primary);transition:opacity var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard);-webkit-mask:no-repeat center/.85rem;mask:no-repeat center/.85rem}.kpt-data-table__checkbox input[type=checkbox]:checked,.kpt-data-table__checkbox input[type=checkbox]:indeterminate{background:var(--kpt-color-primary);border-color:var(--kpt-color-primary)}.kpt-data-table__checkbox input[type=checkbox]:checked:after{opacity:1;-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M13 4.5 6.5 11 3 7.5' fill='none' stroke='%23000' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M13 4.5 6.5 11 3 7.5' fill='none' stroke='%23000' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\")}.kpt-data-table__checkbox input[type=checkbox]:indeterminate:after{opacity:1;-webkit-mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8h9' fill='none' stroke='%23000' stroke-width='2.25' stroke-linecap='round'/%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8h9' fill='none' stroke='%23000' stroke-width='2.25' stroke-linecap='round'/%3E%3C/svg%3E\")}.kpt-data-table__checkbox input[type=checkbox]:focus-visible{outline:var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);outline-offset:2px}.kpt-data-table__expander{width:2.5rem;min-width:2.5rem;text-align:center;white-space:nowrap}.kpt-data-table__expander-btn{display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;padding:0;border:none;border-radius:var(--kpt-radius-sm, .25rem);background:transparent;color:var(--kpt-color-on-surface-muted);cursor:pointer;transition:background-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard),color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-data-table__expander-btn kpt-icon{display:inline-flex;transition:transform var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-data-table__expander-btn:hover{background:var(--kpt-table-row-hover);color:var(--kpt-color-on-surface)}.kpt-data-table__expander-btn:focus-visible{outline:var(--kpt-border-width-medium, 2px) solid var(--kpt-color-focus-ring);outline-offset:2px}.kpt-data-table__expander-btn--open{color:var(--kpt-color-primary)}.kpt-data-table__expander-btn--open kpt-icon{transform:rotate(90deg)}.kpt-data-table__detail-row>.kpt-data-table__detail{padding:var(--kpt-space-4, 1rem);background:var(--kpt-table-detail-bg, var(--kpt-color-surface-variant, var(--kpt-table-row-hover)));border-bottom:var(--kpt-border-width-thin, 1px) solid var(--kpt-table-border);box-shadow:inset 3px 0 0 0 var(--kpt-color-primary)}.kpt-data-table tbody tr{transition:background-color var(--kpt-motion-duration-fast, .12s) var(--kpt-motion-easing-standard)}.kpt-data-table tbody tr:hover{background:var(--kpt-table-row-hover)}.kpt-data-table tbody tr.kpt-data-table__detail-row:hover{background:transparent}.kpt-data-table__row--selected{background:var(--kpt-table-row-selected)!important}.kpt-data-table__row--expanded{background:var(--kpt-table-row-hover)}.kpt-data-table__table--frozen .kpt-data-table__checkbox{width:3rem;min-width:3rem}.kpt-data-table__table--frozen .kpt-data-table__expander{width:2.5rem;min-width:2.5rem}.kpt-data-table__cell--frozen{position:sticky;z-index:1;background:var(--kpt-table-bg);border-inline-end:var(--kpt-border-width-thin, 1px) solid var(--kpt-table-border)}.kpt-data-table thead th.kpt-data-table__cell--frozen{z-index:3;background:var(--kpt-table-header-bg)}.kpt-data-table tfoot th.kpt-data-table__cell--frozen,.kpt-data-table tfoot td.kpt-data-table__cell--frozen{z-index:3;background:var(--kpt-table-summary-bg, var(--kpt-table-header-bg))}.kpt-data-table tbody tr:hover .kpt-data-table__cell--frozen{background:var(--kpt-table-row-hover)}.kpt-data-table__row--selected.kpt-data-table__row--selected .kpt-data-table__cell--frozen,.kpt-data-table tbody tr.kpt-data-table__row--selected .kpt-data-table__cell--frozen{background:var(--kpt-table-row-selected)}.kpt-data-table__state{padding:var(--kpt-space-8, 2rem)!important;text-align:center!important;color:var(--kpt-color-on-surface-muted)}.kpt-data-table__table--virtual td{padding-block:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.kpt-data-table__spacer td{padding:0!important;border:0!important}.kpt-data-table tbody tr:last-child td{border-bottom:0}}\n"] }]
|
|
10694
10752
|
}], () => [], { columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], filterable: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterable", required: false }] }], filterRowPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterRowPosition", required: false }] }], pageSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSize", required: false }] }], pageSizeOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "pageSizeOptions", required: false }] }], selectable: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectable", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyMessage", required: false }] }], rowKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowKey", required: false }] }], scrollHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollHeight", required: false }] }], virtualScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "virtualScroll", required: false }] }], rowHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowHeight", required: false }] }], reorderable: [{ type: i0.Input, args: [{ isSignal: true, alias: "reorderable", required: false }] }], exportable: [{ type: i0.Input, args: [{ isSignal: true, alias: "exportable", required: false }] }], exportFilename: [{ type: i0.Input, args: [{ isSignal: true, alias: "exportFilename", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], totalRecords: [{ type: i0.Input, args: [{ isSignal: true, alias: "totalRecords", required: false }] }], expandable: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandable", required: false }] }], multiExpand: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiExpand", required: false }] }], summaryLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "summaryLabel", required: false }] }], summaryValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "summaryValues", required: false }] }], selection: [{ type: i0.Input, args: [{ isSignal: true, alias: "selection", required: false }] }, { type: i0.Output, args: ["selectionChange"] }], expandedRows: [{ type: i0.Input, args: [{ isSignal: true, alias: "expandedRows", required: false }] }, { type: i0.Output, args: ["expandedRowsChange"] }], hiddenFields: [{ type: i0.Input, args: [{ isSignal: true, alias: "hiddenFields", required: false }] }, { type: i0.Output, args: ["hiddenFieldsChange"] }], rowClick: [{ type: i0.Output, args: ["rowClick"] }], lazyLoad: [{ type: i0.Output, args: ["lazyLoad"] }], cellEdit: [{ type: i0.Output, args: ["cellEdit"] }], scrollEl: [{ type: i0.ViewChild, args: ['scrollEl', { isSignal: true }] }], theadEl: [{ type: i0.ViewChild, args: ['theadEl', { isSignal: true }] }], editorHost: [{ type: i0.ViewChild, args: ['editorHost', { isSignal: true }] }], cellDefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => KptCellDef), { isSignal: true }] }], cellEditDefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => KptCellEditDef), { isSignal: true }] }], rowDetailDef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => KptRowDetailDef), { isSignal: true }] }] }); })();
|
|
10695
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptDataTable, { className: "KptDataTable", filePath: "lib/data-table/data-table.component.ts", lineNumber:
|
|
10753
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptDataTable, { className: "KptDataTable", filePath: "lib/data-table/data-table.component.ts", lineNumber: 157 }); })();
|
|
10696
10754
|
|
|
10697
10755
|
const _c0$d = a0 => ({ $implicit: a0, level: 0 });
|
|
10698
10756
|
const _c1$4 = (a0, a1) => ({ $implicit: a0, level: a1 });
|
|
@@ -12071,7 +12129,7 @@ function KptMenu_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
|
12071
12129
|
* Wymaga stylów overlay CDK: `import '@angular/cdk/overlay-prebuilt.css';`
|
|
12072
12130
|
*
|
|
12073
12131
|
* @example
|
|
12074
|
-
* <kpt-menu [items]="items" (
|
|
12132
|
+
* <kpt-menu [items]="items" (selected)="onSelect($event)">
|
|
12075
12133
|
* <kpt-button variant="outline">Opcje</kpt-button>
|
|
12076
12134
|
* </kpt-menu>
|
|
12077
12135
|
*/
|
|
@@ -12079,7 +12137,7 @@ class KptMenu {
|
|
|
12079
12137
|
constructor() {
|
|
12080
12138
|
this.items = input([], /* @ts-ignore */
|
|
12081
12139
|
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
12082
|
-
this.
|
|
12140
|
+
this.selected = output();
|
|
12083
12141
|
this.open = signal(false, /* @ts-ignore */
|
|
12084
12142
|
...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
12085
12143
|
this.positions = [
|
|
@@ -12097,11 +12155,11 @@ class KptMenu {
|
|
|
12097
12155
|
pick(item) {
|
|
12098
12156
|
if (item.disabled)
|
|
12099
12157
|
return;
|
|
12100
|
-
this.
|
|
12158
|
+
this.selected.emit(item);
|
|
12101
12159
|
this.close();
|
|
12102
12160
|
}
|
|
12103
12161
|
static { this.ɵfac = function KptMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptMenu)(); }; }
|
|
12104
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptMenu, selectors: [["kpt-menu"]], hostAttrs: [1, "kpt-menu-host"], inputs: { items: [1, "items"] }, outputs: {
|
|
12162
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptMenu, selectors: [["kpt-menu"]], hostAttrs: [1, "kpt-menu-host"], inputs: { items: [1, "items"] }, outputs: { selected: "selected" }, ngContentSelectors: _c0$5, decls: 4, vars: 4, consts: [["origin", "cdkOverlayOrigin"], ["cdkOverlayOrigin", "", 1, "kpt-menu__trigger", 3, "click"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop"], ["role", "menu", 1, "kpt-menu__panel"], ["role", "separator", 1, "kpt-menu__separator"], ["role", "presentation", 1, "kpt-menu__header"], ["type", "button", "role", "menuitem", 1, "kpt-menu__item", 3, "kpt-menu__item--danger", "disabled"], ["size", "sm", 3, "src", "name", "icon"], [3, "name"], [1, "kpt-menu__text"], [1, "kpt-menu__label"], [1, "kpt-menu__description"], ["type", "button", "role", "menuitem", 1, "kpt-menu__item", 3, "click", "disabled"], [1, "kpt-menu__badge", 3, "value", "variant"]], template: function KptMenu_Template(rf, ctx) { if (rf & 1) {
|
|
12105
12163
|
i0.ɵɵprojectionDef();
|
|
12106
12164
|
i0.ɵɵelementStart(0, "span", 1, 0);
|
|
12107
12165
|
i0.ɵɵlistener("click", function KptMenu_Template_span_click_0_listener() { return ctx.toggle(); });
|
|
@@ -12176,7 +12234,7 @@ class KptMenu {
|
|
|
12176
12234
|
</div>
|
|
12177
12235
|
</ng-template>
|
|
12178
12236
|
`, host: { class: 'kpt-menu-host' }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-menu-host{display:inline-flex}.kpt-menu__trigger{display:inline-flex;cursor:pointer}.kpt-menu__panel{min-width:11rem;padding:.25rem;background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-menu__item{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:.5rem .6rem;border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font:inherit;font-size:var(--kpt-font-size-sm, .875rem);text-align:start;cursor:pointer}.kpt-menu__item:hover:not(:disabled){background:var(--kpt-color-surface-variant)}.kpt-menu__item:disabled{opacity:.45;cursor:not-allowed}.kpt-menu__item--danger{color:var(--kpt-color-danger)}.kpt-menu__item kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-menu__item--danger kpt-icon{color:var(--kpt-color-danger)}.kpt-menu__header{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:.5rem .6rem;font-size:var(--kpt-font-size-sm, .875rem);cursor:default}.kpt-menu__header .kpt-menu__label{font-weight:var(--kpt-font-weight-semibold, 600)}.kpt-menu__header kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-menu__text{display:flex;flex-direction:column;min-width:0}.kpt-menu__label,.kpt-menu__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-menu__description{color:var(--kpt-color-on-surface-muted);font-size:var(--kpt-font-size-xs, .75rem)}.kpt-menu__badge{margin-inline-start:auto}.kpt-menu__separator{height:1px;margin:.25rem 0;background:var(--kpt-color-border)}}\n"] }]
|
|
12179
|
-
}], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }],
|
|
12237
|
+
}], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }] }); })();
|
|
12180
12238
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptMenu, { className: "KptMenu", filePath: "lib/menu/menu.component.ts", lineNumber: 116 }); })();
|
|
12181
12239
|
|
|
12182
12240
|
const _c0$4 = [[["", "kptPopoverTrigger", ""]], "*"];
|
|
@@ -12629,7 +12687,7 @@ function KptContextMenu_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
12629
12687
|
* Menu kontekstowe (PPM) na obszarze projekcji. Panel pozycjonowany do kursora.
|
|
12630
12688
|
*
|
|
12631
12689
|
* @example
|
|
12632
|
-
* <kpt-context-menu [items]="items" (
|
|
12690
|
+
* <kpt-context-menu [items]="items" (selected)="onSelect($event)">
|
|
12633
12691
|
* <div class="obszar">Kliknij prawym przyciskiem</div>
|
|
12634
12692
|
* </kpt-context-menu>
|
|
12635
12693
|
*/
|
|
@@ -12637,7 +12695,7 @@ class KptContextMenu {
|
|
|
12637
12695
|
constructor() {
|
|
12638
12696
|
this.items = input([], /* @ts-ignore */
|
|
12639
12697
|
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
12640
|
-
this.
|
|
12698
|
+
this.selected = output();
|
|
12641
12699
|
this.open = signal(false, /* @ts-ignore */
|
|
12642
12700
|
...(ngDevMode ? [{ debugName: "open" }] : /* istanbul ignore next */ []));
|
|
12643
12701
|
this.x = signal(0, /* @ts-ignore */
|
|
@@ -12657,11 +12715,11 @@ class KptContextMenu {
|
|
|
12657
12715
|
pick(item) {
|
|
12658
12716
|
if (item.disabled)
|
|
12659
12717
|
return;
|
|
12660
|
-
this.
|
|
12718
|
+
this.selected.emit(item);
|
|
12661
12719
|
this.close();
|
|
12662
12720
|
}
|
|
12663
12721
|
static { this.ɵfac = function KptContextMenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptContextMenu)(); }; }
|
|
12664
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptContextMenu, selectors: [["kpt-context-menu"]], hostAttrs: [1, "kpt-context-menu-host"], inputs: { items: [1, "items"] }, outputs: {
|
|
12722
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptContextMenu, selectors: [["kpt-context-menu"]], hostAttrs: [1, "kpt-context-menu-host"], inputs: { items: [1, "items"] }, outputs: { selected: "selected" }, ngContentSelectors: _c0$2, decls: 3, vars: 1, consts: [[1, "kpt-context-menu__area", 3, "contextmenu"], [1, "kpt-context-menu__backdrop", 3, "click", "contextmenu"], ["role", "menu", 1, "kpt-context-menu__panel"], ["role", "separator", 1, "kpt-context-menu__separator"], ["role", "presentation", 1, "kpt-context-menu__header"], ["type", "button", "role", "menuitem", 1, "kpt-context-menu__item", 3, "kpt-context-menu__item--danger", "disabled"], ["size", "sm", 3, "src", "name", "icon"], [3, "name"], [1, "kpt-context-menu__text"], [1, "kpt-context-menu__label"], [1, "kpt-context-menu__description"], ["type", "button", "role", "menuitem", 1, "kpt-context-menu__item", 3, "click", "disabled"], [1, "kpt-context-menu__badge", 3, "value", "variant"]], template: function KptContextMenu_Template(rf, ctx) { if (rf & 1) {
|
|
12665
12723
|
i0.ɵɵprojectionDef();
|
|
12666
12724
|
i0.ɵɵelementStart(0, "div", 0);
|
|
12667
12725
|
i0.ɵɵlistener("contextmenu", function KptContextMenu_Template_div_contextmenu_0_listener($event) { return ctx.onContext($event); });
|
|
@@ -12734,7 +12792,7 @@ class KptContextMenu {
|
|
|
12734
12792
|
</div>
|
|
12735
12793
|
}
|
|
12736
12794
|
`, host: { class: 'kpt-context-menu-host' }, styles: ["@charset \"UTF-8\";@layer kpt.components{.kpt-context-menu-host{display:block}.kpt-context-menu__area{display:contents}.kpt-context-menu__backdrop{position:fixed;inset:0;z-index:var(--kpt-z-overlay, 1000)}.kpt-context-menu__panel{position:fixed;z-index:calc(var(--kpt-z-overlay, 1000) + 1);min-width:11rem;padding:var(--kpt-space-1, .25rem);background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-context-menu__item{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font-size:var(--kpt-font-size-sm, .875rem);text-align:left;cursor:pointer}.kpt-context-menu__item:hover:not(:disabled){background:var(--kpt-color-muted)}.kpt-context-menu__item:disabled{opacity:.5;cursor:not-allowed}.kpt-context-menu__item--danger{color:var(--kpt-color-danger)}.kpt-context-menu__header{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);font-size:var(--kpt-font-size-sm, .875rem);cursor:default}.kpt-context-menu__header .kpt-context-menu__label{font-weight:var(--kpt-font-weight-semibold, 600)}.kpt-context-menu__header kpt-icon{color:var(--kpt-color-on-surface-muted)}.kpt-context-menu__text{display:flex;flex-direction:column;min-width:0}.kpt-context-menu__label,.kpt-context-menu__description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpt-context-menu__description{color:var(--kpt-color-on-surface-muted);font-size:var(--kpt-font-size-xs, .75rem)}.kpt-context-menu__badge{margin-inline-start:auto}.kpt-context-menu__separator{height:1px;margin:var(--kpt-space-1, .25rem) 0;background:var(--kpt-color-border)}}\n"] }]
|
|
12737
|
-
}], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }],
|
|
12795
|
+
}], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }] }); })();
|
|
12738
12796
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptContextMenu, { className: "KptContextMenu", filePath: "lib/context-menu/context-menu.component.ts", lineNumber: 82 }); })();
|
|
12739
12797
|
|
|
12740
12798
|
function KptMenubar_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -12824,13 +12882,13 @@ function KptMenubar_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
12824
12882
|
* `import '@angular/cdk/overlay-prebuilt.css';`
|
|
12825
12883
|
*
|
|
12826
12884
|
* @example
|
|
12827
|
-
* <kpt-menubar [items]="items" (
|
|
12885
|
+
* <kpt-menubar [items]="items" (selected)="onSelect($event)" />
|
|
12828
12886
|
*/
|
|
12829
12887
|
class KptMenubar {
|
|
12830
12888
|
constructor() {
|
|
12831
12889
|
this.items = input([], /* @ts-ignore */
|
|
12832
12890
|
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
12833
|
-
this.
|
|
12891
|
+
this.selected = output();
|
|
12834
12892
|
this.openIndex = signal(null, /* @ts-ignore */
|
|
12835
12893
|
...(ngDevMode ? [{ debugName: "openIndex" }] : /* istanbul ignore next */ []));
|
|
12836
12894
|
this.positions = [
|
|
@@ -12845,21 +12903,21 @@ class KptMenubar {
|
|
|
12845
12903
|
this.openIndex.update((cur) => (cur === i ? null : i));
|
|
12846
12904
|
}
|
|
12847
12905
|
else {
|
|
12848
|
-
this.
|
|
12906
|
+
this.selected.emit(item);
|
|
12849
12907
|
this.closeAll();
|
|
12850
12908
|
}
|
|
12851
12909
|
}
|
|
12852
12910
|
pick(item) {
|
|
12853
12911
|
if (item.disabled)
|
|
12854
12912
|
return;
|
|
12855
|
-
this.
|
|
12913
|
+
this.selected.emit(item);
|
|
12856
12914
|
this.closeAll();
|
|
12857
12915
|
}
|
|
12858
12916
|
closeAll() {
|
|
12859
12917
|
this.openIndex.set(null);
|
|
12860
12918
|
}
|
|
12861
12919
|
static { this.ɵfac = function KptMenubar_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptMenubar)(); }; }
|
|
12862
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptMenubar, selectors: [["kpt-menubar"]], hostAttrs: [1, "kpt-menubar-host"], inputs: { items: [1, "items"] }, outputs: {
|
|
12920
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptMenubar, selectors: [["kpt-menubar"]], hostAttrs: [1, "kpt-menubar-host"], inputs: { items: [1, "items"] }, outputs: { selected: "selected" }, decls: 3, vars: 0, consts: [["origin", "cdkOverlayOrigin"], ["role", "menubar", 1, "kpt-menubar"], [1, "kpt-menubar__group"], ["type", "button", "role", "menuitem", "cdkOverlayOrigin", "", 1, "kpt-menubar__top", 3, "click", "disabled"], [3, "name"], ["name", "chevron-down", 1, "kpt-menubar__caret"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop"], ["role", "menu", 1, "kpt-menubar__dropdown"], ["role", "separator", 1, "kpt-menubar__separator"], ["type", "button", "role", "menuitem", 1, "kpt-menubar__item", 3, "kpt-menubar__item--danger", "disabled"], ["type", "button", "role", "menuitem", 1, "kpt-menubar__item", 3, "click", "disabled"]], template: function KptMenubar_Template(rf, ctx) { if (rf & 1) {
|
|
12863
12921
|
i0.ɵɵelementStart(0, "nav", 1);
|
|
12864
12922
|
i0.ɵɵrepeaterCreate(1, KptMenubar_For_2_Template, 8, 10, "div", 2, i0.ɵɵrepeaterTrackByIndex);
|
|
12865
12923
|
i0.ɵɵelementEnd();
|
|
@@ -12923,7 +12981,7 @@ class KptMenubar {
|
|
|
12923
12981
|
}
|
|
12924
12982
|
</nav>
|
|
12925
12983
|
`, host: { class: 'kpt-menubar-host' }, styles: ["@layer kpt.components{.kpt-menubar-host{display:block}.kpt-menubar{display:flex;align-items:center;gap:var(--kpt-space-1, .25rem);padding:var(--kpt-space-1, .25rem);background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem)}.kpt-menubar__group{display:inline-flex}.kpt-menubar__top{display:inline-flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font-size:var(--kpt-font-size-sm, .875rem);cursor:pointer}.kpt-menubar__top:hover:not(:disabled),.kpt-menubar__top.is-open{background:var(--kpt-color-muted)}.kpt-menubar__top:disabled{opacity:.5;cursor:not-allowed}.kpt-menubar__caret{opacity:.6}.kpt-menubar__dropdown{min-width:12rem;padding:var(--kpt-space-1, .25rem);background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-menubar__item{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font-size:var(--kpt-font-size-sm, .875rem);text-align:left;cursor:pointer}.kpt-menubar__item:hover:not(:disabled){background:var(--kpt-color-muted)}.kpt-menubar__item:disabled{opacity:.5;cursor:not-allowed}.kpt-menubar__item--danger{color:var(--kpt-color-danger)}.kpt-menubar__separator{height:1px;margin:var(--kpt-space-1, .25rem) 0;background:var(--kpt-color-border)}}\n"] }]
|
|
12926
|
-
}], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }],
|
|
12984
|
+
}], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }] }); })();
|
|
12927
12985
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptMenubar, { className: "KptMenubar", filePath: "lib/menubar/menubar.component.ts", lineNumber: 76 }); })();
|
|
12928
12986
|
|
|
12929
12987
|
const _c0$1 = () => [];
|
|
@@ -13013,13 +13071,13 @@ function KptMegamenu_ng_template_4_Template(rf, ctx) { if (rf & 1) {
|
|
|
13013
13071
|
* `import '@angular/cdk/overlay-prebuilt.css';`
|
|
13014
13072
|
*
|
|
13015
13073
|
* @example
|
|
13016
|
-
* <kpt-megamenu [items]="items" (
|
|
13074
|
+
* <kpt-megamenu [items]="items" (selected)="onSelect($event)" />
|
|
13017
13075
|
*/
|
|
13018
13076
|
class KptMegamenu {
|
|
13019
13077
|
constructor() {
|
|
13020
13078
|
this.items = input([], /* @ts-ignore */
|
|
13021
13079
|
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
13022
|
-
this.
|
|
13080
|
+
this.selected = output();
|
|
13023
13081
|
this.openIndex = signal(null, /* @ts-ignore */
|
|
13024
13082
|
...(ngDevMode ? [{ debugName: "openIndex" }] : /* istanbul ignore next */ []));
|
|
13025
13083
|
this.positions = [
|
|
@@ -13037,14 +13095,14 @@ class KptMegamenu {
|
|
|
13037
13095
|
pick(link) {
|
|
13038
13096
|
if (link.disabled)
|
|
13039
13097
|
return;
|
|
13040
|
-
this.
|
|
13098
|
+
this.selected.emit(link);
|
|
13041
13099
|
this.closeAll();
|
|
13042
13100
|
}
|
|
13043
13101
|
closeAll() {
|
|
13044
13102
|
this.openIndex.set(null);
|
|
13045
13103
|
}
|
|
13046
13104
|
static { this.ɵfac = function KptMegamenu_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptMegamenu)(); }; }
|
|
13047
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptMegamenu, selectors: [["kpt-megamenu"]], hostAttrs: [1, "kpt-megamenu-host"], inputs: { items: [1, "items"] }, outputs: {
|
|
13105
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptMegamenu, selectors: [["kpt-megamenu"]], hostAttrs: [1, "kpt-megamenu-host"], inputs: { items: [1, "items"] }, outputs: { selected: "selected" }, decls: 5, vars: 4, consts: [["origin", "cdkOverlayOrigin"], ["role", "menubar", "cdkOverlayOrigin", "", 1, "kpt-megamenu"], ["type", "button", "role", "menuitem", 1, "kpt-megamenu__top", 3, "is-open"], ["cdkConnectedOverlay", "", "cdkConnectedOverlayBackdropClass", "cdk-overlay-transparent-backdrop", 3, "backdropClick", "detach", "cdkConnectedOverlayOrigin", "cdkConnectedOverlayOpen", "cdkConnectedOverlayPositions", "cdkConnectedOverlayHasBackdrop"], ["type", "button", "role", "menuitem", 1, "kpt-megamenu__top", 3, "click"], [3, "name"], ["name", "chevron-down", 1, "kpt-megamenu__caret"], ["role", "menu", 1, "kpt-megamenu__panel"], [1, "kpt-megamenu__column"], [1, "kpt-megamenu__col-title"], ["type", "button", 1, "kpt-megamenu__link", 3, "disabled"], ["type", "button", 1, "kpt-megamenu__link", 3, "click", "disabled"]], template: function KptMegamenu_Template(rf, ctx) { if (rf & 1) {
|
|
13048
13106
|
i0.ɵɵelementStart(0, "nav", 1, 0);
|
|
13049
13107
|
i0.ɵɵrepeaterCreate(2, KptMegamenu_For_3_Template, 5, 4, "button", 2, i0.ɵɵrepeaterTrackByIndex);
|
|
13050
13108
|
i0.ɵɵelementEnd();
|
|
@@ -13102,7 +13160,7 @@ class KptMegamenu {
|
|
|
13102
13160
|
</div>
|
|
13103
13161
|
</ng-template>
|
|
13104
13162
|
`, host: { class: 'kpt-megamenu-host' }, styles: ["@layer kpt.components{.kpt-megamenu-host{display:block}.kpt-megamenu{position:relative;display:flex;align-items:center;gap:var(--kpt-space-1, .25rem);padding:var(--kpt-space-1, .25rem);background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem)}.kpt-megamenu__top{display:inline-flex;align-items:center;gap:var(--kpt-space-2, .5rem);padding:var(--kpt-space-2, .5rem) var(--kpt-space-3, .75rem);border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font-size:var(--kpt-font-size-sm, .875rem);cursor:pointer}.kpt-megamenu__top:hover,.kpt-megamenu__top.is-open{background:var(--kpt-color-muted)}.kpt-megamenu__caret{opacity:.6}.kpt-megamenu__panel{display:flex;gap:var(--kpt-space-6, 1.5rem);min-width:min(40rem,90vw);padding:var(--kpt-space-4, 1rem);background:var(--kpt-color-surface-raised);border:var(--kpt-border-width-thin, 1px) solid var(--kpt-color-border);border-radius:var(--kpt-radius-md, .5rem);box-shadow:var(--kpt-elevation-3)}.kpt-megamenu__column{min-width:9rem}.kpt-megamenu__col-title{margin-bottom:var(--kpt-space-2, .5rem);font-size:var(--kpt-font-size-xs, .75rem);font-weight:var(--kpt-font-weight-semibold, 600);text-transform:uppercase;letter-spacing:.04em;color:var(--kpt-color-on-surface-muted)}.kpt-megamenu__link{display:flex;align-items:center;gap:var(--kpt-space-2, .5rem);width:100%;padding:var(--kpt-space-2, .5rem);border:0;border-radius:var(--kpt-radius-sm, .25rem);background:none;color:var(--kpt-color-on-surface);font-size:var(--kpt-font-size-sm, .875rem);text-align:left;cursor:pointer}.kpt-megamenu__link:hover:not(:disabled){background:var(--kpt-color-muted)}.kpt-megamenu__link:disabled{opacity:.5;cursor:not-allowed}}\n"] }]
|
|
13105
|
-
}], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }],
|
|
13163
|
+
}], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }] }); })();
|
|
13106
13164
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptMegamenu, { className: "KptMegamenu", filePath: "lib/megamenu/megamenu.component.ts", lineNumber: 66 }); })();
|
|
13107
13165
|
|
|
13108
13166
|
/**
|
|
@@ -13324,7 +13382,7 @@ function KptSpeedDial_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
|
13324
13382
|
* Speed dial — FAB rozwijający zestaw akcji. Buduje na `kpt-fab`.
|
|
13325
13383
|
*
|
|
13326
13384
|
* @example
|
|
13327
|
-
* <kpt-speed-dial [items]="actions" direction="up" (
|
|
13385
|
+
* <kpt-speed-dial [items]="actions" direction="up" (selected)="onAction($event)" />
|
|
13328
13386
|
*/
|
|
13329
13387
|
class KptSpeedDial {
|
|
13330
13388
|
constructor() {
|
|
@@ -13337,7 +13395,7 @@ class KptSpeedDial {
|
|
|
13337
13395
|
/** Etykieta a11y FAB (stan zamknięty); bez wartości używa i18n (`speedDial.actions`). */
|
|
13338
13396
|
this.ariaLabel = input(/* @ts-ignore */
|
|
13339
13397
|
...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
13340
|
-
this.
|
|
13398
|
+
this.selected = output();
|
|
13341
13399
|
this.i18n = inject(KptI18n);
|
|
13342
13400
|
this.effectiveAriaLabel = computed(() => this.ariaLabel() ?? this.i18n.t('speedDial.actions'), /* @ts-ignore */
|
|
13343
13401
|
...(ngDevMode ? [{ debugName: "effectiveAriaLabel" }] : /* istanbul ignore next */ []));
|
|
@@ -13353,11 +13411,11 @@ class KptSpeedDial {
|
|
|
13353
13411
|
pick(item) {
|
|
13354
13412
|
if (item.disabled)
|
|
13355
13413
|
return;
|
|
13356
|
-
this.
|
|
13414
|
+
this.selected.emit(item);
|
|
13357
13415
|
this.close();
|
|
13358
13416
|
}
|
|
13359
13417
|
static { this.ɵfac = function KptSpeedDial_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || KptSpeedDial)(); }; }
|
|
13360
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptSpeedDial, selectors: [["kpt-speed-dial"]], hostAttrs: [1, "kpt-speed-dial-host"], inputs: { items: [1, "items"], direction: [1, "direction"], icon: [1, "icon"], ariaLabel: [1, "ariaLabel"] }, outputs: {
|
|
13418
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: KptSpeedDial, selectors: [["kpt-speed-dial"]], hostAttrs: [1, "kpt-speed-dial-host"], inputs: { items: [1, "items"], direction: [1, "direction"], icon: [1, "icon"], ariaLabel: [1, "ariaLabel"] }, outputs: { selected: "selected" }, decls: 8, vars: 6, consts: [[1, "kpt-speed-dial"], [1, "kpt-speed-dial__actions"], ["type", "button", 1, "kpt-speed-dial__action", 3, "disabled"], [3, "click", "ariaLabel"], [1, "kpt-speed-dial__trigger-icon"], [3, "name"], [1, "kpt-speed-dial__backdrop"], ["type", "button", 1, "kpt-speed-dial__action", 3, "click", "disabled"], [1, "kpt-speed-dial__label"], [1, "kpt-speed-dial__backdrop", 3, "click"]], template: function KptSpeedDial_Template(rf, ctx) { if (rf & 1) {
|
|
13361
13419
|
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1);
|
|
13362
13420
|
i0.ɵɵrepeaterCreate(2, KptSpeedDial_For_3_Template, 3, 4, "button", 2, i0.ɵɵrepeaterTrackByIndex);
|
|
13363
13421
|
i0.ɵɵelementEnd();
|
|
@@ -13398,7 +13456,7 @@ class KptSpeedDial {
|
|
|
13398
13456
|
</div>
|
|
13399
13457
|
@if (open()) { <div class="kpt-speed-dial__backdrop" (click)="close()"></div> }
|
|
13400
13458
|
`, host: { class: 'kpt-speed-dial-host' }, styles: ["@layer kpt.components{.kpt-speed-dial-host{display:inline-block}.kpt-speed-dial{position:relative;display:inline-flex;z-index:calc(var(--kpt-z-overlay, 1000) + 1)}.kpt-speed-dial__trigger-icon{display:inline-flex;transition:transform .2s ease}.kpt-speed-dial.is-open .kpt-speed-dial__trigger-icon{transform:rotate(45deg)}.kpt-speed-dial__actions{position:absolute;display:flex;gap:var(--kpt-space-2, .5rem);opacity:0;pointer-events:none;transition:opacity .15s ease}.kpt-speed-dial.is-open .kpt-speed-dial__actions{opacity:1;pointer-events:auto}.kpt-speed-dial[data-direction=up] .kpt-speed-dial__actions{flex-direction:column-reverse;bottom:calc(100% + .5rem);left:50%;transform:translate(-50%)}.kpt-speed-dial[data-direction=down] .kpt-speed-dial__actions{flex-direction:column;top:calc(100% + .5rem);left:50%;transform:translate(-50%)}.kpt-speed-dial[data-direction=left] .kpt-speed-dial__actions{flex-direction:row-reverse;right:calc(100% + .5rem);top:50%;transform:translateY(-50%)}.kpt-speed-dial[data-direction=right] .kpt-speed-dial__actions{flex-direction:row;left:calc(100% + .5rem);top:50%;transform:translateY(-50%)}.kpt-speed-dial__action{display:inline-flex;align-items:center;gap:var(--kpt-space-2, .5rem);height:2.5rem;padding-inline:var(--kpt-space-3, .75rem);border:0;border-radius:999px;background:var(--kpt-color-surface-raised);color:var(--kpt-color-on-surface);box-shadow:var(--kpt-elevation-2);cursor:pointer;white-space:nowrap}.kpt-speed-dial__action:hover:not(:disabled){background:var(--kpt-color-muted)}.kpt-speed-dial__action:disabled{opacity:.5;cursor:not-allowed}.kpt-speed-dial__label{font-size:var(--kpt-font-size-sm, .875rem)}.kpt-speed-dial__backdrop{position:fixed;inset:0;z-index:var(--kpt-z-overlay, 1000)}}\n"] }]
|
|
13401
|
-
}], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }],
|
|
13459
|
+
}], null, { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }] }); })();
|
|
13402
13460
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(KptSpeedDial, { className: "KptSpeedDial", filePath: "lib/speed-dial/speed-dial.component.ts", lineNumber: 39 }); })();
|
|
13403
13461
|
|
|
13404
13462
|
/*
|