@ngxviewbuilder/runtime 0.11.0 → 0.12.1
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/LICENSE.md +1 -1
- package/fesm2022/ngxviewbuilder-runtime-autocomplete-element-D1-b60Yg.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-avatar-element-BZGgAqHX.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-badge-element-DwLNvH9z.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-breadcrumbs-element-lBOlvfwd.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-button-element-m24BQTuL.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-chart-element-BSWuWpXQ.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-checkbox-element-CuDort0j.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-column-q9jO7OA7.mjs +43 -0
- package/fesm2022/ngxviewbuilder-runtime-custom-html-element-B2TQNPbK.mjs +3 -0
- package/fesm2022/ngxviewbuilder-runtime-date-range-element-DYtVuNvd.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-datepicker-element-Dx9ryU_V.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-divider-element-D4828e5R.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-dropdown-coordinator.service-CDJcQkrB.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-dynamic-text.pipe-BUJ4fCqt.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-element-identity-host-Dh5Xi4Nx.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-element-wrapper-BUzRnWUH.mjs +4 -0
- package/fesm2022/ngxviewbuilder-runtime-file-upload-element-Bx_JJxsl.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-icon-element-xkaer6fW.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-iframe-element-DG-YEOXe.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-image-element-sl9NYRt4.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-input-mask.service-WZEF2C2_.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-list-box-element-BslR4TlH.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-list-grid-element-vbn5afuD.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-message-card-element-DV1boKqd.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-multi-select-element-DO_dk2mB.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-number-element-BZouLH-5.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-number-stepper-element-WzMSnzXR.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-nvb-select-xpsQ0a-_.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-nvb-style-outlet-CVovePT_.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-page-title-element-BgA2xImq.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-phone-input-element-wJDjqRGH.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-progress-bar-element-Bdr0kdSH.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-radio-element-KF9kHkJV.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-rich-text-element-CGJRHzNG.mjs +2 -0
- package/fesm2022/ngxviewbuilder-runtime-rolldown-runtime-DpJrqANO.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-router-outlet-element-DcIc0_OQ.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-select-button-element-DM0If-wo.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-select-element-kOJtgDmJ.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-signature-pad-element-BDSkjOm4.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-single-checkbox-element-CCLuAW3g.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-slider-element-DA0m8geD.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-spacer-element-D4KgGuYS.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-stats-card-element-Bwt5GL25.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-table-element-C0Pcf-Do.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-text-element-CVntVjD5.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-textarea-element-DkNUQ3Xk.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-time-picker-element-CKVMQjZ2.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-toast-element-C5TyVsu-.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-toggle-switch-element-NcB3kYta.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-video-element-D_5W6_Rh.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-viewport-breakpoints-CnsMrbX1.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime.mjs +1 -1
- package/package.json +1 -1
- package/styles/components.css +3 -3
- package/styles/element.css +8 -8
- package/styles/tokens.css +6 -4
- package/types/ngxviewbuilder-runtime.d.ts +10180 -9175
- package/fesm2022/ngxviewbuilder-runtime-avatar-element-CinoDWeT.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-breadcrumbs-element-DbY1LinO.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-icon-element-BDOiPmS_.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-ngxviewbuilder-runtime-C9Kow4Ye.mjs +0 -49
- package/fesm2022/ngxviewbuilder-runtime-toast-element-CRVkV1HD.mjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as c}from"./ngxviewbuilder-runtime-rolldown-runtime-DpJrqANO.mjs";import{g as h,on as g,t as u,yt as v}from"./ngxviewbuilder-runtime-dynamic-text.pipe-BUJ4fCqt.mjs";import{r as x,rt as f,t as m}from"./ngxviewbuilder-runtime-element-wrapper-BUzRnWUH.mjs";import{t as y}from"./ngxviewbuilder-runtime-input-mask.service-WZEF2C2_.mjs";import*as n from"@angular/core";import{ChangeDetectionStrategy as b,ChangeDetectorRef as C,Component as M,Injector as S,computed as o,effect as _,inject as l,input as I,signal as s}from"@angular/core";import{NgClass as w}from"@angular/common";var V=c({TextElement:()=>d});var d=class p{model=I.required(...ngDevMode?[{debugName:"model"}]:[]);tid=x(this.model,"nvb-text","text");useCompactStyle=s(false,...ngDevMode?[{debugName:"useCompactStyle"}]:[]);displayValue=s("",...ngDevMode?[{debugName:"displayValue"}]:[]);isEditing=s(false,...ngDevMode?[{debugName:"isEditing"}]:[]);maxLength=o(()=>{const e=Number(this.model()?.["maxlength"]);if(!Number.isFinite(e)||e<=0)return 0;return Math.floor(e)},...ngDevMode?[{debugName:"maxLength"}]:[]);showMaxLengthCounter=o(()=>{if(this.maxLength()<=0)return false;const e=this.model()?.["showMaxLengthCounter"];if(e===void 0||e===null)return true;return Boolean(e)},...ngDevMode?[{debugName:"showMaxLengthCounter"}]:[]);currentLength=o(()=>String(this.displayValue()??"").length,...ngDevMode?[{debugName:"currentLength"}]:[]);elementActionService=l(f);inputMaskService=l(y);dataService=l(g);eventService=l(h);cdr=l(C);injector=l(S);onPropertyChangedHandler=e=>{const t=String(this.model()?.dataPath??"").trim();if(!t)return;if(String(e?.payload?.elementNameOrPath??"").trim()!==t)return;this.cdr.markForCheck()};ngOnInit(){if(this.model()?.parentElement&&this.model()?.parentElement instanceof v)this.useCompactStyle.set(this.model()?.parentElement["useCompactStyle"]);this.refreshDisplayValue();_(()=>{const e=String(this.model()?.dataPath??"").trim();if(!e)return;const t=this.dataService.getValue(e);if(!Object.is(this.model().value,t))this.model().value=t;if(!this.isEditing())this.refreshDisplayValue()},{injector:this.injector});this.eventService.afterPropertyChanged.add(this.onPropertyChangedHandler)}ngOnDestroy(){this.eventService.afterPropertyChanged.remove(this.onPropertyChangedHandler)}onInput(e){this.applyMask(e);this.syncDisplayValue(e);if(this.shouldCommitForTrigger("input"))this.model().setValue(e,"input");this.runActions("input",e)}onChange(e){this.applyMask(e);this.syncDisplayValue(e);if(this.shouldCommitForTrigger("change"))this.model().setValue(e,"change");this.runActions("change",e)}onBlur(e){this.isEditing.set(false);this.model().setValue(e,"blur");this.refreshDisplayValue();this.runActions("blur",e)}onFocus(e){this.isEditing.set(true);this.runActions("focus",e)}shouldCommitForTrigger(e){const t=e==="input"?"oninput":"onchange";const i=this.normalizeExecutionMode(this.model().logicExecutionMode);const a=this.normalizeExecutionMode(this.model().validationExecutionMode);if(i===t||a===t)return true;return(this.model().events??[]).some(r=>String(r?.trigger??"").trim().toLowerCase()===e)}normalizeExecutionMode(e){const t=String(e??"").trim().toLowerCase();if(t==="oninput")return"oninput";if(t==="onchange")return"onchange";return"onblur"}runActions(e,t){const i=this.resolveInputValue(t);const a=String(this.model().name??"").trim();const r={value:i,item:null,row:null};if(a)r[a]=i;this.elementActionService.runActions(this.model(),this.model().events??[],e,r)}resolveInputValue(e){const t=e?.target;if(!t)return this.displayValue();return t.value??""}syncDisplayValue(e){const t=e?.target;this.displayValue.set(t?.value??"")}refreshDisplayValue(){this.displayValue.set(String(this.model().value??""))}applyMask(e){const t=e?.target;if(!t)return;const i=this.model()?.["maskType"]??"none";const a=this.model()?.["maskPattern"]??"";const r=this.inputMaskService.applyMask(t.value??"",i,a);if(r!==t.value)t.value=r;this.displayValue.set(t.value??"")}static ɵfac=n.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"22.2.1",ngImport:n,type:p,deps:[],target:n.ɵɵFactoryTarget.Component});static ɵcmp=n.ɵɵngDeclareComponent({minVersion:"17.0.0",version:"22.2.1",type:p,isStandalone:true,selector:"text-element",inputs:{model:{classPropertyName:"model",publicName:"model",isSignal:true,isRequired:true,transformFunction:null}},ngImport:n,template:"<element-wrapper [model]=\"model()\" #fieldWrapper=\"elementWrapper\">\n <div class=\"nvb-text-input\">\n <input\n [id]=\"fieldWrapper.controlId()\"\n type=\"text\"\n [placeholder]=\"model().placeholder ? (model().placeholder | dynamicText: model()) : ''\"\n [disabled]=\"model().disabled\"\n [readOnly]=\"model().readOnly\"\n [attr.autocomplete]=\"model()['autocomplete'] ?? null\"\n [attr.inputmode]=\"model()['inputMode'] ?? null\"\n [attr.spellcheck]=\"model()['spellcheck'] ?? null\"\n [attr.minlength]=\"model()['minlength'] ?? null\"\n [attr.maxlength]=\"model()['maxlength'] ?? null\"\n [attr.pattern]=\"model()['pattern'] ?? null\"\n [attr.aria-describedby]=\"\n fieldWrapper.describedByIds(showMaxLengthCounter() ? fieldWrapper.partId('counter') : null)\n \"\n [attr.aria-errormessage]=\"fieldWrapper.isInvalid() ? fieldWrapper.errorId() : null\"\n [attr.aria-invalid]=\"fieldWrapper.isInvalid() ? 'true' : null\"\n [attr.aria-required]=\"model().required ? 'true' : null\"\n [attr.data-testid]=\"tid('input')\"\n [class.nvb-control__text-input]=\"!this.useCompactStyle()\"\n [class.nvb-control__column-input]=\"this.useCompactStyle()\"\n [class.nvb-text-input__field--with-counter]=\"showMaxLengthCounter()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n [value]=\"displayValue()\"\n />\n\n @if (showMaxLengthCounter()) {\n <span [id]=\"fieldWrapper.partId('counter')\" class=\"nvb-text-input__counter\">\n {{ currentLength() }}/{{ maxLength() }}\n </span>\n }\n </div>\n</element-wrapper>\n",styles:[":host{display:block;width:100%}.nvb-text-input{position:relative;width:100%;min-width:0;height:100%}.nvb-text-input__field--with-counter{padding-right:54px!important}:host ::ng-deep .nvb-control__text-input,:host ::ng-deep .nvb-control__column-input{padding-left:10px;padding-inline-start:10px;text-indent:0}.nvb-text-input__counter{position:absolute;top:4px;right:8px;font-size:10px;line-height:1;color:var(--nvb-color-neutral-500);pointer-events:none}\n"],dependencies:[{kind:"component",type:m,selector:"element-wrapper",inputs:["model","controlIdInput","labelForInput","groupRole","showTextWrapperInput"],exportAs:["elementWrapper"]},{kind:"pipe",type:u,name:"dynamicText"}],changeDetection:n.ChangeDetectionStrategy.OnPush})};n.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"22.2.1",ngImport:n,type:d,decorators:[{type:M,args:[{selector:"text-element",changeDetection:b.OnPush,imports:[m,w,u],template:"<element-wrapper [model]=\"model()\" #fieldWrapper=\"elementWrapper\">\n <div class=\"nvb-text-input\">\n <input\n [id]=\"fieldWrapper.controlId()\"\n type=\"text\"\n [placeholder]=\"model().placeholder ? (model().placeholder | dynamicText: model()) : ''\"\n [disabled]=\"model().disabled\"\n [readOnly]=\"model().readOnly\"\n [attr.autocomplete]=\"model()['autocomplete'] ?? null\"\n [attr.inputmode]=\"model()['inputMode'] ?? null\"\n [attr.spellcheck]=\"model()['spellcheck'] ?? null\"\n [attr.minlength]=\"model()['minlength'] ?? null\"\n [attr.maxlength]=\"model()['maxlength'] ?? null\"\n [attr.pattern]=\"model()['pattern'] ?? null\"\n [attr.aria-describedby]=\"\n fieldWrapper.describedByIds(showMaxLengthCounter() ? fieldWrapper.partId('counter') : null)\n \"\n [attr.aria-errormessage]=\"fieldWrapper.isInvalid() ? fieldWrapper.errorId() : null\"\n [attr.aria-invalid]=\"fieldWrapper.isInvalid() ? 'true' : null\"\n [attr.aria-required]=\"model().required ? 'true' : null\"\n [attr.data-testid]=\"tid('input')\"\n [class.nvb-control__text-input]=\"!this.useCompactStyle()\"\n [class.nvb-control__column-input]=\"this.useCompactStyle()\"\n [class.nvb-text-input__field--with-counter]=\"showMaxLengthCounter()\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n [value]=\"displayValue()\"\n />\n\n @if (showMaxLengthCounter()) {\n <span [id]=\"fieldWrapper.partId('counter')\" class=\"nvb-text-input__counter\">\n {{ currentLength() }}/{{ maxLength() }}\n </span>\n }\n </div>\n</element-wrapper>\n",styles:[":host{display:block;width:100%}.nvb-text-input{position:relative;width:100%;min-width:0;height:100%}.nvb-text-input__field--with-counter{padding-right:54px!important}:host ::ng-deep .nvb-control__text-input,:host ::ng-deep .nvb-control__column-input{padding-left:10px;padding-inline-start:10px;text-indent:0}.nvb-text-input__counter{position:absolute;top:4px;right:8px;font-size:10px;line-height:1;color:var(--nvb-color-neutral-500);pointer-events:none}\n"]}]}],propDecorators:{model:[{type:n.Input,args:[{isSignal:true,alias:"model",required:true}]}]}});export{V as n,d as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as h}from"./ngxviewbuilder-runtime-rolldown-runtime-DpJrqANO.mjs";import{g,on as v,t as p,yt as y}from"./ngxviewbuilder-runtime-dynamic-text.pipe-BUJ4fCqt.mjs";import{r as f,rt as x,t as m}from"./ngxviewbuilder-runtime-element-wrapper-BUzRnWUH.mjs";import{t as b}from"./ngxviewbuilder-runtime-input-mask.service-WZEF2C2_.mjs";import*as n from"@angular/core";import{ChangeDetectionStrategy as C,ChangeDetectorRef as S,Component as _,Injector as w,computed as l,effect as M,inject as o,input as I,signal as s}from"@angular/core";import{NgClass as c}from"@angular/common";var V=h({TextAreaElement:()=>d});var d=class u{model=I.required(...ngDevMode?[{debugName:"model"}]:[]);tid=f(this.model,"nvb-textarea","textarea");useCompactStyle=s(false,...ngDevMode?[{debugName:"useCompactStyle"}]:[]);displayValue=s("",...ngDevMode?[{debugName:"displayValue"}]:[]);isEditing=s(false,...ngDevMode?[{debugName:"isEditing"}]:[]);maxLength=l(()=>{const e=Number(this.model()?.["maxlength"]);if(!Number.isFinite(e)||e<=0)return 0;return Math.floor(e)},...ngDevMode?[{debugName:"maxLength"}]:[]);showMaxLengthCounter=l(()=>{if(this.maxLength()<=0)return false;const e=this.model()?.["showMaxLengthCounter"];if(e===void 0||e===null)return true;return Boolean(e)},...ngDevMode?[{debugName:"showMaxLengthCounter"}]:[]);currentLength=l(()=>String(this.displayValue()??"").length,...ngDevMode?[{debugName:"currentLength"}]:[]);elementActionService=o(x);inputMaskService=o(b);dataService=o(v);eventService=o(g);cdr=o(S);injector=o(w);onPropertyChangedHandler=e=>{const t=String(this.model()?.dataPath??"").trim();if(!t)return;if(String(e?.payload?.elementNameOrPath??"").trim()!==t)return;this.cdr.markForCheck()};ngOnInit(){if(this.model()?.parentElement&&this.model()?.parentElement instanceof y)this.useCompactStyle.set(this.model()?.parentElement["useCompactStyle"]);this.refreshDisplayValue();M(()=>{const e=String(this.model()?.dataPath??"").trim();if(!e)return;const t=this.dataService.getValue(e);if(!Object.is(this.model().value,t))this.model().value=t;if(!this.isEditing())this.refreshDisplayValue()},{injector:this.injector});this.eventService.afterPropertyChanged.add(this.onPropertyChangedHandler)}ngOnDestroy(){this.eventService.afterPropertyChanged.remove(this.onPropertyChangedHandler)}onInput(e){this.applyMask(e);this.syncDisplayValue(e);if(this.shouldCommitForTrigger("input"))this.model().setValue(e,"input");this.runActions("input",e)}onChange(e){this.applyMask(e);this.syncDisplayValue(e);if(this.shouldCommitForTrigger("change"))this.model().setValue(e,"change");this.runActions("change",e)}onBlur(e){this.isEditing.set(false);this.model().setValue(e,"blur");this.refreshDisplayValue();this.runActions("blur",e)}onFocus(e){this.isEditing.set(true);this.runActions("focus",e)}shouldCommitForTrigger(e){const t=e==="input"?"oninput":"onchange";const a=this.normalizeExecutionMode(this.model().logicExecutionMode);const i=this.normalizeExecutionMode(this.model().validationExecutionMode);if(a===t||i===t)return true;return(this.model().events??[]).some(r=>String(r?.trigger??"").trim().toLowerCase()===e)}normalizeExecutionMode(e){const t=String(e??"").trim().toLowerCase();if(t==="oninput")return"oninput";if(t==="onchange")return"onchange";return"onblur"}runActions(e,t){const a=this.resolveInputValue(t);const i=String(this.model().name??"").trim();const r={value:a,item:null,row:null};if(i)r[i]=a;this.elementActionService.runActions(this.model(),this.model().events??[],e,r)}resolveInputValue(e){const t=e?.target;if(!t)return this.displayValue();return t.value??""}syncDisplayValue(e){const t=e?.target;this.displayValue.set(t?.value??"")}refreshDisplayValue(){this.displayValue.set(String(this.model().value??""))}applyMask(e){const t=e?.target;if(!t)return;const a=this.model()?.["maskType"]??"none";const i=this.model()?.["maskPattern"]??"";const r=this.inputMaskService.applyMask(t.value??"",a,i);if(r!==t.value)t.value=r;this.displayValue.set(t.value??"")}static ɵfac=n.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"22.2.1",ngImport:n,type:u,deps:[],target:n.ɵɵFactoryTarget.Component});static ɵcmp=n.ɵɵngDeclareComponent({minVersion:"17.0.0",version:"22.2.1",type:u,isStandalone:true,selector:"textarea-element",inputs:{model:{classPropertyName:"model",publicName:"model",isSignal:true,isRequired:true,transformFunction:null}},ngImport:n,template:"<element-wrapper [model]=\"model()\" #fieldWrapper=\"elementWrapper\">\n <div class=\"nvb-textarea\">\n <textarea\n [id]=\"fieldWrapper.controlId()\"\n [placeholder]=\"model().placeholder ? (model().placeholder | dynamicText: model()) : ''\"\n [disabled]=\"model().disabled\"\n [readOnly]=\"model().readOnly\"\n [attr.spellcheck]=\"model()['spellcheck'] ?? null\"\n [attr.minlength]=\"model()['minlength'] ?? null\"\n [attr.maxlength]=\"model()['maxlength'] ?? null\"\n [ngClass]=\"this.useCompactStyle() ? 'nvb-control__column-input ' : 'nvb-control__text-input'\"\n [class.nvb-control__column-input]=\"this.useCompactStyle()\"\n [class.nvb-control__text-input]=\"!this.useCompactStyle()\"\n [class.nvb-textarea__field--with-counter]=\"showMaxLengthCounter()\"\n [attr.aria-describedby]=\"\n fieldWrapper.describedByIds(showMaxLengthCounter() ? fieldWrapper.partId('counter') : null)\n \"\n [attr.aria-errormessage]=\"fieldWrapper.isInvalid() ? fieldWrapper.errorId() : null\"\n [attr.aria-invalid]=\"fieldWrapper.isInvalid() ? 'true' : null\"\n [attr.aria-required]=\"model().required ? 'true' : null\"\n [attr.data-testid]=\"tid('input')\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n [value]=\"displayValue()\"\n [rows]=\"model().rows\"\n ></textarea>\n @if (showMaxLengthCounter()) {\n <span [id]=\"fieldWrapper.partId('counter')\" class=\"nvb-textarea__counter\">\n {{ currentLength() }}/{{ maxLength() }}\n </span>\n }\n </div>\n</element-wrapper>\n",styles:[":host{display:block;width:100%}.nvb-textarea{position:relative;width:100%;min-width:0;height:100%}.nvb-textarea__field--with-counter{padding-bottom:18px!important}.nvb-textarea__counter{position:absolute;right:8px;bottom:6px;font-size:10px;line-height:1;color:var(--nvb-color-neutral-500);pointer-events:none}\n"],dependencies:[{kind:"component",type:m,selector:"element-wrapper",inputs:["model","controlIdInput","labelForInput","groupRole","showTextWrapperInput"],exportAs:["elementWrapper"]},{kind:"directive",type:c,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"pipe",type:p,name:"dynamicText"}],changeDetection:n.ChangeDetectionStrategy.OnPush})};n.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"22.2.1",ngImport:n,type:d,decorators:[{type:_,args:[{selector:"textarea-element",changeDetection:C.OnPush,imports:[m,c,p],template:"<element-wrapper [model]=\"model()\" #fieldWrapper=\"elementWrapper\">\n <div class=\"nvb-textarea\">\n <textarea\n [id]=\"fieldWrapper.controlId()\"\n [placeholder]=\"model().placeholder ? (model().placeholder | dynamicText: model()) : ''\"\n [disabled]=\"model().disabled\"\n [readOnly]=\"model().readOnly\"\n [attr.spellcheck]=\"model()['spellcheck'] ?? null\"\n [attr.minlength]=\"model()['minlength'] ?? null\"\n [attr.maxlength]=\"model()['maxlength'] ?? null\"\n [ngClass]=\"this.useCompactStyle() ? 'nvb-control__column-input ' : 'nvb-control__text-input'\"\n [class.nvb-control__column-input]=\"this.useCompactStyle()\"\n [class.nvb-control__text-input]=\"!this.useCompactStyle()\"\n [class.nvb-textarea__field--with-counter]=\"showMaxLengthCounter()\"\n [attr.aria-describedby]=\"\n fieldWrapper.describedByIds(showMaxLengthCounter() ? fieldWrapper.partId('counter') : null)\n \"\n [attr.aria-errormessage]=\"fieldWrapper.isInvalid() ? fieldWrapper.errorId() : null\"\n [attr.aria-invalid]=\"fieldWrapper.isInvalid() ? 'true' : null\"\n [attr.aria-required]=\"model().required ? 'true' : null\"\n [attr.data-testid]=\"tid('input')\"\n (input)=\"onInput($event)\"\n (change)=\"onChange($event)\"\n (blur)=\"onBlur($event)\"\n (focus)=\"onFocus($event)\"\n [value]=\"displayValue()\"\n [rows]=\"model().rows\"\n ></textarea>\n @if (showMaxLengthCounter()) {\n <span [id]=\"fieldWrapper.partId('counter')\" class=\"nvb-textarea__counter\">\n {{ currentLength() }}/{{ maxLength() }}\n </span>\n }\n </div>\n</element-wrapper>\n",styles:[":host{display:block;width:100%}.nvb-textarea{position:relative;width:100%;min-width:0;height:100%}.nvb-textarea__field--with-counter{padding-bottom:18px!important}.nvb-textarea__counter{position:absolute;right:8px;bottom:6px;font-size:10px;line-height:1;color:var(--nvb-color-neutral-500);pointer-events:none}\n"]}]}],propDecorators:{model:[{type:n.Input,args:[{isSignal:true,alias:"model",required:true}]}]}});export{V as n,d as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as _}from"./ngxviewbuilder-runtime-rolldown-runtime-DpJrqANO.mjs";import{_ as x,g as y,on as w}from"./ngxviewbuilder-runtime-dynamic-text.pipe-BUJ4fCqt.mjs";import{a as P,r as M,rt as S,t as b}from"./ngxviewbuilder-runtime-element-wrapper-BUzRnWUH.mjs";import{t as H}from"./ngxviewbuilder-runtime-dropdown-coordinator.service-CDJcQkrB.mjs";import*as i from"@angular/core";import{ChangeDetectionStrategy as D,ChangeDetectorRef as O,Component as C,ElementRef as I,HostListener as c,Injector as T,computed as l,effect as A,inject as o,input as $,signal as a}from"@angular/core";var W=_({TimePickerElement:()=>d});var d=class m{model=$.required(...ngDevMode?[{debugName:"model"}]:[]);tid=M(this.model,"nvb-time-picker","time-picker");isOpen=a(false,...ngDevMode?[{debugName:"isOpen"}]:[]);panelLeft=a(0,...ngDevMode?[{debugName:"panelLeft"}]:[]);panelTop=a(0,...ngDevMode?[{debugName:"panelTop"}]:[]);panelBottom=a(null,...ngDevMode?[{debugName:"panelBottom"}]:[]);selectedH24=a(0,...ngDevMode?[{debugName:"selectedH24"}]:[]);selectedMinute=a(0,...ngDevMode?[{debugName:"selectedMinute"}]:[]);hasValue=a(false,...ngDevMode?[{debugName:"hasValue"}]:[]);format=l(()=>{const e=String(this.model()?.format??"").trim().toLowerCase();if(e==="12h")return"12h";if(e==="24h")return"24h";return this.localeUses12HourClock()?"12h":"24h"},...ngDevMode?[{debugName:"format"}]:[]);selectedH12=l(()=>{const e=this.selectedH24()%12;return e===0?12:e},...ngDevMode?[{debugName:"selectedH12"}]:[]);ampm=l(()=>this.selectedH24()<12?"AM":"PM",...ngDevMode?[{debugName:"ampm"}]:[]);displayTime=l(()=>{if(!this.hasValue())return"";const e=this.selectedH24();const t=this.selectedMinute();if(this.format()==="12h")return`${this.pad(this.selectedH12())}:${this.pad(t)} ${this.ampm()}`;return`${this.pad(e)}:${this.pad(t)}`},...ngDevMode?[{debugName:"displayTime"}]:[]);hourOptions=l(()=>{if(this.format()==="12h")return[12,1,2,3,4,5,6,7,8,9,10,11];return Array.from({length:24},(e,t)=>t)},...ngDevMode?[{debugName:"hourOptions"}]:[]);minuteOptions=l(()=>{const e=Number(this.model()?.minuteStep??1);const t=Number.isFinite(e)&&e>0?Math.floor(e):1;const n=t<=30?t:1;const r=[];for(let s=0;s<60;s+=n)r.push(s);return r},...ngDevMode?[{debugName:"minuteOptions"}]:[]);injector=o(T);dataService=o(w);elementActionService=o(S);localeFormatService=o(x);eventService=o(y);cdr=o(O);hostElement=o(I);dropdownCoordinatorService=o(H);dropdownId=`time-picker-${Math.random().toString(36).slice(2,11)}`;dropdownCoordinatorSubscription=null;panelVerticalGap=4;panelBoundaryPadding=8;estimatedPanelHeight=232;onPropertyChangedHandler=e=>{const t=String(this.model()?.dataPath??"").trim();if(!t)return;if(String(e?.payload?.elementNameOrPath??"").trim()!==t)return;this.cdr.markForCheck()};ngOnInit(){this.syncFromValue(String(this.model()?.value??""));A(()=>{const e=String(this.model()?.dataPath??"").trim();if(!e)return;const t=this.dataService.getValue(e);if(!Object.is(this.model().value,t))this.model().value=t;this.syncFromValue(String(this.model()?.value??""))},{injector:this.injector});this.eventService.afterPropertyChanged.add(this.onPropertyChangedHandler);this.dropdownCoordinatorSubscription=this.dropdownCoordinatorService.activeDropdownId$.subscribe(e=>{if(!this.isOpen()||!e||e===this.dropdownId)return;this.closePanel()})}ngOnDestroy(){this.eventService.afterPropertyChanged.remove(this.onPropertyChangedHandler);this.dropdownCoordinatorSubscription?.unsubscribe();this.dropdownCoordinatorSubscription=null;this.dropdownCoordinatorService.requestClose(this.dropdownId)}onDocumentMouseDown(e){if(!this.isOpen())return;const t=e.target;if(!t)return;if(!this.hostElement.nativeElement.contains(t))this.closePanel()}onEscapePressed(){if(!this.isOpen())return;this.closePanel()}onWindowResize(){if(!this.isOpen())return;this.calculatePanelPosition()}onDocumentScroll(){if(!this.isOpen())return;this.calculatePanelPosition()}toggle(e){e.stopPropagation();if(this.isLocked())return;if(this.isOpen())this.closePanel();else this.openPanel()}close(){this.closePanel()}selectHour(e,t){t.stopPropagation();if(this.format()==="12h")this.selectedH24.set(this.h12ToH24(e,this.ampm()));else this.selectedH24.set(e);this.hasValue.set(true);this.commitCurrent()}selectMinute(e,t){t.stopPropagation();this.selectedMinute.set(e);this.hasValue.set(true);this.commitCurrent()}selectAmPm(e,t){t.stopPropagation();this.selectedH24.set(this.h12ToH24(this.selectedH12(),e));this.hasValue.set(true);this.commitCurrent()}isHourSelected(e){return this.format()==="12h"?this.selectedH12()===e:this.selectedH24()===e}pad(e){return String(e).padStart(2,"0")}isLocked(){const e=this.model();return Boolean(e?.disabled)||Boolean(e?.readOnly)||Boolean(e["__pfInteractionLocked"])}openPanel(){this.calculatePanelPosition();this.dropdownCoordinatorService.requestClose();this.dropdownCoordinatorService.requestOpen(this.dropdownId);this.isOpen.set(true)}closePanel(){if(!this.isOpen())return;this.isOpen.set(false);this.dropdownCoordinatorService.requestClose(this.dropdownId)}calculatePanelPosition(){const e=this.hostElement.nativeElement.querySelector(".nvb-time-picker__trigger");if(!e){this.panelLeft.set(0);this.panelTop.set(0);this.panelBottom.set(null);return}const t=e.getBoundingClientRect();const n=Math.max(window.innerWidth??0,0);const r=Math.max(window.innerHeight??0,0);const s=this.format()==="12h"?224:168;const u=this.panelBoundaryPadding;const h=Math.max(u,n-s-this.panelBoundaryPadding);const g=Math.min(Math.max(t.left,u),h);const v=Math.max(0,r-t.bottom-this.panelBoundaryPadding-this.panelVerticalGap);const f=Math.max(0,t.top-this.panelBoundaryPadding-this.panelVerticalGap);const k=v<Math.min(this.estimatedPanelHeight,220)&&f>v;const p=P(e);this.panelLeft.set(g-p.left);if(k){this.panelTop.set(null);this.panelBottom.set(p.bottom-t.top+this.panelVerticalGap)}else{this.panelTop.set(t.bottom+this.panelVerticalGap-p.top);this.panelBottom.set(null)}}commitCurrent(){const e=`${this.pad(this.selectedH24())}:${this.pad(this.selectedMinute())}`;this.model().value=e;const t=String(this.model().dataPath??"").trim();if(t)this.dataService.setValue(t,e);const n=String(this.model().name??"").trim();const r={value:e,item:null,row:null};if(n)r[n]=e;this.elementActionService.runActions(this.model(),this.model().events??[],"change",r);this.elementActionService.runActions(this.model(),this.model().events??[],"input",r)}syncFromValue(e){const t=/^(\d{1,2}):(\d{2})$/.exec(e.trim());if(!t){this.hasValue.set(false);return}const n=Number(t[1]);const r=Number(t[2]);if(n<0||n>23||r<0||r>59){this.hasValue.set(false);return}this.selectedH24.set(n);this.selectedMinute.set(r);this.hasValue.set(true)}h12ToH24(e,t){if(t==="AM")return e===12?0:e;return e===12?12:e+12}localeUses12HourClock(){try{return new Intl.DateTimeFormat(this.localeFormatService.resolveLocale(),{hour:"numeric"}).resolvedOptions().hour12===true}catch{return false}}static ɵfac=i.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"22.2.1",ngImport:i,type:m,deps:[],target:i.ɵɵFactoryTarget.Component});static ɵcmp=i.ɵɵngDeclareComponent({minVersion:"17.0.0",version:"22.2.1",type:m,isStandalone:true,selector:"time-picker-element",inputs:{model:{classPropertyName:"model",publicName:"model",isSignal:true,isRequired:true,transformFunction:null}},host:{listeners:{"document:mousedown":"onDocumentMouseDown($event)","document:keydown.escape":"onEscapePressed()","window:resize":"onWindowResize()","document:scroll":"onDocumentScroll()"}},ngImport:i,template:"<element-wrapper [model]=\"model()\" #fieldWrapper=\"elementWrapper\">\n <div\n class=\"nvb-time-picker\"\n [class.nvb-time-picker--open]=\"isOpen()\"\n [class.nvb-time-picker--disabled]=\"model().disabled\"\n [class.nvb-time-picker--readonly]=\"model().readOnly\"\n >\n <!-- Trigger -->\n <button\n type=\"button\"\n class=\"nvb-time-picker__trigger\"\n [id]=\"fieldWrapper.controlId()\"\n [disabled]=\"model().disabled\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-labelledby]=\"fieldWrapper.labelId()\"\n [attr.aria-required]=\"model().required ? 'true' : null\"\n [attr.aria-invalid]=\"fieldWrapper.isInvalid() ? 'true' : null\"\n [attr.aria-errormessage]=\"fieldWrapper.isInvalid() ? fieldWrapper.errorId() : null\"\n [attr.aria-describedby]=\"fieldWrapper.describedByIds()\"\n [attr.data-testid]=\"tid('root')\"\n (click)=\"toggle($event)\"\n >\n @if (displayTime()) {\n <span class=\"nvb-time-picker__value\">{{ displayTime() }}</span>\n } @else {\n <span class=\"nvb-time-picker__placeholder\">{{ model().placeholder || 'Select time' }}</span>\n }\n <span class=\"material-symbols-outlined nvb-time-picker__icon\" aria-hidden=\"true\">schedule</span>\n </button>\n\n <!-- Panel -->\n @if (isOpen()) {\n <div [attr.data-testid]=\"tid('popup')\"\n class=\"nvb-time-picker__panel\"\n role=\"listbox\"\n [attr.aria-label]=\"'Select time'\"\n [style.left.px]=\"panelLeft()\"\n [style.top]=\"panelTop() !== null ? panelTop() + 'px' : 'auto'\"\n [style.bottom]=\"panelBottom() !== null ? panelBottom() + 'px' : 'auto'\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n >\n <!-- Hours -->\n <div class=\"nvb-time-picker__col\" role=\"group\" aria-label=\"Hours\">\n @for (h of hourOptions(); track h) {\n <button [attr.data-testid]=\"tid('hour', h)\"\n type=\"button\"\n class=\"nvb-time-picker__opt\"\n [class.nvb-time-picker__opt--selected]=\"isHourSelected(h)\"\n role=\"option\"\n [attr.aria-selected]=\"isHourSelected(h)\"\n (click)=\"selectHour(h, $event)\"\n >{{ pad(h) }}</button>\n }\n </div>\n\n <span class=\"nvb-time-picker__sep\" aria-hidden=\"true\">:</span>\n\n <!-- Minutes -->\n <div class=\"nvb-time-picker__col\" role=\"group\" aria-label=\"Minutes\">\n @for (m of minuteOptions(); track m) {\n <button [attr.data-testid]=\"tid('minute', m)\"\n type=\"button\"\n class=\"nvb-time-picker__opt\"\n [class.nvb-time-picker__opt--selected]=\"selectedMinute() === m\"\n role=\"option\"\n [attr.aria-selected]=\"selectedMinute() === m\"\n (click)=\"selectMinute(m, $event)\"\n >{{ pad(m) }}</button>\n }\n </div>\n\n @if (format() === '12h') {\n <div class=\"nvb-time-picker__col nvb-time-picker__col--ampm\" role=\"group\" aria-label=\"AM or PM\">\n <button [attr.data-testid]=\"tid('am')\"\n type=\"button\"\n class=\"nvb-time-picker__opt\"\n [class.nvb-time-picker__opt--selected]=\"ampm() === 'AM'\"\n role=\"option\"\n [attr.aria-selected]=\"ampm() === 'AM'\"\n (click)=\"selectAmPm('AM', $event)\"\n >AM</button>\n <button [attr.data-testid]=\"tid('pm')\"\n type=\"button\"\n class=\"nvb-time-picker__opt\"\n [class.nvb-time-picker__opt--selected]=\"ampm() === 'PM'\"\n role=\"option\"\n [attr.aria-selected]=\"ampm() === 'PM'\"\n (click)=\"selectAmPm('PM', $event)\"\n >PM</button>\n </div>\n }\n </div>\n }\n </div>\n</element-wrapper>\n",styles:['@charset "UTF-8";:host{display:block;width:100%}.nvb-time-picker{position:relative;display:block;width:100%}.nvb-time-picker__trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:var(--nvb-control-height, 40px);padding:0 12px;border:1px solid var(--nvb-color-neutral-300);border-radius:var(--nvb-input-radius, var(--nvb-radius-md));background:var(--nvb-color-neutral-000);cursor:pointer;font-size:14px;font-family:inherit;text-align:left;transition:border-color .16s ease,box-shadow .16s ease}.nvb-time-picker__trigger:hover:not(:disabled){border-color:var(--nvb-color-neutral-400)}.nvb-time-picker__trigger:focus-visible{outline:0;border-color:var(--nvb-color-primary-500);box-shadow:var(--nvb-focus-ring, 0 0 0 3px color-mix(in oklab, var(--nvb-color-primary-500) 18%, transparent))}.nvb-time-picker__trigger:disabled{opacity:.6;cursor:not-allowed;background:var(--nvb-color-neutral-050, #f8fafc)}.nvb-time-picker--open .nvb-time-picker__trigger{border-color:var(--nvb-color-primary-500);box-shadow:var(--nvb-focus-ring, 0 0 0 3px color-mix(in oklab, var(--nvb-color-primary-500) 18%, transparent))}.nvb-time-picker--readonly .nvb-time-picker__trigger{background:var(--nvb-color-neutral-050, #f8fafc);cursor:default}.nvb-time-picker__value{flex:1;color:var(--nvb-color-neutral-900);font-variant-numeric:tabular-nums}.nvb-time-picker__placeholder{flex:1;color:var(--nvb-color-neutral-400)}.nvb-time-picker__icon{font-size:18px;color:var(--nvb-color-neutral-500);flex-shrink:0;transition:color .14s ease}.nvb-time-picker--open .nvb-time-picker__icon,.nvb-time-picker__trigger:hover:not(:disabled) .nvb-time-picker__icon{color:var(--nvb-color-primary-500)}.nvb-time-picker__panel{position:fixed;top:0;left:0;z-index:var(--nvb-floating-overlay-z-index, 2147483000);display:flex;align-items:flex-start;gap:2px;background:var(--nvb-color-neutral-000);border:1px solid var(--nvb-color-neutral-200);border-radius:var(--nvb-menu-radius, var(--nvb-card-radius, var(--nvb-radius-md)));box-shadow:0 4px 6px -1px color-mix(in oklab,var(--nvb-color-neutral-900) 8%,transparent),0 8px 20px -4px color-mix(in oklab,var(--nvb-color-neutral-900) 10%,transparent);padding:6px 4px;min-width:160px;transform-origin:top left}.nvb-time-picker__col{display:flex;flex-direction:column;overflow-y:auto;max-height:208px;flex:1;gap:1px;scrollbar-width:thin;scrollbar-color:var(--nvb-color-neutral-200) transparent}.nvb-time-picker__col::-webkit-scrollbar{width:4px}.nvb-time-picker__col::-webkit-scrollbar-thumb{background:var(--nvb-color-neutral-200);border-radius:var(--nvb-radius-sm)}.nvb-time-picker__col--ampm{flex:0 0 52px;border-left:1px solid var(--nvb-color-neutral-100);padding-left:2px}.nvb-time-picker__sep{font-size:16px;font-weight:700;color:var(--nvb-color-neutral-400);align-self:flex-start;padding:7px 1px 0;flex-shrink:0}.nvb-time-picker__opt{padding:6px 8px;border:0;border-radius:var(--nvb-control-radius, var(--nvb-radius-md));background:transparent;cursor:pointer;font-size:13px;font-family:inherit;font-variant-numeric:tabular-nums;color:var(--nvb-color-neutral-700);text-align:center;white-space:nowrap;flex-shrink:0;transition:background-color .1s ease,color .1s ease}.nvb-time-picker__opt:hover{background:color-mix(in oklab,var(--nvb-color-neutral-100) 90%,transparent)}.nvb-time-picker__opt--selected{background:color-mix(in oklab,var(--nvb-color-primary-500) 12%,var(--nvb-color-surface-mix-target, white));color:var(--nvb-color-primary-700);font-weight:600}.nvb-time-picker__opt--selected:hover{background:color-mix(in oklab,var(--nvb-color-primary-500) 18%,var(--nvb-color-surface-mix-target, white))}\n'],dependencies:[{kind:"component",type:b,selector:"element-wrapper",inputs:["model","controlIdInput","labelForInput","groupRole","showTextWrapperInput"],exportAs:["elementWrapper"]}],changeDetection:i.ChangeDetectionStrategy.OnPush})};i.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"22.2.1",ngImport:i,type:d,decorators:[{type:C,args:[{selector:"time-picker-element",changeDetection:D.OnPush,imports:[b],template:"<element-wrapper [model]=\"model()\" #fieldWrapper=\"elementWrapper\">\n <div\n class=\"nvb-time-picker\"\n [class.nvb-time-picker--open]=\"isOpen()\"\n [class.nvb-time-picker--disabled]=\"model().disabled\"\n [class.nvb-time-picker--readonly]=\"model().readOnly\"\n >\n <!-- Trigger -->\n <button\n type=\"button\"\n class=\"nvb-time-picker__trigger\"\n [id]=\"fieldWrapper.controlId()\"\n [disabled]=\"model().disabled\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-haspopup]=\"'listbox'\"\n [attr.aria-labelledby]=\"fieldWrapper.labelId()\"\n [attr.aria-required]=\"model().required ? 'true' : null\"\n [attr.aria-invalid]=\"fieldWrapper.isInvalid() ? 'true' : null\"\n [attr.aria-errormessage]=\"fieldWrapper.isInvalid() ? fieldWrapper.errorId() : null\"\n [attr.aria-describedby]=\"fieldWrapper.describedByIds()\"\n [attr.data-testid]=\"tid('root')\"\n (click)=\"toggle($event)\"\n >\n @if (displayTime()) {\n <span class=\"nvb-time-picker__value\">{{ displayTime() }}</span>\n } @else {\n <span class=\"nvb-time-picker__placeholder\">{{ model().placeholder || 'Select time' }}</span>\n }\n <span class=\"material-symbols-outlined nvb-time-picker__icon\" aria-hidden=\"true\">schedule</span>\n </button>\n\n <!-- Panel -->\n @if (isOpen()) {\n <div [attr.data-testid]=\"tid('popup')\"\n class=\"nvb-time-picker__panel\"\n role=\"listbox\"\n [attr.aria-label]=\"'Select time'\"\n [style.left.px]=\"panelLeft()\"\n [style.top]=\"panelTop() !== null ? panelTop() + 'px' : 'auto'\"\n [style.bottom]=\"panelBottom() !== null ? panelBottom() + 'px' : 'auto'\"\n (mousedown)=\"$event.stopPropagation()\"\n (click)=\"$event.stopPropagation()\"\n >\n <!-- Hours -->\n <div class=\"nvb-time-picker__col\" role=\"group\" aria-label=\"Hours\">\n @for (h of hourOptions(); track h) {\n <button [attr.data-testid]=\"tid('hour', h)\"\n type=\"button\"\n class=\"nvb-time-picker__opt\"\n [class.nvb-time-picker__opt--selected]=\"isHourSelected(h)\"\n role=\"option\"\n [attr.aria-selected]=\"isHourSelected(h)\"\n (click)=\"selectHour(h, $event)\"\n >{{ pad(h) }}</button>\n }\n </div>\n\n <span class=\"nvb-time-picker__sep\" aria-hidden=\"true\">:</span>\n\n <!-- Minutes -->\n <div class=\"nvb-time-picker__col\" role=\"group\" aria-label=\"Minutes\">\n @for (m of minuteOptions(); track m) {\n <button [attr.data-testid]=\"tid('minute', m)\"\n type=\"button\"\n class=\"nvb-time-picker__opt\"\n [class.nvb-time-picker__opt--selected]=\"selectedMinute() === m\"\n role=\"option\"\n [attr.aria-selected]=\"selectedMinute() === m\"\n (click)=\"selectMinute(m, $event)\"\n >{{ pad(m) }}</button>\n }\n </div>\n\n @if (format() === '12h') {\n <div class=\"nvb-time-picker__col nvb-time-picker__col--ampm\" role=\"group\" aria-label=\"AM or PM\">\n <button [attr.data-testid]=\"tid('am')\"\n type=\"button\"\n class=\"nvb-time-picker__opt\"\n [class.nvb-time-picker__opt--selected]=\"ampm() === 'AM'\"\n role=\"option\"\n [attr.aria-selected]=\"ampm() === 'AM'\"\n (click)=\"selectAmPm('AM', $event)\"\n >AM</button>\n <button [attr.data-testid]=\"tid('pm')\"\n type=\"button\"\n class=\"nvb-time-picker__opt\"\n [class.nvb-time-picker__opt--selected]=\"ampm() === 'PM'\"\n role=\"option\"\n [attr.aria-selected]=\"ampm() === 'PM'\"\n (click)=\"selectAmPm('PM', $event)\"\n >PM</button>\n </div>\n }\n </div>\n }\n </div>\n</element-wrapper>\n",styles:['@charset "UTF-8";:host{display:block;width:100%}.nvb-time-picker{position:relative;display:block;width:100%}.nvb-time-picker__trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;height:var(--nvb-control-height, 40px);padding:0 12px;border:1px solid var(--nvb-color-neutral-300);border-radius:var(--nvb-input-radius, var(--nvb-radius-md));background:var(--nvb-color-neutral-000);cursor:pointer;font-size:14px;font-family:inherit;text-align:left;transition:border-color .16s ease,box-shadow .16s ease}.nvb-time-picker__trigger:hover:not(:disabled){border-color:var(--nvb-color-neutral-400)}.nvb-time-picker__trigger:focus-visible{outline:0;border-color:var(--nvb-color-primary-500);box-shadow:var(--nvb-focus-ring, 0 0 0 3px color-mix(in oklab, var(--nvb-color-primary-500) 18%, transparent))}.nvb-time-picker__trigger:disabled{opacity:.6;cursor:not-allowed;background:var(--nvb-color-neutral-050, #f8fafc)}.nvb-time-picker--open .nvb-time-picker__trigger{border-color:var(--nvb-color-primary-500);box-shadow:var(--nvb-focus-ring, 0 0 0 3px color-mix(in oklab, var(--nvb-color-primary-500) 18%, transparent))}.nvb-time-picker--readonly .nvb-time-picker__trigger{background:var(--nvb-color-neutral-050, #f8fafc);cursor:default}.nvb-time-picker__value{flex:1;color:var(--nvb-color-neutral-900);font-variant-numeric:tabular-nums}.nvb-time-picker__placeholder{flex:1;color:var(--nvb-color-neutral-400)}.nvb-time-picker__icon{font-size:18px;color:var(--nvb-color-neutral-500);flex-shrink:0;transition:color .14s ease}.nvb-time-picker--open .nvb-time-picker__icon,.nvb-time-picker__trigger:hover:not(:disabled) .nvb-time-picker__icon{color:var(--nvb-color-primary-500)}.nvb-time-picker__panel{position:fixed;top:0;left:0;z-index:var(--nvb-floating-overlay-z-index, 2147483000);display:flex;align-items:flex-start;gap:2px;background:var(--nvb-color-neutral-000);border:1px solid var(--nvb-color-neutral-200);border-radius:var(--nvb-menu-radius, var(--nvb-card-radius, var(--nvb-radius-md)));box-shadow:0 4px 6px -1px color-mix(in oklab,var(--nvb-color-neutral-900) 8%,transparent),0 8px 20px -4px color-mix(in oklab,var(--nvb-color-neutral-900) 10%,transparent);padding:6px 4px;min-width:160px;transform-origin:top left}.nvb-time-picker__col{display:flex;flex-direction:column;overflow-y:auto;max-height:208px;flex:1;gap:1px;scrollbar-width:thin;scrollbar-color:var(--nvb-color-neutral-200) transparent}.nvb-time-picker__col::-webkit-scrollbar{width:4px}.nvb-time-picker__col::-webkit-scrollbar-thumb{background:var(--nvb-color-neutral-200);border-radius:var(--nvb-radius-sm)}.nvb-time-picker__col--ampm{flex:0 0 52px;border-left:1px solid var(--nvb-color-neutral-100);padding-left:2px}.nvb-time-picker__sep{font-size:16px;font-weight:700;color:var(--nvb-color-neutral-400);align-self:flex-start;padding:7px 1px 0;flex-shrink:0}.nvb-time-picker__opt{padding:6px 8px;border:0;border-radius:var(--nvb-control-radius, var(--nvb-radius-md));background:transparent;cursor:pointer;font-size:13px;font-family:inherit;font-variant-numeric:tabular-nums;color:var(--nvb-color-neutral-700);text-align:center;white-space:nowrap;flex-shrink:0;transition:background-color .1s ease,color .1s ease}.nvb-time-picker__opt:hover{background:color-mix(in oklab,var(--nvb-color-neutral-100) 90%,transparent)}.nvb-time-picker__opt--selected{background:color-mix(in oklab,var(--nvb-color-primary-500) 12%,var(--nvb-color-surface-mix-target, white));color:var(--nvb-color-primary-700);font-weight:600}.nvb-time-picker__opt--selected:hover{background:color-mix(in oklab,var(--nvb-color-primary-500) 18%,var(--nvb-color-surface-mix-target, white))}\n']}]}],propDecorators:{model:[{type:i.Input,args:[{isSignal:true,alias:"model",required:true}]}],onDocumentMouseDown:[{type:c,args:["document:mousedown",["$event"]]}],onEscapePressed:[{type:c,args:["document:keydown.escape"]}],onWindowResize:[{type:c,args:["window:resize"]}],onDocumentScroll:[{type:c,args:["document:scroll"]}]}});export{W as n,d as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{an as p,sn as u,t as r}from"./ngxviewbuilder-runtime-dynamic-text.pipe-BUJ4fCqt.mjs";import{o as a,r as m,rt as b,t as l}from"./ngxviewbuilder-runtime-element-wrapper-BUzRnWUH.mjs";import*as e from"@angular/core";import{ChangeDetectionStrategy as h,Component as g,computed as n,inject as c,input as x,signal as f}from"@angular/core";import{NgClass as d}from"@angular/common";var v=class o{model=x.required(...ngDevMode?[{debugName:"model"}]:[]);tid=m(this.model,"nvb-toast","toast");visible=f(true,...ngDevMode?[{debugName:"visible"}]:[]);elementActionService=c(b);uiTranslationService=c(u);hideTimeoutId=null;autoHideStartedAt=0;autoHideDelayMs=0;autoHideRemainingMs=0;isEditor=n(()=>p.isEditor(),...ngDevMode?[{debugName:"isEditor"}]:[]);shellClass=n(()=>{return{[`nvb-toast-shell--${this.resolvePosition()}`]:true,"nvb-toast-shell--editor":this.isEditor()}},...ngDevMode?[{debugName:"shellClass"}]:[]);variantClass=n(()=>`nvb-toast--${this.resolveVariant()}`,...ngDevMode?[{debugName:"variantClass"}]:[]);iconName=n(()=>{const t=String(this.model()?.icon??"").trim();if(t)return t;switch(this.resolveVariant()){case"success":return"check_circle";case"warning":return"warning";case"error":return"error";default:return"info"}},...ngDevMode?[{debugName:"iconName"}]:[]);showActionButton=n(()=>String(this.model()?.actionText??"").trim().length>0,...ngDevMode?[{debugName:"showActionButton"}]:[]);ngOnInit(){this.visible.set(Boolean(this.model()?.initiallyVisible??true));if(this.isEditor()){this.visible.set(true);return}this.scheduleAutoHide()}ngOnDestroy(){this.clearAutoHide()}onToastClick(t){t.stopPropagation();this.runActions("click")}onActionClick(t){t.preventDefault();t.stopPropagation();this.runActions("action")}onDismissClick(t){t.preventDefault();t.stopPropagation();this.visible.set(false);this.clearAutoHide();this.runActions("dismiss")}pauseAutoHide(){if(this.isEditor()||this.hideTimeoutId===null)return;const t=Date.now()-this.autoHideStartedAt;this.autoHideRemainingMs=Math.max(1e3,this.autoHideDelayMs-t);this.clearAutoHide()}resumeAutoHide(){if(this.isEditor()||!this.visible()||!this.model().autoHide||this.hideTimeoutId!==null)return;this.scheduleAutoHide(this.autoHideRemainingMs||this.resolveAutoHideDelayMs())}resolvedTitle(){const t=String(this.model()?.title??"").trim();return t==="Notification"?this.uiTranslationService.translate("toast.titleDefault","Notification"):t}resolvedDescription(){const t=String(this.model()?.descriptionText??"").trim();return t==="Toast message"?this.uiTranslationService.translate("toast.descriptionDefault","Toast message"):t}dismissLabel(){return this.uiTranslationService.translate("common.dismiss","Dismiss")}toastAriaLive(){return this.resolveVariant()==="info"?"polite":"assertive"}toastRole(){return this.toastAriaLive()==="assertive"?"alert":"status"}scheduleAutoHide(t=this.resolveAutoHideDelayMs()){this.clearAutoHide();if(!this.visible())return;if(!this.model().autoHide)return;this.autoHideDelayMs=t;this.autoHideRemainingMs=t;this.autoHideStartedAt=Date.now();this.hideTimeoutId=setTimeout(()=>{this.visible.set(false);this.hideTimeoutId=null;this.runActions("autoHide")},t)}clearAutoHide(){if(this.hideTimeoutId===null)return;clearTimeout(this.hideTimeoutId);this.hideTimeoutId=null}resolveAutoHideDelayMs(){const t=Number(this.model()?.autoHideMs);if(Number.isFinite(t)&&t>=0)return Math.floor(t);return 7e3}async runActions(t){const i={action:t,value:this.model().value,item:null,row:null};const s=String(this.model().name??"").trim();if(s)i[s]=this.model().value;await this.elementActionService.runActions(this.model(),this.model().events??[],"click",i)}resolveVariant(){const t=String(this.model()?.variant??"info").trim().toLowerCase();if(t==="error"||t==="danger"||t==="risk")return"error";if(t==="warning"||t==="warn")return"warning";if(t==="success"||t==="ok")return"success";if(t==="info"||t==="neutral")return"info";return"info"}resolvePosition(){const t=String(this.model()?.position??"top-right").trim().toLowerCase();if(t==="top-left"||t==="top-center"||t==="top-right"||t==="bottom-left"||t==="bottom-center"||t==="bottom-right")return t;return"top-right"}static ɵfac=e.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"22.2.1",ngImport:e,type:o,deps:[],target:e.ɵɵFactoryTarget.Component});static ɵcmp=e.ɵɵngDeclareComponent({minVersion:"17.0.0",version:"22.2.1",type:o,isStandalone:true,selector:"toast-element",inputs:{model:{classPropertyName:"model",publicName:"model",isSignal:true,isRequired:true,transformFunction:null}},ngImport:e,template:"<element-wrapper [model]=\"model()\">\n @if (visible()) {\n <section class=\"nvb-toast-shell\" [ngClass]=\"shellClass()\" [attr.data-testid]=\"tid('root')\">\n <article [attr.data-testid]=\"tid('toast')\"\n class=\"nvb-toast\"\n [ngClass]=\"variantClass()\"\n [class.nvb-toast--no-icon]=\"!model().showIcon\"\n [attr.role]=\"toastRole()\"\n [attr.aria-live]=\"toastAriaLive()\"\n (click)=\"onToastClick($event)\"\n (mouseenter)=\"pauseAutoHide()\"\n (mouseleave)=\"resumeAutoHide()\"\n (focusin)=\"pauseAutoHide()\"\n (focusout)=\"resumeAutoHide()\"\n >\n @if (model().showIcon) {\n <span class=\"nvb-toast__media\" aria-hidden=\"true\">\n <nvb-icon class=\"nvb-toast__icon\" [name]=\"iconName()\"></nvb-icon>\n </span>\n }\n\n <div class=\"nvb-toast__content\">\n <h4 class=\"nvb-toast__title\">{{ resolvedTitle() | dynamicText: model() }}</h4>\n\n @if (resolvedDescription()) {\n <p class=\"nvb-toast__description\">\n {{ resolvedDescription() | dynamicText: model() }}\n </p>\n }\n </div>\n\n @if (showActionButton()) {\n <button [attr.data-testid]=\"tid('action')\" type=\"button\" class=\"nvb-toast__action\" (click)=\"onActionClick($event)\">\n {{ model().actionText | dynamicText: model() }}\n </button>\n }\n\n @if (model().dismissible) {\n <button [attr.data-testid]=\"tid('dismiss')\"\n type=\"button\"\n class=\"nvb-toast__dismiss\"\n (click)=\"onDismissClick($event)\"\n [attr.aria-label]=\"dismissLabel()\"\n >\n <nvb-icon name=\"close\"></nvb-icon>\n </button>\n }\n </article>\n </section>\n }\n</element-wrapper>\n",styles:[":host{display:block;width:100%;font-family:var(--nvb-font-family)}.nvb-toast-shell{position:fixed;z-index:2147483500;width:min(360px,100vw - 32px);pointer-events:none;display:grid;gap:16px}.nvb-toast-shell--editor{position:relative;inset:auto;width:min(360px,100%);max-width:100%;margin-top:8px}.nvb-toast-shell--top-left{top:16px;left:16px}.nvb-toast-shell--top-center{top:16px;left:50%;transform:translate(-50%)}.nvb-toast-shell--top-right{top:16px;right:16px}.nvb-toast-shell--bottom-left{bottom:16px;left:16px}.nvb-toast-shell--bottom-center{bottom:16px;left:50%;transform:translate(-50%)}.nvb-toast-shell--bottom-right{bottom:16px;right:16px}.nvb-toast{--nvb-toast-icon-color: var(--nvb-color-primary-600);pointer-events:auto;position:relative;display:grid;grid-template-columns:20px minmax(0,1fr) 24px;gap:4px 12px;align-items:start;min-height:52px;padding:12px;border:1px solid var(--nvb-color-neutral-200);border-radius:var(--nvb-toast-radius, var(--nvb-radius-sm));background:var(--nvb-color-neutral-000);color:var(--nvb-color-neutral-800);box-shadow:0 8px 16px color-mix(in oklab,var(--nvb-color-neutral-950) 14%,transparent),0 0 2px color-mix(in oklab,var(--nvb-color-neutral-950) 12%,transparent);overflow:hidden}.nvb-toast__media{grid-column:1;grid-row:1/span 2;width:20px;height:20px;margin-top:1px;display:inline-flex;align-items:center;justify-content:center;color:var(--nvb-toast-icon-color);flex:0 0 auto}.nvb-toast__icon{font-size:20px;line-height:1}.nvb-toast__content{grid-column:2;min-width:0;display:grid;gap:2px}.nvb-toast--no-icon .nvb-toast__content,.nvb-toast--no-icon .nvb-toast__action{grid-column:1/3}.nvb-toast__title{margin:0;font-size:14px;font-weight:600;line-height:20px;letter-spacing:0;color:var(--nvb-color-neutral-900)}.nvb-toast__description{margin:0;font-size:13px;line-height:18px;color:var(--nvb-color-neutral-600);overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.nvb-toast__action{grid-column:2;justify-self:start;min-height:22px;padding:0;border:0;border-radius:var(--nvb-button-radius, var(--nvb-radius-sm));background:transparent;color:var(--nvb-color-primary-700);font:inherit;font-size:13px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap}.nvb-toast__action:hover{color:var(--nvb-color-primary-800);text-decoration:underline;text-underline-offset:2px}.nvb-toast__action:focus-visible,.nvb-toast__dismiss:focus-visible{outline:0;box-shadow:var(--nvb-focus-ring)}.nvb-toast__dismiss{grid-column:3;grid-row:1;width:24px;height:24px;margin:-2px -2px 0 0;border:1px solid transparent;border-radius:var(--nvb-button-radius, var(--nvb-radius-sm));background:transparent;color:var(--nvb-color-neutral-600);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .16s ease,color .16s ease}.nvb-toast__dismiss:hover{background:var(--nvb-color-neutral-100);color:var(--nvb-color-neutral-900)}.nvb-toast--info{--nvb-toast-icon-color: var(--nvb-color-primary-600)}.nvb-toast--success{--nvb-toast-icon-color: var(--nvb-color-success-700)}.nvb-toast--warning{--nvb-toast-icon-color: var(--nvb-color-warning-700)}.nvb-toast--error{--nvb-toast-icon-color: var(--nvb-color-risk-700)}@media(max-width:520px){.nvb-toast-shell{width:min(360px,100vw - 24px)}}\n"],dependencies:[{kind:"component",type:l,selector:"element-wrapper",inputs:["model","controlIdInput","labelForInput","groupRole","showTextWrapperInput"],exportAs:["elementWrapper"]},{kind:"directive",type:d,selector:"[ngClass]",inputs:["class","ngClass"]},{kind:"component",type:a,selector:"nvb-icon",inputs:["name","svg","ariaLabel"]},{kind:"pipe",type:r,name:"dynamicText"}],changeDetection:e.ChangeDetectionStrategy.OnPush})};e.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"22.2.1",ngImport:e,type:v,decorators:[{type:g,args:[{selector:"toast-element",changeDetection:h.OnPush,imports:[l,d,r,a],template:"<element-wrapper [model]=\"model()\">\n @if (visible()) {\n <section class=\"nvb-toast-shell\" [ngClass]=\"shellClass()\" [attr.data-testid]=\"tid('root')\">\n <article [attr.data-testid]=\"tid('toast')\"\n class=\"nvb-toast\"\n [ngClass]=\"variantClass()\"\n [class.nvb-toast--no-icon]=\"!model().showIcon\"\n [attr.role]=\"toastRole()\"\n [attr.aria-live]=\"toastAriaLive()\"\n (click)=\"onToastClick($event)\"\n (mouseenter)=\"pauseAutoHide()\"\n (mouseleave)=\"resumeAutoHide()\"\n (focusin)=\"pauseAutoHide()\"\n (focusout)=\"resumeAutoHide()\"\n >\n @if (model().showIcon) {\n <span class=\"nvb-toast__media\" aria-hidden=\"true\">\n <nvb-icon class=\"nvb-toast__icon\" [name]=\"iconName()\"></nvb-icon>\n </span>\n }\n\n <div class=\"nvb-toast__content\">\n <h4 class=\"nvb-toast__title\">{{ resolvedTitle() | dynamicText: model() }}</h4>\n\n @if (resolvedDescription()) {\n <p class=\"nvb-toast__description\">\n {{ resolvedDescription() | dynamicText: model() }}\n </p>\n }\n </div>\n\n @if (showActionButton()) {\n <button [attr.data-testid]=\"tid('action')\" type=\"button\" class=\"nvb-toast__action\" (click)=\"onActionClick($event)\">\n {{ model().actionText | dynamicText: model() }}\n </button>\n }\n\n @if (model().dismissible) {\n <button [attr.data-testid]=\"tid('dismiss')\"\n type=\"button\"\n class=\"nvb-toast__dismiss\"\n (click)=\"onDismissClick($event)\"\n [attr.aria-label]=\"dismissLabel()\"\n >\n <nvb-icon name=\"close\"></nvb-icon>\n </button>\n }\n </article>\n </section>\n }\n</element-wrapper>\n",styles:[":host{display:block;width:100%;font-family:var(--nvb-font-family)}.nvb-toast-shell{position:fixed;z-index:2147483500;width:min(360px,100vw - 32px);pointer-events:none;display:grid;gap:16px}.nvb-toast-shell--editor{position:relative;inset:auto;width:min(360px,100%);max-width:100%;margin-top:8px}.nvb-toast-shell--top-left{top:16px;left:16px}.nvb-toast-shell--top-center{top:16px;left:50%;transform:translate(-50%)}.nvb-toast-shell--top-right{top:16px;right:16px}.nvb-toast-shell--bottom-left{bottom:16px;left:16px}.nvb-toast-shell--bottom-center{bottom:16px;left:50%;transform:translate(-50%)}.nvb-toast-shell--bottom-right{bottom:16px;right:16px}.nvb-toast{--nvb-toast-icon-color: var(--nvb-color-primary-600);pointer-events:auto;position:relative;display:grid;grid-template-columns:20px minmax(0,1fr) 24px;gap:4px 12px;align-items:start;min-height:52px;padding:12px;border:1px solid var(--nvb-color-neutral-200);border-radius:var(--nvb-toast-radius, var(--nvb-radius-sm));background:var(--nvb-color-neutral-000);color:var(--nvb-color-neutral-800);box-shadow:0 8px 16px color-mix(in oklab,var(--nvb-color-neutral-950) 14%,transparent),0 0 2px color-mix(in oklab,var(--nvb-color-neutral-950) 12%,transparent);overflow:hidden}.nvb-toast__media{grid-column:1;grid-row:1/span 2;width:20px;height:20px;margin-top:1px;display:inline-flex;align-items:center;justify-content:center;color:var(--nvb-toast-icon-color);flex:0 0 auto}.nvb-toast__icon{font-size:20px;line-height:1}.nvb-toast__content{grid-column:2;min-width:0;display:grid;gap:2px}.nvb-toast--no-icon .nvb-toast__content,.nvb-toast--no-icon .nvb-toast__action{grid-column:1/3}.nvb-toast__title{margin:0;font-size:14px;font-weight:600;line-height:20px;letter-spacing:0;color:var(--nvb-color-neutral-900)}.nvb-toast__description{margin:0;font-size:13px;line-height:18px;color:var(--nvb-color-neutral-600);overflow:hidden;text-overflow:ellipsis;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.nvb-toast__action{grid-column:2;justify-self:start;min-height:22px;padding:0;border:0;border-radius:var(--nvb-button-radius, var(--nvb-radius-sm));background:transparent;color:var(--nvb-color-primary-700);font:inherit;font-size:13px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap}.nvb-toast__action:hover{color:var(--nvb-color-primary-800);text-decoration:underline;text-underline-offset:2px}.nvb-toast__action:focus-visible,.nvb-toast__dismiss:focus-visible{outline:0;box-shadow:var(--nvb-focus-ring)}.nvb-toast__dismiss{grid-column:3;grid-row:1;width:24px;height:24px;margin:-2px -2px 0 0;border:1px solid transparent;border-radius:var(--nvb-button-radius, var(--nvb-radius-sm));background:transparent;color:var(--nvb-color-neutral-600);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color .16s ease,color .16s ease}.nvb-toast__dismiss:hover{background:var(--nvb-color-neutral-100);color:var(--nvb-color-neutral-900)}.nvb-toast--info{--nvb-toast-icon-color: var(--nvb-color-primary-600)}.nvb-toast--success{--nvb-toast-icon-color: var(--nvb-color-success-700)}.nvb-toast--warning{--nvb-toast-icon-color: var(--nvb-color-warning-700)}.nvb-toast--error{--nvb-toast-icon-color: var(--nvb-color-risk-700)}@media(max-width:520px){.nvb-toast-shell{width:min(360px,100vw - 24px)}}\n"]}]}],propDecorators:{model:[{type:e.Input,args:[{isSignal:true,alias:"model",required:true}]}]}});export{v as ToastElement};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as d}from"./ngxviewbuilder-runtime-rolldown-runtime-DpJrqANO.mjs";import{g as h,on as g,sn as p}from"./ngxviewbuilder-runtime-dynamic-text.pipe-BUJ4fCqt.mjs";import{r as u,rt as b,t as c}from"./ngxviewbuilder-runtime-element-wrapper-BUzRnWUH.mjs";import*as n from"@angular/core";import{ChangeDetectionStrategy as v,ChangeDetectorRef as m,Component as w,Injector as f,effect as _,inject as r,input as k,signal as y}from"@angular/core";var x=d({ToggleSwitchElement:()=>o});var o=class a{model=k.required(...ngDevMode?[{debugName:"model"}]:[]);tid=u(this.model,"nvb-toggle-switch","toggle-switch");checked=y(false,...ngDevMode?[{debugName:"checked"}]:[]);elementActionService=r(b);dataService=r(g);uiTranslationService=r(p);eventService=r(h);cdr=r(m);injector=r(f);onPropertyChangedHandler=e=>{const t=String(this.model()?.dataPath??"").trim();if(!t)return;if(String(e?.payload?.elementNameOrPath??"").trim()!==t)return;this.cdr.markForCheck()};ngOnInit(){this.syncCheckedState();_(()=>{const e=String(this.model()?.dataPath??"").trim();if(!e)return;const t=this.dataService.getValue(e);if(!Object.is(this.model().value,t))this.model().value=t;this.syncCheckedState()},{injector:this.injector});this.eventService.afterPropertyChanged.add(this.onPropertyChangedHandler)}ngOnDestroy(){this.eventService.afterPropertyChanged.remove(this.onPropertyChangedHandler)}onToggle(e){const t=e.target;if(!t||this.isInteractionLocked())return;this.model().setChecked(Boolean(t.checked),"change");this.syncCheckedState();this.runActions("input",this.model().value);this.runActions("change",this.model().value)}onFocus(){this.runActions("focus",this.model().value)}onBlur(){this.runActions("blur",this.model().value)}currentLabel(){const e=this.checked()?this.model().trueLabel:this.model().falseLabel;const t=String(e??"").trim();if(this.checked()&&t==="On")return this.uiTranslationService.translate("toggle.on","On");if(!this.checked()&&t==="Off")return this.uiTranslationService.translate("toggle.off","Off");return t}runActions(e,t){const i=t!==void 0?t:this.model().value;const s=String(this.model().name??"").trim();const l={value:i,item:null,row:null};if(s)l[s]=i;this.elementActionService.runActions(this.model(),this.model().events??[],e,l)}syncCheckedState(){this.checked.set(this.model().isChecked())}isInteractionLocked(){const e=this.model();if(!e)return false;if(Boolean(e["__pfInteractionLocked"]))return true;return Boolean(e.disabled)||Boolean(e.readOnly)}static ɵfac=n.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"22.2.1",ngImport:n,type:a,deps:[],target:n.ɵɵFactoryTarget.Component});static ɵcmp=n.ɵɵngDeclareComponent({minVersion:"17.0.0",version:"22.2.1",type:a,isStandalone:true,selector:"toggle-switch-element",inputs:{model:{classPropertyName:"model",publicName:"model",isSignal:true,isRequired:true,transformFunction:null}},ngImport:n,template:"<element-wrapper [model]=\"model()\" #fieldWrapper=\"elementWrapper\">\n <label\n class=\"nvb-toggle-switch\"\n [class.nvb-toggle-switch--disabled]=\"model().disabled\"\n [class.nvb-toggle-switch--square]=\"model().shape === 'square'\"\n >\n <input\n [id]=\"fieldWrapper.controlId()\"\n class=\"nvb-toggle-switch__input\"\n type=\"checkbox\"\n [checked]=\"checked()\"\n [disabled]=\"model().disabled\"\n role=\"switch\"\n [attr.aria-describedby]=\"fieldWrapper.describedByIds()\"\n [attr.aria-errormessage]=\"fieldWrapper.isInvalid() ? fieldWrapper.errorId() : null\"\n [attr.aria-invalid]=\"fieldWrapper.isInvalid() ? 'true' : null\"\n [attr.aria-required]=\"model().required ? 'true' : null\"\n [attr.aria-checked]=\"checked()\"\n [attr.data-testid]=\"tid('root')\"\n (change)=\"onToggle($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n <span class=\"nvb-toggle-switch__track\">\n <span class=\"nvb-toggle-switch__thumb\"></span>\n </span>\n @if (!this.model()?.hideLabel) {\n <span class=\"nvb-toggle-switch__label\">{{ currentLabel() }}</span>\n }\n </label>\n</element-wrapper>\n",styles:['@charset "UTF-8";:host{display:block;width:100%}.nvb-toggle-switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;min-height:var(--nvb-input-height);-webkit-user-select:none;user-select:none}.nvb-toggle-switch--disabled{cursor:not-allowed;opacity:.6}.nvb-toggle-switch__input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.nvb-toggle-switch__track{position:relative;width:44px;height:24px;border-radius:var(--nvb-radius-full);border:1px solid var(--nvb-color-neutral-300);background:var(--nvb-color-neutral-100);transition:border-color .16s ease,background-color .16s ease}.nvb-toggle-switch__thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:var(--nvb-radius-full);background:var(--nvb-color-neutral-000);box-shadow:0 1px 3px #00000040;transition:transform .16s ease}.nvb-toggle-switch__input:checked+.nvb-toggle-switch__track{border-color:var(--nvb-color-primary-500);background:var(--nvb-color-primary-500)}.nvb-toggle-switch__input:checked+.nvb-toggle-switch__track .nvb-toggle-switch__thumb{transform:translate(20px)}.nvb-toggle-switch__label{font-size:13px;color:var(--nvb-color-neutral-700);font-weight:600;line-height:1.2}.nvb-toggle-switch--square .nvb-toggle-switch__track,.nvb-toggle-switch--square .nvb-toggle-switch__thumb{border-radius:var(--nvb-radius-sm)}\n'],dependencies:[{kind:"component",type:c,selector:"element-wrapper",inputs:["model","controlIdInput","labelForInput","groupRole","showTextWrapperInput"],exportAs:["elementWrapper"]}],changeDetection:n.ChangeDetectionStrategy.OnPush})};n.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"22.2.1",ngImport:n,type:o,decorators:[{type:w,args:[{selector:"toggle-switch-element",changeDetection:v.OnPush,imports:[c],template:"<element-wrapper [model]=\"model()\" #fieldWrapper=\"elementWrapper\">\n <label\n class=\"nvb-toggle-switch\"\n [class.nvb-toggle-switch--disabled]=\"model().disabled\"\n [class.nvb-toggle-switch--square]=\"model().shape === 'square'\"\n >\n <input\n [id]=\"fieldWrapper.controlId()\"\n class=\"nvb-toggle-switch__input\"\n type=\"checkbox\"\n [checked]=\"checked()\"\n [disabled]=\"model().disabled\"\n role=\"switch\"\n [attr.aria-describedby]=\"fieldWrapper.describedByIds()\"\n [attr.aria-errormessage]=\"fieldWrapper.isInvalid() ? fieldWrapper.errorId() : null\"\n [attr.aria-invalid]=\"fieldWrapper.isInvalid() ? 'true' : null\"\n [attr.aria-required]=\"model().required ? 'true' : null\"\n [attr.aria-checked]=\"checked()\"\n [attr.data-testid]=\"tid('root')\"\n (change)=\"onToggle($event)\"\n (focus)=\"onFocus()\"\n (blur)=\"onBlur()\"\n />\n <span class=\"nvb-toggle-switch__track\">\n <span class=\"nvb-toggle-switch__thumb\"></span>\n </span>\n @if (!this.model()?.hideLabel) {\n <span class=\"nvb-toggle-switch__label\">{{ currentLabel() }}</span>\n }\n </label>\n</element-wrapper>\n",styles:['@charset "UTF-8";:host{display:block;width:100%}.nvb-toggle-switch{display:inline-flex;align-items:center;gap:10px;cursor:pointer;min-height:var(--nvb-input-height);-webkit-user-select:none;user-select:none}.nvb-toggle-switch--disabled{cursor:not-allowed;opacity:.6}.nvb-toggle-switch__input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.nvb-toggle-switch__track{position:relative;width:44px;height:24px;border-radius:var(--nvb-radius-full);border:1px solid var(--nvb-color-neutral-300);background:var(--nvb-color-neutral-100);transition:border-color .16s ease,background-color .16s ease}.nvb-toggle-switch__thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:var(--nvb-radius-full);background:var(--nvb-color-neutral-000);box-shadow:0 1px 3px #00000040;transition:transform .16s ease}.nvb-toggle-switch__input:checked+.nvb-toggle-switch__track{border-color:var(--nvb-color-primary-500);background:var(--nvb-color-primary-500)}.nvb-toggle-switch__input:checked+.nvb-toggle-switch__track .nvb-toggle-switch__thumb{transform:translate(20px)}.nvb-toggle-switch__label{font-size:13px;color:var(--nvb-color-neutral-700);font-weight:600;line-height:1.2}.nvb-toggle-switch--square .nvb-toggle-switch__track,.nvb-toggle-switch--square .nvb-toggle-switch__thumb{border-radius:var(--nvb-radius-sm)}\n']}]}],propDecorators:{model:[{type:n.Input,args:[{isSignal:true,alias:"model",required:true}]}]}});export{x as n,o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as f}from"./ngxviewbuilder-runtime-rolldown-runtime-DpJrqANO.mjs";import{n as m,t as c}from"./ngxviewbuilder-runtime-dynamic-text.pipe-BUJ4fCqt.mjs";import{ht as h,r as y,t as u}from"./ngxviewbuilder-runtime-element-wrapper-BUzRnWUH.mjs";import*as o from"@angular/core";import{ChangeDetectionStrategy as b,Component as g,Renderer2 as S,ViewChild as w,computed as _,inject as p,input as x}from"@angular/core";import{NgStyle as v}from"@angular/common";var k=f({VideoElement:()=>a});var a=class d{model=x.required(...ngDevMode?[{debugName:"model"}]:[]);tid=y(this.model,"nvb-video","video");markupSecurityService=p(h);renderer=p(S);lastIframeSignature=null;iframeHostRef;frameStyle=_(()=>{const e=this.normalizeSize(this.model()?.radius,"12px");const t=this.resolveAspectRatio();const r=t?null:this.normalizeSize(this.model()?.frameHeight,"360px");return{...t?{"aspect-ratio":t}:{},...r?{height:r}:{},"border-radius":e,...this.model()?.borderless?{border:"0"}:{},...this.model()?.shadow?{"box-shadow":"0 16px 32px rgba(15, 23, 42, 0.18)"}:{},...String(this.model()?.backgroundColor??"").trim()?{background:String(this.model()?.backgroundColor??"").trim()}:{}}},...ngDevMode?[{debugName:"frameStyle"}]:[]);ngAfterViewChecked(){this.syncEmbedIframe()}resolveProvider(){const e=String(this.model()?.provider??"youtube").trim().toLowerCase();if(e==="embed"||e==="file")return e;return"youtube"}resolveVideoSrc(e){const t=String(e??"").trim();if(!t)return null;if(/^data:/i.test(t))return t;return this.markupSecurityService.sanitizeNavigationUrl(t)}resolveEmbedSrc(e){const t=String(e??"").trim();if(!t)return null;if(this.resolveProvider()==="youtube")return this.buildYoutubeEmbedUrl(t);return this.markupSecurityService.sanitizeIframeUrl(t)}resolveIframeAllow(){const e=String(this.model()?.allow??"").trim();if(e)return e;return"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"}syncEmbedIframe(){const e=this.iframeHostRef?.nativeElement??null;if(!e){this.lastIframeSignature=null;return}const t=JSON.stringify({src:e.dataset["src"]??"",title:e.dataset["title"]??"",loading:e.dataset["loading"]??"",referrerpolicy:e.dataset["referrerpolicy"]??"",allow:e.dataset["allow"]??"",allowfullscreen:e.dataset["allowfullscreen"]??""});if(t===this.lastIframeSignature)return;this.lastIframeSignature=t;this.clearHost(e);const r=String(e.dataset["src"]??"").trim();if(!r)return;const i=this.renderer.createElement("iframe");this.renderer.addClass(i,"nvb-video__media");this.renderer.setAttribute(i,"src",r);this.renderer.setAttribute(i,"title",String(e.dataset["title"]??"").trim()||"Video");const n=String(e.dataset["loading"]??"").trim();if(n)this.renderer.setAttribute(i,"loading",n);const l=String(e.dataset["referrerpolicy"]??"").trim();if(l)this.renderer.setAttribute(i,"referrerpolicy",l);const s=String(e.dataset["allow"]??"").trim();if(s)this.renderer.setAttribute(i,"allow",s);if(String(e.dataset["allowfullscreen"]??"").trim()==="true")this.renderer.setAttribute(i,"allowfullscreen","");this.renderer.appendChild(e,i)}buildYoutubeEmbedUrl(e){const t=this.extractYoutubeVideoId(e);if(!t)return null;const r=this.model().privacyMode?"https://www.youtube-nocookie.com":"https://www.youtube.com";const i=new URLSearchParams;i.set("rel",this.model().showRelated?"1":"0");i.set("playsinline",this.model().playsInline?"1":"0");i.set("controls",this.model().controls?"1":"0");if(this.model().autoplay)i.set("autoplay","1");if(this.model().muted)i.set("mute","1");if(this.model().loop){i.set("loop","1");i.set("playlist",t)}const n=this.normalizeSeconds(this.model().startAt);const l=this.normalizeSeconds(this.model().endAt);if(n!==null)i.set("start",String(n));if(l!==null)i.set("end",String(l));return`${r}/embed/${t}?${i.toString()}`}extractYoutubeVideoId(e){const t=e.trim();if(!t)return null;if(/^[a-zA-Z0-9_-]{11}$/.test(t))return t;try{const r=new URL(t);if(r.hostname.includes("youtu.be"))return r.pathname.replace(/\//g,"").trim()||null;if(r.hostname.includes("youtube.com")){const i=r.pathname.match(/\/embed\/([a-zA-Z0-9_-]{11})/);if(i?.[1])return i[1];const n=r.searchParams.get("v");if(n&&/^[a-zA-Z0-9_-]{11}$/.test(n))return n}}catch{return null}return null}normalizeSeconds(e){const t=String(e??"").trim();if(!t)return null;const r=Number(t);if(!Number.isFinite(r)||r<0)return null;return Math.floor(r)}resolveAspectRatio(){const e=String(this.model()?.aspectRatio??"16 / 9").trim();if(!e||e.toLowerCase()==="auto")return null;return e}normalizeSize(e,t){const r=String(e??"").trim();if(!r)return t;if(/^-?\d+(\.\d+)?$/.test(r))return`${r}px`;return r}clearHost(e){while(e.firstChild)this.renderer.removeChild(e,e.firstChild)}static ɵfac=o.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"22.2.1",ngImport:o,type:d,deps:[],target:o.ɵɵFactoryTarget.Component});static ɵcmp=o.ɵɵngDeclareComponent({minVersion:"17.0.0",version:"22.2.1",type:d,isStandalone:true,selector:"video-element",inputs:{model:{classPropertyName:"model",publicName:"model",isSignal:true,isRequired:true,transformFunction:null}},viewQueries:[{propertyName:"iframeHostRef",first:true,predicate:["iframeHost"],descendants:true}],ngImport:o,template:"<element-wrapper [model]=\"model()\">\n @let dynamicSrc = (model().src | dynamicText: model()).trim();\n @let dynamicTitle = (model().title | dynamicText: model()).trim() || ('video.titleDefault' | uiT: 'Video');\n @let dynamicCaption = (model().caption | dynamicText: model()).trim();\n @let dynamicPoster = (model().poster | dynamicText: model()).trim();\n @let provider = resolveProvider();\n @let fileSrc = (model().srcFile ?? '').trim();\n @let safeEmbedSrc = provider !== 'file' ? resolveEmbedSrc(dynamicSrc) : null;\n @let safeVideoSrc = provider === 'file' ? resolveVideoSrc(fileSrc || dynamicSrc) : null;\n\n <figure class=\"nvb-video-wrap\" [attr.data-testid]=\"tid('root')\">\n <div class=\"nvb-video\" [ngStyle]=\"frameStyle()\">\n @switch (provider) {\n @case ('file') {\n @if (safeVideoSrc) {\n <video\n class=\"nvb-video__media\"\n [src]=\"safeVideoSrc\"\n [attr.poster]=\"dynamicPoster || null\"\n [attr.controls]=\"model().controls ? '' : null\"\n [attr.autoplay]=\"model().autoplay ? '' : null\"\n [attr.muted]=\"model().muted ? '' : null\"\n [attr.loop]=\"model().loop ? '' : null\"\n [attr.playsinline]=\"model().playsInline ? '' : null\"\n preload=\"metadata\"\n ></video>\n } @else {\n <div class=\"nvb-video__empty\">{{ 'video.noSource' | uiT: 'No video source configured.' }}</div>\n }\n }\n @default {\n @if (safeEmbedSrc) {\n <div\n #iframeHost\n class=\"nvb-video__embed-host\"\n [attr.data-src]=\"safeEmbedSrc\"\n [attr.data-title]=\"dynamicTitle\"\n [attr.data-loading]=\"model().loading || 'lazy'\"\n [attr.data-referrerpolicy]=\"model().referrerPolicy || null\"\n [attr.data-allow]=\"resolveIframeAllow()\"\n [attr.data-allowfullscreen]=\"model().allowFullscreen ? 'true' : null\"\n ></div>\n } @else {\n <div class=\"nvb-video__empty\">\n {{ 'video.blocked' | uiT: 'Blocked insecure or missing video URL.' }}\n </div>\n }\n }\n }\n </div>\n\n @if (dynamicCaption) {\n <figcaption class=\"nvb-video__caption\">{{ dynamicCaption }}</figcaption>\n }\n </figure>\n</element-wrapper>\n",styles:[":host{display:block;width:100%}.nvb-video-wrap{width:100%;margin:0;display:grid;gap:8px}.nvb-video{width:100%;min-height:180px;border:1px solid var(--nvb-color-neutral-300);background:var(--nvb-color-neutral-900);border-radius:var(--nvb-radius-xl);overflow:hidden;position:relative}.nvb-video__media,.nvb-video__embed-host{display:block;width:100%;height:100%;border:0;background:transparent}.nvb-video__empty{min-height:inherit;display:grid;place-items:center;padding:18px;color:color-mix(in oklch,var(--nvb-color-neutral-000) 82%,var(--nvb-color-neutral-200));text-align:center;font-size:13px}.nvb-video__caption{margin:0;font-size:13px;line-height:1.5;color:var(--nvb-color-neutral-600)}\n"],dependencies:[{kind:"component",type:u,selector:"element-wrapper",inputs:["model","controlIdInput","labelForInput","groupRole","showTextWrapperInput"],exportAs:["elementWrapper"]},{kind:"directive",type:v,selector:"[ngStyle]",inputs:["ngStyle"]},{kind:"pipe",type:c,name:"dynamicText"},{kind:"pipe",type:m,name:"uiT"}],changeDetection:o.ChangeDetectionStrategy.OnPush})};o.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"22.2.1",ngImport:o,type:a,decorators:[{type:g,args:[{selector:"video-element",changeDetection:b.OnPush,imports:[u,c,v,m],template:"<element-wrapper [model]=\"model()\">\n @let dynamicSrc = (model().src | dynamicText: model()).trim();\n @let dynamicTitle = (model().title | dynamicText: model()).trim() || ('video.titleDefault' | uiT: 'Video');\n @let dynamicCaption = (model().caption | dynamicText: model()).trim();\n @let dynamicPoster = (model().poster | dynamicText: model()).trim();\n @let provider = resolveProvider();\n @let fileSrc = (model().srcFile ?? '').trim();\n @let safeEmbedSrc = provider !== 'file' ? resolveEmbedSrc(dynamicSrc) : null;\n @let safeVideoSrc = provider === 'file' ? resolveVideoSrc(fileSrc || dynamicSrc) : null;\n\n <figure class=\"nvb-video-wrap\" [attr.data-testid]=\"tid('root')\">\n <div class=\"nvb-video\" [ngStyle]=\"frameStyle()\">\n @switch (provider) {\n @case ('file') {\n @if (safeVideoSrc) {\n <video\n class=\"nvb-video__media\"\n [src]=\"safeVideoSrc\"\n [attr.poster]=\"dynamicPoster || null\"\n [attr.controls]=\"model().controls ? '' : null\"\n [attr.autoplay]=\"model().autoplay ? '' : null\"\n [attr.muted]=\"model().muted ? '' : null\"\n [attr.loop]=\"model().loop ? '' : null\"\n [attr.playsinline]=\"model().playsInline ? '' : null\"\n preload=\"metadata\"\n ></video>\n } @else {\n <div class=\"nvb-video__empty\">{{ 'video.noSource' | uiT: 'No video source configured.' }}</div>\n }\n }\n @default {\n @if (safeEmbedSrc) {\n <div\n #iframeHost\n class=\"nvb-video__embed-host\"\n [attr.data-src]=\"safeEmbedSrc\"\n [attr.data-title]=\"dynamicTitle\"\n [attr.data-loading]=\"model().loading || 'lazy'\"\n [attr.data-referrerpolicy]=\"model().referrerPolicy || null\"\n [attr.data-allow]=\"resolveIframeAllow()\"\n [attr.data-allowfullscreen]=\"model().allowFullscreen ? 'true' : null\"\n ></div>\n } @else {\n <div class=\"nvb-video__empty\">\n {{ 'video.blocked' | uiT: 'Blocked insecure or missing video URL.' }}\n </div>\n }\n }\n }\n </div>\n\n @if (dynamicCaption) {\n <figcaption class=\"nvb-video__caption\">{{ dynamicCaption }}</figcaption>\n }\n </figure>\n</element-wrapper>\n",styles:[":host{display:block;width:100%}.nvb-video-wrap{width:100%;margin:0;display:grid;gap:8px}.nvb-video{width:100%;min-height:180px;border:1px solid var(--nvb-color-neutral-300);background:var(--nvb-color-neutral-900);border-radius:var(--nvb-radius-xl);overflow:hidden;position:relative}.nvb-video__media,.nvb-video__embed-host{display:block;width:100%;height:100%;border:0;background:transparent}.nvb-video__empty{min-height:inherit;display:grid;place-items:center;padding:18px;color:color-mix(in oklch,var(--nvb-color-neutral-000) 82%,var(--nvb-color-neutral-200));text-align:center;font-size:13px}.nvb-video__caption{margin:0;font-size:13px;line-height:1.5;color:var(--nvb-color-neutral-600)}\n"]}]}],propDecorators:{model:[{type:o.Input,args:[{isSignal:true,alias:"model",required:true}]}],iframeHostRef:[{type:w,args:["iframeHost"]}]}});export{k as n,a as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{signal as u}from"@angular/core";const T="1120px";const v="clamp(48px, 8vw, 96px)";const N="24px";function w(n){const t=n??{};if(!t["sectionMode"])return{active:false,theme:"light",style:{}};const e=t["sectionTheme"]==="dark"?"dark":"light";const i=c(t["sectionContentWidth"])??T;const k=c(t["sectionPaddingY"])??v;const o=c(t["sectionMinHeight"]);const r=String(t["backgroundImage"]??"").trim();const s=String(t["backgroundOverlayColor"]??"").trim();const a=[];if(r){if(s)a.push(`linear-gradient(${s}, ${s})`);a.push(`url("${r.replace(/"/g,'\\"')}")`)}const f=String(t["sectionVerticalAlign"]??"").trim();return{active:true,theme:e,style:{width:"100%","box-sizing":"border-box",padding:`${k} max(${N}, calc((100% - ${i}) / 2))`,"min-height":o,display:o?"flex":null,"flex-direction":o?"column":null,"justify-content":o?f==="end"?"flex-end":f==="start"?"flex-start":"center":null,border:"0","border-radius":c(t["panelRadius"])??"0","box-shadow":"none","background-color":String(t["panelBackgroundColor"]??"").trim()||(e==="dark"?"var(--nvb-color-neutral-000)":"transparent"),"background-image":a.length?a.join(", "):null,"background-size":r?"cover":null,"background-position":r?"center":null,color:"var(--nvb-color-neutral-900)","--nvb-form-element-spacing":"var(--nvb-section-element-spacing, 16px)"}}}function c(n){const t=String(n??"").trim();if(!t)return null;return/^-?\d+(\.\d+)?$/.test(t)?`${t}px`:t}const B=768;const l=1024;const d=u(768,...ngDevMode?[{debugName:"mobileBreakpoint"}]:[]);const h=u(l,...ngDevMode?[{debugName:"tabletBreakpoint"}]:[]);const m=u(null,...ngDevMode?[{debugName:"contentWidth"}]:[]);function M(n){const t=Number(n);m.set(Number.isFinite(t)&&t>0?t:null)}function W(){return m()}function y(n){const t=b(n?.["mobileBreakpoint"],768);const e=b(n?.["tabletBreakpoint"],l);d.set(t);h.set(Math.max(e,t))}function p(){return d()}function g(){return Math.max(h(),d())}function D(n){const t=Number(n);return Number.isFinite(t)&&t>0&&t<=p()}function E(n){const t=Number(n);return Number.isFinite(t)&&t>0&&t<=g()}function A(){return x(p())}function $(){return x(g())}function b(n,t){const e=String(n??"").trim().replace(/px$/i,"");if(!e)return t;const i=Number(e);return Number.isFinite(i)&&i>0?i:t}function x(n){const t=m();if(typeof t==="number")return t<=n;if(typeof window==="undefined"||typeof window.matchMedia!=="function")return false;return window.matchMedia(`(max-width: ${n}px)`).matches}export{g as a,D as c,b as d,M as f,p as i,$ as l,l as n,W as o,w as p,y as r,A as s,B as t,E as u};
|