@kyndryl-design-system/shidoka-applications 2.109.1 → 2.109.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.
@@ -99,6 +99,7 @@ export interface QueryBuilderConfig {
99
99
  combinators?: QueryOption[];
100
100
  showCloneButtons?: boolean;
101
101
  showLockButtons?: boolean;
102
+ hideGroupBtn?: boolean;
102
103
  maxDepth?: number;
103
104
  disableDragAndDrop?: boolean;
104
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/reusable/queryBuilder/defs/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/components/reusable/queryBuilder/defs/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../src/components/reusable/queryBuilder/defs/types.ts"],"sourcesContent":["/**\n * represents a group of rules with a logical combinator (AND/OR).\n * groups can contain both rules and nested groups, forming a tree structure.\n */\nexport interface RuleGroupType {\n id: string;\n combinator: 'and' | 'or';\n rules: RuleOrGroup[];\n not?: boolean;\n disabled?: boolean;\n}\n\n/**\n * represents a single rule/condition in the query.\n */\nexport interface RuleType {\n id: string;\n field: string;\n operator: string;\n value: any;\n valueSource?: 'value' | 'field';\n disabled?: boolean;\n /** Wwether the rule passes validation (undefined = not yet validated) */\n valid?: boolean;\n /** validation error message if valid is false */\n validationError?: string;\n}\n\n/**\n * union type for items that can appear in a rule group\n */\nexport type RuleOrGroup = RuleType | RuleGroupType;\n\n/**\n * type guard to check if an item is a RuleGroupType\n */\nexport function isRuleGroup(item: RuleOrGroup): item is RuleGroupType {\n return 'combinator' in item && 'rules' in item;\n}\n\n/**\n * type guard to check if an item is a RuleType\n */\nexport function isRule(item: RuleOrGroup): item is RuleType {\n return 'field' in item && 'operator' in item;\n}\n\n/**\n * configuration for a queryable field.\n */\nexport interface QueryField {\n name: string;\n label: string;\n dataType: FieldDataType;\n operators?: QueryOperator[];\n values?: QueryOption[];\n defaultOperator?: string;\n defaultValue?: any;\n placeholder?: string;\n validator?: (rule: RuleType) => boolean | string;\n\n // Validation props - passed through to input components\n /** Makes the field required */\n required?: boolean;\n\n // Number validation (also used for slider)\n /** Minimum value for number/slider fields */\n min?: number;\n /** Maximum value for number/slider fields */\n max?: number;\n /** Step increment for number/slider fields */\n step?: number;\n\n // Text validation\n /** RegEx pattern for text fields */\n pattern?: string;\n /** Minimum character length for text fields */\n minLength?: number;\n /** Maximum character length for text fields */\n maxLength?: number;\n\n // Date validation\n /** Minimum date for date/datetime fields */\n minDate?: string | number | Date;\n /** Maximum date for date/datetime fields */\n maxDate?: string | number | Date;\n\n // Time validation\n /** Minimum time for time fields */\n minTime?: string | number | Date;\n /** Maximum time for time fields */\n maxTime?: string | number | Date;\n}\n\n/**\n * supported field data types\n */\nexport type FieldDataType =\n | 'text'\n | 'number'\n | 'date'\n | 'datetime'\n | 'time'\n | 'boolean'\n | 'select'\n | 'radio'\n | 'slider';\n\n/**\n * configuration for an operator.\n */\nexport interface QueryOperator {\n name: string;\n label: string;\n valueCount?: 'none' | 'single';\n}\n\n/**\n * generic option used for dropdowns (fields, operators, values).\n */\nexport interface QueryOption {\n value: string;\n label: string;\n}\n\n/**\n * configuration options for the query builder component.\n */\nexport interface QueryBuilderConfig {\n fields: QueryField[];\n combinators?: QueryOption[];\n showCloneButtons?: boolean;\n showLockButtons?: boolean;\n maxDepth?: number;\n disableDragAndDrop?: boolean;\n}\n\n/**\n * event detail for query change events.\n */\nexport interface QueryChangeEventDetail {\n /** The updated query */\n query: RuleGroupType;\n}\n\n/**\n * event detail for rule/group actions.\n */\nexport interface QueryActionEventDetail {\n action: 'add-rule' | 'add-group' | 'remove' | 'clone' | 'lock' | 'unlock';\n path: number[];\n item?: RuleOrGroup;\n}\n\n/**\n * size options for the query builder components.\n * uses the short format (xs, sm, md, lg) which maps to:\n * - inputs/dropdowns/pickers: xs, sm, md, lg\n * - buttons: extra-small, small, medium, large\n */\nexport type QueryBuilderSize = 'xs' | 'sm' | 'md' | 'lg';\n\n/**\n * button size format used by kyn-button component.\n */\nexport type ButtonSize = 'extra-small' | 'small' | 'medium' | 'large';\n\n/**\n * maps QueryBuilderSize to ButtonSize.\n */\nexport const sizeToButtonSize: Record<QueryBuilderSize, ButtonSize> = {\n xs: 'extra-small',\n sm: 'small',\n md: 'medium',\n lg: 'large',\n};\n"],"names":["isRuleGroup","item","isRule","sizeToButtonSize","xs","sm","md","lg"],"mappings":"AAoCM,SAAUA,EAAYC,GAC1B,MAAO,eAAgBA,GAAQ,UAAWA,CAC5C,CAKM,SAAUC,EAAOD,GACrB,MAAO,UAAWA,GAAQ,aAAcA,CAC1C,CA6HO,MAAME,EAAyD,CACpEC,GAAI,cACJC,GAAI,QACJC,GAAI,SACJC,GAAI"}
1
+ {"version":3,"file":"types.js","sources":["../../../../../src/components/reusable/queryBuilder/defs/types.ts"],"sourcesContent":["/**\n * represents a group of rules with a logical combinator (AND/OR).\n * groups can contain both rules and nested groups, forming a tree structure.\n */\nexport interface RuleGroupType {\n id: string;\n combinator: 'and' | 'or';\n rules: RuleOrGroup[];\n not?: boolean;\n disabled?: boolean;\n}\n\n/**\n * represents a single rule/condition in the query.\n */\nexport interface RuleType {\n id: string;\n field: string;\n operator: string;\n value: any;\n valueSource?: 'value' | 'field';\n disabled?: boolean;\n /** Wwether the rule passes validation (undefined = not yet validated) */\n valid?: boolean;\n /** validation error message if valid is false */\n validationError?: string;\n}\n\n/**\n * union type for items that can appear in a rule group\n */\nexport type RuleOrGroup = RuleType | RuleGroupType;\n\n/**\n * type guard to check if an item is a RuleGroupType\n */\nexport function isRuleGroup(item: RuleOrGroup): item is RuleGroupType {\n return 'combinator' in item && 'rules' in item;\n}\n\n/**\n * type guard to check if an item is a RuleType\n */\nexport function isRule(item: RuleOrGroup): item is RuleType {\n return 'field' in item && 'operator' in item;\n}\n\n/**\n * configuration for a queryable field.\n */\nexport interface QueryField {\n name: string;\n label: string;\n dataType: FieldDataType;\n operators?: QueryOperator[];\n values?: QueryOption[];\n defaultOperator?: string;\n defaultValue?: any;\n placeholder?: string;\n validator?: (rule: RuleType) => boolean | string;\n\n // Validation props - passed through to input components\n /** Makes the field required */\n required?: boolean;\n\n // Number validation (also used for slider)\n /** Minimum value for number/slider fields */\n min?: number;\n /** Maximum value for number/slider fields */\n max?: number;\n /** Step increment for number/slider fields */\n step?: number;\n\n // Text validation\n /** RegEx pattern for text fields */\n pattern?: string;\n /** Minimum character length for text fields */\n minLength?: number;\n /** Maximum character length for text fields */\n maxLength?: number;\n\n // Date validation\n /** Minimum date for date/datetime fields */\n minDate?: string | number | Date;\n /** Maximum date for date/datetime fields */\n maxDate?: string | number | Date;\n\n // Time validation\n /** Minimum time for time fields */\n minTime?: string | number | Date;\n /** Maximum time for time fields */\n maxTime?: string | number | Date;\n}\n\n/**\n * supported field data types\n */\nexport type FieldDataType =\n | 'text'\n | 'number'\n | 'date'\n | 'datetime'\n | 'time'\n | 'boolean'\n | 'select'\n | 'radio'\n | 'slider';\n\n/**\n * configuration for an operator.\n */\nexport interface QueryOperator {\n name: string;\n label: string;\n valueCount?: 'none' | 'single';\n}\n\n/**\n * generic option used for dropdowns (fields, operators, values).\n */\nexport interface QueryOption {\n value: string;\n label: string;\n}\n\n/**\n * configuration options for the query builder component.\n */\nexport interface QueryBuilderConfig {\n fields: QueryField[];\n combinators?: QueryOption[];\n showCloneButtons?: boolean;\n showLockButtons?: boolean;\n hideGroupBtn?: boolean;\n maxDepth?: number;\n disableDragAndDrop?: boolean;\n}\n\n/**\n * event detail for query change events.\n */\nexport interface QueryChangeEventDetail {\n /** The updated query */\n query: RuleGroupType;\n}\n\n/**\n * event detail for rule/group actions.\n */\nexport interface QueryActionEventDetail {\n action: 'add-rule' | 'add-group' | 'remove' | 'clone' | 'lock' | 'unlock';\n path: number[];\n item?: RuleOrGroup;\n}\n\n/**\n * size options for the query builder components.\n * uses the short format (xs, sm, md, lg) which maps to:\n * - inputs/dropdowns/pickers: xs, sm, md, lg\n * - buttons: extra-small, small, medium, large\n */\nexport type QueryBuilderSize = 'xs' | 'sm' | 'md' | 'lg';\n\n/**\n * button size format used by kyn-button component.\n */\nexport type ButtonSize = 'extra-small' | 'small' | 'medium' | 'large';\n\n/**\n * maps QueryBuilderSize to ButtonSize.\n */\nexport const sizeToButtonSize: Record<QueryBuilderSize, ButtonSize> = {\n xs: 'extra-small',\n sm: 'small',\n md: 'medium',\n lg: 'large',\n};\n"],"names":["isRuleGroup","item","isRule","sizeToButtonSize","xs","sm","md","lg"],"mappings":"AAoCM,SAAUA,EAAYC,GAC1B,MAAO,eAAgBA,GAAQ,UAAWA,CAC5C,CAKM,SAAUC,EAAOD,GACrB,MAAO,UAAWA,GAAQ,aAAcA,CAC1C,CA8HO,MAAME,EAAyD,CACpEC,GAAI,cACJC,GAAI,QACJC,GAAI,SACJC,GAAI"}
@@ -38,6 +38,8 @@ export declare class QueryBuilder extends LitElement {
38
38
  accessor showCloneButtons: boolean;
39
39
  /** Show lock/disable button on rules/groups */
40
40
  accessor showLockButtons: boolean;
41
+ /** Hide the group add button */
42
+ accessor hideGroupBtn: boolean;
41
43
  /** Maximum nesting depth (default: unlimited) */
42
44
  accessor maxDepth: number;
43
45
  /** Disable drag-and-drop reordering */
@@ -1 +1 @@
1
- {"version":3,"file":"queryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/queryBuilder/queryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,cAAc,EAAE,MAAM,KAAK,CAAC;AAOlE,OAAO,KAAK,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAOtB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAkC5B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,0BAAiC;IAEvD,+BAA+B;IAE/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAwB;IAErD,gCAAgC;IAEhC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAM;IAEnC;;OAEG;IACH,OAAO,KAAK,YAAY,GAKvB;IAED,wCAAwC;IAExC,QAAQ,CAAC,gBAAgB,UAAS;IAElC,+CAA+C;IAE/C,QAAQ,CAAC,eAAe,UAAS;IAEjC,iDAAiD;IAEjD,QAAQ,CAAC,QAAQ,SAAY;IAE7B,uCAAuC;IAEvC,QAAQ,CAAC,kBAAkB,UAAS;IAEpC,uCAAuC;IAEvC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,6EAA6E;IAE7E,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAQ;IAEvC;;;;OAIG;IAEH,QAAQ,CAAC,eAAe,SAAM;IAE9B,0CAA0C;IAE1C,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAuB;IAE3C;;OAEG;IAEH,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAwB;IAE9D;;OAEG;IAEH,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAuB;IAEnC,UAAU,CAAC,YAAY,EAAE,cAAc;IAUvC,MAAM;IAmCf,OAAO,CAAC,wBAAwB;IAgChC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,QAAQ,IAAI,aAAa;IAIzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa;IAI7B;;OAEG;IACH,UAAU;IAKV;;OAEG;IACH,OAAO,CAAC,eAAe;IA4CvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,iBAAiB;CAS1B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,YAAY,CAAC;KACnC;CACF"}
1
+ {"version":3,"file":"queryBuilder.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/queryBuilder/queryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,cAAc,EAAE,MAAM,KAAK,CAAC;AAOlE,OAAO,KAAK,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAOtB,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAkC5B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,OAAgB,MAAM,0BAAiC;IAEvD,+BAA+B;IAE/B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAwB;IAErD,gCAAgC;IAEhC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAM;IAEnC;;OAEG;IACH,OAAO,KAAK,YAAY,GAKvB;IAED,wCAAwC;IAExC,QAAQ,CAAC,gBAAgB,UAAS;IAElC,+CAA+C;IAE/C,QAAQ,CAAC,eAAe,UAAS;IAEjC,gCAAgC;IAEhC,QAAQ,CAAC,YAAY,UAAS;IAE9B,iDAAiD;IAEjD,QAAQ,CAAC,QAAQ,SAAY;IAE7B,uCAAuC;IAEvC,QAAQ,CAAC,kBAAkB,UAAS;IAEpC,uCAAuC;IAEvC,QAAQ,CAAC,QAAQ,UAAS;IAE1B,6EAA6E;IAE7E,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAQ;IAEvC;;;;OAIG;IAEH,QAAQ,CAAC,eAAe,SAAM;IAE9B,0CAA0C;IAE1C,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAuB;IAE3C;;OAEG;IAEH,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAwB;IAE9D;;OAEG;IAEH,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAAuB;IAEnC,UAAU,CAAC,YAAY,EAAE,cAAc;IAUvC,MAAM;IAoCf,OAAO,CAAC,wBAAwB;IAgChC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoBhC,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,gBAAgB;IAcxB;;OAEG;IACH,QAAQ,IAAI,aAAa;IAIzB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,aAAa;IAI7B;;OAEG;IACH,UAAU;IAKV;;OAEG;IACH,OAAO,CAAC,eAAe;IA4CvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,eAAe;IAkBvB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,iBAAiB;CAS1B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,YAAY,CAAC;KACnC;CACF"}
@@ -112,7 +112,7 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPr
112
112
  }
113
113
  .query-builder__validation-item strong {
114
114
  font-weight: var(--kd-font-weight-medium);
115
- }`;const _={and:"AND",or:"OR",removeGroup:"Remove group",cloneGroup:"Clone group",addRule:"Add Rule",addGroup:"Group",lockGroup:"Lock group",unlockGroup:"Unlock group",removeRule:"Remove rule",cloneRule:"Clone rule",lockRule:"Lock rule",unlockRule:"Unlock rule",dragToReorder:"Drag to reorder",selectField:"Select Field",selectOperator:"Select Operator",value:"Value",selectValue:"Select value",selectValues:"Select values",selectDate:"Select date",selectDateTime:"Select date/time",selectTime:"Select time",min:"Min",max:"Max",start:"Start",end:"End",from:"From",to:"To",validationErrors:"Validation errors",validationErrorCount:"{count} validation error(s)"};let x=(()=>{var a,x,w,j,S,q,D,Q,B,$,C,G;let z,M,A,L,O,I,P,R,T,W,E,V,N,J,U=[d("kyn-query-builder")],F=[],H=o,K=[],X=[],Y=[],Z=[],tt=[],et=[],it=[],rt=[],st=[],at=[],ot=[],nt=[],lt=[],dt=[],ut=[],ht=[],pt=[],ct=[],mt=[],gt=[],yt=[],ft=[],bt=[],kt=[];return M=class extends H{get query(){return r(this,a,"f")}set query(t){s(this,a,t,"f")}get fields(){return r(this,x,"f")}set fields(t){s(this,x,t,"f")}get _combinators(){return[{value:"and",label:this._textStrings.and},{value:"or",label:this._textStrings.or}]}get showCloneButtons(){return r(this,w,"f")}set showCloneButtons(t){s(this,w,t,"f")}get showLockButtons(){return r(this,j,"f")}set showLockButtons(t){s(this,j,t,"f")}get maxDepth(){return r(this,S,"f")}set maxDepth(t){s(this,S,t,"f")}get disableDragAndDrop(){return r(this,q,"f")}set disableDragAndDrop(t){s(this,q,t,"f")}get disabled(){return r(this,D,"f")}set disabled(t){s(this,D,t,"f")}get size(){return r(this,Q,"f")}set size(t){s(this,Q,t,"f")}get searchThreshold(){return r(this,B,"f")}set searchThreshold(t){s(this,B,t,"f")}get textStrings(){return r(this,$,"f")}set textStrings(t){s(this,$,t,"f")}get _internalQuery(){return r(this,C,"f")}set _internalQuery(t){s(this,C,t,"f")}get _textStrings(){return r(this,G,"f")}set _textStrings(t){s(this,G,t,"f")}willUpdate(t){t.has("query")&&(this._internalQuery=this._normalizeQuery(this.query)),t.has("textStrings")&&(this._textStrings=c(_,this.textStrings))}render(){const t={"query-builder":!0,"query-builder--disabled":this.disabled};return l`
115
+ }`;const _={and:"AND",or:"OR",removeGroup:"Remove group",cloneGroup:"Clone group",addRule:"Add Rule",addGroup:"Group",lockGroup:"Lock group",unlockGroup:"Unlock group",removeRule:"Remove rule",cloneRule:"Clone rule",lockRule:"Lock rule",unlockRule:"Unlock rule",dragToReorder:"Drag to reorder",selectField:"Select Field",selectOperator:"Select Operator",value:"Value",selectValue:"Select value",selectValues:"Select values",selectDate:"Select date",selectDateTime:"Select date/time",selectTime:"Select time",min:"Min",max:"Max",start:"Start",end:"End",from:"From",to:"To",validationErrors:"Validation errors",validationErrorCount:"{count} validation error(s)"};let x=(()=>{var a,x,w,j,S,q,B,D,G,Q,$,C,M;let z,A,L,O,W,I,P,R,T,E,V,N,J,U,F,H=[d("kyn-query-builder")],K=[],X=o,Y=[],Z=[],tt=[],et=[],it=[],rt=[],st=[],at=[],ot=[],nt=[],lt=[],dt=[],ut=[],ht=[],pt=[],ct=[],mt=[],gt=[],yt=[],ft=[],bt=[],kt=[],vt=[],_t=[],xt=[],wt=[];return A=class extends X{get query(){return r(this,a,"f")}set query(t){s(this,a,t,"f")}get fields(){return r(this,x,"f")}set fields(t){s(this,x,t,"f")}get _combinators(){return[{value:"and",label:this._textStrings.and},{value:"or",label:this._textStrings.or}]}get showCloneButtons(){return r(this,w,"f")}set showCloneButtons(t){s(this,w,t,"f")}get showLockButtons(){return r(this,j,"f")}set showLockButtons(t){s(this,j,t,"f")}get hideGroupBtn(){return r(this,S,"f")}set hideGroupBtn(t){s(this,S,t,"f")}get maxDepth(){return r(this,q,"f")}set maxDepth(t){s(this,q,t,"f")}get disableDragAndDrop(){return r(this,B,"f")}set disableDragAndDrop(t){s(this,B,t,"f")}get disabled(){return r(this,D,"f")}set disabled(t){s(this,D,t,"f")}get size(){return r(this,G,"f")}set size(t){s(this,G,t,"f")}get searchThreshold(){return r(this,Q,"f")}set searchThreshold(t){s(this,Q,t,"f")}get textStrings(){return r(this,$,"f")}set textStrings(t){s(this,$,t,"f")}get _internalQuery(){return r(this,C,"f")}set _internalQuery(t){s(this,C,t,"f")}get _textStrings(){return r(this,M,"f")}set _textStrings(t){s(this,M,t,"f")}willUpdate(t){t.has("query")&&(this._internalQuery=this._normalizeQuery(this.query)),t.has("textStrings")&&(this._textStrings=c(_,this.textStrings))}render(){const t={"query-builder":!0,"query-builder--disabled":this.disabled};return l`
116
116
  <div class=${p(t)}>
117
117
  <slot name="header"></slot>
118
118
  <div class="query-builder__content">
@@ -129,6 +129,7 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPr
129
129
  isRoot
130
130
  ?showCloneButton=${this.showCloneButtons}
131
131
  ?showLockButton=${this.showLockButtons}
132
+ ?hideGroupBtn=${this.hideGroupBtn}
132
133
  ?disableDragAndDrop=${this.disableDragAndDrop}
133
134
  ?disabled=${this.disabled}
134
135
  @on-group-change=${this._handleGroupChange}
@@ -156,5 +157,5 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as i,__classPr
156
157
  `))}
157
158
  </ul>
158
159
  </div>
159
- `}_collectValidationErrors(t){const e=[];for(const i of t.rules)if(m(i))e.push(...this._collectValidationErrors(i));else if(g(i)&&!1===i.valid&&i.validationError){const t=this.fields.find((t=>t.name===i.field));e.push({fieldLabel:(null==t?void 0:t.label)||i.field||"Unknown field",message:i.validationError})}return e}_handleGroupChange(t){t.stopPropagation();const{group:e}=t.detail;this._internalQuery=e,this._emitQueryChange()}_handleGroupLock(t){t.stopPropagation();const{disabled:e}=t.detail;this._internalQuery={...this._internalQuery,disabled:e},this._emitQueryChange()}_emitQueryChange(){const t={query:this._internalQuery};this.dispatchEvent(new CustomEvent("on-query-change",{detail:t,bubbles:!0,composed:!0}))}getQuery(){return this._internalQuery}setQuery(t){this.query=t}resetQuery(){this._internalQuery=y(),this._emitQueryChange()}_handleItemMove(t){t.stopPropagation();const{dragData:e,targetPath:i,targetIndex:r}=t.detail,s=this._cloneQuery(this._internalQuery),a=this._getGroupAtPath(s,e.sourcePath);if(!a)return;const o=a.rules[e.sourceIndex];if(!o)return;const n=this._getGroupAtPath(s,i);if(!n)return;if(m(o)){if(i.length+1+this._getMaxGroupDepth(o)>this.maxDepth)return}a.rules.splice(e.sourceIndex,1);let l=r;JSON.stringify(e.sourcePath)===JSON.stringify(i)&&e.sourceIndex<r&&(l=Math.max(0,r-1)),n.rules.splice(l,0,o),this._internalQuery=s,this._emitQueryChange()}_getGroupAtPath(t,e){if(0===e.length)return t;let i=t;for(const t of e){if(!m(i))return null;if(i=i.rules[t],!i)return null}return m(i)?i:null}_normalizeQuery(t){const e=t=>({...t,id:t.id||f(),rules:(t.rules||[]).map((t=>m(t)?e(t):{...t,id:t.id||f()}))});return e(t)}_cloneQuery(t){return"function"==typeof structuredClone?structuredClone(t):JSON.parse(JSON.stringify(t))}_getMaxGroupDepth(t){let e=0;for(const i of t.rules)m(i)&&(e=Math.max(e,1+this._getMaxGroupDepth(i)));return e}constructor(){super(...arguments),a.set(this,i(this,K,y())),x.set(this,(i(this,X),i(this,Y,[]))),w.set(this,(i(this,Z),i(this,tt,!1))),j.set(this,(i(this,et),i(this,it,!1))),S.set(this,(i(this,rt),i(this,st,1/0))),q.set(this,(i(this,at),i(this,ot,!1))),D.set(this,(i(this,nt),i(this,lt,!1))),Q.set(this,(i(this,dt),i(this,ut,"xs"))),B.set(this,(i(this,ht),i(this,pt,25))),$.set(this,(i(this,ct),i(this,mt,_))),C.set(this,(i(this,gt),i(this,yt,y()))),G.set(this,(i(this,ft),i(this,bt,_))),i(this,kt)}},a=new WeakMap,x=new WeakMap,w=new WeakMap,j=new WeakMap,S=new WeakMap,q=new WeakMap,D=new WeakMap,Q=new WeakMap,B=new WeakMap,$=new WeakMap,C=new WeakMap,G=new WeakMap,t(M,"QueryBuilder"),(()=>{var t;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=H[Symbol.metadata])&&void 0!==t?t:null):void 0;A=[u({type:Object})],L=[u({type:Array})],O=[u({type:Boolean})],I=[u({type:Boolean})],P=[u({type:Number})],R=[u({type:Boolean})],T=[u({type:Boolean,reflect:!0})],W=[u({type:String})],E=[u({type:Number})],V=[u({type:Object})],N=[h()],J=[h()],e(M,null,A,{kind:"accessor",name:"query",static:!1,private:!1,access:{has:t=>"query"in t,get:t=>t.query,set:(t,e)=>{t.query=e}},metadata:i},K,X),e(M,null,L,{kind:"accessor",name:"fields",static:!1,private:!1,access:{has:t=>"fields"in t,get:t=>t.fields,set:(t,e)=>{t.fields=e}},metadata:i},Y,Z),e(M,null,O,{kind:"accessor",name:"showCloneButtons",static:!1,private:!1,access:{has:t=>"showCloneButtons"in t,get:t=>t.showCloneButtons,set:(t,e)=>{t.showCloneButtons=e}},metadata:i},tt,et),e(M,null,I,{kind:"accessor",name:"showLockButtons",static:!1,private:!1,access:{has:t=>"showLockButtons"in t,get:t=>t.showLockButtons,set:(t,e)=>{t.showLockButtons=e}},metadata:i},it,rt),e(M,null,P,{kind:"accessor",name:"maxDepth",static:!1,private:!1,access:{has:t=>"maxDepth"in t,get:t=>t.maxDepth,set:(t,e)=>{t.maxDepth=e}},metadata:i},st,at),e(M,null,R,{kind:"accessor",name:"disableDragAndDrop",static:!1,private:!1,access:{has:t=>"disableDragAndDrop"in t,get:t=>t.disableDragAndDrop,set:(t,e)=>{t.disableDragAndDrop=e}},metadata:i},ot,nt),e(M,null,T,{kind:"accessor",name:"disabled",static:!1,private:!1,access:{has:t=>"disabled"in t,get:t=>t.disabled,set:(t,e)=>{t.disabled=e}},metadata:i},lt,dt),e(M,null,W,{kind:"accessor",name:"size",static:!1,private:!1,access:{has:t=>"size"in t,get:t=>t.size,set:(t,e)=>{t.size=e}},metadata:i},ut,ht),e(M,null,E,{kind:"accessor",name:"searchThreshold",static:!1,private:!1,access:{has:t=>"searchThreshold"in t,get:t=>t.searchThreshold,set:(t,e)=>{t.searchThreshold=e}},metadata:i},pt,ct),e(M,null,V,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,e)=>{t.textStrings=e}},metadata:i},mt,gt),e(M,null,N,{kind:"accessor",name:"_internalQuery",static:!1,private:!1,access:{has:t=>"_internalQuery"in t,get:t=>t._internalQuery,set:(t,e)=>{t._internalQuery=e}},metadata:i},yt,ft),e(M,null,J,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:t=>"_textStrings"in t,get:t=>t._textStrings,set:(t,e)=>{t._textStrings=e}},metadata:i},bt,kt),e(null,z={value:M},U,{kind:"class",name:M.name,metadata:i},null,F),M=z.value,i&&Object.defineProperty(M,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),M.styles=n(v),i(M,F),M})();export{x as QueryBuilder};
160
+ `}_collectValidationErrors(t){const e=[];for(const i of t.rules)if(m(i))e.push(...this._collectValidationErrors(i));else if(g(i)&&!1===i.valid&&i.validationError){const t=this.fields.find((t=>t.name===i.field));e.push({fieldLabel:(null==t?void 0:t.label)||i.field||"Unknown field",message:i.validationError})}return e}_handleGroupChange(t){t.stopPropagation();const{group:e}=t.detail;this._internalQuery=e,this._emitQueryChange()}_handleGroupLock(t){t.stopPropagation();const{disabled:e}=t.detail;this._internalQuery={...this._internalQuery,disabled:e},this._emitQueryChange()}_emitQueryChange(){const t={query:this._internalQuery};this.dispatchEvent(new CustomEvent("on-query-change",{detail:t,bubbles:!0,composed:!0}))}getQuery(){return this._internalQuery}setQuery(t){this.query=t}resetQuery(){this._internalQuery=y(),this._emitQueryChange()}_handleItemMove(t){t.stopPropagation();const{dragData:e,targetPath:i,targetIndex:r}=t.detail,s=this._cloneQuery(this._internalQuery),a=this._getGroupAtPath(s,e.sourcePath);if(!a)return;const o=a.rules[e.sourceIndex];if(!o)return;const n=this._getGroupAtPath(s,i);if(!n)return;if(m(o)){if(i.length+1+this._getMaxGroupDepth(o)>this.maxDepth)return}a.rules.splice(e.sourceIndex,1);let l=r;JSON.stringify(e.sourcePath)===JSON.stringify(i)&&e.sourceIndex<r&&(l=Math.max(0,r-1)),n.rules.splice(l,0,o),this._internalQuery=s,this._emitQueryChange()}_getGroupAtPath(t,e){if(0===e.length)return t;let i=t;for(const t of e){if(!m(i))return null;if(i=i.rules[t],!i)return null}return m(i)?i:null}_normalizeQuery(t){const e=t=>({...t,id:t.id||f(),rules:(t.rules||[]).map((t=>m(t)?e(t):{...t,id:t.id||f()}))});return e(t)}_cloneQuery(t){return"function"==typeof structuredClone?structuredClone(t):JSON.parse(JSON.stringify(t))}_getMaxGroupDepth(t){let e=0;for(const i of t.rules)m(i)&&(e=Math.max(e,1+this._getMaxGroupDepth(i)));return e}constructor(){super(...arguments),a.set(this,i(this,Y,y())),x.set(this,(i(this,Z),i(this,tt,[]))),w.set(this,(i(this,et),i(this,it,!1))),j.set(this,(i(this,rt),i(this,st,!1))),S.set(this,(i(this,at),i(this,ot,!1))),q.set(this,(i(this,nt),i(this,lt,1/0))),B.set(this,(i(this,dt),i(this,ut,!1))),D.set(this,(i(this,ht),i(this,pt,!1))),G.set(this,(i(this,ct),i(this,mt,"xs"))),Q.set(this,(i(this,gt),i(this,yt,25))),$.set(this,(i(this,ft),i(this,bt,_))),C.set(this,(i(this,kt),i(this,vt,y()))),M.set(this,(i(this,_t),i(this,xt,_))),i(this,wt)}},a=new WeakMap,x=new WeakMap,w=new WeakMap,j=new WeakMap,S=new WeakMap,q=new WeakMap,B=new WeakMap,D=new WeakMap,G=new WeakMap,Q=new WeakMap,$=new WeakMap,C=new WeakMap,M=new WeakMap,t(A,"QueryBuilder"),(()=>{var t;const i="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=X[Symbol.metadata])&&void 0!==t?t:null):void 0;L=[u({type:Object})],O=[u({type:Array})],W=[u({type:Boolean})],I=[u({type:Boolean})],P=[u({type:Boolean})],R=[u({type:Number})],T=[u({type:Boolean})],E=[u({type:Boolean,reflect:!0})],V=[u({type:String})],N=[u({type:Number})],J=[u({type:Object})],U=[h()],F=[h()],e(A,null,L,{kind:"accessor",name:"query",static:!1,private:!1,access:{has:t=>"query"in t,get:t=>t.query,set:(t,e)=>{t.query=e}},metadata:i},Y,Z),e(A,null,O,{kind:"accessor",name:"fields",static:!1,private:!1,access:{has:t=>"fields"in t,get:t=>t.fields,set:(t,e)=>{t.fields=e}},metadata:i},tt,et),e(A,null,W,{kind:"accessor",name:"showCloneButtons",static:!1,private:!1,access:{has:t=>"showCloneButtons"in t,get:t=>t.showCloneButtons,set:(t,e)=>{t.showCloneButtons=e}},metadata:i},it,rt),e(A,null,I,{kind:"accessor",name:"showLockButtons",static:!1,private:!1,access:{has:t=>"showLockButtons"in t,get:t=>t.showLockButtons,set:(t,e)=>{t.showLockButtons=e}},metadata:i},st,at),e(A,null,P,{kind:"accessor",name:"hideGroupBtn",static:!1,private:!1,access:{has:t=>"hideGroupBtn"in t,get:t=>t.hideGroupBtn,set:(t,e)=>{t.hideGroupBtn=e}},metadata:i},ot,nt),e(A,null,R,{kind:"accessor",name:"maxDepth",static:!1,private:!1,access:{has:t=>"maxDepth"in t,get:t=>t.maxDepth,set:(t,e)=>{t.maxDepth=e}},metadata:i},lt,dt),e(A,null,T,{kind:"accessor",name:"disableDragAndDrop",static:!1,private:!1,access:{has:t=>"disableDragAndDrop"in t,get:t=>t.disableDragAndDrop,set:(t,e)=>{t.disableDragAndDrop=e}},metadata:i},ut,ht),e(A,null,E,{kind:"accessor",name:"disabled",static:!1,private:!1,access:{has:t=>"disabled"in t,get:t=>t.disabled,set:(t,e)=>{t.disabled=e}},metadata:i},pt,ct),e(A,null,V,{kind:"accessor",name:"size",static:!1,private:!1,access:{has:t=>"size"in t,get:t=>t.size,set:(t,e)=>{t.size=e}},metadata:i},mt,gt),e(A,null,N,{kind:"accessor",name:"searchThreshold",static:!1,private:!1,access:{has:t=>"searchThreshold"in t,get:t=>t.searchThreshold,set:(t,e)=>{t.searchThreshold=e}},metadata:i},yt,ft),e(A,null,J,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,e)=>{t.textStrings=e}},metadata:i},bt,kt),e(A,null,U,{kind:"accessor",name:"_internalQuery",static:!1,private:!1,access:{has:t=>"_internalQuery"in t,get:t=>t._internalQuery,set:(t,e)=>{t._internalQuery=e}},metadata:i},vt,_t),e(A,null,F,{kind:"accessor",name:"_textStrings",static:!1,private:!1,access:{has:t=>"_textStrings"in t,get:t=>t._textStrings,set:(t,e)=>{t._textStrings=e}},metadata:i},xt,wt),e(null,z={value:A},H,{kind:"class",name:A.name,metadata:i},null,K),A=z.value,i&&Object.defineProperty(A,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i})})(),A.styles=n(v),i(A,K),A})();export{x as QueryBuilder};
160
161
  //# sourceMappingURL=queryBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queryBuilder.js","sources":["../../../../src/components/reusable/queryBuilder/queryBuilder.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS, PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { deepmerge } from 'deepmerge-ts';\n\nimport QueryBuilderStyles from './queryBuilder.scss?inline';\n\nimport type {\n RuleGroupType,\n RuleOrGroup,\n QueryField,\n QueryOption,\n QueryChangeEventDetail,\n QueryBuilderSize,\n} from './defs/types';\nimport { isRuleGroup, isRule } from './defs/types';\nimport { createDefaultQuery, generateId } from './defs/helpers';\n\nimport { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/error-filled.svg';\n\nimport './queryBuilderGroup';\nimport './queryBuilderRule';\n\nconst _defaultTextStrings = {\n and: 'AND',\n or: 'OR',\n removeGroup: 'Remove group',\n cloneGroup: 'Clone group',\n addRule: 'Add Rule',\n addGroup: 'Group',\n lockGroup: 'Lock group',\n unlockGroup: 'Unlock group',\n removeRule: 'Remove rule',\n cloneRule: 'Clone rule',\n lockRule: 'Lock rule',\n unlockRule: 'Unlock rule',\n dragToReorder: 'Drag to reorder',\n selectField: 'Select Field',\n selectOperator: 'Select Operator',\n value: 'Value',\n selectValue: 'Select value',\n selectValues: 'Select values',\n selectDate: 'Select date',\n selectDateTime: 'Select date/time',\n selectTime: 'Select time',\n min: 'Min',\n max: 'Max',\n start: 'Start',\n end: 'End',\n from: 'From',\n to: 'To',\n validationErrors: 'Validation errors',\n validationErrorCount: '{count} validation error(s)',\n};\n\n/**\n * Query Builder component.\n * A visual query builder for constructing complex filter conditions.\n *\n * @fires on-query-change - Emits when the query changes. `detail: { query: RuleGroupType }`\n * @slot header - Slot for custom header content\n *\n * @example\n * ```html\n * <kyn-query-builder\n * .fields=${[\n * { name: 'firstName', label: 'First Name', dataType: 'text' },\n * { name: 'age', label: 'Age', dataType: 'number' },\n * { name: 'status', label: 'Status', dataType: 'select', values: [\n * { value: 'active', label: 'Active' },\n * { value: 'inactive', label: 'Inactive' },\n * ]},\n * ]}\n * @on-query-change=${(e) => console.log(e.detail.query)}\n * ></kyn-query-builder>\n * ```\n */\n@customElement('kyn-query-builder')\nexport class QueryBuilder extends LitElement {\n static override styles = unsafeCSS(QueryBuilderStyles);\n\n /** The query data structure */\n @property({ type: Object })\n accessor query: RuleGroupType = createDefaultQuery();\n\n /** Available fields to query */\n @property({ type: Array })\n accessor fields: QueryField[] = [];\n\n /** Available combinators\n * @internal\n */\n private get _combinators(): QueryOption[] {\n return [\n { value: 'and', label: this._textStrings.and },\n { value: 'or', label: this._textStrings.or },\n ];\n }\n\n /** Show clone button on rules/groups */\n @property({ type: Boolean })\n accessor showCloneButtons = false;\n\n /** Show lock/disable button on rules/groups */\n @property({ type: Boolean })\n accessor showLockButtons = false;\n\n /** Maximum nesting depth (default: unlimited) */\n @property({ type: Number })\n accessor maxDepth = Infinity;\n\n /** Disable drag-and-drop reordering */\n @property({ type: Boolean })\n accessor disableDragAndDrop = false;\n\n /** Disable the entire query builder */\n @property({ type: Boolean, reflect: true })\n accessor disabled = false;\n\n /** Size of all child components (buttons, inputs, dropdowns, datepickers) */\n @property({ type: String })\n accessor size: QueryBuilderSize = 'xs';\n\n /**\n * Minimum number of dropdown options before a search input is shown.\n * Applies to field, value, and multi-select dropdowns within rules.\n * When `0`, search is always shown. Default `25`.\n */\n @property({ type: Number })\n accessor searchThreshold = 25;\n\n /** Text string customization for i18n. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Internal query state for tracking changes\n * @internal\n */\n @state()\n accessor _internalQuery: RuleGroupType = createDefaultQuery();\n\n /** Internal text strings.\n * @internal\n */\n @state()\n accessor _textStrings = _defaultTextStrings;\n\n override willUpdate(changedProps: PropertyValues) {\n if (changedProps.has('query')) {\n this._internalQuery = this._normalizeQuery(this.query);\n }\n\n if (changedProps.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n override render() {\n const classes = {\n 'query-builder': true,\n 'query-builder--disabled': this.disabled,\n };\n\n return html`\n <div class=${classMap(classes)}>\n <slot name=\"header\"></slot>\n <div class=\"query-builder__content\">\n <kyn-qb-group\n .group=${this._internalQuery}\n .fields=${this.fields}\n .combinators=${this._combinators}\n .textStrings=${this._textStrings}\n .path=${[]}\n .depth=${0}\n .maxDepth=${this.maxDepth}\n .size=${this.size}\n .searchThreshold=${this.searchThreshold}\n isRoot\n ?showCloneButton=${this.showCloneButtons}\n ?showLockButton=${this.showLockButtons}\n ?disableDragAndDrop=${this.disableDragAndDrop}\n ?disabled=${this.disabled}\n @on-group-change=${this._handleGroupChange}\n @on-group-lock=${this._handleGroupLock}\n @on-item-move=${this._handleItemMove}\n ></kyn-qb-group>\n </div>\n ${this._renderValidationSummary()}\n </div>\n `;\n }\n\n private _renderValidationSummary() {\n const errors = this._collectValidationErrors(this._internalQuery);\n if (errors.length === 0) {\n return null;\n }\n\n return html`\n <div class=\"query-builder__validation-summary\" role=\"alert\">\n <div class=\"query-builder__validation-header\">\n <span class=\"query-builder__validation-icon\">\n ${unsafeSVG(errorIcon)}\n </span>\n <span class=\"query-builder__validation-title\">\n ${this._textStrings.validationErrorCount?.replace(\n '{count}',\n String(errors.length)\n ) || `${errors.length} validation error(s)`}\n </span>\n </div>\n <ul class=\"query-builder__validation-list\">\n ${errors.map(\n (error) => html`\n <li class=\"query-builder__validation-item\">\n <strong>${error.fieldLabel}:</strong> ${error.message}\n </li>\n `\n )}\n </ul>\n </div>\n `;\n }\n\n /**\n * Recursively collect all validation errors from the query tree\n */\n private _collectValidationErrors(\n group: RuleGroupType\n ): Array<{ fieldLabel: string; message: string }> {\n const errors: Array<{ fieldLabel: string; message: string }> = [];\n\n for (const item of group.rules) {\n if (isRuleGroup(item)) {\n errors.push(...this._collectValidationErrors(item));\n } else if (isRule(item) && item.valid === false && item.validationError) {\n const field = this.fields.find((f) => f.name === item.field);\n errors.push({\n fieldLabel: field?.label || item.field || 'Unknown field',\n message: item.validationError,\n });\n }\n }\n\n return errors;\n }\n\n private _handleGroupChange(e: CustomEvent) {\n e.stopPropagation();\n const { group } = e.detail;\n\n this._internalQuery = group;\n this._emitQueryChange();\n }\n\n private _handleGroupLock(e: CustomEvent) {\n e.stopPropagation();\n const { disabled } = e.detail;\n\n this._internalQuery = {\n ...this._internalQuery,\n disabled,\n };\n this._emitQueryChange();\n }\n\n private _emitQueryChange() {\n const detail: QueryChangeEventDetail = {\n query: this._internalQuery,\n };\n\n this.dispatchEvent(\n new CustomEvent('on-query-change', {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * get the current query\n */\n getQuery(): RuleGroupType {\n return this._internalQuery;\n }\n\n /**\n * set the query programmatically\n */\n setQuery(query: RuleGroupType) {\n this.query = query;\n }\n\n /**\n * reset the query to initial empty state\n */\n resetQuery() {\n this._internalQuery = createDefaultQuery();\n this._emitQueryChange();\n }\n\n /**\n * handle drag-and-drop move events\n */\n private _handleItemMove(e: CustomEvent) {\n e.stopPropagation();\n\n const { dragData, targetPath, targetIndex } = e.detail;\n\n // deep clone the query\n const newQuery = this._cloneQuery(this._internalQuery);\n\n // find and remove the item from its source location\n const sourceGroup = this._getGroupAtPath(newQuery, dragData.sourcePath);\n if (!sourceGroup) return;\n\n const movedItem = sourceGroup.rules[dragData.sourceIndex];\n if (!movedItem) return;\n\n // find the target group and insert the item\n const targetGroup = this._getGroupAtPath(newQuery, targetPath);\n if (!targetGroup) return;\n\n if (isRuleGroup(movedItem)) {\n const targetDepth = targetPath.length + 1;\n const groupDepth = this._getMaxGroupDepth(movedItem);\n if (targetDepth + groupDepth > this.maxDepth) {\n return;\n }\n }\n\n sourceGroup.rules.splice(dragData.sourceIndex, 1);\n\n // adjust target index if moving within same group and source was before target\n let adjustedTargetIndex = targetIndex;\n if (\n JSON.stringify(dragData.sourcePath) === JSON.stringify(targetPath) &&\n dragData.sourceIndex < targetIndex\n ) {\n adjustedTargetIndex = Math.max(0, targetIndex - 1);\n }\n\n targetGroup.rules.splice(adjustedTargetIndex, 0, movedItem);\n\n this._internalQuery = newQuery;\n this._emitQueryChange();\n }\n\n /**\n * get a group at a specific path in the query tree\n */\n private _getGroupAtPath(\n query: RuleGroupType,\n path: number[]\n ): RuleGroupType | null {\n if (path.length === 0) {\n return query;\n }\n\n let current: RuleOrGroup = query;\n for (const index of path) {\n if (!isRuleGroup(current)) {\n return null;\n }\n current = current.rules[index];\n if (!current) {\n return null;\n }\n }\n\n return isRuleGroup(current) ? current : null;\n }\n\n private _normalizeQuery(query: RuleGroupType): RuleGroupType {\n const normalizeGroup = (group: RuleGroupType): RuleGroupType => ({\n ...group,\n id: group.id || generateId(),\n rules: (group.rules || []).map((item) => {\n if (isRuleGroup(item)) {\n return normalizeGroup(item);\n }\n return {\n ...item,\n id: item.id || generateId(),\n };\n }),\n });\n\n return normalizeGroup(query);\n }\n\n private _cloneQuery(query: RuleGroupType): RuleGroupType {\n if (typeof structuredClone === 'function') {\n return structuredClone(query);\n }\n return JSON.parse(JSON.stringify(query)) as RuleGroupType;\n }\n\n private _getMaxGroupDepth(group: RuleGroupType): number {\n let maxDepth = 0;\n for (const item of group.rules) {\n if (isRuleGroup(item)) {\n maxDepth = Math.max(maxDepth, 1 + this._getMaxGroupDepth(item));\n }\n }\n return maxDepth;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-query-builder': QueryBuilder;\n }\n}\n"],"names":["_defaultTextStrings","and","or","removeGroup","cloneGroup","addRule","addGroup","lockGroup","unlockGroup","removeRule","cloneRule","lockRule","unlockRule","dragToReorder","selectField","selectOperator","value","selectValue","selectValues","selectDate","selectDateTime","selectTime","min","max","start","end","from","to","validationErrors","validationErrorCount","QueryBuilder","customElement","LitElement","_classThis","_classSuper","query","__classPrivateFieldGet","this","_QueryBuilder_query_accessor_storage","__classPrivateFieldSet","fields","_QueryBuilder_fields_accessor_storage","_combinators","label","_textStrings","showCloneButtons","_QueryBuilder_showCloneButtons_accessor_storage","showLockButtons","_QueryBuilder_showLockButtons_accessor_storage","maxDepth","_QueryBuilder_maxDepth_accessor_storage","disableDragAndDrop","_QueryBuilder_disableDragAndDrop_accessor_storage","disabled","_QueryBuilder_disabled_accessor_storage","size","_QueryBuilder_size_accessor_storage","searchThreshold","_QueryBuilder_searchThreshold_accessor_storage","textStrings","_QueryBuilder_textStrings_accessor_storage","_internalQuery","_QueryBuilder__internalQuery_accessor_storage","_QueryBuilder__textStrings_accessor_storage","willUpdate","changedProps","has","_normalizeQuery","deepmerge","render","classes","html","classMap","_handleGroupChange","_handleGroupLock","_handleItemMove","_renderValidationSummary","errors","_collectValidationErrors","length","unsafeSVG","errorIcon","_a","replace","String","map","error","fieldLabel","message","group","item","rules","isRuleGroup","push","isRule","valid","validationError","field","find","f","name","e","stopPropagation","detail","_emitQueryChange","dispatchEvent","CustomEvent","bubbles","composed","getQuery","setQuery","resetQuery","createDefaultQuery","dragData","targetPath","targetIndex","newQuery","_cloneQuery","sourceGroup","_getGroupAtPath","sourcePath","movedItem","sourceIndex","targetGroup","_getMaxGroupDepth","splice","adjustedTargetIndex","JSON","stringify","Math","path","current","index","normalizeGroup","id","generateId","structuredClone","parse","set","__runInitializers","_query_initializers","_query_extraInitializers","_fields_initializers","_fields_extraInitializers","_showCloneButtons_initializers","_showCloneButtons_extraInitializers","_showLockButtons_initializers","_showLockButtons_extraInitializers","_maxDepth_initializers","Infinity","_maxDepth_extraInitializers","_disableDragAndDrop_initializers","_disableDragAndDrop_extraInitializers","_disabled_initializers","_disabled_extraInitializers","_size_initializers","_size_extraInitializers","_searchThreshold_initializers","_searchThreshold_extraInitializers","_textStrings_initializers","_textStrings_extraInitializers","__internalQuery_initializers","__internalQuery_extraInitializers","__textStrings_initializers","_query_decorators","property","type","Object","_fields_decorators","Array","_showCloneButtons_decorators","Boolean","_showLockButtons_decorators","_maxDepth_decorators","Number","_disableDragAndDrop_decorators","reflect","_size_decorators","_searchThreshold_decorators","_textStrings_decorators","__internalQuery_decorators","state","__textStrings_decorators","__esDecorate","kind","static","private","access","obj","get","metadata","_metadata","_disabled_decorators","__textStrings_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","QueryBuilderStyles"],"mappings":"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"}
1
+ {"version":3,"file":"queryBuilder.js","sources":["../../../../src/components/reusable/queryBuilder/queryBuilder.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS, PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { deepmerge } from 'deepmerge-ts';\n\nimport QueryBuilderStyles from './queryBuilder.scss?inline';\n\nimport type {\n RuleGroupType,\n RuleOrGroup,\n QueryField,\n QueryOption,\n QueryChangeEventDetail,\n QueryBuilderSize,\n} from './defs/types';\nimport { isRuleGroup, isRule } from './defs/types';\nimport { createDefaultQuery, generateId } from './defs/helpers';\n\nimport { unsafeSVG } from 'lit-html/directives/unsafe-svg.js';\nimport errorIcon from '@kyndryl-design-system/shidoka-icons/svg/monochrome/16/error-filled.svg';\n\nimport './queryBuilderGroup';\nimport './queryBuilderRule';\n\nconst _defaultTextStrings = {\n and: 'AND',\n or: 'OR',\n removeGroup: 'Remove group',\n cloneGroup: 'Clone group',\n addRule: 'Add Rule',\n addGroup: 'Group',\n lockGroup: 'Lock group',\n unlockGroup: 'Unlock group',\n removeRule: 'Remove rule',\n cloneRule: 'Clone rule',\n lockRule: 'Lock rule',\n unlockRule: 'Unlock rule',\n dragToReorder: 'Drag to reorder',\n selectField: 'Select Field',\n selectOperator: 'Select Operator',\n value: 'Value',\n selectValue: 'Select value',\n selectValues: 'Select values',\n selectDate: 'Select date',\n selectDateTime: 'Select date/time',\n selectTime: 'Select time',\n min: 'Min',\n max: 'Max',\n start: 'Start',\n end: 'End',\n from: 'From',\n to: 'To',\n validationErrors: 'Validation errors',\n validationErrorCount: '{count} validation error(s)',\n};\n\n/**\n * Query Builder component.\n * A visual query builder for constructing complex filter conditions.\n *\n * @fires on-query-change - Emits when the query changes. `detail: { query: RuleGroupType }`\n * @slot header - Slot for custom header content\n *\n * @example\n * ```html\n * <kyn-query-builder\n * .fields=${[\n * { name: 'firstName', label: 'First Name', dataType: 'text' },\n * { name: 'age', label: 'Age', dataType: 'number' },\n * { name: 'status', label: 'Status', dataType: 'select', values: [\n * { value: 'active', label: 'Active' },\n * { value: 'inactive', label: 'Inactive' },\n * ]},\n * ]}\n * @on-query-change=${(e) => console.log(e.detail.query)}\n * ></kyn-query-builder>\n * ```\n */\n@customElement('kyn-query-builder')\nexport class QueryBuilder extends LitElement {\n static override styles = unsafeCSS(QueryBuilderStyles);\n\n /** The query data structure */\n @property({ type: Object })\n accessor query: RuleGroupType = createDefaultQuery();\n\n /** Available fields to query */\n @property({ type: Array })\n accessor fields: QueryField[] = [];\n\n /** Available combinators\n * @internal\n */\n private get _combinators(): QueryOption[] {\n return [\n { value: 'and', label: this._textStrings.and },\n { value: 'or', label: this._textStrings.or },\n ];\n }\n\n /** Show clone button on rules/groups */\n @property({ type: Boolean })\n accessor showCloneButtons = false;\n\n /** Show lock/disable button on rules/groups */\n @property({ type: Boolean })\n accessor showLockButtons = false;\n\n /** Hide the group add button */\n @property({ type: Boolean })\n accessor hideGroupBtn = false;\n\n /** Maximum nesting depth (default: unlimited) */\n @property({ type: Number })\n accessor maxDepth = Infinity;\n\n /** Disable drag-and-drop reordering */\n @property({ type: Boolean })\n accessor disableDragAndDrop = false;\n\n /** Disable the entire query builder */\n @property({ type: Boolean, reflect: true })\n accessor disabled = false;\n\n /** Size of all child components (buttons, inputs, dropdowns, datepickers) */\n @property({ type: String })\n accessor size: QueryBuilderSize = 'xs';\n\n /**\n * Minimum number of dropdown options before a search input is shown.\n * Applies to field, value, and multi-select dropdowns within rules.\n * When `0`, search is always shown. Default `25`.\n */\n @property({ type: Number })\n accessor searchThreshold = 25;\n\n /** Text string customization for i18n. */\n @property({ type: Object })\n accessor textStrings = _defaultTextStrings;\n\n /** Internal query state for tracking changes\n * @internal\n */\n @state()\n accessor _internalQuery: RuleGroupType = createDefaultQuery();\n\n /** Internal text strings.\n * @internal\n */\n @state()\n accessor _textStrings = _defaultTextStrings;\n\n override willUpdate(changedProps: PropertyValues) {\n if (changedProps.has('query')) {\n this._internalQuery = this._normalizeQuery(this.query);\n }\n\n if (changedProps.has('textStrings')) {\n this._textStrings = deepmerge(_defaultTextStrings, this.textStrings);\n }\n }\n\n override render() {\n const classes = {\n 'query-builder': true,\n 'query-builder--disabled': this.disabled,\n };\n\n return html`\n <div class=${classMap(classes)}>\n <slot name=\"header\"></slot>\n <div class=\"query-builder__content\">\n <kyn-qb-group\n .group=${this._internalQuery}\n .fields=${this.fields}\n .combinators=${this._combinators}\n .textStrings=${this._textStrings}\n .path=${[]}\n .depth=${0}\n .maxDepth=${this.maxDepth}\n .size=${this.size}\n .searchThreshold=${this.searchThreshold}\n isRoot\n ?showCloneButton=${this.showCloneButtons}\n ?showLockButton=${this.showLockButtons}\n ?hideGroupBtn=${this.hideGroupBtn}\n ?disableDragAndDrop=${this.disableDragAndDrop}\n ?disabled=${this.disabled}\n @on-group-change=${this._handleGroupChange}\n @on-group-lock=${this._handleGroupLock}\n @on-item-move=${this._handleItemMove}\n ></kyn-qb-group>\n </div>\n ${this._renderValidationSummary()}\n </div>\n `;\n }\n\n private _renderValidationSummary() {\n const errors = this._collectValidationErrors(this._internalQuery);\n if (errors.length === 0) {\n return null;\n }\n\n return html`\n <div class=\"query-builder__validation-summary\" role=\"alert\">\n <div class=\"query-builder__validation-header\">\n <span class=\"query-builder__validation-icon\">\n ${unsafeSVG(errorIcon)}\n </span>\n <span class=\"query-builder__validation-title\">\n ${this._textStrings.validationErrorCount?.replace(\n '{count}',\n String(errors.length)\n ) || `${errors.length} validation error(s)`}\n </span>\n </div>\n <ul class=\"query-builder__validation-list\">\n ${errors.map(\n (error) => html`\n <li class=\"query-builder__validation-item\">\n <strong>${error.fieldLabel}:</strong> ${error.message}\n </li>\n `\n )}\n </ul>\n </div>\n `;\n }\n\n /**\n * Recursively collect all validation errors from the query tree\n */\n private _collectValidationErrors(\n group: RuleGroupType\n ): Array<{ fieldLabel: string; message: string }> {\n const errors: Array<{ fieldLabel: string; message: string }> = [];\n\n for (const item of group.rules) {\n if (isRuleGroup(item)) {\n errors.push(...this._collectValidationErrors(item));\n } else if (isRule(item) && item.valid === false && item.validationError) {\n const field = this.fields.find((f) => f.name === item.field);\n errors.push({\n fieldLabel: field?.label || item.field || 'Unknown field',\n message: item.validationError,\n });\n }\n }\n\n return errors;\n }\n\n private _handleGroupChange(e: CustomEvent) {\n e.stopPropagation();\n const { group } = e.detail;\n\n this._internalQuery = group;\n this._emitQueryChange();\n }\n\n private _handleGroupLock(e: CustomEvent) {\n e.stopPropagation();\n const { disabled } = e.detail;\n\n this._internalQuery = {\n ...this._internalQuery,\n disabled,\n };\n this._emitQueryChange();\n }\n\n private _emitQueryChange() {\n const detail: QueryChangeEventDetail = {\n query: this._internalQuery,\n };\n\n this.dispatchEvent(\n new CustomEvent('on-query-change', {\n detail,\n bubbles: true,\n composed: true,\n })\n );\n }\n\n /**\n * get the current query\n */\n getQuery(): RuleGroupType {\n return this._internalQuery;\n }\n\n /**\n * set the query programmatically\n */\n setQuery(query: RuleGroupType) {\n this.query = query;\n }\n\n /**\n * reset the query to initial empty state\n */\n resetQuery() {\n this._internalQuery = createDefaultQuery();\n this._emitQueryChange();\n }\n\n /**\n * handle drag-and-drop move events\n */\n private _handleItemMove(e: CustomEvent) {\n e.stopPropagation();\n\n const { dragData, targetPath, targetIndex } = e.detail;\n\n // deep clone the query\n const newQuery = this._cloneQuery(this._internalQuery);\n\n // find and remove the item from its source location\n const sourceGroup = this._getGroupAtPath(newQuery, dragData.sourcePath);\n if (!sourceGroup) return;\n\n const movedItem = sourceGroup.rules[dragData.sourceIndex];\n if (!movedItem) return;\n\n // find the target group and insert the item\n const targetGroup = this._getGroupAtPath(newQuery, targetPath);\n if (!targetGroup) return;\n\n if (isRuleGroup(movedItem)) {\n const targetDepth = targetPath.length + 1;\n const groupDepth = this._getMaxGroupDepth(movedItem);\n if (targetDepth + groupDepth > this.maxDepth) {\n return;\n }\n }\n\n sourceGroup.rules.splice(dragData.sourceIndex, 1);\n\n // adjust target index if moving within same group and source was before target\n let adjustedTargetIndex = targetIndex;\n if (\n JSON.stringify(dragData.sourcePath) === JSON.stringify(targetPath) &&\n dragData.sourceIndex < targetIndex\n ) {\n adjustedTargetIndex = Math.max(0, targetIndex - 1);\n }\n\n targetGroup.rules.splice(adjustedTargetIndex, 0, movedItem);\n\n this._internalQuery = newQuery;\n this._emitQueryChange();\n }\n\n /**\n * get a group at a specific path in the query tree\n */\n private _getGroupAtPath(\n query: RuleGroupType,\n path: number[]\n ): RuleGroupType | null {\n if (path.length === 0) {\n return query;\n }\n\n let current: RuleOrGroup = query;\n for (const index of path) {\n if (!isRuleGroup(current)) {\n return null;\n }\n current = current.rules[index];\n if (!current) {\n return null;\n }\n }\n\n return isRuleGroup(current) ? current : null;\n }\n\n private _normalizeQuery(query: RuleGroupType): RuleGroupType {\n const normalizeGroup = (group: RuleGroupType): RuleGroupType => ({\n ...group,\n id: group.id || generateId(),\n rules: (group.rules || []).map((item) => {\n if (isRuleGroup(item)) {\n return normalizeGroup(item);\n }\n return {\n ...item,\n id: item.id || generateId(),\n };\n }),\n });\n\n return normalizeGroup(query);\n }\n\n private _cloneQuery(query: RuleGroupType): RuleGroupType {\n if (typeof structuredClone === 'function') {\n return structuredClone(query);\n }\n return JSON.parse(JSON.stringify(query)) as RuleGroupType;\n }\n\n private _getMaxGroupDepth(group: RuleGroupType): number {\n let maxDepth = 0;\n for (const item of group.rules) {\n if (isRuleGroup(item)) {\n maxDepth = Math.max(maxDepth, 1 + this._getMaxGroupDepth(item));\n }\n }\n return maxDepth;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'kyn-query-builder': QueryBuilder;\n }\n}\n"],"names":["_defaultTextStrings","and","or","removeGroup","cloneGroup","addRule","addGroup","lockGroup","unlockGroup","removeRule","cloneRule","lockRule","unlockRule","dragToReorder","selectField","selectOperator","value","selectValue","selectValues","selectDate","selectDateTime","selectTime","min","max","start","end","from","to","validationErrors","validationErrorCount","QueryBuilder","customElement","LitElement","_classThis","_classSuper","query","__classPrivateFieldGet","this","_QueryBuilder_query_accessor_storage","__classPrivateFieldSet","fields","_QueryBuilder_fields_accessor_storage","_combinators","label","_textStrings","showCloneButtons","_QueryBuilder_showCloneButtons_accessor_storage","showLockButtons","_QueryBuilder_showLockButtons_accessor_storage","hideGroupBtn","_QueryBuilder_hideGroupBtn_accessor_storage","maxDepth","_QueryBuilder_maxDepth_accessor_storage","disableDragAndDrop","_QueryBuilder_disableDragAndDrop_accessor_storage","disabled","_QueryBuilder_disabled_accessor_storage","size","_QueryBuilder_size_accessor_storage","searchThreshold","_QueryBuilder_searchThreshold_accessor_storage","textStrings","_QueryBuilder_textStrings_accessor_storage","_internalQuery","_QueryBuilder__internalQuery_accessor_storage","_QueryBuilder__textStrings_accessor_storage","willUpdate","changedProps","has","_normalizeQuery","deepmerge","render","classes","html","classMap","_handleGroupChange","_handleGroupLock","_handleItemMove","_renderValidationSummary","errors","_collectValidationErrors","length","unsafeSVG","errorIcon","_a","replace","String","map","error","fieldLabel","message","group","item","rules","isRuleGroup","push","isRule","valid","validationError","field","find","f","name","e","stopPropagation","detail","_emitQueryChange","dispatchEvent","CustomEvent","bubbles","composed","getQuery","setQuery","resetQuery","createDefaultQuery","dragData","targetPath","targetIndex","newQuery","_cloneQuery","sourceGroup","_getGroupAtPath","sourcePath","movedItem","sourceIndex","targetGroup","_getMaxGroupDepth","splice","adjustedTargetIndex","JSON","stringify","Math","path","current","index","normalizeGroup","id","generateId","structuredClone","parse","set","__runInitializers","_query_initializers","_query_extraInitializers","_fields_initializers","_fields_extraInitializers","_showCloneButtons_initializers","_showCloneButtons_extraInitializers","_showLockButtons_initializers","_showLockButtons_extraInitializers","_hideGroupBtn_initializers","_hideGroupBtn_extraInitializers","_maxDepth_initializers","Infinity","_maxDepth_extraInitializers","_disableDragAndDrop_initializers","_disableDragAndDrop_extraInitializers","_disabled_initializers","_disabled_extraInitializers","_size_initializers","_size_extraInitializers","_searchThreshold_initializers","_searchThreshold_extraInitializers","_textStrings_initializers","_textStrings_extraInitializers","__internalQuery_initializers","__internalQuery_extraInitializers","__textStrings_initializers","_query_decorators","property","type","Object","_fields_decorators","Array","_showCloneButtons_decorators","Boolean","_showLockButtons_decorators","_hideGroupBtn_decorators","_maxDepth_decorators","Number","_disableDragAndDrop_decorators","reflect","_size_decorators","_searchThreshold_decorators","_textStrings_decorators","__internalQuery_decorators","state","__textStrings_decorators","__esDecorate","kind","static","private","access","obj","get","metadata","_metadata","_disabled_decorators","__textStrings_extraInitializers","_classDescriptor","_classDecorators","_classExtraInitializers","styles","unsafeCSS","QueryBuilderStyles"],"mappings":"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"}
@@ -32,6 +32,8 @@ export declare class QueryBuilderGroup extends LitElement {
32
32
  accessor showCloneButton: boolean;
33
33
  /** Whether to show lock button */
34
34
  accessor showLockButton: boolean;
35
+ /** Whether to hide the group add button */
36
+ accessor hideGroupBtn: boolean;
35
37
  /** Whether drag and drop is disabled */
36
38
  accessor disableDragAndDrop: boolean;
37
39
  /** Whether the group is disabled/locked */
@@ -1 +1 @@
1
- {"version":3,"file":"queryBuilderGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/queryBuilder/queryBuilderGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAQlD,OAAO,KAAK,EACV,aAAa,EAGb,UAAU,EACV,WAAW,EACX,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,WAAW,CAAC;AACnB,OAAO,gBAAgB,CAAC;AAUxB;;;;;;;;GAQG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAsC;IAE5D,qBAAqB;IAErB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAI3B;IAEF,iCAAiC;IAEjC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAM;IAEnC,4BAA4B;IAE5B,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,CAGjC;IAEF,2CAA2C;IAE3C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAM;IAE7B,qCAAqC;IAErC,QAAQ,CAAC,KAAK,SAAK;IAEnB,4BAA4B;IAE5B,QAAQ,CAAC,QAAQ,SAAY;IAE7B,qCAAqC;IAErC,QAAQ,CAAC,MAAM,UAAS;IAExB,mCAAmC;IAEnC,QAAQ,CAAC,eAAe,UAAS;IAEjC,kCAAkC;IAElC,QAAQ,CAAC,cAAc,UAAS;IAEhC,wCAAwC;IAExC,QAAQ,CAAC,kBAAkB,UAAS;IAEpC,2CAA2C;IAE3C,QAAQ,CAAC,QAAQ,UAAS;IAE1B,iGAAiG;IAEjG,QAAQ,CAAC,YAAY,SAAK;IAE1B,4BAA4B;IAE5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAElD,+BAA+B;IAE/B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAQ;IAEvC,iEAAiE;IAEjE,QAAQ,CAAC,eAAe,SAAM;IAE9B,iDAAiD;IAEjD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErC,MAAM;IAiBf,OAAO,CAAC,aAAa;IAoErB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,kBAAkB;IA+E1B,oEAAoE;IACpE,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,qBAAqB;CAU9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,iBAAiB,CAAC;KACnC;CACF"}
1
+ {"version":3,"file":"queryBuilderGroup.d.ts","sourceRoot":"","sources":["../../../../src/components/reusable/queryBuilder/queryBuilderGroup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAQlD,OAAO,KAAK,EACV,aAAa,EAGb,UAAU,EACV,WAAW,EACX,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAGtB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,WAAW,CAAC;AACnB,OAAO,gBAAgB,CAAC;AAUxB;;;;;;;;GAQG;AACH,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAsC;IAE5D,qBAAqB;IAErB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAI3B;IAEF,iCAAiC;IAEjC,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,CAAM;IAEnC,4BAA4B;IAE5B,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,CAGjC;IAEF,2CAA2C;IAE3C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAM;IAE7B,qCAAqC;IAErC,QAAQ,CAAC,KAAK,SAAK;IAEnB,4BAA4B;IAE5B,QAAQ,CAAC,QAAQ,SAAY;IAE7B,qCAAqC;IAErC,QAAQ,CAAC,MAAM,UAAS;IAExB,mCAAmC;IAEnC,QAAQ,CAAC,eAAe,UAAS;IAEjC,kCAAkC;IAElC,QAAQ,CAAC,cAAc,UAAS;IAEhC,2CAA2C;IAE3C,QAAQ,CAAC,YAAY,UAAS;IAE9B,wCAAwC;IAExC,QAAQ,CAAC,kBAAkB,UAAS;IAEpC,2CAA2C;IAE3C,QAAQ,CAAC,QAAQ,UAAS;IAE1B,iGAAiG;IAEjG,QAAQ,CAAC,YAAY,SAAK;IAE1B,4BAA4B;IAE5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAElD,+BAA+B;IAE/B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAQ;IAEvC,iEAAiE;IAEjE,QAAQ,CAAC,eAAe,SAAM;IAE9B,iDAAiD;IAEjD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAQ;IAErC,MAAM;IAiBf,OAAO,CAAC,aAAa;IAoErB,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,uBAAuB;IA2B/B,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,kBAAkB;IAgF1B,oEAAoE;IACpE,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,wBAAwB;IAkBhC,OAAO,CAAC,uBAAuB;IAqB/B,OAAO,CAAC,sBAAsB;IAwB9B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,eAAe;IAuBvB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,eAAe;IAsCvB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,qBAAqB;CAU9B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,iBAAiB,CAAC;KACnC;CACF"}
@@ -128,7 +128,7 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as s,__classPr
128
128
  .qb-group__empty--dragover {
129
129
  background-color: var(--kd-color-background-ui-soft);
130
130
  border-color: var(--kd-color-border-variants-interactive);
131
- }`;let D=(()=>{var i,D,w,C,j,q,G,R,I,B,S,O,A,L,T,z;let M,E,N,P,W,H,J,Q,Y,F,U,X,K,V,Z,tt,et,st,rt=[l("kyn-qb-group")],ot=[],it=a,at=[],nt=[],dt=[],lt=[],ht=[],pt=[],ut=[],gt=[],ct=[],bt=[],mt=[],vt=[],kt=[],_t=[],ft=[],$t=[],xt=[],yt=[],Dt=[],wt=[],Ct=[],jt=[],qt=[],Gt=[],Rt=[],It=[],Bt=[],St=[],Ot=[],At=[],Lt=[],Tt=[];return E=class extends it{get group(){return r(this,i,"f")}set group(t){o(this,i,t,"f")}get fields(){return r(this,D,"f")}set fields(t){o(this,D,t,"f")}get combinators(){return r(this,w,"f")}set combinators(t){o(this,w,t,"f")}get path(){return r(this,C,"f")}set path(t){o(this,C,t,"f")}get depth(){return r(this,j,"f")}set depth(t){o(this,j,t,"f")}get maxDepth(){return r(this,q,"f")}set maxDepth(t){o(this,q,t,"f")}get isRoot(){return r(this,G,"f")}set isRoot(t){o(this,G,t,"f")}get showCloneButton(){return r(this,R,"f")}set showCloneButton(t){o(this,R,t,"f")}get showLockButton(){return r(this,I,"f")}set showLockButton(t){o(this,I,t,"f")}get disableDragAndDrop(){return r(this,B,"f")}set disableDragAndDrop(t){o(this,B,t,"f")}get disabled(){return r(this,S,"f")}set disabled(t){o(this,S,t,"f")}get siblingCount(){return r(this,O,"f")}set siblingCount(t){o(this,O,t,"f")}get textStrings(){return r(this,A,"f")}set textStrings(t){o(this,A,t,"f")}get size(){return r(this,L,"f")}set size(t){o(this,L,t,"f")}get searchThreshold(){return r(this,T,"f")}set searchThreshold(t){o(this,T,t,"f")}get _dragOverIndex(){return r(this,z,"f")}set _dragOverIndex(t){o(this,z,t,"f")}render(){const t={"qb-group":!0,"qb-group--root":this.isRoot,"qb-group--nested":!this.isRoot,"qb-group--disabled":this.disabled||!!this.group.disabled,[`qb-group--depth-${Math.min(this.depth,4)}`]:!0};return d`
131
+ }`;let w=(()=>{var i,w,D,C,G,j,q,B,R,I,S,O,A,L,T,z,M;let E,N,P,W,H,J,Q,Y,F,U,X,K,V,Z,tt,et,st,rt,ot,it=[l("kyn-qb-group")],at=[],nt=a,dt=[],lt=[],ht=[],pt=[],ut=[],gt=[],ct=[],bt=[],mt=[],vt=[],kt=[],_t=[],ft=[],$t=[],xt=[],yt=[],wt=[],Dt=[],Ct=[],Gt=[],jt=[],qt=[],Bt=[],Rt=[],It=[],St=[],Ot=[],At=[],Lt=[],Tt=[],zt=[],Mt=[],Et=[],Nt=[];return N=class extends nt{get group(){return r(this,i,"f")}set group(t){o(this,i,t,"f")}get fields(){return r(this,w,"f")}set fields(t){o(this,w,t,"f")}get combinators(){return r(this,D,"f")}set combinators(t){o(this,D,t,"f")}get path(){return r(this,C,"f")}set path(t){o(this,C,t,"f")}get depth(){return r(this,G,"f")}set depth(t){o(this,G,t,"f")}get maxDepth(){return r(this,j,"f")}set maxDepth(t){o(this,j,t,"f")}get isRoot(){return r(this,q,"f")}set isRoot(t){o(this,q,t,"f")}get showCloneButton(){return r(this,B,"f")}set showCloneButton(t){o(this,B,t,"f")}get showLockButton(){return r(this,R,"f")}set showLockButton(t){o(this,R,t,"f")}get hideGroupBtn(){return r(this,I,"f")}set hideGroupBtn(t){o(this,I,t,"f")}get disableDragAndDrop(){return r(this,S,"f")}set disableDragAndDrop(t){o(this,S,t,"f")}get disabled(){return r(this,O,"f")}set disabled(t){o(this,O,t,"f")}get siblingCount(){return r(this,A,"f")}set siblingCount(t){o(this,A,t,"f")}get textStrings(){return r(this,L,"f")}set textStrings(t){o(this,L,t,"f")}get size(){return r(this,T,"f")}set size(t){o(this,T,t,"f")}get searchThreshold(){return r(this,z,"f")}set searchThreshold(t){o(this,z,t,"f")}get _dragOverIndex(){return r(this,M,"f")}set _dragOverIndex(t){o(this,M,t,"f")}render(){const t={"qb-group":!0,"qb-group--root":this.isRoot,"qb-group--nested":!this.isRoot,"qb-group--disabled":this.disabled||!!this.group.disabled,[`qb-group--depth-${Math.min(this.depth,4)}`]:!0};return d`
132
132
  <div class=${u(t)}>
133
133
  ${this._renderHeader()}
134
134
  <div class="qb-group__content">${this._renderRules()}</div>
@@ -137,7 +137,7 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as s,__classPr
137
137
  <div class="qb-group__header">
138
138
  ${this.disableDragAndDrop?null:this._renderDragHandle()}
139
139
  ${this._renderCombinatorToggle()}
140
- ${t?d`
140
+ ${t&&!this.hideGroupBtn?d`
141
141
  <kyn-button
142
142
  kind="outline"
143
143
  size=${b[this.size]}
@@ -257,6 +257,7 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as s,__classPr
257
257
  .searchThreshold=${this.searchThreshold}
258
258
  ?showCloneButton=${this.showCloneButton}
259
259
  ?showLockButton=${this.showLockButton}
260
+ ?hideGroupBtn=${this.hideGroupBtn}
260
261
  ?disableDragAndDrop=${this.disableDragAndDrop}
261
262
  ?disabled=${this.disabled||this.group.disabled}
262
263
  @on-group-change=${this._handleNestedGroupChange}
@@ -294,5 +295,5 @@ import{__setFunctionName as t,__esDecorate as e,__runInitializers as s,__classPr
294
295
  @on-rule-lock=${t=>this._handleRuleLock(t,e)}
295
296
  ></kyn-qb-rule>
296
297
  </div>
297
- `}_isLastRule(t){for(let e=this.group.rules.length-1;e>=0;e--)if(!m(this.group.rules[e]))return e===t;return!1}_handleCombinatorChange(t){const e={...this.group,combinator:t};this._emitGroupChange(e)}_handleAddRule(){this._addNewRule(this.group.rules.length)}_handleAddRuleAfter(t){this._addNewRule(t+1)}_addNewRule(t){const e={id:`rule-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,field:"",operator:"",value:""},s=[...this.group.rules];s.splice(t,0,e);const r={...this.group,rules:s};this._emitGroupChange(r)}_handleAddGroup(){const t={id:`group-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,combinator:"and",rules:[]},e={...this.group,rules:[...this.group.rules,t]};this._emitGroupChange(e)}_handleRuleChange(t,e){t.stopPropagation();const s=t.detail.rule,r=[...this.group.rules];r[e]=s;const o={...this.group,rules:r};this._emitGroupChange(o)}_handleRuleRemove(t){const e=[...this.group.rules];e.splice(t,1);const s={...this.group,rules:e};this._emitGroupChange(s)}_handleRuleClone(t){const e={...this.group.rules[t],id:`rule-${Date.now()}-${Math.random().toString(36).substring(2,9)}`},s=[...this.group.rules];s.splice(t+1,0,e);const r={...this.group,rules:s};this._emitGroupChange(r)}_handleRuleLock(t,e){const{disabled:s}=t.detail,r={...this.group.rules[e],disabled:s},o=[...this.group.rules];o[e]=r;const i={...this.group,rules:o};this._emitGroupChange(i)}_handleNestedGroupChange(t){t.stopPropagation();const{group:e,path:s}=t.detail,r=s[this.path.length];if(void 0===r)return;const o=[...this.group.rules];o[r]=e;const i={...this.group,rules:o};this._emitGroupChange(i)}_handleNestedGroupRemove(t){t.stopPropagation();const{path:e}=t.detail,s=e[this.path.length];if(void 0===s)return;const r=[...this.group.rules];r.splice(s,1);const o={...this.group,rules:r};this._emitGroupChange(o)}_handleNestedGroupClone(t){t.stopPropagation();const{path:e}=t.detail,s=e[this.path.length];if(void 0===s)return;const r=this.group.rules[s],o=this._deepCloneGroup(r),i=[...this.group.rules];i.splice(s+1,0,o);const a={...this.group,rules:i};this._emitGroupChange(a)}_handleNestedGroupLock(t){t.stopPropagation();const{path:e,disabled:s}=t.detail,r=e[this.path.length];if(void 0===r)return;const o={...this.group.rules[r],disabled:s},i=[...this.group.rules];i[r]=o;const a={...this.group,rules:i};this._emitGroupChange(a)}_handleRemoveGroup(){this.dispatchEvent(new CustomEvent("on-group-remove",{detail:{groupId:this.group.id,path:this.path},bubbles:!0,composed:!0}))}_handleCloneGroup(){this.dispatchEvent(new CustomEvent("on-group-clone",{detail:{groupId:this.group.id,path:this.path},bubbles:!0,composed:!0}))}_handleLockToggle(){this.dispatchEvent(new CustomEvent("on-group-lock",{detail:{groupId:this.group.id,disabled:!this.group.disabled,path:this.path},bubbles:!0,composed:!0}))}_emitGroupChange(t){this.dispatchEvent(new CustomEvent("on-group-change",{detail:{group:t,path:this.path},bubbles:!0,composed:!0}))}_deepCloneGroup(t){return{...t,id:`group-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,rules:t.rules.map((t=>m(t)?this._deepCloneGroup(t):{...t,id:`rule-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}))}}_handleDragStart(t){var e;if(this.disableDragAndDrop||this.disabled||this.group.disabled)return void t.preventDefault();const s={type:"group",id:this.group.id,sourceIndex:null!==(e=this.path[this.path.length-1])&&void 0!==e?e:0,sourcePath:this.path.slice(0,-1)};t.dataTransfer.setData("text/plain",JSON.stringify(s)),t.dataTransfer.effectAllowed="move";const r=this.getBoundingClientRect();t.dataTransfer.setDragImage(this,t.clientX-r.left,t.clientY-r.top),this.classList.add("qb-group--dragging")}_handleDragEnd(){this.classList.remove("qb-group--dragging"),this._dragOverIndex=null}_handleItemDragOver(t,e){if(this.disableDragAndDrop||this.disabled||this.group.disabled)return;t.preventDefault(),t.stopPropagation();const s=t.currentTarget.getBoundingClientRect(),r=s.top+s.height/2,o=t.clientY<r?e:e+1;this._dragOverIndex!==o&&(this._dragOverIndex=o),t.dataTransfer.dropEffect="move"}_handleItemDragLeave(t){const e=t.relatedTarget,s=t.currentTarget;e&&s.contains(e)||(this._dragOverIndex=null)}_handleItemDrop(t,e){var s;t.preventDefault(),t.stopPropagation();const r=null===(s=t.dataTransfer)||void 0===s?void 0:s.getData("text/plain");if(r){try{const s=JSON.parse(r),o=t.currentTarget.getBoundingClientRect(),i=o.top+o.height/2,a=t.clientY<i?e:e+1;this.dispatchEvent(new CustomEvent("on-item-move",{detail:{dragData:s,targetPath:this.path,targetIndex:a},bubbles:!0,composed:!0}))}catch(t){console.error("QueryBuilder: Failed to process drop data",t)}this._dragOverIndex=null}else this._dragOverIndex=null}_handleGroupDragOver(t){this.disableDragAndDrop||this.disabled||this.group.disabled||(t.preventDefault(),t.dataTransfer.dropEffect="move")}_handleGroupDrop(t){var e;t.preventDefault(),t.stopPropagation();const s=null===(e=t.dataTransfer)||void 0===e?void 0:e.getData("text/plain");if(s){try{const t=JSON.parse(s);if("group"===t.type){const e=[...t.sourcePath,t.sourceIndex];if(this.path.join(",").startsWith(e.join(",")))return void(this._dragOverIndex=null)}this.dispatchEvent(new CustomEvent("on-item-move",{detail:{dragData:t,targetPath:this.path,targetIndex:this.group.rules.length},bubbles:!0,composed:!0}))}catch(t){console.error("QueryBuilder: Failed to process group drop data",t)}this._dragOverIndex=null}else this._dragOverIndex=null}_handleNestedItemMove(t){t.stopPropagation(),this.dispatchEvent(new CustomEvent("on-item-move",{detail:t.detail,bubbles:!0,composed:!0}))}constructor(){super(...arguments),i.set(this,s(this,at,{id:"",combinator:"and",rules:[]})),D.set(this,(s(this,nt),s(this,dt,[]))),w.set(this,(s(this,lt),s(this,ht,[{value:"and",label:"AND"},{value:"or",label:"OR"}]))),C.set(this,(s(this,pt),s(this,ut,[]))),j.set(this,(s(this,gt),s(this,ct,0))),q.set(this,(s(this,bt),s(this,mt,1/0))),G.set(this,(s(this,vt),s(this,kt,!1))),R.set(this,(s(this,_t),s(this,ft,!1))),I.set(this,(s(this,$t),s(this,xt,!1))),B.set(this,(s(this,yt),s(this,Dt,!1))),S.set(this,(s(this,wt),s(this,Ct,!1))),O.set(this,(s(this,jt),s(this,qt,1))),A.set(this,(s(this,Gt),s(this,Rt,{}))),L.set(this,(s(this,It),s(this,Bt,"xs"))),T.set(this,(s(this,St),s(this,Ot,25))),z.set(this,(s(this,At),s(this,Lt,null))),s(this,Tt)}},i=new WeakMap,D=new WeakMap,w=new WeakMap,C=new WeakMap,j=new WeakMap,q=new WeakMap,G=new WeakMap,R=new WeakMap,I=new WeakMap,B=new WeakMap,S=new WeakMap,O=new WeakMap,A=new WeakMap,L=new WeakMap,T=new WeakMap,z=new WeakMap,t(E,"QueryBuilderGroup"),(()=>{var t;const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=it[Symbol.metadata])&&void 0!==t?t:null):void 0;N=[h({type:Object})],P=[h({type:Array})],W=[h({type:Array})],H=[h({type:Array})],J=[h({type:Number})],Q=[h({type:Number})],Y=[h({type:Boolean})],F=[h({type:Boolean})],U=[h({type:Boolean})],X=[h({type:Boolean})],K=[h({type:Boolean,reflect:!0})],V=[h({type:Number})],Z=[h({type:Object})],tt=[h({type:String})],et=[h({type:Number})],st=[p()],e(E,null,N,{kind:"accessor",name:"group",static:!1,private:!1,access:{has:t=>"group"in t,get:t=>t.group,set:(t,e)=>{t.group=e}},metadata:s},at,nt),e(E,null,P,{kind:"accessor",name:"fields",static:!1,private:!1,access:{has:t=>"fields"in t,get:t=>t.fields,set:(t,e)=>{t.fields=e}},metadata:s},dt,lt),e(E,null,W,{kind:"accessor",name:"combinators",static:!1,private:!1,access:{has:t=>"combinators"in t,get:t=>t.combinators,set:(t,e)=>{t.combinators=e}},metadata:s},ht,pt),e(E,null,H,{kind:"accessor",name:"path",static:!1,private:!1,access:{has:t=>"path"in t,get:t=>t.path,set:(t,e)=>{t.path=e}},metadata:s},ut,gt),e(E,null,J,{kind:"accessor",name:"depth",static:!1,private:!1,access:{has:t=>"depth"in t,get:t=>t.depth,set:(t,e)=>{t.depth=e}},metadata:s},ct,bt),e(E,null,Q,{kind:"accessor",name:"maxDepth",static:!1,private:!1,access:{has:t=>"maxDepth"in t,get:t=>t.maxDepth,set:(t,e)=>{t.maxDepth=e}},metadata:s},mt,vt),e(E,null,Y,{kind:"accessor",name:"isRoot",static:!1,private:!1,access:{has:t=>"isRoot"in t,get:t=>t.isRoot,set:(t,e)=>{t.isRoot=e}},metadata:s},kt,_t),e(E,null,F,{kind:"accessor",name:"showCloneButton",static:!1,private:!1,access:{has:t=>"showCloneButton"in t,get:t=>t.showCloneButton,set:(t,e)=>{t.showCloneButton=e}},metadata:s},ft,$t),e(E,null,U,{kind:"accessor",name:"showLockButton",static:!1,private:!1,access:{has:t=>"showLockButton"in t,get:t=>t.showLockButton,set:(t,e)=>{t.showLockButton=e}},metadata:s},xt,yt),e(E,null,X,{kind:"accessor",name:"disableDragAndDrop",static:!1,private:!1,access:{has:t=>"disableDragAndDrop"in t,get:t=>t.disableDragAndDrop,set:(t,e)=>{t.disableDragAndDrop=e}},metadata:s},Dt,wt),e(E,null,K,{kind:"accessor",name:"disabled",static:!1,private:!1,access:{has:t=>"disabled"in t,get:t=>t.disabled,set:(t,e)=>{t.disabled=e}},metadata:s},Ct,jt),e(E,null,V,{kind:"accessor",name:"siblingCount",static:!1,private:!1,access:{has:t=>"siblingCount"in t,get:t=>t.siblingCount,set:(t,e)=>{t.siblingCount=e}},metadata:s},qt,Gt),e(E,null,Z,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,e)=>{t.textStrings=e}},metadata:s},Rt,It),e(E,null,tt,{kind:"accessor",name:"size",static:!1,private:!1,access:{has:t=>"size"in t,get:t=>t.size,set:(t,e)=>{t.size=e}},metadata:s},Bt,St),e(E,null,et,{kind:"accessor",name:"searchThreshold",static:!1,private:!1,access:{has:t=>"searchThreshold"in t,get:t=>t.searchThreshold,set:(t,e)=>{t.searchThreshold=e}},metadata:s},Ot,At),e(E,null,st,{kind:"accessor",name:"_dragOverIndex",static:!1,private:!1,access:{has:t=>"_dragOverIndex"in t,get:t=>t._dragOverIndex,set:(t,e)=>{t._dragOverIndex=e}},metadata:s},Lt,Tt),e(null,M={value:E},rt,{kind:"class",name:E.name,metadata:s},null,ot),E=M.value,s&&Object.defineProperty(E,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s})})(),E.styles=n(y),s(E,ot),E})();export{D as QueryBuilderGroup};
298
+ `}_isLastRule(t){for(let e=this.group.rules.length-1;e>=0;e--)if(!m(this.group.rules[e]))return e===t;return!1}_handleCombinatorChange(t){const e={...this.group,combinator:t};this._emitGroupChange(e)}_handleAddRule(){this._addNewRule(this.group.rules.length)}_handleAddRuleAfter(t){this._addNewRule(t+1)}_addNewRule(t){const e={id:`rule-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,field:"",operator:"",value:""},s=[...this.group.rules];s.splice(t,0,e);const r={...this.group,rules:s};this._emitGroupChange(r)}_handleAddGroup(){const t={id:`group-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,combinator:"and",rules:[]},e={...this.group,rules:[...this.group.rules,t]};this._emitGroupChange(e)}_handleRuleChange(t,e){t.stopPropagation();const s=t.detail.rule,r=[...this.group.rules];r[e]=s;const o={...this.group,rules:r};this._emitGroupChange(o)}_handleRuleRemove(t){const e=[...this.group.rules];e.splice(t,1);const s={...this.group,rules:e};this._emitGroupChange(s)}_handleRuleClone(t){const e={...this.group.rules[t],id:`rule-${Date.now()}-${Math.random().toString(36).substring(2,9)}`},s=[...this.group.rules];s.splice(t+1,0,e);const r={...this.group,rules:s};this._emitGroupChange(r)}_handleRuleLock(t,e){const{disabled:s}=t.detail,r={...this.group.rules[e],disabled:s},o=[...this.group.rules];o[e]=r;const i={...this.group,rules:o};this._emitGroupChange(i)}_handleNestedGroupChange(t){t.stopPropagation();const{group:e,path:s}=t.detail,r=s[this.path.length];if(void 0===r)return;const o=[...this.group.rules];o[r]=e;const i={...this.group,rules:o};this._emitGroupChange(i)}_handleNestedGroupRemove(t){t.stopPropagation();const{path:e}=t.detail,s=e[this.path.length];if(void 0===s)return;const r=[...this.group.rules];r.splice(s,1);const o={...this.group,rules:r};this._emitGroupChange(o)}_handleNestedGroupClone(t){t.stopPropagation();const{path:e}=t.detail,s=e[this.path.length];if(void 0===s)return;const r=this.group.rules[s],o=this._deepCloneGroup(r),i=[...this.group.rules];i.splice(s+1,0,o);const a={...this.group,rules:i};this._emitGroupChange(a)}_handleNestedGroupLock(t){t.stopPropagation();const{path:e,disabled:s}=t.detail,r=e[this.path.length];if(void 0===r)return;const o={...this.group.rules[r],disabled:s},i=[...this.group.rules];i[r]=o;const a={...this.group,rules:i};this._emitGroupChange(a)}_handleRemoveGroup(){this.dispatchEvent(new CustomEvent("on-group-remove",{detail:{groupId:this.group.id,path:this.path},bubbles:!0,composed:!0}))}_handleCloneGroup(){this.dispatchEvent(new CustomEvent("on-group-clone",{detail:{groupId:this.group.id,path:this.path},bubbles:!0,composed:!0}))}_handleLockToggle(){this.dispatchEvent(new CustomEvent("on-group-lock",{detail:{groupId:this.group.id,disabled:!this.group.disabled,path:this.path},bubbles:!0,composed:!0}))}_emitGroupChange(t){this.dispatchEvent(new CustomEvent("on-group-change",{detail:{group:t,path:this.path},bubbles:!0,composed:!0}))}_deepCloneGroup(t){return{...t,id:`group-${Date.now()}-${Math.random().toString(36).substring(2,9)}`,rules:t.rules.map((t=>m(t)?this._deepCloneGroup(t):{...t,id:`rule-${Date.now()}-${Math.random().toString(36).substring(2,9)}`}))}}_handleDragStart(t){var e;if(this.disableDragAndDrop||this.disabled||this.group.disabled)return void t.preventDefault();const s={type:"group",id:this.group.id,sourceIndex:null!==(e=this.path[this.path.length-1])&&void 0!==e?e:0,sourcePath:this.path.slice(0,-1)};t.dataTransfer.setData("text/plain",JSON.stringify(s)),t.dataTransfer.effectAllowed="move";const r=this.getBoundingClientRect();t.dataTransfer.setDragImage(this,t.clientX-r.left,t.clientY-r.top),this.classList.add("qb-group--dragging")}_handleDragEnd(){this.classList.remove("qb-group--dragging"),this._dragOverIndex=null}_handleItemDragOver(t,e){if(this.disableDragAndDrop||this.disabled||this.group.disabled)return;t.preventDefault(),t.stopPropagation();const s=t.currentTarget.getBoundingClientRect(),r=s.top+s.height/2,o=t.clientY<r?e:e+1;this._dragOverIndex!==o&&(this._dragOverIndex=o),t.dataTransfer.dropEffect="move"}_handleItemDragLeave(t){const e=t.relatedTarget,s=t.currentTarget;e&&s.contains(e)||(this._dragOverIndex=null)}_handleItemDrop(t,e){var s;t.preventDefault(),t.stopPropagation();const r=null===(s=t.dataTransfer)||void 0===s?void 0:s.getData("text/plain");if(r){try{const s=JSON.parse(r),o=t.currentTarget.getBoundingClientRect(),i=o.top+o.height/2,a=t.clientY<i?e:e+1;this.dispatchEvent(new CustomEvent("on-item-move",{detail:{dragData:s,targetPath:this.path,targetIndex:a},bubbles:!0,composed:!0}))}catch(t){console.error("QueryBuilder: Failed to process drop data",t)}this._dragOverIndex=null}else this._dragOverIndex=null}_handleGroupDragOver(t){this.disableDragAndDrop||this.disabled||this.group.disabled||(t.preventDefault(),t.dataTransfer.dropEffect="move")}_handleGroupDrop(t){var e;t.preventDefault(),t.stopPropagation();const s=null===(e=t.dataTransfer)||void 0===e?void 0:e.getData("text/plain");if(s){try{const t=JSON.parse(s);if("group"===t.type){const e=[...t.sourcePath,t.sourceIndex];if(this.path.join(",").startsWith(e.join(",")))return void(this._dragOverIndex=null)}this.dispatchEvent(new CustomEvent("on-item-move",{detail:{dragData:t,targetPath:this.path,targetIndex:this.group.rules.length},bubbles:!0,composed:!0}))}catch(t){console.error("QueryBuilder: Failed to process group drop data",t)}this._dragOverIndex=null}else this._dragOverIndex=null}_handleNestedItemMove(t){t.stopPropagation(),this.dispatchEvent(new CustomEvent("on-item-move",{detail:t.detail,bubbles:!0,composed:!0}))}constructor(){super(...arguments),i.set(this,s(this,dt,{id:"",combinator:"and",rules:[]})),w.set(this,(s(this,lt),s(this,ht,[]))),D.set(this,(s(this,pt),s(this,ut,[{value:"and",label:"AND"},{value:"or",label:"OR"}]))),C.set(this,(s(this,gt),s(this,ct,[]))),G.set(this,(s(this,bt),s(this,mt,0))),j.set(this,(s(this,vt),s(this,kt,1/0))),q.set(this,(s(this,_t),s(this,ft,!1))),B.set(this,(s(this,$t),s(this,xt,!1))),R.set(this,(s(this,yt),s(this,wt,!1))),I.set(this,(s(this,Dt),s(this,Ct,!1))),S.set(this,(s(this,Gt),s(this,jt,!1))),O.set(this,(s(this,qt),s(this,Bt,!1))),A.set(this,(s(this,Rt),s(this,It,1))),L.set(this,(s(this,St),s(this,Ot,{}))),T.set(this,(s(this,At),s(this,Lt,"xs"))),z.set(this,(s(this,Tt),s(this,zt,25))),M.set(this,(s(this,Mt),s(this,Et,null))),s(this,Nt)}},i=new WeakMap,w=new WeakMap,D=new WeakMap,C=new WeakMap,G=new WeakMap,j=new WeakMap,q=new WeakMap,B=new WeakMap,R=new WeakMap,I=new WeakMap,S=new WeakMap,O=new WeakMap,A=new WeakMap,L=new WeakMap,T=new WeakMap,z=new WeakMap,M=new WeakMap,t(N,"QueryBuilderGroup"),(()=>{var t;const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null!==(t=nt[Symbol.metadata])&&void 0!==t?t:null):void 0;P=[h({type:Object})],W=[h({type:Array})],H=[h({type:Array})],J=[h({type:Array})],Q=[h({type:Number})],Y=[h({type:Number})],F=[h({type:Boolean})],U=[h({type:Boolean})],X=[h({type:Boolean})],K=[h({type:Boolean})],V=[h({type:Boolean})],Z=[h({type:Boolean,reflect:!0})],tt=[h({type:Number})],et=[h({type:Object})],st=[h({type:String})],rt=[h({type:Number})],ot=[p()],e(N,null,P,{kind:"accessor",name:"group",static:!1,private:!1,access:{has:t=>"group"in t,get:t=>t.group,set:(t,e)=>{t.group=e}},metadata:s},dt,lt),e(N,null,W,{kind:"accessor",name:"fields",static:!1,private:!1,access:{has:t=>"fields"in t,get:t=>t.fields,set:(t,e)=>{t.fields=e}},metadata:s},ht,pt),e(N,null,H,{kind:"accessor",name:"combinators",static:!1,private:!1,access:{has:t=>"combinators"in t,get:t=>t.combinators,set:(t,e)=>{t.combinators=e}},metadata:s},ut,gt),e(N,null,J,{kind:"accessor",name:"path",static:!1,private:!1,access:{has:t=>"path"in t,get:t=>t.path,set:(t,e)=>{t.path=e}},metadata:s},ct,bt),e(N,null,Q,{kind:"accessor",name:"depth",static:!1,private:!1,access:{has:t=>"depth"in t,get:t=>t.depth,set:(t,e)=>{t.depth=e}},metadata:s},mt,vt),e(N,null,Y,{kind:"accessor",name:"maxDepth",static:!1,private:!1,access:{has:t=>"maxDepth"in t,get:t=>t.maxDepth,set:(t,e)=>{t.maxDepth=e}},metadata:s},kt,_t),e(N,null,F,{kind:"accessor",name:"isRoot",static:!1,private:!1,access:{has:t=>"isRoot"in t,get:t=>t.isRoot,set:(t,e)=>{t.isRoot=e}},metadata:s},ft,$t),e(N,null,U,{kind:"accessor",name:"showCloneButton",static:!1,private:!1,access:{has:t=>"showCloneButton"in t,get:t=>t.showCloneButton,set:(t,e)=>{t.showCloneButton=e}},metadata:s},xt,yt),e(N,null,X,{kind:"accessor",name:"showLockButton",static:!1,private:!1,access:{has:t=>"showLockButton"in t,get:t=>t.showLockButton,set:(t,e)=>{t.showLockButton=e}},metadata:s},wt,Dt),e(N,null,K,{kind:"accessor",name:"hideGroupBtn",static:!1,private:!1,access:{has:t=>"hideGroupBtn"in t,get:t=>t.hideGroupBtn,set:(t,e)=>{t.hideGroupBtn=e}},metadata:s},Ct,Gt),e(N,null,V,{kind:"accessor",name:"disableDragAndDrop",static:!1,private:!1,access:{has:t=>"disableDragAndDrop"in t,get:t=>t.disableDragAndDrop,set:(t,e)=>{t.disableDragAndDrop=e}},metadata:s},jt,qt),e(N,null,Z,{kind:"accessor",name:"disabled",static:!1,private:!1,access:{has:t=>"disabled"in t,get:t=>t.disabled,set:(t,e)=>{t.disabled=e}},metadata:s},Bt,Rt),e(N,null,tt,{kind:"accessor",name:"siblingCount",static:!1,private:!1,access:{has:t=>"siblingCount"in t,get:t=>t.siblingCount,set:(t,e)=>{t.siblingCount=e}},metadata:s},It,St),e(N,null,et,{kind:"accessor",name:"textStrings",static:!1,private:!1,access:{has:t=>"textStrings"in t,get:t=>t.textStrings,set:(t,e)=>{t.textStrings=e}},metadata:s},Ot,At),e(N,null,st,{kind:"accessor",name:"size",static:!1,private:!1,access:{has:t=>"size"in t,get:t=>t.size,set:(t,e)=>{t.size=e}},metadata:s},Lt,Tt),e(N,null,rt,{kind:"accessor",name:"searchThreshold",static:!1,private:!1,access:{has:t=>"searchThreshold"in t,get:t=>t.searchThreshold,set:(t,e)=>{t.searchThreshold=e}},metadata:s},zt,Mt),e(N,null,ot,{kind:"accessor",name:"_dragOverIndex",static:!1,private:!1,access:{has:t=>"_dragOverIndex"in t,get:t=>t._dragOverIndex,set:(t,e)=>{t._dragOverIndex=e}},metadata:s},Et,Nt),e(null,E={value:N},it,{kind:"class",name:N.name,metadata:s},null,at),N=E.value,s&&Object.defineProperty(N,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s})})(),N.styles=n(y),s(N,at),N})();export{w as QueryBuilderGroup};
298
299
  //# sourceMappingURL=queryBuilderGroup.js.map