@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.
- package/components/index.cjs +1 -1
- package/components/index.js +1 -1
- package/components/viz-item-menu/index.cjs +1 -1
- package/components/viz-item-menu/index.js +1 -1
- package/components/viz-item-menu/viz-item-menu.d.ts +3 -0
- package/components/{viz-item-menu-Ht6bklNL.js → viz-item-menu-B7yRaSAU.js} +1 -1
- package/components/{viz-item-menu-XHh4qhtn.cjs → viz-item-menu-hLdU-02Q.cjs} +1 -1
- package/custom-elements.json +14 -0
- package/package.json +1 -1
- package/react/package.json +2 -2
- package/angular/README.md +0 -40
- package/angular/components/ai-chat-empty-state.ts +0 -98
- package/angular/components/ai-chat.ts +0 -440
- package/angular/components/ai-interaction-textarea.ts +0 -283
- package/angular/components/data-field-level.ts +0 -130
- package/angular/components/data-field-panel.ts +0 -256
- package/angular/components/data-field.ts +0 -130
- package/angular/components/data-fields-select.ts +0 -212
- package/angular/components/dataset-icon.ts +0 -83
- package/angular/components/dataset-selector-list.ts +0 -147
- package/angular/components/dataset-selector-row.ts +0 -198
- package/angular/components/display-settings-binning.ts +0 -92
- package/angular/components/display-settings-datetime.ts +0 -100
- package/angular/components/display-settings-grand-totals.ts +0 -92
- package/angular/components/display-settings-numeric.ts +0 -113
- package/angular/components/display-settings-period-over-period.ts +0 -107
- package/angular/components/display-settings.ts +0 -227
- package/angular/components/filter-expression-picker.ts +0 -168
- package/angular/components/filter-item.ts +0 -175
- package/angular/components/filter-parameter-picker.ts +0 -155
- package/angular/components/filter-value-picker-datetime.ts +0 -125
- package/angular/components/filter-value-picker-hierarchy.ts +0 -146
- package/angular/components/filter-value-picker-numeric.ts +0 -146
- package/angular/components/filter-value-picker.ts +0 -160
- package/angular/components/filters.ts +0 -209
- package/angular/components/formula-editor.ts +0 -229
- package/angular/components/formula-field.ts +0 -198
- package/angular/components/formula.ts +0 -170
- package/angular/components/interactive-viz-item.ts +0 -186
- package/angular/components/item-grid-item-actions-menu.ts +0 -113
- package/angular/components/item-grid.ts +0 -242
- package/angular/components/item-option-action-button-group.ts +0 -105
- package/angular/components/item-option-color-palette-picker.ts +0 -126
- package/angular/components/item-option-color-picker.ts +0 -134
- package/angular/components/item-option-color-range.ts +0 -168
- package/angular/components/item-option-guidelines.ts +0 -84
- package/angular/components/item-option-multi-language-field.ts +0 -133
- package/angular/components/item-option-number-field.ts +0 -161
- package/angular/components/item-option-panel.ts +0 -149
- package/angular/components/item-option-picker.ts +0 -120
- package/angular/components/item-option-position-picker.ts +0 -98
- package/angular/components/item-option-positions-number-field.ts +0 -140
- package/angular/components/item-option-radio-button-group.ts +0 -119
- package/angular/components/item-option-slider.ts +0 -126
- package/angular/components/item-option-switch.ts +0 -98
- package/angular/components/item-option-text-field.ts +0 -112
- package/angular/components/item-option.ts +0 -163
- package/angular/components/item-slot-drop-panel.ts +0 -236
- package/angular/components/item-slot-drop.ts +0 -231
- package/angular/components/item-slot-picker-panel.ts +0 -299
- package/angular/components/item-slot-picker.ts +0 -241
- package/angular/components/slot-menu-list.ts +0 -121
- package/angular/components/slot-menu.ts +0 -304
- package/angular/components/viz-item-menu.ts +0 -118
- package/angular/esm/components/ai-chat-empty-state.d.ts +0 -39
- package/angular/esm/components/ai-chat-empty-state.js +0 -99
- package/angular/esm/components/ai-chat.d.ts +0 -147
- package/angular/esm/components/ai-chat.js +0 -455
- package/angular/esm/components/ai-interaction-textarea.d.ts +0 -106
- package/angular/esm/components/ai-interaction-textarea.js +0 -305
- package/angular/esm/components/data-field-level.d.ts +0 -50
- package/angular/esm/components/data-field-level.js +0 -129
- package/angular/esm/components/data-field-panel.d.ts +0 -86
- package/angular/esm/components/data-field-panel.js +0 -268
- package/angular/esm/components/data-field.d.ts +0 -50
- package/angular/esm/components/data-field.js +0 -129
- package/angular/esm/components/data-fields-select.d.ts +0 -81
- package/angular/esm/components/data-fields-select.js +0 -227
- package/angular/esm/components/dataset-icon.d.ts +0 -34
- package/angular/esm/components/dataset-icon.js +0 -86
- package/angular/esm/components/dataset-selector-list.d.ts +0 -56
- package/angular/esm/components/dataset-selector-list.js +0 -155
- package/angular/esm/components/dataset-selector-row.d.ts +0 -70
- package/angular/esm/components/dataset-selector-row.js +0 -197
- package/angular/esm/components/display-settings-binning.d.ts +0 -37
- package/angular/esm/components/display-settings-binning.js +0 -91
- package/angular/esm/components/display-settings-datetime.d.ts +0 -40
- package/angular/esm/components/display-settings-datetime.js +0 -99
- package/angular/esm/components/display-settings-grand-totals.d.ts +0 -37
- package/angular/esm/components/display-settings-grand-totals.js +0 -91
- package/angular/esm/components/display-settings-numeric.d.ts +0 -45
- package/angular/esm/components/display-settings-numeric.js +0 -115
- package/angular/esm/components/display-settings-period-over-period.d.ts +0 -44
- package/angular/esm/components/display-settings-period-over-period.js +0 -107
- package/angular/esm/components/display-settings.d.ts +0 -83
- package/angular/esm/components/display-settings.js +0 -231
- package/angular/esm/components/filter-expression-picker.d.ts +0 -64
- package/angular/esm/components/filter-expression-picker.js +0 -179
- package/angular/esm/components/filter-item.d.ts +0 -63
- package/angular/esm/components/filter-item.js +0 -187
- package/angular/esm/components/filter-parameter-picker.d.ts +0 -56
- package/angular/esm/components/filter-parameter-picker.js +0 -151
- package/angular/esm/components/filter-value-picker-datetime.d.ts +0 -47
- package/angular/esm/components/filter-value-picker-datetime.js +0 -131
- package/angular/esm/components/filter-value-picker-hierarchy.d.ts +0 -53
- package/angular/esm/components/filter-value-picker-hierarchy.js +0 -155
- package/angular/esm/components/filter-value-picker-numeric.d.ts +0 -53
- package/angular/esm/components/filter-value-picker-numeric.js +0 -155
- package/angular/esm/components/filter-value-picker.d.ts +0 -57
- package/angular/esm/components/filter-value-picker.js +0 -171
- package/angular/esm/components/filters.d.ts +0 -75
- package/angular/esm/components/filters.js +0 -215
- package/angular/esm/components/formula-editor.d.ts +0 -78
- package/angular/esm/components/formula-editor.js +0 -236
- package/angular/esm/components/formula-field.d.ts +0 -70
- package/angular/esm/components/formula-field.js +0 -209
- package/angular/esm/components/formula.d.ts +0 -60
- package/angular/esm/components/formula.js +0 -177
- package/angular/esm/components/interactive-viz-item.d.ts +0 -63
- package/angular/esm/components/interactive-viz-item.js +0 -188
- package/angular/esm/components/item-grid-item-actions-menu.d.ts +0 -45
- package/angular/esm/components/item-grid-item-actions-menu.js +0 -115
- package/angular/esm/components/item-grid.d.ts +0 -80
- package/angular/esm/components/item-grid.js +0 -245
- package/angular/esm/components/item-option-action-button-group.d.ts +0 -41
- package/angular/esm/components/item-option-action-button-group.js +0 -107
- package/angular/esm/components/item-option-color-palette-picker.d.ts +0 -48
- package/angular/esm/components/item-option-color-palette-picker.js +0 -131
- package/angular/esm/components/item-option-color-picker.d.ts +0 -51
- package/angular/esm/components/item-option-color-picker.js +0 -139
- package/angular/esm/components/item-option-color-range.d.ts +0 -66
- package/angular/esm/components/item-option-color-range.js +0 -179
- package/angular/esm/components/item-option-guidelines.d.ts +0 -34
- package/angular/esm/components/item-option-guidelines.js +0 -83
- package/angular/esm/components/item-option-multi-language-field.d.ts +0 -50
- package/angular/esm/components/item-option-multi-language-field.js +0 -139
- package/angular/esm/components/item-option-number-field.d.ts +0 -58
- package/angular/esm/components/item-option-number-field.js +0 -171
- package/angular/esm/components/item-option-panel.d.ts +0 -54
- package/angular/esm/components/item-option-panel.js +0 -155
- package/angular/esm/components/item-option-picker.d.ts +0 -46
- package/angular/esm/components/item-option-picker.js +0 -123
- package/angular/esm/components/item-option-position-picker.d.ts +0 -39
- package/angular/esm/components/item-option-position-picker.js +0 -99
- package/angular/esm/components/item-option-positions-number-field.d.ts +0 -54
- package/angular/esm/components/item-option-positions-number-field.js +0 -147
- package/angular/esm/components/item-option-radio-button-group.d.ts +0 -45
- package/angular/esm/components/item-option-radio-button-group.js +0 -123
- package/angular/esm/components/item-option-slider.d.ts +0 -46
- package/angular/esm/components/item-option-slider.js +0 -131
- package/angular/esm/components/item-option-switch.d.ts +0 -40
- package/angular/esm/components/item-option-switch.js +0 -99
- package/angular/esm/components/item-option-text-field.d.ts +0 -44
- package/angular/esm/components/item-option-text-field.js +0 -115
- package/angular/esm/components/item-option.d.ts +0 -58
- package/angular/esm/components/item-option.js +0 -171
- package/angular/esm/components/item-slot-drop-panel.d.ts +0 -82
- package/angular/esm/components/item-slot-drop-panel.js +0 -249
- package/angular/esm/components/item-slot-drop.d.ts +0 -77
- package/angular/esm/components/item-slot-drop.js +0 -227
- package/angular/esm/components/item-slot-picker-panel.d.ts +0 -97
- package/angular/esm/components/item-slot-picker-panel.js +0 -309
- package/angular/esm/components/item-slot-picker.d.ts +0 -86
- package/angular/esm/components/item-slot-picker.js +0 -259
- package/angular/esm/components/slot-menu-list.d.ts +0 -46
- package/angular/esm/components/slot-menu-list.js +0 -123
- package/angular/esm/components/slot-menu.d.ts +0 -104
- package/angular/esm/components/slot-menu.js +0 -300
- package/angular/esm/components/viz-item-menu.d.ts +0 -42
- package/angular/esm/components/viz-item-menu.js +0 -111
- package/angular/esm/index.d.ts +0 -109
- package/angular/esm/index.js +0 -217
- package/angular/index.ts +0 -223
- package/angular/package.json +0 -40
- package/angular/tsconfig.json +0 -36
- package/angular/type-fallbacks.d.ts +0 -0
- package/angular/utils/ai-prompt/attachments.d.ts +0 -10
- package/angular/utils/ai-prompt/dictation.d.ts +0 -50
- package/angular/utils/ai-prompt/image-upload.d.ts +0 -12
- package/angular/utils/ai-prompt/index.d.ts +0 -6
- package/angular/utils/ai-prompt/tests/attachments.test.d.ts +0 -1
- package/angular/utils/ai-prompt/tests/dictation.test.d.ts +0 -1
- package/angular/utils/ai-prompt/tests/image-upload.test.d.ts +0 -1
- package/angular/utils/base/base.d.ts +0 -16
- package/angular/utils/base/focus-visible.d.ts +0 -29
- package/angular/utils/base/focusable.d.ts +0 -58
- package/angular/utils/base/index.d.ts +0 -5
- package/angular/utils/base/localized-mixin.d.ts +0 -22
- package/angular/utils/base/sized-mixin.d.ts +0 -17
- package/angular/utils/color/color-palettes.d.ts +0 -17
- package/angular/utils/color/extrapolate-color.d.ts +0 -1
- package/angular/utils/data/load-data-fields-for-datasets.d.ts +0 -22
- package/angular/utils/data-broker/index.d.ts +0 -263
- package/angular/utils/data-field-types/calculate-data-field-icon.d.ts +0 -12
- package/angular/utils/data-field-types/default-acceptable-data-field-types.d.ts +0 -1
- package/angular/utils/data-field-types/tests/calculate-data-field-icon.test.d.ts +0 -1
- package/angular/utils/drag/draggable.d.ts +0 -13
- package/angular/utils/drag/pragmatic-element-adapter.d.ts +0 -2
- package/angular/utils/drag/tests/pragmatic-element-adapter.first-import.test.d.ts +0 -1
- package/angular/utils/drag/tests/pragmatic-element-adapter.test.d.ts +0 -1
- package/angular/utils/filters/expressions.d.ts +0 -15
- package/angular/utils/filters/index.d.ts +0 -1
- package/angular/utils/formatter/calculate-duration.d.ts +0 -2
- package/angular/utils/formatter/decompose-numeric-format.d.ts +0 -11
- package/angular/utils/formatter/default-local-formats.d.ts +0 -20
- package/angular/utils/formatter/formats/cs.d.ts +0 -20
- package/angular/utils/formatter/formats/da.d.ts +0 -20
- package/angular/utils/formatter/formats/de.d.ts +0 -21
- package/angular/utils/formatter/formats/en-GB.d.ts +0 -21
- package/angular/utils/formatter/formats/en-US.d.ts +0 -1
- package/angular/utils/formatter/formats/en.d.ts +0 -1
- package/angular/utils/formatter/formats/es.d.ts +0 -54
- package/angular/utils/formatter/formats/fi.d.ts +0 -20
- package/angular/utils/formatter/formats/fr.d.ts +0 -54
- package/angular/utils/formatter/formats/he.d.ts +0 -20
- package/angular/utils/formatter/formats/hu.d.ts +0 -20
- package/angular/utils/formatter/formats/it.d.ts +0 -54
- package/angular/utils/formatter/formats/ja.d.ts +0 -20
- package/angular/utils/formatter/formats/ko.d.ts +0 -20
- package/angular/utils/formatter/formats/mk.d.ts +0 -20
- package/angular/utils/formatter/formats/nl.d.ts +0 -21
- package/angular/utils/formatter/formats/no.d.ts +0 -21
- package/angular/utils/formatter/formats/pl.d.ts +0 -20
- package/angular/utils/formatter/formats/pt.d.ts +0 -20
- package/angular/utils/formatter/formats/ru.d.ts +0 -20
- package/angular/utils/formatter/formats/sv.d.ts +0 -20
- package/angular/utils/formatter/formats/tr.d.ts +0 -21
- package/angular/utils/formatter/formats/zh-CN.d.ts +0 -20
- package/angular/utils/formatter/formats/zh-TW.d.ts +0 -20
- package/angular/utils/formatter/formatter.d.ts +0 -9
- package/angular/utils/formatter/get-dataset-name.d.ts +0 -2
- package/angular/utils/formatter/get-localized-name.d.ts +0 -4
- package/angular/utils/formatter/localize.d.ts +0 -3
- package/angular/utils/formatter/smart-datetime-formats.const.d.ts +0 -36
- package/angular/utils/formatter/tests/calculate-duration.test.d.ts +0 -1
- package/angular/utils/formatter/tests/decompose-numeric-format.test.d.ts +0 -1
- package/angular/utils/formatter/tests/default-local-formats.test.d.ts +0 -1
- package/angular/utils/formatter/tests/formatter.test.d.ts +0 -1
- package/angular/utils/formatter/tests/get-localized-name.test.d.ts +0 -1
- package/angular/utils/formatter/tests/localize.test.d.ts +0 -1
- package/angular/utils/formula/base/formula-base.d.ts +0 -117
- package/angular/utils/formula/base/formula-input-base.d.ts +0 -62
- package/angular/utils/formula/codemirror/actions.d.ts +0 -47
- package/angular/utils/formula/codemirror/drop-cursor.d.ts +0 -15
- package/angular/utils/formula/codemirror/icon-element.d.ts +0 -7
- package/angular/utils/formula/codemirror/parser.d.ts +0 -16
- package/angular/utils/formula/codemirror/tests/actions.test.d.ts +0 -1
- package/angular/utils/formula/codemirror/theme.d.ts +0 -20
- package/angular/utils/formula/codemirror/widget.d.ts +0 -18
- package/angular/utils/formula/config/aggregations.d.ts +0 -9
- package/angular/utils/formula/config/build-datasets.d.ts +0 -10
- package/angular/utils/formula/config/expression-helpers.d.ts +0 -42
- package/angular/utils/formula/config/functions.d.ts +0 -3
- package/angular/utils/formula/config/groupings.d.ts +0 -9
- package/angular/utils/formula/config/regex.d.ts +0 -39
- package/angular/utils/formula/config/resolve-column-presentation.d.ts +0 -19
- package/angular/utils/formula/config/tests/build-datasets.test.d.ts +0 -1
- package/angular/utils/formula/config/validate-expression.d.ts +0 -19
- package/angular/utils/formula/load-formula-codemirror.d.ts +0 -4
- package/angular/utils/formula/render-explanation-tooltip.d.ts +0 -7
- package/angular/utils/formula/store/formula-display-store.d.ts +0 -93
- package/angular/utils/formula/store/formula-editor-context.d.ts +0 -8
- package/angular/utils/formula/store/formula-editor-store.d.ts +0 -46
- package/angular/utils/formula/store/tests/formula-editor-store.test.d.ts +0 -1
- package/angular/utils/formula/tests/validate-expression.test.d.ts +0 -1
- package/angular/utils/get-css-variable.d.ts +0 -1
- package/angular/utils/index.d.ts +0 -10
- package/angular/utils/localize/set-locale.d.ts +0 -7
- package/angular/utils/map-tile-providers/index.d.ts +0 -93
- package/angular/utils/set-nested-value.d.ts +0 -6
- package/angular/utils/slot-content/ad-hoc-slot-content.d.ts +0 -7
- package/angular/utils/slot-content/render-calculation-label.d.ts +0 -7
- package/angular/utils/slot-content/tests/ad-hoc-slot-content.test.d.ts +0 -1
- package/angular/utils/slot-state/slot-context.d.ts +0 -4
- package/angular/utils/slot-state/slot-store.d.ts +0 -39
- package/angular/utils/store/base-store.d.ts +0 -158
- package/angular/utils/store/dashboard-store.d.ts +0 -49
- package/angular/utils/store/index.d.ts +0 -135
- package/angular/utils/store/item-store.d.ts +0 -33
- package/angular/utils/store/store-registry.d.ts +0 -170
- package/angular/utils/store/tests/dashboard-store.test.d.ts +0 -1
- package/angular/utils/store/tests/item-store.test.d.ts +0 -1
- package/angular/utils/store/tests/store-registry.test.d.ts +0 -1
- package/angular/utils/store/types.d.ts +0 -270
- package/angular/utils/switch-item/index.d.ts +0 -34
- package/angular/utils/switch-item/slot-role-classification.d.ts +0 -31
- package/angular/utils/switch-item/stories/switch-item.stories.d.ts +0 -17
- package/angular/utils/switch-item/tests/slot-role-classification.test.d.ts +0 -1
- package/angular/utils/switch-item/tests/switch-item.test.d.ts +0 -1
- package/angular/utils/tests/set-nested-value.test.d.ts +0 -1
- package/angular/utils/themes/bliss.d.ts +0 -2
- package/angular/utils/themes/classic-dark.d.ts +0 -2
- package/angular/utils/themes/classic.d.ts +0 -2
- package/angular/utils/themes/default-dark.d.ts +0 -2
- package/angular/utils/themes/default.d.ts +0 -2
- package/angular/utils/themes/index.d.ts +0 -4
- package/angular/utils/themes/orion.d.ts +0 -2
- package/angular/utils/themes/pinky.d.ts +0 -2
- package/angular/utils/themes/radiant.d.ts +0 -2
- package/angular/utils/themes/royale.d.ts +0 -2
- package/angular/utils/themes/seasonal.d.ts +0 -2
- package/angular/utils/themes/urban.d.ts +0 -2
- package/angular/utils/themes/vivid.d.ts +0 -2
- package/angular/utils/time/formats.const.d.ts +0 -4
- package/angular/utils/time/period-over-period-condition.const.d.ts +0 -8
- package/angular/utils/time/periods.const.d.ts +0 -15
- package/angular/utils/timezone/datetime-timezone.d.ts +0 -25
- package/angular/utils/timezone/tests/datetime-timezone.test.d.ts +0 -1
- package/angular/utils/transformations/convert-data-field-to-slot-content.d.ts +0 -9
- package/angular/utils/transformations/convert-datasets-to-data-fields.d.ts +0 -30
- package/angular/utils/transformations/tests/convert-data-field-to-slot-content.test.d.ts +0 -1
- package/angular/utils/transformations/tests/convert-datasets-to-data-fields.test.d.ts +0 -1
- package/angular/utils/types/tests/type-check.test.d.ts +0 -1
- package/angular/utils/types/type-check.d.ts +0 -28
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import '@luzmo/analytics-components-kit/display-settings-period-over-period';
|
|
3
|
-
import type { LuzmoDisplaySettingsPeriodOverPeriod as LuzmoDisplaySettingsPeriodOverPeriodHostElement, DisplaySettingsSlotContentChangedEventDetail } from '@luzmo/analytics-components-kit/display-settings-period-over-period';
|
|
4
|
-
export type { DisplaySettingsSlotContentChangedEventDetail } from '@luzmo/analytics-components-kit/display-settings-period-over-period';
|
|
5
|
-
import type { PeriodOverPeriodCondition } from '@luzmo/analytics-components-kit/types';
|
|
6
|
-
import type { Column } from '@luzmo/dashboard-contents-types';
|
|
7
|
-
|
|
8
|
-
@Component({
|
|
9
|
-
selector: 'luzmo-display-settings-period-over-period',
|
|
10
|
-
exportAs: 'luzmoDisplaySettingsPeriodOverPeriod',
|
|
11
|
-
standalone: true,
|
|
12
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
13
|
-
template: '<ng-content />'
|
|
14
|
-
})
|
|
15
|
-
/**
|
|
16
|
-
* Angular wrapper component for <luzmo-display-settings-period-over-period>
|
|
17
|
-
*/
|
|
18
|
-
export class LuzmoDisplaySettingsPeriodOverPeriod implements OnChanges {
|
|
19
|
-
private readonly elementRef = inject<ElementRef<LuzmoDisplaySettingsPeriodOverPeriodHostElement>>(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(): LuzmoDisplaySettingsPeriodOverPeriodHostElement {
|
|
27
|
-
return this.host;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/** The slotContent that is passed to the settings */
|
|
31
|
-
@Input({ alias: 'slotContent' })
|
|
32
|
-
slotContent?: any;
|
|
33
|
-
|
|
34
|
-
/** Which period-over-period UI variant to render, based on available datetime columns and comparison filters. */
|
|
35
|
-
@Input({ alias: 'periodOverPeriodType' })
|
|
36
|
-
periodOverPeriodUiType?: PeriodOverPeriodCondition;
|
|
37
|
-
|
|
38
|
-
/** Datetime columns from the linked dataset available as offset/comparison date columns. */
|
|
39
|
-
@Input({ alias: 'linkedDatasetDatetimeColumns' })
|
|
40
|
-
linkedDatasetDatetimeColumns?: (Column & { datasetId: string; })[];
|
|
41
|
-
|
|
42
|
-
/** The language for UI labels. Supported values: 'en', 'nl', 'fr', 'de', 'es' */
|
|
43
|
-
@Input({ alias: 'language' })
|
|
44
|
-
language?: string;
|
|
45
|
-
|
|
46
|
-
/** The size of the element */
|
|
47
|
-
@Input({ alias: 'size' })
|
|
48
|
-
size?: 's' | 'm' | 'l' | 'xl';
|
|
49
|
-
|
|
50
|
-
/** Event that is fired when the slot content is changed */
|
|
51
|
-
readonly luzmoSlotContentChanged = output<CustomEvent<DisplaySettingsSlotContentChangedEventDetail>>({ alias: 'luzmoSlotContentChanged' });
|
|
52
|
-
|
|
53
|
-
constructor() {
|
|
54
|
-
this.bindEvents();
|
|
55
|
-
this.destroyRef.onDestroy(() => {
|
|
56
|
-
for (const cleanup of this.listenerCleanup) {
|
|
57
|
-
cleanup();
|
|
58
|
-
}
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
63
|
-
for (const key of Object.keys(changes)) {
|
|
64
|
-
switch (key) {
|
|
65
|
-
case 'slotContent':
|
|
66
|
-
this.setHostProperty('slotContent', changes['slotContent'].currentValue);
|
|
67
|
-
break;
|
|
68
|
-
case 'periodOverPeriodUiType':
|
|
69
|
-
this.setHostProperty('periodOverPeriodUiType', changes['periodOverPeriodUiType'].currentValue);
|
|
70
|
-
break;
|
|
71
|
-
case 'linkedDatasetDatetimeColumns':
|
|
72
|
-
this.setHostProperty('linkedDatasetDatetimeColumns', changes['linkedDatasetDatetimeColumns'].currentValue);
|
|
73
|
-
break;
|
|
74
|
-
case 'language':
|
|
75
|
-
this.setHostProperty('language', changes['language'].currentValue);
|
|
76
|
-
break;
|
|
77
|
-
case 'size':
|
|
78
|
-
this.setHostProperty('size', changes['size'].currentValue);
|
|
79
|
-
break;
|
|
80
|
-
default:
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
88
|
-
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
89
|
-
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
90
|
-
* undefined / null by clearing their bindings.
|
|
91
|
-
*/
|
|
92
|
-
private setHostProperty(key: string, value: unknown): void {
|
|
93
|
-
this.renderer.setProperty(this.host, key, value);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
private bindEvents(): void {
|
|
97
|
-
this.listenerCleanup.push(
|
|
98
|
-
this.renderer.listen(this.host, 'luzmo-slot-content-changed', (event: Event) => {
|
|
99
|
-
const typed = event as CustomEvent<DisplaySettingsSlotContentChangedEventDetail>;
|
|
100
|
-
this.luzmoSlotContentChanged.emit(typed);
|
|
101
|
-
})
|
|
102
|
-
);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/** The underlying custom element type for LuzmoDisplaySettingsPeriodOverPeriod */
|
|
107
|
-
export type LuzmoDisplaySettingsPeriodOverPeriodElement = LuzmoDisplaySettingsPeriodOverPeriodHostElement;
|
|
@@ -1,227 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import '@luzmo/analytics-components-kit/display-settings';
|
|
3
|
-
import type { LuzmoDisplaySettings as LuzmoDisplaySettingsHostElement, DisplaySettingsRemoveSlotContentEventDetail, DisplaySettingsSlotContentChangedEventDetail, InfoVisibilityChangedEventDetail } from '@luzmo/analytics-components-kit/display-settings';
|
|
4
|
-
export type { DisplaySettingsRemoveSlotContentEventDetail, DisplaySettingsSlotContentChangedEventDetail, InfoVisibilityChangedEventDetail } from '@luzmo/analytics-components-kit/display-settings';
|
|
5
|
-
import type { DatasetDataFields } from '@luzmo/analytics-components-kit/data-field-panel';
|
|
6
|
-
import type { MeasureColumnsItem } from '@luzmo/analytics-components-kit/slot-menu';
|
|
7
|
-
import type { PeriodOverPeriodCondition, SlotContent } from '@luzmo/analytics-components-kit/types';
|
|
8
|
-
import type { SlotName } from '@luzmo/dashboard-contents-types';
|
|
9
|
-
|
|
10
|
-
@Component({
|
|
11
|
-
selector: 'luzmo-display-settings',
|
|
12
|
-
exportAs: 'luzmoDisplaySettings',
|
|
13
|
-
standalone: true,
|
|
14
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
15
|
-
template: '<ng-content />'
|
|
16
|
-
})
|
|
17
|
-
/**
|
|
18
|
-
* Angular wrapper component for <luzmo-display-settings>
|
|
19
|
-
*/
|
|
20
|
-
export class LuzmoDisplaySettings implements OnChanges {
|
|
21
|
-
private readonly elementRef = inject<ElementRef<LuzmoDisplaySettingsHostElement>>(ElementRef);
|
|
22
|
-
private readonly renderer = inject<Renderer2>(Renderer2);
|
|
23
|
-
private readonly destroyRef = inject<DestroyRef>(DestroyRef);
|
|
24
|
-
private readonly host = this.elementRef.nativeElement;
|
|
25
|
-
private readonly listenerCleanup: Array<() => void> = [];
|
|
26
|
-
|
|
27
|
-
/** The underlying custom element instance. Use to call imperative methods. */
|
|
28
|
-
get nativeElement(): LuzmoDisplaySettingsHostElement {
|
|
29
|
-
return this.host;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/** The language of the settings interface */
|
|
33
|
-
@Input({ alias: 'language' })
|
|
34
|
-
language?: string;
|
|
35
|
-
|
|
36
|
-
/** The language to use for locale-aware formatting and labels */
|
|
37
|
-
@Input({ alias: 'contentLanguage' })
|
|
38
|
-
contentLanguage?: string;
|
|
39
|
-
|
|
40
|
-
/** Whether to show the displaySettings. Is used to hide display Settings in cases where there are multiple columns */
|
|
41
|
-
@Input({ alias: 'hideDisplaySettings', transform: booleanAttribute })
|
|
42
|
-
hideDisplaySettings?: boolean;
|
|
43
|
-
|
|
44
|
-
/** Whether to show the binning in numeric */
|
|
45
|
-
@Input({ alias: 'isBinningDisabled', transform: booleanAttribute })
|
|
46
|
-
isBinningDisabled?: boolean;
|
|
47
|
-
|
|
48
|
-
/** Whether to show the datetime options */
|
|
49
|
-
@Input({ alias: 'areDatetimeOptionsEnabled', transform: booleanAttribute })
|
|
50
|
-
areDatetimeOptionsEnabled?: boolean;
|
|
51
|
-
|
|
52
|
-
/** Whether to show the grand totals */
|
|
53
|
-
@Input({ alias: 'areGrandTotalsEnabled', transform: booleanAttribute })
|
|
54
|
-
areGrandTotalsEnabled?: boolean;
|
|
55
|
-
|
|
56
|
-
/** Whether to show the aggregation options */
|
|
57
|
-
@Input({ alias: 'isAggregationDisabled', transform: booleanAttribute })
|
|
58
|
-
isAggregationDisabled?: boolean;
|
|
59
|
-
|
|
60
|
-
/** Whether to show the cumulative sum options */
|
|
61
|
-
@Input({ alias: 'isCumulativeSumEnabled', transform: booleanAttribute })
|
|
62
|
-
isCumulativeSumEnabled?: boolean;
|
|
63
|
-
|
|
64
|
-
/** Whether to show the period-over-period in numeric */
|
|
65
|
-
@Input({ alias: 'periodOverPeriodUiType' })
|
|
66
|
-
periodOverPeriodUiType?: PeriodOverPeriodCondition | null;
|
|
67
|
-
|
|
68
|
-
/** Whether to show the trash button next to the label */
|
|
69
|
-
@Input({ alias: 'showRemoveButton', transform: booleanAttribute })
|
|
70
|
-
showRemoveButton?: boolean;
|
|
71
|
-
|
|
72
|
-
/** The slot type */
|
|
73
|
-
@Input({ alias: 'slotType' })
|
|
74
|
-
slotType?: string;
|
|
75
|
-
|
|
76
|
-
/** The slot name used to distinguish measure and dimension calculations. */
|
|
77
|
-
@Input({ alias: 'slotName' })
|
|
78
|
-
slotName?: SlotName;
|
|
79
|
-
|
|
80
|
-
/** The slot content model (label, formatting, aggregation, etc.) for the field being configured. */
|
|
81
|
-
@Input({ alias: 'slotContent' })
|
|
82
|
-
slotContent?: SlotContent;
|
|
83
|
-
|
|
84
|
-
/** Datasets used to resolve column names in ad-hoc calculation previews. */
|
|
85
|
-
@Input({ alias: 'datasetsDataFields' })
|
|
86
|
-
datasetsDataFields?: DatasetDataFields[];
|
|
87
|
-
|
|
88
|
-
/** The API URL used when resolving calculation previews by dataset id. */
|
|
89
|
-
@Input({ alias: 'apiUrl' })
|
|
90
|
-
apiUrl?: string;
|
|
91
|
-
|
|
92
|
-
/** The auth key used when resolving calculation previews by dataset id. */
|
|
93
|
-
@Input({ alias: 'authKey' })
|
|
94
|
-
authKey?: string;
|
|
95
|
-
|
|
96
|
-
/** The auth token used when resolving calculation previews by dataset id. */
|
|
97
|
-
@Input({ alias: 'authToken' })
|
|
98
|
-
authToken?: string;
|
|
99
|
-
|
|
100
|
-
/** The list of columns that can be used for the rate aggregation */
|
|
101
|
-
@Input({ alias: 'measureColumns' })
|
|
102
|
-
measureColumns?: MeasureColumnsItem[];
|
|
103
|
-
|
|
104
|
-
/** The size of the element */
|
|
105
|
-
@Input({ alias: 'size' })
|
|
106
|
-
size?: 's' | 'm' | 'l' | 'xl';
|
|
107
|
-
|
|
108
|
-
/** Event that is fired when the slot content is changed */
|
|
109
|
-
readonly luzmoSlotContentChanged = output<CustomEvent<DisplaySettingsSlotContentChangedEventDetail>>({ alias: 'luzmoSlotContentChanged' });
|
|
110
|
-
|
|
111
|
-
/** Event that is fired when the remove button is clicked */
|
|
112
|
-
readonly luzmoRemoveSlotContent = output<CustomEvent<DisplaySettingsRemoveSlotContentEventDetail>>({ alias: 'luzmoRemoveSlotContent' });
|
|
113
|
-
|
|
114
|
-
/** Event that is fired when the info button is clicked, includes the visibility state and ID values */
|
|
115
|
-
readonly luzmoInfoVisibilityChanged = output<CustomEvent<InfoVisibilityChangedEventDetail>>({ alias: 'luzmoInfoVisibilityChanged' });
|
|
116
|
-
|
|
117
|
-
constructor() {
|
|
118
|
-
this.bindEvents();
|
|
119
|
-
this.destroyRef.onDestroy(() => {
|
|
120
|
-
for (const cleanup of this.listenerCleanup) {
|
|
121
|
-
cleanup();
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
127
|
-
for (const key of Object.keys(changes)) {
|
|
128
|
-
switch (key) {
|
|
129
|
-
case 'language':
|
|
130
|
-
this.setHostProperty('language', changes['language'].currentValue);
|
|
131
|
-
break;
|
|
132
|
-
case 'contentLanguage':
|
|
133
|
-
this.setHostProperty('contentLanguage', changes['contentLanguage'].currentValue);
|
|
134
|
-
break;
|
|
135
|
-
case 'hideDisplaySettings':
|
|
136
|
-
this.setHostProperty('hideDisplaySettings', changes['hideDisplaySettings'].currentValue);
|
|
137
|
-
break;
|
|
138
|
-
case 'isBinningDisabled':
|
|
139
|
-
this.setHostProperty('isBinningDisabled', changes['isBinningDisabled'].currentValue);
|
|
140
|
-
break;
|
|
141
|
-
case 'areDatetimeOptionsEnabled':
|
|
142
|
-
this.setHostProperty('areDatetimeOptionsEnabled', changes['areDatetimeOptionsEnabled'].currentValue);
|
|
143
|
-
break;
|
|
144
|
-
case 'areGrandTotalsEnabled':
|
|
145
|
-
this.setHostProperty('areGrandTotalsEnabled', changes['areGrandTotalsEnabled'].currentValue);
|
|
146
|
-
break;
|
|
147
|
-
case 'isAggregationDisabled':
|
|
148
|
-
this.setHostProperty('isAggregationDisabled', changes['isAggregationDisabled'].currentValue);
|
|
149
|
-
break;
|
|
150
|
-
case 'isCumulativeSumEnabled':
|
|
151
|
-
this.setHostProperty('isCumulativeSumEnabled', changes['isCumulativeSumEnabled'].currentValue);
|
|
152
|
-
break;
|
|
153
|
-
case 'periodOverPeriodUiType':
|
|
154
|
-
this.setHostProperty('periodOverPeriodUiType', changes['periodOverPeriodUiType'].currentValue);
|
|
155
|
-
break;
|
|
156
|
-
case 'showRemoveButton':
|
|
157
|
-
this.setHostProperty('showRemoveButton', changes['showRemoveButton'].currentValue);
|
|
158
|
-
break;
|
|
159
|
-
case 'slotType':
|
|
160
|
-
this.setHostProperty('slotType', changes['slotType'].currentValue);
|
|
161
|
-
break;
|
|
162
|
-
case 'slotName':
|
|
163
|
-
this.setHostProperty('slotName', changes['slotName'].currentValue);
|
|
164
|
-
break;
|
|
165
|
-
case 'slotContent':
|
|
166
|
-
this.setHostProperty('slotContent', changes['slotContent'].currentValue);
|
|
167
|
-
break;
|
|
168
|
-
case 'datasetsDataFields':
|
|
169
|
-
this.setHostProperty('datasetsDataFields', changes['datasetsDataFields'].currentValue);
|
|
170
|
-
break;
|
|
171
|
-
case 'apiUrl':
|
|
172
|
-
this.setHostProperty('apiUrl', changes['apiUrl'].currentValue);
|
|
173
|
-
break;
|
|
174
|
-
case 'authKey':
|
|
175
|
-
this.setHostProperty('authKey', changes['authKey'].currentValue);
|
|
176
|
-
break;
|
|
177
|
-
case 'authToken':
|
|
178
|
-
this.setHostProperty('authToken', changes['authToken'].currentValue);
|
|
179
|
-
break;
|
|
180
|
-
case 'measureColumns':
|
|
181
|
-
this.setHostProperty('measureColumns', changes['measureColumns'].currentValue);
|
|
182
|
-
break;
|
|
183
|
-
case 'size':
|
|
184
|
-
this.setHostProperty('size', changes['size'].currentValue);
|
|
185
|
-
break;
|
|
186
|
-
default:
|
|
187
|
-
break;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
194
|
-
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
195
|
-
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
196
|
-
* undefined / null by clearing their bindings.
|
|
197
|
-
*/
|
|
198
|
-
private setHostProperty(key: string, value: unknown): void {
|
|
199
|
-
this.renderer.setProperty(this.host, key, value);
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
private bindEvents(): void {
|
|
203
|
-
this.listenerCleanup.push(
|
|
204
|
-
this.renderer.listen(this.host, 'luzmo-slot-content-changed', (event: Event) => {
|
|
205
|
-
const typed = event as CustomEvent<DisplaySettingsSlotContentChangedEventDetail>;
|
|
206
|
-
this.luzmoSlotContentChanged.emit(typed);
|
|
207
|
-
})
|
|
208
|
-
);
|
|
209
|
-
|
|
210
|
-
this.listenerCleanup.push(
|
|
211
|
-
this.renderer.listen(this.host, 'luzmo-remove-slot-content', (event: Event) => {
|
|
212
|
-
const typed = event as CustomEvent<DisplaySettingsRemoveSlotContentEventDetail>;
|
|
213
|
-
this.luzmoRemoveSlotContent.emit(typed);
|
|
214
|
-
})
|
|
215
|
-
);
|
|
216
|
-
|
|
217
|
-
this.listenerCleanup.push(
|
|
218
|
-
this.renderer.listen(this.host, 'luzmo-info-visibility-changed', (event: Event) => {
|
|
219
|
-
const typed = event as CustomEvent<InfoVisibilityChangedEventDetail>;
|
|
220
|
-
this.luzmoInfoVisibilityChanged.emit(typed);
|
|
221
|
-
})
|
|
222
|
-
);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/** The underlying custom element type for LuzmoDisplaySettings */
|
|
227
|
-
export type LuzmoDisplaySettingsElement = LuzmoDisplaySettingsHostElement;
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import '@luzmo/analytics-components-kit/filter-expression-picker';
|
|
3
|
-
import type { LuzmoFilterExpressionPicker as LuzmoFilterExpressionPickerHostElement } from '@luzmo/analytics-components-kit/filter-expression-picker';
|
|
4
|
-
import type { ColumnSubtype, ColumnType } from '@luzmo/dashboard-contents-types';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: 'luzmo-filter-expression-picker',
|
|
8
|
-
exportAs: 'luzmoFilterExpressionPicker',
|
|
9
|
-
standalone: true,
|
|
10
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11
|
-
template: '<ng-content />'
|
|
12
|
-
})
|
|
13
|
-
/**
|
|
14
|
-
* Angular wrapper component for <luzmo-filter-expression-picker>
|
|
15
|
-
*/
|
|
16
|
-
export class LuzmoFilterExpressionPicker implements OnChanges {
|
|
17
|
-
private readonly elementRef = inject<ElementRef<LuzmoFilterExpressionPickerHostElement>>(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(): LuzmoFilterExpressionPickerHostElement {
|
|
25
|
-
return this.host;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/** The filter object */
|
|
29
|
-
@Input({ alias: 'filter' })
|
|
30
|
-
filter?: any;
|
|
31
|
-
|
|
32
|
-
/** Whether the picker has a label */
|
|
33
|
-
@Input({ alias: 'hasLabel', transform: booleanAttribute })
|
|
34
|
-
hasLabel?: boolean;
|
|
35
|
-
|
|
36
|
-
/** The label for the picker, if hasLabel is true */
|
|
37
|
-
@Input({ alias: 'label' })
|
|
38
|
-
label?: string;
|
|
39
|
-
|
|
40
|
-
/** 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. */
|
|
41
|
-
@Input({ alias: 'allowEmpty', transform: booleanAttribute })
|
|
42
|
-
allowEmpty?: boolean;
|
|
43
|
-
|
|
44
|
-
/** The placeholder text for the picker is no value selected. If allowEmpty is true, this will be used as the label. */
|
|
45
|
-
@Input({ alias: 'placeholder' })
|
|
46
|
-
placeholder?: string;
|
|
47
|
-
|
|
48
|
-
/** Whether the picker is disabled */
|
|
49
|
-
@Input({ alias: 'disabled', transform: booleanAttribute })
|
|
50
|
-
disabled?: boolean;
|
|
51
|
-
|
|
52
|
-
/** The type of the column */
|
|
53
|
-
@Input({ alias: 'type' })
|
|
54
|
-
type?: ColumnType;
|
|
55
|
-
|
|
56
|
-
/** The subtype of the column */
|
|
57
|
-
@Input({ alias: 'subtype' })
|
|
58
|
-
subtype?: ColumnSubtype;
|
|
59
|
-
|
|
60
|
-
/** Whether the expression is invalid */
|
|
61
|
-
@Input({ alias: 'invalid', transform: booleanAttribute })
|
|
62
|
-
invalid?: boolean;
|
|
63
|
-
|
|
64
|
-
/** Whether the column is a formula */
|
|
65
|
-
@Input({ alias: 'isFormula', transform: booleanAttribute })
|
|
66
|
-
isFormula?: boolean;
|
|
67
|
-
|
|
68
|
-
/** The language for UI labels. Supported values: 'en', 'nl', 'fr', 'de', 'es' */
|
|
69
|
-
@Input({ alias: 'language' })
|
|
70
|
-
language?: string;
|
|
71
|
-
|
|
72
|
-
/** The size of the element */
|
|
73
|
-
@Input({ alias: 'size' })
|
|
74
|
-
size?: 's' | 'm' | 'l' | 'xl';
|
|
75
|
-
|
|
76
|
-
/** When this control is rendered, focus it automatically */
|
|
77
|
-
@Input({ alias: 'autofocus', transform: booleanAttribute })
|
|
78
|
-
autofocus?: boolean;
|
|
79
|
-
|
|
80
|
-
/** The tab index to apply to this control. See general documentation about the tabindex HTML property */
|
|
81
|
-
@Input({ alias: 'tabIndex' })
|
|
82
|
-
tabIndex?: number;
|
|
83
|
-
|
|
84
|
-
/** Fired when the user selects a filter expression (operator); `detail.expression` holds the chosen expression. */
|
|
85
|
-
readonly luzmoExpressionSelected = output<CustomEvent<unknown>>({ alias: 'luzmoExpressionSelected' });
|
|
86
|
-
|
|
87
|
-
constructor() {
|
|
88
|
-
this.bindEvents();
|
|
89
|
-
this.destroyRef.onDestroy(() => {
|
|
90
|
-
for (const cleanup of this.listenerCleanup) {
|
|
91
|
-
cleanup();
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
97
|
-
for (const key of Object.keys(changes)) {
|
|
98
|
-
switch (key) {
|
|
99
|
-
case 'filter':
|
|
100
|
-
this.setHostProperty('filter', changes['filter'].currentValue);
|
|
101
|
-
break;
|
|
102
|
-
case 'hasLabel':
|
|
103
|
-
this.setHostProperty('hasLabel', changes['hasLabel'].currentValue);
|
|
104
|
-
break;
|
|
105
|
-
case 'label':
|
|
106
|
-
this.setHostProperty('label', changes['label'].currentValue);
|
|
107
|
-
break;
|
|
108
|
-
case 'allowEmpty':
|
|
109
|
-
this.setHostProperty('allowEmpty', changes['allowEmpty'].currentValue);
|
|
110
|
-
break;
|
|
111
|
-
case 'placeholder':
|
|
112
|
-
this.setHostProperty('placeholder', changes['placeholder'].currentValue);
|
|
113
|
-
break;
|
|
114
|
-
case 'disabled':
|
|
115
|
-
this.setHostProperty('disabled', changes['disabled'].currentValue);
|
|
116
|
-
break;
|
|
117
|
-
case 'type':
|
|
118
|
-
this.setHostProperty('type', changes['type'].currentValue);
|
|
119
|
-
break;
|
|
120
|
-
case 'subtype':
|
|
121
|
-
this.setHostProperty('subtype', changes['subtype'].currentValue);
|
|
122
|
-
break;
|
|
123
|
-
case 'invalid':
|
|
124
|
-
this.setHostProperty('invalid', changes['invalid'].currentValue);
|
|
125
|
-
break;
|
|
126
|
-
case 'isFormula':
|
|
127
|
-
this.setHostProperty('isFormula', changes['isFormula'].currentValue);
|
|
128
|
-
break;
|
|
129
|
-
case 'language':
|
|
130
|
-
this.setHostProperty('language', changes['language'].currentValue);
|
|
131
|
-
break;
|
|
132
|
-
case 'size':
|
|
133
|
-
this.setHostProperty('size', changes['size'].currentValue);
|
|
134
|
-
break;
|
|
135
|
-
case 'autofocus':
|
|
136
|
-
this.setHostProperty('autofocus', changes['autofocus'].currentValue);
|
|
137
|
-
break;
|
|
138
|
-
case 'tabIndex':
|
|
139
|
-
this.setHostProperty('tabIndex', changes['tabIndex'].currentValue);
|
|
140
|
-
break;
|
|
141
|
-
default:
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
149
|
-
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
150
|
-
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
151
|
-
* undefined / null by clearing their bindings.
|
|
152
|
-
*/
|
|
153
|
-
private setHostProperty(key: string, value: unknown): void {
|
|
154
|
-
this.renderer.setProperty(this.host, key, value);
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
private bindEvents(): void {
|
|
158
|
-
this.listenerCleanup.push(
|
|
159
|
-
this.renderer.listen(this.host, 'luzmo-expression-selected', (event: Event) => {
|
|
160
|
-
const typed = event as CustomEvent<unknown>;
|
|
161
|
-
this.luzmoExpressionSelected.emit(typed);
|
|
162
|
-
})
|
|
163
|
-
);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/** The underlying custom element type for LuzmoFilterExpressionPicker */
|
|
168
|
-
export type LuzmoFilterExpressionPickerElement = LuzmoFilterExpressionPickerHostElement;
|
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import '@luzmo/analytics-components-kit/filter-item';
|
|
3
|
-
import type { LuzmoFilterItem as LuzmoFilterItemHostElement } from '@luzmo/analytics-components-kit/filter-item';
|
|
4
|
-
import type { FilterParameter } from '@luzmo/analytics-components-kit/filters';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: 'luzmo-filter-item',
|
|
8
|
-
exportAs: 'luzmoFilterItem',
|
|
9
|
-
standalone: true,
|
|
10
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11
|
-
template: '<ng-content />'
|
|
12
|
-
})
|
|
13
|
-
/**
|
|
14
|
-
* Angular wrapper component for <luzmo-filter-item>
|
|
15
|
-
*/
|
|
16
|
-
export class LuzmoFilterItem implements OnChanges {
|
|
17
|
-
private readonly elementRef = inject<ElementRef<LuzmoFilterItemHostElement>>(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(): LuzmoFilterItemHostElement {
|
|
25
|
-
return this.host;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/** The API URL of the databroker */
|
|
29
|
-
@Input({ alias: 'apiUrl' })
|
|
30
|
-
apiUrl?: string;
|
|
31
|
-
|
|
32
|
-
/** The auth key of the databroker */
|
|
33
|
-
@Input({ alias: 'authKey' })
|
|
34
|
-
authKey?: string;
|
|
35
|
-
|
|
36
|
-
/** The auth token of the databroker */
|
|
37
|
-
@Input({ alias: 'authToken' })
|
|
38
|
-
authToken?: string;
|
|
39
|
-
|
|
40
|
-
/** The cache time of the databroker */
|
|
41
|
-
@Input({ alias: 'cacheTime' })
|
|
42
|
-
cacheTime?: number;
|
|
43
|
-
|
|
44
|
-
/** The language of the content */
|
|
45
|
-
@Input({ alias: 'contentLanguage' })
|
|
46
|
-
contentLanguage?: string;
|
|
47
|
-
|
|
48
|
-
/** The time zone to use for the date picker */
|
|
49
|
-
@Input({ alias: 'timeZone' })
|
|
50
|
-
timeZone?: string;
|
|
51
|
-
|
|
52
|
-
/** The dataset ids to fetch columns & formulas */
|
|
53
|
-
@Input({ alias: 'datasetIds' })
|
|
54
|
-
datasetIds?: string[];
|
|
55
|
-
|
|
56
|
-
/** The filter to display */
|
|
57
|
-
@Input({ alias: 'filter' })
|
|
58
|
-
filter?: any;
|
|
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
|
-
|
|
68
|
-
/** The language for UI labels. Supported values: 'en', 'nl', 'fr', 'de', 'es' */
|
|
69
|
-
@Input({ alias: 'language' })
|
|
70
|
-
language?: string;
|
|
71
|
-
|
|
72
|
-
/** The size of the element */
|
|
73
|
-
@Input({ alias: 'size' })
|
|
74
|
-
size?: 's' | 'm' | 'l' | 'xl';
|
|
75
|
-
|
|
76
|
-
/** Disable this control. It will not receive focus or events */
|
|
77
|
-
@Input({ alias: 'disabled', transform: booleanAttribute })
|
|
78
|
-
disabled?: boolean;
|
|
79
|
-
|
|
80
|
-
/** When this control is rendered, focus it automatically */
|
|
81
|
-
@Input({ alias: 'autofocus', transform: booleanAttribute })
|
|
82
|
-
autofocus?: boolean;
|
|
83
|
-
|
|
84
|
-
/** The tab index to apply to this control. See general documentation about the tabindex HTML property */
|
|
85
|
-
@Input({ alias: 'tabIndex' })
|
|
86
|
-
tabIndex?: number;
|
|
87
|
-
|
|
88
|
-
/** Fired when any part of the filter changes; `detail.filter` holds the updated filter. */
|
|
89
|
-
readonly luzmoFilterChanged = output<CustomEvent<unknown>>({ alias: 'luzmoFilterChanged' });
|
|
90
|
-
|
|
91
|
-
constructor() {
|
|
92
|
-
this.bindEvents();
|
|
93
|
-
this.destroyRef.onDestroy(() => {
|
|
94
|
-
for (const cleanup of this.listenerCleanup) {
|
|
95
|
-
cleanup();
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
101
|
-
for (const key of Object.keys(changes)) {
|
|
102
|
-
switch (key) {
|
|
103
|
-
case 'apiUrl':
|
|
104
|
-
this.setHostProperty('apiUrl', changes['apiUrl'].currentValue);
|
|
105
|
-
break;
|
|
106
|
-
case 'authKey':
|
|
107
|
-
this.setHostProperty('authKey', changes['authKey'].currentValue);
|
|
108
|
-
break;
|
|
109
|
-
case 'authToken':
|
|
110
|
-
this.setHostProperty('authToken', changes['authToken'].currentValue);
|
|
111
|
-
break;
|
|
112
|
-
case 'cacheTime':
|
|
113
|
-
this.setHostProperty('cacheTime', changes['cacheTime'].currentValue);
|
|
114
|
-
break;
|
|
115
|
-
case 'contentLanguage':
|
|
116
|
-
this.setHostProperty('contentLanguage', changes['contentLanguage'].currentValue);
|
|
117
|
-
break;
|
|
118
|
-
case 'timeZone':
|
|
119
|
-
this.setHostProperty('timeZone', changes['timeZone'].currentValue);
|
|
120
|
-
break;
|
|
121
|
-
case 'datasetIds':
|
|
122
|
-
this.setHostProperty('datasetIds', changes['datasetIds'].currentValue);
|
|
123
|
-
break;
|
|
124
|
-
case 'filter':
|
|
125
|
-
this.setHostProperty('filter', changes['filter'].currentValue);
|
|
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;
|
|
133
|
-
case 'language':
|
|
134
|
-
this.setHostProperty('language', changes['language'].currentValue);
|
|
135
|
-
break;
|
|
136
|
-
case 'size':
|
|
137
|
-
this.setHostProperty('size', changes['size'].currentValue);
|
|
138
|
-
break;
|
|
139
|
-
case 'disabled':
|
|
140
|
-
this.setHostProperty('disabled', changes['disabled'].currentValue);
|
|
141
|
-
break;
|
|
142
|
-
case 'autofocus':
|
|
143
|
-
this.setHostProperty('autofocus', changes['autofocus'].currentValue);
|
|
144
|
-
break;
|
|
145
|
-
case 'tabIndex':
|
|
146
|
-
this.setHostProperty('tabIndex', changes['tabIndex'].currentValue);
|
|
147
|
-
break;
|
|
148
|
-
default:
|
|
149
|
-
break;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
156
|
-
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
157
|
-
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
158
|
-
* undefined / null by clearing their bindings.
|
|
159
|
-
*/
|
|
160
|
-
private setHostProperty(key: string, value: unknown): void {
|
|
161
|
-
this.renderer.setProperty(this.host, key, value);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
private bindEvents(): void {
|
|
165
|
-
this.listenerCleanup.push(
|
|
166
|
-
this.renderer.listen(this.host, 'luzmo-filter-changed', (event: Event) => {
|
|
167
|
-
const typed = event as CustomEvent<unknown>;
|
|
168
|
-
this.luzmoFilterChanged.emit(typed);
|
|
169
|
-
})
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/** The underlying custom element type for LuzmoFilterItem */
|
|
175
|
-
export type LuzmoFilterItemElement = LuzmoFilterItemHostElement;
|