codexly-ui 0.19.9 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/codexly-ui.mjs +206 -24
- package/fesm2022/codexly-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/codexly-ui.d.ts +53 -13
package/fesm2022/codexly-ui.mjs
CHANGED
|
@@ -7710,7 +7710,7 @@ function isSameDay$1(a, b) {
|
|
|
7710
7710
|
a.getMonth() === b.getMonth() &&
|
|
7711
7711
|
a.getDate() === b.getDate();
|
|
7712
7712
|
}
|
|
7713
|
-
function startOfDay$
|
|
7713
|
+
function startOfDay$2(d) {
|
|
7714
7714
|
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
7715
7715
|
}
|
|
7716
7716
|
class ClxDatepickerComponent {
|
|
@@ -7807,10 +7807,10 @@ class ClxDatepickerComponent {
|
|
|
7807
7807
|
_calendarDays = computed(() => {
|
|
7808
7808
|
const year = this._cursorYear();
|
|
7809
7809
|
const month = this._cursorMonth();
|
|
7810
|
-
const today = startOfDay$
|
|
7811
|
-
const selected = this._value() ? startOfDay$
|
|
7812
|
-
const min = this.minDate() ? startOfDay$
|
|
7813
|
-
const max = this.maxDate() ? startOfDay$
|
|
7810
|
+
const today = startOfDay$2(new Date());
|
|
7811
|
+
const selected = this._value() ? startOfDay$2(this._value()) : null;
|
|
7812
|
+
const min = this.minDate() ? startOfDay$2(this.minDate()) : null;
|
|
7813
|
+
const max = this.maxDate() ? startOfDay$2(this.maxDate()) : null;
|
|
7814
7814
|
const firstDay = new Date(year, month, 1);
|
|
7815
7815
|
const lastDay = new Date(year, month + 1, 0);
|
|
7816
7816
|
const days = [];
|
|
@@ -7882,15 +7882,15 @@ class ClxDatepickerComponent {
|
|
|
7882
7882
|
this._cursorYear.set(y);
|
|
7883
7883
|
}
|
|
7884
7884
|
_selectDate(date) {
|
|
7885
|
-
const d = startOfDay$
|
|
7885
|
+
const d = startOfDay$2(date);
|
|
7886
7886
|
this._value.set(d);
|
|
7887
7887
|
this._onChange(d);
|
|
7888
7888
|
this._closePanel();
|
|
7889
7889
|
}
|
|
7890
7890
|
_selectToday() {
|
|
7891
|
-
const today = startOfDay$
|
|
7892
|
-
const min = this.minDate() ? startOfDay$
|
|
7893
|
-
const max = this.maxDate() ? startOfDay$
|
|
7891
|
+
const today = startOfDay$2(new Date());
|
|
7892
|
+
const min = this.minDate() ? startOfDay$2(this.minDate()) : null;
|
|
7893
|
+
const max = this.maxDate() ? startOfDay$2(this.maxDate()) : null;
|
|
7894
7894
|
if ((min && today < min) || (max && today > max))
|
|
7895
7895
|
return;
|
|
7896
7896
|
this._selectDate(today);
|
|
@@ -7904,7 +7904,7 @@ class ClxDatepickerComponent {
|
|
|
7904
7904
|
}
|
|
7905
7905
|
writeValue(val) {
|
|
7906
7906
|
this._cvaConnected = true;
|
|
7907
|
-
const d = val ? startOfDay$
|
|
7907
|
+
const d = val ? startOfDay$2(val) : null;
|
|
7908
7908
|
this._value.set(d);
|
|
7909
7909
|
if (d) {
|
|
7910
7910
|
this._cursorYear.set(d.getFullYear());
|
|
@@ -8427,7 +8427,7 @@ const MONTH_NAMES_ES = [
|
|
|
8427
8427
|
'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre',
|
|
8428
8428
|
];
|
|
8429
8429
|
const DAY_LABELS = ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'];
|
|
8430
|
-
function startOfDay(d) {
|
|
8430
|
+
function startOfDay$1(d) {
|
|
8431
8431
|
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
8432
8432
|
}
|
|
8433
8433
|
function isSameDay(a, b) {
|
|
@@ -8455,9 +8455,9 @@ function addMonths(year, month, delta) {
|
|
|
8455
8455
|
return { year: y, month: m };
|
|
8456
8456
|
}
|
|
8457
8457
|
function buildCalendar(year, month, minDate, maxDate) {
|
|
8458
|
-
const today = startOfDay(new Date());
|
|
8459
|
-
const min = minDate ? startOfDay(minDate) : null;
|
|
8460
|
-
const max = maxDate ? startOfDay(maxDate) : null;
|
|
8458
|
+
const today = startOfDay$1(new Date());
|
|
8459
|
+
const min = minDate ? startOfDay$1(minDate) : null;
|
|
8460
|
+
const max = maxDate ? startOfDay$1(maxDate) : null;
|
|
8461
8461
|
const firstDay = new Date(year, month, 1);
|
|
8462
8462
|
const lastDay = new Date(year, month + 1, 0);
|
|
8463
8463
|
const days = [];
|
|
@@ -8477,8 +8477,8 @@ function buildCalendar(year, month, minDate, maxDate) {
|
|
|
8477
8477
|
return days;
|
|
8478
8478
|
}
|
|
8479
8479
|
const DATE_PRESETS = [
|
|
8480
|
-
{ label: 'Hoy', range: () => { const t = startOfDay(new Date()); return { from: t, to: t }; } },
|
|
8481
|
-
{ label: 'Esta semana', range: () => { const t = startOfDay(new Date()); const d = t.getDay(); const f = new Date(t); f.setDate(t.getDate() - d); const e = new Date(f); e.setDate(f.getDate() + 6); return { from: f, to: e }; } },
|
|
8480
|
+
{ label: 'Hoy', range: () => { const t = startOfDay$1(new Date()); return { from: t, to: t }; } },
|
|
8481
|
+
{ label: 'Esta semana', range: () => { const t = startOfDay$1(new Date()); const d = t.getDay(); const f = new Date(t); f.setDate(t.getDate() - d); const e = new Date(f); e.setDate(f.getDate() + 6); return { from: f, to: e }; } },
|
|
8482
8482
|
{ label: 'Este mes', range: () => { const t = new Date(); return { from: new Date(t.getFullYear(), t.getMonth(), 1), to: new Date(t.getFullYear(), t.getMonth() + 1, 0) }; } },
|
|
8483
8483
|
{ label: 'Mes anterior', range: () => { const t = new Date(); return { from: new Date(t.getFullYear(), t.getMonth() - 1, 1), to: new Date(t.getFullYear(), t.getMonth(), 0) }; } },
|
|
8484
8484
|
{ label: 'Último trimestre', range: () => { const t = new Date(); const q = Math.floor(t.getMonth() / 3); return { from: new Date(t.getFullYear(), (q - 1) * 3, 1), to: new Date(t.getFullYear(), q * 3, 0) }; } },
|
|
@@ -8521,8 +8521,8 @@ class ClxDateRangePickerComponent {
|
|
|
8521
8521
|
untracked(() => {
|
|
8522
8522
|
this._committed.set(v);
|
|
8523
8523
|
if (v) {
|
|
8524
|
-
this._draftFrom.set(startOfDay(v.from));
|
|
8525
|
-
this._draftTo.set(startOfDay(v.to));
|
|
8524
|
+
this._draftFrom.set(startOfDay$1(v.from));
|
|
8525
|
+
this._draftTo.set(startOfDay$1(v.to));
|
|
8526
8526
|
this._cursorYear.set(v.from.getFullYear());
|
|
8527
8527
|
this._cursorMonth.set(v.from.getMonth());
|
|
8528
8528
|
}
|
|
@@ -8591,7 +8591,7 @@ class ClxDateRangePickerComponent {
|
|
|
8591
8591
|
const base = 'w-9 h-9 flex items-center justify-center text-sm transition-colors focus:outline-none relative';
|
|
8592
8592
|
if (cell.isDisabled)
|
|
8593
8593
|
return `${base} text-gray-200 cursor-not-allowed rounded-full`;
|
|
8594
|
-
const d = startOfDay(cell.date);
|
|
8594
|
+
const d = startOfDay$1(cell.date);
|
|
8595
8595
|
const from = this._draftFrom();
|
|
8596
8596
|
const to = this._draftTo();
|
|
8597
8597
|
const hover = this._hoverDate();
|
|
@@ -8629,7 +8629,7 @@ class ClxDateRangePickerComponent {
|
|
|
8629
8629
|
_formatShort(d) { return formatShort(d); }
|
|
8630
8630
|
// ── Selection logic ────────────────────────────────────────────────────────
|
|
8631
8631
|
_selectDate(date) {
|
|
8632
|
-
const d = startOfDay(date);
|
|
8632
|
+
const d = startOfDay$1(date);
|
|
8633
8633
|
const from = this._draftFrom();
|
|
8634
8634
|
// Reset and start new if no from, or both already set, or clicked before from
|
|
8635
8635
|
if (!from || (from && this._draftTo()) || isBefore(d, from)) {
|
|
@@ -8644,7 +8644,7 @@ class ClxDateRangePickerComponent {
|
|
|
8644
8644
|
}
|
|
8645
8645
|
_onHover(date) {
|
|
8646
8646
|
if (this._draftFrom() && !this._draftTo()) {
|
|
8647
|
-
this._hoverDate.set(startOfDay(date));
|
|
8647
|
+
this._hoverDate.set(startOfDay$1(date));
|
|
8648
8648
|
}
|
|
8649
8649
|
}
|
|
8650
8650
|
_applyPreset(preset) {
|
|
@@ -8718,8 +8718,8 @@ class ClxDateRangePickerComponent {
|
|
|
8718
8718
|
const r = val ?? null;
|
|
8719
8719
|
this._committed.set(r);
|
|
8720
8720
|
if (r) {
|
|
8721
|
-
this._draftFrom.set(startOfDay(r.from));
|
|
8722
|
-
this._draftTo.set(startOfDay(r.to));
|
|
8721
|
+
this._draftFrom.set(startOfDay$1(r.from));
|
|
8722
|
+
this._draftTo.set(startOfDay$1(r.to));
|
|
8723
8723
|
this._cursorYear.set(r.from.getFullYear());
|
|
8724
8724
|
this._cursorMonth.set(r.from.getMonth());
|
|
8725
8725
|
}
|
|
@@ -16030,6 +16030,188 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
16030
16030
|
}]
|
|
16031
16031
|
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], retryLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "retryLabel", required: false }] }], backLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "backLabel", required: false }] }], errorId: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorId", required: false }] }], retry: [{ type: i0.Output, args: ["retry"] }], back: [{ type: i0.Output, args: ["back"] }] } });
|
|
16032
16032
|
|
|
16033
|
+
/** Time formatting shared by clx-page-maintenance and clx-maintenance-banner (es-CO, 12 h). */
|
|
16034
|
+
const TIME = new Intl.DateTimeFormat('es-CO', { hour: 'numeric', minute: '2-digit' });
|
|
16035
|
+
const DAY = new Intl.DateTimeFormat('es-CO', { weekday: 'long', day: 'numeric', month: 'short' });
|
|
16036
|
+
function toDate(value) {
|
|
16037
|
+
if (!value)
|
|
16038
|
+
return null;
|
|
16039
|
+
const d = value instanceof Date ? value : new Date(value);
|
|
16040
|
+
return isNaN(d.getTime()) ? null : d;
|
|
16041
|
+
}
|
|
16042
|
+
/** "11:30 p. m." — empty string when there is no valid date. */
|
|
16043
|
+
function formatClxTime(value) {
|
|
16044
|
+
const d = toDate(value);
|
|
16045
|
+
return d ? TIME.format(d) : '';
|
|
16046
|
+
}
|
|
16047
|
+
/** "hoy de 11:00 p. m. a 11:30 p. m." · "mañana de …" · "el jueves, 23 oct de …" ·
|
|
16048
|
+
* spanning midnight: "hoy de 11:00 p. m. a mañana 1:00 a. m.". */
|
|
16049
|
+
function formatClxWindow(start, end, now = new Date()) {
|
|
16050
|
+
const s = toDate(start);
|
|
16051
|
+
const e = toDate(end);
|
|
16052
|
+
if (!s || !e)
|
|
16053
|
+
return '';
|
|
16054
|
+
const day = (d) => {
|
|
16055
|
+
const diff = Math.round((startOfDay(d) - startOfDay(now)) / 86_400_000);
|
|
16056
|
+
if (diff === 0)
|
|
16057
|
+
return 'hoy';
|
|
16058
|
+
if (diff === 1)
|
|
16059
|
+
return 'mañana';
|
|
16060
|
+
return 'el ' + DAY.format(d);
|
|
16061
|
+
};
|
|
16062
|
+
const sameDay = startOfDay(s) === startOfDay(e);
|
|
16063
|
+
return sameDay
|
|
16064
|
+
? `${day(s)} de ${TIME.format(s)} a ${TIME.format(e)}`
|
|
16065
|
+
: `${day(s)} de ${TIME.format(s)} a ${day(e)} ${TIME.format(e)}`;
|
|
16066
|
+
}
|
|
16067
|
+
function startOfDay(d) {
|
|
16068
|
+
return new Date(d.getFullYear(), d.getMonth(), d.getDate()).getTime();
|
|
16069
|
+
}
|
|
16070
|
+
|
|
16071
|
+
/** Full-page "we're under maintenance" state (503). Same layout as clx-page-server-error, in the
|
|
16072
|
+
* brand yellow. No buttons: the host app removes it by itself when the service is back. */
|
|
16073
|
+
class ClxPageMaintenanceComponent {
|
|
16074
|
+
title = input('Estamos en mantenimiento', ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
16075
|
+
description = input('Estamos actualizando la plataforma para darte un mejor servicio. Vuelve en unos minutos.', ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
|
|
16076
|
+
/** Estimated end (ISO string or Date). Empty → no "Volvemos a las…" pill. */
|
|
16077
|
+
until = input(null, ...(ngDevMode ? [{ debugName: "until" }] : /* istanbul ignore next */ []));
|
|
16078
|
+
liveLabel = input('Esta página se actualiza sola cuando volvamos', ...(ngDevMode ? [{ debugName: "liveLabel" }] : /* istanbul ignore next */ []));
|
|
16079
|
+
showCode = input(true, ...(ngDevMode ? [{ debugName: "showCode" }] : /* istanbul ignore next */ []));
|
|
16080
|
+
untilLabel = computed(() => formatClxTime(this.until()), ...(ngDevMode ? [{ debugName: "untilLabel" }] : /* istanbul ignore next */ []));
|
|
16081
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxPageMaintenanceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16082
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxPageMaintenanceComponent, isStandalone: true, selector: "clx-page-maintenance", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, until: { classPropertyName: "until", publicName: "until", isSignal: true, isRequired: false, transformFunction: null }, liveLabel: { classPropertyName: "liveLabel", publicName: "liveLabel", isSignal: true, isRequired: false, transformFunction: null }, showCode: { classPropertyName: "showCode", publicName: "showCode", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "status", "aria-live": "polite" }, classAttribute: "flex flex-col items-center justify-center min-h-[60vh] px-6 text-center text-sm" }, ngImport: i0, template: `
|
|
16083
|
+
<div class="w-20 h-20 rounded-2xl bg-yellow-50 flex items-center justify-center mb-6">
|
|
16084
|
+
<span clx-icon name="build" size="xl" class="text-yellow-500"></span>
|
|
16085
|
+
</div>
|
|
16086
|
+
|
|
16087
|
+
@if (showCode()) {
|
|
16088
|
+
<p class="text-[50px] font-black text-clx-text-faint leading-none select-none mb-2">503</p>
|
|
16089
|
+
}
|
|
16090
|
+
<h1 class="text-base font-semibold text-clx-text-label mb-2">{{ title() }}</h1>
|
|
16091
|
+
<p class="text-clx-text-subtle max-w-sm mb-6">{{ description() }}</p>
|
|
16092
|
+
|
|
16093
|
+
@if (untilLabel()) {
|
|
16094
|
+
<div class="inline-flex items-center gap-2 rounded-full border border-clx-border-soft bg-clx-surface
|
|
16095
|
+
px-3.5 py-1.5 font-semibold text-clx-text-label mb-5">
|
|
16096
|
+
<span clx-icon name="schedule" size="sm" class="text-yellow-500"></span>
|
|
16097
|
+
Volvemos aprox. a las {{ untilLabel() }}
|
|
16098
|
+
</div>
|
|
16099
|
+
}
|
|
16100
|
+
|
|
16101
|
+
@if (liveLabel()) {
|
|
16102
|
+
<p class="inline-flex items-center gap-2 text-xs text-clx-text-subtle">
|
|
16103
|
+
<span class="w-2 h-2 rounded-full bg-yellow-500 animate-pulse" aria-hidden="true"></span>
|
|
16104
|
+
{{ liveLabel() }}
|
|
16105
|
+
</p>
|
|
16106
|
+
}
|
|
16107
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ClxIconComponent, selector: "span[clx-icon]", inputs: ["name", "size", "color", "fill"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
16108
|
+
}
|
|
16109
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxPageMaintenanceComponent, decorators: [{
|
|
16110
|
+
type: Component,
|
|
16111
|
+
args: [{
|
|
16112
|
+
selector: 'clx-page-maintenance',
|
|
16113
|
+
standalone: true,
|
|
16114
|
+
imports: [ClxIconComponent],
|
|
16115
|
+
encapsulation: ViewEncapsulation.None,
|
|
16116
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
16117
|
+
host: {
|
|
16118
|
+
class: 'flex flex-col items-center justify-center min-h-[60vh] px-6 text-center text-sm',
|
|
16119
|
+
role: 'status',
|
|
16120
|
+
'aria-live': 'polite',
|
|
16121
|
+
},
|
|
16122
|
+
template: `
|
|
16123
|
+
<div class="w-20 h-20 rounded-2xl bg-yellow-50 flex items-center justify-center mb-6">
|
|
16124
|
+
<span clx-icon name="build" size="xl" class="text-yellow-500"></span>
|
|
16125
|
+
</div>
|
|
16126
|
+
|
|
16127
|
+
@if (showCode()) {
|
|
16128
|
+
<p class="text-[50px] font-black text-clx-text-faint leading-none select-none mb-2">503</p>
|
|
16129
|
+
}
|
|
16130
|
+
<h1 class="text-base font-semibold text-clx-text-label mb-2">{{ title() }}</h1>
|
|
16131
|
+
<p class="text-clx-text-subtle max-w-sm mb-6">{{ description() }}</p>
|
|
16132
|
+
|
|
16133
|
+
@if (untilLabel()) {
|
|
16134
|
+
<div class="inline-flex items-center gap-2 rounded-full border border-clx-border-soft bg-clx-surface
|
|
16135
|
+
px-3.5 py-1.5 font-semibold text-clx-text-label mb-5">
|
|
16136
|
+
<span clx-icon name="schedule" size="sm" class="text-yellow-500"></span>
|
|
16137
|
+
Volvemos aprox. a las {{ untilLabel() }}
|
|
16138
|
+
</div>
|
|
16139
|
+
}
|
|
16140
|
+
|
|
16141
|
+
@if (liveLabel()) {
|
|
16142
|
+
<p class="inline-flex items-center gap-2 text-xs text-clx-text-subtle">
|
|
16143
|
+
<span class="w-2 h-2 rounded-full bg-yellow-500 animate-pulse" aria-hidden="true"></span>
|
|
16144
|
+
{{ liveLabel() }}
|
|
16145
|
+
</p>
|
|
16146
|
+
}
|
|
16147
|
+
`,
|
|
16148
|
+
}]
|
|
16149
|
+
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], until: [{ type: i0.Input, args: [{ isSignal: true, alias: "until", required: false }] }], liveLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "liveLabel", required: false }] }], showCode: [{ type: i0.Input, args: [{ isSignal: true, alias: "showCode", required: false }] }] } });
|
|
16150
|
+
|
|
16151
|
+
/** Non-blocking announcement of a scheduled maintenance window:
|
|
16152
|
+
* "Mantenimiento programado hoy de 11:00 p. m. a 11:30 p. m. · <message>". The window is formatted
|
|
16153
|
+
* from startsAt/endsAt (hoy / mañana / day name). `checkoutBlocked` switches the copy to "las
|
|
16154
|
+
* compras están pausadas" for the store. Emits `dismissed` when closed (the host decides for how long). */
|
|
16155
|
+
class ClxMaintenanceBannerComponent {
|
|
16156
|
+
startsAt = input.required(...(ngDevMode ? [{ debugName: "startsAt" }] : /* istanbul ignore next */ []));
|
|
16157
|
+
endsAt = input.required(...(ngDevMode ? [{ debugName: "endsAt" }] : /* istanbul ignore next */ []));
|
|
16158
|
+
/** Extra text from Sistema → Mantenimiento. */
|
|
16159
|
+
message = input(null, ...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
|
|
16160
|
+
/** The store already stopped taking purchases. */
|
|
16161
|
+
checkoutBlocked = input(false, ...(ngDevMode ? [{ debugName: "checkoutBlocked" }] : /* istanbul ignore next */ []));
|
|
16162
|
+
dismissible = input(true, ...(ngDevMode ? [{ debugName: "dismissible" }] : /* istanbul ignore next */ []));
|
|
16163
|
+
dismissed = output();
|
|
16164
|
+
heading = computed(() => {
|
|
16165
|
+
const window = formatClxWindow(this.startsAt(), this.endsAt());
|
|
16166
|
+
return this.checkoutBlocked()
|
|
16167
|
+
? `Compras pausadas por mantenimiento ${window}`
|
|
16168
|
+
: `Mantenimiento programado ${window}`;
|
|
16169
|
+
}, ...(ngDevMode ? [{ debugName: "heading" }] : /* istanbul ignore next */ []));
|
|
16170
|
+
detail = computed(() => this.message()?.trim() || null, ...(ngDevMode ? [{ debugName: "detail" }] : /* istanbul ignore next */ []));
|
|
16171
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxMaintenanceBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16172
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxMaintenanceBannerComponent, isStandalone: true, selector: "clx-maintenance-banner", inputs: { startsAt: { classPropertyName: "startsAt", publicName: "startsAt", isSignal: true, isRequired: true, transformFunction: null }, endsAt: { classPropertyName: "endsAt", publicName: "endsAt", isSignal: true, isRequired: true, transformFunction: null }, message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: false, transformFunction: null }, checkoutBlocked: { classPropertyName: "checkoutBlocked", publicName: "checkoutBlocked", isSignal: true, isRequired: false, transformFunction: null }, dismissible: { classPropertyName: "dismissible", publicName: "dismissible", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dismissed: "dismissed" }, host: { attributes: { "role": "status", "aria-live": "polite" }, classAttribute: "flex items-start gap-3 rounded-xl border border-yellow-300 bg-yellow-50 px-4 py-3 text-sm text-yellow-900" }, ngImport: i0, template: `
|
|
16173
|
+
<span clx-icon name="build" size="sm" class="text-yellow-600 mt-0.5 shrink-0"></span>
|
|
16174
|
+
<p class="flex-1 min-w-0 leading-snug">
|
|
16175
|
+
<span class="font-semibold">{{ heading() }}</span>
|
|
16176
|
+
@if (detail()) { <span> · {{ detail() }}</span> }
|
|
16177
|
+
</p>
|
|
16178
|
+
@if (dismissible()) {
|
|
16179
|
+
<button type="button" class="shrink-0 -m-1 p-1 rounded-md text-yellow-700 hover:bg-yellow-100 cursor-pointer"
|
|
16180
|
+
aria-label="Cerrar aviso" (click)="dismissed.emit()">
|
|
16181
|
+
<span clx-icon name="close" size="sm"></span>
|
|
16182
|
+
</button>
|
|
16183
|
+
}
|
|
16184
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ClxIconComponent, selector: "span[clx-icon]", inputs: ["name", "size", "color", "fill"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
16185
|
+
}
|
|
16186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxMaintenanceBannerComponent, decorators: [{
|
|
16187
|
+
type: Component,
|
|
16188
|
+
args: [{
|
|
16189
|
+
selector: 'clx-maintenance-banner',
|
|
16190
|
+
standalone: true,
|
|
16191
|
+
imports: [ClxIconComponent],
|
|
16192
|
+
encapsulation: ViewEncapsulation.None,
|
|
16193
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
16194
|
+
host: {
|
|
16195
|
+
class: 'flex items-start gap-3 rounded-xl border border-yellow-300 bg-yellow-50 px-4 py-3 text-sm text-yellow-900',
|
|
16196
|
+
role: 'status',
|
|
16197
|
+
'aria-live': 'polite',
|
|
16198
|
+
},
|
|
16199
|
+
template: `
|
|
16200
|
+
<span clx-icon name="build" size="sm" class="text-yellow-600 mt-0.5 shrink-0"></span>
|
|
16201
|
+
<p class="flex-1 min-w-0 leading-snug">
|
|
16202
|
+
<span class="font-semibold">{{ heading() }}</span>
|
|
16203
|
+
@if (detail()) { <span> · {{ detail() }}</span> }
|
|
16204
|
+
</p>
|
|
16205
|
+
@if (dismissible()) {
|
|
16206
|
+
<button type="button" class="shrink-0 -m-1 p-1 rounded-md text-yellow-700 hover:bg-yellow-100 cursor-pointer"
|
|
16207
|
+
aria-label="Cerrar aviso" (click)="dismissed.emit()">
|
|
16208
|
+
<span clx-icon name="close" size="sm"></span>
|
|
16209
|
+
</button>
|
|
16210
|
+
}
|
|
16211
|
+
`,
|
|
16212
|
+
}]
|
|
16213
|
+
}], propDecorators: { startsAt: [{ type: i0.Input, args: [{ isSignal: true, alias: "startsAt", required: true }] }], endsAt: [{ type: i0.Input, args: [{ isSignal: true, alias: "endsAt", required: true }] }], message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: false }] }], checkoutBlocked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checkoutBlocked", required: false }] }], dismissible: [{ type: i0.Input, args: [{ isSignal: true, alias: "dismissible", required: false }] }], dismissed: [{ type: i0.Output, args: ["dismissed"] }] } });
|
|
16214
|
+
|
|
16033
16215
|
class ClxStatCardComponent {
|
|
16034
16216
|
_themeSvc = inject(ClxThemeService);
|
|
16035
16217
|
metric = input.required(...(ngDevMode ? [{ debugName: "metric" }] : /* istanbul ignore next */ []));
|
|
@@ -19613,5 +19795,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
19613
19795
|
* Generated bundle index. Do not edit.
|
|
19614
19796
|
*/
|
|
19615
19797
|
|
|
19616
|
-
export { CLX_ADDON_BORDER, CLX_ADDON_TEXT, CLX_ALERT_OPTIONS, CLX_ALERT_RESOLVE, CLX_BG_ADDON, CLX_BG_DISABLED, CLX_BG_ICON_WRAP, CLX_BG_SECTION, CLX_BG_SURFACE, CLX_BORDER_DEFAULT, CLX_BORDER_DISABLED, CLX_BORDER_MEDIUM, CLX_COLOR_HEX, CLX_COLOR_HEX_100, CLX_COLOR_MAP, CLX_FONT_CATALOG, CLX_MODAL_ANIM_CONFIG, CLX_MODAL_DATA, CLX_MODAL_REF, CLX_OPTION_DISABLED, CLX_PLACEHOLDER, CLX_RADIO_GROUP, CLX_RADIUS_MAP, CLX_TEXT_BODY, CLX_TEXT_DISABLED, CLX_TEXT_HEADING, CLX_TEXT_HINT, CLX_TEXT_IDLE, CLX_TEXT_INPUT, CLX_TEXT_LABEL, CLX_TEXT_OPTION, CLX_TEXT_SUBTITLE, CLX_TEXT_TITLE, CLX_THEME_CONFIG, CLX_THEME_DEFAULTS, CLX_TOAST_DEFAULTS, ClxAlertComponent, ClxAlertListComponent, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardExpiryInputComponent, ClxCardFooterDirective, ClxCardHeaderActionsDirective, ClxCardHeaderDirective, ClxCardNumberInputComponent, ClxCardValidators, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxCheckboxComponent, ClxCollapseComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorImageModalComponent, ClxEditorLinkModalComponent, ClxFabComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxMenuItemTrailingDirective, ClxModalComponent, ClxModalService, ClxNativeOverlayService, ClxNavGroupComponent, ClxNotificationComponent, ClxNumberComponent, ClxOtpComponent, ClxPageEmptyComponent, ClxPageHeaderComponent, ClxPageHeaderTitleDirective, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProductQuickViewComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRankedListComponent, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSocialIconComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableActionsComponent, ClxTableComponent, ClxTableProductCellComponent, ClxTableProgressCellComponent, ClxTableStatusCellComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWidgetCardComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, detectClxCardBrand, isClxCardExpired, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
|
|
19798
|
+
export { CLX_ADDON_BORDER, CLX_ADDON_TEXT, CLX_ALERT_OPTIONS, CLX_ALERT_RESOLVE, CLX_BG_ADDON, CLX_BG_DISABLED, CLX_BG_ICON_WRAP, CLX_BG_SECTION, CLX_BG_SURFACE, CLX_BORDER_DEFAULT, CLX_BORDER_DISABLED, CLX_BORDER_MEDIUM, CLX_COLOR_HEX, CLX_COLOR_HEX_100, CLX_COLOR_MAP, CLX_FONT_CATALOG, CLX_MODAL_ANIM_CONFIG, CLX_MODAL_DATA, CLX_MODAL_REF, CLX_OPTION_DISABLED, CLX_PLACEHOLDER, CLX_RADIO_GROUP, CLX_RADIUS_MAP, CLX_TEXT_BODY, CLX_TEXT_DISABLED, CLX_TEXT_HEADING, CLX_TEXT_HINT, CLX_TEXT_IDLE, CLX_TEXT_INPUT, CLX_TEXT_LABEL, CLX_TEXT_OPTION, CLX_TEXT_SUBTITLE, CLX_TEXT_TITLE, CLX_THEME_CONFIG, CLX_THEME_DEFAULTS, CLX_TOAST_DEFAULTS, ClxAlertComponent, ClxAlertListComponent, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardExpiryInputComponent, ClxCardFooterDirective, ClxCardHeaderActionsDirective, ClxCardHeaderDirective, ClxCardNumberInputComponent, ClxCardValidators, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxCheckboxComponent, ClxCollapseComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorImageModalComponent, ClxEditorLinkModalComponent, ClxFabComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMaintenanceBannerComponent, ClxMenuComponent, ClxMenuItemComponent, ClxMenuItemTrailingDirective, ClxModalComponent, ClxModalService, ClxNativeOverlayService, ClxNavGroupComponent, ClxNotificationComponent, ClxNumberComponent, ClxOtpComponent, ClxPageEmptyComponent, ClxPageHeaderComponent, ClxPageHeaderTitleDirective, ClxPageMaintenanceComponent, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProductQuickViewComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRankedListComponent, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSocialIconComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableActionsComponent, ClxTableComponent, ClxTableProductCellComponent, ClxTableProgressCellComponent, ClxTableStatusCellComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWidgetCardComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, detectClxCardBrand, formatClxTime, formatClxWindow, isClxCardExpired, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
|
|
19617
19799
|
//# sourceMappingURL=codexly-ui.mjs.map
|