@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,149 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import '@luzmo/analytics-components-kit/item-option-panel';
|
|
3
|
-
import type { LuzmoItemOptionPanel as LuzmoItemOptionPanelHostElement, ItemOptionsChangedEventDetail } from '@luzmo/analytics-components-kit/item-option-panel';
|
|
4
|
-
export type { ItemOptionsChangedEventDetail } from '@luzmo/analytics-components-kit/item-option-panel';
|
|
5
|
-
import type { ElementSize } from '@luzmo/analytics-components-kit/types';
|
|
6
|
-
import type { OptionsConfig, Slot, ThemeConfig, TranslationOverrides, TranslationsFile, VizItemType } from '@luzmo/dashboard-contents-types';
|
|
7
|
-
|
|
8
|
-
@Component({
|
|
9
|
-
selector: 'luzmo-item-option-panel',
|
|
10
|
-
exportAs: 'luzmoItemOptionPanel',
|
|
11
|
-
standalone: true,
|
|
12
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
13
|
-
template: '<ng-content />'
|
|
14
|
-
})
|
|
15
|
-
/**
|
|
16
|
-
* Angular wrapper component for <luzmo-item-option-panel>
|
|
17
|
-
*/
|
|
18
|
-
export class LuzmoItemOptionPanel implements OnChanges {
|
|
19
|
-
private readonly elementRef = inject<ElementRef<LuzmoItemOptionPanelHostElement>>(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(): LuzmoItemOptionPanelHostElement {
|
|
27
|
-
return this.host;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/** The language in which to display the option configuration controls. */
|
|
31
|
-
@Input({ alias: 'language' })
|
|
32
|
-
language?: string;
|
|
33
|
-
|
|
34
|
-
/** The item type to load the configuration for. Leave empty if using a custom options configuration. */
|
|
35
|
-
@Input({ alias: 'itemType' })
|
|
36
|
-
itemType?: VizItemType;
|
|
37
|
-
|
|
38
|
-
/** The options of the item. */
|
|
39
|
-
@Input({ alias: 'options' })
|
|
40
|
-
options?: Record<string, unknown>;
|
|
41
|
-
|
|
42
|
-
/** The slots of the item. */
|
|
43
|
-
@Input({ alias: 'slots' })
|
|
44
|
-
slots?: Slot[];
|
|
45
|
-
|
|
46
|
-
/** When using a custom options configuration, this is the configuration object. */
|
|
47
|
-
@Input({ alias: 'customOptionsConfiguration' })
|
|
48
|
-
customOptionsConfiguration?: OptionsConfig;
|
|
49
|
-
|
|
50
|
-
/** When using a custom translations configuration, this is the configuration object. */
|
|
51
|
-
@Input({ alias: 'customTranslations' })
|
|
52
|
-
customTranslations?: TranslationOverrides | TranslationsFile;
|
|
53
|
-
|
|
54
|
-
/** The theme of the item. */
|
|
55
|
-
@Input({ alias: 'theme' })
|
|
56
|
-
theme?: ThemeConfig & Record<string, any>;
|
|
57
|
-
|
|
58
|
-
/** The size of the item option panel component. */
|
|
59
|
-
@Input({ alias: 'size' })
|
|
60
|
-
size?: ElementSize;
|
|
61
|
-
|
|
62
|
-
/** The API URL of the databroker */
|
|
63
|
-
@Input({ alias: 'apiUrl' })
|
|
64
|
-
apiUrl?: string;
|
|
65
|
-
|
|
66
|
-
/** The auth key of the databroker */
|
|
67
|
-
@Input({ alias: 'authKey' })
|
|
68
|
-
authKey?: string;
|
|
69
|
-
|
|
70
|
-
/** The auth token of the databroker */
|
|
71
|
-
@Input({ alias: 'authToken' })
|
|
72
|
-
authToken?: string;
|
|
73
|
-
|
|
74
|
-
/** Announces that the `options` of the element have changed */
|
|
75
|
-
readonly luzmoOptionsChanged = output<CustomEvent<ItemOptionsChangedEventDetail>>({ alias: 'luzmoOptionsChanged' });
|
|
76
|
-
|
|
77
|
-
constructor() {
|
|
78
|
-
this.bindEvents();
|
|
79
|
-
this.destroyRef.onDestroy(() => {
|
|
80
|
-
for (const cleanup of this.listenerCleanup) {
|
|
81
|
-
cleanup();
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
87
|
-
for (const key of Object.keys(changes)) {
|
|
88
|
-
switch (key) {
|
|
89
|
-
case 'language':
|
|
90
|
-
this.setHostProperty('language', changes['language'].currentValue);
|
|
91
|
-
break;
|
|
92
|
-
case 'itemType':
|
|
93
|
-
this.setHostProperty('itemType', changes['itemType'].currentValue);
|
|
94
|
-
break;
|
|
95
|
-
case 'options':
|
|
96
|
-
this.setHostProperty('options', changes['options'].currentValue);
|
|
97
|
-
break;
|
|
98
|
-
case 'slots':
|
|
99
|
-
this.setHostProperty('slots', changes['slots'].currentValue);
|
|
100
|
-
break;
|
|
101
|
-
case 'customOptionsConfiguration':
|
|
102
|
-
this.setHostProperty('customOptionsConfiguration', changes['customOptionsConfiguration'].currentValue);
|
|
103
|
-
break;
|
|
104
|
-
case 'customTranslations':
|
|
105
|
-
this.setHostProperty('customTranslations', changes['customTranslations'].currentValue);
|
|
106
|
-
break;
|
|
107
|
-
case 'theme':
|
|
108
|
-
this.setHostProperty('theme', changes['theme'].currentValue);
|
|
109
|
-
break;
|
|
110
|
-
case 'size':
|
|
111
|
-
this.setHostProperty('size', changes['size'].currentValue);
|
|
112
|
-
break;
|
|
113
|
-
case 'apiUrl':
|
|
114
|
-
this.setHostProperty('apiUrl', changes['apiUrl'].currentValue);
|
|
115
|
-
break;
|
|
116
|
-
case 'authKey':
|
|
117
|
-
this.setHostProperty('authKey', changes['authKey'].currentValue);
|
|
118
|
-
break;
|
|
119
|
-
case 'authToken':
|
|
120
|
-
this.setHostProperty('authToken', changes['authToken'].currentValue);
|
|
121
|
-
break;
|
|
122
|
-
default:
|
|
123
|
-
break;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
130
|
-
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
131
|
-
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
132
|
-
* undefined / null by clearing their bindings.
|
|
133
|
-
*/
|
|
134
|
-
private setHostProperty(key: string, value: unknown): void {
|
|
135
|
-
this.renderer.setProperty(this.host, key, value);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
private bindEvents(): void {
|
|
139
|
-
this.listenerCleanup.push(
|
|
140
|
-
this.renderer.listen(this.host, 'luzmo-options-changed', (event: Event) => {
|
|
141
|
-
const typed = event as CustomEvent<ItemOptionsChangedEventDetail>;
|
|
142
|
-
this.luzmoOptionsChanged.emit(typed);
|
|
143
|
-
})
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/** The underlying custom element type for LuzmoItemOptionPanel */
|
|
149
|
-
export type LuzmoItemOptionPanelElement = LuzmoItemOptionPanelHostElement;
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import '@luzmo/analytics-components-kit/item-option-picker';
|
|
3
|
-
import type { LuzmoItemOptionPicker as LuzmoItemOptionPickerHostElement, ItemOptionChangedEventDetail } from '@luzmo/analytics-components-kit/item-option-picker';
|
|
4
|
-
export type { ItemOptionChangedEventDetail } from '@luzmo/analytics-components-kit/item-option-picker';
|
|
5
|
-
import type { Placement } from '@luzmo/lucero';
|
|
6
|
-
|
|
7
|
-
@Component({
|
|
8
|
-
selector: 'luzmo-item-option-picker',
|
|
9
|
-
exportAs: 'luzmoItemOptionPicker',
|
|
10
|
-
standalone: true,
|
|
11
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
12
|
-
template: '<ng-content />'
|
|
13
|
-
})
|
|
14
|
-
/**
|
|
15
|
-
* Angular wrapper component for <luzmo-item-option-picker>
|
|
16
|
-
*/
|
|
17
|
-
export class LuzmoItemOptionPicker implements OnChanges {
|
|
18
|
-
private readonly elementRef = inject<ElementRef<LuzmoItemOptionPickerHostElement>>(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(): LuzmoItemOptionPickerHostElement {
|
|
26
|
-
return this.host;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/** The available options to choose from (key → label). */
|
|
30
|
-
@Input({ alias: 'values' })
|
|
31
|
-
values?: Record<string, string>;
|
|
32
|
-
|
|
33
|
-
/** Whether the control is disabled (non-interactive). */
|
|
34
|
-
@Input({ alias: 'disabled', transform: booleanAttribute })
|
|
35
|
-
disabled?: boolean;
|
|
36
|
-
|
|
37
|
-
/** Placement of the picker dropdown relative to its trigger. */
|
|
38
|
-
@Input({ alias: 'placement' })
|
|
39
|
-
placement?: Placement;
|
|
40
|
-
|
|
41
|
-
/** The currently selected option key. */
|
|
42
|
-
@Input({ alias: 'value' })
|
|
43
|
-
value?: string;
|
|
44
|
-
|
|
45
|
-
/** Optional transform applied to the stored value before it is displayed in the control. */
|
|
46
|
-
@Input({ alias: 'parseValue' })
|
|
47
|
-
parseValue?: unknown;
|
|
48
|
-
|
|
49
|
-
/** Optional transform applied to the control's value before it is emitted in the change event. */
|
|
50
|
-
@Input({ alias: 'toValue' })
|
|
51
|
-
toValue?: unknown;
|
|
52
|
-
|
|
53
|
-
/** The default option key used when no value is set. */
|
|
54
|
-
@Input({ alias: 'default' })
|
|
55
|
-
default?: string;
|
|
56
|
-
|
|
57
|
-
/** Emitted when the option value changes. */
|
|
58
|
-
readonly luzmoOptionChanged = output<CustomEvent<ItemOptionChangedEventDetail>>({ alias: 'luzmoOptionChanged' });
|
|
59
|
-
|
|
60
|
-
constructor() {
|
|
61
|
-
this.bindEvents();
|
|
62
|
-
this.destroyRef.onDestroy(() => {
|
|
63
|
-
for (const cleanup of this.listenerCleanup) {
|
|
64
|
-
cleanup();
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
70
|
-
for (const key of Object.keys(changes)) {
|
|
71
|
-
switch (key) {
|
|
72
|
-
case 'values':
|
|
73
|
-
this.setHostProperty('values', changes['values'].currentValue);
|
|
74
|
-
break;
|
|
75
|
-
case 'disabled':
|
|
76
|
-
this.setHostProperty('disabled', changes['disabled'].currentValue);
|
|
77
|
-
break;
|
|
78
|
-
case 'placement':
|
|
79
|
-
this.setHostProperty('placement', changes['placement'].currentValue);
|
|
80
|
-
break;
|
|
81
|
-
case 'value':
|
|
82
|
-
this.setHostProperty('value', changes['value'].currentValue);
|
|
83
|
-
break;
|
|
84
|
-
case 'parseValue':
|
|
85
|
-
this.setHostProperty('parseValue', changes['parseValue'].currentValue);
|
|
86
|
-
break;
|
|
87
|
-
case 'toValue':
|
|
88
|
-
this.setHostProperty('toValue', changes['toValue'].currentValue);
|
|
89
|
-
break;
|
|
90
|
-
case 'default':
|
|
91
|
-
this.setHostProperty('default', changes['default'].currentValue);
|
|
92
|
-
break;
|
|
93
|
-
default:
|
|
94
|
-
break;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
101
|
-
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
102
|
-
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
103
|
-
* undefined / null by clearing their bindings.
|
|
104
|
-
*/
|
|
105
|
-
private setHostProperty(key: string, value: unknown): void {
|
|
106
|
-
this.renderer.setProperty(this.host, key, value);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
private bindEvents(): void {
|
|
110
|
-
this.listenerCleanup.push(
|
|
111
|
-
this.renderer.listen(this.host, 'luzmo-option-changed', (event: Event) => {
|
|
112
|
-
const typed = event as CustomEvent<ItemOptionChangedEventDetail>;
|
|
113
|
-
this.luzmoOptionChanged.emit(typed);
|
|
114
|
-
})
|
|
115
|
-
);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/** The underlying custom element type for LuzmoItemOptionPicker */
|
|
120
|
-
export type LuzmoItemOptionPickerElement = LuzmoItemOptionPickerHostElement;
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import '@luzmo/analytics-components-kit/item-option-position-picker';
|
|
3
|
-
import type { LuzmoItemOptionPositionPicker as LuzmoItemOptionPositionPickerHostElement, ItemOptionChangedEventDetail } from '@luzmo/analytics-components-kit/item-option-position-picker';
|
|
4
|
-
export type { ItemOptionChangedEventDetail } from '@luzmo/analytics-components-kit/item-option-position-picker';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: 'luzmo-item-option-position-picker',
|
|
8
|
-
exportAs: 'luzmoItemOptionPositionPicker',
|
|
9
|
-
standalone: true,
|
|
10
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11
|
-
template: '<ng-content />'
|
|
12
|
-
})
|
|
13
|
-
/**
|
|
14
|
-
* Angular wrapper component for <luzmo-item-option-position-picker>
|
|
15
|
-
*/
|
|
16
|
-
export class LuzmoItemOptionPositionPicker implements OnChanges {
|
|
17
|
-
private readonly elementRef = inject<ElementRef<LuzmoItemOptionPositionPickerHostElement>>(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(): LuzmoItemOptionPositionPickerHostElement {
|
|
25
|
-
return this.host;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/** The currently selected position. */
|
|
29
|
-
@Input({ alias: 'value' })
|
|
30
|
-
value?: string;
|
|
31
|
-
|
|
32
|
-
/** The default position used when no value is set (e.g. `topRight`). */
|
|
33
|
-
@Input({ alias: 'defaultPosition' })
|
|
34
|
-
default?: string;
|
|
35
|
-
|
|
36
|
-
/** The set of positions offered for selection. */
|
|
37
|
-
@Input({ alias: 'positions' })
|
|
38
|
-
positions?: string[];
|
|
39
|
-
|
|
40
|
-
/** Whether the control is read-only. */
|
|
41
|
-
@Input({ alias: 'readonly', transform: booleanAttribute })
|
|
42
|
-
readonly?: boolean;
|
|
43
|
-
|
|
44
|
-
/** Emitted when the option value changes. */
|
|
45
|
-
readonly luzmoOptionChanged = output<CustomEvent<ItemOptionChangedEventDetail>>({ alias: 'luzmoOptionChanged' });
|
|
46
|
-
|
|
47
|
-
constructor() {
|
|
48
|
-
this.bindEvents();
|
|
49
|
-
this.destroyRef.onDestroy(() => {
|
|
50
|
-
for (const cleanup of this.listenerCleanup) {
|
|
51
|
-
cleanup();
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
57
|
-
for (const key of Object.keys(changes)) {
|
|
58
|
-
switch (key) {
|
|
59
|
-
case 'value':
|
|
60
|
-
this.setHostProperty('value', changes['value'].currentValue);
|
|
61
|
-
break;
|
|
62
|
-
case 'default':
|
|
63
|
-
this.setHostProperty('default', changes['default'].currentValue);
|
|
64
|
-
break;
|
|
65
|
-
case 'positions':
|
|
66
|
-
this.setHostProperty('positions', changes['positions'].currentValue);
|
|
67
|
-
break;
|
|
68
|
-
case 'readonly':
|
|
69
|
-
this.setHostProperty('readonly', changes['readonly'].currentValue);
|
|
70
|
-
break;
|
|
71
|
-
default:
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
79
|
-
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
80
|
-
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
81
|
-
* undefined / null by clearing their bindings.
|
|
82
|
-
*/
|
|
83
|
-
private setHostProperty(key: string, value: unknown): void {
|
|
84
|
-
this.renderer.setProperty(this.host, key, value);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
private bindEvents(): void {
|
|
88
|
-
this.listenerCleanup.push(
|
|
89
|
-
this.renderer.listen(this.host, 'luzmo-option-changed', (event: Event) => {
|
|
90
|
-
const typed = event as CustomEvent<ItemOptionChangedEventDetail>;
|
|
91
|
-
this.luzmoOptionChanged.emit(typed);
|
|
92
|
-
})
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/** The underlying custom element type for LuzmoItemOptionPositionPicker */
|
|
98
|
-
export type LuzmoItemOptionPositionPickerElement = LuzmoItemOptionPositionPickerHostElement;
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import '@luzmo/analytics-components-kit/item-option-positions-number-field';
|
|
3
|
-
import type { LuzmoItemOptionPositionsNumberField as LuzmoItemOptionPositionsNumberFieldHostElement, ItemOptionChangedEventDetail } from '@luzmo/analytics-components-kit/item-option-positions-number-field';
|
|
4
|
-
export type { ItemOptionChangedEventDetail } from '@luzmo/analytics-components-kit/item-option-positions-number-field';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: 'luzmo-item-option-positions-number-field',
|
|
8
|
-
exportAs: 'luzmoItemOptionPositionsNumberField',
|
|
9
|
-
standalone: true,
|
|
10
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11
|
-
template: '<ng-content />'
|
|
12
|
-
})
|
|
13
|
-
/**
|
|
14
|
-
* Angular wrapper component for <luzmo-item-option-positions-number-field>
|
|
15
|
-
*/
|
|
16
|
-
export class LuzmoItemOptionPositionsNumberField implements OnChanges {
|
|
17
|
-
private readonly elementRef = inject<ElementRef<LuzmoItemOptionPositionsNumberFieldHostElement>>(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(): LuzmoItemOptionPositionsNumberFieldHostElement {
|
|
25
|
-
return this.host;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/** The value applied to all positions when sync is enabled. */
|
|
29
|
-
@Input({ alias: 'syncedValue' })
|
|
30
|
-
syncedValue?: number;
|
|
31
|
-
|
|
32
|
-
/** Internal timer handle used to debounce change events. */
|
|
33
|
-
@Input({ alias: 'debounceTimeout' })
|
|
34
|
-
debounceTimeout?: any;
|
|
35
|
-
|
|
36
|
-
/** Which positions to render input fields for (e.g. top/right/bottom/left, or corners and center). */
|
|
37
|
-
@Input({ alias: 'positions' })
|
|
38
|
-
positions?: ('top' | 'right' | 'bottom' | 'left' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center')[];
|
|
39
|
-
|
|
40
|
-
/** The current numeric value for each position. */
|
|
41
|
-
@Input({ alias: 'values' })
|
|
42
|
-
values?: Record<('top' | 'right' | 'bottom' | 'left' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'center'), number >;
|
|
43
|
-
|
|
44
|
-
/** Whether the center lock control is shown to sync all positions to a single value. */
|
|
45
|
-
@Input({ alias: 'canSync', transform: booleanAttribute })
|
|
46
|
-
canSync?: boolean;
|
|
47
|
-
|
|
48
|
-
/** Per-position min/max/step/default constraints for the number inputs. */
|
|
49
|
-
@Input({ alias: 'positionConfiguration' })
|
|
50
|
-
positionConfiguration?: unknown;
|
|
51
|
-
|
|
52
|
-
/** Whether the inputs are shown in an invalid state. */
|
|
53
|
-
@Input({ alias: 'invalid', transform: booleanAttribute })
|
|
54
|
-
invalid?: boolean;
|
|
55
|
-
|
|
56
|
-
/** Whether the inputs are read-only. */
|
|
57
|
-
@Input({ alias: 'readonly', transform: booleanAttribute })
|
|
58
|
-
readonly?: boolean;
|
|
59
|
-
|
|
60
|
-
/** Delay in milliseconds before the change event is emitted after the user stops interacting. */
|
|
61
|
-
@Input({ alias: 'debounce' })
|
|
62
|
-
debounce?: number;
|
|
63
|
-
|
|
64
|
-
/** Whether all positions are currently synced to a single value. */
|
|
65
|
-
@Input({ alias: 'sync', transform: booleanAttribute })
|
|
66
|
-
sync?: boolean;
|
|
67
|
-
|
|
68
|
-
/** Emitted when the option value changes. */
|
|
69
|
-
readonly luzmoOptionChanged = output<CustomEvent<ItemOptionChangedEventDetail>>({ alias: 'luzmoOptionChanged' });
|
|
70
|
-
|
|
71
|
-
constructor() {
|
|
72
|
-
this.bindEvents();
|
|
73
|
-
this.destroyRef.onDestroy(() => {
|
|
74
|
-
for (const cleanup of this.listenerCleanup) {
|
|
75
|
-
cleanup();
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
81
|
-
for (const key of Object.keys(changes)) {
|
|
82
|
-
switch (key) {
|
|
83
|
-
case 'syncedValue':
|
|
84
|
-
this.setHostProperty('syncedValue', changes['syncedValue'].currentValue);
|
|
85
|
-
break;
|
|
86
|
-
case 'debounceTimeout':
|
|
87
|
-
this.setHostProperty('debounceTimeout', changes['debounceTimeout'].currentValue);
|
|
88
|
-
break;
|
|
89
|
-
case 'positions':
|
|
90
|
-
this.setHostProperty('positions', changes['positions'].currentValue);
|
|
91
|
-
break;
|
|
92
|
-
case 'values':
|
|
93
|
-
this.setHostProperty('values', changes['values'].currentValue);
|
|
94
|
-
break;
|
|
95
|
-
case 'canSync':
|
|
96
|
-
this.setHostProperty('canSync', changes['canSync'].currentValue);
|
|
97
|
-
break;
|
|
98
|
-
case 'positionConfiguration':
|
|
99
|
-
this.setHostProperty('positionConfiguration', changes['positionConfiguration'].currentValue);
|
|
100
|
-
break;
|
|
101
|
-
case 'invalid':
|
|
102
|
-
this.setHostProperty('invalid', changes['invalid'].currentValue);
|
|
103
|
-
break;
|
|
104
|
-
case 'readonly':
|
|
105
|
-
this.setHostProperty('readonly', changes['readonly'].currentValue);
|
|
106
|
-
break;
|
|
107
|
-
case 'debounce':
|
|
108
|
-
this.setHostProperty('debounce', changes['debounce'].currentValue);
|
|
109
|
-
break;
|
|
110
|
-
case 'sync':
|
|
111
|
-
this.setHostProperty('sync', changes['sync'].currentValue);
|
|
112
|
-
break;
|
|
113
|
-
default:
|
|
114
|
-
break;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
121
|
-
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
122
|
-
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
123
|
-
* undefined / null by clearing their bindings.
|
|
124
|
-
*/
|
|
125
|
-
private setHostProperty(key: string, value: unknown): void {
|
|
126
|
-
this.renderer.setProperty(this.host, key, value);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
private bindEvents(): void {
|
|
130
|
-
this.listenerCleanup.push(
|
|
131
|
-
this.renderer.listen(this.host, 'luzmo-option-changed', (event: Event) => {
|
|
132
|
-
const typed = event as CustomEvent<ItemOptionChangedEventDetail>;
|
|
133
|
-
this.luzmoOptionChanged.emit(typed);
|
|
134
|
-
})
|
|
135
|
-
);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/** The underlying custom element type for LuzmoItemOptionPositionsNumberField */
|
|
140
|
-
export type LuzmoItemOptionPositionsNumberFieldElement = LuzmoItemOptionPositionsNumberFieldHostElement;
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import { booleanAttribute, ChangeDetectionStrategy, Component, DestroyRef, ElementRef, inject, Input, OnChanges, output, Renderer2, SimpleChanges } from '@angular/core';
|
|
2
|
-
import '@luzmo/analytics-components-kit/item-option-radio-button-group';
|
|
3
|
-
import type { LuzmoItemOptionRadioButtonGroup as LuzmoItemOptionRadioButtonGroupHostElement, ItemOptionChangedEventDetail } from '@luzmo/analytics-components-kit/item-option-radio-button-group';
|
|
4
|
-
export type { ItemOptionChangedEventDetail } from '@luzmo/analytics-components-kit/item-option-radio-button-group';
|
|
5
|
-
|
|
6
|
-
@Component({
|
|
7
|
-
selector: 'luzmo-item-option-radio-button-group',
|
|
8
|
-
exportAs: 'luzmoItemOptionRadioButtonGroup',
|
|
9
|
-
standalone: true,
|
|
10
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
11
|
-
template: '<ng-content />'
|
|
12
|
-
})
|
|
13
|
-
/**
|
|
14
|
-
* Angular wrapper component for <luzmo-item-option-radio-button-group>
|
|
15
|
-
*/
|
|
16
|
-
export class LuzmoItemOptionRadioButtonGroup implements OnChanges {
|
|
17
|
-
private readonly elementRef = inject<ElementRef<LuzmoItemOptionRadioButtonGroupHostElement>>(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(): LuzmoItemOptionRadioButtonGroupHostElement {
|
|
25
|
-
return this.host;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/** Internal timer handle used to debounce change events. */
|
|
29
|
-
@Input({ alias: 'debounceTimeout' })
|
|
30
|
-
debounceTimeout?: any;
|
|
31
|
-
|
|
32
|
-
/** The available options to choose from (key → label). */
|
|
33
|
-
@Input({ alias: 'values' })
|
|
34
|
-
values?: Record<string, string>;
|
|
35
|
-
|
|
36
|
-
/** Whether the control is disabled (non-interactive). */
|
|
37
|
-
@Input({ alias: 'disabled', transform: booleanAttribute })
|
|
38
|
-
disabled?: boolean;
|
|
39
|
-
|
|
40
|
-
/** The currently selected option key. */
|
|
41
|
-
@Input({ alias: 'value' })
|
|
42
|
-
value?: string;
|
|
43
|
-
|
|
44
|
-
/** The default option key used when no value is set. */
|
|
45
|
-
@Input({ alias: 'default' })
|
|
46
|
-
default?: string;
|
|
47
|
-
|
|
48
|
-
/** Optional transform applied to the stored value before it is displayed in the control. */
|
|
49
|
-
@Input({ alias: 'parseValue' })
|
|
50
|
-
parseValue?: unknown;
|
|
51
|
-
|
|
52
|
-
/** Optional transform applied to the control's value before it is emitted in the change event. */
|
|
53
|
-
@Input({ alias: 'toValue' })
|
|
54
|
-
toValue?: unknown;
|
|
55
|
-
|
|
56
|
-
/** Emitted when the option value changes. */
|
|
57
|
-
readonly luzmoOptionChanged = output<CustomEvent<ItemOptionChangedEventDetail>>({ alias: 'luzmoOptionChanged' });
|
|
58
|
-
|
|
59
|
-
constructor() {
|
|
60
|
-
this.bindEvents();
|
|
61
|
-
this.destroyRef.onDestroy(() => {
|
|
62
|
-
for (const cleanup of this.listenerCleanup) {
|
|
63
|
-
cleanup();
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
ngOnChanges(changes: SimpleChanges): void {
|
|
69
|
-
for (const key of Object.keys(changes)) {
|
|
70
|
-
switch (key) {
|
|
71
|
-
case 'debounceTimeout':
|
|
72
|
-
this.setHostProperty('debounceTimeout', changes['debounceTimeout'].currentValue);
|
|
73
|
-
break;
|
|
74
|
-
case 'values':
|
|
75
|
-
this.setHostProperty('values', changes['values'].currentValue);
|
|
76
|
-
break;
|
|
77
|
-
case 'disabled':
|
|
78
|
-
this.setHostProperty('disabled', changes['disabled'].currentValue);
|
|
79
|
-
break;
|
|
80
|
-
case 'value':
|
|
81
|
-
this.setHostProperty('value', changes['value'].currentValue);
|
|
82
|
-
break;
|
|
83
|
-
case 'default':
|
|
84
|
-
this.setHostProperty('default', changes['default'].currentValue);
|
|
85
|
-
break;
|
|
86
|
-
case 'parseValue':
|
|
87
|
-
this.setHostProperty('parseValue', changes['parseValue'].currentValue);
|
|
88
|
-
break;
|
|
89
|
-
case 'toValue':
|
|
90
|
-
this.setHostProperty('toValue', changes['toValue'].currentValue);
|
|
91
|
-
break;
|
|
92
|
-
default:
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Forward a wrapper @Input to the underlying host element via Renderer2 so
|
|
100
|
-
* the wrapper stays compatible with non-DOM Angular platforms (SSR, tests).
|
|
101
|
-
* Unlike a "skip undefined" guard, this lets consumers reset values back to
|
|
102
|
-
* undefined / null by clearing their bindings.
|
|
103
|
-
*/
|
|
104
|
-
private setHostProperty(key: string, value: unknown): void {
|
|
105
|
-
this.renderer.setProperty(this.host, key, value);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
private bindEvents(): void {
|
|
109
|
-
this.listenerCleanup.push(
|
|
110
|
-
this.renderer.listen(this.host, 'luzmo-option-changed', (event: Event) => {
|
|
111
|
-
const typed = event as CustomEvent<ItemOptionChangedEventDetail>;
|
|
112
|
-
this.luzmoOptionChanged.emit(typed);
|
|
113
|
-
})
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/** The underlying custom element type for LuzmoItemOptionRadioButtonGroup */
|
|
119
|
-
export type LuzmoItemOptionRadioButtonGroupElement = LuzmoItemOptionRadioButtonGroupHostElement;
|