@ngxviewbuilder/runtime 0.12.0 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{ngxviewbuilder-runtime-autocomplete-element-D627PmE6.mjs → ngxviewbuilder-runtime-autocomplete-element-DWbMobho.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-avatar-element-Bq1dfv2w.mjs → ngxviewbuilder-runtime-avatar-element-98vFX6ZL.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-badge-element-C2f14QNw.mjs → ngxviewbuilder-runtime-badge-element-WdHbUp_X.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-breadcrumbs-element-DUD-zxsq.mjs → ngxviewbuilder-runtime-breadcrumbs-element-qlHbgWfh.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-button-element-DLKWXLDr.mjs → ngxviewbuilder-runtime-button-element-BWI56rGB.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-chart-element-B8SBRRoW.mjs → ngxviewbuilder-runtime-chart-element-wN98hSa2.mjs} +1 -1
- package/fesm2022/ngxviewbuilder-runtime-checkbox-element-yAUJgMY7.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-column-CEOo23I_.mjs +43 -0
- package/fesm2022/{ngxviewbuilder-runtime-custom-html-element-BBZi5m3e.mjs → ngxviewbuilder-runtime-custom-html-element-D7ezjkGw.mjs} +2 -2
- package/fesm2022/{ngxviewbuilder-runtime-date-range-element-Dh0iamQ0.mjs → ngxviewbuilder-runtime-date-range-element-kRoWWvXf.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-datepicker-element-BzrNzV5m.mjs → ngxviewbuilder-runtime-datepicker-element-Co2_JHM2.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-divider-element-DaWflvFL.mjs → ngxviewbuilder-runtime-divider-element-Bit-YRpc.mjs} +1 -1
- package/fesm2022/ngxviewbuilder-runtime-dynamic-text.pipe-BUJ4fCqt.mjs +1 -0
- package/fesm2022/{ngxviewbuilder-runtime-element-wrapper-FxbwPLem.mjs → ngxviewbuilder-runtime-element-wrapper-D0lfZvuW.mjs} +3 -3
- package/fesm2022/{ngxviewbuilder-runtime-file-upload-element-CVmIguAo.mjs → ngxviewbuilder-runtime-file-upload-element-B1sGgTAJ.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-icon-element-D1RfF2C0.mjs → ngxviewbuilder-runtime-icon-element-BBV3IriU.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-iframe-element-DeU-ENc8.mjs → ngxviewbuilder-runtime-iframe-element-DAKlSTTJ.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-image-element-9xxf0IfB.mjs → ngxviewbuilder-runtime-image-element-Co9eNt6D.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-list-box-element-BDz4--85.mjs → ngxviewbuilder-runtime-list-box-element-BkqVfq4H.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-list-grid-element-BIyp-dce.mjs → ngxviewbuilder-runtime-list-grid-element-BsVooLf9.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-message-card-element-D0JmZyvI.mjs → ngxviewbuilder-runtime-message-card-element-DOlB-FAw.mjs} +1 -1
- package/fesm2022/ngxviewbuilder-runtime-multi-select-element-5YHKOX69.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-number-element-MNO3T8kR.mjs +1 -0
- package/fesm2022/{ngxviewbuilder-runtime-number-stepper-element-iBpT-zsi.mjs → ngxviewbuilder-runtime-number-stepper-element-Jl6DZNAb.mjs} +1 -1
- package/fesm2022/ngxviewbuilder-runtime-nvb-select-DuPHFQk6.mjs +1 -0
- package/fesm2022/{ngxviewbuilder-runtime-page-title-element-CYS9yCvk.mjs → ngxviewbuilder-runtime-page-title-element-BdfBrnaW.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-phone-input-element-D4rPIZgc.mjs → ngxviewbuilder-runtime-phone-input-element-BDZkscMD.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-progress-bar-element-D780Bz4H.mjs → ngxviewbuilder-runtime-progress-bar-element-Dg7Y6-jq.mjs} +1 -1
- package/fesm2022/ngxviewbuilder-runtime-radio-element-xscwN_Hs.mjs +1 -0
- package/fesm2022/{ngxviewbuilder-runtime-rich-text-element-jeeNhKfo.mjs → ngxviewbuilder-runtime-rich-text-element-DAl3vSxG.mjs} +2 -2
- package/fesm2022/{ngxviewbuilder-runtime-router-outlet-element-DSIY_9ES.mjs → ngxviewbuilder-runtime-router-outlet-element-BpGv-kkh.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-select-button-element-D3ECf6NN.mjs → ngxviewbuilder-runtime-select-button-element-BPH_N-fd.mjs} +1 -1
- package/fesm2022/ngxviewbuilder-runtime-select-element-B_FOlIzR.mjs +1 -0
- package/fesm2022/{ngxviewbuilder-runtime-signature-pad-element-DNWzJf8n.mjs → ngxviewbuilder-runtime-signature-pad-element-BxZMh4-H.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-single-checkbox-element-CwUV4QeU.mjs → ngxviewbuilder-runtime-single-checkbox-element-DZiHDP6i.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-slider-element-DG3yzEol.mjs → ngxviewbuilder-runtime-slider-element-NBbgW-1w.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-spacer-element-DmK0-mBg.mjs → ngxviewbuilder-runtime-spacer-element-BGJ-ObOf.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-stats-card-element-BwF1DgRq.mjs → ngxviewbuilder-runtime-stats-card-element-DUxzXyTC.mjs} +1 -1
- package/fesm2022/ngxviewbuilder-runtime-table-element-yvDWlU-z.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-text-element-C9W3pPu7.mjs +1 -0
- package/fesm2022/ngxviewbuilder-runtime-textarea-element-55rqT93w.mjs +1 -0
- package/fesm2022/{ngxviewbuilder-runtime-time-picker-element-DcaL0iul.mjs → ngxviewbuilder-runtime-time-picker-element-C1p0lG_4.mjs} +1 -1
- package/fesm2022/{ngxviewbuilder-runtime-toast-element-Dz0k7DJQ.mjs → ngxviewbuilder-runtime-toast-element-Dc8tFqFS.mjs} +1 -1
- package/fesm2022/ngxviewbuilder-runtime-toggle-switch-element-DEmC69ye.mjs +1 -0
- package/fesm2022/{ngxviewbuilder-runtime-video-element-Cn45kYTv.mjs → ngxviewbuilder-runtime-video-element-COR0eePU.mjs} +1 -1
- package/fesm2022/ngxviewbuilder-runtime.mjs +1 -1
- package/package.json +1 -1
- package/types/ngxviewbuilder-runtime.d.ts +35 -0
- package/fesm2022/ngxviewbuilder-runtime-checkbox-element-BUc3LIZY.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-column-CQL6_3oR.mjs +0 -43
- package/fesm2022/ngxviewbuilder-runtime-dynamic-text.pipe-DJNHX-1z.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-multi-select-element-kVcNNhEt.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-number-element-DctiWuS1.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-nvb-select-BEN_kxMD.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-radio-element-CMnPn8dr.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-select-element-CL95ygLj.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-table-element-DEQz2d-s.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-text-element-CMGjmapD.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-textarea-element-BXIAOW-5.mjs +0 -1
- package/fesm2022/ngxviewbuilder-runtime-toggle-switch-element-D2X34AZt.mjs +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ngxviewbuilder/runtime",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.2",
|
|
4
4
|
"description": "Native Angular runtime for NGX View Builder: renders forms, dashboards, data tables and guided flows defined as JSON.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"homepage": "https://ngxviewbuilder.io",
|
|
@@ -2210,6 +2210,12 @@ export declare class NgxViewBuilderApiService {
|
|
|
2210
2210
|
private registerScopedChildApi;
|
|
2211
2211
|
private unregisterScopedChildApi;
|
|
2212
2212
|
private resolveScopedChildApi;
|
|
2213
|
+
/**
|
|
2214
|
+
* Structure calls on the root go to the runtime view only when the root has nothing of
|
|
2215
|
+
* its own: in the designer the root owns the edited view, and a preview runtime inside
|
|
2216
|
+
* it must not take over getStructure().
|
|
2217
|
+
*/
|
|
2218
|
+
private resolveStructureDelegateApi;
|
|
2213
2219
|
reloadDataSource(elementNameOrPath: string, dataSourceName?: string, runtimeContext?: Record<string, unknown>): Promise<unknown | null>;
|
|
2214
2220
|
reloadElementDataSource(elementNameOrPath: string, runtimeContext?: Record<string, unknown>): Promise<unknown | null>;
|
|
2215
2221
|
reloadElementsByDataSource(dataSourceName: string, runtimeContext?: Record<string, unknown>): Promise<unknown[]>;
|
|
@@ -8658,6 +8664,8 @@ export declare class NvbSelect implements ControlValueAccessor, AfterViewInit, O
|
|
|
8658
8664
|
private optionsObserver;
|
|
8659
8665
|
private removeGlobalListeners;
|
|
8660
8666
|
private forwardedHostClasses;
|
|
8667
|
+
/** Host attributes mirrored onto each inner element, so only those are ever taken back. */
|
|
8668
|
+
private readonly forwardedHostAttributes;
|
|
8661
8669
|
private internalValue;
|
|
8662
8670
|
private filterMode;
|
|
8663
8671
|
private filterThresholdValue;
|
|
@@ -8705,6 +8713,12 @@ export declare class NvbSelect implements ControlValueAccessor, AfterViewInit, O
|
|
|
8705
8713
|
private syncProjectedState;
|
|
8706
8714
|
private forwardHostClasses;
|
|
8707
8715
|
private shouldForwardHostClass;
|
|
8716
|
+
/**
|
|
8717
|
+
* Mirrors the host's attributes (spellcheck, aria-label, the parent's `_ngcontent` scope
|
|
8718
|
+
* so its styles reach the trigger, ...) onto an inner element. Only what was forwarded
|
|
8719
|
+
* before is ever removed: the element's own attributes (`data-testid`, `aria-haspopup`,
|
|
8720
|
+
* `aria-expanded`, `tabindex`, `aria-hidden`) stay, which a test or a screen reader needs.
|
|
8721
|
+
*/
|
|
8708
8722
|
private forwardHostAttributesTo;
|
|
8709
8723
|
private syncNativeValue;
|
|
8710
8724
|
private syncDisabledState;
|
|
@@ -8785,6 +8799,11 @@ export declare class ElementContentRow implements OnInit, OnDestroy {
|
|
|
8785
8799
|
model: import("@angular/core").InputSignal<RowModel>;
|
|
8786
8800
|
rows: import("@angular/core").InputSignal<RowModel[]>;
|
|
8787
8801
|
index: import("@angular/core").InputSignal<number>;
|
|
8802
|
+
/**
|
|
8803
|
+
* The row's test id token: the name of its first element, which stays the same across
|
|
8804
|
+
* reloads (the row's uuid is drawn fresh every time a view is opened).
|
|
8805
|
+
*/
|
|
8806
|
+
rowTestToken(): string;
|
|
8788
8807
|
isTemplateElement: import("@angular/core").InputSignal<boolean>;
|
|
8789
8808
|
rowLength: import("@angular/core").InputSignal<number>;
|
|
8790
8809
|
parentPath: import("@angular/core").InputSignal<string[]>;
|
|
@@ -10099,6 +10118,15 @@ export declare class DomInstrumentationService {
|
|
|
10099
10118
|
private ensureUniqueDataTestIds;
|
|
10100
10119
|
private instrumentImages;
|
|
10101
10120
|
private instrumentInputs;
|
|
10121
|
+
/**
|
|
10122
|
+
* Only a control that has no name of its own gets a generated aria-label. An aria-label
|
|
10123
|
+
* replaces the name a screen reader would read, so text inside a button, a <label> tied
|
|
10124
|
+
* to an input or a hidden helper element must be left alone, and a container that only
|
|
10125
|
+
* takes programmatic focus (tabindex="-1") is not a control at all.
|
|
10126
|
+
*/
|
|
10127
|
+
private needsAccessibleName;
|
|
10128
|
+
/** Text a screen reader would read from the node: aria-hidden parts left out. */
|
|
10129
|
+
private readableText;
|
|
10102
10130
|
private resolveAriaLabel;
|
|
10103
10131
|
private buildTestId;
|
|
10104
10132
|
private buildDomId;
|
|
@@ -10636,6 +10664,13 @@ export declare function nextNumberedName(base: string, reserved: Set<string>, st
|
|
|
10636
10664
|
export declare function nextCopyName(original: string, reserved: Set<string>): string;
|
|
10637
10665
|
/** Whether `name` still looks generated for `type` (text3), or is a legacy `el7`. */
|
|
10638
10666
|
export declare function isGeneratedElementName(name: string, type: string): boolean;
|
|
10667
|
+
/**
|
|
10668
|
+
* Element types that show their own content (a caption, a title, a picture, a chart) and
|
|
10669
|
+
* have no use for the field label row the wrapper draws above an element. Added without a
|
|
10670
|
+
* label (from the library or by an AI client), they get none, instead of their type or
|
|
10671
|
+
* technical name in bold above them.
|
|
10672
|
+
*/
|
|
10673
|
+
export declare const NO_LABEL_ELEMENT_TYPES: Set<string>;
|
|
10639
10674
|
export interface IResponsiveViewportState {
|
|
10640
10675
|
isMobile?: boolean;
|
|
10641
10676
|
isTablet?: boolean;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{t as v}from"./ngxviewbuilder-runtime-rolldown-runtime-DpJrqANO.mjs";import{an as m,d as h,g,in as d}from"./ngxviewbuilder-runtime-dynamic-text.pipe-DJNHX-1z.mjs";import{ft as f,i as p,rt as x,t as b}from"./ngxviewbuilder-runtime-element-wrapper-FxbwPLem.mjs";import*as o from"@angular/core";import{ChangeDetectionStrategy as y,Component as w,computed as u,inject as r,input as k,signal as l}from"@angular/core";var I=v({CheckboxElement:()=>s});var s=class c{model=k.required(...ngDevMode?[{debugName:"model"}]:[]);dataSourceLoaded=l(false,...ngDevMode?[{debugName:"dataSourceLoaded"}]:[]);isEditorView=l(d.isEditor(),...ngDevMode?[{debugName:"isEditorView"}]:[]);loadingPlaceholderItems=[0,1,2];dataVersion=l(0,...ngDevMode?[{debugName:"dataVersion"}]:[]);dataService=r(m);eventService=r(g);expressionService=r(h);elementActionService=r(x);visibleOptions=u(()=>{this.dataVersion();return(this.model().options??[]).filter(e=>this.passesOptionFilters(e)&&this.isOptionVisible(e))},...ngDevMode?[{debugName:"visibleOptions"}]:[]);dataSourceLoading=u(()=>Boolean(this.model().dataSource)&&!this.dataSourceLoaded()&&!this.isEditorView(),...ngDevMode?[{debugName:"dataSourceLoading"}]:[]);onDataSourceLoadedHandler=()=>{this.dataSourceLoaded.set(true);this.dataVersion.update(e=>e+1)};onDataValueChangedHandler=()=>{this.dataVersion.update(e=>e+1)};ngOnInit(){const e=!this.model().dataSource||!!this.model().dataSourceLoaded;this.dataSourceLoaded.set(e);this.model().afterDataSourceLoad.add(this.onDataSourceLoadedHandler);this.dataService.onValueChanged.add(this.onDataValueChangedHandler);this.eventService.afterPropertyChanged.add(this.onDataValueChangedHandler);this.isEditorView.set(d.isEditor())}ngOnDestroy(){this.model().afterDataSourceLoad.remove(this.onDataSourceLoadedHandler);this.dataService.onValueChanged.remove(this.onDataValueChangedHandler);this.eventService.afterPropertyChanged.remove(this.onDataValueChangedHandler)}selectOption(e){if(this.isInteractionLocked())return;const n=Array.isArray(this.model().value)?[...this.model().value]:[];const t=n.findIndex(i=>i===e.value);if(t>=0)n.splice(t,1);else n.push(e.value);this.model().setValue(n,"change");this.runActions("input",e);this.runActions("change",e)}onOptionFocus(e){if(this.isInteractionLocked())return;this.runActions("focus",e)}onOptionBlur(e){if(this.isInteractionLocked())return;this.runActions("blur",e)}valueChecked(e){return Array.isArray(this.model().value)&&this.model().value.includes(e.value)}resolveOptionInputId(e,n){return`${this.slugify(String(this.model()?.dataPath??"").trim()||String(this.model()?.name??"").trim()||"checkbox")}-option-${this.slugify(String(e?.value??n).trim()||String(n+1))}`}resolveOptionTestId(e,n){return`nvb-${p(String(this.model()?.dataPath??"").trim()||String(this.model()?.name??"").trim()||"checkbox")}-checkbox-${p(String(e?.value??n).trim()||String(n+1))}`}resolveOptionAriaLabel(e,n){const t=String(e?.label??"").trim();if(t)return t;return`Option ${n+1}`}isOptionVisible(e){const n=String(e?.visibleIf??"").trim();if(!n)return true;try{const t=n.replace(/{/g,"").replace(/}/g,"").trim();if(!t)return true;const i=this.expressionService.applyContextToExpression(t,this.model());return!!this.expressionService.runPropertyConditionSync(this.dataService.getData(),i)}catch{return true}}passesOptionFilters(e){const n=String(this.model().filterOptionsBy??"").trim()||String(this.model().dataSource?.filterOptionsBy??"").trim();const t=String(this.model().filterIfEqual??"").trim();const i=String(this.model().filterIfNotEqual??"").trim();if(!n&&!t&&!i)return true;const a=this.dataService.getData()??{};return f([e],n,a,{valuePath:"value",filterIfEqual:t,filterIfNotEqual:i}).length>0}runActions(e,n){const t=Array.isArray(this.model().value)?[...this.model().value]:[];const i=String(this.model().name??"").trim();const a={value:t,item:n??null,row:null};if(i)a[i]=t;this.elementActionService.runActions(this.model(),this.model().events??[],e,a)}isInteractionLocked(){const e=this.model();if(!e)return false;if(Boolean(e["__pfInteractionLocked"]))return true;return this.dataSourceLoading()||Boolean(e.disabled)||Boolean(e.readOnly)}slugify(e){return String(e??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+/,"").replace(/-+$/,"").slice(0,50)}static ɵfac=o.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"22.2.1",ngImport:o,type:c,deps:[],target:o.ɵɵFactoryTarget.Component});static ɵcmp=o.ɵɵngDeclareComponent({minVersion:"17.0.0",version:"22.2.1",type:c,isStandalone:true,selector:"checkbox-element",inputs:{model:{classPropertyName:"model",publicName:"model",isSignal:true,isRequired:true,transformFunction:null}},ngImport:o,template:'<element-wrapper\n [model]="model()"\n [labelForInput]="null"\n groupRole="group"\n #fieldWrapper="elementWrapper"\n>\n @if (model().dataSource && !dataSourceLoaded()) {\n @if (isEditorView()) {\n <div class="nvb-empty-element-wrapper">\n <ul class="nvb-empty-row" [class.nvb-row]="model().showInline" [class.nvb-column]="!model().showInline">\n <li>\n <input type="checkbox" class="nvb-control__checkbox-input" tabindex="-1" aria-hidden="true" disabled />\n <hr class="nvb-empty-row__blank" />\n </li>\n <li>\n <input type="checkbox" class="nvb-control__checkbox-input" tabindex="-1" aria-hidden="true" disabled />\n <hr class="nvb-empty-row__blank" />\n </li>\n <li>\n <input type="checkbox" class="nvb-control__checkbox-input" tabindex="-1" aria-hidden="true" disabled />\n <hr class="nvb-empty-row__blank" />\n </li>\n </ul>\n <small class="nvb-element-title">\n <span class="material-symbols-outlined">database</span>\n {{ model()?.dataSource?.source?.title || model()?.dataSource?.name }}\n </small>\n </div>\n } @else {\n <ul\n [id]="fieldWrapper.controlId()"\n class="nvb-choice-list nvb-choice-list--loading"\n [class.nvb-choice-list--fit-content]="model().fitContent"\n [class.nvb-row]="model().showInline"\n [class.nvb-column]="!model().showInline"\n [attr.aria-describedby]="fieldWrapper.describedByIds()"\n aria-busy="true"\n aria-live="polite"\n role="status"\n >\n @for (placeholder of loadingPlaceholderItems; track placeholder) {\n <li class="nvb-choice-loading-item" aria-hidden="true">\n <span class="nvb-choice-loading-box"></span>\n <span class="nvb-choice-loading-line"></span>\n </li>\n }\n <span class="nvb-sr-only">Loading checkbox options...</span>\n </ul>\n }\n } @else {\n <ul\n [id]="fieldWrapper.controlId()"\n class="nvb-choice-list"\n [class.nvb-choice-list--fit-content]="model().fitContent"\n [class.nvb-row]="model().showInline"\n [class.nvb-column]="!this.model().showInline"\n [attr.aria-describedby]="fieldWrapper.describedByIds()"\n >\n @for (option of visibleOptions(); track option.value ?? $index; let optionIndex = $index) {\n <li class="nvb-input-wrapper">\n <input\n type="checkbox"\n [id]="resolveOptionInputId(option, optionIndex)"\n [attr.name]="model().name"\n [attr.value]="option.value"\n [attr.data-testid]="resolveOptionTestId(option, optionIndex)"\n [attr.aria-describedby]="fieldWrapper.describedByIds()"\n class="nvb-control__checkbox-input"\n [disabled]="model().disabled"\n (click)="selectOption(option)"\n (focus)="onOptionFocus(option)"\n (blur)="onOptionBlur(option)"\n [checked]="valueChecked(option)"\n />\n <label [for]="resolveOptionInputId(option, optionIndex)">{{ option.label }}</label>\n </li>\n }\n </ul>\n }\n</element-wrapper>\n',styles:[".nvb-input-wrapper{display:flex;gap:var(--nvb-space-3);justify-content:start;align-items:center;font-size:14px;line-height:20px}.nvb-input-wrapper .nvb-control__checkbox-input:disabled{cursor:not-allowed;opacity:.55}.nvb-input-wrapper .nvb-control__checkbox-input:disabled+label{color:var(--nvb-color-neutral-500)}.nvb-choice-list,ul{flex-wrap:wrap;display:flex;gap:var(--nvb-space-3);padding-top:0;margin:0}.nvb-row{flex-direction:row}.nvb-column{flex-direction:column}.nvb-choice-list--loading{width:100%}.nvb-choice-list--fit-content{width:fit-content;max-width:100%}.nvb-choice-loading-item{display:inline-flex;align-items:center;gap:var(--nvb-space-3);min-height:24px;min-width:min(180px,100%)}.nvb-column .nvb-choice-loading-item{width:100%}.nvb-choice-loading-box{width:16px;height:16px;border:1px solid var(--nvb-color-neutral-300);border-radius:var(--nvb-radius-xs, var(--nvb-radius-sm));background:var(--nvb-color-neutral-000);flex:0 0 auto}.nvb-choice-loading-line{border-radius:var(--nvb-radius-full);background:linear-gradient(90deg,color-mix(in oklab,var(--nvb-color-neutral-100) 86%,var(--nvb-color-neutral-000)) 25%,var(--nvb-color-neutral-200) 50%,color-mix(in oklab,var(--nvb-color-neutral-100) 86%,var(--nvb-color-neutral-000)) 75%);background-size:200% 100%;height:12px;width:100%;max-width:132px;animation:checkbox-choice-shimmer 1.35s ease-in-out infinite}@keyframes checkbox-choice-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.nvb-meta-info{display:flex;flex-direction:column;gap:2px;font-size:small}.nvb-meta-info-wrapper{display:flex;gap:var(--nvb-space-7)}.nvb-empty-row{display:flex;gap:var(--nvb-space-3)}.nvb-empty-row li{display:flex;gap:var(--nvb-space-2);justify-content:start;align-items:center;font-size:14px;flex-grow:1}.nvb-empty-row__blank{border-color:var(--nvb-color-neutral-050);width:100%}.nvb-empty-row__title{color:var(--nvb-color-neutral-500)}.nvb-element-title{color:var(--nvb-color-neutral-400);display:flex;align-items:center;gap:var(--nvb-space-2)}.nvb-element-title span{font-size:20px}.nvb-empty-element-wrapper{display:flex;flex-direction:column;gap:var(--nvb-space-3)}\n"],dependencies:[{kind:"component",type:b,selector:"element-wrapper",inputs:["model","controlIdInput","labelForInput","groupRole","showTextWrapperInput"],exportAs:["elementWrapper"]}],changeDetection:o.ChangeDetectionStrategy.OnPush})};o.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"22.2.1",ngImport:o,type:s,decorators:[{type:w,args:[{selector:"checkbox-element",changeDetection:y.OnPush,imports:[b],template:'<element-wrapper\n [model]="model()"\n [labelForInput]="null"\n groupRole="group"\n #fieldWrapper="elementWrapper"\n>\n @if (model().dataSource && !dataSourceLoaded()) {\n @if (isEditorView()) {\n <div class="nvb-empty-element-wrapper">\n <ul class="nvb-empty-row" [class.nvb-row]="model().showInline" [class.nvb-column]="!model().showInline">\n <li>\n <input type="checkbox" class="nvb-control__checkbox-input" tabindex="-1" aria-hidden="true" disabled />\n <hr class="nvb-empty-row__blank" />\n </li>\n <li>\n <input type="checkbox" class="nvb-control__checkbox-input" tabindex="-1" aria-hidden="true" disabled />\n <hr class="nvb-empty-row__blank" />\n </li>\n <li>\n <input type="checkbox" class="nvb-control__checkbox-input" tabindex="-1" aria-hidden="true" disabled />\n <hr class="nvb-empty-row__blank" />\n </li>\n </ul>\n <small class="nvb-element-title">\n <span class="material-symbols-outlined">database</span>\n {{ model()?.dataSource?.source?.title || model()?.dataSource?.name }}\n </small>\n </div>\n } @else {\n <ul\n [id]="fieldWrapper.controlId()"\n class="nvb-choice-list nvb-choice-list--loading"\n [class.nvb-choice-list--fit-content]="model().fitContent"\n [class.nvb-row]="model().showInline"\n [class.nvb-column]="!model().showInline"\n [attr.aria-describedby]="fieldWrapper.describedByIds()"\n aria-busy="true"\n aria-live="polite"\n role="status"\n >\n @for (placeholder of loadingPlaceholderItems; track placeholder) {\n <li class="nvb-choice-loading-item" aria-hidden="true">\n <span class="nvb-choice-loading-box"></span>\n <span class="nvb-choice-loading-line"></span>\n </li>\n }\n <span class="nvb-sr-only">Loading checkbox options...</span>\n </ul>\n }\n } @else {\n <ul\n [id]="fieldWrapper.controlId()"\n class="nvb-choice-list"\n [class.nvb-choice-list--fit-content]="model().fitContent"\n [class.nvb-row]="model().showInline"\n [class.nvb-column]="!this.model().showInline"\n [attr.aria-describedby]="fieldWrapper.describedByIds()"\n >\n @for (option of visibleOptions(); track option.value ?? $index; let optionIndex = $index) {\n <li class="nvb-input-wrapper">\n <input\n type="checkbox"\n [id]="resolveOptionInputId(option, optionIndex)"\n [attr.name]="model().name"\n [attr.value]="option.value"\n [attr.data-testid]="resolveOptionTestId(option, optionIndex)"\n [attr.aria-describedby]="fieldWrapper.describedByIds()"\n class="nvb-control__checkbox-input"\n [disabled]="model().disabled"\n (click)="selectOption(option)"\n (focus)="onOptionFocus(option)"\n (blur)="onOptionBlur(option)"\n [checked]="valueChecked(option)"\n />\n <label [for]="resolveOptionInputId(option, optionIndex)">{{ option.label }}</label>\n </li>\n }\n </ul>\n }\n</element-wrapper>\n',styles:[".nvb-input-wrapper{display:flex;gap:var(--nvb-space-3);justify-content:start;align-items:center;font-size:14px;line-height:20px}.nvb-input-wrapper .nvb-control__checkbox-input:disabled{cursor:not-allowed;opacity:.55}.nvb-input-wrapper .nvb-control__checkbox-input:disabled+label{color:var(--nvb-color-neutral-500)}.nvb-choice-list,ul{flex-wrap:wrap;display:flex;gap:var(--nvb-space-3);padding-top:0;margin:0}.nvb-row{flex-direction:row}.nvb-column{flex-direction:column}.nvb-choice-list--loading{width:100%}.nvb-choice-list--fit-content{width:fit-content;max-width:100%}.nvb-choice-loading-item{display:inline-flex;align-items:center;gap:var(--nvb-space-3);min-height:24px;min-width:min(180px,100%)}.nvb-column .nvb-choice-loading-item{width:100%}.nvb-choice-loading-box{width:16px;height:16px;border:1px solid var(--nvb-color-neutral-300);border-radius:var(--nvb-radius-xs, var(--nvb-radius-sm));background:var(--nvb-color-neutral-000);flex:0 0 auto}.nvb-choice-loading-line{border-radius:var(--nvb-radius-full);background:linear-gradient(90deg,color-mix(in oklab,var(--nvb-color-neutral-100) 86%,var(--nvb-color-neutral-000)) 25%,var(--nvb-color-neutral-200) 50%,color-mix(in oklab,var(--nvb-color-neutral-100) 86%,var(--nvb-color-neutral-000)) 75%);background-size:200% 100%;height:12px;width:100%;max-width:132px;animation:checkbox-choice-shimmer 1.35s ease-in-out infinite}@keyframes checkbox-choice-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.nvb-meta-info{display:flex;flex-direction:column;gap:2px;font-size:small}.nvb-meta-info-wrapper{display:flex;gap:var(--nvb-space-7)}.nvb-empty-row{display:flex;gap:var(--nvb-space-3)}.nvb-empty-row li{display:flex;gap:var(--nvb-space-2);justify-content:start;align-items:center;font-size:14px;flex-grow:1}.nvb-empty-row__blank{border-color:var(--nvb-color-neutral-050);width:100%}.nvb-empty-row__title{color:var(--nvb-color-neutral-500)}.nvb-element-title{color:var(--nvb-color-neutral-400);display:flex;align-items:center;gap:var(--nvb-space-2)}.nvb-element-title span{font-size:20px}.nvb-empty-element-wrapper{display:flex;flex-direction:column;gap:var(--nvb-space-3)}\n"]}]}],propDecorators:{model:[{type:o.Input,args:[{isSignal:true,alias:"model",required:true}]}]}});export{I as n,s as t};
|