codexly-ui 0.10.10 → 0.10.11

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.
@@ -15747,6 +15747,166 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
15747
15747
  }]
15748
15748
  }] });
15749
15749
 
15750
+ let _clxSearchIdCounter = 0;
15751
+ /** Storefront search bar — same color/size/CVA conventions as ClxInputComponent, but styled as
15752
+ * one continuous pill (input fused with a solid search button) rather than a bordered field with
15753
+ * a detached button, matching how e-commerce header search boxes are typically laid out. */
15754
+ class ClxSearchComponent {
15755
+ _themeSvc = inject(ClxThemeService);
15756
+ color = input(undefined, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
15757
+ _color = computed(() => this.color() ?? this._themeSvc.config().primaryColor, ...(ngDevMode ? [{ debugName: "_color" }] : /* istanbul ignore next */ []));
15758
+ size = input(undefined, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
15759
+ _size = computed(() => (this.size() ?? this._themeSvc.config().defaultSize), ...(ngDevMode ? [{ debugName: "_size" }] : /* istanbul ignore next */ []));
15760
+ placeholder = input('Buscar...', ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
15761
+ buttonLabel = input('Buscar', ...(ngDevMode ? [{ debugName: "buttonLabel" }] : /* istanbul ignore next */ []));
15762
+ /** Initial value for standalone use (without FormControl) */
15763
+ value = input('', ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
15764
+ /** Disabled state for standalone use (without FormControl) */
15765
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
15766
+ search = output();
15767
+ _inputId = `clx-search-${++_clxSearchIdCounter}`;
15768
+ _value = signal('', ...(ngDevMode ? [{ debugName: "_value" }] : /* istanbul ignore next */ []));
15769
+ _cvaDisabled = signal(false, ...(ngDevMode ? [{ debugName: "_cvaDisabled" }] : /* istanbul ignore next */ []));
15770
+ _cvaConnected = false;
15771
+ _cardDisabled = inject(CLX_CARD_DISABLED_CONTEXT, { optional: true });
15772
+ _disabled = computed(() => this._cvaDisabled() || this.disabled() || !!this._cardDisabled?.(), ...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
15773
+ _valueEffect = effect(() => {
15774
+ const v = this.value();
15775
+ if (!this._cvaConnected)
15776
+ untracked(() => this._value.set(v));
15777
+ }, ...(ngDevMode ? [{ debugName: "_valueEffect" }] : /* istanbul ignore next */ []));
15778
+ _onChange = () => { };
15779
+ _onTouched = () => { };
15780
+ _sizeConfig = computed(() => INPUT_SIZE_MAP[this._size()], ...(ngDevMode ? [{ debugName: "_sizeConfig" }] : /* istanbul ignore next */ []));
15781
+ _buttonSize = computed(() => {
15782
+ switch (this._size()) {
15783
+ case 'sm': return 'sm';
15784
+ case 'lg': return 'lg';
15785
+ default: return 'md';
15786
+ }
15787
+ }, ...(ngDevMode ? [{ debugName: "_buttonSize" }] : /* istanbul ignore next */ []));
15788
+ _wrapperClass = computed(() => {
15789
+ const focusCls = this._disabled() ? '' : resolveColor(this._color()).focusWithin;
15790
+ return `relative flex items-stretch ${resolveRadius(this._themeSvc.config().borderRadius)} border border-clx-border ${focusCls} overflow-hidden transition-[border-color,box-shadow] duration-200`;
15791
+ }, ...(ngDevMode ? [{ debugName: "_wrapperClass" }] : /* istanbul ignore next */ []));
15792
+ _inputClass = computed(() => {
15793
+ const size = this._sizeConfig();
15794
+ const disabledCls = this._disabled()
15795
+ ? `cursor-not-allowed ${CLX_TEXT_DISABLED} ${CLX_BG_DISABLED}`
15796
+ : `${CLX_TEXT_INPUT} ${CLX_BG_SURFACE}`;
15797
+ return `flex-1 min-w-0 ${size.input} pl-3 pr-3 outline-none border-0 ${CLX_PLACEHOLDER} ${disabledCls}`;
15798
+ }, ...(ngDevMode ? [{ debugName: "_inputClass" }] : /* istanbul ignore next */ []));
15799
+ writeValue(val) {
15800
+ this._cvaConnected = true;
15801
+ this._value.set(val ?? '');
15802
+ }
15803
+ registerOnChange(fn) {
15804
+ this._onChange = fn;
15805
+ }
15806
+ registerOnTouched(fn) {
15807
+ this._onTouched = fn;
15808
+ }
15809
+ setDisabledState(disabled) {
15810
+ this._cvaDisabled.set(disabled);
15811
+ }
15812
+ _handleInput(event) {
15813
+ const val = event.target.value;
15814
+ this._value.set(val);
15815
+ this._onChange(val);
15816
+ }
15817
+ _handleBlur() {
15818
+ this._onTouched();
15819
+ }
15820
+ _handleSubmit() {
15821
+ if (this._disabled())
15822
+ return;
15823
+ this.search.emit(this._value());
15824
+ }
15825
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
15826
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.15", type: ClxSearchComponent, isStandalone: true, selector: "clx-search", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, buttonLabel: { classPropertyName: "buttonLabel", publicName: "buttonLabel", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { search: "search" }, host: { classAttribute: "block w-full" }, providers: [
15827
+ {
15828
+ provide: NG_VALUE_ACCESSOR,
15829
+ useExisting: forwardRef(() => ClxSearchComponent),
15830
+ multi: true,
15831
+ },
15832
+ ], ngImport: i0, template: `
15833
+ <div [class]="_wrapperClass()">
15834
+ <input
15835
+ [id]="_inputId"
15836
+ type="search"
15837
+ [placeholder]="placeholder()"
15838
+ [disabled]="_disabled()"
15839
+ [value]="_value()"
15840
+ [class]="_inputClass()"
15841
+ autocomplete="off"
15842
+ (input)="_handleInput($event)"
15843
+ (keydown.enter)="_handleSubmit()"
15844
+ (blur)="_handleBlur()"
15845
+ />
15846
+ <button
15847
+ clx-button
15848
+ type="button"
15849
+ variant="solid"
15850
+ [color]="_color()"
15851
+ [size]="_buttonSize()"
15852
+ icon="search"
15853
+ [disabled]="_disabled()"
15854
+ class="rounded-l-none shrink-0"
15855
+ (click)="_handleSubmit()">
15856
+ {{ buttonLabel() }}
15857
+ </button>
15858
+ </div>
15859
+ `, isInline: true, dependencies: [{ kind: "component", type: ClxButtonComponent, selector: "button[clx-button], a[clx-button]", inputs: ["variant", "color", "size", "shape", "loading", "disabled", "block", "icon", "iconPosition", "iconOnly", "badge", "badgeColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
15860
+ }
15861
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImport: i0, type: ClxSearchComponent, decorators: [{
15862
+ type: Component,
15863
+ args: [{
15864
+ selector: 'clx-search',
15865
+ standalone: true,
15866
+ imports: [ClxButtonComponent],
15867
+ providers: [
15868
+ {
15869
+ provide: NG_VALUE_ACCESSOR,
15870
+ useExisting: forwardRef(() => ClxSearchComponent),
15871
+ multi: true,
15872
+ },
15873
+ ],
15874
+ template: `
15875
+ <div [class]="_wrapperClass()">
15876
+ <input
15877
+ [id]="_inputId"
15878
+ type="search"
15879
+ [placeholder]="placeholder()"
15880
+ [disabled]="_disabled()"
15881
+ [value]="_value()"
15882
+ [class]="_inputClass()"
15883
+ autocomplete="off"
15884
+ (input)="_handleInput($event)"
15885
+ (keydown.enter)="_handleSubmit()"
15886
+ (blur)="_handleBlur()"
15887
+ />
15888
+ <button
15889
+ clx-button
15890
+ type="button"
15891
+ variant="solid"
15892
+ [color]="_color()"
15893
+ [size]="_buttonSize()"
15894
+ icon="search"
15895
+ [disabled]="_disabled()"
15896
+ class="rounded-l-none shrink-0"
15897
+ (click)="_handleSubmit()">
15898
+ {{ buttonLabel() }}
15899
+ </button>
15900
+ </div>
15901
+ `,
15902
+ encapsulation: ViewEncapsulation.None,
15903
+ changeDetection: ChangeDetectionStrategy.OnPush,
15904
+ host: {
15905
+ class: 'block w-full',
15906
+ },
15907
+ }]
15908
+ }], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], buttonLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonLabel", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], search: [{ type: i0.Output, args: ["search"] }] } });
15909
+
15750
15910
  class ClxAnimateGroupDirective {
15751
15911
  stagger = input(100, { ...(ngDevMode ? { debugName: "stagger" } : /* istanbul ignore next */ {}), transform: numberAttribute });
15752
15912
  children;
@@ -16017,5 +16177,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.15", ngImpo
16017
16177
  * Generated bundle index. Do not edit.
16018
16178
  */
16019
16179
 
16020
- 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, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorLinkModalComponent, ClxFabComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxModalComponent, ClxModalService, ClxNativeOverlayService, ClxNavGroupComponent, ClxNumberComponent, ClxPageEmptyComponent, ClxPageHeaderComponent, ClxPageHeaderTitleDirective, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRatingComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, 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 };
16180
+ 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, ClxColorPickerComponent, ClxColumnDefDirective, ClxDateRangePickerComponent, ClxDatepickerComponent, ClxDrawerComponent, ClxDrawerService, ClxEditorComponent, ClxEditorLinkModalComponent, ClxFabComponent, ClxFilterPanelComponent, ClxHeaderCellDirective, ClxIconComponent, ClxInputComponent, ClxListComponent, ClxListItemComponent, ClxMenuComponent, ClxMenuItemComponent, ClxModalComponent, ClxModalService, ClxNativeOverlayService, ClxNavGroupComponent, ClxNumberComponent, ClxPageEmptyComponent, ClxPageHeaderComponent, ClxPageHeaderTitleDirective, ClxPageNotFoundComponent, ClxPageServerErrorComponent, ClxPageUnauthorizedComponent, ClxPaginationComponent, ClxProductComponent, ClxProductDetailComponent, ClxProfileComponent, ClxProgressBarComponent, ClxRadioComponent, ClxRadioGroupComponent, ClxRatingComponent, ClxSearchComponent, ClxSelectComponent, ClxSkeletonComponent, ClxSliderComponent, ClxSpinnerComponent, ClxStatCardComponent, ClxStepComponent, ClxStepperComponent, ClxSwitchComponent, ClxTabDirective, 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 };
16021
16181
  //# sourceMappingURL=codexly-ui.mjs.map