@acorex-platform/framework-client 0.0.58 → 0.0.60
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/fesm2022/acorex-platform-framework-client-auth.mjs +397 -93
- package/fesm2022/acorex-platform-framework-client-auth.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-common.mjs +33 -31
- package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs +12 -4
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +2 -2
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-jeOx-Rb8.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-D0jDsA6M.mjs} +185 -30
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-D0jDsA6M.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-B93uWhea.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-Bdvd1iYt.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-B93uWhea.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-Bdvd1iYt.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-DITHE0f6.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-CsTP8YHv.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-DITHE0f6.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-CsTP8YHv.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-f5rLdctT.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-UvMk0GbU.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-f5rLdctT.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-UvMk0GbU.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs +165 -28
- package/fesm2022/acorex-platform-framework-client-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-D9WiRo-_.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-KrDsAa3H.mjs} +555 -121
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-KrDsAa3H.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-kwbJdTwe.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BDlo6nTx.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-kwbJdTwe.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BDlo6nTx.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Bke-Wy-4.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-By3wntCB.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-Bke-Wy-4.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-By3wntCB.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs +5 -5
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
- package/layout/builder/README.md +10 -0
- package/layout/widget-core/README.md +47 -3
- package/layout/widgets/README.md +8 -2
- package/package.json +2 -2
- package/types/acorex-platform-framework-client-auth.d.ts +60 -1
- package/types/acorex-platform-framework-client-common.d.ts +3 -2
- package/types/acorex-platform-framework-client-layout-components.d.ts +3 -1
- package/types/acorex-platform-framework-client-layout-entity.d.ts +25 -1
- package/types/acorex-platform-framework-client-layout-widget-core.d.ts +39 -0
- package/types/acorex-platform-framework-client-layout-widgets.d.ts +25 -5
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-jeOx-Rb8.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-D9WiRo-_.mjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i1$4 from '@acorex-platform/framework-client/layout/widget-core';
|
|
2
|
-
import { AXPWidgetCoreModule, AXPDataListWidgetComponent, AXPColumnWidgetComponent, AXPLayoutBaseWidgetComponent, AXP_NAME_PROPERTY, AXP_DISABLED_PROPERTY, AXP_STYLE_COLOR_PROPERTY, AXP_STYLE_LOOK_PROPERTY, AXP_ICON_PROPERTY, AXP_IS_LOADING_PROPERTY, AXP_TEXT_PROPERTY, AXP_WIDGETS_ACTION_SUB_CONTROLS, AXP_WIDGETS_ACTION_CATEGORY, AXP_DATA_PATH_PROPERTY, AXP_WIDGETS_EDITOR_CATEGORY, AXPValueWidgetComponent, AXP_LABEL_PROPERTY, AXP_READONLY_PROPERTY, AXP_TRIGGERS_PROPERTY, booleanDefaultProperty, AXP_WIDGETS_EDITOR_SUB_CHOICE, AXP_PLACEHOLDER_PROPERTY, AXP_HAS_CLEAR_BUTTON_PROPERTY, AXP_WIDGETS_EDITOR_SUB_VISUAL, AXP_DATA_PROPERTY_GROUP, AXP_HAS_LABEL_PROPERTY, AXP_HAS_ICON_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_WIDGETS_EDITOR_SUB_COMPOSITE, AXP_DATE_FORMAT_PROPERTY, AXP_DATE_DEPTH_PROPERTY, AXP_DATE_RANGE_LIMIT_PROPERTY, AXP_REQUIRED_VALIDATION_PROPERTY, AXP_LESS_THAN_VALIDATION_PROPERTY, AXP_GREATER_THAN_VALIDATION_PROPERTY, AXP_TABLE_COLUMN_WIDTH_PROPERTY, AXP_WIDGETS_EDITOR_SUB_DATETIME, AXPColumnTruncatedTextComponent, AXP_MULTI_LANGUAGE_PROPERTY, AXP_MIN_LENGTH_VALIDATION_PROPERTY, AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY, AXP_MAX_LENGTH_VALIDATION_PROPERTY, largeTextDefaultProperty, AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_SPIN_BUTTON_PROPERTY, AXP_NUMBER_SEPARATOR_PROPERTY, numberDefaultProperty, numberMinValueProperty, numberMaxValueProperty, AXP_WIDGETS_EDITOR_SUB_NUMERIC, AXP_HAS_COPY_ICON_PROPERTY, AXP_HAS_EYE_ICON_PROPERTY, AXP_SHOW_PASSWORD_PROPERTY, AXP_MIN_LINE_COUNT_PROPERTY, AXP_MAX_LINE_COUNT_PROPERTY, AXP_FIT_LINE_COUNT_PROPERTY, richTextDefaultProperty, AXP_WIDGETS_EDITOR_SUB_RICH, AXP_DATA_SOURCE_OPTIONS_PROPERTY, AXP_ALLOW_SEARCH_PROPERTY, selectEditorDefaultValueProperty, AXP_DIRECTION_PROPERTY, selectionListEditorDefaultValueProperty, plainTextDefaultProperty, AXP_FALSY_TEXT_PROPERTY, AXP_TRULY_TEXT_PROPERTY, AXP_WIDGETS_ADVANCE_SUB_MEDIA, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_INPUT, AXP_WIDGETS_LAYOUT_SUB_LISTS, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_STYLING_PROPERTY_GROUP, AXP_WIDGETS_ADVANCE_SUB_TOOLS, AXP_WIDGETS_ADVANCE_SUB_DATA, AXP_COLOR_PROPERTY, AXP_CONTENT_PROPERTY, AXP_WIDGETS_EDITOR_SUB_CONFIG, AXPWidgetRegistryService, AXPPropertyEditorHelper, AXP_WIDGETS_LAYOUT_SUB_GRID, AXPBlockBaseLayoutWidgetComponent, AXP_LAYOUT_SPACING_PROPERTY, AXP_LAYOUT_BORDER_PROPERTY, AXP_LAYOUT_DIRECTION_PROPERTY, AXP_TITLE_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY, AXP_WIDGETS_LAYOUT_SUB_SURFACES, AXPFlexBaseLayoutWidgetComponent, AXP_LAYOUT_FLEX_PROPERTY, AXPFlexItemBaseLayoutWidgetComponent, AXP_LAYOUT_FLEX_ITEM_PROPERTY, AXP_LAYOUT_PROFILE, layoutSizeFromDevice, AXP_THEME_PROPERTY, AXP_FONT_SIZE_PROPERTY, AXP_BG_COLOR_PROPERTY, AXP_WIDGETS_LAYOUT_SUB_SHELL, AXPTableBaseLayoutWidgetComponent, AXP_TABLE_COLUMNS_PROPERTY, AXP_LAYOUT_TABLE_PROPERTY_GROUP, AXPTableItemBaseLayoutWidgetComponent, AXP_TABLE_ITEM_COLSPAN_PROPERTY, AXP_TABLE_ITEM_ROWSPAN_PROPERTY, AXP_TEXT_ALIGN_PROPERTY, AXP_VERTICAL_ALIGN_PROPERTY, findNonEmptyBreakpoints,
|
|
2
|
+
import { AXPWidgetCoreModule, AXPDataListWidgetComponent, AXPColumnWidgetComponent, AXPLayoutBaseWidgetComponent, AXP_NAME_PROPERTY, AXP_DISABLED_PROPERTY, AXP_STYLE_COLOR_PROPERTY, AXP_STYLE_LOOK_PROPERTY, AXP_ICON_PROPERTY, AXP_IS_LOADING_PROPERTY, AXP_TEXT_PROPERTY, AXP_WIDGETS_ACTION_SUB_CONTROLS, AXP_WIDGETS_ACTION_CATEGORY, AXP_DATA_PATH_PROPERTY, AXP_WIDGETS_EDITOR_CATEGORY, AXPValueWidgetComponent, AXP_LABEL_PROPERTY, AXP_READONLY_PROPERTY, AXP_TRIGGERS_PROPERTY, booleanDefaultProperty, AXP_WIDGETS_EDITOR_SUB_CHOICE, AXP_PLACEHOLDER_PROPERTY, AXP_HAS_CLEAR_BUTTON_PROPERTY, AXP_WIDGETS_EDITOR_SUB_VISUAL, AXP_DATA_PROPERTY_GROUP, AXP_HAS_LABEL_PROPERTY, AXP_HAS_ICON_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_WIDGETS_EDITOR_SUB_COMPOSITE, AXP_DATE_FORMAT_PROPERTY, AXP_DATE_DEPTH_PROPERTY, AXP_DATE_RANGE_LIMIT_PROPERTY, AXP_REQUIRED_VALIDATION_PROPERTY, AXP_LESS_THAN_VALIDATION_PROPERTY, AXP_GREATER_THAN_VALIDATION_PROPERTY, AXP_TABLE_COLUMN_WIDTH_PROPERTY, AXP_WIDGETS_EDITOR_SUB_DATETIME, AXPColumnTruncatedTextComponent, AXP_MULTI_LANGUAGE_PROPERTY, AXP_MIN_LENGTH_VALIDATION_PROPERTY, AXP_REGULAR_EXPRESSION_VALIDATION_PROPERTY, AXP_MAX_LENGTH_VALIDATION_PROPERTY, largeTextDefaultProperty, AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_SPIN_BUTTON_PROPERTY, AXP_NUMBER_SEPARATOR_PROPERTY, numberDefaultProperty, numberMinValueProperty, numberMaxValueProperty, AXP_WIDGETS_EDITOR_SUB_NUMERIC, AXP_HAS_COPY_ICON_PROPERTY, AXP_HAS_EYE_ICON_PROPERTY, AXP_SHOW_PASSWORD_PROPERTY, AXP_MIN_LINE_COUNT_PROPERTY, AXP_MAX_LINE_COUNT_PROPERTY, AXP_FIT_LINE_COUNT_PROPERTY, richTextDefaultProperty, AXP_WIDGETS_EDITOR_SUB_RICH, AXP_LOCAL_DATA_SOURCE_PREFIX, AXP_LOCAL_DATA_SOURCE_STORE, isLocalDataSourceRef, parseLocalDataSourceId, AXP_DATA_SOURCE_OPTIONS_PROPERTY, AXP_ALLOW_SEARCH_PROPERTY, selectEditorDefaultValueProperty, AXP_DIRECTION_PROPERTY, selectionListEditorDefaultValueProperty, plainTextDefaultProperty, AXP_FALSY_TEXT_PROPERTY, AXP_TRULY_TEXT_PROPERTY, AXP_WIDGETS_ADVANCE_SUB_MEDIA, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_INPUT, AXP_WIDGETS_LAYOUT_SUB_LISTS, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_STYLING_PROPERTY_GROUP, AXP_WIDGETS_ADVANCE_SUB_TOOLS, AXP_WIDGETS_ADVANCE_SUB_DATA, AXP_COLOR_PROPERTY, AXP_CONTENT_PROPERTY, AXP_WIDGETS_EDITOR_SUB_CONFIG, AXPWidgetRegistryService, AXPPropertyEditorHelper, AXP_WIDGETS_LAYOUT_SUB_GRID, AXPBlockBaseLayoutWidgetComponent, AXP_LAYOUT_SPACING_PROPERTY, AXP_LAYOUT_BORDER_PROPERTY, AXP_LAYOUT_DIRECTION_PROPERTY, AXP_TITLE_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY, AXP_WIDGETS_LAYOUT_SUB_SURFACES, AXPFlexBaseLayoutWidgetComponent, AXP_LAYOUT_FLEX_PROPERTY, AXPFlexItemBaseLayoutWidgetComponent, AXP_LAYOUT_FLEX_ITEM_PROPERTY, AXP_LAYOUT_PROFILE, layoutSizeFromDevice, AXP_THEME_PROPERTY, AXP_FONT_SIZE_PROPERTY, AXP_BG_COLOR_PROPERTY, AXP_WIDGETS_LAYOUT_SUB_SHELL, AXPTableBaseLayoutWidgetComponent, AXP_TABLE_COLUMNS_PROPERTY, AXP_LAYOUT_TABLE_PROPERTY_GROUP, AXPTableItemBaseLayoutWidgetComponent, AXP_TABLE_ITEM_COLSPAN_PROPERTY, AXP_TABLE_ITEM_ROWSPAN_PROPERTY, AXP_TEXT_ALIGN_PROPERTY, AXP_VERTICAL_ALIGN_PROPERTY, findNonEmptyBreakpoints, buildLocalDataSourceListRows, toLocalDataSourceRef, createDefaultLocalDataSourceColumns, padLocalDataSourceSheetRows, coerceSpacingProfile, spacingBoxOrEmpty, AXP_DEFAULT_ROW_COUNT_PROPERTY, AXP_APPEARANCE_PROPERTY_GROUP, AXP_WIDGETS_LAYOUT_SUB_UTILITY, AXPGridItemBaseLayoutWidgetComponent, AXPGridBaseLayoutWidgetComponent, AXP_LAYOUT_GRID_PROPERTY, AXP_LAYOUT_GRID_ITEM_PROPERTY, AXP_WIDGETS_LAYOUT_SUB_TABS, AXP_WIDGET_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/layout/widget-core';
|
|
3
3
|
import { AXActionSheetService } from '@acorex/components/action-sheet';
|
|
4
4
|
import * as i1$3 from '@acorex/components/badge';
|
|
5
5
|
import { AXBadgeModule } from '@acorex/components/badge';
|
|
@@ -21,7 +21,7 @@ import { AXTextBoxModule } from '@acorex/components/text-box';
|
|
|
21
21
|
import * as i1$6 from '@acorex/core/translation';
|
|
22
22
|
import { AXTranslationModule, AXTranslationService, resolveMultiLanguageString as resolveMultiLanguageString$1 } from '@acorex/core/translation';
|
|
23
23
|
import { AXP_LOCALE_MANAGEMENT_PORT, AXPFilterOperatorMiddlewareService, AXPCleanNestedFilters, ALL_DEFAULT_OPERATORS, AXPClipBoardService, AXPSettingsService, DATE_OPERATORS, BOOLEAN_OPERATORS, NUMBER_OPERATORS, STRING_OPERATORS, resolveDateFilterPresets, findManualPresetIdByOperation, applyDateFilterPreset, AXPFileStorageService, resolveStoredImageDisplayUrl, AXP_INTEGRATION_RUNTIME_PROVIDER, commandMessageTextForError, normalizePositiveNumberOption, resolveEntityRowDisplayText, resolveEntityRowDisplayTitle, downloadGraphicFromElement, printGraphicFromElement, AXPStatusDefinitionProviderService, isStoredImageFileId, AXP_ENTITY_LIST_DISPLAY_MODE_DEFAULT, AXPCommonSettings } from '@acorex-platform/framework-client/common';
|
|
24
|
-
import { AXPDeviceService, setupPopupFooterKeyboardShortcuts, ensureRuntimeSurfaceClass, AXPColorPaletteService, AXPDebugService, FORM_DIRTY_TRACE_NS, AXPTagService, AXPExpressionEvaluatorService, AXPHookService, AXPDataGenerator, AXPLogoComponent, AXPEntityBroadcastService, applyQueryArray, chordToKbdItemKeys, objectKeyValueTransforms } from '@acorex-platform/framework-client/core';
|
|
24
|
+
import { AXPDeviceService, setupPopupFooterKeyboardShortcuts, ensureRuntimeSurfaceClass, AXPColorPaletteService, AXPDebugService, FORM_DIRTY_TRACE_NS, applyFilterArray, AXPTagService, AXPExpressionEvaluatorService, AXPHookService, AXPDataGenerator, AXPLogoComponent, AXPEntityBroadcastService, applyQueryArray, chordToKbdItemKeys, objectKeyValueTransforms } from '@acorex-platform/framework-client/core';
|
|
25
25
|
import * as i1$5 from '@angular/common';
|
|
26
26
|
import { CommonModule, AsyncPipe, NgTemplateOutlet } from '@angular/common';
|
|
27
27
|
import * as i0 from '@angular/core';
|
|
@@ -30,7 +30,7 @@ import * as i1$7 from '@angular/forms';
|
|
|
30
30
|
import { FormsModule } from '@angular/forms';
|
|
31
31
|
import { AXLookupComponent } from '@acorex/components/lookup';
|
|
32
32
|
import { AXFormatService } from '@acorex/core/format';
|
|
33
|
-
import { resolveMultiLanguageString, setSmart, omitFilterClauseIdentity, createRandomUuid, themeSurfaceVariantFromClass, toRuntimeSurfaceClassName, resolveToSurfaceClass, parseRuntimeHexSurface, listThemeSurfaceGroups, normalizeHexColor, extractValue, AXPRegionalSetting, filterOperatorAllowsEmptyValue, shouldUseLocaleMapShape, buildLocaleTextMapValue, isFormValueEqual, isSelectionValueEqual, isLocaleStringMap, AXPWidgetsCatalog,
|
|
33
|
+
import { resolveMultiLanguageString, setSmart, omitFilterClauseIdentity, createRandomUuid, themeSurfaceVariantFromClass, toRuntimeSurfaceClassName, resolveToSurfaceClass, parseRuntimeHexSurface, listThemeSurfaceGroups, normalizeHexColor, extractValue, AXPRegionalSetting, filterOperatorAllowsEmptyValue, shouldUseLocaleMapShape, buildLocaleTextMapValue, isFormValueEqual, runtimeQueryPayloadData, runtimeQueryCollectionData, isSelectionValueEqual, isLocaleStringMap, AXPWidgetsCatalog, AXP_INTEGRATION_CONNECTION_STATUS, AXP_INTEGRATION_AUTH_METHOD_TYPE, sortByMultiLanguageString, axpGridItemPlacementClassMap, AXPFileStorageStatus, AXPPlatformScope, flattenQueryFilterUserGroups, isPersistableFilterQuery, AXPWidgetsList, axpGridNarrowContainerQueryPrefix, normalizeDefinitionCategories, runtimeQueryFailure, runtimeQuerySuccessObject } from '@acorex-platform/framework-shared/core';
|
|
34
34
|
import { get, set, castArray, isNil, cloneDeep, isEqual, isNull, isEmpty, isPlainObject, isString, isNumber, defaultTo, has } from 'lodash-es';
|
|
35
35
|
import * as i2$2 from '@acorex/components/loading';
|
|
36
36
|
import { AXLoadingModule } from '@acorex/components/loading';
|
|
@@ -68,6 +68,7 @@ import { AXSafePipe } from '@acorex/core/pipes';
|
|
|
68
68
|
import { AXPlatform } from '@acorex/core/platform';
|
|
69
69
|
import * as i2$5 from '@acorex/components/text-editor';
|
|
70
70
|
import { AXTextEditorModule } from '@acorex/components/text-editor';
|
|
71
|
+
import { ENTITY_GET_BY_ID_DEFAULT, AXP_WIDGET_AI_AGENT_NAMES, parseWidgetCatalogMetadataJson, isValidWidgetAiAgentName, matchesWidgetAiAgent, AXP_WIDGET_AI_AGENT_ASSIST_FOLLOW_UP_CHIPS_LAYOUT, AXP_WIDGET_AI_AGENT_CHART_LAYOUT, AXP_WIDGET_AI_AGENT_FORM_LAYOUT } from '@acorex-platform/framework-shared/runtime';
|
|
71
72
|
import { AXHighlightTextComponent } from '@acorex/components/highlight';
|
|
72
73
|
import { AXComboBoxComponent } from '@acorex/components/combo-box';
|
|
73
74
|
import * as i3$5 from '@acorex/components/skeleton';
|
|
@@ -120,7 +121,6 @@ import { AXAlertModule } from '@acorex/components/alert';
|
|
|
120
121
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
121
122
|
import * as i1$k from '@acorex/components/accordion';
|
|
122
123
|
import { AXAccordionModule } from '@acorex/components/accordion';
|
|
123
|
-
import { AXP_WIDGET_AI_AGENT_NAMES, parseWidgetCatalogMetadataJson, isValidWidgetAiAgentName, matchesWidgetAiAgent, AXP_WIDGET_AI_AGENT_ASSIST_FOLLOW_UP_CHIPS_LAYOUT, AXP_WIDGET_AI_AGENT_CHART_LAYOUT, AXP_WIDGET_AI_AGENT_FORM_LAYOUT } from '@acorex-platform/framework-shared/runtime';
|
|
124
124
|
import { AXP_ENTITY_DEFINITION_CRUD_SERVICE } from '@acorex-platform/framework-client/domain';
|
|
125
125
|
|
|
126
126
|
//#endregion
|
|
@@ -7341,15 +7341,17 @@ class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
7341
7341
|
(onValueChanged)="onEditorChanged($event)"
|
|
7342
7342
|
>
|
|
7343
7343
|
<ax-text-editor-toolbar>
|
|
7344
|
-
<ax-
|
|
7345
|
-
|
|
7346
|
-
|
|
7347
|
-
|
|
7348
|
-
|
|
7349
|
-
|
|
7350
|
-
|
|
7351
|
-
|
|
7352
|
-
|
|
7344
|
+
<ax-text-editor-history></ax-text-editor-history>
|
|
7345
|
+
<ax-divider></ax-divider>
|
|
7346
|
+
<ax-text-editor-link></ax-text-editor-link>
|
|
7347
|
+
<ax-text-editor-media></ax-text-editor-media>
|
|
7348
|
+
<ax-divider></ax-divider>
|
|
7349
|
+
<ax-text-editor-font-style></ax-text-editor-font-style>
|
|
7350
|
+
<ax-text-editor-colors></ax-text-editor-colors>
|
|
7351
|
+
<ax-divider></ax-divider>
|
|
7352
|
+
<ax-text-editor-list></ax-text-editor-list>
|
|
7353
|
+
<ax-divider></ax-divider>
|
|
7354
|
+
<ax-text-editor-alignment></ax-text-editor-alignment>
|
|
7353
7355
|
@if (effectiveMultiLanguage()) {
|
|
7354
7356
|
<ax-suffix>
|
|
7355
7357
|
<ax-button class="ax-sm" (onClick)="openMultiLanguagePopup()" [disabled]="disabled()" look="blank">
|
|
@@ -7360,6 +7362,7 @@ class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
7360
7362
|
</ax-suffix>
|
|
7361
7363
|
}
|
|
7362
7364
|
</ax-text-editor-toolbar>
|
|
7365
|
+
<ax-text-editor-content></ax-text-editor-content>
|
|
7363
7366
|
@for (validation of validationRules(); track $index) {
|
|
7364
7367
|
<ax-validation-rule
|
|
7365
7368
|
[rule]="validation.rule"
|
|
@@ -7367,7 +7370,7 @@ class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
7367
7370
|
[options]="validation.options"
|
|
7368
7371
|
></ax-validation-rule>
|
|
7369
7372
|
}
|
|
7370
|
-
</ax-text-editor>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTextEditorModule }, { kind: "component", type: i2$5.AXTextEditorComponent, selector: "ax-text-editor", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "look", "placeHolder", "outputFormat", "initialLine"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange"] }, { kind: "component", type: i2$5.AXTextEditorToolbarComponent, selector: "ax-text-editor-toolbar", inputs: ["orientation"] }, { kind: "component", type: i2$5.AXTextEditorHistoryComponent, selector: "ax-text-editor-history" }, { kind: "component", type: i2$5.AXTextEditorFontStyleComponent, selector: "ax-text-editor-font-style" }, { kind: "component", type: i2$5.AXTextEditorAlignmentComponent, selector: "ax-text-editor-alignment" }, { kind: "component", type: i2$5.AXTextEditorColorsComponent, selector: "ax-text-editor-colors" }, { kind: "component", type: i2$5.AXTextEditorListComponent, selector: "ax-text-editor-list" }, { kind: "component", type: i2$5.AXTextEditorLinkComponent, selector: "ax-text-editor-link" }, { kind: "component", type: i2$5.AXTextEditorMediaComponent, selector: "ax-text-editor-media" }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i3.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$6.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7373
|
+
</ax-text-editor>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXTextEditorModule }, { kind: "component", type: i2$5.AXTextEditorComponent, selector: "ax-text-editor", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "look", "placeHolder", "outputFormat", "line", "initialLine", "maxLine"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange"] }, { kind: "component", type: i2$5.AXTextEditorToolbarComponent, selector: "ax-text-editor-toolbar", inputs: ["orientation"] }, { kind: "component", type: i2$5.AXTextEditorContentComponent, selector: "ax-text-editor-content" }, { kind: "component", type: i2$5.AXTextEditorHistoryComponent, selector: "ax-text-editor-history" }, { kind: "component", type: i2$5.AXTextEditorFontStyleComponent, selector: "ax-text-editor-font-style" }, { kind: "component", type: i2$5.AXTextEditorAlignmentComponent, selector: "ax-text-editor-alignment" }, { kind: "component", type: i2$5.AXTextEditorColorsComponent, selector: "ax-text-editor-colors" }, { kind: "component", type: i2$5.AXTextEditorListComponent, selector: "ax-text-editor-list" }, { kind: "component", type: i2$5.AXTextEditorLinkComponent, selector: "ax-text-editor-link" }, { kind: "component", type: i2$5.AXTextEditorMediaComponent, selector: "ax-text-editor-media" }, { kind: "ngmodule", type: AXValidationModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "directive", type: i3.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$6.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7371
7374
|
}
|
|
7372
7375
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRichTextWidgetEditComponent, decorators: [{
|
|
7373
7376
|
type: Component,
|
|
@@ -7385,15 +7388,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
7385
7388
|
(onValueChanged)="onEditorChanged($event)"
|
|
7386
7389
|
>
|
|
7387
7390
|
<ax-text-editor-toolbar>
|
|
7388
|
-
<ax-
|
|
7389
|
-
|
|
7390
|
-
|
|
7391
|
-
|
|
7392
|
-
|
|
7393
|
-
|
|
7394
|
-
|
|
7395
|
-
|
|
7396
|
-
|
|
7391
|
+
<ax-text-editor-history></ax-text-editor-history>
|
|
7392
|
+
<ax-divider></ax-divider>
|
|
7393
|
+
<ax-text-editor-link></ax-text-editor-link>
|
|
7394
|
+
<ax-text-editor-media></ax-text-editor-media>
|
|
7395
|
+
<ax-divider></ax-divider>
|
|
7396
|
+
<ax-text-editor-font-style></ax-text-editor-font-style>
|
|
7397
|
+
<ax-text-editor-colors></ax-text-editor-colors>
|
|
7398
|
+
<ax-divider></ax-divider>
|
|
7399
|
+
<ax-text-editor-list></ax-text-editor-list>
|
|
7400
|
+
<ax-divider></ax-divider>
|
|
7401
|
+
<ax-text-editor-alignment></ax-text-editor-alignment>
|
|
7397
7402
|
@if (effectiveMultiLanguage()) {
|
|
7398
7403
|
<ax-suffix>
|
|
7399
7404
|
<ax-button class="ax-sm" (onClick)="openMultiLanguagePopup()" [disabled]="disabled()" look="blank">
|
|
@@ -7404,6 +7409,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
7404
7409
|
</ax-suffix>
|
|
7405
7410
|
}
|
|
7406
7411
|
</ax-text-editor-toolbar>
|
|
7412
|
+
<ax-text-editor-content></ax-text-editor-content>
|
|
7407
7413
|
@for (validation of validationRules(); track $index) {
|
|
7408
7414
|
<ax-validation-rule
|
|
7409
7415
|
[rule]="validation.rule"
|
|
@@ -7697,29 +7703,245 @@ function resolveSelectBadgeClasses(item, options) {
|
|
|
7697
7703
|
}
|
|
7698
7704
|
//#endregion
|
|
7699
7705
|
|
|
7706
|
+
//#endregion
|
|
7707
|
+
//#region ----- Planning -----
|
|
7708
|
+
const QUERY_DEFINITION_ENTITY = 'PlatformManagement.QueryDefinition';
|
|
7709
|
+
const queryDefinitionCache = new Map();
|
|
7710
|
+
/** Both sides are stringified so numeric ids match `"30"` and `30`. */
|
|
7711
|
+
function selectKeysEqual(left, right) {
|
|
7712
|
+
if (Object.is(left, right)) {
|
|
7713
|
+
return true;
|
|
7714
|
+
}
|
|
7715
|
+
if (left == null || right == null || left === '' || right === '') {
|
|
7716
|
+
return false;
|
|
7717
|
+
}
|
|
7718
|
+
return String(left) === String(right);
|
|
7719
|
+
}
|
|
7720
|
+
function readSelectQueryKey(dataSource) {
|
|
7721
|
+
if (typeof dataSource === 'string') {
|
|
7722
|
+
if (dataSource.startsWith(AXP_LOCAL_DATA_SOURCE_PREFIX)) {
|
|
7723
|
+
return null;
|
|
7724
|
+
}
|
|
7725
|
+
const key = dataSource.trim();
|
|
7726
|
+
return key.length > 0 ? key : null;
|
|
7727
|
+
}
|
|
7728
|
+
if (dataSource != null && typeof dataSource === 'object' && !Array.isArray(dataSource) && 'id' in dataSource) {
|
|
7729
|
+
const id = dataSource.id;
|
|
7730
|
+
if (id == null || id === '') {
|
|
7731
|
+
return null;
|
|
7732
|
+
}
|
|
7733
|
+
return String(id);
|
|
7734
|
+
}
|
|
7735
|
+
return null;
|
|
7736
|
+
}
|
|
7737
|
+
/**
|
|
7738
|
+
* Inline and already-labeled values resolve immediately.
|
|
7739
|
+
* Primitive keys backed by a query name stay as `query` slots for byKey.
|
|
7740
|
+
*/
|
|
7741
|
+
function planSelectColumnSlots(input) {
|
|
7742
|
+
const queryName = readSelectQueryKey(input.dataSource);
|
|
7743
|
+
const catalog = readCatalogRows(input);
|
|
7744
|
+
const values = castArray(input.rawValue).filter((value) => !isBlankSelectRawValue(value));
|
|
7745
|
+
const slots = [];
|
|
7746
|
+
for (const value of values) {
|
|
7747
|
+
const key = readSelectKey(value, input.valueField);
|
|
7748
|
+
const catalogRow = catalog ? findCatalogRow(catalog, input.valueField, key) : undefined;
|
|
7749
|
+
const storedRow = toStoredRow(value, input.valueField, input.textField, key);
|
|
7750
|
+
if (catalogRow) {
|
|
7751
|
+
slots.push({
|
|
7752
|
+
kind: 'row',
|
|
7753
|
+
row: mergeCatalogRow(storedRow, catalogRow, input.cssClassField, input.textField, input.valueField),
|
|
7754
|
+
});
|
|
7755
|
+
continue;
|
|
7756
|
+
}
|
|
7757
|
+
if (storedRow && hasDistinctSelectLabel(storedRow, input.textField, input.valueField)) {
|
|
7758
|
+
slots.push({ kind: 'row', row: storedRow });
|
|
7759
|
+
continue;
|
|
7760
|
+
}
|
|
7761
|
+
if (queryName && key != null && key !== '') {
|
|
7762
|
+
slots.push({ kind: 'query', key });
|
|
7763
|
+
continue;
|
|
7764
|
+
}
|
|
7765
|
+
if (storedRow) {
|
|
7766
|
+
slots.push({ kind: 'row', row: storedRow });
|
|
7767
|
+
}
|
|
7768
|
+
}
|
|
7769
|
+
return { slots, queryName };
|
|
7770
|
+
}
|
|
7771
|
+
async function resolveSelectQueryRow(queryService, queryName, key, valueField) {
|
|
7772
|
+
const definition = await loadSelectQueryDefinition(queryService, queryName);
|
|
7773
|
+
const resolvedValueField = valueField || definition?.binding?.valueField || 'id';
|
|
7774
|
+
try {
|
|
7775
|
+
if (definition?.byKeyQuery) {
|
|
7776
|
+
const result = await queryService.fetch(definition.byKeyQuery, {
|
|
7777
|
+
[resolvedValueField]: key,
|
|
7778
|
+
});
|
|
7779
|
+
return asRow(runtimeQueryPayloadData(result));
|
|
7780
|
+
}
|
|
7781
|
+
const result = await queryService.fetch(queryName, {
|
|
7782
|
+
skip: 0,
|
|
7783
|
+
take: 1,
|
|
7784
|
+
filter: {
|
|
7785
|
+
field: resolvedValueField,
|
|
7786
|
+
operator: { type: 'equal' },
|
|
7787
|
+
value: key,
|
|
7788
|
+
},
|
|
7789
|
+
});
|
|
7790
|
+
const page = runtimeQueryCollectionData(result);
|
|
7791
|
+
return asRow(page?.items?.[0]);
|
|
7792
|
+
}
|
|
7793
|
+
catch {
|
|
7794
|
+
return null;
|
|
7795
|
+
}
|
|
7796
|
+
}
|
|
7797
|
+
function selectColumnFallbackRow(key, valueField, textField) {
|
|
7798
|
+
return {
|
|
7799
|
+
[valueField]: key,
|
|
7800
|
+
[textField]: key,
|
|
7801
|
+
};
|
|
7802
|
+
}
|
|
7803
|
+
function resolveSelectColumnFields(valueField, textField, definition) {
|
|
7804
|
+
return {
|
|
7805
|
+
valueField: valueField?.trim() || definition?.binding?.valueField || 'id',
|
|
7806
|
+
textField: textField?.trim() || definition?.binding?.textField || 'title',
|
|
7807
|
+
};
|
|
7808
|
+
}
|
|
7809
|
+
//#endregion
|
|
7810
|
+
//#region ----- Query definition -----
|
|
7811
|
+
async function loadSelectQueryDefinition(queryService, queryKey) {
|
|
7812
|
+
const cached = queryDefinitionCache.get(queryKey);
|
|
7813
|
+
if (cached) {
|
|
7814
|
+
return cached;
|
|
7815
|
+
}
|
|
7816
|
+
const pending = fetchSelectQueryDefinition(queryService, queryKey);
|
|
7817
|
+
queryDefinitionCache.set(queryKey, pending);
|
|
7818
|
+
try {
|
|
7819
|
+
return await pending;
|
|
7820
|
+
}
|
|
7821
|
+
catch {
|
|
7822
|
+
queryDefinitionCache.delete(queryKey);
|
|
7823
|
+
return null;
|
|
7824
|
+
}
|
|
7825
|
+
}
|
|
7826
|
+
async function fetchSelectQueryDefinition(queryService, queryKey) {
|
|
7827
|
+
const result = await queryService.fetch(ENTITY_GET_BY_ID_DEFAULT, {
|
|
7828
|
+
entity: QUERY_DEFINITION_ENTITY,
|
|
7829
|
+
id: queryKey,
|
|
7830
|
+
});
|
|
7831
|
+
if (!result?.success) {
|
|
7832
|
+
return null;
|
|
7833
|
+
}
|
|
7834
|
+
return runtimeQueryPayloadData(result) ?? null;
|
|
7835
|
+
}
|
|
7836
|
+
//#endregion
|
|
7837
|
+
//#region ----- Row helpers -----
|
|
7838
|
+
function readCatalogRows(input) {
|
|
7839
|
+
if (Array.isArray(input.dataSource)) {
|
|
7840
|
+
return input.dataSource;
|
|
7841
|
+
}
|
|
7842
|
+
if (input.localItems) {
|
|
7843
|
+
return input.localItems;
|
|
7844
|
+
}
|
|
7845
|
+
return null;
|
|
7846
|
+
}
|
|
7847
|
+
function readSelectKey(value, valueField) {
|
|
7848
|
+
if (value == null || typeof value !== 'object') {
|
|
7849
|
+
return value;
|
|
7850
|
+
}
|
|
7851
|
+
return value[valueField];
|
|
7852
|
+
}
|
|
7853
|
+
function findCatalogRow(rows, valueField, key) {
|
|
7854
|
+
for (const row of rows) {
|
|
7855
|
+
if (row == null || typeof row !== 'object') {
|
|
7856
|
+
continue;
|
|
7857
|
+
}
|
|
7858
|
+
const record = row;
|
|
7859
|
+
if (selectKeysEqual(record[valueField], key)) {
|
|
7860
|
+
return record;
|
|
7861
|
+
}
|
|
7862
|
+
}
|
|
7863
|
+
return undefined;
|
|
7864
|
+
}
|
|
7865
|
+
function toStoredRow(value, valueField, textField, key) {
|
|
7866
|
+
if (value != null && typeof value === 'object') {
|
|
7867
|
+
return { ...value };
|
|
7868
|
+
}
|
|
7869
|
+
if (key == null || key === '') {
|
|
7870
|
+
return null;
|
|
7871
|
+
}
|
|
7872
|
+
return {
|
|
7873
|
+
[valueField]: key,
|
|
7874
|
+
[textField]: key,
|
|
7875
|
+
};
|
|
7876
|
+
}
|
|
7877
|
+
function hasDistinctSelectLabel(row, textField, valueField) {
|
|
7878
|
+
const label = resolveSelectItemLabel(row, textField, valueField);
|
|
7879
|
+
if (label != null && typeof label === 'object') {
|
|
7880
|
+
return true;
|
|
7881
|
+
}
|
|
7882
|
+
const text = String(label ?? '').trim();
|
|
7883
|
+
if (!text) {
|
|
7884
|
+
return false;
|
|
7885
|
+
}
|
|
7886
|
+
return !selectKeysEqual(text, row[valueField]);
|
|
7887
|
+
}
|
|
7888
|
+
function mergeCatalogRow(stored, catalog, cssClassField, textField, valueField) {
|
|
7889
|
+
if (stored && hasDistinctSelectLabel(stored, textField, valueField)) {
|
|
7890
|
+
const cssKey = cssClassField ?? 'cssClass';
|
|
7891
|
+
if (stored[cssKey] == null && catalog[cssKey] != null) {
|
|
7892
|
+
return { ...stored, [cssKey]: catalog[cssKey] };
|
|
7893
|
+
}
|
|
7894
|
+
return stored;
|
|
7895
|
+
}
|
|
7896
|
+
return { ...catalog };
|
|
7897
|
+
}
|
|
7898
|
+
function asRow(value) {
|
|
7899
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value)) {
|
|
7900
|
+
return null;
|
|
7901
|
+
}
|
|
7902
|
+
return value;
|
|
7903
|
+
}
|
|
7904
|
+
//#endregion
|
|
7905
|
+
|
|
7700
7906
|
//#region ----- Imports -----
|
|
7701
7907
|
//#endregion
|
|
7702
7908
|
//#region ----- Component -----
|
|
7703
7909
|
class AXPSelectBoxWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
7704
7910
|
constructor() {
|
|
7705
7911
|
super(...arguments);
|
|
7912
|
+
//#region ----- Services & Dependencies -----
|
|
7913
|
+
this.queryService = inject(AXPQueryService);
|
|
7914
|
+
this.localStore = inject(AXP_LOCAL_DATA_SOURCE_STORE, { optional: true });
|
|
7915
|
+
this.destroyRef = inject(DestroyRef);
|
|
7916
|
+
//#endregion
|
|
7706
7917
|
//#region ----- Computed Properties -----
|
|
7707
|
-
this.
|
|
7918
|
+
this.activeTextField = signal(this.options['textField'] ?? 'title', /* @ts-ignore */
|
|
7919
|
+
...(ngDevMode ? [{ debugName: "activeTextField" }] : /* istanbul ignore next */ []));
|
|
7920
|
+
this.activeValueField = signal(this.options['valueField'] ?? 'id', /* @ts-ignore */
|
|
7921
|
+
...(ngDevMode ? [{ debugName: "activeValueField" }] : /* istanbul ignore next */ []));
|
|
7922
|
+
this.textField = computed(() => this.activeTextField(), /* @ts-ignore */
|
|
7708
7923
|
...(ngDevMode ? [{ debugName: "textField" }] : /* istanbul ignore next */ []));
|
|
7709
|
-
this.valueField = computed(() => this.
|
|
7924
|
+
this.valueField = computed(() => this.activeValueField(), /* @ts-ignore */
|
|
7710
7925
|
...(ngDevMode ? [{ debugName: "valueField" }] : /* istanbul ignore next */ []));
|
|
7711
7926
|
this.cssClassField = computed(() => this.options['cssClassField'], /* @ts-ignore */
|
|
7712
7927
|
...(ngDevMode ? [{ debugName: "cssClassField" }] : /* istanbul ignore next */ []));
|
|
7713
7928
|
this.badgeClass = computed(() => this.options['badgeClass'], /* @ts-ignore */
|
|
7714
7929
|
...(ngDevMode ? [{ debugName: "badgeClass" }] : /* istanbul ignore next */ []));
|
|
7715
|
-
this.
|
|
7716
|
-
...(ngDevMode ? [{ debugName: "
|
|
7717
|
-
this.
|
|
7718
|
-
|
|
7719
|
-
.filter((item) => item != null && hasSelectItemLabel(item, this.textField(), this.valueField())), /* @ts-ignore */
|
|
7930
|
+
this.displayRows = signal([], /* @ts-ignore */
|
|
7931
|
+
...(ngDevMode ? [{ debugName: "displayRows" }] : /* istanbul ignore next */ []));
|
|
7932
|
+
this.destroyed = false;
|
|
7933
|
+
this.internalValue = computed(() => this.displayRows().filter((item) => hasSelectItemLabel(item, this.textField(), this.valueField())), /* @ts-ignore */
|
|
7720
7934
|
...(ngDevMode ? [{ debugName: "internalValue" }] : /* istanbul ignore next */ []));
|
|
7721
7935
|
}
|
|
7722
7936
|
//#endregion
|
|
7937
|
+
//#region ----- Lifecycle -----
|
|
7938
|
+
ngOnInit() {
|
|
7939
|
+
this.destroyRef.onDestroy(() => {
|
|
7940
|
+
this.destroyed = true;
|
|
7941
|
+
});
|
|
7942
|
+
void this.loadRows();
|
|
7943
|
+
}
|
|
7944
|
+
//#endregion
|
|
7723
7945
|
//#region ----- Rendering Helpers -----
|
|
7724
7946
|
resolveBadgeClasses(item) {
|
|
7725
7947
|
const row = item;
|
|
@@ -7732,37 +7954,56 @@ class AXPSelectBoxWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
7732
7954
|
return resolveSelectItemLabel(item, this.textField(), this.valueField());
|
|
7733
7955
|
}
|
|
7734
7956
|
//#endregion
|
|
7735
|
-
//#region -----
|
|
7736
|
-
|
|
7737
|
-
|
|
7738
|
-
|
|
7957
|
+
//#region ----- Data Loading -----
|
|
7958
|
+
async loadRows() {
|
|
7959
|
+
const dataSource = this.options['dataSource'];
|
|
7960
|
+
const queryName = readSelectQueryKey(dataSource);
|
|
7961
|
+
const definition = queryName ? await loadSelectQueryDefinition(this.queryService, queryName) : null;
|
|
7962
|
+
if (this.destroyed) {
|
|
7963
|
+
return;
|
|
7739
7964
|
}
|
|
7740
|
-
const
|
|
7741
|
-
const
|
|
7742
|
-
|
|
7743
|
-
|
|
7744
|
-
|
|
7745
|
-
|
|
7746
|
-
|
|
7747
|
-
|
|
7748
|
-
|
|
7749
|
-
|
|
7750
|
-
|
|
7751
|
-
|
|
7752
|
-
|
|
7753
|
-
|
|
7754
|
-
[textField]: item,
|
|
7755
|
-
};
|
|
7965
|
+
const fields = resolveSelectColumnFields(typeof this.options['valueField'] === 'string' ? this.options['valueField'] : undefined, typeof this.options['textField'] === 'string' ? this.options['textField'] : undefined, definition);
|
|
7966
|
+
const planned = planSelectColumnSlots({
|
|
7967
|
+
rawValue: this.rawValue,
|
|
7968
|
+
dataSource,
|
|
7969
|
+
valueField: fields.valueField,
|
|
7970
|
+
textField: fields.textField,
|
|
7971
|
+
cssClassField: this.cssClassField(),
|
|
7972
|
+
localItems: this.readLocalItems(dataSource),
|
|
7973
|
+
});
|
|
7974
|
+
this.activeValueField.set(fields.valueField);
|
|
7975
|
+
this.activeTextField.set(fields.textField);
|
|
7976
|
+
if (planned.slots.every((slot) => slot.kind === 'row')) {
|
|
7977
|
+
this.displayRows.set(planned.slots.flatMap((slot) => (slot.kind === 'row' ? [slot.row] : [])));
|
|
7978
|
+
return;
|
|
7756
7979
|
}
|
|
7757
|
-
const
|
|
7758
|
-
if (!
|
|
7759
|
-
|
|
7760
|
-
|
|
7761
|
-
|
|
7762
|
-
|
|
7980
|
+
const rows = await this.resolveSlots(planned.slots, planned.queryName, fields.valueField, fields.textField);
|
|
7981
|
+
if (!this.destroyed) {
|
|
7982
|
+
this.displayRows.set(rows);
|
|
7983
|
+
}
|
|
7984
|
+
}
|
|
7985
|
+
async resolveSlots(slots, queryName, valueField, textField) {
|
|
7986
|
+
const resolved = await Promise.all(slots.map(async (slot) => {
|
|
7987
|
+
if (slot.kind === 'row') {
|
|
7988
|
+
return slot.row;
|
|
7763
7989
|
}
|
|
7990
|
+
if (!queryName) {
|
|
7991
|
+
return selectColumnFallbackRow(slot.key, valueField, textField);
|
|
7992
|
+
}
|
|
7993
|
+
const row = await resolveSelectQueryRow(this.queryService, queryName, slot.key, valueField);
|
|
7994
|
+
return row ?? selectColumnFallbackRow(slot.key, valueField, textField);
|
|
7995
|
+
}));
|
|
7996
|
+
return resolved;
|
|
7997
|
+
}
|
|
7998
|
+
readLocalItems(dataSource) {
|
|
7999
|
+
if (!isLocalDataSourceRef(dataSource)) {
|
|
8000
|
+
return null;
|
|
7764
8001
|
}
|
|
7765
|
-
|
|
8002
|
+
const id = parseLocalDataSourceId(dataSource);
|
|
8003
|
+
if (!id) {
|
|
8004
|
+
return [];
|
|
8005
|
+
}
|
|
8006
|
+
return this.localStore?.get(id)?.items ?? [];
|
|
7766
8007
|
}
|
|
7767
8008
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPSelectBoxWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
7768
8009
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPSelectBoxWidgetColumnComponent, isStandalone: true, selector: "axp-select-box-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, host: { classAttribute: "block min-w-0 w-full max-w-full" }, usesInheritance: true, ngImport: i0, template: ` <div class="flex min-w-0 max-w-full gap-2 overflow-hidden">
|
|
@@ -7968,6 +8209,8 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7968
8209
|
/**
|
|
7969
8210
|
* True when a cascade/parent filter is configured but required values are still empty
|
|
7970
8211
|
* (e.g. state select before country is chosen).
|
|
8212
|
+
* `not-in` / `nin` are not cascade — treating them as pending disables the control
|
|
8213
|
+
* (not-allowed cursor, empty list). Hide already-picked options with `excludeIds`, not `filter`.
|
|
7971
8214
|
*/
|
|
7972
8215
|
this.hasPendingCascadeFilter = computed(() => {
|
|
7973
8216
|
if (this.filterMode()) {
|
|
@@ -7977,6 +8220,10 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7977
8220
|
if (!rawFilter) {
|
|
7978
8221
|
return false;
|
|
7979
8222
|
}
|
|
8223
|
+
const operatorType = String(rawFilter.operator?.type ?? '').toLowerCase();
|
|
8224
|
+
if (operatorType === 'not-in' || operatorType === 'nin') {
|
|
8225
|
+
return false;
|
|
8226
|
+
}
|
|
7980
8227
|
return AXPCleanNestedFilters([rawFilter]).length === 0;
|
|
7981
8228
|
}, /* @ts-ignore */
|
|
7982
8229
|
...(ngDevMode ? [{ debugName: "hasPendingCascadeFilter" }] : /* istanbul ignore next */ []));
|
|
@@ -8032,7 +8279,9 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
8032
8279
|
this.valueField();
|
|
8033
8280
|
this.textField();
|
|
8034
8281
|
this.hasPendingCascadeFilter();
|
|
8282
|
+
this.filter();
|
|
8035
8283
|
this.options()['dataSource'];
|
|
8284
|
+
this.options()['excludeIds'];
|
|
8036
8285
|
if (!this.isArraySource()) {
|
|
8037
8286
|
return;
|
|
8038
8287
|
}
|
|
@@ -8308,7 +8557,9 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
8308
8557
|
//#region ----- Data Loading -----
|
|
8309
8558
|
remapComboItems() {
|
|
8310
8559
|
const raw = this.options()['dataSource'];
|
|
8311
|
-
const rows = this.hasPendingCascadeFilter()
|
|
8560
|
+
const rows = this.hasPendingCascadeFilter()
|
|
8561
|
+
? []
|
|
8562
|
+
: this.excludeOptionRows(this.applyArrayWidgetFilter(Array.isArray(raw) ? raw : []));
|
|
8312
8563
|
const locale = this.translationService.getActiveLang();
|
|
8313
8564
|
const items = mapRowsToComboBoxItems(rows, this.valueField(), this.textField(), locale);
|
|
8314
8565
|
this.comboItems.set(items.map((item) => ({
|
|
@@ -8316,6 +8567,54 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
8316
8567
|
text: this.translationService.translateSync(item.text),
|
|
8317
8568
|
})));
|
|
8318
8569
|
}
|
|
8570
|
+
/**
|
|
8571
|
+
* Drop ids in `excludeIds` except this widget's current value so the selected item stays visible.
|
|
8572
|
+
* Do not filter out the current row's own id — the dropdown would go empty after pick.
|
|
8573
|
+
*/
|
|
8574
|
+
excludeOptionRows(rows) {
|
|
8575
|
+
const rawExclude = this.options()['excludeIds'];
|
|
8576
|
+
if (rawExclude == null || rawExclude === false) {
|
|
8577
|
+
return rows;
|
|
8578
|
+
}
|
|
8579
|
+
const currentId = String(extractValue(this.getValue(), this.valueField()) ?? '').trim();
|
|
8580
|
+
const taken = new Set(castArray(rawExclude)
|
|
8581
|
+
.map((value) => extractValue(value, this.valueField()) ?? value)
|
|
8582
|
+
.map((value) => String(value ?? '').trim())
|
|
8583
|
+
.filter(Boolean));
|
|
8584
|
+
if (taken.size === 0) {
|
|
8585
|
+
return rows;
|
|
8586
|
+
}
|
|
8587
|
+
return rows.filter((row) => {
|
|
8588
|
+
const rec = unwrapSelectRow(row);
|
|
8589
|
+
const id = rec ? String(extractValue(rec, this.valueField()) ?? '').trim() : '';
|
|
8590
|
+
return !!id && (id === currentId || !taken.has(id));
|
|
8591
|
+
});
|
|
8592
|
+
}
|
|
8593
|
+
applyArrayWidgetFilter(rows) {
|
|
8594
|
+
if (rows.length === 0) {
|
|
8595
|
+
return rows;
|
|
8596
|
+
}
|
|
8597
|
+
const widgetFilter = this.resolveActiveWidgetFilter();
|
|
8598
|
+
if (!widgetFilter) {
|
|
8599
|
+
return rows;
|
|
8600
|
+
}
|
|
8601
|
+
const operatorType = String(widgetFilter.operator?.type ?? '').toLowerCase();
|
|
8602
|
+
if (operatorType === 'not-in' || operatorType === 'nin') {
|
|
8603
|
+
const taken = new Set(castArray(widgetFilter.value)
|
|
8604
|
+
.map((value) => extractValue(value, this.valueField()) ?? value)
|
|
8605
|
+
.map((value) => String(value ?? '').trim())
|
|
8606
|
+
.filter(Boolean));
|
|
8607
|
+
if (taken.size === 0) {
|
|
8608
|
+
return rows;
|
|
8609
|
+
}
|
|
8610
|
+
return rows.filter((row) => {
|
|
8611
|
+
const rec = unwrapSelectRow(row);
|
|
8612
|
+
const id = rec ? String(extractValue(rec, this.valueField()) ?? '').trim() : '';
|
|
8613
|
+
return !!id && !taken.has(id);
|
|
8614
|
+
});
|
|
8615
|
+
}
|
|
8616
|
+
return applyFilterArray(rows, [widgetFilter], widgetFilter.logic ?? 'and');
|
|
8617
|
+
}
|
|
8319
8618
|
/**
|
|
8320
8619
|
* Patches lookup `load` so widget/cascade filters are AND-ed with lookup search,
|
|
8321
8620
|
* and so a pending cascade parent returns an empty page.
|
|
@@ -19211,6 +19510,8 @@ class AXPRepeaterWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
19211
19510
|
...(ngDevMode ? [{ debugName: "hasControls" }] : /* istanbul ignore next */ []));
|
|
19212
19511
|
this.allowReorder = computed(() => (this.options()['allowReorder'] ?? false), /* @ts-ignore */
|
|
19213
19512
|
...(ngDevMode ? [{ debugName: "allowReorder" }] : /* istanbul ignore next */ []));
|
|
19513
|
+
this.inlineAddControl = computed(() => (this.options()['inlineAddControl'] ?? false), /* @ts-ignore */
|
|
19514
|
+
...(ngDevMode ? [{ debugName: "inlineAddControl" }] : /* istanbul ignore next */ []));
|
|
19214
19515
|
this.rows = computed(() => {
|
|
19215
19516
|
return this.convertValueToArray() ?? [];
|
|
19216
19517
|
}, /* @ts-ignore */
|
|
@@ -19261,6 +19562,7 @@ class AXPRepeaterWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
19261
19562
|
[disabled]="disabled()"
|
|
19262
19563
|
[hasControls]="hasControls()"
|
|
19263
19564
|
[allowReorder]="allowReorder()"
|
|
19565
|
+
[inlineAddControl]="inlineAddControl()"
|
|
19264
19566
|
(addClick)="handleAddItemClick()"
|
|
19265
19567
|
(removeClick)="handleRemoveItemClick($event)"
|
|
19266
19568
|
(drop)="onDrop($event)"
|
|
@@ -19277,7 +19579,7 @@ class AXPRepeaterWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
19277
19579
|
></ng-container>
|
|
19278
19580
|
}
|
|
19279
19581
|
</ng-template>
|
|
19280
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i1$4.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "component", type: AXPRepeaterRowsLayoutComponent, selector: "axp-repeater-rows-layout", inputs: ["count", "disabled", "hasControls", "allowReorder", "rowTemplate", "addItemLabelKey", "emptyTitleKey", "emptyDescriptionKey", "addFirstItemLabelKey"], outputs: ["addClick", "removeClick", "drop"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19582
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i1$4.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "component", type: AXPRepeaterRowsLayoutComponent, selector: "axp-repeater-rows-layout", inputs: ["count", "disabled", "hasControls", "allowReorder", "inlineAddControl", "rowTemplate", "addItemLabelKey", "emptyTitleKey", "emptyDescriptionKey", "addFirstItemLabelKey"], outputs: ["addClick", "removeClick", "drop"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
19281
19583
|
}
|
|
19282
19584
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPRepeaterWidgetEditComponent, decorators: [{
|
|
19283
19585
|
type: Component,
|
|
@@ -19293,6 +19595,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
19293
19595
|
[disabled]="disabled()"
|
|
19294
19596
|
[hasControls]="hasControls()"
|
|
19295
19597
|
[allowReorder]="allowReorder()"
|
|
19598
|
+
[inlineAddControl]="inlineAddControl()"
|
|
19296
19599
|
(addClick)="handleAddItemClick()"
|
|
19297
19600
|
(removeClick)="handleRemoveItemClick($event)"
|
|
19298
19601
|
(drop)="onDrop($event)"
|
|
@@ -19398,6 +19701,13 @@ const AXPRepeaterWidget = {
|
|
|
19398
19701
|
defaultValue: false,
|
|
19399
19702
|
path: 'options.allowReorder',
|
|
19400
19703
|
}),
|
|
19704
|
+
createBooleanProperty({
|
|
19705
|
+
name: 'inlineAddControl',
|
|
19706
|
+
title: 'Inline Add Control',
|
|
19707
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
19708
|
+
defaultValue: false,
|
|
19709
|
+
path: 'options.inlineAddControl',
|
|
19710
|
+
}),
|
|
19401
19711
|
],
|
|
19402
19712
|
components: {
|
|
19403
19713
|
view: {
|
|
@@ -19410,7 +19720,7 @@ const AXPRepeaterWidget = {
|
|
|
19410
19720
|
component: () => Promise.resolve().then(function () { return repeaterWidgetDesigner_component; }).then((c) => c.AXPRepeaterWidgetDesignerComponent),
|
|
19411
19721
|
},
|
|
19412
19722
|
column: {
|
|
19413
|
-
component: () => import('./acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-
|
|
19723
|
+
component: () => import('./acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BDlo6nTx.mjs').then((c) => c.AXPRepeaterWidgetColumnComponent),
|
|
19414
19724
|
},
|
|
19415
19725
|
},
|
|
19416
19726
|
};
|
|
@@ -23164,7 +23474,7 @@ class AXPDataSourceOptionsWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
23164
23474
|
//#region ----- Lifecycle -----
|
|
23165
23475
|
#init;
|
|
23166
23476
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDataSourceOptionsWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
23167
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPDataSourceOptionsWidgetEditComponent, isStandalone: true, selector: "axp-data-source-options-widget-editor", usesInheritance: true, ngImport: i0, template: "<div class=\"axp-data-source-options flex flex-col gap-3 py-2\">\n <!-- ----- Mode: exists or list ----- -->\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.source | translate | async }}</span>\n <ax-selection-list [items]=\"modeItems()\" [ngModel]=\"dataSourceMode()\"\n (onValueChanged)=\"setDataSourceMode($event.value)\" direction=\"horizontal\" [multiple]=\"false\" [showControl]=\"true\"\n valueField=\"value\" textField=\"text\" />\n </div>\n\n <!-- ----- Select registered query (only when mode is exists) ----- -->\n @if (dataSourceMode() === 'exists') {\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.dataSource | translate | async }}</span>\n <ax-lookup mode=\"drop-down-list\" [dataSource]=\"queriesDataSource\" [ngModel]=\"getValue()['dataSource']\"\n (onValueChanged)=\"onQueryChange($event)\" valueField=\"name\" textField=\"title\"\n [searchable]=\"true\"\n [placeholder]=\"(I18N.dataSourcePlaceholder | translate | async) ?? ''\">\n <ax-clear-button></ax-clear-button>\n </ax-lookup>\n </div>\n }\n\n <!-- ----- Form-local named list (designer store) ----- -->\n @if (dataSourceMode() === 'local') {\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.dataSource | translate | async }}</span>\n <div class=\"flex items-center gap-2\">\n <ax-lookup\n class=\"flex-1\"\n mode=\"drop-down-list\"\n [dataSource]=\"localSourcesDataSource()\"\n [ngModel]=\"selectedLocalId()\"\n (onValueChanged)=\"onLocalSourceChange($event)\"\n valueField=\"id\"\n textField=\"name\"\n [searchable]=\"true\"\n [placeholder]=\"(I18N.localPlaceholder | translate | async) ?? ''\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-lookup>\n <ax-button\n look=\"blank\"\n class=\"ax-sm\"\n [title]=\"(I18N.addLocal | translate | async) ?? ''\"\n (onClick)=\"handleCreateLocal()\"\n >\n <ax-icon class=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n <!--->\n <!-- ----- Edit the selected local list ----- -->\n @if (selectedLocalId()) {\n <ax-button\n look=\"blank\"\n class=\"ax-sm\"\n [title]=\"(I18N.editLocal | translate | async) ?? ''\"\n (onClick)=\"handleEditLocal()\"\n >\n <ax-icon class=\"fa-light fa-pen\"></ax-icon>\n </ax-button>\n }\n </div>\n </div>\n }\n\n <!-- ----- Simple list (text rows) when no local store ----- -->\n @if (dataSourceMode() === 'list') {\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.listItems | translate | async }}</span>\n <axp-repeater-rows-layout\n [count]=\"listEntries().length\"\n [rowTemplate]=\"listRowTpl\"\n [hasControls]=\"true\"\n [allowReorder]=\"true\"\n [addItemLabelKey]=\"I18N.addListItem\"\n (addClick)=\"addListEntry()\"\n (removeClick)=\"removeListEntry($event)\"\n (drop)=\"onListDrop($event)\"\n ></axp-repeater-rows-layout>\n <ng-template #listRowTpl let-index=\"index\">\n <ax-text-box\n class=\"w-full\"\n [ngModel]=\"listEntries()[index]\"\n (onValueChanged)=\"onListEntryChange(index, $event)\"\n />\n </ng-template>\n </div>\n }\n\n <!-- ----- valueField / textField (exists only) ----- -->\n @if (fieldSelectsKey() && (dataSourceMode() === 'exists' || dataSourceMode() === 'local')) {\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.valueField | translate | async }}</span>\n <ax-lookup mode=\"drop-down-list\" [dataSource]=\"valueFieldDataSource()\" [ngModel]=\"getValue()['valueField']\"\n (onValueChanged)=\"onValueFieldChange($event)\" valueField=\"value\" textField=\"text\"\n [searchable]=\"false\"\n [disabled]=\"valueTextFieldDisabled()\"\n [placeholder]=\"((valueTextFieldDisabled() ? I18N.valueFieldPlaceholderDisabled : I18N.valueFieldPlaceholder) | translate | async) ?? ''\">\n <ax-clear-button></ax-clear-button>\n </ax-lookup>\n </div>\n\n <!-- ----- textField select ----- -->\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.textField | translate | async }}</span>\n <ax-lookup mode=\"drop-down-list\" [dataSource]=\"textFieldDataSource()\" [ngModel]=\"getValue()['textField']\"\n (onValueChanged)=\"onTextFieldChange($event)\" valueField=\"value\" textField=\"text\"\n [searchable]=\"false\"\n [disabled]=\"valueTextFieldDisabled()\"\n [placeholder]=\"((valueTextFieldDisabled() ? I18N.textFieldPlaceholderDisabled : I18N.textFieldPlaceholder) | translate | async) ?? ''\">\n <ax-clear-button></ax-clear-button>\n </ax-lookup>\n </div>\n }\n</div>\n", styles: [".axp-data-source-options{min-width:0px}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i2$4.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "value", "valueField", "textField", "disabledField", "readonlyField", "multiple", "direction", "customTemplate", "showControl", "items", "look"], outputs: ["onValueChanged", "onBlur", "onFocus"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i1$8.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "component", type: AXPRepeaterRowsLayoutComponent, selector: "axp-repeater-rows-layout", inputs: ["count", "disabled", "hasControls", "allowReorder", "rowTemplate", "addItemLabelKey", "emptyTitleKey", "emptyDescriptionKey", "addFirstItemLabelKey"], outputs: ["addClick", "removeClick", "drop"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23477
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPDataSourceOptionsWidgetEditComponent, isStandalone: true, selector: "axp-data-source-options-widget-editor", usesInheritance: true, ngImport: i0, template: "<div class=\"axp-data-source-options flex flex-col gap-3 py-2\">\n <!-- ----- Mode: exists or list ----- -->\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.source | translate | async }}</span>\n <ax-selection-list [items]=\"modeItems()\" [ngModel]=\"dataSourceMode()\"\n (onValueChanged)=\"setDataSourceMode($event.value)\" direction=\"horizontal\" [multiple]=\"false\" [showControl]=\"true\"\n valueField=\"value\" textField=\"text\" />\n </div>\n\n <!-- ----- Select registered query (only when mode is exists) ----- -->\n @if (dataSourceMode() === 'exists') {\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.dataSource | translate | async }}</span>\n <ax-lookup mode=\"drop-down-list\" [dataSource]=\"queriesDataSource\" [ngModel]=\"getValue()['dataSource']\"\n (onValueChanged)=\"onQueryChange($event)\" valueField=\"name\" textField=\"title\"\n [searchable]=\"true\"\n [placeholder]=\"(I18N.dataSourcePlaceholder | translate | async) ?? ''\">\n <ax-clear-button></ax-clear-button>\n </ax-lookup>\n </div>\n }\n\n <!-- ----- Form-local named list (designer store) ----- -->\n @if (dataSourceMode() === 'local') {\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.dataSource | translate | async }}</span>\n <div class=\"flex items-center gap-2\">\n <ax-lookup\n class=\"flex-1\"\n mode=\"drop-down-list\"\n [dataSource]=\"localSourcesDataSource()\"\n [ngModel]=\"selectedLocalId()\"\n (onValueChanged)=\"onLocalSourceChange($event)\"\n valueField=\"id\"\n textField=\"name\"\n [searchable]=\"true\"\n [placeholder]=\"(I18N.localPlaceholder | translate | async) ?? ''\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-lookup>\n <ax-button\n look=\"blank\"\n class=\"ax-sm\"\n [title]=\"(I18N.addLocal | translate | async) ?? ''\"\n (onClick)=\"handleCreateLocal()\"\n >\n <ax-icon class=\"fa-light fa-plus\"></ax-icon>\n </ax-button>\n <!--->\n <!-- ----- Edit the selected local list ----- -->\n @if (selectedLocalId()) {\n <ax-button\n look=\"blank\"\n class=\"ax-sm\"\n [title]=\"(I18N.editLocal | translate | async) ?? ''\"\n (onClick)=\"handleEditLocal()\"\n >\n <ax-icon class=\"fa-light fa-pen\"></ax-icon>\n </ax-button>\n }\n </div>\n </div>\n }\n\n <!-- ----- Simple list (text rows) when no local store ----- -->\n @if (dataSourceMode() === 'list') {\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.listItems | translate | async }}</span>\n <axp-repeater-rows-layout\n [count]=\"listEntries().length\"\n [rowTemplate]=\"listRowTpl\"\n [hasControls]=\"true\"\n [allowReorder]=\"true\"\n [addItemLabelKey]=\"I18N.addListItem\"\n (addClick)=\"addListEntry()\"\n (removeClick)=\"removeListEntry($event)\"\n (drop)=\"onListDrop($event)\"\n ></axp-repeater-rows-layout>\n <ng-template #listRowTpl let-index=\"index\">\n <ax-text-box\n class=\"w-full\"\n [ngModel]=\"listEntries()[index]\"\n (onValueChanged)=\"onListEntryChange(index, $event)\"\n />\n </ng-template>\n </div>\n }\n\n <!-- ----- valueField / textField (exists only) ----- -->\n @if (fieldSelectsKey() && (dataSourceMode() === 'exists' || dataSourceMode() === 'local')) {\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.valueField | translate | async }}</span>\n <ax-lookup mode=\"drop-down-list\" [dataSource]=\"valueFieldDataSource()\" [ngModel]=\"getValue()['valueField']\"\n (onValueChanged)=\"onValueFieldChange($event)\" valueField=\"value\" textField=\"text\"\n [searchable]=\"false\"\n [disabled]=\"valueTextFieldDisabled()\"\n [placeholder]=\"((valueTextFieldDisabled() ? I18N.valueFieldPlaceholderDisabled : I18N.valueFieldPlaceholder) | translate | async) ?? ''\">\n <ax-clear-button></ax-clear-button>\n </ax-lookup>\n </div>\n\n <!-- ----- textField select ----- -->\n <div class=\"flex flex-col gap-2\">\n <span class=\"font-medium text-sm\">{{ I18N.textField | translate | async }}</span>\n <ax-lookup mode=\"drop-down-list\" [dataSource]=\"textFieldDataSource()\" [ngModel]=\"getValue()['textField']\"\n (onValueChanged)=\"onTextFieldChange($event)\" valueField=\"value\" textField=\"text\"\n [searchable]=\"false\"\n [disabled]=\"valueTextFieldDisabled()\"\n [placeholder]=\"((valueTextFieldDisabled() ? I18N.textFieldPlaceholderDisabled : I18N.textFieldPlaceholder) | translate | async) ?? ''\">\n <ax-clear-button></ax-clear-button>\n </ax-lookup>\n </div>\n }\n</div>\n", styles: [".axp-data-source-options{min-width:0px}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXSelectionListModule }, { kind: "component", type: i2$4.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "value", "valueField", "textField", "disabledField", "readonlyField", "multiple", "direction", "customTemplate", "showControl", "items", "look"], outputs: ["onValueChanged", "onBlur", "onFocus"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i1$8.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "component", type: AXPRepeaterRowsLayoutComponent, selector: "axp-repeater-rows-layout", inputs: ["count", "disabled", "hasControls", "allowReorder", "inlineAddControl", "rowTemplate", "addItemLabelKey", "emptyTitleKey", "emptyDescriptionKey", "addFirstItemLabelKey"], outputs: ["addClick", "removeClick", "drop"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i1$6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23168
23478
|
}
|
|
23169
23479
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPDataSourceOptionsWidgetEditComponent, decorators: [{
|
|
23170
23480
|
type: Component,
|
|
@@ -28106,43 +28416,108 @@ var metaDataWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
|
28106
28416
|
AXPMetaDataWidgetColumnComponent: AXPMetaDataWidgetColumnComponent
|
|
28107
28417
|
});
|
|
28108
28418
|
|
|
28419
|
+
//#endregion
|
|
28420
|
+
//#region ----- Constants -----
|
|
28421
|
+
const DEFAULT_COLUMNS = 2;
|
|
28422
|
+
/** Same 12-column track as entity master forms (Street/Post Code use col-span-6 here). */
|
|
28423
|
+
const ENTITY_GRID_COLUMNS = 12;
|
|
28424
|
+
const ENTITY_GRID_GAP = '20px';
|
|
28425
|
+
//#endregion
|
|
28426
|
+
//#region ----- Component -----
|
|
28109
28427
|
class AXPMetaDataWidgetEditComponent extends AXPValueWidgetComponent {
|
|
28110
28428
|
constructor() {
|
|
28111
28429
|
super(...arguments);
|
|
28430
|
+
//#region ----- Services & Dependencies -----
|
|
28431
|
+
this.translationService = inject(AXTranslationService);
|
|
28432
|
+
//#endregion
|
|
28433
|
+
//#region ----- Computed Properties -----
|
|
28112
28434
|
this.listMeta = computed(() => this.options()['listMeta'] ?? [], { ...(ngDevMode ? { debugName: "listMeta" } : /* istanbul ignore next */ {}), equal: isEqual });
|
|
28113
|
-
|
|
28114
|
-
|
|
28115
|
-
|
|
28116
|
-
|
|
28117
|
-
|
|
28118
|
-
|
|
28119
|
-
|
|
28120
|
-
|
|
28121
|
-
|
|
28122
|
-
|
|
28123
|
-
|
|
28435
|
+
/**
|
|
28436
|
+
* Match entity section grid: 12 tracks + form-field `colSpan` (default form-field is
|
|
28437
|
+
* col-span-12, which forced one field per row inside a 2-track fieldset).
|
|
28438
|
+
*/
|
|
28439
|
+
this.layoutNode = computed(() => {
|
|
28440
|
+
const items = this.items();
|
|
28441
|
+
if (!items.length) {
|
|
28442
|
+
return null;
|
|
28443
|
+
}
|
|
28444
|
+
const columns = this.resolveColumns();
|
|
28445
|
+
const colSpan = Math.max(1, Math.floor(ENTITY_GRID_COLUMNS / columns));
|
|
28446
|
+
return {
|
|
28447
|
+
type: AXPWidgetsList.Layouts.GridLayout,
|
|
28448
|
+
mode: 'edit',
|
|
28449
|
+
options: {
|
|
28450
|
+
grid: {
|
|
28451
|
+
default: {
|
|
28452
|
+
columns: ENTITY_GRID_COLUMNS,
|
|
28453
|
+
gap: ENTITY_GRID_GAP,
|
|
28454
|
+
},
|
|
28455
|
+
},
|
|
28456
|
+
},
|
|
28457
|
+
children: items.map((item) => ({
|
|
28458
|
+
type: AXPWidgetsList.Layouts.FormField,
|
|
28459
|
+
mode: 'edit',
|
|
28460
|
+
options: {
|
|
28461
|
+
label: item.title,
|
|
28462
|
+
showLabel: true,
|
|
28463
|
+
colSpan,
|
|
28464
|
+
},
|
|
28465
|
+
children: [item.node],
|
|
28466
|
+
})),
|
|
28467
|
+
};
|
|
28124
28468
|
}, /* @ts-ignore */
|
|
28125
|
-
...(ngDevMode ? [{ debugName: "
|
|
28469
|
+
...(ngDevMode ? [{ debugName: "layoutNode" }] : /* istanbul ignore next */ []));
|
|
28470
|
+
//#endregion
|
|
28471
|
+
//#region ----- State Signals -----
|
|
28126
28472
|
this.items = signal([], /* @ts-ignore */
|
|
28127
28473
|
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
28474
|
+
//#endregion
|
|
28475
|
+
//#region ----- Lifecycle -----
|
|
28476
|
+
this.#effect = effect(() => {
|
|
28477
|
+
const metas = this.listMeta();
|
|
28478
|
+
void (async () => {
|
|
28479
|
+
const data = await Promise.all(metas.map(async (c) => {
|
|
28480
|
+
const node = JSON.parse(c.interface);
|
|
28481
|
+
//TODO change this to get the root node
|
|
28482
|
+
const root = node.children?.[0].children?.[0];
|
|
28483
|
+
const rawTitle = String(c.title ?? '');
|
|
28484
|
+
const title = rawTitle
|
|
28485
|
+
? await this.translationService.translateAsync(rawTitle)
|
|
28486
|
+
: '';
|
|
28487
|
+
return {
|
|
28488
|
+
title: title || rawTitle,
|
|
28489
|
+
node: root,
|
|
28490
|
+
};
|
|
28491
|
+
}));
|
|
28492
|
+
this.items.set(data);
|
|
28493
|
+
})();
|
|
28494
|
+
}, /* @ts-ignore */
|
|
28495
|
+
...(ngDevMode ? [{ debugName: "#effect" }] : /* istanbul ignore next */ []));
|
|
28128
28496
|
}
|
|
28497
|
+
//#endregion
|
|
28498
|
+
//#region ----- Lifecycle -----
|
|
28129
28499
|
#effect;
|
|
28500
|
+
//#endregion
|
|
28501
|
+
//#region ----- Event Handlers -----
|
|
28130
28502
|
handleContextChange(e) {
|
|
28131
28503
|
this.setValue(e.data);
|
|
28132
28504
|
}
|
|
28505
|
+
//#endregion
|
|
28506
|
+
//#region ----- Private Helpers -----
|
|
28507
|
+
resolveColumns() {
|
|
28508
|
+
const options = this.options();
|
|
28509
|
+
const raw = options['columns'] ?? options['cols'] ?? DEFAULT_COLUMNS;
|
|
28510
|
+
const columns = Number(raw);
|
|
28511
|
+
return Number.isFinite(columns) && columns > 0 ? columns : DEFAULT_COLUMNS;
|
|
28512
|
+
}
|
|
28133
28513
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPMetaDataWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
28134
28514
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPMetaDataWidgetEditComponent, isStandalone: true, selector: "axp-meta-data-widget-edit", usesInheritance: true, ngImport: i0, template: `
|
|
28135
28515
|
<axp-widgets-container [context]="getValue() ?? {}" (onContextChanged)="handleContextChange($event)">
|
|
28136
|
-
|
|
28137
|
-
|
|
28138
|
-
|
|
28139
|
-
<ax-label>{{ item.title }}</ax-label>
|
|
28140
|
-
<ng-container axp-widget-renderer [node]="item.node" [mode]="'edit'"> </ng-container>
|
|
28141
|
-
</ax-form-field>
|
|
28142
|
-
}
|
|
28143
|
-
</div>
|
|
28516
|
+
@if (layoutNode(); as node) {
|
|
28517
|
+
<ng-container axp-widget-renderer [node]="node" [mode]="'edit'"></ng-container>
|
|
28518
|
+
}
|
|
28144
28519
|
</axp-widgets-container>
|
|
28145
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$4.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i1$4.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXFormModule }
|
|
28520
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$4.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i1$4.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXFormModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28146
28521
|
}
|
|
28147
28522
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPMetaDataWidgetEditComponent, decorators: [{
|
|
28148
28523
|
type: Component,
|
|
@@ -28150,18 +28525,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
28150
28525
|
selector: 'axp-meta-data-widget-edit',
|
|
28151
28526
|
template: `
|
|
28152
28527
|
<axp-widgets-container [context]="getValue() ?? {}" (onContextChanged)="handleContextChange($event)">
|
|
28153
|
-
|
|
28154
|
-
|
|
28155
|
-
|
|
28156
|
-
<ax-label>{{ item.title }}</ax-label>
|
|
28157
|
-
<ng-container axp-widget-renderer [node]="item.node" [mode]="'edit'"> </ng-container>
|
|
28158
|
-
</ax-form-field>
|
|
28159
|
-
}
|
|
28160
|
-
</div>
|
|
28528
|
+
@if (layoutNode(); as node) {
|
|
28529
|
+
<ng-container axp-widget-renderer [node]="node" [mode]="'edit'"></ng-container>
|
|
28530
|
+
}
|
|
28161
28531
|
</axp-widgets-container>
|
|
28162
28532
|
`,
|
|
28163
28533
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
28164
|
-
imports: [AXDecoratorModule, AXPWidgetCoreModule, AXFormModule
|
|
28534
|
+
imports: [AXDecoratorModule, AXPWidgetCoreModule, AXFormModule],
|
|
28165
28535
|
}]
|
|
28166
28536
|
}] });
|
|
28167
28537
|
|
|
@@ -29141,52 +29511,102 @@ const AXPBooleanFilterWidget = {
|
|
|
29141
29511
|
},
|
|
29142
29512
|
};
|
|
29143
29513
|
|
|
29514
|
+
//#endregion
|
|
29515
|
+
//#region ----- Helpers -----
|
|
29516
|
+
/**
|
|
29517
|
+
* `"false" == false` is false in JavaScript, so a boolean and its string form must both match.
|
|
29518
|
+
* Lookup `byKey` receives the raw boolean; a one-sided `toString()` comparison never hits.
|
|
29519
|
+
*/
|
|
29520
|
+
function matchesBooleanFilterValue(itemValue, id) {
|
|
29521
|
+
return itemValue === id || String(itemValue) === String(id);
|
|
29522
|
+
}
|
|
29523
|
+
function readLabelOverride(value) {
|
|
29524
|
+
return typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
29525
|
+
}
|
|
29526
|
+
//#endregion
|
|
29527
|
+
//#region ----- Component -----
|
|
29144
29528
|
class AXPBooleanFilterWidgetEditComponent extends AXPValueWidgetComponent {
|
|
29145
29529
|
constructor() {
|
|
29146
29530
|
super(...arguments);
|
|
29531
|
+
//#region ----- Services & Dependencies -----
|
|
29532
|
+
this.translateService = inject(AXTranslationService);
|
|
29533
|
+
//#endregion
|
|
29534
|
+
//#region ----- View Children -----
|
|
29147
29535
|
this.lookup = viewChild('lookup', /* @ts-ignore */
|
|
29148
29536
|
...(ngDevMode ? [{ debugName: "lookup" }] : /* istanbul ignore next */ []));
|
|
29537
|
+
//#endregion
|
|
29538
|
+
//#region ----- Computed Properties -----
|
|
29149
29539
|
this.operation = computed(() => this.getValue()?.operation || AXP_BOOLEAN_FILTER_DEFAULT_OPERATOR, /* @ts-ignore */
|
|
29150
29540
|
...(ngDevMode ? [{ debugName: "operation" }] : /* istanbul ignore next */ []));
|
|
29151
29541
|
this.value = computed(() => this.getValue()?.value, /* @ts-ignore */
|
|
29152
29542
|
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
29153
|
-
this.trulyText = computed(() => this.options()['trulyText'], /* @ts-ignore */
|
|
29543
|
+
this.trulyText = computed(() => readLabelOverride(this.options()['trulyText']), /* @ts-ignore */
|
|
29154
29544
|
...(ngDevMode ? [{ debugName: "trulyText" }] : /* istanbul ignore next */ []));
|
|
29155
|
-
this.falsyText = computed(() => this.options()['falsyText'], /* @ts-ignore */
|
|
29545
|
+
this.falsyText = computed(() => readLabelOverride(this.options()['falsyText']), /* @ts-ignore */
|
|
29156
29546
|
...(ngDevMode ? [{ debugName: "falsyText" }] : /* istanbul ignore next */ []));
|
|
29157
29547
|
this.negative = computed(() => this.options()['negative'], /* @ts-ignore */
|
|
29158
29548
|
...(ngDevMode ? [{ debugName: "negative" }] : /* istanbul ignore next */ []));
|
|
29159
|
-
|
|
29160
|
-
|
|
29549
|
+
//#endregion
|
|
29550
|
+
//#region ----- State Signals -----
|
|
29551
|
+
this.items = signal([], /* @ts-ignore */
|
|
29552
|
+
...(ngDevMode ? [{ debugName: "items" }] : /* istanbul ignore next */ []));
|
|
29553
|
+
//#endregion
|
|
29554
|
+
//#region ----- Data Source -----
|
|
29161
29555
|
this.dataSource = new AXDataSource({
|
|
29162
29556
|
load: () => {
|
|
29557
|
+
const items = this.items();
|
|
29163
29558
|
return Promise.resolve({
|
|
29164
|
-
items
|
|
29165
|
-
total:
|
|
29559
|
+
items,
|
|
29560
|
+
total: items.length,
|
|
29166
29561
|
});
|
|
29167
29562
|
},
|
|
29168
|
-
byKey: (id) =>
|
|
29169
|
-
const item = this.items.find((c) => c.value?.toString() == id);
|
|
29170
|
-
return Promise.resolve(item);
|
|
29171
|
-
},
|
|
29563
|
+
byKey: (id) => Promise.resolve(this.findItem(id)),
|
|
29172
29564
|
pageSize: 10,
|
|
29173
29565
|
key: 'value',
|
|
29174
29566
|
});
|
|
29175
|
-
|
|
29176
|
-
|
|
29177
|
-
|
|
29178
|
-
|
|
29179
|
-
|
|
29180
|
-
|
|
29181
|
-
|
|
29182
|
-
|
|
29183
|
-
|
|
29184
|
-
|
|
29185
|
-
|
|
29186
|
-
|
|
29567
|
+
//#endregion
|
|
29568
|
+
//#region ----- Effects -----
|
|
29569
|
+
this.#loadItems = effect((onCleanup) => {
|
|
29570
|
+
const trulyText = this.trulyText();
|
|
29571
|
+
const falsyText = this.falsyText();
|
|
29572
|
+
let active = true;
|
|
29573
|
+
onCleanup(() => {
|
|
29574
|
+
active = false;
|
|
29575
|
+
});
|
|
29576
|
+
void this.resolveItems(trulyText, falsyText).then((next) => {
|
|
29577
|
+
if (active) {
|
|
29578
|
+
this.items.set(next);
|
|
29579
|
+
}
|
|
29580
|
+
});
|
|
29187
29581
|
}, /* @ts-ignore */
|
|
29188
|
-
...(ngDevMode ? [{ debugName: "#
|
|
29582
|
+
...(ngDevMode ? [{ debugName: "#loadItems" }] : /* istanbul ignore next */ []));
|
|
29583
|
+
/**
|
|
29584
|
+
* Labels arrive after translate. Refresh the list cache and re-seed the lookup,
|
|
29585
|
+
* otherwise a value of `false` stays on the fallback text "false".
|
|
29586
|
+
*/
|
|
29587
|
+
this.#syncLookupItems = effect(() => {
|
|
29588
|
+
const next = this.items();
|
|
29589
|
+
const lookup = this.lookup();
|
|
29590
|
+
if (next.length === 0) {
|
|
29591
|
+
return;
|
|
29592
|
+
}
|
|
29593
|
+
untracked(() => {
|
|
29594
|
+
this.dataSource.refresh();
|
|
29595
|
+
lookup?.seedItems(next.map((item) => ({ text: item.text, value: item.value })));
|
|
29596
|
+
});
|
|
29597
|
+
}, /* @ts-ignore */
|
|
29598
|
+
...(ngDevMode ? [{ debugName: "#syncLookupItems" }] : /* istanbul ignore next */ []));
|
|
29189
29599
|
}
|
|
29600
|
+
//#endregion
|
|
29601
|
+
//#region ----- Effects -----
|
|
29602
|
+
#loadItems;
|
|
29603
|
+
/**
|
|
29604
|
+
* Labels arrive after translate. Refresh the list cache and re-seed the lookup,
|
|
29605
|
+
* otherwise a value of `false` stays on the fallback text "false".
|
|
29606
|
+
*/
|
|
29607
|
+
#syncLookupItems;
|
|
29608
|
+
//#endregion
|
|
29609
|
+
//#region ----- Event Handlers -----
|
|
29190
29610
|
/**
|
|
29191
29611
|
* Lookup may skip `onValueChanged` on the first pick (`#lastValue === undefined`).
|
|
29192
29612
|
* `onItemSelected` always fires from `handleSinglePick`.
|
|
@@ -29198,21 +29618,35 @@ class AXPBooleanFilterWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
29198
29618
|
handleValueChange(e) {
|
|
29199
29619
|
this.commitSelection(e.value);
|
|
29200
29620
|
}
|
|
29621
|
+
focus() {
|
|
29622
|
+
this.lookup()?.focus();
|
|
29623
|
+
}
|
|
29624
|
+
//#endregion
|
|
29625
|
+
//#region ----- Label Loading -----
|
|
29626
|
+
async resolveItems(trulyText, falsyText) {
|
|
29627
|
+
const [yes, no] = await Promise.all([
|
|
29628
|
+
trulyText ? Promise.resolve(trulyText) : this.translateService.translateAsync('@general:widgets.toggle.yes'),
|
|
29629
|
+
falsyText ? Promise.resolve(falsyText) : this.translateService.translateAsync('@general:widgets.toggle.no'),
|
|
29630
|
+
]);
|
|
29631
|
+
return [
|
|
29632
|
+
{ text: yes, value: true },
|
|
29633
|
+
{ text: no, value: false },
|
|
29634
|
+
];
|
|
29635
|
+
}
|
|
29636
|
+
findItem(id) {
|
|
29637
|
+
return this.items().find((item) => matchesBooleanFilterValue(item.value, id));
|
|
29638
|
+
}
|
|
29201
29639
|
commitSelection(value, displayText) {
|
|
29202
29640
|
if (typeof value !== 'boolean') {
|
|
29203
29641
|
return;
|
|
29204
29642
|
}
|
|
29205
|
-
const item = this.
|
|
29643
|
+
const item = this.findItem(value);
|
|
29206
29644
|
this.setValue({
|
|
29207
29645
|
value,
|
|
29208
29646
|
operation: this.negative() ? { type: 'notEqual' } : { type: AXP_BOOLEAN_FILTER_DEFAULT_OPERATOR },
|
|
29209
29647
|
displayText: displayText ?? item?.text,
|
|
29210
29648
|
});
|
|
29211
29649
|
}
|
|
29212
|
-
#effect;
|
|
29213
|
-
focus() {
|
|
29214
|
-
this.lookup()?.focus();
|
|
29215
|
-
}
|
|
29216
29650
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPBooleanFilterWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
29217
29651
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.8", type: AXPBooleanFilterWidgetEditComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "lookup", first: true, predicate: ["lookup"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
29218
29652
|
<div class="flex items-center">
|
|
@@ -32661,7 +33095,7 @@ const AXPTextBlockWidget = {
|
|
|
32661
33095
|
component: () => Promise.resolve().then(function () { return textBlockWidgetView_component; }).then((c) => c.AXPTextBlockWidgetViewComponent),
|
|
32662
33096
|
},
|
|
32663
33097
|
designer: {
|
|
32664
|
-
component: () => import('./acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-
|
|
33098
|
+
component: () => import('./acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-By3wntCB.mjs').then((c) => c.AXPTextBlockWidgetDesignerComponent),
|
|
32665
33099
|
},
|
|
32666
33100
|
},
|
|
32667
33101
|
};
|
|
@@ -33445,4 +33879,4 @@ var getWidgetsForAi_query = /*#__PURE__*/Object.freeze({
|
|
|
33445
33879
|
*/
|
|
33446
33880
|
|
|
33447
33881
|
export { AXPConditionClauseWidget as $, AXP_REPEATER_ENTITY_BY_KEY_LOOKUP as A, AXPCallbackValidationWidgetEditComponent as B, AXPCheckBoxWidget as C, AXPCheckBoxWidgetColumnComponent as D, AXPCheckBoxWidgetDesignerComponent as E, AXPCheckBoxWidgetEditComponent as F, AXPCheckBoxWidgetPrintComponent as G, AXPCheckBoxWidgetViewComponent as H, AXPCodeEditorWidget as I, AXPColorBoxWidget as J, AXPColorBoxWidgetColumnComponent as K, AXPColorBoxWidgetDesignerComponent as L, AXPColorBoxWidgetEditComponent as M, AXPColorBoxWidgetViewComponent as N, AXPColorChooserWidget as O, AXPColorChooserWidgetColumnComponent as P, AXPColorChooserWidgetDesignerComponent as Q, AXPColorChooserWidgetEditComponent as R, AXPColorChooserWidgetViewComponent as S, AXPColorPaletteWidget as T, AXPColorPaletteWidgetColumnComponent as U, AXPColorPaletteWidgetDesignerComponent as V, AXPColorPaletteWidgetEditComponent as W, AXPColorPaletteWidgetViewComponent as X, AXPConditionBuilderWidget as Y, AXPConditionBuilderWidgetEditComponent as Z, AXPConditionBuilderWidgetViewComponent as _, textBlockContentClass as a, AXPLargeTextWidgetPrintComponent as a$, AXPConditionClauseWidgetEditComponent as a0, AXPConnectedDragDropListsWidget as a1, AXPConnectedListsWidgetColumnComponent as a2, AXPConnectedListsWidgetEditComponent as a3, AXPConnectedListsWidgetViewComponent as a4, AXPContactWidget as a5, AXPContactWidgetColumnComponent as a6, AXPContactWidgetEditComponent as a7, AXPContactWidgetViewComponent as a8, AXPDataListColumnFooterComponent as a9, AXPFlexWidget as aA, AXPFlexWidgetDesignerComponent as aB, AXPFlexWidgetViewComponent as aC, AXPGetWidgetsForAIQuery as aD, AXPGreaterThanExpressionValidationWidget as aE, AXPGreaterThanValidationWidgetEditComponent as aF, AXPGridItemOptionsWidget as aG, AXPGridItemOptionsWidgetEditComponent as aH, AXPGridOptionsWidget as aI, AXPGridOptionsWidgetEditComponent as aJ, AXPImageMarkerPopupComponent as aK, AXPImageMarkerWidget as aL, AXPImageMarkerWidgetColumnComponent as aM, AXPImageMarkerWidgetEditComponent as aN, AXPImageMarkerWidgetViewComponent as aO, AXPIntegrationConnectionActionsService as aP, AXPIntegrationConnectionsPanelWidget as aQ, AXPIntegrationConnectionsPanelWidgetEditComponent as aR, AXPItemConfiguratorWidget as aS, AXPItemConfiguratorWidgetColumnComponent as aT, AXPItemConfiguratorWidgetEditComponent as aU, AXPJsonViewerWidget as aV, AXPJsonViewerWidgetEditComponent as aW, AXPJsonViewerWidgetViewComponent as aX, AXPLargeTextWidget as aY, AXPLargeTextWidgetColumnComponent as aZ, AXPLargeTextWidgetEditComponent as a_, AXPDataListWidget as aa, AXPDataListWidgetViewComponent as ab, AXPDataSourceOptionsWidget as ac, AXPDataSourceOptionsWidgetEditComponent as ad, AXPDateTimeBoxWidget as ae, AXPDateTimeBoxWidgetColumnComponent as af, AXPDateTimeBoxWidgetEditComponent as ag, AXPDateTimeBoxWidgetViewComponent as ah, AXPDirectionWidget as ai, AXPDirectionWidgetEditComponent as aj, AXPDragDropListWidget as ak, AXPEqualValidationWidget as al, AXPEqualValidationWidgetEditComponent as am, AXPFieldsetWidget as an, AXPFieldsetWidgetDesignerComponent as ao, AXPFieldsetWidgetViewComponent as ap, AXPFileViewerWidget as aq, AXPFileViewerWidgetEditComponent as ar, AXPFileViewerWidgetViewComponent as as, AXPFlexItemOptionsWidget as at, AXPFlexItemOptionsWidgetEditComponent as au, AXPFlexItemWidget as av, AXPFlexItemWidgetDesignerComponent as aw, AXPFlexItemWidgetViewComponent as ax, AXPFlexOptionsWidget as ay, AXPFlexOptionsWidgetEditComponent as az, AXPAdvancedGridItemWidget as b, AXPSelectBoxWidgetColumnComponent as b$, AXPLargeTextWidgetViewComponent as b0, AXPLessThanExpressionValidationWidget as b1, AXPLessThanValidationWidgetEditComponent as b2, AXPListStylingRulesExtendedWidget as b3, AXPListWidgetColumnComponent as b4, AXPListWidgetEditComponent as b5, AXPListWidgetViewComponent as b6, AXPLocalDataSourceSheetWidget as b7, AXPLocalDataSourceSheetWidgetEditComponent as b8, AXPMapWidgetEditComponent as b9, AXPProviderSelectWidgetColumnComponent as bA, AXPProviderSelectWidgetEditBase as bB, AXPProviderSelectWidgetViewComponent as bC, AXPQrcodeViewerService as bD, AXPQrcodeWidget as bE, AXPQrcodeWidgetColumnComponent as bF, AXPQrcodeWidgetEditComponent as bG, AXPQrcodeWidgetViewComponent as bH, AXPRatePickerWidget as bI, AXPRatePickerWidgetColumnComponent as bJ, AXPRatePickerWidgetEditComponent as bK, AXPRatePickerWidgetViewComponent as bL, AXPRegularExpressionValidationWidget as bM, AXPRegularExpressionValidationWidgetEditComponent as bN, AXPRepeaterWidget as bO, AXPRepeaterWidgetDesignerComponent as bP, AXPRepeaterWidgetEditComponent as bQ, AXPRepeaterWidgetViewComponent as bR, AXPRequiredValidationWidget as bS, AXPRequiredValidationWidgetEditComponent as bT, AXPRichTextWidget as bU, AXPRichTextWidgetColumnComponent as bV, AXPRichTextWidgetEditComponent as bW, AXPRichTextWidgetPrintComponent as bX, AXPRichTextWidgetViewComponent as bY, AXPSchedulerPickerWidget as bZ, AXPSelectBoxWidget as b_, AXPMapWidgetViewComponent as ba, AXPMaxLengthExpressionValidationWidget as bb, AXPMaxLengthValidationWidgetEditComponent as bc, AXPMinLengthExpressionValidationWidget as bd, AXPMinLengthValidationWidgetEditComponent as be, AXPNodeRendererWidget as bf, AXPNodeRendererWidgetDesignerComponent as bg, AXPNodeRendererWidgetEditComponent as bh, AXPNodeRendererWidgetViewComponent as bi, AXPNumberBoxWidget as bj, AXPNumberBoxWidgetColumnComponent as bk, AXPNumberBoxWidgetEditComponent as bl, AXPNumberBoxWidgetPrintComponent as bm, AXPNumberBoxWidgetViewComponent as bn, AXPOutcomeResultsViewerWidget as bo, AXPOutcomeResultsViewerWidgetViewComponent as bp, AXPPageWidget as bq, AXPPageWidgetViewComponent as br, AXPPasswordBoxWidget as bs, AXPPasswordBoxWidgetColumnComponent as bt, AXPPasswordBoxWidgetEditComponent as bu, AXPPasswordBoxWidgetViewComponent as bv, AXPProgressBarWidget as bw, AXPProgressBarWidgetColumnComponent as bx, AXPProgressBarWidgetEditComponent as by, AXPProgressBarWidgetViewComponent as bz, AXPAdvancedGridItemWidgetDesignerComponent as c, AXP_Flex_Box_Justify_Options as c$, AXPSelectBoxWidgetEditComponent as c0, AXPSelectBoxWidgetViewComponent as c1, AXPSelectLanguagePopup as c2, AXPSelectionListWidget as c3, AXPSelectionListWidgetColumnComponent as c4, AXPSelectionListWidgetDesignerComponent as c5, AXPSelectionListWidgetEditComponent as c6, AXPSelectionListWidgetViewComponent as c7, AXPSignatureWidget as c8, AXPSignatureWidgetColumnComponent as c9, AXPTemplateBoxWidgetEditComponent as cA, AXPTemplateBoxWidgetPrintComponent as cB, AXPTemplateBoxWidgetViewComponent as cC, AXPTextBoxWidget as cD, AXPTextBoxWidgetColumnComponent as cE, AXPTextBoxWidgetEditComponent as cF, AXPTextBoxWidgetPrintComponent as cG, AXPTextBoxWidgetViewComponent as cH, AXPToggleWidget as cI, AXPToggleWidgetColumnComponent as cJ, AXPToggleWidgetEditComponent as cK, AXPToggleWidgetPrintComponent as cL, AXPToggleWidgetViewComponent as cM, AXPWidgetFieldConfiguratorWidget as cN, AXPWidgetFieldConfiguratorWidgetColumnComponent as cO, AXPWidgetFieldConfiguratorWidgetEditComponent as cP, AXPWidgetsModule as cQ, AXP_ABSOLUTE_UNITS as cR, AXP_BORDER_RADIUS_UNITS as cS, AXP_BORDER_WIDTH_UNITS as cT, AXP_CONDITION_CLAUSE_WIDGET_NAME as cU, AXP_DATA_LIST_CMD_DELETE as cV, AXP_DATA_LIST_CMD_EDIT as cW, AXP_DATA_LIST_PENDING_DELETE_KEY as cX, AXP_DATETIME_FILTER_DEFAULT_OPERATOR as cY, AXP_Flex_Box_Align_Options as cZ, AXP_Flex_Box_Alignments as c_, AXPSignatureWidgetEditComponent as ca, AXPSignatureWidgetViewComponent as cb, AXPSpacingWidget as cc, AXPSpacingWidgetEditComponent as cd, AXPStatusChipComponent as ce, AXPStatusWidget as cf, AXPStatusWidgetColumnComponent as cg, AXPStatusWidgetEditComponent as ch, AXPStatusWidgetViewComponent as ci, AXPStepWizardWidget as cj, AXPStepWizardWidgetDesignerComponent as ck, AXPStepWizardWidgetViewComponent as cl, AXPStopwatchWidget as cm, AXPStopwatchWidgetViewComponent as cn, AXPTableItemWidget as co, AXPTableItemWidgetDesignerComponent as cp, AXPTableItemWidgetViewComponent as cq, AXPTableWidget as cr, AXPTableWidgetDesignerComponent as cs, AXPTableWidgetViewComponent as ct, AXPTagEditorWidget as cu, AXPTagEditorWidgetColumnComponent as cv, AXPTagEditorWidgetEditComponent as cw, AXPTagEditorWidgetViewComponent as cx, AXPTemplateBoxWidget as cy, AXPTemplateBoxWidgetColumnComponent as cz, AXPAdvancedGridItemWidgetViewComponent as d, AXP_Grid_Box_Align_Items_Options as d0, AXP_Grid_Box_Alignments as d1, AXP_Grid_Box_Justify_Items_Options as d2, AXP_LIST_STYLING_RULES_WIDGET_NAME as d3, AXP_LOCAL_DATA_SOURCE_SHEET_WIDGET_NAME as d4, AXP_RELATIVE_UNITS as d5, AXP_RELATIVE_UNITS_NO_PERCENT as d6, AXP_ROW_EXPR_PREFIX as d7, AXP_SELECT_FILTER_DEFAULT_OPERATOR as d8, AXP_SPACING_UNITS as d9, AXP_default_Border_Box_Units as da, AXP_default_Border_Box_Value as db, AXP_default_Spacing_Box_Units as dc, AXP_default_Spacing_Box_Value as dd, DEFAULT_QRCODE_SIZE as de, DEFAULT_STRATEGY_CONFIG as df, STRATEGY_CONFIG_TOKEN as dg, applyLeafVisibilityToDataListColumnTree as dh, flattenDataListWidgetColumns as di, formatConditionBuilderChip as dj, formatConditionBuilderSentence as dk, isDataListColumnBand as dl, prepareNodeRendererChild as dm, resolveColorChooserGroups as dn, resolveDataListColumnWidth as dp, tokensToPlainText as dq, AXPAdvancedGridOptionsWidget as e, AXPAdvancedGridOptionsWidgetEditComponent as f, AXPAdvancedGridWidget as g, AXPAdvancedGridWidgetDesignerComponent as h, AXPAdvancedGridWidgetViewComponent as i, AXPAvatarWidget as j, AXPAvatarWidgetColumnComponent as k, AXPAvatarWidgetDesignerComponent as l, AXPAvatarWidgetEditComponent as m, AXPAvatarWidgetViewComponent as n, AXPBetweenExpressionValidationWidget as o, AXPBetweenValidationWidgetEditComponent as p, AXPBlockWidget as q, AXPBlockWidgetDesignerComponent as r, AXPBlockWidgetViewComponent as s, textBlockStyleAttribute as t, AXPBorderWidget as u, AXPBorderWidgetEditComponent as v, AXPButtonWidget as w, AXPButtonWidgetColumnComponent as x, AXPButtonWidgetViewComponent as y, AXPCallbackValidationWidget as z };
|
|
33448
|
-
//# sourceMappingURL=acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-
|
|
33882
|
+
//# sourceMappingURL=acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-KrDsAa3H.mjs.map
|