@luzmo/analytics-components-kit 1.0.5 → 1.0.7

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.
Files changed (359) hide show
  1. package/README.md +17 -4
  2. package/angular/components/data-fields-select.ts +7 -0
  3. package/angular/components/filter-item.ts +15 -0
  4. package/angular/components/filter-parameter-picker.ts +70 -18
  5. package/angular/components/filters.ts +46 -6
  6. package/angular/esm/components/data-fields-select.d.ts +3 -1
  7. package/angular/esm/components/data-fields-select.js +9 -1
  8. package/angular/esm/components/filter-item.d.ts +7 -1
  9. package/angular/esm/components/filter-item.js +18 -2
  10. package/angular/esm/components/filter-parameter-picker.d.ts +22 -7
  11. package/angular/esm/components/filter-parameter-picker.js +63 -22
  12. package/angular/esm/components/filters.d.ts +21 -7
  13. package/angular/esm/components/filters.js +41 -5
  14. package/angular/package.json +2 -2
  15. package/angular/utils/formula/store/formula-display-store.d.ts +6 -0
  16. package/components/ai-chat/index.cjs +1 -1
  17. package/components/ai-chat/index.js +3 -3
  18. package/components/{ai-chat-BtQaM37y.js → ai-chat-CDSRFmJK.js} +713 -677
  19. package/components/ai-chat-CVNU2mCV.cjs +319 -0
  20. package/components/ai-interaction-textarea/index.cjs +1 -1
  21. package/components/ai-interaction-textarea/index.js +2 -2
  22. package/components/{ai-interaction-textarea-CQBP9-DW.cjs → ai-interaction-textarea-BXDeplJF.cjs} +1 -1
  23. package/components/{ai-interaction-textarea-Bgd3y_cP.js → ai-interaction-textarea-BiMbUGCy.js} +3 -3
  24. package/components/{area-chart-positioning.config-QGEo5sr-.js → area-chart-positioning.config-SLtTkKJB.js} +1 -1
  25. package/components/{area-chart-positioning.config-1YVSxjRa.cjs → area-chart-positioning.config-dwRUFC--.cjs} +1 -1
  26. package/components/{bar-chart-positioning.config-Cs56EAWY.cjs → bar-chart-positioning.config-CcQ2iQdl.cjs} +1 -1
  27. package/components/{bar-chart-positioning.config-KLzBnoCu.js → bar-chart-positioning.config-Ch4sVyJS.js} +1 -1
  28. package/components/{base-DMQUzJ4L.js → base-2sulw8ws.js} +1 -1
  29. package/components/{base-DRFleWoz.cjs → base-DYRe99_q.cjs} +1 -1
  30. package/components/{box-plot-positioning.config-DKGY1Qqb.js → box-plot-positioning.config-Bb7r-Rfl.js} +1 -1
  31. package/components/{box-plot-positioning.config-BpDEb4Uo.cjs → box-plot-positioning.config-Dwtiqho4.cjs} +1 -1
  32. package/components/{bubble-chart-positioning.config-BZsvCSyT.cjs → bubble-chart-positioning.config-Bp_l4Cw1.cjs} +1 -1
  33. package/components/{bubble-chart-positioning.config-CL3mDsC-.js → bubble-chart-positioning.config-Q7mIfpcz.js} +1 -1
  34. package/components/{bullet-chart-positioning.config-DxXEGnbz.js → bullet-chart-positioning.config-B7aXCajU.js} +1 -1
  35. package/components/{bullet-chart-positioning.config-DA-1zmsD.cjs → bullet-chart-positioning.config-sj7E3xEM.cjs} +1 -1
  36. package/components/{choropleth-map-positioning.config-BicHLfN0.js → choropleth-map-positioning.config-CtoJov9H.js} +1 -1
  37. package/components/{choropleth-map-positioning.config-D_1MCD5i.cjs → choropleth-map-positioning.config-DM-iNbgs.cjs} +1 -1
  38. package/components/{circle-pack-chart-positioning.config-a_vo4VFg.js → circle-pack-chart-positioning.config-BgxnBOQT.js} +1 -1
  39. package/components/{circle-pack-chart-positioning.config-oTUkvFFJ.cjs → circle-pack-chart-positioning.config-Cs9xMDpi.cjs} +1 -1
  40. package/components/{circular-gauge-positioning.config-TG1wPyHz.cjs → circular-gauge-positioning.config-Bzulob5F.cjs} +1 -1
  41. package/components/{circular-gauge-positioning.config-BEM85XhO.js → circular-gauge-positioning.config-FEkbw6hK.js} +1 -1
  42. package/components/{column-chart-positioning.config-D1kXKreT.cjs → column-chart-positioning.config-9ho9oUo8.cjs} +1 -1
  43. package/components/{column-chart-positioning.config-x-wEIoTZ.js → column-chart-positioning.config-BeVOSQaJ.js} +1 -1
  44. package/components/{combination-chart-positioning.config-COksdK7F.cjs → combination-chart-positioning.config-CaShl4vv.cjs} +1 -1
  45. package/components/{combination-chart-positioning.config-DLyPa1Im.js → combination-chart-positioning.config-D4VUK54k.js} +1 -1
  46. package/components/{conditional-number-positioning.config-5SBhp4Kh.cjs → conditional-number-positioning.config-BEMjjhdi.cjs} +1 -1
  47. package/components/{conditional-number-positioning.config-6ZQHIgAA.js → conditional-number-positioning.config-C-LpjCJN.js} +1 -1
  48. package/components/data-field/index.cjs +1 -1
  49. package/components/data-field/index.js +2 -2
  50. package/components/{data-field-D1lrRnLX.js → data-field-Dz0XFrep.js} +3 -3
  51. package/components/{data-field-D050EJkx.cjs → data-field-lGJ557o4.cjs} +1 -1
  52. package/components/data-field-level/index.cjs +1 -1
  53. package/components/data-field-level/index.js +2 -2
  54. package/components/{data-field-level-CKlijSjc.cjs → data-field-level-B9r4ucP6.cjs} +1 -1
  55. package/components/{data-field-level-Da8Pwva2.js → data-field-level-DJoidlHN.js} +1 -1
  56. package/components/data-field-panel/index.cjs +1 -1
  57. package/components/data-field-panel/index.js +2 -2
  58. package/components/{data-field-panel-47PGrrIi.cjs → data-field-panel-BzyjbJO5.cjs} +1 -1
  59. package/components/{data-field-panel-CgqJ1bLg.js → data-field-panel-CdeJxZCr.js} +3 -3
  60. package/components/data-fields-select/data-fields-select.d.ts +6 -0
  61. package/components/data-fields-select/index.cjs +1 -1
  62. package/components/data-fields-select/index.js +2 -2
  63. package/components/data-fields-select-BBzzUG2u.cjs +41 -0
  64. package/components/{data-fields-select-B40TXGd7.js → data-fields-select-BRBBrS-x.js} +23 -5
  65. package/components/dataset-icon/index.js +1 -1
  66. package/components/dataset-selector-list/index.cjs +1 -1
  67. package/components/dataset-selector-list/index.js +2 -2
  68. package/components/{dataset-selector-list-C0dheupb.js → dataset-selector-list-DGCh1bvb.js} +1 -1
  69. package/components/{dataset-selector-list-CKQ7OgMN.cjs → dataset-selector-list-xF3yKGan.cjs} +1 -1
  70. package/components/dataset-selector-row/index.cjs +1 -1
  71. package/components/dataset-selector-row/index.js +2 -2
  72. package/components/{dataset-selector-row-DP6QUWYs.js → dataset-selector-row-BbnjxfIz.js} +1 -1
  73. package/components/{dataset-selector-row-_FZPTBE1.cjs → dataset-selector-row-fmrY3y86.cjs} +1 -1
  74. package/components/de-BzcAVqyW.cjs +20 -0
  75. package/components/{de-CPcJgwTx.js → de-CRrCVuH7.js} +15 -0
  76. package/components/display-settings/index.cjs +1 -1
  77. package/components/display-settings/index.js +2 -2
  78. package/components/{display-settings-B-eamVdN.js → display-settings-C9OQ4Eou.js} +3 -3
  79. package/components/display-settings-binning/index.cjs +1 -1
  80. package/components/display-settings-binning/index.js +2 -2
  81. package/components/{display-settings-binning-BGtp0Wvl.js → display-settings-binning-B8E2H5cY.js} +2 -2
  82. package/components/{display-settings-binning-Cs8MS7BY.cjs → display-settings-binning-BBNL97l9.cjs} +1 -1
  83. package/components/display-settings-datetime/index.cjs +1 -1
  84. package/components/display-settings-datetime/index.js +2 -2
  85. package/components/{display-settings-datetime-CbTnG486.js → display-settings-datetime-BBzvzwl5.js} +2 -2
  86. package/components/{display-settings-datetime-q20qbrOL.cjs → display-settings-datetime-czjk5Msv.cjs} +1 -1
  87. package/components/display-settings-eSQCidqh.cjs +140 -0
  88. package/components/display-settings-grand-totals/index.cjs +1 -1
  89. package/components/display-settings-grand-totals/index.js +2 -2
  90. package/components/{display-settings-grand-totals-BDeeC6-h.js → display-settings-grand-totals-CF01m8x-.js} +2 -2
  91. package/components/{display-settings-grand-totals-DdEXs_mA.cjs → display-settings-grand-totals-RwMnGwFZ.cjs} +1 -1
  92. package/components/display-settings-numeric/index.cjs +1 -1
  93. package/components/display-settings-numeric/index.js +2 -2
  94. package/components/{display-settings-numeric-C5FlahN_.js → display-settings-numeric-BcpwYX16.js} +2 -2
  95. package/components/{display-settings-numeric-PtcxP80Z.cjs → display-settings-numeric-C4X7oOEU.cjs} +1 -1
  96. package/components/display-settings-period-over-period/index.cjs +1 -1
  97. package/components/display-settings-period-over-period/index.js +2 -2
  98. package/components/{display-settings-period-over-period-CUlsSQZv.js → display-settings-period-over-period-B8UNYZ0I.js} +2 -2
  99. package/components/{display-settings-period-over-period-Csv7Kwri.cjs → display-settings-period-over-period-BG9YAcCw.cjs} +1 -1
  100. package/components/{donut-chart-positioning.config-EudGY45O.js → donut-chart-positioning.config-CaADC7Qr.js} +1 -1
  101. package/components/{donut-chart-positioning.config-m_uVKoNn.cjs → donut-chart-positioning.config-Dfws3ojS.cjs} +1 -1
  102. package/components/{es-fXPjX3vY.js → es-BIgv-ijQ.js} +15 -0
  103. package/components/es-mPmtD7j4.cjs +20 -0
  104. package/components/{evolution-number-positioning.config-BcLsEydB.js → evolution-number-positioning.config-C-OV1wpL.js} +1 -1
  105. package/components/{evolution-number-positioning.config-CJii0q3V.cjs → evolution-number-positioning.config-CI_2m2Sr.cjs} +1 -1
  106. package/components/filter-expression-picker/index.cjs +1 -1
  107. package/components/filter-expression-picker/index.js +2 -2
  108. package/components/{filter-expression-picker-nW1Hff7C.js → filter-expression-picker-CH2Fna8C.js} +1 -1
  109. package/components/{filter-expression-picker-D28THjzU.cjs → filter-expression-picker-_mfcXZ-n.cjs} +1 -1
  110. package/components/filter-item/filter-item.d.ts +15 -0
  111. package/components/filter-item/index.cjs +1 -1
  112. package/components/filter-item/index.js +2 -2
  113. package/components/filter-item-5HCSM9cu.cjs +71 -0
  114. package/components/{filter-item-BoYKU9tK.js → filter-item-CL3S9HOx.js} +100 -41
  115. package/components/filter-parameter-picker/filter-parameter-picker.d.ts +71 -9
  116. package/components/filter-parameter-picker/filter-parameter-picker.helpers.d.ts +8 -0
  117. package/components/filter-parameter-picker/index.cjs +1 -3
  118. package/components/filter-parameter-picker/index.d.ts +2 -0
  119. package/components/filter-parameter-picker/index.js +3 -33
  120. package/components/filter-parameter-picker/types.d.ts +4 -0
  121. package/components/filter-parameter-picker-CU48aEOS.js +363 -0
  122. package/components/filter-parameter-picker-CxbAY5hy.cjs +123 -0
  123. package/components/filter-value-picker/filter-value-picker.d.ts +1 -0
  124. package/components/filter-value-picker/index.cjs +1 -1
  125. package/components/filter-value-picker/index.js +2 -2
  126. package/components/{filter-value-picker-1kMJ9slB.js → filter-value-picker-CD8DjcHo.js} +5 -5
  127. package/components/{filter-value-picker-D08bAAKt.cjs → filter-value-picker-CRrUhngj.cjs} +1 -1
  128. package/components/filter-value-picker-datetime/filter-value-picker-datetime.d.ts +2 -0
  129. package/components/filter-value-picker-datetime/index.cjs +1 -1
  130. package/components/filter-value-picker-datetime/index.js +2 -2
  131. package/components/{filter-value-picker-datetime-Cnwlipah.js → filter-value-picker-datetime-DS7IK9aN.js} +2 -2
  132. package/components/{filter-value-picker-datetime-OIgFSdU2.cjs → filter-value-picker-datetime-dXaHpCRX.cjs} +1 -1
  133. package/components/filter-value-picker-hierarchy/filter-value-picker-hierarchy.d.ts +2 -0
  134. package/components/filter-value-picker-hierarchy/index.cjs +1 -1
  135. package/components/filter-value-picker-hierarchy/index.js +2 -2
  136. package/components/{filter-value-picker-hierarchy-DdMLbCO3.js → filter-value-picker-hierarchy-k0T56CvH.js} +3 -3
  137. package/components/{filter-value-picker-hierarchy-BGgHIji-.cjs → filter-value-picker-hierarchy-kwnEzxIk.cjs} +1 -1
  138. package/components/filter-value-picker-numeric/filter-value-picker-numeric.d.ts +1 -0
  139. package/components/filter-value-picker-numeric/index.cjs +1 -1
  140. package/components/filter-value-picker-numeric/index.js +2 -2
  141. package/components/{filter-value-picker-numeric-BL2gD2ED.cjs → filter-value-picker-numeric-BVei4Vlc.cjs} +1 -1
  142. package/components/{filter-value-picker-numeric-BqrsENh6.js → filter-value-picker-numeric-BaQe4r82.js} +2 -2
  143. package/components/filters/filters.d.ts +38 -4
  144. package/components/filters/index.cjs +1 -1
  145. package/components/filters/index.d.ts +4 -1
  146. package/components/filters/index.js +3 -3
  147. package/components/filters/transformations/clean-filters.d.ts +37 -0
  148. package/components/filters/transformations/filter-format.d.ts +54 -0
  149. package/components/filters/transformations/transform-filters.d.ts +27 -12
  150. package/components/filters/types.d.ts +48 -3
  151. package/components/filters-B70hF2NT.js +742 -0
  152. package/components/filters-ms2gFstA.cjs +153 -0
  153. package/components/formula/index.cjs +1 -1
  154. package/components/formula/index.js +2 -2
  155. package/components/{formula-CNzBOTRQ.js → formula-DdgD312W.js} +2 -2
  156. package/components/{formula-codemirror-pnijOvXU.js → formula-codemirror-D3Z1Qa0J.js} +4 -4
  157. package/components/{formula-codemirror-D1hgPIW_.cjs → formula-codemirror-GoFCSp6r.cjs} +1 -1
  158. package/components/{formula-display-store-BBMmHCRp.js → formula-display-store-bPGDv_xk.js} +10 -7
  159. package/components/formula-display-store-eE3zaCyB.cjs +20 -0
  160. package/components/formula-editor/index.cjs +1 -1
  161. package/components/formula-editor/index.js +4 -4
  162. package/components/{formula-editor-Uejdzkm6.cjs → formula-editor-8wWzGGJr.cjs} +1 -1
  163. package/components/{formula-editor-DvDB6JYI.js → formula-editor-BnWiiFr5.js} +5 -5
  164. package/components/formula-field/index.cjs +1 -1
  165. package/components/formula-field/index.js +2 -2
  166. package/components/{formula-field-o_zZQACN.js → formula-field-DlEgUu58.js} +1 -1
  167. package/components/{formula-field-CNyKz9wY.cjs → formula-field-IHf6I8mL.cjs} +1 -1
  168. package/components/{formula-DeRjtboJ.cjs → formula-glPlLx_5.cjs} +1 -1
  169. package/components/{formula-input-base-DlVNZBUA.js → formula-input-base-7I069pOJ.js} +1 -1
  170. package/components/{formula-input-base-fTF1KXpl.cjs → formula-input-base-D5yx7RYX.cjs} +1 -1
  171. package/components/fr-BHUhOl6R.cjs +20 -0
  172. package/components/{fr-B50vb6LP.js → fr-CI9fC-NM.js} +15 -0
  173. package/components/{funnel-chart-positioning.config-B_C8nr1y.js → funnel-chart-positioning.config-CNEeOwuT.js} +1 -1
  174. package/components/{funnel-chart-positioning.config-DhrMsuyt.cjs → funnel-chart-positioning.config-Cz8gQRh_.cjs} +1 -1
  175. package/components/{get-dataset-name-DrTVBElb.cjs → get-dataset-name-Bae0I2_J.cjs} +1 -1
  176. package/components/{get-dataset-name-DYLJB67F.js → get-dataset-name-OJK38mEs.js} +1 -1
  177. package/components/{groupings-BPlu4GFe.cjs → groupings-B0qMZHSd.cjs} +1 -1
  178. package/components/{groupings-DAj2iFeA.js → groupings-BZJTnpwR.js} +1 -1
  179. package/components/{heat-map-positioning.config-Bya2_TR8.cjs → heat-map-positioning.config-CEH6qyrN.cjs} +1 -1
  180. package/components/{heat-map-positioning.config-Cxembqle.js → heat-map-positioning.config-D-Ba4Ts_.js} +1 -1
  181. package/components/{heat-table-positioning.config-CNeTnuHy.js → heat-table-positioning.config-DCnowqOc.js} +1 -1
  182. package/components/{heat-table-positioning.config-CYZr5ksc.cjs → heat-table-positioning.config-DWNETZMx.cjs} +1 -1
  183. package/components/{hexbin-map-positioning.config-Dfdgub0y.js → hexbin-map-positioning.config-Br0pjvMN.js} +1 -1
  184. package/components/{hexbin-map-positioning.config-bXZEY4nP.cjs → hexbin-map-positioning.config-DoiUVZ8h.cjs} +1 -1
  185. package/components/index.cjs +1 -1
  186. package/components/index.js +64 -63
  187. package/components/interactive-viz-item/index.cjs +1 -1
  188. package/components/interactive-viz-item/index.js +2 -2
  189. package/components/{interactive-viz-item-D-hR2G5x.cjs → interactive-viz-item-DZoRqeJW.cjs} +1 -1
  190. package/components/{interactive-viz-item-C3fzZq7j.js → interactive-viz-item-Dogksvpq.js} +5 -5
  191. package/components/item-grid/index.cjs +1 -1
  192. package/components/item-grid/index.js +2 -2
  193. package/components/{item-grid-BruAZOla.cjs → item-grid-VPRvzGCa.cjs} +1 -1
  194. package/components/{item-grid-cyMiRw7P.js → item-grid-ZQpp1brq.js} +1 -1
  195. package/components/item-option/index.cjs +1 -1
  196. package/components/item-option/index.js +2 -2
  197. package/components/{item-option-CZb01VJb.js → item-option-B9tALelF.js} +1 -1
  198. package/components/{item-option-BclNWwdZ.cjs → item-option-BRgOBMM0.cjs} +1 -1
  199. package/components/item-option-action-button-group/index.cjs +1 -1
  200. package/components/item-option-action-button-group/index.js +2 -2
  201. package/components/{item-option-action-button-group-AkMaJHuv.cjs → item-option-action-button-group-BYE7i8Zd.cjs} +1 -1
  202. package/components/{item-option-action-button-group-HfUtaTi9.js → item-option-action-button-group-WrHKP761.js} +1 -1
  203. package/components/{item-option-base-CZegYACf.cjs → item-option-base-CTBIeARi.cjs} +1 -1
  204. package/components/{item-option-base-DlHZAfWZ.js → item-option-base-CuxvyS-a.js} +1 -1
  205. package/components/item-option-color-palette-picker/index.cjs +1 -1
  206. package/components/item-option-color-palette-picker/index.js +2 -2
  207. package/components/{item-option-color-palette-picker-B336qQRk.cjs → item-option-color-palette-picker-CyailqDd.cjs} +1 -1
  208. package/components/{item-option-color-palette-picker-Dt4z0c4W.js → item-option-color-palette-picker-eYAyoXM1.js} +1 -1
  209. package/components/item-option-color-picker/index.cjs +1 -1
  210. package/components/item-option-color-picker/index.js +2 -2
  211. package/components/{item-option-color-picker-BRO416_T.js → item-option-color-picker-D_x6FgZy.js} +1 -1
  212. package/components/{item-option-color-picker-Hfu2fhRF.cjs → item-option-color-picker-DsfZKPDo.cjs} +1 -1
  213. package/components/item-option-color-range/index.cjs +1 -1
  214. package/components/item-option-color-range/index.js +2 -2
  215. package/components/{item-option-color-range-DgalNZ9b.js → item-option-color-range-CHSbql1w.js} +1 -1
  216. package/components/{item-option-color-range-DWoaz57E.cjs → item-option-color-range-tAMMKg6y.cjs} +1 -1
  217. package/components/item-option-multi-language-field/index.cjs +1 -1
  218. package/components/item-option-multi-language-field/index.js +2 -2
  219. package/components/{item-option-multi-language-field-BvJXIFgu.js → item-option-multi-language-field-D51cJ4BM.js} +1 -1
  220. package/components/{item-option-multi-language-field-IQP6fbgB.cjs → item-option-multi-language-field-DjWm-jWC.cjs} +1 -1
  221. package/components/item-option-number-field/index.cjs +1 -1
  222. package/components/item-option-number-field/index.js +2 -2
  223. package/components/{item-option-number-field-B07NhNSm.cjs → item-option-number-field-Dep43Ym5.cjs} +1 -1
  224. package/components/{item-option-number-field-CvGknDpu.js → item-option-number-field-Df56sivV.js} +1 -1
  225. package/components/item-option-panel/index.cjs +1 -1
  226. package/components/item-option-panel/index.js +2 -2
  227. package/components/{item-option-panel-RYdx8Hfk.js → item-option-panel-BYCfnDeP.js} +3 -3
  228. package/components/{item-option-panel-BWP9E8cW.cjs → item-option-panel-ClDspg51.cjs} +1 -1
  229. package/components/item-option-picker/index.cjs +1 -1
  230. package/components/item-option-picker/index.js +2 -2
  231. package/components/{item-option-picker-DM1pU3w9.js → item-option-picker-BCsB7psT.js} +1 -1
  232. package/components/{item-option-picker-C7SZfnLP.cjs → item-option-picker-CBfFgSKs.cjs} +1 -1
  233. package/components/item-option-position-picker/index.cjs +1 -1
  234. package/components/item-option-position-picker/index.js +2 -2
  235. package/components/{item-option-position-picker-BuDvx3SX.js → item-option-position-picker-CXJGmmWF.js} +1 -1
  236. package/components/{item-option-position-picker-M9CBH9NE.cjs → item-option-position-picker-CYoOkH1m.cjs} +1 -1
  237. package/components/item-option-positions-number-field/index.cjs +1 -1
  238. package/components/item-option-positions-number-field/index.js +2 -2
  239. package/components/{item-option-positions-number-field-C4zW5-Hc.cjs → item-option-positions-number-field-CNUCVm78.cjs} +1 -1
  240. package/components/{item-option-positions-number-field-RN5AG-Ic.js → item-option-positions-number-field-CkfSHCFO.js} +1 -1
  241. package/components/item-option-radio-button-group/index.cjs +1 -1
  242. package/components/item-option-radio-button-group/index.js +2 -2
  243. package/components/{item-option-radio-button-group-Ce780UyR.js → item-option-radio-button-group-CSyh4eS2.js} +1 -1
  244. package/components/{item-option-radio-button-group-DRiwqorh.cjs → item-option-radio-button-group-ZIvbpJf9.cjs} +1 -1
  245. package/components/item-option-slider/index.cjs +1 -1
  246. package/components/item-option-slider/index.js +2 -2
  247. package/components/item-option-slider/item-option-slider.d.ts +5 -0
  248. package/components/{item-option-slider-BUdWMAzT.js → item-option-slider-CTt5aYbb.js} +31 -16
  249. package/components/{item-option-slider-CycHQFnr.cjs → item-option-slider-CaxIGDWN.cjs} +3 -3
  250. package/components/item-option-switch/index.cjs +1 -1
  251. package/components/item-option-switch/index.js +2 -2
  252. package/components/{item-option-switch-CvcZSytb.js → item-option-switch-B91r65eW.js} +1 -1
  253. package/components/{item-option-switch-CM5R8wO_.cjs → item-option-switch-wEx5JkSe.cjs} +1 -1
  254. package/components/item-option-text-field/index.cjs +1 -1
  255. package/components/item-option-text-field/index.js +2 -2
  256. package/components/{item-option-text-field-BZjOilSu.cjs → item-option-text-field-BLcYkH-j.cjs} +1 -1
  257. package/components/{item-option-text-field-CyuYUITv.js → item-option-text-field-BvSCGhuH.js} +1 -1
  258. package/components/item-slot-drop/index.cjs +1 -1
  259. package/components/item-slot-drop/index.js +2 -2
  260. package/components/{item-slot-drop-C6DO5mPk.js → item-slot-drop-Box1wnvM.js} +5 -5
  261. package/components/{item-slot-drop-CrzFRobc.cjs → item-slot-drop-n-lD8Zyh.cjs} +1 -1
  262. package/components/item-slot-drop-panel/index.cjs +1 -1
  263. package/components/item-slot-drop-panel/index.js +2 -2
  264. package/components/{item-slot-drop-panel-DvmPk1pJ.js → item-slot-drop-panel-KtZKw0Ly.js} +39 -39
  265. package/components/{item-slot-drop-panel-ChazcNSe.cjs → item-slot-drop-panel-sCkQ0dUU.cjs} +1 -1
  266. package/components/item-slot-picker/index.cjs +1 -1
  267. package/components/item-slot-picker/index.js +2 -2
  268. package/components/{item-slot-picker-CmG71mGy.js → item-slot-picker-Cm8o4A00.js} +6 -6
  269. package/components/{item-slot-picker-DQkG3Lt7.cjs → item-slot-picker-DKPE2NQn.cjs} +1 -1
  270. package/components/item-slot-picker-panel/index.cjs +1 -1
  271. package/components/item-slot-picker-panel/index.js +2 -2
  272. package/components/{item-slot-picker-panel-Bi2jXvQA.cjs → item-slot-picker-panel-DK5jRBYs.cjs} +1 -1
  273. package/components/{item-slot-picker-panel-DmGYI5YI.js → item-slot-picker-panel-DOHi_8UO.js} +3 -3
  274. package/components/{line-chart-positioning.config-Cqnfz4Lc.cjs → line-chart-positioning.config-C05IZ4Jj.cjs} +1 -1
  275. package/components/{line-chart-positioning.config-CFHFq0wp.js → line-chart-positioning.config-DQfyOkWV.js} +1 -1
  276. package/components/{localized-mixin-CUuRZu9t.cjs → localized-mixin-BForHr3t.cjs} +1 -1
  277. package/components/{localized-mixin-B4fDdsF0.js → localized-mixin-D-vXCJuU.js} +1 -1
  278. package/components/{marker-map-positioning.config-x3KUsgzD.js → marker-map-positioning.config-CD7n0uLB.js} +1 -1
  279. package/components/{marker-map-positioning.config-BM-ZrmE9.cjs → marker-map-positioning.config-DOhXf-CR.cjs} +1 -1
  280. package/components/{nl-Do6FfV7U.js → nl-HLnZHvTS.js} +15 -0
  281. package/components/nl-NxeHJ8X8.cjs +20 -0
  282. package/components/{ohlc-chart-positioning.config-C-vx6lt-.js → ohlc-chart-positioning.config-Bl-ckdlQ.js} +1 -1
  283. package/components/{ohlc-chart-positioning.config-SIhJhFel.cjs → ohlc-chart-positioning.config-CDf77OgH.cjs} +1 -1
  284. package/components/{parallel-coordinates-plot-positioning.config-Br1OGTEZ.cjs → parallel-coordinates-plot-positioning.config-DfsKsUdv.cjs} +1 -1
  285. package/components/{parallel-coordinates-plot-positioning.config-BaofZgit.js → parallel-coordinates-plot-positioning.config-Tbzzr5L6.js} +1 -1
  286. package/components/{pivot-table-positioning.config-BaBkuXV0.cjs → pivot-table-positioning.config-DwuKN2xz.cjs} +1 -1
  287. package/components/{pivot-table-positioning.config-DeeS1MaO.js → pivot-table-positioning.config-_YDPeFQz.js} +1 -1
  288. package/components/{pyramid-chart-positioning.config-g55mkotb.cjs → pyramid-chart-positioning.config-7AJy2_zR.cjs} +1 -1
  289. package/components/{pyramid-chart-positioning.config-D14NnyH1.js → pyramid-chart-positioning.config-Btm_8m46.js} +1 -1
  290. package/components/{radar-chart-positioning.config-CWGfQ7-j.cjs → radar-chart-positioning.config-7Kx_uKbW.cjs} +1 -1
  291. package/components/{radar-chart-positioning.config-C9fiYOnB.js → radar-chart-positioning.config-DWziVqMW.js} +1 -1
  292. package/components/{route-map-positioning.config-Cd4azpuW.js → route-map-positioning.config-C4-2zLGp.js} +1 -1
  293. package/components/{route-map-positioning.config-Dswq4pH_.cjs → route-map-positioning.config-DDgEAW4k.cjs} +1 -1
  294. package/components/{sankey-diagram-positioning.config-CAHzdKBq.cjs → sankey-diagram-positioning.config-BxVJaOKN.cjs} +1 -1
  295. package/components/{sankey-diagram-positioning.config-CzGCvTeX.js → sankey-diagram-positioning.config-DQcUg8Cg.js} +1 -1
  296. package/components/{scatter-plot-positioning.config-CrVJZ-X9.cjs → scatter-plot-positioning.config-D3xI_5P8.cjs} +1 -1
  297. package/components/{scatter-plot-positioning.config-C7nu7quv.js → scatter-plot-positioning.config-DOgeShUF.js} +1 -1
  298. package/components/{set-locale-DBVSKk_b.js → set-locale-D9gR8t-s.js} +4 -4
  299. package/components/{set-locale-1r0lDa7J.cjs → set-locale-MQpiifTB.cjs} +1 -1
  300. package/components/{slicer-filter-positioning.config-7sucz3_y.js → slicer-filter-positioning.config-CiHfPrM5.js} +1 -1
  301. package/components/{slicer-filter-positioning.config-D9Tehydc.cjs → slicer-filter-positioning.config-bN36DdLc.cjs} +1 -1
  302. package/components/slot-menu/index.cjs +1 -1
  303. package/components/slot-menu/index.js +2 -2
  304. package/components/{slot-menu-AavTGkLk.cjs → slot-menu-K5QiEu6o.cjs} +1 -1
  305. package/components/{slot-menu-Dz-O1ypQ.js → slot-menu-Qy35BZZ_.js} +3 -3
  306. package/components/slot-menu-list/index.cjs +1 -1
  307. package/components/slot-menu-list/index.js +2 -2
  308. package/components/{slot-menu-list-BegM0w8C.js → slot-menu-list-BKMbIFg1.js} +1 -1
  309. package/components/{slot-menu-list-Cahst0TY.cjs → slot-menu-list-DmQe7882.cjs} +1 -1
  310. package/components/{speedometer-chart-positioning.config-DiDSe44G.js → speedometer-chart-positioning.config-B7M91sKN.js} +1 -1
  311. package/components/{speedometer-chart-positioning.config-CZgXkEsG.cjs → speedometer-chart-positioning.config-Ce70l0Ei.cjs} +1 -1
  312. package/components/{spike-map-positioning.config-RExJASrJ.cjs → spike-map-positioning.config-D3wIf0RU.cjs} +1 -1
  313. package/components/{spike-map-positioning.config-W-xJbchu.js → spike-map-positioning.config-Qf4LOPvB.js} +1 -1
  314. package/components/{strip-plot-positioning.config-C70pTRqg.cjs → strip-plot-positioning.config-BIoncLjm.cjs} +1 -1
  315. package/components/{strip-plot-positioning.config-DsKb9ton.js → strip-plot-positioning.config-MbfBVHf8.js} +1 -1
  316. package/components/{sunburst-chart-positioning.config-BAhEnZtE.js → sunburst-chart-positioning.config-CqyXZPxE.js} +1 -1
  317. package/components/{sunburst-chart-positioning.config-BHvaDZCC.cjs → sunburst-chart-positioning.config-zqPLL8yF.cjs} +1 -1
  318. package/components/{symbol-map-positioning.config-B2RZQPND.cjs → symbol-map-positioning.config-CQ4Vxu96.cjs} +1 -1
  319. package/components/{symbol-map-positioning.config-DNPiG975.js → symbol-map-positioning.config-plXDTBA3.js} +1 -1
  320. package/components/{treemap-chart-positioning.config-C0LbkC6B.js → treemap-chart-positioning.config-BTGBN1f9.js} +1 -1
  321. package/components/{treemap-chart-positioning.config-CIYguC9V.cjs → treemap-chart-positioning.config-CSZXzuT5.cjs} +1 -1
  322. package/components/utils/base.cjs +1 -1
  323. package/components/utils/base.js +2 -2
  324. package/components/{utils-Cx4X0PBr.cjs → utils-BDvDwAn7.cjs} +1 -1
  325. package/components/{utils-C8ATDm66.js → utils-Z9xbTTWG.js} +1 -1
  326. package/components/utils.cjs +1 -1
  327. package/components/utils.js +2 -2
  328. package/components/{venn-diagram-positioning.config-CGmfYuoj.cjs → venn-diagram-positioning.config-C4vcZDtW.cjs} +1 -1
  329. package/components/{venn-diagram-positioning.config-CPUT2LXS.js → venn-diagram-positioning.config-fPvrjtfX.js} +1 -1
  330. package/components/viz-item-menu/index.cjs +1 -1
  331. package/components/viz-item-menu/index.js +2 -2
  332. package/components/{viz-item-menu-BKXdr3_Q.cjs → viz-item-menu-DxA295eM.cjs} +1 -1
  333. package/components/{viz-item-menu-XoCSn7z_.js → viz-item-menu-vckPQBdf.js} +1 -1
  334. package/components/{wordcloud-chart-positioning.config-roHRUT_m.cjs → wordcloud-chart-positioning.config-Cf1ErL-B.cjs} +1 -1
  335. package/components/{wordcloud-chart-positioning.config-CqCOWKL4.js → wordcloud-chart-positioning.config-ChUx_Ahc.js} +1 -1
  336. package/custom-elements.json +1325 -122
  337. package/index.d.ts +1 -0
  338. package/package.json +5 -5
  339. package/react/components/filter-parameter-picker.component.ts +15 -4
  340. package/react/components/filters.component.ts +9 -3
  341. package/react/esm/components/filter-parameter-picker.component.d.ts +11 -3
  342. package/react/esm/components/filter-parameter-picker.component.js +9 -1
  343. package/react/esm/components/filters.component.d.ts +10 -2
  344. package/react/esm/components/filters.component.js +6 -2
  345. package/react/luzmo-stub.d.ts +2 -1
  346. package/react/package.json +2 -2
  347. package/storybook/register-components.d.ts +18 -13
  348. package/utils/formula/store/formula-display-store.d.ts +6 -0
  349. package/components/ai-chat-CBLWbv9C.cjs +0 -319
  350. package/components/data-fields-select-CQVqxMCS.cjs +0 -41
  351. package/components/de-CFFG1QN7.cjs +0 -20
  352. package/components/display-settings-1AdcENcv.cjs +0 -140
  353. package/components/es-Bd7rtLnM.cjs +0 -20
  354. package/components/filter-item-BirgEXGE.cjs +0 -58
  355. package/components/filters-BLss6wBx.js +0 -407
  356. package/components/filters-rjc5xsF_.cjs +0 -150
  357. package/components/formula-display-store-Dn7r5kK8.cjs +0 -20
  358. package/components/fr-kmzf1vls.cjs +0 -20
  359. package/components/nl-FcPtgtcL.cjs +0 -20
package/README.md CHANGED
@@ -15,9 +15,11 @@ ACK produces and edits chart configuration (type, slots, options, filters). It d
15
15
  ## Installation
16
16
 
17
17
  ```bash
18
- npm install @luzmo/analytics-components-kit
18
+ npm install @luzmo/analytics-components-kit lit@^3.3.2 @luzmo/lucero@^2.0.1 @luzmo/icons@^1.0.1-alpha.46
19
19
  ```
20
20
 
21
+ ACK uses Lucero 2 for its design-system primitives. Package managers that do not install peer dependencies automatically must install the compatible peer versions explicitly.
22
+
21
23
  To render the configured charts, also install Luzmo Embed (optional):
22
24
 
23
25
  ```bash
@@ -108,7 +110,11 @@ Individual option control editors are also exported for fully custom option UIs:
108
110
  | --------- | ----------------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------- |
109
111
  | Filters | `@luzmo/analytics-components-kit/filters` | Filter editor with nested AND/OR groups | [Docs](https://developer.luzmo.com/guide/ack--components--filters--luzmo-filters) |
110
112
 
111
- `<luzmo-filters>` outputs the standard Luzmo filter format (`ItemFilterGroup[]` from `@luzmo/dashboard-contents-types`), compatible with `luzmo-embed-viz-item`'s `filters` property and `luzmo-item-grid` items' `filters`. Group `condition` values are lowercase `and` / `or`. The published `FilterGroup` editor type uses the same casing, so typed consumers must migrate uppercase literals to `and` / `or`. At runtime uppercase `AND` / `OR` input is still accepted and normalized to lowercase on output.
113
+ `<luzmo-filters>` defaults to the standard Luzmo filter format (`ItemFilterGroup[]` from `@luzmo/dashboard-contents-types`). Narrow `luzmo-filters-changed` on `event.detail.format` before forwarding: canonical groups are compatible with `luzmo-embed-viz-item`'s `filters` property and `luzmo-item-grid` items' `filters`; clean groups are for aligned hosts that accept `ItemFilterOutput` / `DashboardFilterOutput`. Group `condition` values are lowercase `and` / `or`. The published `FilterGroup` editor type uses the same casing, so typed consumers must migrate uppercase literals to `and` / `or`. At runtime uppercase `AND` / `OR` input is still accepted and normalized to lowercase on output.
114
+
115
+ `filters` accepts both halves of the public `ItemFilterOutput` / `DashboardFilterOutput` unions, so the result of an aligned `getFilters()` can be passed straight back in: canonical `ItemFilterGroup[]`, or clean clause groups that own a top-level `clause`, nest inline, and flatten each leaf onto its reference (including dashboard retrieval envelopes). Output stays canonical unless you set `format="clean"`, and `event.detail.format` names the half you received. A tree that cannot be represented cleanly — mixed `where`/`having` under `or`, a missing reference or value, an `in` / `not in` expression whose value is not an array, or a `between` expression whose range does not contain exactly two values — falls back to canonical output. A leaf that mixes encodings, or that matches neither a complete clean nor a complete canonical encoding, is rejected and the previous `filters` value is kept. Typed consumers of `FiltersChangedEventDetail` must narrow on `format` to keep `filters` as `ItemFilterGroup[]`. `transformFilters`, `reverseTransformFilters`, and `detectFiltersFormat` are exported from `@luzmo/analytics-components-kit/filters` for hosts that convert outside the editor.
116
+
117
+ Named parameter-backed values are opt-in with `allow-parameters`. Supply the initial definitions through the `parameters` property. A parameter created in the editor is appended to `parameters` and announced with `luzmo-parameter-created`, so handle that event to persist it; creating does not apply it to a filter, since the user attaches it by picking it from the list. Listen for `luzmo-parameter-removed` when a definition is detached from one filter. Detaching does not delete the definition. The exported `FilterParameter`, `FilterParameterType`, and `FilterParameterEventDetail` types describe this API.
112
118
 
113
119
  ### Chart rendering
114
120
 
@@ -180,7 +186,7 @@ vizItem.authToken = 'your-auth-token';
180
186
  vizItem.type = itemType; // chart type
181
187
  vizItem.slots = slotsContents; // from luzmo-slots-contents-changed
182
188
  vizItem.options = options; // from luzmo-options-changed
183
- vizItem.filters = filters; // from luzmo-filters-changed
189
+ vizItem.filters = filters; // canonical ItemFilterGroup[] from luzmo-filters-changed (narrow on detail.format if you set format="clean")
184
190
  ```
185
191
 
186
192
  See the Flex reference and the "Using luzmo-embed-viz-item with the kit" guide in the [ACK docs](https://developer.luzmo.com/guide/ack--overview) for every viz item property, event, and method.
@@ -281,7 +287,14 @@ import type {
281
287
  SlotContentsChangedEventDetail,
282
288
  SlotConstraintTriggeredEventDetail,
283
289
  ItemFilterGroup,
284
- FilterGroup
290
+ FilterGroup,
291
+ FiltersChangedEventDetail,
292
+ FiltersInput,
293
+ FiltersOutput,
294
+ FiltersFormat,
295
+ CleanFilterClauseGroup,
296
+ ItemFilterOutput,
297
+ DashboardFilterOutput
285
298
  } from '@luzmo/analytics-components-kit/types';
286
299
  ```
287
300
 
@@ -39,6 +39,10 @@ export class LuzmoDataFieldsSelect implements OnChanges {
39
39
  @Input({ alias: 'icons' })
40
40
  icons?: 'none' | 'menu-only' | 'all';
41
41
 
42
+ /** Whether datetime and hierarchy columns expand into selectable sublevels. Turn this off in contexts that address the column as a whole, so the column stays selectable by its own id. */
43
+ @Input({ alias: 'levels' })
44
+ levels?: 'on' | 'off';
45
+
42
46
  /** Allow no selection. If true, the picker will not show a value when no item is selected. Else if no value is provided it will pick the first item. */
43
47
  @Input({ alias: 'allowEmpty', transform: booleanAttribute })
44
48
  allowEmpty?: boolean;
@@ -127,6 +131,9 @@ export class LuzmoDataFieldsSelect implements OnChanges {
127
131
  case 'icons':
128
132
  this.setHostProperty('icons', changes['icons'].currentValue);
129
133
  break;
134
+ case 'levels':
135
+ this.setHostProperty('levels', changes['levels'].currentValue);
136
+ break;
130
137
  case 'allowEmpty':
131
138
  this.setHostProperty('allowEmpty', changes['allowEmpty'].currentValue);
132
139
  break;
@@ -1,6 +1,7 @@
1
1
  import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
2
2
  import '@luzmo/analytics-components-kit/filter-item';
3
3
  import type { LuzmoFilterItem as LuzmoFilterItemHostElement } from '@luzmo/analytics-components-kit/filter-item';
4
+ import type { FilterParameter } from '@luzmo/analytics-components-kit/filters';
4
5
 
5
6
  @Component({
6
7
  selector: 'luzmo-filter-item',
@@ -56,6 +57,14 @@ export class LuzmoFilterItem implements OnChanges {
56
57
  @Input({ alias: 'filter' })
57
58
  filter?: any;
58
59
 
60
+ /** Whether parameter-backed filter values can be created and selected. */
61
+ @Input({ alias: 'allowParameters', transform: booleanAttribute })
62
+ allowParameters?: boolean;
63
+
64
+ /** Consumer-owned parameter definitions available for selection. */
65
+ @Input({ alias: 'parameters' })
66
+ parameters?: FilterParameter[];
67
+
59
68
  /** The language for UI labels. Supported values: 'en', 'nl', 'fr', 'de', 'es' */
60
69
  @Input({ alias: 'language' })
61
70
  language?: string;
@@ -115,6 +124,12 @@ export class LuzmoFilterItem implements OnChanges {
115
124
  case 'filter':
116
125
  this.setHostProperty('filter', changes['filter'].currentValue);
117
126
  break;
127
+ case 'allowParameters':
128
+ this.setHostProperty('allowParameters', changes['allowParameters'].currentValue);
129
+ break;
130
+ case 'parameters':
131
+ this.setHostProperty('parameters', changes['parameters'].currentValue);
132
+ break;
118
133
  case 'language':
119
134
  this.setHostProperty('language', changes['language'].currentValue);
120
135
  break;
@@ -1,6 +1,9 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
2
2
  import '@luzmo/analytics-components-kit/filter-parameter-picker';
3
- import type { LuzmoFilterParameterPicker as LuzmoFilterParameterPickerHostElement } from '@luzmo/analytics-components-kit/filter-parameter-picker';
3
+ import type { LuzmoFilterParameterPicker as LuzmoFilterParameterPickerHostElement, FilterParameterPickerEventDetail } from '@luzmo/analytics-components-kit/filter-parameter-picker';
4
+ export type { FilterParameterPickerEventDetail } from '@luzmo/analytics-components-kit/filter-parameter-picker';
5
+ import type { FilterParameterType } from '@luzmo/analytics-components-kit/filters';
6
+ import type { ItemFilterParameterDefinition } from '@luzmo/dashboard-contents-types';
4
7
 
5
8
  @Component({
6
9
  selector: 'luzmo-filter-parameter-picker',
@@ -24,22 +27,34 @@ export class LuzmoFilterParameterPicker implements OnChanges {
24
27
  return this.host;
25
28
  }
26
29
 
27
- /** The language of the settings interface */
30
+ /** Parameter definitions available for selection. */
31
+ @Input({ alias: 'parameters' })
32
+ parameters?: ItemFilterParameterDefinition[];
33
+
34
+ /** Parameter types compatible with the active field and expression. */
35
+ @Input({ alias: 'allowedTypes' })
36
+ allowedTypes?: FilterParameterType[];
37
+
38
+ /** The parameter currently attached to the filter. */
39
+ @Input({ alias: 'selectedParameter' })
40
+ selectedParameter?: ItemFilterParameterDefinition;
41
+
42
+ /** The current literal filter value used as the default for a new parameter. */
43
+ @Input({ alias: 'currentValue' })
44
+ currentValue?: unknown;
45
+
46
+ /** Whether parameter selection is disabled. */
47
+ @Input({ alias: 'disabled', transform: booleanAttribute })
48
+ disabled?: boolean;
49
+
50
+ /** The language for UI labels. Supported values: 'en', 'nl', 'fr', 'de', 'es' */
28
51
  @Input({ alias: 'language' })
29
52
  language?: string;
30
53
 
31
- /** The language to use for locale-aware formatting and labels */
32
- @Input({ alias: 'contentLanguage' })
33
- contentLanguage?: string;
34
-
35
54
  /** The size of the element */
36
55
  @Input({ alias: 'size' })
37
56
  size?: 's' | 'm' | 'l' | 'xl';
38
57
 
39
- /** Disable this control. It will not receive focus or events */
40
- @Input({ alias: 'disabled', transform: booleanAttribute })
41
- disabled?: boolean;
42
-
43
58
  /** When this control is rendered, focus it automatically */
44
59
  @Input({ alias: 'autofocus', transform: booleanAttribute })
45
60
  autofocus?: boolean;
@@ -48,6 +63,15 @@ export class LuzmoFilterParameterPicker implements OnChanges {
48
63
  @Input({ alias: 'tabIndex' })
49
64
  tabIndex?: number;
50
65
 
66
+ /** Fired when a parameter is selected. */
67
+ readonly luzmoParameterSelected = output<CustomEvent<FilterParameterPickerEventDetail>>({ alias: 'luzmoParameterSelected' });
68
+
69
+ /** Fired when a parameter is created. */
70
+ readonly luzmoParameterCreated = output<CustomEvent<FilterParameterPickerEventDetail>>({ alias: 'luzmoParameterCreated' });
71
+
72
+ /** Fired when a parameter is detached from the filter. */
73
+ readonly luzmoParameterRemoved = output<CustomEvent<FilterParameterPickerEventDetail>>({ alias: 'luzmoParameterRemoved' });
74
+
51
75
  constructor() {
52
76
  this.bindEvents();
53
77
  this.destroyRef.onDestroy(() => {
@@ -60,18 +84,27 @@ export class LuzmoFilterParameterPicker implements OnChanges {
60
84
  ngOnChanges(changes: SimpleChanges): void {
61
85
  for (const key of Object.keys(changes)) {
62
86
  switch (key) {
63
- case 'language':
64
- this.setHostProperty('language', changes['language'].currentValue);
87
+ case 'parameters':
88
+ this.setHostProperty('parameters', changes['parameters'].currentValue);
65
89
  break;
66
- case 'contentLanguage':
67
- this.setHostProperty('contentLanguage', changes['contentLanguage'].currentValue);
90
+ case 'allowedTypes':
91
+ this.setHostProperty('allowedTypes', changes['allowedTypes'].currentValue);
68
92
  break;
69
- case 'size':
70
- this.setHostProperty('size', changes['size'].currentValue);
93
+ case 'selectedParameter':
94
+ this.setHostProperty('selectedParameter', changes['selectedParameter'].currentValue);
95
+ break;
96
+ case 'currentValue':
97
+ this.setHostProperty('currentValue', changes['currentValue'].currentValue);
71
98
  break;
72
99
  case 'disabled':
73
100
  this.setHostProperty('disabled', changes['disabled'].currentValue);
74
101
  break;
102
+ case 'language':
103
+ this.setHostProperty('language', changes['language'].currentValue);
104
+ break;
105
+ case 'size':
106
+ this.setHostProperty('size', changes['size'].currentValue);
107
+ break;
75
108
  case 'autofocus':
76
109
  this.setHostProperty('autofocus', changes['autofocus'].currentValue);
77
110
  break;
@@ -95,7 +128,26 @@ export class LuzmoFilterParameterPicker implements OnChanges {
95
128
  }
96
129
 
97
130
  private bindEvents(): void {
98
- // No custom events for this wrapper.
131
+ this.listenerCleanup.push(
132
+ this.renderer.listen(this.host, 'luzmo-parameter-selected', (event: Event) => {
133
+ const typed = event as CustomEvent<FilterParameterPickerEventDetail>;
134
+ this.luzmoParameterSelected.emit(typed);
135
+ })
136
+ );
137
+
138
+ this.listenerCleanup.push(
139
+ this.renderer.listen(this.host, 'luzmo-parameter-created', (event: Event) => {
140
+ const typed = event as CustomEvent<FilterParameterPickerEventDetail>;
141
+ this.luzmoParameterCreated.emit(typed);
142
+ })
143
+ );
144
+
145
+ this.listenerCleanup.push(
146
+ this.renderer.listen(this.host, 'luzmo-parameter-removed', (event: Event) => {
147
+ const typed = event as CustomEvent<FilterParameterPickerEventDetail>;
148
+ this.luzmoParameterRemoved.emit(typed);
149
+ })
150
+ );
99
151
  }
100
152
  }
101
153
 
@@ -1,8 +1,7 @@
1
1
  import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
2
2
  import '@luzmo/analytics-components-kit/filters';
3
- import type { LuzmoFilters as LuzmoFiltersHostElement, FiltersChangedEventDetail } from '@luzmo/analytics-components-kit/filters';
4
- export type { FilterCondition, FilterGroup, FiltersChangedEventDetail } from '@luzmo/analytics-components-kit/filters';
5
- import type { ItemFilterGroup } from '@luzmo/dashboard-contents-types';
3
+ import type { LuzmoFilters as LuzmoFiltersHostElement, FilterParameter, FiltersChangedEventDetail, FiltersFormat, FiltersInput } from '@luzmo/analytics-components-kit/filters';
4
+ export type { CleanFilter, CleanFilterClauseGroup, CleanFilterGroup, CleanRetrievedFilterGroup, DashboardFilterOutput, DetectedFiltersFormat, FilterClause, FilterCondition, FilterGroup, FilterParameter, FilterParameterEventDetail, FilterParameterType, FiltersChangedEventDetail, FiltersFormat, FiltersInput, FiltersOutput, ItemFilterOutput, TransformFiltersOptions } from '@luzmo/analytics-components-kit/filters';
6
5
 
7
6
  @Component({
8
7
  selector: 'luzmo-filters',
@@ -54,9 +53,21 @@ export class LuzmoFilters implements OnChanges {
54
53
  @Input({ alias: 'datasetIds' })
55
54
  datasetIds?: string[];
56
55
 
57
- /** The filter groups to display */
56
+ /** The filter groups to display. Accepts both halves of the public `ItemFilterOutput` / `DashboardFilterOutput` unions: canonical `ItemFilterGroup[]` and clean clause groups with flattened leaves. Nested `and` / `or` groups are preserved either way. */
58
57
  @Input({ alias: 'filters' })
59
- filters?: ItemFilterGroup[];
58
+ filters?: FiltersInput;
59
+
60
+ /** Output format for the `luzmo-filters-changed` event. `canonical` emits `ItemFilterGroup[]`; `clean` emits the clean clause groups that aligned hosts consume. A tree that cannot be represented cleanly falls back to canonical output, and the event says which format it carries. */
61
+ @Input({ alias: 'format' })
62
+ format?: FiltersFormat;
63
+
64
+ /** Whether parameter-backed filter values can be created and selected. */
65
+ @Input({ alias: 'allowParameters', transform: booleanAttribute })
66
+ allowParameters?: boolean;
67
+
68
+ /** Consumer-owned parameter definitions available to filter rows. */
69
+ @Input({ alias: 'parameters' })
70
+ parameters?: FilterParameter[];
60
71
 
61
72
  /** Debounce time in milliseconds for the filters-changed event */
62
73
  @Input({ alias: 'debounce' })
@@ -82,9 +93,15 @@ export class LuzmoFilters implements OnChanges {
82
93
  @Input({ alias: 'tabIndex' })
83
94
  tabIndex?: number;
84
95
 
85
- /** Announces that the filters have changed */
96
+ /** Announces that the filters have changed, carrying the emitted groups and the format they are in */
86
97
  readonly luzmoFiltersChanged = output<CustomEvent<FiltersChangedEventDetail>>({ alias: 'luzmoFiltersChanged' });
87
98
 
99
+ /** Announces that a parameter was created and added to `parameters`. */
100
+ readonly luzmoParameterCreated = output<CustomEvent<{ parameter: FilterParameter }>>({ alias: 'luzmoParameterCreated' });
101
+
102
+ /** Announces that a parameter was detached from a filter. */
103
+ readonly luzmoParameterRemoved = output<CustomEvent<{ parameter: FilterParameter }>>({ alias: 'luzmoParameterRemoved' });
104
+
88
105
  constructor() {
89
106
  this.bindEvents();
90
107
  this.destroyRef.onDestroy(() => {
@@ -121,6 +138,15 @@ export class LuzmoFilters implements OnChanges {
121
138
  case 'filters':
122
139
  this.setHostProperty('filters', changes['filters'].currentValue);
123
140
  break;
141
+ case 'format':
142
+ this.setHostProperty('format', changes['format'].currentValue);
143
+ break;
144
+ case 'allowParameters':
145
+ this.setHostProperty('allowParameters', changes['allowParameters'].currentValue);
146
+ break;
147
+ case 'parameters':
148
+ this.setHostProperty('parameters', changes['parameters'].currentValue);
149
+ break;
124
150
  case 'debounce':
125
151
  this.setHostProperty('debounce', changes['debounce'].currentValue);
126
152
  break;
@@ -162,6 +188,20 @@ export class LuzmoFilters implements OnChanges {
162
188
  this.luzmoFiltersChanged.emit(typed);
163
189
  })
164
190
  );
191
+
192
+ this.listenerCleanup.push(
193
+ this.renderer.listen(this.host, 'luzmo-parameter-created', (event: Event) => {
194
+ const typed = event as CustomEvent<{ parameter: FilterParameter }>;
195
+ this.luzmoParameterCreated.emit(typed);
196
+ })
197
+ );
198
+
199
+ this.listenerCleanup.push(
200
+ this.renderer.listen(this.host, 'luzmo-parameter-removed', (event: Event) => {
201
+ const typed = event as CustomEvent<{ parameter: FilterParameter }>;
202
+ this.luzmoParameterRemoved.emit(typed);
203
+ })
204
+ );
165
205
  }
166
206
  }
167
207
 
@@ -19,6 +19,8 @@ export declare class LuzmoDataFieldsSelect implements OnChanges {
19
19
  label?: string;
20
20
  /** Where to show icons */
21
21
  icons?: 'none' | 'menu-only' | 'all';
22
+ /** Whether datetime and hierarchy columns expand into selectable sublevels. Turn this off in contexts that address the column as a whole, so the column stays selectable by its own id. */
23
+ levels?: 'on' | 'off';
22
24
  /** Allow no selection. If true, the picker will not show a value when no item is selected. Else if no value is provided it will pick the first item. */
23
25
  allowEmpty?: boolean;
24
26
  /** The placeholder text for the picker is no value selected. If allowEmpty is true, this will be used as the label. */
@@ -66,7 +68,7 @@ export declare class LuzmoDataFieldsSelect implements OnChanges {
66
68
  private setHostProperty;
67
69
  private bindEvents;
68
70
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoDataFieldsSelect, never>;
69
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoDataFieldsSelect, "luzmo-data-fields-select", ["luzmoDataFieldsSelect"], { "contentLanguage": { "alias": "contentLanguage"; "required": false; }; "label": { "alias": "label"; "required": false; }; "icons": { "alias": "icons"; "required": false; }; "allowEmpty": { "alias": "allowEmpty"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "selects": { "alias": "selects"; "required": false; }; "value": { "alias": "value"; "required": false; }; "retrieving": { "alias": "retrieving"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "search": { "alias": "search"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "datasetsDataFields": { "alias": "datasetsDataFields"; "required": false; }; "language": { "alias": "language"; "required": false; }; "size": { "alias": "size"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "luzmoDataFieldsSelected": "luzmoDataFieldsSelected"; }, never, ["*"], true, never>;
71
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoDataFieldsSelect, "luzmo-data-fields-select", ["luzmoDataFieldsSelect"], { "contentLanguage": { "alias": "contentLanguage"; "required": false; }; "label": { "alias": "label"; "required": false; }; "icons": { "alias": "icons"; "required": false; }; "levels": { "alias": "levels"; "required": false; }; "allowEmpty": { "alias": "allowEmpty"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "selects": { "alias": "selects"; "required": false; }; "value": { "alias": "value"; "required": false; }; "retrieving": { "alias": "retrieving"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "pending": { "alias": "pending"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "search": { "alias": "search"; "required": false; }; "placement": { "alias": "placement"; "required": false; }; "datasetsDataFields": { "alias": "datasetsDataFields"; "required": false; }; "language": { "alias": "language"; "required": false; }; "size": { "alias": "size"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "luzmoDataFieldsSelected": "luzmoDataFieldsSelected"; }, never, ["*"], true, never>;
70
72
  static ngAcceptInputType_allowEmpty: unknown;
71
73
  static ngAcceptInputType_retrieving: unknown;
72
74
  static ngAcceptInputType_invalid: unknown;
@@ -21,6 +21,8 @@ export class LuzmoDataFieldsSelect {
21
21
  label;
22
22
  /** Where to show icons */
23
23
  icons;
24
+ /** Whether datetime and hierarchy columns expand into selectable sublevels. Turn this off in contexts that address the column as a whole, so the column stays selectable by its own id. */
25
+ levels;
24
26
  /** Allow no selection. If true, the picker will not show a value when no item is selected. Else if no value is provided it will pick the first item. */
25
27
  allowEmpty;
26
28
  /** The placeholder text for the picker is no value selected. If allowEmpty is true, this will be used as the label. */
@@ -75,6 +77,9 @@ export class LuzmoDataFieldsSelect {
75
77
  case 'icons':
76
78
  this.setHostProperty('icons', changes['icons'].currentValue);
77
79
  break;
80
+ case 'levels':
81
+ this.setHostProperty('levels', changes['levels'].currentValue);
82
+ break;
78
83
  case 'allowEmpty':
79
84
  this.setHostProperty('allowEmpty', changes['allowEmpty'].currentValue);
80
85
  break;
@@ -144,7 +149,7 @@ export class LuzmoDataFieldsSelect {
144
149
  }));
145
150
  }
146
151
  static ɵfac = function LuzmoDataFieldsSelect_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoDataFieldsSelect)(); };
147
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoDataFieldsSelect, selectors: [["luzmo-data-fields-select"]], inputs: { contentLanguage: "contentLanguage", label: "label", icons: "icons", allowEmpty: [2, "allowEmpty", "allowEmpty", booleanAttribute], placeholder: "placeholder", selects: "selects", value: "value", retrieving: [2, "retrieving", "retrieving", booleanAttribute], invalid: [2, "invalid", "invalid", booleanAttribute], clearable: [2, "clearable", "clearable", booleanAttribute], pending: [2, "pending", "pending", booleanAttribute], disabled: [2, "disabled", "disabled", booleanAttribute], search: "search", placement: "placement", datasetsDataFields: "datasetsDataFields", language: "language", size: "size", autofocus: [2, "autofocus", "autofocus", booleanAttribute], tabIndex: "tabIndex" }, outputs: { luzmoDataFieldsSelected: "luzmoDataFieldsSelected" }, exportAs: ["luzmoDataFieldsSelect"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoDataFieldsSelect_Template(rf, ctx) { if (rf & 1) {
152
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoDataFieldsSelect, selectors: [["luzmo-data-fields-select"]], inputs: { contentLanguage: "contentLanguage", label: "label", icons: "icons", levels: "levels", allowEmpty: [2, "allowEmpty", "allowEmpty", booleanAttribute], placeholder: "placeholder", selects: "selects", value: "value", retrieving: [2, "retrieving", "retrieving", booleanAttribute], invalid: [2, "invalid", "invalid", booleanAttribute], clearable: [2, "clearable", "clearable", booleanAttribute], pending: [2, "pending", "pending", booleanAttribute], disabled: [2, "disabled", "disabled", booleanAttribute], search: "search", placement: "placement", datasetsDataFields: "datasetsDataFields", language: "language", size: "size", autofocus: [2, "autofocus", "autofocus", booleanAttribute], tabIndex: "tabIndex" }, outputs: { luzmoDataFieldsSelected: "luzmoDataFieldsSelected" }, exportAs: ["luzmoDataFieldsSelect"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoDataFieldsSelect_Template(rf, ctx) { if (rf & 1) {
148
153
  i0.ɵɵprojectionDef();
149
154
  i0.ɵɵprojection(0);
150
155
  } }, encapsulation: 2 });
@@ -167,6 +172,9 @@ export class LuzmoDataFieldsSelect {
167
172
  }], icons: [{
168
173
  type: Input,
169
174
  args: [{ alias: 'icons' }]
175
+ }], levels: [{
176
+ type: Input,
177
+ args: [{ alias: 'levels' }]
170
178
  }], allowEmpty: [{
171
179
  type: Input,
172
180
  args: [{ alias: 'allowEmpty', transform: booleanAttribute }]
@@ -1,6 +1,7 @@
1
1
  import { OnChanges, SimpleChanges } from '@angular/core';
2
2
  import '@luzmo/analytics-components-kit/filter-item';
3
3
  import type { LuzmoFilterItem as LuzmoFilterItemHostElement } from '@luzmo/analytics-components-kit/filter-item';
4
+ import type { FilterParameter } from '@luzmo/analytics-components-kit/filters';
4
5
  import * as i0 from "@angular/core";
5
6
  export declare class LuzmoFilterItem implements OnChanges {
6
7
  private readonly elementRef;
@@ -26,6 +27,10 @@ export declare class LuzmoFilterItem implements OnChanges {
26
27
  datasetIds?: string[];
27
28
  /** The filter to display */
28
29
  filter?: any;
30
+ /** Whether parameter-backed filter values can be created and selected. */
31
+ allowParameters?: boolean;
32
+ /** Consumer-owned parameter definitions available for selection. */
33
+ parameters?: FilterParameter[];
29
34
  /** The language for UI labels. Supported values: 'en', 'nl', 'fr', 'de', 'es' */
30
35
  language?: string;
31
36
  /** The size of the element */
@@ -49,7 +54,8 @@ export declare class LuzmoFilterItem implements OnChanges {
49
54
  private setHostProperty;
50
55
  private bindEvents;
51
56
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoFilterItem, never>;
52
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoFilterItem, "luzmo-filter-item", ["luzmoFilterItem"], { "apiUrl": { "alias": "apiUrl"; "required": false; }; "authKey": { "alias": "authKey"; "required": false; }; "authToken": { "alias": "authToken"; "required": false; }; "cacheTime": { "alias": "cacheTime"; "required": false; }; "contentLanguage": { "alias": "contentLanguage"; "required": false; }; "timeZone": { "alias": "timeZone"; "required": false; }; "datasetIds": { "alias": "datasetIds"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "language": { "alias": "language"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "luzmoFilterChanged": "luzmoFilterChanged"; }, never, ["*"], true, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoFilterItem, "luzmo-filter-item", ["luzmoFilterItem"], { "apiUrl": { "alias": "apiUrl"; "required": false; }; "authKey": { "alias": "authKey"; "required": false; }; "authToken": { "alias": "authToken"; "required": false; }; "cacheTime": { "alias": "cacheTime"; "required": false; }; "contentLanguage": { "alias": "contentLanguage"; "required": false; }; "timeZone": { "alias": "timeZone"; "required": false; }; "datasetIds": { "alias": "datasetIds"; "required": false; }; "filter": { "alias": "filter"; "required": false; }; "allowParameters": { "alias": "allowParameters"; "required": false; }; "parameters": { "alias": "parameters"; "required": false; }; "language": { "alias": "language"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "luzmoFilterChanged": "luzmoFilterChanged"; }, never, ["*"], true, never>;
58
+ static ngAcceptInputType_allowParameters: unknown;
53
59
  static ngAcceptInputType_disabled: unknown;
54
60
  static ngAcceptInputType_autofocus: unknown;
55
61
  }
@@ -31,6 +31,10 @@ export class LuzmoFilterItem {
31
31
  datasetIds;
32
32
  /** The filter to display */
33
33
  filter;
34
+ /** Whether parameter-backed filter values can be created and selected. */
35
+ allowParameters;
36
+ /** Consumer-owned parameter definitions available for selection. */
37
+ parameters;
34
38
  /** The language for UI labels. Supported values: 'en', 'nl', 'fr', 'de', 'es' */
35
39
  language;
36
40
  /** The size of the element */
@@ -78,6 +82,12 @@ export class LuzmoFilterItem {
78
82
  case 'filter':
79
83
  this.setHostProperty('filter', changes['filter'].currentValue);
80
84
  break;
85
+ case 'allowParameters':
86
+ this.setHostProperty('allowParameters', changes['allowParameters'].currentValue);
87
+ break;
88
+ case 'parameters':
89
+ this.setHostProperty('parameters', changes['parameters'].currentValue);
90
+ break;
81
91
  case 'language':
82
92
  this.setHostProperty('language', changes['language'].currentValue);
83
93
  break;
@@ -114,7 +124,7 @@ export class LuzmoFilterItem {
114
124
  }));
115
125
  }
116
126
  static ɵfac = function LuzmoFilterItem_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || LuzmoFilterItem)(); };
117
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoFilterItem, selectors: [["luzmo-filter-item"]], inputs: { apiUrl: "apiUrl", authKey: "authKey", authToken: "authToken", cacheTime: "cacheTime", contentLanguage: "contentLanguage", timeZone: "timeZone", datasetIds: "datasetIds", filter: "filter", language: "language", size: "size", disabled: [2, "disabled", "disabled", booleanAttribute], autofocus: [2, "autofocus", "autofocus", booleanAttribute], tabIndex: "tabIndex" }, outputs: { luzmoFilterChanged: "luzmoFilterChanged" }, exportAs: ["luzmoFilterItem"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoFilterItem_Template(rf, ctx) { if (rf & 1) {
127
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: LuzmoFilterItem, selectors: [["luzmo-filter-item"]], inputs: { apiUrl: "apiUrl", authKey: "authKey", authToken: "authToken", cacheTime: "cacheTime", contentLanguage: "contentLanguage", timeZone: "timeZone", datasetIds: "datasetIds", filter: "filter", allowParameters: [2, "allowParameters", "allowParameters", booleanAttribute], parameters: "parameters", language: "language", size: "size", disabled: [2, "disabled", "disabled", booleanAttribute], autofocus: [2, "autofocus", "autofocus", booleanAttribute], tabIndex: "tabIndex" }, outputs: { luzmoFilterChanged: "luzmoFilterChanged" }, exportAs: ["luzmoFilterItem"], features: [i0.ɵɵNgOnChangesFeature], ngContentSelectors: _c0, decls: 1, vars: 0, template: function LuzmoFilterItem_Template(rf, ctx) { if (rf & 1) {
118
128
  i0.ɵɵprojectionDef();
119
129
  i0.ɵɵprojection(0);
120
130
  } }, encapsulation: 2 });
@@ -152,6 +162,12 @@ export class LuzmoFilterItem {
152
162
  }], filter: [{
153
163
  type: Input,
154
164
  args: [{ alias: 'filter' }]
165
+ }], allowParameters: [{
166
+ type: Input,
167
+ args: [{ alias: 'allowParameters', transform: booleanAttribute }]
168
+ }], parameters: [{
169
+ type: Input,
170
+ args: [{ alias: 'parameters' }]
155
171
  }], language: [{
156
172
  type: Input,
157
173
  args: [{ alias: 'language' }]
@@ -168,4 +184,4 @@ export class LuzmoFilterItem {
168
184
  type: Input,
169
185
  args: [{ alias: 'tabIndex' }]
170
186
  }], luzmoFilterChanged: [{ type: i0.Output, args: ["luzmoFilterChanged"] }] }); })();
171
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoFilterItem, { className: "LuzmoFilterItem", filePath: "components/filter-item.ts", lineNumber: 15 }); })();
187
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(LuzmoFilterItem, { className: "LuzmoFilterItem", filePath: "components/filter-item.ts", lineNumber: 16 }); })();
@@ -1,7 +1,10 @@
1
1
  import { OnChanges, SimpleChanges } from '@angular/core';
2
2
  import '@luzmo/analytics-components-kit/filter-parameter-picker';
3
- import type { LuzmoFilterParameterPicker as LuzmoFilterParameterPickerHostElement } from '@luzmo/analytics-components-kit/filter-parameter-picker';
3
+ import type { LuzmoFilterParameterPicker as LuzmoFilterParameterPickerHostElement, FilterParameterPickerEventDetail } from '@luzmo/analytics-components-kit/filter-parameter-picker';
4
+ import type { FilterParameterType } from '@luzmo/analytics-components-kit/filters';
5
+ import type { ItemFilterParameterDefinition } from '@luzmo/dashboard-contents-types';
4
6
  import * as i0 from "@angular/core";
7
+ export type { FilterParameterPickerEventDetail } from '@luzmo/analytics-components-kit/filter-parameter-picker';
5
8
  export declare class LuzmoFilterParameterPicker implements OnChanges {
6
9
  private readonly elementRef;
7
10
  private readonly renderer;
@@ -10,18 +13,30 @@ export declare class LuzmoFilterParameterPicker implements OnChanges {
10
13
  private readonly listenerCleanup;
11
14
  /** The underlying custom element instance. Use to call imperative methods. */
12
15
  get nativeElement(): LuzmoFilterParameterPickerHostElement;
13
- /** The language of the settings interface */
16
+ /** Parameter definitions available for selection. */
17
+ parameters?: ItemFilterParameterDefinition[];
18
+ /** Parameter types compatible with the active field and expression. */
19
+ allowedTypes?: FilterParameterType[];
20
+ /** The parameter currently attached to the filter. */
21
+ selectedParameter?: ItemFilterParameterDefinition;
22
+ /** The current literal filter value used as the default for a new parameter. */
23
+ currentValue?: unknown;
24
+ /** Whether parameter selection is disabled. */
25
+ disabled?: boolean;
26
+ /** The language for UI labels. Supported values: 'en', 'nl', 'fr', 'de', 'es' */
14
27
  language?: string;
15
- /** The language to use for locale-aware formatting and labels */
16
- contentLanguage?: string;
17
28
  /** The size of the element */
18
29
  size?: 's' | 'm' | 'l' | 'xl';
19
- /** Disable this control. It will not receive focus or events */
20
- disabled?: boolean;
21
30
  /** When this control is rendered, focus it automatically */
22
31
  autofocus?: boolean;
23
32
  /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
24
33
  tabIndex?: number;
34
+ /** Fired when a parameter is selected. */
35
+ readonly luzmoParameterSelected: import("@angular/core").OutputEmitterRef<CustomEvent<FilterParameterPickerEventDetail>>;
36
+ /** Fired when a parameter is created. */
37
+ readonly luzmoParameterCreated: import("@angular/core").OutputEmitterRef<CustomEvent<FilterParameterPickerEventDetail>>;
38
+ /** Fired when a parameter is detached from the filter. */
39
+ readonly luzmoParameterRemoved: import("@angular/core").OutputEmitterRef<CustomEvent<FilterParameterPickerEventDetail>>;
25
40
  constructor();
26
41
  ngOnChanges(changes: SimpleChanges): void;
27
42
  /**
@@ -33,7 +48,7 @@ export declare class LuzmoFilterParameterPicker implements OnChanges {
33
48
  private setHostProperty;
34
49
  private bindEvents;
35
50
  static ɵfac: i0.ɵɵFactoryDeclaration<LuzmoFilterParameterPicker, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoFilterParameterPicker, "luzmo-filter-parameter-picker", ["luzmoFilterParameterPicker"], { "language": { "alias": "language"; "required": false; }; "contentLanguage": { "alias": "contentLanguage"; "required": false; }; "size": { "alias": "size"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, {}, never, ["*"], true, never>;
51
+ static ɵcmp: i0.ɵɵComponentDeclaration<LuzmoFilterParameterPicker, "luzmo-filter-parameter-picker", ["luzmoFilterParameterPicker"], { "parameters": { "alias": "parameters"; "required": false; }; "allowedTypes": { "alias": "allowedTypes"; "required": false; }; "selectedParameter": { "alias": "selectedParameter"; "required": false; }; "currentValue": { "alias": "currentValue"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "language": { "alias": "language"; "required": false; }; "size": { "alias": "size"; "required": false; }; "autofocus": { "alias": "autofocus"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; }, { "luzmoParameterSelected": "luzmoParameterSelected"; "luzmoParameterCreated": "luzmoParameterCreated"; "luzmoParameterRemoved": "luzmoParameterRemoved"; }, never, ["*"], true, never>;
37
52
  static ngAcceptInputType_disabled: unknown;
38
53
  static ngAcceptInputType_autofocus: unknown;
39
54
  }