@luzmo/analytics-components-kit 1.0.8-beta.6 → 1.0.8-beta.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 (314) hide show
  1. package/components/index.cjs +1 -1
  2. package/components/index.js +1 -1
  3. package/components/viz-item-menu/index.cjs +1 -1
  4. package/components/viz-item-menu/index.js +1 -1
  5. package/components/viz-item-menu/viz-item-menu.d.ts +3 -0
  6. package/components/{viz-item-menu-Ht6bklNL.js → viz-item-menu-B7yRaSAU.js} +1 -1
  7. package/components/{viz-item-menu-XHh4qhtn.cjs → viz-item-menu-hLdU-02Q.cjs} +1 -1
  8. package/custom-elements.json +14 -0
  9. package/package.json +1 -1
  10. package/react/package.json +2 -2
  11. package/angular/README.md +0 -40
  12. package/angular/components/ai-chat-empty-state.ts +0 -98
  13. package/angular/components/ai-chat.ts +0 -440
  14. package/angular/components/ai-interaction-textarea.ts +0 -283
  15. package/angular/components/data-field-level.ts +0 -130
  16. package/angular/components/data-field-panel.ts +0 -256
  17. package/angular/components/data-field.ts +0 -130
  18. package/angular/components/data-fields-select.ts +0 -212
  19. package/angular/components/dataset-icon.ts +0 -83
  20. package/angular/components/dataset-selector-list.ts +0 -147
  21. package/angular/components/dataset-selector-row.ts +0 -198
  22. package/angular/components/display-settings-binning.ts +0 -92
  23. package/angular/components/display-settings-datetime.ts +0 -100
  24. package/angular/components/display-settings-grand-totals.ts +0 -92
  25. package/angular/components/display-settings-numeric.ts +0 -113
  26. package/angular/components/display-settings-period-over-period.ts +0 -107
  27. package/angular/components/display-settings.ts +0 -227
  28. package/angular/components/filter-expression-picker.ts +0 -168
  29. package/angular/components/filter-item.ts +0 -175
  30. package/angular/components/filter-parameter-picker.ts +0 -155
  31. package/angular/components/filter-value-picker-datetime.ts +0 -125
  32. package/angular/components/filter-value-picker-hierarchy.ts +0 -146
  33. package/angular/components/filter-value-picker-numeric.ts +0 -146
  34. package/angular/components/filter-value-picker.ts +0 -160
  35. package/angular/components/filters.ts +0 -209
  36. package/angular/components/formula-editor.ts +0 -229
  37. package/angular/components/formula-field.ts +0 -198
  38. package/angular/components/formula.ts +0 -170
  39. package/angular/components/interactive-viz-item.ts +0 -186
  40. package/angular/components/item-grid-item-actions-menu.ts +0 -113
  41. package/angular/components/item-grid.ts +0 -242
  42. package/angular/components/item-option-action-button-group.ts +0 -105
  43. package/angular/components/item-option-color-palette-picker.ts +0 -126
  44. package/angular/components/item-option-color-picker.ts +0 -134
  45. package/angular/components/item-option-color-range.ts +0 -168
  46. package/angular/components/item-option-guidelines.ts +0 -84
  47. package/angular/components/item-option-multi-language-field.ts +0 -133
  48. package/angular/components/item-option-number-field.ts +0 -161
  49. package/angular/components/item-option-panel.ts +0 -149
  50. package/angular/components/item-option-picker.ts +0 -120
  51. package/angular/components/item-option-position-picker.ts +0 -98
  52. package/angular/components/item-option-positions-number-field.ts +0 -140
  53. package/angular/components/item-option-radio-button-group.ts +0 -119
  54. package/angular/components/item-option-slider.ts +0 -126
  55. package/angular/components/item-option-switch.ts +0 -98
  56. package/angular/components/item-option-text-field.ts +0 -112
  57. package/angular/components/item-option.ts +0 -163
  58. package/angular/components/item-slot-drop-panel.ts +0 -236
  59. package/angular/components/item-slot-drop.ts +0 -231
  60. package/angular/components/item-slot-picker-panel.ts +0 -299
  61. package/angular/components/item-slot-picker.ts +0 -241
  62. package/angular/components/slot-menu-list.ts +0 -121
  63. package/angular/components/slot-menu.ts +0 -304
  64. package/angular/components/viz-item-menu.ts +0 -118
  65. package/angular/esm/components/ai-chat-empty-state.d.ts +0 -39
  66. package/angular/esm/components/ai-chat-empty-state.js +0 -99
  67. package/angular/esm/components/ai-chat.d.ts +0 -147
  68. package/angular/esm/components/ai-chat.js +0 -455
  69. package/angular/esm/components/ai-interaction-textarea.d.ts +0 -106
  70. package/angular/esm/components/ai-interaction-textarea.js +0 -305
  71. package/angular/esm/components/data-field-level.d.ts +0 -50
  72. package/angular/esm/components/data-field-level.js +0 -129
  73. package/angular/esm/components/data-field-panel.d.ts +0 -86
  74. package/angular/esm/components/data-field-panel.js +0 -268
  75. package/angular/esm/components/data-field.d.ts +0 -50
  76. package/angular/esm/components/data-field.js +0 -129
  77. package/angular/esm/components/data-fields-select.d.ts +0 -81
  78. package/angular/esm/components/data-fields-select.js +0 -227
  79. package/angular/esm/components/dataset-icon.d.ts +0 -34
  80. package/angular/esm/components/dataset-icon.js +0 -86
  81. package/angular/esm/components/dataset-selector-list.d.ts +0 -56
  82. package/angular/esm/components/dataset-selector-list.js +0 -155
  83. package/angular/esm/components/dataset-selector-row.d.ts +0 -70
  84. package/angular/esm/components/dataset-selector-row.js +0 -197
  85. package/angular/esm/components/display-settings-binning.d.ts +0 -37
  86. package/angular/esm/components/display-settings-binning.js +0 -91
  87. package/angular/esm/components/display-settings-datetime.d.ts +0 -40
  88. package/angular/esm/components/display-settings-datetime.js +0 -99
  89. package/angular/esm/components/display-settings-grand-totals.d.ts +0 -37
  90. package/angular/esm/components/display-settings-grand-totals.js +0 -91
  91. package/angular/esm/components/display-settings-numeric.d.ts +0 -45
  92. package/angular/esm/components/display-settings-numeric.js +0 -115
  93. package/angular/esm/components/display-settings-period-over-period.d.ts +0 -44
  94. package/angular/esm/components/display-settings-period-over-period.js +0 -107
  95. package/angular/esm/components/display-settings.d.ts +0 -83
  96. package/angular/esm/components/display-settings.js +0 -231
  97. package/angular/esm/components/filter-expression-picker.d.ts +0 -64
  98. package/angular/esm/components/filter-expression-picker.js +0 -179
  99. package/angular/esm/components/filter-item.d.ts +0 -63
  100. package/angular/esm/components/filter-item.js +0 -187
  101. package/angular/esm/components/filter-parameter-picker.d.ts +0 -56
  102. package/angular/esm/components/filter-parameter-picker.js +0 -151
  103. package/angular/esm/components/filter-value-picker-datetime.d.ts +0 -47
  104. package/angular/esm/components/filter-value-picker-datetime.js +0 -131
  105. package/angular/esm/components/filter-value-picker-hierarchy.d.ts +0 -53
  106. package/angular/esm/components/filter-value-picker-hierarchy.js +0 -155
  107. package/angular/esm/components/filter-value-picker-numeric.d.ts +0 -53
  108. package/angular/esm/components/filter-value-picker-numeric.js +0 -155
  109. package/angular/esm/components/filter-value-picker.d.ts +0 -57
  110. package/angular/esm/components/filter-value-picker.js +0 -171
  111. package/angular/esm/components/filters.d.ts +0 -75
  112. package/angular/esm/components/filters.js +0 -215
  113. package/angular/esm/components/formula-editor.d.ts +0 -78
  114. package/angular/esm/components/formula-editor.js +0 -236
  115. package/angular/esm/components/formula-field.d.ts +0 -70
  116. package/angular/esm/components/formula-field.js +0 -209
  117. package/angular/esm/components/formula.d.ts +0 -60
  118. package/angular/esm/components/formula.js +0 -177
  119. package/angular/esm/components/interactive-viz-item.d.ts +0 -63
  120. package/angular/esm/components/interactive-viz-item.js +0 -188
  121. package/angular/esm/components/item-grid-item-actions-menu.d.ts +0 -45
  122. package/angular/esm/components/item-grid-item-actions-menu.js +0 -115
  123. package/angular/esm/components/item-grid.d.ts +0 -80
  124. package/angular/esm/components/item-grid.js +0 -245
  125. package/angular/esm/components/item-option-action-button-group.d.ts +0 -41
  126. package/angular/esm/components/item-option-action-button-group.js +0 -107
  127. package/angular/esm/components/item-option-color-palette-picker.d.ts +0 -48
  128. package/angular/esm/components/item-option-color-palette-picker.js +0 -131
  129. package/angular/esm/components/item-option-color-picker.d.ts +0 -51
  130. package/angular/esm/components/item-option-color-picker.js +0 -139
  131. package/angular/esm/components/item-option-color-range.d.ts +0 -66
  132. package/angular/esm/components/item-option-color-range.js +0 -179
  133. package/angular/esm/components/item-option-guidelines.d.ts +0 -34
  134. package/angular/esm/components/item-option-guidelines.js +0 -83
  135. package/angular/esm/components/item-option-multi-language-field.d.ts +0 -50
  136. package/angular/esm/components/item-option-multi-language-field.js +0 -139
  137. package/angular/esm/components/item-option-number-field.d.ts +0 -58
  138. package/angular/esm/components/item-option-number-field.js +0 -171
  139. package/angular/esm/components/item-option-panel.d.ts +0 -54
  140. package/angular/esm/components/item-option-panel.js +0 -155
  141. package/angular/esm/components/item-option-picker.d.ts +0 -46
  142. package/angular/esm/components/item-option-picker.js +0 -123
  143. package/angular/esm/components/item-option-position-picker.d.ts +0 -39
  144. package/angular/esm/components/item-option-position-picker.js +0 -99
  145. package/angular/esm/components/item-option-positions-number-field.d.ts +0 -54
  146. package/angular/esm/components/item-option-positions-number-field.js +0 -147
  147. package/angular/esm/components/item-option-radio-button-group.d.ts +0 -45
  148. package/angular/esm/components/item-option-radio-button-group.js +0 -123
  149. package/angular/esm/components/item-option-slider.d.ts +0 -46
  150. package/angular/esm/components/item-option-slider.js +0 -131
  151. package/angular/esm/components/item-option-switch.d.ts +0 -40
  152. package/angular/esm/components/item-option-switch.js +0 -99
  153. package/angular/esm/components/item-option-text-field.d.ts +0 -44
  154. package/angular/esm/components/item-option-text-field.js +0 -115
  155. package/angular/esm/components/item-option.d.ts +0 -58
  156. package/angular/esm/components/item-option.js +0 -171
  157. package/angular/esm/components/item-slot-drop-panel.d.ts +0 -82
  158. package/angular/esm/components/item-slot-drop-panel.js +0 -249
  159. package/angular/esm/components/item-slot-drop.d.ts +0 -77
  160. package/angular/esm/components/item-slot-drop.js +0 -227
  161. package/angular/esm/components/item-slot-picker-panel.d.ts +0 -97
  162. package/angular/esm/components/item-slot-picker-panel.js +0 -309
  163. package/angular/esm/components/item-slot-picker.d.ts +0 -86
  164. package/angular/esm/components/item-slot-picker.js +0 -259
  165. package/angular/esm/components/slot-menu-list.d.ts +0 -46
  166. package/angular/esm/components/slot-menu-list.js +0 -123
  167. package/angular/esm/components/slot-menu.d.ts +0 -104
  168. package/angular/esm/components/slot-menu.js +0 -300
  169. package/angular/esm/components/viz-item-menu.d.ts +0 -42
  170. package/angular/esm/components/viz-item-menu.js +0 -111
  171. package/angular/esm/index.d.ts +0 -109
  172. package/angular/esm/index.js +0 -217
  173. package/angular/index.ts +0 -223
  174. package/angular/package.json +0 -40
  175. package/angular/tsconfig.json +0 -36
  176. package/angular/type-fallbacks.d.ts +0 -0
  177. package/angular/utils/ai-prompt/attachments.d.ts +0 -10
  178. package/angular/utils/ai-prompt/dictation.d.ts +0 -50
  179. package/angular/utils/ai-prompt/image-upload.d.ts +0 -12
  180. package/angular/utils/ai-prompt/index.d.ts +0 -6
  181. package/angular/utils/ai-prompt/tests/attachments.test.d.ts +0 -1
  182. package/angular/utils/ai-prompt/tests/dictation.test.d.ts +0 -1
  183. package/angular/utils/ai-prompt/tests/image-upload.test.d.ts +0 -1
  184. package/angular/utils/base/base.d.ts +0 -16
  185. package/angular/utils/base/focus-visible.d.ts +0 -29
  186. package/angular/utils/base/focusable.d.ts +0 -58
  187. package/angular/utils/base/index.d.ts +0 -5
  188. package/angular/utils/base/localized-mixin.d.ts +0 -22
  189. package/angular/utils/base/sized-mixin.d.ts +0 -17
  190. package/angular/utils/color/color-palettes.d.ts +0 -17
  191. package/angular/utils/color/extrapolate-color.d.ts +0 -1
  192. package/angular/utils/data/load-data-fields-for-datasets.d.ts +0 -22
  193. package/angular/utils/data-broker/index.d.ts +0 -263
  194. package/angular/utils/data-field-types/calculate-data-field-icon.d.ts +0 -12
  195. package/angular/utils/data-field-types/default-acceptable-data-field-types.d.ts +0 -1
  196. package/angular/utils/data-field-types/tests/calculate-data-field-icon.test.d.ts +0 -1
  197. package/angular/utils/drag/draggable.d.ts +0 -13
  198. package/angular/utils/drag/pragmatic-element-adapter.d.ts +0 -2
  199. package/angular/utils/drag/tests/pragmatic-element-adapter.first-import.test.d.ts +0 -1
  200. package/angular/utils/drag/tests/pragmatic-element-adapter.test.d.ts +0 -1
  201. package/angular/utils/filters/expressions.d.ts +0 -15
  202. package/angular/utils/filters/index.d.ts +0 -1
  203. package/angular/utils/formatter/calculate-duration.d.ts +0 -2
  204. package/angular/utils/formatter/decompose-numeric-format.d.ts +0 -11
  205. package/angular/utils/formatter/default-local-formats.d.ts +0 -20
  206. package/angular/utils/formatter/formats/cs.d.ts +0 -20
  207. package/angular/utils/formatter/formats/da.d.ts +0 -20
  208. package/angular/utils/formatter/formats/de.d.ts +0 -21
  209. package/angular/utils/formatter/formats/en-GB.d.ts +0 -21
  210. package/angular/utils/formatter/formats/en-US.d.ts +0 -1
  211. package/angular/utils/formatter/formats/en.d.ts +0 -1
  212. package/angular/utils/formatter/formats/es.d.ts +0 -54
  213. package/angular/utils/formatter/formats/fi.d.ts +0 -20
  214. package/angular/utils/formatter/formats/fr.d.ts +0 -54
  215. package/angular/utils/formatter/formats/he.d.ts +0 -20
  216. package/angular/utils/formatter/formats/hu.d.ts +0 -20
  217. package/angular/utils/formatter/formats/it.d.ts +0 -54
  218. package/angular/utils/formatter/formats/ja.d.ts +0 -20
  219. package/angular/utils/formatter/formats/ko.d.ts +0 -20
  220. package/angular/utils/formatter/formats/mk.d.ts +0 -20
  221. package/angular/utils/formatter/formats/nl.d.ts +0 -21
  222. package/angular/utils/formatter/formats/no.d.ts +0 -21
  223. package/angular/utils/formatter/formats/pl.d.ts +0 -20
  224. package/angular/utils/formatter/formats/pt.d.ts +0 -20
  225. package/angular/utils/formatter/formats/ru.d.ts +0 -20
  226. package/angular/utils/formatter/formats/sv.d.ts +0 -20
  227. package/angular/utils/formatter/formats/tr.d.ts +0 -21
  228. package/angular/utils/formatter/formats/zh-CN.d.ts +0 -20
  229. package/angular/utils/formatter/formats/zh-TW.d.ts +0 -20
  230. package/angular/utils/formatter/formatter.d.ts +0 -9
  231. package/angular/utils/formatter/get-dataset-name.d.ts +0 -2
  232. package/angular/utils/formatter/get-localized-name.d.ts +0 -4
  233. package/angular/utils/formatter/localize.d.ts +0 -3
  234. package/angular/utils/formatter/smart-datetime-formats.const.d.ts +0 -36
  235. package/angular/utils/formatter/tests/calculate-duration.test.d.ts +0 -1
  236. package/angular/utils/formatter/tests/decompose-numeric-format.test.d.ts +0 -1
  237. package/angular/utils/formatter/tests/default-local-formats.test.d.ts +0 -1
  238. package/angular/utils/formatter/tests/formatter.test.d.ts +0 -1
  239. package/angular/utils/formatter/tests/get-localized-name.test.d.ts +0 -1
  240. package/angular/utils/formatter/tests/localize.test.d.ts +0 -1
  241. package/angular/utils/formula/base/formula-base.d.ts +0 -117
  242. package/angular/utils/formula/base/formula-input-base.d.ts +0 -62
  243. package/angular/utils/formula/codemirror/actions.d.ts +0 -47
  244. package/angular/utils/formula/codemirror/drop-cursor.d.ts +0 -15
  245. package/angular/utils/formula/codemirror/icon-element.d.ts +0 -7
  246. package/angular/utils/formula/codemirror/parser.d.ts +0 -16
  247. package/angular/utils/formula/codemirror/tests/actions.test.d.ts +0 -1
  248. package/angular/utils/formula/codemirror/theme.d.ts +0 -20
  249. package/angular/utils/formula/codemirror/widget.d.ts +0 -18
  250. package/angular/utils/formula/config/aggregations.d.ts +0 -9
  251. package/angular/utils/formula/config/build-datasets.d.ts +0 -10
  252. package/angular/utils/formula/config/expression-helpers.d.ts +0 -42
  253. package/angular/utils/formula/config/functions.d.ts +0 -3
  254. package/angular/utils/formula/config/groupings.d.ts +0 -9
  255. package/angular/utils/formula/config/regex.d.ts +0 -39
  256. package/angular/utils/formula/config/resolve-column-presentation.d.ts +0 -19
  257. package/angular/utils/formula/config/tests/build-datasets.test.d.ts +0 -1
  258. package/angular/utils/formula/config/validate-expression.d.ts +0 -19
  259. package/angular/utils/formula/load-formula-codemirror.d.ts +0 -4
  260. package/angular/utils/formula/render-explanation-tooltip.d.ts +0 -7
  261. package/angular/utils/formula/store/formula-display-store.d.ts +0 -93
  262. package/angular/utils/formula/store/formula-editor-context.d.ts +0 -8
  263. package/angular/utils/formula/store/formula-editor-store.d.ts +0 -46
  264. package/angular/utils/formula/store/tests/formula-editor-store.test.d.ts +0 -1
  265. package/angular/utils/formula/tests/validate-expression.test.d.ts +0 -1
  266. package/angular/utils/get-css-variable.d.ts +0 -1
  267. package/angular/utils/index.d.ts +0 -10
  268. package/angular/utils/localize/set-locale.d.ts +0 -7
  269. package/angular/utils/map-tile-providers/index.d.ts +0 -93
  270. package/angular/utils/set-nested-value.d.ts +0 -6
  271. package/angular/utils/slot-content/ad-hoc-slot-content.d.ts +0 -7
  272. package/angular/utils/slot-content/render-calculation-label.d.ts +0 -7
  273. package/angular/utils/slot-content/tests/ad-hoc-slot-content.test.d.ts +0 -1
  274. package/angular/utils/slot-state/slot-context.d.ts +0 -4
  275. package/angular/utils/slot-state/slot-store.d.ts +0 -39
  276. package/angular/utils/store/base-store.d.ts +0 -158
  277. package/angular/utils/store/dashboard-store.d.ts +0 -49
  278. package/angular/utils/store/index.d.ts +0 -135
  279. package/angular/utils/store/item-store.d.ts +0 -33
  280. package/angular/utils/store/store-registry.d.ts +0 -170
  281. package/angular/utils/store/tests/dashboard-store.test.d.ts +0 -1
  282. package/angular/utils/store/tests/item-store.test.d.ts +0 -1
  283. package/angular/utils/store/tests/store-registry.test.d.ts +0 -1
  284. package/angular/utils/store/types.d.ts +0 -270
  285. package/angular/utils/switch-item/index.d.ts +0 -34
  286. package/angular/utils/switch-item/slot-role-classification.d.ts +0 -31
  287. package/angular/utils/switch-item/stories/switch-item.stories.d.ts +0 -17
  288. package/angular/utils/switch-item/tests/slot-role-classification.test.d.ts +0 -1
  289. package/angular/utils/switch-item/tests/switch-item.test.d.ts +0 -1
  290. package/angular/utils/tests/set-nested-value.test.d.ts +0 -1
  291. package/angular/utils/themes/bliss.d.ts +0 -2
  292. package/angular/utils/themes/classic-dark.d.ts +0 -2
  293. package/angular/utils/themes/classic.d.ts +0 -2
  294. package/angular/utils/themes/default-dark.d.ts +0 -2
  295. package/angular/utils/themes/default.d.ts +0 -2
  296. package/angular/utils/themes/index.d.ts +0 -4
  297. package/angular/utils/themes/orion.d.ts +0 -2
  298. package/angular/utils/themes/pinky.d.ts +0 -2
  299. package/angular/utils/themes/radiant.d.ts +0 -2
  300. package/angular/utils/themes/royale.d.ts +0 -2
  301. package/angular/utils/themes/seasonal.d.ts +0 -2
  302. package/angular/utils/themes/urban.d.ts +0 -2
  303. package/angular/utils/themes/vivid.d.ts +0 -2
  304. package/angular/utils/time/formats.const.d.ts +0 -4
  305. package/angular/utils/time/period-over-period-condition.const.d.ts +0 -8
  306. package/angular/utils/time/periods.const.d.ts +0 -15
  307. package/angular/utils/timezone/datetime-timezone.d.ts +0 -25
  308. package/angular/utils/timezone/tests/datetime-timezone.test.d.ts +0 -1
  309. package/angular/utils/transformations/convert-data-field-to-slot-content.d.ts +0 -9
  310. package/angular/utils/transformations/convert-datasets-to-data-fields.d.ts +0 -30
  311. package/angular/utils/transformations/tests/convert-data-field-to-slot-content.test.d.ts +0 -1
  312. package/angular/utils/transformations/tests/convert-datasets-to-data-fields.test.d.ts +0 -1
  313. package/angular/utils/types/tests/type-check.test.d.ts +0 -1
  314. package/angular/utils/types/type-check.d.ts +0 -28
@@ -1,130 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
2
- import '@luzmo/analytics-components-kit/data-field';
3
- import type { LuzmoDataField as LuzmoDataFieldHostElement, DataFieldDragStartedEventDetail, DataFieldDroppedEventDetail } from '@luzmo/analytics-components-kit/data-field';
4
- export type { DataFieldDragStartedEventDetail, DataFieldDroppedEventDetail, DatasetDataFieldWithSublevel } from '@luzmo/analytics-components-kit/data-field';
5
- import type { DatasetDataField } from '@luzmo/analytics-components-kit/types';
6
-
7
- @Component({
8
- selector: 'luzmo-data-field',
9
- exportAs: 'luzmoDataField',
10
- standalone: true,
11
- changeDetection: ChangeDetectionStrategy.OnPush,
12
- template: '<ng-content />'
13
- })
14
- /**
15
- * Angular wrapper component for <luzmo-data-field>
16
- */
17
- export class LuzmoDataField implements OnChanges {
18
- private readonly elementRef = inject<ElementRef<LuzmoDataFieldHostElement>>(ElementRef);
19
- private readonly renderer = inject<Renderer2>(Renderer2);
20
- private readonly destroyRef = inject<DestroyRef>(DestroyRef);
21
- private readonly host = this.elementRef.nativeElement;
22
- private readonly listenerCleanup: Array<() => void> = [];
23
-
24
- /** The underlying custom element instance. Use to call imperative methods. */
25
- get nativeElement(): LuzmoDataFieldHostElement {
26
- return this.host;
27
- }
28
-
29
- /** Visual treatment of the field: `highlight` to emphasize it, or `normal` (default). */
30
- @Input({ alias: 'variant' })
31
- variant?: 'highlight' | 'normal';
32
-
33
- /** Whether the data field is disabled (non-interactive and visually muted). */
34
- @Input({ alias: 'disabled', transform: booleanAttribute })
35
- disabled?: boolean;
36
-
37
- /** Hides the expandable sublevel rows (datetime levels and hierarchy levels). */
38
- @Input({ alias: 'hideSublevels', transform: booleanAttribute })
39
- hideSublevels?: boolean;
40
-
41
- /** Hides the data type icon shown before the field label. */
42
- @Input({ alias: 'hideTypeIcon', transform: booleanAttribute })
43
- hideTypeIcon?: boolean;
44
-
45
- /** The dataset data field descriptor to render (a column or formula field). */
46
- @Input({ alias: 'data' })
47
- data?: DatasetDataField;
48
-
49
- /** The language for UI labels. Supported values: 'en', 'nl', 'fr', 'de', 'es' */
50
- @Input({ alias: 'language' })
51
- language?: string;
52
-
53
- /** The size of the element */
54
- @Input({ alias: 'size' })
55
- size?: 's' | 'm' | 'l' | 'xl';
56
-
57
- /** Announces that the data field has been dropped */
58
- readonly luzmoDataFieldDropped = output<CustomEvent<DataFieldDroppedEventDetail>>({ alias: 'luzmoDataFieldDropped' });
59
-
60
- /** Announces that the drag is started on the data field */
61
- readonly luzmoDataFieldDragStarted = output<CustomEvent<DataFieldDragStartedEventDetail>>({ alias: 'luzmoDataFieldDragStarted' });
62
-
63
- constructor() {
64
- this.bindEvents();
65
- this.destroyRef.onDestroy(() => {
66
- for (const cleanup of this.listenerCleanup) {
67
- cleanup();
68
- }
69
- });
70
- }
71
-
72
- ngOnChanges(changes: SimpleChanges): void {
73
- for (const key of Object.keys(changes)) {
74
- switch (key) {
75
- case 'variant':
76
- this.setHostProperty('variant', changes['variant'].currentValue);
77
- break;
78
- case 'disabled':
79
- this.setHostProperty('disabled', changes['disabled'].currentValue);
80
- break;
81
- case 'hideSublevels':
82
- this.setHostProperty('hideSublevels', changes['hideSublevels'].currentValue);
83
- break;
84
- case 'hideTypeIcon':
85
- this.setHostProperty('hideTypeIcon', changes['hideTypeIcon'].currentValue);
86
- break;
87
- case 'data':
88
- this.setHostProperty('data', changes['data'].currentValue);
89
- break;
90
- case 'language':
91
- this.setHostProperty('language', changes['language'].currentValue);
92
- break;
93
- case 'size':
94
- this.setHostProperty('size', changes['size'].currentValue);
95
- break;
96
- default:
97
- break;
98
- }
99
- }
100
- }
101
-
102
- /**
103
- * Forward a wrapper @Input to the underlying host element via Renderer2 so
104
- * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
105
- * Unlike a "skip undefined" guard, this lets consumers reset values back to
106
- * undefined / null by clearing their bindings.
107
- */
108
- private setHostProperty(key: string, value: unknown): void {
109
- this.renderer.setProperty(this.host, key, value);
110
- }
111
-
112
- private bindEvents(): void {
113
- this.listenerCleanup.push(
114
- this.renderer.listen(this.host, 'luzmo-data-field-dropped', (event: Event) => {
115
- const typed = event as CustomEvent<DataFieldDroppedEventDetail>;
116
- this.luzmoDataFieldDropped.emit(typed);
117
- })
118
- );
119
-
120
- this.listenerCleanup.push(
121
- this.renderer.listen(this.host, 'luzmo-data-field-drag-started', (event: Event) => {
122
- const typed = event as CustomEvent<DataFieldDragStartedEventDetail>;
123
- this.luzmoDataFieldDragStarted.emit(typed);
124
- })
125
- );
126
- }
127
- }
128
-
129
- /** The underlying custom element type for LuzmoDataField */
130
- export type LuzmoDataFieldElement = LuzmoDataFieldHostElement;
@@ -1,212 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
2
- import '@luzmo/analytics-components-kit/data-fields-select';
3
- import type { LuzmoDataFieldsSelect as LuzmoDataFieldsSelectHostElement, AdHocFormulaInput, DataFieldsSelectedEventDetail } from '@luzmo/analytics-components-kit/data-fields-select';
4
- export type { AdHocFormulaFieldData, AdHocFormulaInput, DataFieldsSelectedEventDetail } from '@luzmo/analytics-components-kit/data-fields-select';
5
- import type { DatasetFormulaMetadata, DatasetMetadata } from '@luzmo/analytics-components-kit/types';
6
- import type { Placement } from '@luzmo/lucero';
7
-
8
- @Component({
9
- selector: 'luzmo-data-fields-select',
10
- exportAs: 'luzmoDataFieldsSelect',
11
- standalone: true,
12
- changeDetection: ChangeDetectionStrategy.OnPush,
13
- template: '<ng-content />'
14
- })
15
- /**
16
- * Angular wrapper component for <luzmo-data-fields-select>
17
- */
18
- export class LuzmoDataFieldsSelect implements OnChanges {
19
- private readonly elementRef = inject<ElementRef<LuzmoDataFieldsSelectHostElement>>(ElementRef);
20
- private readonly renderer = inject<Renderer2>(Renderer2);
21
- private readonly destroyRef = inject<DestroyRef>(DestroyRef);
22
- private readonly host = this.elementRef.nativeElement;
23
- private readonly listenerCleanup: Array<() => void> = [];
24
-
25
- /** The underlying custom element instance. Use to call imperative methods. */
26
- get nativeElement(): LuzmoDataFieldsSelectHostElement {
27
- return this.host;
28
- }
29
-
30
- /** The language to use for locale-aware formatting and labels */
31
- @Input({ alias: 'contentLanguage' })
32
- contentLanguage?: string;
33
-
34
- /** The accessible label for the select (used for aria-label) */
35
- @Input({ alias: 'label' })
36
- label?: string;
37
-
38
- /** Where to show icons */
39
- @Input({ alias: 'icons' })
40
- icons?: 'none' | 'menu-only' | 'all';
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
-
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. */
47
- @Input({ alias: 'allowEmpty', transform: booleanAttribute })
48
- allowEmpty?: boolean;
49
-
50
- /** The placeholder text for the picker is no value selected. If allowEmpty is true, this will be used as the label. */
51
- @Input({ alias: 'placeholder' })
52
- placeholder?: string;
53
-
54
- /** Whether the picker allows single or multiple selections. */
55
- @Input({ alias: 'selects' })
56
- selects?: 'single' | 'multiple';
57
-
58
- /** The IDs of the selected data fields. If not provided, the first item will be selected (when allowEmpty is false). */
59
- @Input({ alias: 'value' })
60
- value?: string[];
61
-
62
- /** Whether the picker is in retrieving state (shows loading indicator) */
63
- @Input({ alias: 'retrieving', transform: booleanAttribute })
64
- retrieving?: boolean;
65
-
66
- /** Whether the picker is invalid - eg. the dataFieldId is not found in the datasetsDataFields or query failed to fetch data */
67
- @Input({ alias: 'invalid', transform: booleanAttribute })
68
- invalid?: boolean;
69
-
70
- /** Whether the picker is clearable */
71
- @Input({ alias: 'clearable', transform: booleanAttribute })
72
- clearable?: boolean;
73
-
74
- /** Whether the picker is in pending state */
75
- @Input({ alias: 'pending', transform: booleanAttribute })
76
- pending?: boolean;
77
-
78
- /** Whether the picker is disabled */
79
- @Input({ alias: 'disabled', transform: booleanAttribute })
80
- disabled?: boolean;
81
-
82
- /** Whether to show a search field in the dropdown */
83
- @Input({ alias: 'search' })
84
- search?: 'on' | 'off' | 'auto';
85
-
86
- /** The placement of the dropdown menu */
87
- @Input({ alias: 'placement' })
88
- placement?: Placement;
89
-
90
- /** The datasets and their dataFields to display. The `formulas` array accepts both saved formulas (with `id`) and ad hoc formulas (with a `formula` expression string). Ad hoc formulas render inline with a formula icon. */
91
- @Input({ alias: 'datasetsDataFields' })
92
- datasetsDataFields?: (Pick<DatasetMetadata, 'id' | 'name' | 'columns'> & { formulas: (DatasetFormulaMetadata | AdHocFormulaInput)[]; })[];
93
-
94
- /** The language for UI labels. Supported values: 'en', 'nl', 'fr', 'de', 'es' */
95
- @Input({ alias: 'language' })
96
- language?: string;
97
-
98
- /** The size of the element */
99
- @Input({ alias: 'size' })
100
- size?: 's' | 'm' | 'l' | 'xl';
101
-
102
- /** When this control is rendered, focus it automatically */
103
- @Input({ alias: 'autofocus', transform: booleanAttribute })
104
- autofocus?: boolean;
105
-
106
- /** The tab index to apply to this control. See general documentation about the tabindex HTML property */
107
- @Input({ alias: 'tabIndex' })
108
- tabIndex?: number;
109
-
110
- /** Emitted when data fields are selected */
111
- readonly luzmoDataFieldsSelected = output<CustomEvent<DataFieldsSelectedEventDetail>>({ alias: 'luzmoDataFieldsSelected' });
112
-
113
- constructor() {
114
- this.bindEvents();
115
- this.destroyRef.onDestroy(() => {
116
- for (const cleanup of this.listenerCleanup) {
117
- cleanup();
118
- }
119
- });
120
- }
121
-
122
- ngOnChanges(changes: SimpleChanges): void {
123
- for (const key of Object.keys(changes)) {
124
- switch (key) {
125
- case 'contentLanguage':
126
- this.setHostProperty('contentLanguage', changes['contentLanguage'].currentValue);
127
- break;
128
- case 'label':
129
- this.setHostProperty('label', changes['label'].currentValue);
130
- break;
131
- case 'icons':
132
- this.setHostProperty('icons', changes['icons'].currentValue);
133
- break;
134
- case 'levels':
135
- this.setHostProperty('levels', changes['levels'].currentValue);
136
- break;
137
- case 'allowEmpty':
138
- this.setHostProperty('allowEmpty', changes['allowEmpty'].currentValue);
139
- break;
140
- case 'placeholder':
141
- this.setHostProperty('placeholder', changes['placeholder'].currentValue);
142
- break;
143
- case 'selects':
144
- this.setHostProperty('selects', changes['selects'].currentValue);
145
- break;
146
- case 'value':
147
- this.setHostProperty('value', changes['value'].currentValue);
148
- break;
149
- case 'retrieving':
150
- this.setHostProperty('retrieving', changes['retrieving'].currentValue);
151
- break;
152
- case 'invalid':
153
- this.setHostProperty('invalid', changes['invalid'].currentValue);
154
- break;
155
- case 'clearable':
156
- this.setHostProperty('clearable', changes['clearable'].currentValue);
157
- break;
158
- case 'pending':
159
- this.setHostProperty('pending', changes['pending'].currentValue);
160
- break;
161
- case 'disabled':
162
- this.setHostProperty('disabled', changes['disabled'].currentValue);
163
- break;
164
- case 'search':
165
- this.setHostProperty('search', changes['search'].currentValue);
166
- break;
167
- case 'placement':
168
- this.setHostProperty('placement', changes['placement'].currentValue);
169
- break;
170
- case 'datasetsDataFields':
171
- this.setHostProperty('datasetsDataFields', changes['datasetsDataFields'].currentValue);
172
- break;
173
- case 'language':
174
- this.setHostProperty('language', changes['language'].currentValue);
175
- break;
176
- case 'size':
177
- this.setHostProperty('size', changes['size'].currentValue);
178
- break;
179
- case 'autofocus':
180
- this.setHostProperty('autofocus', changes['autofocus'].currentValue);
181
- break;
182
- case 'tabIndex':
183
- this.setHostProperty('tabIndex', changes['tabIndex'].currentValue);
184
- break;
185
- default:
186
- break;
187
- }
188
- }
189
- }
190
-
191
- /**
192
- * Forward a wrapper @Input to the underlying host element via Renderer2 so
193
- * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
194
- * Unlike a "skip undefined" guard, this lets consumers reset values back to
195
- * undefined / null by clearing their bindings.
196
- */
197
- private setHostProperty(key: string, value: unknown): void {
198
- this.renderer.setProperty(this.host, key, value);
199
- }
200
-
201
- private bindEvents(): void {
202
- this.listenerCleanup.push(
203
- this.renderer.listen(this.host, 'luzmo-data-fields-selected', (event: Event) => {
204
- const typed = event as CustomEvent<DataFieldsSelectedEventDetail>;
205
- this.luzmoDataFieldsSelected.emit(typed);
206
- })
207
- );
208
- }
209
- }
210
-
211
- /** The underlying custom element type for LuzmoDataFieldsSelect */
212
- export type LuzmoDataFieldsSelectElement = LuzmoDataFieldsSelectHostElement;
@@ -1,83 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, Renderer2, SimpleChanges } from '@angular/core';
2
- import '@luzmo/analytics-components-kit/dataset-icon';
3
- import type { LuzmoDatasetIcon as LuzmoDatasetIconHostElement, DatasetIcon } from '@luzmo/analytics-components-kit/dataset-icon';
4
- export type { DatasetIcon } from '@luzmo/analytics-components-kit/dataset-icon';
5
-
6
- @Component({
7
- selector: 'luzmo-dataset-icon',
8
- exportAs: 'luzmoDatasetIcon',
9
- standalone: true,
10
- changeDetection: ChangeDetectionStrategy.OnPush,
11
- template: '<ng-content />'
12
- })
13
- /**
14
- * Angular wrapper component for <luzmo-dataset-icon>
15
- */
16
- export class LuzmoDatasetIcon implements OnChanges {
17
- private readonly elementRef = inject<ElementRef<LuzmoDatasetIconHostElement>>(ElementRef);
18
- private readonly renderer = inject<Renderer2>(Renderer2);
19
- private readonly destroyRef = inject<DestroyRef>(DestroyRef);
20
- private readonly host = this.elementRef.nativeElement;
21
- private readonly listenerCleanup: Array<() => void> = [];
22
-
23
- /** The underlying custom element instance. Use to call imperative methods. */
24
- get nativeElement(): LuzmoDatasetIconHostElement {
25
- return this.host;
26
- }
27
-
28
- /** The dataset information containing subtype and thumbnail data */
29
- @Input({ alias: 'dataset' })
30
- datasetInfo?: DatasetIcon;
31
-
32
- /** The size of the icon */
33
- @Input({ alias: 'size' })
34
- size?: '16px' | '24px' | '32px' | '48px' | '64px';
35
-
36
- /** The base URL for the application (used for thumbnail URLs) */
37
- @Input({ alias: 'appUrl' })
38
- appUrl?: string;
39
-
40
- constructor() {
41
- this.bindEvents();
42
- this.destroyRef.onDestroy(() => {
43
- for (const cleanup of this.listenerCleanup) {
44
- cleanup();
45
- }
46
- });
47
- }
48
-
49
- ngOnChanges(changes: SimpleChanges): void {
50
- for (const key of Object.keys(changes)) {
51
- switch (key) {
52
- case 'datasetInfo':
53
- this.setHostProperty('datasetInfo', changes['datasetInfo'].currentValue);
54
- break;
55
- case 'size':
56
- this.setHostProperty('size', changes['size'].currentValue);
57
- break;
58
- case 'appUrl':
59
- this.setHostProperty('appUrl', changes['appUrl'].currentValue);
60
- break;
61
- default:
62
- break;
63
- }
64
- }
65
- }
66
-
67
- /**
68
- * Forward a wrapper @Input to the underlying host element via Renderer2 so
69
- * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
70
- * Unlike a "skip undefined" guard, this lets consumers reset values back to
71
- * undefined / null by clearing their bindings.
72
- */
73
- private setHostProperty(key: string, value: unknown): void {
74
- this.renderer.setProperty(this.host, key, value);
75
- }
76
-
77
- private bindEvents(): void {
78
- // No custom events for this wrapper.
79
- }
80
- }
81
-
82
- /** The underlying custom element type for LuzmoDatasetIcon */
83
- export type LuzmoDatasetIconElement = LuzmoDatasetIconHostElement;
@@ -1,147 +0,0 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
2
- import '@luzmo/analytics-components-kit/dataset-selector-list';
3
- import type { LuzmoDatasetSelectorList as LuzmoDatasetSelectorListHostElement, Dataset } from '@luzmo/analytics-components-kit/dataset-selector-list';
4
- export type { Dataset } from '@luzmo/analytics-components-kit/dataset-selector-list';
5
-
6
- @Component({
7
- selector: 'luzmo-dataset-selector-list',
8
- exportAs: 'luzmoDatasetSelectorList',
9
- standalone: true,
10
- changeDetection: ChangeDetectionStrategy.OnPush,
11
- template: '<ng-content />'
12
- })
13
- /**
14
- * Angular wrapper component for <luzmo-dataset-selector-list>
15
- */
16
- export class LuzmoDatasetSelectorList implements OnChanges {
17
- private readonly elementRef = inject<ElementRef<LuzmoDatasetSelectorListHostElement>>(ElementRef);
18
- private readonly renderer = inject<Renderer2>(Renderer2);
19
- private readonly destroyRef = inject<DestroyRef>(DestroyRef);
20
- private readonly host = this.elementRef.nativeElement;
21
- private readonly listenerCleanup: Array<() => void> = [];
22
-
23
- /** The underlying custom element instance. Use to call imperative methods. */
24
- get nativeElement(): LuzmoDatasetSelectorListHostElement {
25
- return this.host;
26
- }
27
-
28
- /** Set of dataset IDs that are already selected and should be filtered out */
29
- @Input({ alias: 'selectedDatasets' })
30
- selectedDatasets?: Set<string>;
31
-
32
- /** Whether to show the search input field */
33
- @Input({ alias: 'showSearch', transform: booleanAttribute })
34
- showSearch?: boolean;
35
-
36
- /** Placeholder text for the search input */
37
- @Input({ alias: 'searchPlaceholder' })
38
- searchPlaceholder?: string;
39
-
40
- /** Message to show when no datasets are found */
41
- @Input({ alias: 'noDatasetsMessage' })
42
- noDatasetsMessage?: string;
43
-
44
- /** Whether to highlight matched search terms in dataset names */
45
- @Input({ alias: 'highlightSearchMatches', transform: booleanAttribute })
46
- highlightSearchMatches?: boolean;
47
-
48
- /** Auth key for DataBroker authentication */
49
- @Input({ alias: 'authKey' })
50
- authKey?: string;
51
-
52
- /** Auth token for DataBroker authentication */
53
- @Input({ alias: 'authToken' })
54
- authToken?: string;
55
-
56
- /** API URL for DataBroker */
57
- @Input({ alias: 'apiUrl' })
58
- apiUrl?: string;
59
-
60
- /** The URL of the app server for thumbnails and assets */
61
- @Input({ alias: 'appServer' })
62
- appServer?: string;
63
-
64
- /** When true, shows public datasets alongside the user's other datasets. */
65
- @Input({ alias: 'includePublicDatasets', transform: booleanAttribute })
66
- includePublicDatasets?: boolean;
67
-
68
- /** Alias for includePublicDatasets. */
69
- @Input({ alias: 'flagOpendata', transform: booleanAttribute })
70
- flagOpendata?: boolean;
71
-
72
- /** Fired when a dataset is selected */
73
- readonly datasetSelected = output<CustomEvent<Dataset>>({ alias: 'datasetSelected' });
74
-
75
- constructor() {
76
- this.bindEvents();
77
- this.destroyRef.onDestroy(() => {
78
- for (const cleanup of this.listenerCleanup) {
79
- cleanup();
80
- }
81
- });
82
- }
83
-
84
- ngOnChanges(changes: SimpleChanges): void {
85
- for (const key of Object.keys(changes)) {
86
- switch (key) {
87
- case 'selectedDatasets':
88
- this.setHostProperty('selectedDatasets', changes['selectedDatasets'].currentValue);
89
- break;
90
- case 'showSearch':
91
- this.setHostProperty('showSearch', changes['showSearch'].currentValue);
92
- break;
93
- case 'searchPlaceholder':
94
- this.setHostProperty('searchPlaceholder', changes['searchPlaceholder'].currentValue);
95
- break;
96
- case 'noDatasetsMessage':
97
- this.setHostProperty('noDatasetsMessage', changes['noDatasetsMessage'].currentValue);
98
- break;
99
- case 'highlightSearchMatches':
100
- this.setHostProperty('highlightSearchMatches', changes['highlightSearchMatches'].currentValue);
101
- break;
102
- case 'authKey':
103
- this.setHostProperty('authKey', changes['authKey'].currentValue);
104
- break;
105
- case 'authToken':
106
- this.setHostProperty('authToken', changes['authToken'].currentValue);
107
- break;
108
- case 'apiUrl':
109
- this.setHostProperty('apiUrl', changes['apiUrl'].currentValue);
110
- break;
111
- case 'appServer':
112
- this.setHostProperty('appServer', changes['appServer'].currentValue);
113
- break;
114
- case 'includePublicDatasets':
115
- this.setHostProperty('includePublicDatasets', changes['includePublicDatasets'].currentValue);
116
- break;
117
- case 'flagOpendata':
118
- this.setHostProperty('flagOpendata', changes['flagOpendata'].currentValue);
119
- break;
120
- default:
121
- break;
122
- }
123
- }
124
- }
125
-
126
- /**
127
- * Forward a wrapper @Input to the underlying host element via Renderer2 so
128
- * the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
129
- * Unlike a "skip undefined" guard, this lets consumers reset values back to
130
- * undefined / null by clearing their bindings.
131
- */
132
- private setHostProperty(key: string, value: unknown): void {
133
- this.renderer.setProperty(this.host, key, value);
134
- }
135
-
136
- private bindEvents(): void {
137
- this.listenerCleanup.push(
138
- this.renderer.listen(this.host, 'dataset-selected', (event: Event) => {
139
- const typed = event as CustomEvent<Dataset>;
140
- this.datasetSelected.emit(typed);
141
- })
142
- );
143
- }
144
- }
145
-
146
- /** The underlying custom element type for LuzmoDatasetSelectorList */
147
- export type LuzmoDatasetSelectorListElement = LuzmoDatasetSelectorListHostElement;