codexly-ui 0.12.34 → 0.12.36
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 +152 -10
- package/fesm2022/codexly-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/codexly-ui.d.ts +45 -7
package/fesm2022/codexly-ui.mjs
CHANGED
|
@@ -664,7 +664,13 @@ class ClxThemeService {
|
|
|
664
664
|
error: n?.severityColors?.error ?? this._config().dangerColor,
|
|
665
665
|
},
|
|
666
666
|
unreadColor: n?.unreadColor ?? this._config().primaryColor,
|
|
667
|
-
|
|
667
|
+
// Falls back to the general "Pestañas" theme (tabs.activeTextColor/underlineColor) before
|
|
668
|
+
// primaryColor — the notification panel's own Todas/Sin leer tabs are still clx-tabs under
|
|
669
|
+
// the hood, so they should read the same theming a host already configured for every other
|
|
670
|
+
// clx-tabs instance, unless notification.tabsColor/activeTextColor/underlineColor override
|
|
671
|
+
// it specifically.
|
|
672
|
+
tabsColor: n?.tabsColor ?? this.tabsStyle().activeTextColor,
|
|
673
|
+
tabsUnderlineColor: n?.tabsUnderlineColor ?? this.tabsStyle().underlineColor,
|
|
668
674
|
size: n?.size ?? 'md',
|
|
669
675
|
border: n?.border ?? true,
|
|
670
676
|
borderColor: n?.borderColor ?? this._config().listBorderColor ?? this._config().primaryColor,
|
|
@@ -8670,6 +8676,103 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
8670
8676
|
}]
|
|
8671
8677
|
}] });
|
|
8672
8678
|
|
|
8679
|
+
/** Generic "insert image by URL" fallback for clx-editor's image button — used only when the host
|
|
8680
|
+
* app doesn't provide its own imagePicker() (see ClxEditorComponent), since this library has no
|
|
8681
|
+
* way to reach an app-specific catalog/media backend itself. */
|
|
8682
|
+
class ClxEditorImageModalComponent {
|
|
8683
|
+
_modalRef = inject(CLX_MODAL_REF, { optional: true });
|
|
8684
|
+
_themeSvc = inject(ClxThemeService);
|
|
8685
|
+
_primaryColor = computed(() => this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_primaryColor" }] : /* istanbul ignore next */ []));
|
|
8686
|
+
_form = new FormGroup({
|
|
8687
|
+
url: new FormControl('', { nonNullable: true, validators: [Validators.required, Validators.pattern(/^https?:\/\/.+/)] }),
|
|
8688
|
+
alt: new FormControl('', { nonNullable: true }),
|
|
8689
|
+
});
|
|
8690
|
+
_urlInvalid = signal(false, ...(ngDevMode ? [{ debugName: "_urlInvalid" }] : /* istanbul ignore next */ []));
|
|
8691
|
+
_confirm() {
|
|
8692
|
+
const url = this._form.controls.url.value.trim();
|
|
8693
|
+
const alt = this._form.controls.alt.value.trim();
|
|
8694
|
+
if (!url || this._form.controls.url.invalid) {
|
|
8695
|
+
this._urlInvalid.set(true);
|
|
8696
|
+
return;
|
|
8697
|
+
}
|
|
8698
|
+
this._modalRef?.close({ url, alt });
|
|
8699
|
+
}
|
|
8700
|
+
_cancel() {
|
|
8701
|
+
this._modalRef?.close(undefined);
|
|
8702
|
+
}
|
|
8703
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxEditorImageModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8704
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.15", type: ClxEditorImageModalComponent, isStandalone: true, selector: "clx-editor-image-modal", ngImport: i0, template: `
|
|
8705
|
+
<clx-modal
|
|
8706
|
+
size="sm"
|
|
8707
|
+
[confirmButton]="{ text: 'Insertar', color: _primaryColor() }"
|
|
8708
|
+
[cancelButton]="{ text: 'Cancelar', color: 'slate', variant: 'ghost' }"
|
|
8709
|
+
[showCancelButton]="true"
|
|
8710
|
+
(confirmClick)="_confirm()"
|
|
8711
|
+
(cancelClick)="_cancel()">
|
|
8712
|
+
|
|
8713
|
+
<span clx-modal-title class="text-base font-semibold text-clx-text-label">
|
|
8714
|
+
Insertar imagen
|
|
8715
|
+
</span>
|
|
8716
|
+
|
|
8717
|
+
<form [formGroup]="_form" class="space-y-4" (ngSubmit)="_confirm()">
|
|
8718
|
+
<clx-input
|
|
8719
|
+
label="URL de la imagen"
|
|
8720
|
+
placeholder="https://ejemplo.com/imagen.jpg"
|
|
8721
|
+
formControlName="url"
|
|
8722
|
+
[status]="_urlInvalid() ? 'error' : 'default'"
|
|
8723
|
+
statusMessage="Ingresa una URL válida">
|
|
8724
|
+
</clx-input>
|
|
8725
|
+
<clx-input
|
|
8726
|
+
label="Texto alternativo"
|
|
8727
|
+
placeholder="Descripción de la imagen"
|
|
8728
|
+
formControlName="alt">
|
|
8729
|
+
</clx-input>
|
|
8730
|
+
</form>
|
|
8731
|
+
|
|
8732
|
+
</clx-modal>
|
|
8733
|
+
`, isInline: true, dependencies: [{ kind: "component", type: ClxModalComponent, selector: "clx-modal", inputs: ["size", "showClose", "confirmButton", "cancelButton", "showCancelButton"], outputs: ["confirmClick", "cancelClick"] }, { kind: "component", type: ClxInputComponent, selector: "clx-input", inputs: ["label", "placeholder", "type", "color", "hint", "prefixIcon", "suffixIcon", "prefixText", "suffixText", "status", "statusMessage", "size", "value", "disabled", "autocomplete"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
8734
|
+
}
|
|
8735
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxEditorImageModalComponent, decorators: [{
|
|
8736
|
+
type: Component,
|
|
8737
|
+
args: [{
|
|
8738
|
+
selector: 'clx-editor-image-modal',
|
|
8739
|
+
standalone: true,
|
|
8740
|
+
imports: [ClxModalComponent, ClxInputComponent, ReactiveFormsModule],
|
|
8741
|
+
encapsulation: ViewEncapsulation.None,
|
|
8742
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8743
|
+
template: `
|
|
8744
|
+
<clx-modal
|
|
8745
|
+
size="sm"
|
|
8746
|
+
[confirmButton]="{ text: 'Insertar', color: _primaryColor() }"
|
|
8747
|
+
[cancelButton]="{ text: 'Cancelar', color: 'slate', variant: 'ghost' }"
|
|
8748
|
+
[showCancelButton]="true"
|
|
8749
|
+
(confirmClick)="_confirm()"
|
|
8750
|
+
(cancelClick)="_cancel()">
|
|
8751
|
+
|
|
8752
|
+
<span clx-modal-title class="text-base font-semibold text-clx-text-label">
|
|
8753
|
+
Insertar imagen
|
|
8754
|
+
</span>
|
|
8755
|
+
|
|
8756
|
+
<form [formGroup]="_form" class="space-y-4" (ngSubmit)="_confirm()">
|
|
8757
|
+
<clx-input
|
|
8758
|
+
label="URL de la imagen"
|
|
8759
|
+
placeholder="https://ejemplo.com/imagen.jpg"
|
|
8760
|
+
formControlName="url"
|
|
8761
|
+
[status]="_urlInvalid() ? 'error' : 'default'"
|
|
8762
|
+
statusMessage="Ingresa una URL válida">
|
|
8763
|
+
</clx-input>
|
|
8764
|
+
<clx-input
|
|
8765
|
+
label="Texto alternativo"
|
|
8766
|
+
placeholder="Descripción de la imagen"
|
|
8767
|
+
formControlName="alt">
|
|
8768
|
+
</clx-input>
|
|
8769
|
+
</form>
|
|
8770
|
+
|
|
8771
|
+
</clx-modal>
|
|
8772
|
+
`,
|
|
8773
|
+
}]
|
|
8774
|
+
}] });
|
|
8775
|
+
|
|
8673
8776
|
const EDITOR_SIZE_MAP = {
|
|
8674
8777
|
sm: { minH: 'min-h-[120px]', maxH: 'max-h-[200px]', text: 'text-sm', label: 'text-xs font-medium', hint: 'text-xs', toolbar: 'p-1 gap-0.5' },
|
|
8675
8778
|
md: { minH: 'min-h-[180px]', maxH: 'max-h-[320px]', text: 'text-sm', label: 'text-sm font-medium', hint: 'text-xs', toolbar: 'p-1.5 gap-0.5' },
|
|
@@ -8875,6 +8978,7 @@ const TOOLBAR_GROUPS = [
|
|
|
8875
8978
|
],
|
|
8876
8979
|
[
|
|
8877
8980
|
{ cmd: 'createLink', icon: 'link', title: 'Enlace' },
|
|
8981
|
+
{ cmd: 'insertImage', icon: 'image', title: 'Imagen' },
|
|
8878
8982
|
{ cmd: 'removeFormat', icon: 'format_clear', title: 'Limpiar formato' },
|
|
8879
8983
|
{ cmd: 'undo', icon: 'undo', title: 'Deshacer' },
|
|
8880
8984
|
{ cmd: 'redo', icon: 'redo', title: 'Rehacer' },
|
|
@@ -8911,6 +9015,11 @@ class ClxEditorComponent {
|
|
|
8911
9015
|
statusMessage = input('', ...(ngDevMode ? [{ debugName: "statusMessage" }] : /* istanbul ignore next */ []));
|
|
8912
9016
|
hint = input('', ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
|
|
8913
9017
|
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
9018
|
+
/** Overrides the toolbar's Image button: when provided, clicking it calls this instead of
|
|
9019
|
+
* opening the generic "insert by URL" modal (ClxEditorImageModalComponent) — lets a host app
|
|
9020
|
+
* plug in its own picker (e.g. an ERP's product/variant image browser) without this library
|
|
9021
|
+
* needing to know about that app's catalog backend. Resolve to undefined/null to cancel. */
|
|
9022
|
+
imagePicker = input(undefined, ...(ngDevMode ? [{ debugName: "imagePicker" }] : /* istanbul ignore next */ []));
|
|
8914
9023
|
// ── View ─────────────────────────────────────────────────────────────────
|
|
8915
9024
|
_bodyEl;
|
|
8916
9025
|
_sourceEl;
|
|
@@ -9064,6 +9173,10 @@ class ClxEditorComponent {
|
|
|
9064
9173
|
this._openLinkModal();
|
|
9065
9174
|
return;
|
|
9066
9175
|
}
|
|
9176
|
+
if (cmd === 'insertImage') {
|
|
9177
|
+
this._openImageModal();
|
|
9178
|
+
return;
|
|
9179
|
+
}
|
|
9067
9180
|
this._bodyEl.nativeElement.focus();
|
|
9068
9181
|
this._restoreRange();
|
|
9069
9182
|
document.execCommand(cmd, false, arg);
|
|
@@ -9104,6 +9217,27 @@ class ClxEditorComponent {
|
|
|
9104
9217
|
this._tick.update(v => v + 1);
|
|
9105
9218
|
});
|
|
9106
9219
|
}
|
|
9220
|
+
// ── Image insert ──────────────────────────────────────────────────────────
|
|
9221
|
+
_openImageModal() {
|
|
9222
|
+
this._saveRange();
|
|
9223
|
+
const picker = this.imagePicker();
|
|
9224
|
+
const insert = (result) => {
|
|
9225
|
+
if (!result?.url)
|
|
9226
|
+
return;
|
|
9227
|
+
this._restoreRange();
|
|
9228
|
+
this._bodyEl.nativeElement.focus();
|
|
9229
|
+
const alt = (result.alt ?? '').replace(/"/g, '"');
|
|
9230
|
+
document.execCommand('insertHTML', false, `<img src="${result.url}" alt="${alt}" style="max-width:100%;height:auto;" />`);
|
|
9231
|
+
this._emitChange();
|
|
9232
|
+
this._tick.update(v => v + 1);
|
|
9233
|
+
};
|
|
9234
|
+
if (picker) {
|
|
9235
|
+
picker().then(insert);
|
|
9236
|
+
return;
|
|
9237
|
+
}
|
|
9238
|
+
const ref = this._modal.open(ClxEditorImageModalComponent, { size: 'sm' });
|
|
9239
|
+
ref.afterClosed().then((result) => insert(result));
|
|
9240
|
+
}
|
|
9107
9241
|
// ── Range save/restore ────────────────────────────────────────────────────
|
|
9108
9242
|
_saveRange() {
|
|
9109
9243
|
const sel = window.getSelection();
|
|
@@ -9222,7 +9356,7 @@ class ClxEditorComponent {
|
|
|
9222
9356
|
this._cdr.markForCheck();
|
|
9223
9357
|
}
|
|
9224
9358
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9225
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxEditorComponent, isStandalone: true, selector: "clx-editor", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, statusMessage: { classPropertyName: "statusMessage", publicName: "statusMessage", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "flex flex-col gap-1.5" }, providers: [
|
|
9359
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxEditorComponent, isStandalone: true, selector: "clx-editor", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, statusMessage: { classPropertyName: "statusMessage", publicName: "statusMessage", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, imagePicker: { classPropertyName: "imagePicker", publicName: "imagePicker", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "flex flex-col gap-1.5" }, providers: [
|
|
9226
9360
|
{
|
|
9227
9361
|
provide: NG_VALUE_ACCESSOR,
|
|
9228
9362
|
useExisting: forwardRef(() => ClxEditorComponent),
|
|
@@ -9593,7 +9727,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
9593
9727
|
<p [class]="_sizeCfg().hint + ' text-gray-400'">{{ hint() }}</p>
|
|
9594
9728
|
}
|
|
9595
9729
|
`, host: { class: 'flex flex-col gap-1.5' }, styles: [".clx-editor-body:empty:before{content:attr(data-placeholder);color:#9ca3af;pointer-events:none}.clx-editor-body:focus{outline:none}.clx-editor-body p{margin:0 0 .4em}.clx-editor-body p:last-child{margin-bottom:0}.clx-editor-body h1{font-size:1.5em;font-weight:700;margin:.5em 0}.clx-editor-body h2{font-size:1.25em;font-weight:600;margin:.5em 0}.clx-editor-body h3{font-size:1.1em;font-weight:600;margin:.5em 0}.clx-editor-body ul,.clx-editor-body ol{padding-left:1.5em;margin:.35em 0}.clx-editor-body li{margin:.1em 0}.clx-editor-body blockquote{border-left:3px solid #e2e8f0;padding-left:.75em;color:#64748b;margin:.4em 0}.clx-editor-body code{background:#f1f5f9;border-radius:3px;padding:.1em .3em;font-size:.875em;font-family:ui-monospace,monospace}.clx-editor-body a{color:#6366f1;text-decoration:underline}.clx-editor-body hr{border:none;border-top:1px solid #e2e8f0;margin:.6em 0}.clx-editor-color-btn{position:relative;overflow:hidden}.clx-editor-color-btn input[type=color]{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;border:none;padding:0}.clx-editor-toolbar-select clx-select .flex.flex-col{gap:0!important}.clx-editor-source{width:100%;resize:none;border:none;outline:none;background:#0f172a;color:#e2e8f0;font-family:ui-monospace,Cascadia Code,Fira Code,monospace;font-size:.8125rem;line-height:1.6;padding:1rem;tab-size:2}\n"] }]
|
|
9596
|
-
}], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusMessage", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], _bodyEl: [{
|
|
9730
|
+
}], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusMessage: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusMessage", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], imagePicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "imagePicker", required: false }] }], _bodyEl: [{
|
|
9597
9731
|
type: ViewChild,
|
|
9598
9732
|
args: ['bodyEl', { static: false }]
|
|
9599
9733
|
}], _sourceEl: [{
|
|
@@ -11460,9 +11594,14 @@ class ClxNotificationComponent {
|
|
|
11460
11594
|
* primaryColor) when unset. */
|
|
11461
11595
|
badgeColor = input(undefined, ...(ngDevMode ? [{ debugName: "badgeColor" }] : /* istanbul ignore next */ []));
|
|
11462
11596
|
// ── Panel accents — independent from the bell button's own color. ──────────────────────────
|
|
11463
|
-
/** clx-tabs (Todas/Sin leer/...) + "Marcar todo leído" link accent —
|
|
11464
|
-
* notification.tabsColor (
|
|
11597
|
+
/** clx-tabs (Todas/Sin leer/...) active tab text/icon color + "Marcar todo leído" link accent —
|
|
11598
|
+
* falls back to the theme's notification.tabsColor (which itself falls back to the general
|
|
11599
|
+
* "Pestañas" theme's tabs.activeTextColor, then primaryColor) when unset. */
|
|
11465
11600
|
tabsColor = input(undefined, ...(ngDevMode ? [{ debugName: "tabsColor" }] : /* istanbul ignore next */ []));
|
|
11601
|
+
/** clx-tabs underline color, independent of tabsColor — falls back to the theme's
|
|
11602
|
+
* notification.tabsUnderlineColor (which itself falls back to tabs.underlineColor, then
|
|
11603
|
+
* primaryColor) when unset. */
|
|
11604
|
+
tabsUnderlineColor = input(undefined, ...(ngDevMode ? [{ debugName: "tabsUnderlineColor" }] : /* istanbul ignore next */ []));
|
|
11466
11605
|
/** Whether the floating panel shows its outer border — falls back to the theme's
|
|
11467
11606
|
* notification.border (then true) when unset. */
|
|
11468
11607
|
border = input(undefined, ...(ngDevMode ? [{ debugName: "border" }] : /* istanbul ignore next */ []));
|
|
@@ -11477,6 +11616,7 @@ class ClxNotificationComponent {
|
|
|
11477
11616
|
_buttonColor = computed(() => this.buttonColor() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_buttonColor" }] : /* istanbul ignore next */ []));
|
|
11478
11617
|
_badgeColor = computed(() => this.badgeColor() ?? this._style().unreadColor, ...(ngDevMode ? [{ debugName: "_badgeColor" }] : /* istanbul ignore next */ []));
|
|
11479
11618
|
_tabsColor = computed(() => this.tabsColor() ?? this._style().tabsColor, ...(ngDevMode ? [{ debugName: "_tabsColor" }] : /* istanbul ignore next */ []));
|
|
11619
|
+
_tabsUnderlineColor = computed(() => this.tabsUnderlineColor() ?? this._style().tabsUnderlineColor, ...(ngDevMode ? [{ debugName: "_tabsUnderlineColor" }] : /* istanbul ignore next */ []));
|
|
11480
11620
|
_border = computed(() => this.border() ?? this._style().border, ...(ngDevMode ? [{ debugName: "_border" }] : /* istanbul ignore next */ []));
|
|
11481
11621
|
_borderColor = computed(() => this.borderColor() ?? this._style().borderColor, ...(ngDevMode ? [{ debugName: "_borderColor" }] : /* istanbul ignore next */ []));
|
|
11482
11622
|
// ── CDK Overlay ─────────────────────────────────────────────────────────────
|
|
@@ -11574,7 +11714,7 @@ class ClxNotificationComponent {
|
|
|
11574
11714
|
return new Date(iso).toLocaleTimeString('es-CO', { hour: '2-digit', minute: '2-digit' });
|
|
11575
11715
|
}
|
|
11576
11716
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxNotificationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
11577
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxNotificationComponent, isStandalone: true, selector: "clx-notification", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, categoryTab: { classPropertyName: "categoryTab", publicName: "categoryTab", isSignal: true, isRequired: false, transformFunction: null }, buttonColor: { classPropertyName: "buttonColor", publicName: "buttonColor", isSignal: true, isRequired: false, transformFunction: null }, buttonVariant: { classPropertyName: "buttonVariant", publicName: "buttonVariant", isSignal: true, isRequired: false, transformFunction: null }, buttonSize: { classPropertyName: "buttonSize", publicName: "buttonSize", isSignal: true, isRequired: false, transformFunction: null }, buttonIcon: { classPropertyName: "buttonIcon", publicName: "buttonIcon", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null }, tabsColor: { classPropertyName: "tabsColor", publicName: "tabsColor", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, borderColor: { classPropertyName: "borderColor", publicName: "borderColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", markRead: "markRead", markAllRead: "markAllRead", delete: "delete", deleteAllRead: "deleteAllRead" }, host: { classAttribute: "relative inline-flex items-center" }, ngImport: i0, template: `
|
|
11717
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.15", type: ClxNotificationComponent, isStandalone: true, selector: "clx-notification", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: true, transformFunction: null }, categoryTab: { classPropertyName: "categoryTab", publicName: "categoryTab", isSignal: true, isRequired: false, transformFunction: null }, buttonColor: { classPropertyName: "buttonColor", publicName: "buttonColor", isSignal: true, isRequired: false, transformFunction: null }, buttonVariant: { classPropertyName: "buttonVariant", publicName: "buttonVariant", isSignal: true, isRequired: false, transformFunction: null }, buttonSize: { classPropertyName: "buttonSize", publicName: "buttonSize", isSignal: true, isRequired: false, transformFunction: null }, buttonIcon: { classPropertyName: "buttonIcon", publicName: "buttonIcon", isSignal: true, isRequired: false, transformFunction: null }, badgeColor: { classPropertyName: "badgeColor", publicName: "badgeColor", isSignal: true, isRequired: false, transformFunction: null }, tabsColor: { classPropertyName: "tabsColor", publicName: "tabsColor", isSignal: true, isRequired: false, transformFunction: null }, tabsUnderlineColor: { classPropertyName: "tabsUnderlineColor", publicName: "tabsUnderlineColor", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, borderColor: { classPropertyName: "borderColor", publicName: "borderColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", markRead: "markRead", markAllRead: "markAllRead", delete: "delete", deleteAllRead: "deleteAllRead" }, host: { classAttribute: "relative inline-flex items-center" }, ngImport: i0, template: `
|
|
11578
11718
|
<!-- Trigger -->
|
|
11579
11719
|
<button clx-button
|
|
11580
11720
|
#origin="cdkOverlayOrigin"
|
|
@@ -11621,7 +11761,8 @@ class ClxNotificationComponent {
|
|
|
11621
11761
|
|
|
11622
11762
|
<!-- Tabs -->
|
|
11623
11763
|
<div class="px-4">
|
|
11624
|
-
<clx-tabs [tabs]="_tabs()" [(activeTab)]="_filter"
|
|
11764
|
+
<clx-tabs [tabs]="_tabs()" [(activeTab)]="_filter"
|
|
11765
|
+
[activeTextColor]="_tabsColor()" [underlineColor]="_tabsUnderlineColor()" />
|
|
11625
11766
|
</div>
|
|
11626
11767
|
|
|
11627
11768
|
<!-- List -->
|
|
@@ -11735,7 +11876,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
11735
11876
|
|
|
11736
11877
|
<!-- Tabs -->
|
|
11737
11878
|
<div class="px-4">
|
|
11738
|
-
<clx-tabs [tabs]="_tabs()" [(activeTab)]="_filter"
|
|
11879
|
+
<clx-tabs [tabs]="_tabs()" [(activeTab)]="_filter"
|
|
11880
|
+
[activeTextColor]="_tabsColor()" [underlineColor]="_tabsUnderlineColor()" />
|
|
11739
11881
|
</div>
|
|
11740
11882
|
|
|
11741
11883
|
<!-- List -->
|
|
@@ -11799,7 +11941,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
11799
11941
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11800
11942
|
host: { class: 'relative inline-flex items-center' },
|
|
11801
11943
|
}]
|
|
11802
|
-
}], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], categoryTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "categoryTab", required: false }] }], buttonColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonColor", required: false }] }], buttonVariant: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonVariant", required: false }] }], buttonSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonSize", required: false }] }], buttonIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonIcon", required: false }] }], badgeColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeColor", required: false }] }], tabsColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabsColor", required: false }] }], border: [{ type: i0.Input, args: [{ isSignal: true, alias: "border", required: false }] }], borderColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderColor", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], markRead: [{ type: i0.Output, args: ["markRead"] }], markAllRead: [{ type: i0.Output, args: ["markAllRead"] }], delete: [{ type: i0.Output, args: ["delete"] }], deleteAllRead: [{ type: i0.Output, args: ["deleteAllRead"] }] } });
|
|
11944
|
+
}], propDecorators: { items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: true }] }], categoryTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "categoryTab", required: false }] }], buttonColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonColor", required: false }] }], buttonVariant: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonVariant", required: false }] }], buttonSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonSize", required: false }] }], buttonIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonIcon", required: false }] }], badgeColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "badgeColor", required: false }] }], tabsColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabsColor", required: false }] }], tabsUnderlineColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabsUnderlineColor", required: false }] }], border: [{ type: i0.Input, args: [{ isSignal: true, alias: "border", required: false }] }], borderColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderColor", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], markRead: [{ type: i0.Output, args: ["markRead"] }], markAllRead: [{ type: i0.Output, args: ["markAllRead"] }], delete: [{ type: i0.Output, args: ["delete"] }], deleteAllRead: [{ type: i0.Output, args: ["deleteAllRead"] }] } });
|
|
11803
11945
|
|
|
11804
11946
|
// ─── CDK overlay token (carries the resolved ref into the component) ──────────
|
|
11805
11947
|
const CLX_ALERT_OPTIONS = new InjectionToken('CLX_ALERT_OPTIONS');
|
|
@@ -17919,5 +18061,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
|
|
|
17919
18061
|
* Generated bundle index. Do not edit.
|
|
17920
18062
|
*/
|
|
17921
18063
|
|
|
17922
|
-
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, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardFooterDirective, ClxCardHeaderActionsDirective, ClxCardHeaderDirective, ClxCarouselComponent, ClxCarouselDirective, ClxCartComponent, ClxCartSummaryDrawer, ClxCellDirective, ClxCheckboxComponent, ClxCollapseComponent, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, 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, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSocialIconComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableActionsComponent, ClxTableComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
|
|
18064
|
+
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, ClxAlertService, ClxAnimateDirective, ClxAnimateGroupDirective, ClxAnimateService, ClxAppLayoutComponent, ClxAvatarComponent, ClxBadgeComponent, ClxBrandComponent, ClxButtonComponent, ClxButtonGroupComponent, ClxCardBodyDirective, ClxCardComponent, ClxCardFooterDirective, ClxCardHeaderActionsDirective, ClxCardHeaderDirective, 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, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSocialIconComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, ClxTableActionsComponent, ClxTableComponent, ClxTabsComponent, ClxTagComponent, ClxTextareaComponent, ClxThemeService, ClxTimelineComponent, ClxTimelineItemComponent, ClxTimepickerComponent, ClxToastComponent, ClxToastContainerComponent, ClxToastService, ClxTooltipComponent, ClxTooltipDirective, ClxTreeComponent, ClxUploadComponent, ClxWishlistComponent, ClxWizardComponent, TIMEPICKER_SIZE_MAP, parseColorInput, provideCodexlyTheme, resolveColor, resolveContainerRadius, resolveRadius };
|
|
17923
18065
|
//# sourceMappingURL=codexly-ui.mjs.map
|