@acorex-platform/framework-client 0.0.53 → 0.0.56
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-common.mjs +39 -20
- package/fesm2022/acorex-platform-framework-client-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs +129 -52
- package/fesm2022/acorex-platform-framework-client-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-designer.mjs +48 -34
- 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-DS3F1_EN.mjs → acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DLW9GiJh.mjs} +647 -333
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DLW9GiJh.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-CWeKcj8t.mjs → acorex-platform-framework-client-layout-entity-attachments-page.component-BY_hDj8A.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-attachments-page.component-CWeKcj8t.mjs.map → acorex-platform-framework-client-layout-entity-attachments-page.component-BY_hDj8A.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-CgsgFxT8.mjs → acorex-platform-framework-client-layout-entity-bulk-entity.command-DccwhqkT.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-bulk-entity.command-CgsgFxT8.mjs.map → acorex-platform-framework-client-layout-entity-bulk-entity.command-DccwhqkT.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-Pfp7Lw_A.mjs → acorex-platform-framework-client-layout-entity-gallery-page.component-D7xxrauC.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-entity-gallery-page.component-Pfp7Lw_A.mjs.map → acorex-platform-framework-client-layout-entity-gallery-page.component-D7xxrauC.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity.mjs +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs +21 -10
- package/fesm2022/acorex-platform-framework-client-layout-views.mjs.map +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CWvC9Eh2.mjs → acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-DuFZf8eb.mjs} +509 -380
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-DuFZf8eb.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BkrPu1wO.mjs → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-Cw2yZfaz.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-button-widget-designer.component-BkrPu1wO.mjs.map → acorex-platform-framework-client-layout-widgets-button-widget-designer.component-Cw2yZfaz.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-WpiEHusZ.mjs → acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-Cbd5Va40.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-WpiEHusZ.mjs.map → acorex-platform-framework-client-layout-widgets-condition-builder-edit-popup.component-Cbd5Va40.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-Cadl6guA.mjs → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-CcBk1zN_.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-page-widget-designer.component-Cadl6guA.mjs.map → acorex-platform-framework-client-layout-widgets-page-widget-designer.component-CcBk1zN_.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-MHOUqz2l.mjs → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BiGUrkFi.mjs} +2 -2
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-MHOUqz2l.mjs.map → acorex-platform-framework-client-layout-widgets-repeater-widget-column.component-BiGUrkFi.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-BCLxS3rS.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-TWxthl21.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-BCLxS3rS.mjs.map → acorex-platform-framework-client-layout-widgets-tabular-data-edit-popup.component-TWxthl21.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-D7P08nHH.mjs → acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DP9mP1CR.mjs} +8 -5
- package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-DP9mP1CR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-oLFeaHdz.mjs → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYg6-PoM.mjs} +4 -4
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-oLFeaHdz.mjs.map → acorex-platform-framework-client-layout-widgets-text-block-widget-designer.component-BYg6-PoM.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs → acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-ZvUXJs3G.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-C2PGoC7r.mjs.map → acorex-platform-framework-client-layout-widgets-trigger-expression-editor-popup.component-ZvUXJs3G.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs → acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-B_OM0T7i.mjs} +5 -5
- package/fesm2022/{acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-DDDoPoQa.mjs.map → acorex-platform-framework-client-layout-widgets-triggers-widget-editor.component-B_OM0T7i.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets.mjs +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-Dh_hRxZX.mjs → acorex-platform-framework-client-themes-default-entity-master-create-view.component-DwCoz2Du.mjs} +4 -4
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-create-view.component-Dh_hRxZX.mjs.map → acorex-platform-framework-client-themes-default-entity-master-create-view.component-DwCoz2Du.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-bC_uPN9l.mjs → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BCyFK60f.mjs} +4 -4
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-modify-view.component-bC_uPN9l.mjs.map → acorex-platform-framework-client-themes-default-entity-master-modify-view.component-BCyFK60f.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-CDzBgDt7.mjs → acorex-platform-framework-client-themes-default-entity-master-single-view.component-2Re1-MvA.mjs} +4 -4
- package/fesm2022/{acorex-platform-framework-client-themes-default-entity-master-single-view.component-CDzBgDt7.mjs.map → acorex-platform-framework-client-themes-default-entity-master-single-view.component-2Re1-MvA.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-error-401.component-CaV3MdRr.mjs → acorex-platform-framework-client-themes-default-error-401.component-1lfBpY_d.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-themes-default-error-401.component-CaV3MdRr.mjs.map → acorex-platform-framework-client-themes-default-error-401.component-1lfBpY_d.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-framework-client-themes-default-error-404.component-CTA-lxYp.mjs → acorex-platform-framework-client-themes-default-error-404.component-BeWyRCJr.mjs} +3 -3
- package/fesm2022/{acorex-platform-framework-client-themes-default-error-404.component-CTA-lxYp.mjs.map → acorex-platform-framework-client-themes-default-error-404.component-BeWyRCJr.mjs.map} +1 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-PvveUj5c.mjs +22 -0
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-PvveUj5c.mjs.map +1 -0
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs +77 -51
- package/fesm2022/acorex-platform-framework-client-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs +4 -4
- package/fesm2022/acorex-platform-framework-client-themes-shared.mjs.map +1 -1
- package/i18n/en-AU/activity-log.json +71 -0
- package/i18n/en-AU/common-plugins.json +96 -0
- package/i18n/en-AU/dynamic-form-designer.json +126 -0
- package/i18n/en-AU/general.json +2294 -0
- package/i18n/en-AU/layout-designer.json +173 -0
- package/i18n/en-AU/layout.json +258 -0
- package/i18n/en-AU/platform-layout-widgets.json +332 -0
- package/i18n/en-US/activity-log.json +71 -0
- package/i18n/en-US/common-plugins.json +96 -0
- package/i18n/en-US/dynamic-form-designer.json +126 -0
- package/i18n/en-US/general.json +2294 -0
- package/i18n/en-US/layout-designer.json +173 -0
- package/i18n/en-US/layout.json +258 -0
- package/i18n/en-US/platform-layout-widgets.json +336 -0
- package/i18n/fa-IR/activity-log.json +71 -0
- package/i18n/fa-IR/common-plugins.json +126 -0
- package/i18n/fa-IR/dynamic-form-designer.json +126 -0
- package/i18n/fa-IR/general.json +2295 -0
- package/i18n/fa-IR/layout-designer.json +173 -0
- package/i18n/fa-IR/layout.json +258 -0
- package/i18n/fa-IR/platform-layout-widgets.json +336 -0
- package/package.json +2 -2
- package/types/acorex-platform-framework-client-common.d.ts +3 -1
- package/types/acorex-platform-framework-client-layout-components.d.ts +3 -1
- package/types/acorex-platform-framework-client-layout-designer.d.ts +1 -0
- package/types/acorex-platform-framework-client-layout-entity.d.ts +30 -4
- package/types/acorex-platform-framework-client-layout-widgets.d.ts +36 -2
- package/types/acorex-platform-framework-client-themes-default.d.ts +5 -1
- package/fesm2022/acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DS3F1_EN.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-acorex-platform-framework-client-layout-widgets-CWvC9Eh2.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-layout-widgets-tabular-data-view-popup.component-D7P08nHH.mjs.map +0 -1
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-B85b0lsa.mjs +0 -19
- package/fesm2022/acorex-platform-framework-client-themes-default-error-offline.component-B85b0lsa.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isEntityColumnBand, mergeForeignKeyFieldIntoCreateActions, collectNestedCreateHiddenProperties, relatedEntityListViewWidgetOptions, AXPEntityCommandScope, isCardFieldBadgeDisplay, resolveCardFieldBadgeColor, resolveEntityCardAvatarPath, isEntityCardQrField, collectLeftoverCardMoreFieldNames, parseDottedFieldPath, AXP_ENTITY_LIST_RECORD_STYLING_TARGET, isCompleteEntityListStylingCondition, createEntityMasterStylingScope, normalizeEntityMasterStylingClass, resolveEntityMasterStyling, resolveEntityMasterFieldExpression, resolveEntityCardIdentityKind, resolveEntityCardUserId, ENTITY_CARD_LABELED_PREVIEW_MAX, resolveEntityCardLayout, buildDefaultEntityCardLayout, resolveEntityListFilterContextField, resolveEntityListFilterQueryField, resolveEnabledMasterListLayouts, resolveDefaultMasterListLayout, isEntityMasterListCardHost, normalizeEntityMasterListLayoutType, getEntityInfo, normalizeEntityListUserStylingRules, mergeQueryViewAndUserFilters, mergeDefinitionAndCustomQueryViews, isQueryViewDirty, isCustomQueryView, collectEntityListSortPresets,
|
|
1
|
+
import { isEntityColumnBand, mergeForeignKeyFieldIntoCreateActions, collectNestedCreateHiddenProperties, relatedEntityListViewWidgetOptions, AXPEntityCommandScope, isCardFieldBadgeDisplay, resolveCardFieldBadgeColor, resolveEntityCardAvatarPath, isEntityCardQrField, collectLeftoverCardMoreFieldNames, parseDottedFieldPath, AXP_ENTITY_LIST_RECORD_STYLING_TARGET, isCompleteEntityListStylingCondition, createEntityMasterStylingScope, normalizeEntityMasterStylingClass, resolveEntityMasterStyling, resolveEntityMasterFieldExpression, resolveEntityCardIdentityKind, resolveEntityCardUserId, ENTITY_CARD_LABELED_PREVIEW_MAX, resolveEntityCardLayout, buildDefaultEntityCardLayout, resolveEntityListFilterContextField, resolveEntityListFilterQueryField, resolveEnabledMasterListLayouts, resolveDefaultMasterListLayout, isEntityMasterListCardHost, normalizeEntityMasterListLayoutType, getEntityInfo, normalizeEntityListUserStylingRules, mergeQueryViewAndUserFilters, flattenEntityTableColumns, mergeDefinitionAndCustomQueryViews, isQueryViewDirty, isCustomQueryView, collectEntityListSortPresets, createCustomQueryViewName, removePersistedCustomQueryView, readPersistedCustomQueryViews, upsertPersistedCustomQueryView, snapshotCustomQueryView, isQueryViewColumnVisible, collectEntityListSortableFields, collectEntityListFilterDefinitions, withQueryViewFilterVisibility, queryViewConditionsToFilterQueries, collectEntityCardUserIdQueryFields, buildEntityQueryFields, normalizeAXPQueryViewColumns, findEntityTableColumnInTree, AXPEntityQueryType, ENTITY_ROW_POPUP_TITLE_OPTION, resolveEnabledPageListLayouts, resolveRelatedEntityListViews, buildPageListWidgetName, applyQueryViewToColumnQueries, normalizeEntityDisplayTemplate, sanitizeResolvedEntityDisplayTitle, isUnresolvedEntityDisplayTemplate, resolveLookupWidgetCreateOptions, promoteLegacyEntityCardLayout, inferEntityListSortPresets, buildEntitySearchTitleContext } from '@acorex-platform/framework-shared/entity';
|
|
2
2
|
import { resolveEntityActionCommandInput, entityActionDataRecord, defineCommand, AXP_COMMAND_DEFINITION_CATEGORY_ENTITY, analyzeBulkCommandFailures, ENTITY_DELETE_DEFAULT, ENTITY_GET_BY_ID_DEFAULT, ENTITY_QUERY_DEFAULT, ENTITY_INSERT_DEFAULT, ENTITY_UPDATE_DEFAULT, DOMAIN_GET_ENTITY_LAYOUT_DEFAULT, DOMAIN_LIST_ENTITY_LAYOUTS_DEFAULT, resolveEntityNameFromRuntimeKey } from '@acorex-platform/framework-shared/runtime';
|
|
3
3
|
import { AXToastService } from '@acorex/components/toast';
|
|
4
4
|
import * as i3$1 from '@acorex/core/translation';
|
|
@@ -44,7 +44,7 @@ import * as i1$5 from '@angular/forms';
|
|
|
44
44
|
import { FormsModule } from '@angular/forms';
|
|
45
45
|
import { AXUploaderModule } from '@acorex/components/uploader';
|
|
46
46
|
import { createStringProperty, createBooleanProperty, createNumberProperty, AXPWidgetGroupEnum, AXPPageStatus, AXPWidgetStatus, createSelectProperty } from '@acorex-platform/framework-shared/widget-core';
|
|
47
|
-
import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_READONLY_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_DISABLED_PROPERTY, AXP_ALLOW_CLEAR_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_PLACEHOLDER_PROPERTY, AXPProviderSelectWidgetEditBase, isDataListColumnBand, AXP_ROW_EXPR_PREFIX, applyLeafVisibilityToDataListColumnTree, AXP_REPEATER_ENTITY_BY_KEY_LOOKUP } from '@acorex-platform/framework-client/layout/widgets';
|
|
47
|
+
import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_ALLOW_MULTIPLE_PROPERTY, AXP_DOWNLOADABLE_PROPERTY, AXP_READONLY_PROPERTY, AXP_DESCRIPTION_PROPERTY, AXP_BEHAVIOR_PROPERTY_GROUP, AXP_DISABLED_PROPERTY, AXP_ALLOW_CLEAR_PROPERTY, AXP_DATA_PROPERTY_GROUP, AXP_PLACEHOLDER_PROPERTY, AXPProviderSelectWidgetEditBase, flattenDataListWidgetColumns, isDataListColumnBand, AXP_ROW_EXPR_PREFIX, applyLeafVisibilityToDataListColumnTree, AXP_REPEATER_ENTITY_BY_KEY_LOOKUP } from '@acorex-platform/framework-client/layout/widgets';
|
|
48
48
|
import { AXPopupService } from '@acorex/components/popup';
|
|
49
49
|
import * as i1$4 from '@acorex/components/skeleton';
|
|
50
50
|
import { AXSkeletonModule } from '@acorex/components/skeleton';
|
|
@@ -2686,32 +2686,32 @@ const axpCreateEntityAiToolInputDefaults = {
|
|
|
2686
2686
|
};
|
|
2687
2687
|
const axpCreateEntityCommandDefinition = defineCommand({
|
|
2688
2688
|
key: 'Entity:Create',
|
|
2689
|
-
title: '
|
|
2689
|
+
title: '@general:command-catalog.entity.create.title',
|
|
2690
2690
|
description: 'AXPCreateEntityCommand reads flat input (entity, entityInfo, data, options, metadata) and optional root dialogSize; builds AXPEntityFormBuilderService create chain with exclude/include, decoration header title, layout size; submits insert via entity form flow.',
|
|
2691
2691
|
executionMode: 'frontend',
|
|
2692
2692
|
inputs: [
|
|
2693
2693
|
{
|
|
2694
2694
|
name: 'dialogSize',
|
|
2695
|
-
title: '
|
|
2695
|
+
title: '@general:command-catalog.entity.create.inputs.dialog-size.title',
|
|
2696
2696
|
description: 'Optional root dialogSize; layout.size from options can override.',
|
|
2697
2697
|
interface: { name: 'text-editor' },
|
|
2698
2698
|
},
|
|
2699
2699
|
{
|
|
2700
2700
|
name: 'entity',
|
|
2701
|
-
title: '
|
|
2701
|
+
title: '@general:command-catalog.entity.create.inputs.entity.title',
|
|
2702
2702
|
description: 'Entity full name (Module.Entity).',
|
|
2703
2703
|
interface: { name: 'text-editor' },
|
|
2704
2704
|
validations: [{ rule: 'required' }],
|
|
2705
2705
|
},
|
|
2706
2706
|
{
|
|
2707
2707
|
name: 'data',
|
|
2708
|
-
title: '
|
|
2708
|
+
title: '@general:command-catalog.entity.create.inputs.data.title',
|
|
2709
2709
|
description: 'Optional create form seed as a JSON object (not a string). Include resolved lookup ids and dates.',
|
|
2710
2710
|
interface: { name: 'json' },
|
|
2711
2711
|
},
|
|
2712
2712
|
{
|
|
2713
2713
|
name: 'options',
|
|
2714
|
-
title: '
|
|
2714
|
+
title: '@general:command-catalog.entity.create.inputs.options.title',
|
|
2715
2715
|
description: 'excludeProperties, includeProperties, decoration, layout, process { redirect }. For AI/tool calls, defaults include options.process.redirect = false.',
|
|
2716
2716
|
interface: { name: 'json' },
|
|
2717
2717
|
},
|
|
@@ -3164,25 +3164,25 @@ var deleteEntity_command = /*#__PURE__*/Object.freeze({
|
|
|
3164
3164
|
*/
|
|
3165
3165
|
const axpDeleteEntityCommandDefinition = defineCommand({
|
|
3166
3166
|
key: 'Entity:Remove',
|
|
3167
|
-
title: '
|
|
3167
|
+
title: '@general:command-catalog.entity.remove.title',
|
|
3168
3168
|
description: 'AXPDeleteEntityCommand shows a confirm dialog, then deletes entity record(s) with loading UI, toasts, and refresh events.',
|
|
3169
3169
|
executionMode: 'frontend',
|
|
3170
3170
|
inputs: [
|
|
3171
3171
|
{
|
|
3172
3172
|
name: 'entity',
|
|
3173
|
-
title: '
|
|
3173
|
+
title: '@general:command-catalog.entity.remove.inputs.entity.title',
|
|
3174
3174
|
description: 'Entity full name (Module.Entity).',
|
|
3175
3175
|
interface: { name: 'text-editor' },
|
|
3176
3176
|
},
|
|
3177
3177
|
{
|
|
3178
3178
|
name: 'data',
|
|
3179
|
-
title: '
|
|
3179
|
+
title: '@general:command-catalog.entity.remove.inputs.data.title',
|
|
3180
3180
|
description: 'Single/bulk row data for delete.',
|
|
3181
3181
|
interface: { name: 'json' },
|
|
3182
3182
|
},
|
|
3183
3183
|
{
|
|
3184
3184
|
name: 'entities',
|
|
3185
|
-
title: '
|
|
3185
|
+
title: '@general:command-catalog.entity.remove.inputs.entities.title',
|
|
3186
3186
|
description: 'Optional entities[] for multi-entity delete.',
|
|
3187
3187
|
interface: { name: 'json' },
|
|
3188
3188
|
},
|
|
@@ -3303,19 +3303,19 @@ var openEntityList_command = /*#__PURE__*/Object.freeze({
|
|
|
3303
3303
|
*/
|
|
3304
3304
|
const axpOpenEntityListCommandDefinition = defineCommand({
|
|
3305
3305
|
key: 'Entity:OpenList',
|
|
3306
|
-
title: '
|
|
3306
|
+
title: '@general:command-catalog.entity.open-list.title',
|
|
3307
3307
|
description: 'AXPOpenEntityListCommand navigates to /{app}/m/{module}/e/{entity}/list with optional filter query params.',
|
|
3308
3308
|
executionMode: 'frontend',
|
|
3309
3309
|
inputs: [
|
|
3310
3310
|
{
|
|
3311
3311
|
name: 'entity',
|
|
3312
|
-
title: '
|
|
3312
|
+
title: '@general:command-catalog.entity.open-list.inputs.entity.title',
|
|
3313
3313
|
description: 'Entity full name (Module.Entity).',
|
|
3314
3314
|
interface: { name: 'text-editor' },
|
|
3315
3315
|
},
|
|
3316
3316
|
{
|
|
3317
3317
|
name: 'conditions',
|
|
3318
|
-
title: '
|
|
3318
|
+
title: '@general:command-catalog.entity.open-list.inputs.conditions.title',
|
|
3319
3319
|
description: 'Optional conditions for list filters.',
|
|
3320
3320
|
interface: { name: 'json' },
|
|
3321
3321
|
},
|
|
@@ -5945,19 +5945,19 @@ var showFileUploaderPopup_command = /*#__PURE__*/Object.freeze({
|
|
|
5945
5945
|
*/
|
|
5946
5946
|
const axpShowFileUploaderPopupCommandDefinition = defineCommand({
|
|
5947
5947
|
key: 'FileUploader:ShowPopup',
|
|
5948
|
-
title: '
|
|
5948
|
+
title: '@general:command-catalog.file-uploader.show-popup.title',
|
|
5949
5949
|
description: 'AXPShowFileUploaderPopupCommand opens the file list popup, saves via FileUploader:SaveFiles, then dispatches entity modify side-effects.',
|
|
5950
5950
|
executionMode: 'frontend',
|
|
5951
5951
|
inputs: [
|
|
5952
5952
|
{
|
|
5953
5953
|
name: 'entity',
|
|
5954
|
-
title: '
|
|
5954
|
+
title: '@general:command-catalog.file-uploader.show-popup.inputs.entity.title',
|
|
5955
5955
|
description: 'Optional entity full name when not nested under options.entity.',
|
|
5956
5956
|
interface: { name: 'text-editor' },
|
|
5957
5957
|
},
|
|
5958
5958
|
{
|
|
5959
5959
|
name: 'options',
|
|
5960
|
-
title: '
|
|
5960
|
+
title: '@general:command-catalog.file-uploader.show-popup.inputs.options.title',
|
|
5961
5961
|
description: 'Requires options.entity (name, id, field) from attachments plugin or equivalent.',
|
|
5962
5962
|
interface: { name: 'json' },
|
|
5963
5963
|
},
|
|
@@ -6750,39 +6750,39 @@ var updateEntityStatus_command = /*#__PURE__*/Object.freeze({
|
|
|
6750
6750
|
*/
|
|
6751
6751
|
const axpUpdateEntityStatusCommandDefinition = defineCommand({
|
|
6752
6752
|
key: 'Entity:UpdateStatus',
|
|
6753
|
-
title: '
|
|
6753
|
+
title: '@general:command-catalog.entity.update-status.title',
|
|
6754
6754
|
description: 'AXPUpdateEntityStatusCommand patches a status field on one or more records (entity, status, statusField, id|ids) via the entity update path; used as the default status-chip transition command.',
|
|
6755
6755
|
executionMode: 'frontend',
|
|
6756
6756
|
inputs: [
|
|
6757
6757
|
{
|
|
6758
6758
|
name: 'entity',
|
|
6759
|
-
title: '
|
|
6759
|
+
title: '@general:command-catalog.entity.update-status.inputs.entity.title',
|
|
6760
6760
|
description: 'Full entity key (Module.Entity).',
|
|
6761
6761
|
interface: { name: 'text-editor' },
|
|
6762
6762
|
validations: [{ rule: 'required' }],
|
|
6763
6763
|
},
|
|
6764
6764
|
{
|
|
6765
6765
|
name: 'status',
|
|
6766
|
-
title: '
|
|
6766
|
+
title: '@general:command-catalog.entity.update-status.inputs.status.title',
|
|
6767
6767
|
description: 'Target status name/value to write.',
|
|
6768
6768
|
interface: { name: 'text-editor' },
|
|
6769
6769
|
validations: [{ rule: 'required' }],
|
|
6770
6770
|
},
|
|
6771
6771
|
{
|
|
6772
6772
|
name: 'statusField',
|
|
6773
|
-
title: '
|
|
6773
|
+
title: '@general:command-catalog.entity.update-status.inputs.status-field.title',
|
|
6774
6774
|
description: 'Property path to patch (default statusId).',
|
|
6775
6775
|
interface: { name: 'text-editor' },
|
|
6776
6776
|
},
|
|
6777
6777
|
{
|
|
6778
6778
|
name: 'id',
|
|
6779
|
-
title: '
|
|
6779
|
+
title: '@general:command-catalog.entity.update-status.inputs.id.title',
|
|
6780
6780
|
description: 'Single record id (use ids for bulk).',
|
|
6781
6781
|
interface: { name: 'text-editor' },
|
|
6782
6782
|
},
|
|
6783
6783
|
{
|
|
6784
6784
|
name: 'ids',
|
|
6785
|
-
title: '
|
|
6785
|
+
title: '@general:command-catalog.entity.update-status.inputs.ids.title',
|
|
6786
6786
|
description: 'Bulk record ids.',
|
|
6787
6787
|
interface: { name: 'json' },
|
|
6788
6788
|
},
|
|
@@ -9749,17 +9749,17 @@ const ENTITY_LIST_ACTIONS = [
|
|
|
9749
9749
|
},
|
|
9750
9750
|
{
|
|
9751
9751
|
id: 'remove-filter',
|
|
9752
|
-
title: '
|
|
9752
|
+
title: '@general:terms.interface.voice-list.remove-filter',
|
|
9753
9753
|
params: [{ name: 'field', required: true, description: 'Visible filter field to remove (not hidden view conditions).' }],
|
|
9754
9754
|
},
|
|
9755
9755
|
{
|
|
9756
9756
|
id: 'clear-filters',
|
|
9757
|
-
title: '
|
|
9757
|
+
title: '@general:terms.interface.voice-list.clear-filters',
|
|
9758
9758
|
params: [],
|
|
9759
9759
|
},
|
|
9760
9760
|
{
|
|
9761
9761
|
id: 'set-search',
|
|
9762
|
-
title: '
|
|
9762
|
+
title: '@general:terms.interface.voice-list.set-search',
|
|
9763
9763
|
params: [{ name: 'text', required: false, description: 'Quick-search text. Empty string clears search.' }],
|
|
9764
9764
|
},
|
|
9765
9765
|
];
|
|
@@ -10065,6 +10065,114 @@ function buildDataSourceTraceSnapshot(dataSource, extras) {
|
|
|
10065
10065
|
};
|
|
10066
10066
|
}
|
|
10067
10067
|
|
|
10068
|
+
//#endregion
|
|
10069
|
+
//#region ----- Specs -----
|
|
10070
|
+
function collectEntityColumnFooterSpecs(columns) {
|
|
10071
|
+
if (!columns?.length) {
|
|
10072
|
+
return [];
|
|
10073
|
+
}
|
|
10074
|
+
const specs = [];
|
|
10075
|
+
for (const column of flattenEntityTableColumns(columns)) {
|
|
10076
|
+
const footer = column.footer;
|
|
10077
|
+
if (!footer) {
|
|
10078
|
+
continue;
|
|
10079
|
+
}
|
|
10080
|
+
specs.push({
|
|
10081
|
+
name: column.name,
|
|
10082
|
+
field: column.options?.dataPath || column.name,
|
|
10083
|
+
operation: footer.operation,
|
|
10084
|
+
});
|
|
10085
|
+
}
|
|
10086
|
+
return specs;
|
|
10087
|
+
}
|
|
10088
|
+
//#endregion
|
|
10089
|
+
//#region ----- Loader -----
|
|
10090
|
+
/**
|
|
10091
|
+
* Loads column footer aggregates without blocking the list page.
|
|
10092
|
+
* The request uses the list filter and ignores skip/take.
|
|
10093
|
+
*/
|
|
10094
|
+
class AXPEntityListColumnFooterLoader {
|
|
10095
|
+
constructor(aggregate) {
|
|
10096
|
+
this.aggregate = aggregate;
|
|
10097
|
+
this.state = signal({
|
|
10098
|
+
loading: false,
|
|
10099
|
+
values: {},
|
|
10100
|
+
}, /* @ts-ignore */
|
|
10101
|
+
...(ngDevMode ? [{ debugName: "state" }] : /* istanbul ignore next */ []));
|
|
10102
|
+
this.cache = {
|
|
10103
|
+
filterKey: '',
|
|
10104
|
+
requestId: 0,
|
|
10105
|
+
inFlight: false,
|
|
10106
|
+
};
|
|
10107
|
+
}
|
|
10108
|
+
request(specs, filter) {
|
|
10109
|
+
if (!specs.length) {
|
|
10110
|
+
return;
|
|
10111
|
+
}
|
|
10112
|
+
const filterKey = JSON.stringify(filter ?? null);
|
|
10113
|
+
const sameFilter = this.cache.filterKey === filterKey;
|
|
10114
|
+
if (this.cache.inFlight && sameFilter) {
|
|
10115
|
+
return;
|
|
10116
|
+
}
|
|
10117
|
+
this.cache.filterKey = filterKey;
|
|
10118
|
+
this.cache.inFlight = true;
|
|
10119
|
+
const requestId = ++this.cache.requestId;
|
|
10120
|
+
if (!sameFilter) {
|
|
10121
|
+
this.state.set({ loading: true, values: {} });
|
|
10122
|
+
}
|
|
10123
|
+
const measures = specs.map((spec) => ({
|
|
10124
|
+
reducer: spec.operation,
|
|
10125
|
+
field: spec.operation === 'count' ? undefined : spec.field,
|
|
10126
|
+
alias: spec.name,
|
|
10127
|
+
}));
|
|
10128
|
+
void this.load(specs, filter, measures, requestId);
|
|
10129
|
+
}
|
|
10130
|
+
async load(specs, filter, measures, requestId) {
|
|
10131
|
+
try {
|
|
10132
|
+
const result = await this.aggregate({
|
|
10133
|
+
groupBy: [],
|
|
10134
|
+
measures,
|
|
10135
|
+
filter,
|
|
10136
|
+
});
|
|
10137
|
+
if (requestId !== this.cache.requestId) {
|
|
10138
|
+
return;
|
|
10139
|
+
}
|
|
10140
|
+
const row = result.rows[0];
|
|
10141
|
+
const values = {};
|
|
10142
|
+
for (const spec of specs) {
|
|
10143
|
+
if (!row) {
|
|
10144
|
+
values[spec.name] = spec.operation === 'sum' || spec.operation === 'count' ? 0 : null;
|
|
10145
|
+
continue;
|
|
10146
|
+
}
|
|
10147
|
+
values[spec.name] = coerceFooterNumber(row[spec.name]);
|
|
10148
|
+
}
|
|
10149
|
+
this.state.set({ loading: false, values });
|
|
10150
|
+
}
|
|
10151
|
+
catch {
|
|
10152
|
+
if (requestId !== this.cache.requestId) {
|
|
10153
|
+
return;
|
|
10154
|
+
}
|
|
10155
|
+
this.state.set({ loading: false, values: {} });
|
|
10156
|
+
}
|
|
10157
|
+
finally {
|
|
10158
|
+
if (requestId === this.cache.requestId) {
|
|
10159
|
+
this.cache.inFlight = false;
|
|
10160
|
+
}
|
|
10161
|
+
}
|
|
10162
|
+
}
|
|
10163
|
+
}
|
|
10164
|
+
function coerceFooterNumber(value) {
|
|
10165
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
10166
|
+
return value;
|
|
10167
|
+
}
|
|
10168
|
+
if (typeof value === 'string' && value.trim().length > 0) {
|
|
10169
|
+
const parsed = Number(value);
|
|
10170
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
10171
|
+
}
|
|
10172
|
+
return null;
|
|
10173
|
+
}
|
|
10174
|
+
//#endregion
|
|
10175
|
+
|
|
10068
10176
|
/** @deprecated Use {@link AXPEntityCardSelectActionName}. */
|
|
10069
10177
|
const AXPEntityMasterListCardSelectActionName = AXPEntityCardSelectActionName;
|
|
10070
10178
|
class AXPEntityMasterListViewQueryViewModel {
|
|
@@ -10317,6 +10425,9 @@ class AXPEntityMasterListViewModel {
|
|
|
10317
10425
|
this.filterOperatorMiddleware = this.injector.get(AXPFilterOperatorMiddlewareService);
|
|
10318
10426
|
this.entityDefinitionRegistry = this.injector.get(AXPEntityDefinitionRegistryService);
|
|
10319
10427
|
this.cardFieldsResolver = this.injector.get(AXPEntityCardFieldsResolver);
|
|
10428
|
+
this.columnFooterLoader = new AXPEntityListColumnFooterLoader((request) => this.injector.get(AXPEntityRuntimeAccessorService).aggregate(getEntityInfo(this.entityDef).source, request));
|
|
10429
|
+
/** Whole-table footer aggregates for columns that declare `footer`. */
|
|
10430
|
+
this.columnFooter = this.columnFooterLoader.state;
|
|
10320
10431
|
this.settingEntityKey = `${this.config.module}:${this.config.name}`;
|
|
10321
10432
|
this.destroyed = new Subject();
|
|
10322
10433
|
this.lastAppliedSortKey = null;
|
|
@@ -10441,6 +10552,7 @@ class AXPEntityMasterListViewModel {
|
|
|
10441
10552
|
load: async (e) => {
|
|
10442
10553
|
resetPagingForTreeChildrenLoad(e, this.entityDef.parentKey);
|
|
10443
10554
|
const listRequest = this.entityDef.parentKey != null ? applyHierarchicalRootListFilter(e, this.entityDef.parentKey) : e;
|
|
10555
|
+
this.columnFooterLoader.request(collectEntityColumnFooterSpecs(this.entityDef.columns), listRequest.filter);
|
|
10444
10556
|
const fields = this.buildColumnQueryFields();
|
|
10445
10557
|
const requestWithFields = fields?.length ? { ...listRequest, fields } : listRequest;
|
|
10446
10558
|
const execute = this.entityDef.queries?.list?.execute;
|
|
@@ -10776,6 +10888,9 @@ class AXPEntityMasterListViewModel {
|
|
|
10776
10888
|
}
|
|
10777
10889
|
return next;
|
|
10778
10890
|
});
|
|
10891
|
+
// `columnTree` snapshots `visible` when columns are first built. Refresh that snapshot
|
|
10892
|
+
// so a persisted `visible: false` actually hides the column after reload.
|
|
10893
|
+
this.rebuildColumnTree();
|
|
10779
10894
|
}
|
|
10780
10895
|
if (Array.isArray(sorts) && sorts.length) {
|
|
10781
10896
|
this.setActiveSortsFromQueries(sorts);
|
|
@@ -11020,6 +11135,18 @@ class AXPEntityMasterListViewModel {
|
|
|
11020
11135
|
return next;
|
|
11021
11136
|
});
|
|
11022
11137
|
}
|
|
11138
|
+
/**
|
|
11139
|
+
* Table resize events send `column.name` (for example `title`).
|
|
11140
|
+
* Older columns used a `col-` prefix. Persisted settings store `dataPath` when set.
|
|
11141
|
+
*/
|
|
11142
|
+
resolvePersistedColumnName(dataField) {
|
|
11143
|
+
const raw = dataField.startsWith('col-') ? dataField.slice(4) : dataField;
|
|
11144
|
+
const match = this.columns().find((column) => {
|
|
11145
|
+
const persistedName = column.column?.options?.dataPath ?? column.name;
|
|
11146
|
+
return column.name === raw || persistedName === raw;
|
|
11147
|
+
});
|
|
11148
|
+
return match ? (match.column?.options?.dataPath ?? match.name) : raw;
|
|
11149
|
+
}
|
|
11023
11150
|
async saveSettings(changesType, data) {
|
|
11024
11151
|
if (!(await this.shouldPersistListState())) {
|
|
11025
11152
|
return;
|
|
@@ -11027,8 +11154,29 @@ class AXPEntityMasterListViewModel {
|
|
|
11027
11154
|
switch (changesType) {
|
|
11028
11155
|
case 'columnSizes': {
|
|
11029
11156
|
const columnSizeData = data;
|
|
11157
|
+
const dataField = String(columnSizeData?.dataField ?? '');
|
|
11158
|
+
const width = toPersistedColumnWidth(columnSizeData?.width);
|
|
11159
|
+
if (!dataField || !width) {
|
|
11160
|
+
break;
|
|
11161
|
+
}
|
|
11162
|
+
const persistedName = this.resolvePersistedColumnName(dataField);
|
|
11163
|
+
this.columns.update((columns) => {
|
|
11164
|
+
let changed = false;
|
|
11165
|
+
const next = columns.map((column) => {
|
|
11166
|
+
const key = column.column?.options?.dataPath ?? column.name;
|
|
11167
|
+
if (key !== persistedName && column.name !== persistedName) {
|
|
11168
|
+
return column;
|
|
11169
|
+
}
|
|
11170
|
+
if (column.width === width) {
|
|
11171
|
+
return column;
|
|
11172
|
+
}
|
|
11173
|
+
changed = true;
|
|
11174
|
+
column.width = width;
|
|
11175
|
+
return column;
|
|
11176
|
+
});
|
|
11177
|
+
return changed ? next : columns;
|
|
11178
|
+
});
|
|
11030
11179
|
await this.enqueueSettingsUpdate((prev) => {
|
|
11031
|
-
const field = columnSizeData.dataField.split('-')[1];
|
|
11032
11180
|
const newSettings = { ...prev };
|
|
11033
11181
|
const existingColumns = prev?.list?.views?.[this.view().name]?.columns;
|
|
11034
11182
|
const baseColumns = Array.isArray(existingColumns) && existingColumns.length
|
|
@@ -11040,7 +11188,7 @@ class AXPEntityMasterListViewModel {
|
|
|
11040
11188
|
}));
|
|
11041
11189
|
const updatedColumns = baseColumns.map((c) => ({
|
|
11042
11190
|
...c,
|
|
11043
|
-
width: c.name ===
|
|
11191
|
+
width: c.name === persistedName ? width : c.width,
|
|
11044
11192
|
}));
|
|
11045
11193
|
set(newSettings, `list.views.${this.view().name}.columns`, updatedColumns);
|
|
11046
11194
|
set(newSettings, `list.views.${this.view().name}.columnsVersion`, getEntityListColumnsSettingsVersion());
|
|
@@ -11475,7 +11623,7 @@ class AXPEntityMasterListViewModel {
|
|
|
11475
11623
|
*/
|
|
11476
11624
|
async loadFilterDefinitions() {
|
|
11477
11625
|
const definitions = await collectEntityListFilterDefinitions(this.entityDef, (moduleName, entityName) => this.entityDefinitionRegistry.resolve(moduleName, entityName).catch(() => null), {
|
|
11478
|
-
resolveWidget: (type) => this.widgetResolver.
|
|
11626
|
+
resolveWidget: (type) => this.widgetResolver.getOptional(type),
|
|
11479
11627
|
});
|
|
11480
11628
|
this.filterDefinitions.set(definitions);
|
|
11481
11629
|
}
|
|
@@ -12260,6 +12408,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
12260
12408
|
type: Injectable,
|
|
12261
12409
|
args: [{ providedIn: 'root' }]
|
|
12262
12410
|
}] });
|
|
12411
|
+
function toPersistedColumnWidth(width) {
|
|
12412
|
+
if (typeof width === 'number' && Number.isFinite(width) && width > 0) {
|
|
12413
|
+
return `${Math.round(width)}px`;
|
|
12414
|
+
}
|
|
12415
|
+
if (typeof width !== 'string') {
|
|
12416
|
+
return undefined;
|
|
12417
|
+
}
|
|
12418
|
+
const trimmed = width.trim();
|
|
12419
|
+
if (!trimmed || trimmed === 'auto') {
|
|
12420
|
+
return undefined;
|
|
12421
|
+
}
|
|
12422
|
+
if (/^\d+(\.\d+)?$/.test(trimmed)) {
|
|
12423
|
+
const parsed = Number(trimmed);
|
|
12424
|
+
return Number.isFinite(parsed) && parsed > 0 ? `${Math.round(parsed)}px` : undefined;
|
|
12425
|
+
}
|
|
12426
|
+
return trimmed;
|
|
12427
|
+
}
|
|
12263
12428
|
const AXPEntityListViewModelResolver = async (route, state, service = inject(AXPEntityListViewModelFactory), router = inject(Router), hooks = inject(AXPHookService)) => {
|
|
12264
12429
|
const moduleName = route.parent?.paramMap.get('module');
|
|
12265
12430
|
const entityName = route.paramMap.get('entity');
|
|
@@ -13159,7 +13324,7 @@ class AXPEntityPreloadFiltersViewModel {
|
|
|
13159
13324
|
//#region ---- Methods ----
|
|
13160
13325
|
async loadFilterDefinitions() {
|
|
13161
13326
|
const definitions = await collectEntityListFilterDefinitions(this.entityDef, (moduleName, entityName) => this.entityRegistry.resolve(moduleName, entityName).catch(() => null), {
|
|
13162
|
-
resolveWidget: (type) => this.widgetResolver.
|
|
13327
|
+
resolveWidget: (type) => this.widgetResolver.getOptional(type),
|
|
13163
13328
|
});
|
|
13164
13329
|
this.filterDefinitions.set(definitions);
|
|
13165
13330
|
}
|
|
@@ -13835,7 +14000,7 @@ class AXMAttachmentsPageComponentProvider {
|
|
|
13835
14000
|
return [
|
|
13836
14001
|
{
|
|
13837
14002
|
key: ATTACHMENTS_PAGE_COMPONENT_KEY,
|
|
13838
|
-
loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-
|
|
14003
|
+
loader: () => import('./acorex-platform-framework-client-layout-entity-attachments-page.component-BY_hDj8A.mjs').then((m) => m.AXMAttachmentsPageComponent),
|
|
13839
14004
|
},
|
|
13840
14005
|
];
|
|
13841
14006
|
}
|
|
@@ -14372,7 +14537,7 @@ class AXMGalleryPageComponentProvider {
|
|
|
14372
14537
|
return [
|
|
14373
14538
|
{
|
|
14374
14539
|
key: GALLERY_PAGE_COMPONENT_KEY,
|
|
14375
|
-
loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-
|
|
14540
|
+
loader: () => import('./acorex-platform-framework-client-layout-entity-gallery-page.component-D7xxrauC.mjs').then((m) => m.AXMGalleryPageComponent),
|
|
14376
14541
|
},
|
|
14377
14542
|
];
|
|
14378
14543
|
}
|
|
@@ -17332,7 +17497,7 @@ class AXPTruncatedBreadcrumbComponent {
|
|
|
17332
17497
|
<span
|
|
17333
17498
|
class="text-sm text-primary cursor-pointer hover:opacity-75 ml-1"
|
|
17334
17499
|
(click)="handleCollapseClick($event)"
|
|
17335
|
-
title="
|
|
17500
|
+
[attr.title]="'@general:terms.interface.collapse-path' | translate | async"
|
|
17336
17501
|
>
|
|
17337
17502
|
<ax-icon [class]="eyeIcon()" class="text-primary"></ax-icon>
|
|
17338
17503
|
</span>
|
|
@@ -17388,7 +17553,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
17388
17553
|
<span
|
|
17389
17554
|
class="text-sm text-primary cursor-pointer hover:opacity-75 ml-1"
|
|
17390
17555
|
(click)="handleCollapseClick($event)"
|
|
17391
|
-
title="
|
|
17556
|
+
[attr.title]="'@general:terms.interface.collapse-path' | translate | async"
|
|
17392
17557
|
>
|
|
17393
17558
|
<ax-icon [class]="eyeIcon()" class="text-primary"></ax-icon>
|
|
17394
17559
|
</span>
|
|
@@ -18528,9 +18693,25 @@ function mapEntityColumnToWidgetColumn(entity, column) {
|
|
|
18528
18693
|
title: columnDef.title || property?.title || columnDef.name,
|
|
18529
18694
|
width: columnDef.options?.width,
|
|
18530
18695
|
visible: columnDef.options?.visible !== false,
|
|
18696
|
+
...(columnDef.footer ? { footer: columnDef.footer } : {}),
|
|
18531
18697
|
widget,
|
|
18532
18698
|
};
|
|
18533
18699
|
}
|
|
18700
|
+
function collectDataListColumnFooterSpecs(columns) {
|
|
18701
|
+
const specs = [];
|
|
18702
|
+
for (const column of flattenDataListWidgetColumns(columns)) {
|
|
18703
|
+
const footer = column.footer;
|
|
18704
|
+
if (!footer) {
|
|
18705
|
+
continue;
|
|
18706
|
+
}
|
|
18707
|
+
specs.push({
|
|
18708
|
+
name: column.name,
|
|
18709
|
+
field: column.widget?.path || column.name,
|
|
18710
|
+
operation: footer.operation,
|
|
18711
|
+
});
|
|
18712
|
+
}
|
|
18713
|
+
return specs;
|
|
18714
|
+
}
|
|
18534
18715
|
/**
|
|
18535
18716
|
* Applies entity column width (explicit or resolved via {@link AXPColumnWidthService}) to data-list columns.
|
|
18536
18717
|
*/
|
|
@@ -18612,6 +18793,7 @@ class AXPEntityListTableService {
|
|
|
18612
18793
|
this.contextEvalFactory = inject(AXPContextEvalFactory);
|
|
18613
18794
|
this.settings = inject(AXPSettingsService);
|
|
18614
18795
|
this.columnWidthService = inject(AXPColumnWidthService);
|
|
18796
|
+
this.entityAccessor = inject(AXPEntityRuntimeAccessorService);
|
|
18615
18797
|
this.evaluateExpressions = async (options, data) => {
|
|
18616
18798
|
if (!options) {
|
|
18617
18799
|
return {};
|
|
@@ -18640,11 +18822,16 @@ class AXPEntityListTableService {
|
|
|
18640
18822
|
showIndex = false;
|
|
18641
18823
|
}
|
|
18642
18824
|
}
|
|
18825
|
+
const columns = this.createColumnsFromProperties(entity, options);
|
|
18826
|
+
const footerSpecs = collectDataListColumnFooterSpecs(columns);
|
|
18827
|
+
const columnFooter = footerSpecs.length
|
|
18828
|
+
? new AXPEntityListColumnFooterLoader((request) => this.entityAccessor.aggregate(getEntityInfo(entity).source, request))
|
|
18829
|
+
: undefined;
|
|
18643
18830
|
const listOptions = {
|
|
18644
18831
|
// 📊 Data Source
|
|
18645
|
-
dataSource: this.createDataSource(entity, options),
|
|
18832
|
+
dataSource: this.createDataSource(entity, options, columnFooter, footerSpecs),
|
|
18646
18833
|
// 📋 Columns from Properties
|
|
18647
|
-
columns
|
|
18834
|
+
columns,
|
|
18648
18835
|
// 🎯 Row Commands from Actions
|
|
18649
18836
|
primaryCommands: this.createRowCommands(allActions, 'primary'),
|
|
18650
18837
|
secondaryCommands: this.createRowCommands(allActions, 'secondary'),
|
|
@@ -18653,7 +18840,8 @@ class AXPEntityListTableService {
|
|
|
18653
18840
|
allowSelection: this.hasSelectedScopeActions(entity),
|
|
18654
18841
|
paging: true,
|
|
18655
18842
|
showHeader: true,
|
|
18656
|
-
showFooter:
|
|
18843
|
+
showFooter: footerSpecs.length > 0,
|
|
18844
|
+
...(columnFooter ? { columnFooter: columnFooter.state } : {}),
|
|
18657
18845
|
// 🔗 Entity Configuration
|
|
18658
18846
|
parentField: entity.parentKey,
|
|
18659
18847
|
fetchDataMode: 'manual',
|
|
@@ -18673,7 +18861,7 @@ class AXPEntityListTableService {
|
|
|
18673
18861
|
/**
|
|
18674
18862
|
* Create DataSource for Entity
|
|
18675
18863
|
*/
|
|
18676
|
-
createDataSource(entity, options) {
|
|
18864
|
+
createDataSource(entity, options, columnFooter, footerSpecs) {
|
|
18677
18865
|
return new AXDataSource({
|
|
18678
18866
|
byKey: (key) => {
|
|
18679
18867
|
const func = entity.queries?.byKey?.execute;
|
|
@@ -18685,6 +18873,10 @@ class AXPEntityListTableService {
|
|
|
18685
18873
|
throw new Error(`Entity ${entity.name} does not have a list query`);
|
|
18686
18874
|
}
|
|
18687
18875
|
resetPagingForTreeChildrenLoad(e, entity.parentKey);
|
|
18876
|
+
if (columnFooter && footerSpecs.length) {
|
|
18877
|
+
const scoped = entity.parentKey ? applyHierarchicalRootListFilter(e, entity.parentKey) : e;
|
|
18878
|
+
columnFooter.request(footerSpecs, scoped.filter);
|
|
18879
|
+
}
|
|
18688
18880
|
return func(e);
|
|
18689
18881
|
},
|
|
18690
18882
|
pageSize: options?.pageSize || entity.interfaces?.master?.list?.views?.[0]?.pageSize || 10,
|
|
@@ -18931,7 +19123,7 @@ class AXPEntityListToolbarService {
|
|
|
18931
19123
|
*/
|
|
18932
19124
|
async createFilterDefinitions(entity) {
|
|
18933
19125
|
return collectEntityListFilterDefinitions(entity, (moduleName, entityName) => this.entityRegistry.resolve(moduleName, entityName).catch(() => null), {
|
|
18934
|
-
resolveWidget: (type) => this.widgetResolver.
|
|
19126
|
+
resolveWidget: (type) => this.widgetResolver.getOptional(type),
|
|
18935
19127
|
});
|
|
18936
19128
|
}
|
|
18937
19129
|
/**
|
|
@@ -19994,7 +20186,9 @@ class AXPEntityListWidgetViewComponent extends AXPValueWidgetComponent {
|
|
|
19994
20186
|
defaultValue: this.getValue()?.table,
|
|
19995
20187
|
});
|
|
19996
20188
|
const parentFilters = this.getMergedToolbarFilters();
|
|
19997
|
-
const viewFilters = initialView
|
|
20189
|
+
const viewFilters = initialView
|
|
20190
|
+
? withQueryViewFilterVisibility(initialView, queryViewConditionsToFilterQueries(initialView))
|
|
20191
|
+
: [];
|
|
19998
20192
|
const toolbarState = {
|
|
19999
20193
|
view: initialView?.name,
|
|
20000
20194
|
filters: initialView ? [...parentFilters, ...viewFilters] : parentFilters,
|
|
@@ -21369,98 +21563,195 @@ var lookupWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
21369
21563
|
AXPLookupWidgetViewComponent: AXPLookupWidgetViewComponent
|
|
21370
21564
|
});
|
|
21371
21565
|
|
|
21372
|
-
|
|
21373
|
-
|
|
21374
|
-
|
|
21375
|
-
|
|
21376
|
-
|
|
21377
|
-
|
|
21378
|
-
|
|
21379
|
-
|
|
21380
|
-
|
|
21381
|
-
|
|
21382
|
-
|
|
21566
|
+
const AXP_LOOKUP_FILTER_DEFAULT_OPERATOR = 'equal';
|
|
21567
|
+
const AXPLookupWidget = {
|
|
21568
|
+
name: 'lookup-editor',
|
|
21569
|
+
title: 'Lookup',
|
|
21570
|
+
categories: [],
|
|
21571
|
+
groups: [AXPWidgetGroupEnum.EntityWidget],
|
|
21572
|
+
defaultFilterWidgetName: 'lookup-filter',
|
|
21573
|
+
type: 'editor',
|
|
21574
|
+
icon: 'fa-light fa-list-radio',
|
|
21575
|
+
properties: [
|
|
21576
|
+
AXP_DISABLED_PROPERTY,
|
|
21577
|
+
AXP_ALLOW_CLEAR_PROPERTY,
|
|
21578
|
+
AXP_DATA_PATH_PROPERTY,
|
|
21579
|
+
{
|
|
21580
|
+
name: 'expose',
|
|
21581
|
+
title: 'Expose',
|
|
21582
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
21583
|
+
schema: {
|
|
21584
|
+
dataType: 'string',
|
|
21585
|
+
interface: {
|
|
21586
|
+
name: 'expose',
|
|
21587
|
+
path: 'options.expose',
|
|
21588
|
+
type: AXPWidgetsCatalog.select,
|
|
21589
|
+
},
|
|
21383
21590
|
},
|
|
21384
|
-
|
|
21385
|
-
|
|
21591
|
+
visible: true,
|
|
21592
|
+
},
|
|
21593
|
+
{
|
|
21594
|
+
name: 'entity',
|
|
21595
|
+
title: 'Entity',
|
|
21596
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
21597
|
+
schema: {
|
|
21598
|
+
dataType: 'string',
|
|
21599
|
+
interface: {
|
|
21600
|
+
name: 'entity',
|
|
21601
|
+
path: 'options.entity',
|
|
21602
|
+
type: AXPWidgetsCatalog.text,
|
|
21603
|
+
},
|
|
21386
21604
|
},
|
|
21387
|
-
|
|
21388
|
-
|
|
21389
|
-
|
|
21390
|
-
|
|
21391
|
-
|
|
21392
|
-
|
|
21605
|
+
visible: true,
|
|
21606
|
+
},
|
|
21607
|
+
AXP_ALLOW_MULTIPLE_PROPERTY,
|
|
21608
|
+
createBooleanProperty({
|
|
21609
|
+
name: 'popoverEnabled',
|
|
21610
|
+
title: 'Entity Detail Popover',
|
|
21611
|
+
path: 'options.popover.enabled',
|
|
21612
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
21613
|
+
defaultValue: true,
|
|
21614
|
+
}),
|
|
21615
|
+
{
|
|
21616
|
+
name: 'displayFormat',
|
|
21617
|
+
title: 'Display Format',
|
|
21618
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
21619
|
+
schema: {
|
|
21620
|
+
dataType: 'string',
|
|
21621
|
+
interface: {
|
|
21622
|
+
name: 'displayFormat',
|
|
21623
|
+
path: 'options.displayFormat',
|
|
21624
|
+
type: AXPWidgetsCatalog.template,
|
|
21625
|
+
},
|
|
21393
21626
|
},
|
|
21394
|
-
|
|
21395
|
-
|
|
21396
|
-
|
|
21397
|
-
|
|
21398
|
-
|
|
21627
|
+
visible: true,
|
|
21628
|
+
},
|
|
21629
|
+
{
|
|
21630
|
+
name: 'columnResolveStrategy',
|
|
21631
|
+
title: 'Column resolve strategy',
|
|
21632
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
21633
|
+
schema: {
|
|
21634
|
+
dataType: 'string',
|
|
21635
|
+
defaultValue: 'hydrated',
|
|
21636
|
+
interface: {
|
|
21637
|
+
name: 'columnResolveStrategy',
|
|
21638
|
+
path: 'options.columnResolve.strategy',
|
|
21639
|
+
type: AXPWidgetsCatalog.select,
|
|
21640
|
+
valueTransforms: objectKeyValueTransforms('id'),
|
|
21641
|
+
options: {
|
|
21642
|
+
dataSource: [
|
|
21643
|
+
{ id: 'hydrated', title: 'Hydrated (titles on row)' },
|
|
21644
|
+
{ id: 'idsWithCount', title: 'Ids + count on row (load titles on open)' },
|
|
21645
|
+
{ id: 'countOnly', title: 'Count on row (named query on open)' },
|
|
21646
|
+
],
|
|
21647
|
+
},
|
|
21648
|
+
},
|
|
21399
21649
|
},
|
|
21650
|
+
visible: true,
|
|
21400
21651
|
},
|
|
21401
|
-
|
|
21402
|
-
|
|
21403
|
-
|
|
21404
|
-
|
|
21405
|
-
|
|
21406
|
-
|
|
21407
|
-
|
|
21408
|
-
|
|
21409
|
-
|
|
21410
|
-
|
|
21411
|
-
|
|
21412
|
-
|
|
21413
|
-
|
|
21414
|
-
|
|
21415
|
-
|
|
21416
|
-
|
|
21417
|
-
|
|
21418
|
-
|
|
21419
|
-
|
|
21420
|
-
|
|
21421
|
-
|
|
21422
|
-
|
|
21423
|
-
|
|
21424
|
-
|
|
21425
|
-
|
|
21426
|
-
|
|
21427
|
-
|
|
21428
|
-
|
|
21429
|
-
|
|
21430
|
-
|
|
21431
|
-
|
|
21432
|
-
|
|
21433
|
-
|
|
21434
|
-
|
|
21435
|
-
|
|
21436
|
-
|
|
21437
|
-
|
|
21438
|
-
|
|
21439
|
-
|
|
21440
|
-
|
|
21441
|
-
|
|
21442
|
-
|
|
21443
|
-
|
|
21444
|
-
|
|
21445
|
-
|
|
21446
|
-
|
|
21447
|
-
|
|
21448
|
-
|
|
21449
|
-
|
|
21450
|
-
|
|
21451
|
-
|
|
21452
|
-
|
|
21453
|
-
|
|
21454
|
-
|
|
21455
|
-
|
|
21456
|
-
|
|
21457
|
-
|
|
21458
|
-
|
|
21459
|
-
|
|
21460
|
-
|
|
21461
|
-
|
|
21462
|
-
|
|
21463
|
-
|
|
21652
|
+
{
|
|
21653
|
+
name: 'columnResolveCountFieldPath',
|
|
21654
|
+
title: 'Column resolve — count field path',
|
|
21655
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
21656
|
+
schema: {
|
|
21657
|
+
dataType: 'string',
|
|
21658
|
+
interface: {
|
|
21659
|
+
name: 'columnResolveCountFieldPath',
|
|
21660
|
+
path: 'options.columnResolve.countFieldPath',
|
|
21661
|
+
type: AXPWidgetsCatalog.text,
|
|
21662
|
+
},
|
|
21663
|
+
},
|
|
21664
|
+
visible: true,
|
|
21665
|
+
},
|
|
21666
|
+
{
|
|
21667
|
+
name: 'columnResolveIdsPath',
|
|
21668
|
+
title: 'Column resolve — ids path',
|
|
21669
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
21670
|
+
schema: {
|
|
21671
|
+
dataType: 'string',
|
|
21672
|
+
interface: {
|
|
21673
|
+
name: 'columnResolveIdsPath',
|
|
21674
|
+
path: 'options.columnResolve.idsPath',
|
|
21675
|
+
type: AXPWidgetsCatalog.text,
|
|
21676
|
+
},
|
|
21677
|
+
},
|
|
21678
|
+
visible: true,
|
|
21679
|
+
},
|
|
21680
|
+
{
|
|
21681
|
+
name: 'columnResolveQueryKey',
|
|
21682
|
+
title: 'Column resolve — query key (countOnly)',
|
|
21683
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
21684
|
+
schema: {
|
|
21685
|
+
dataType: 'string',
|
|
21686
|
+
interface: {
|
|
21687
|
+
name: 'columnResolveQueryKey',
|
|
21688
|
+
path: 'options.columnResolve.queryKey',
|
|
21689
|
+
type: AXPWidgetsCatalog.text,
|
|
21690
|
+
},
|
|
21691
|
+
},
|
|
21692
|
+
visible: true,
|
|
21693
|
+
},
|
|
21694
|
+
{
|
|
21695
|
+
name: 'columnResolveQueryParams',
|
|
21696
|
+
title: 'Column resolve — query params (JSON: param → row path)',
|
|
21697
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
21698
|
+
schema: {
|
|
21699
|
+
dataType: 'string',
|
|
21700
|
+
interface: {
|
|
21701
|
+
name: 'columnResolveQueryParams',
|
|
21702
|
+
path: 'options.columnResolve.queryParams',
|
|
21703
|
+
type: AXPWidgetsCatalog.text,
|
|
21704
|
+
},
|
|
21705
|
+
},
|
|
21706
|
+
visible: true,
|
|
21707
|
+
},
|
|
21708
|
+
{
|
|
21709
|
+
name: 'columnResolveQueryResultItemsPath',
|
|
21710
|
+
title: 'Column resolve — query result items path',
|
|
21711
|
+
group: AXP_DATA_PROPERTY_GROUP,
|
|
21712
|
+
schema: {
|
|
21713
|
+
dataType: 'string',
|
|
21714
|
+
defaultValue: 'items',
|
|
21715
|
+
interface: {
|
|
21716
|
+
name: 'columnResolveQueryResultItemsPath',
|
|
21717
|
+
path: 'options.columnResolve.queryResultItemsPath',
|
|
21718
|
+
type: AXPWidgetsCatalog.text,
|
|
21719
|
+
},
|
|
21720
|
+
},
|
|
21721
|
+
visible: true,
|
|
21722
|
+
},
|
|
21723
|
+
],
|
|
21724
|
+
components: {
|
|
21725
|
+
view: {
|
|
21726
|
+
component: () => Promise.resolve().then(function () { return lookupWidgetView_component; }).then((c) => c.AXPLookupWidgetViewComponent),
|
|
21727
|
+
},
|
|
21728
|
+
edit: {
|
|
21729
|
+
component: () => Promise.resolve().then(function () { return lookupWidgetEdit_component; }).then((c) => c.AXPLookupWidgetEditComponent),
|
|
21730
|
+
},
|
|
21731
|
+
column: {
|
|
21732
|
+
component: () => Promise.resolve().then(function () { return lookupWidgetColumn_component; }).then((c) => c.AXPLookupWidgetColumnComponent),
|
|
21733
|
+
},
|
|
21734
|
+
designer: {
|
|
21735
|
+
component: () => Promise.resolve().then(function () { return lookupWidgetEdit_component; }).then((c) => c.AXPLookupWidgetEditComponent),
|
|
21736
|
+
},
|
|
21737
|
+
},
|
|
21738
|
+
};
|
|
21739
|
+
|
|
21740
|
+
//#endregion
|
|
21741
|
+
class AXPEntityDataSelectorRowActionsService {
|
|
21742
|
+
constructor() {
|
|
21743
|
+
//#region ---- Services & Dependencies ----
|
|
21744
|
+
this.expressionEvaluator = inject(AXPExpressionEvaluatorService);
|
|
21745
|
+
this.commandService = inject(AXPCommandService);
|
|
21746
|
+
}
|
|
21747
|
+
//#endregion
|
|
21748
|
+
//#region ---- Public Methods ----
|
|
21749
|
+
/**
|
|
21750
|
+
* Build a row-actions handler for {@link AXPDataSelectorComponent} from entity list actions.
|
|
21751
|
+
*/
|
|
21752
|
+
createHandler(entity, config) {
|
|
21753
|
+
const primaryFilters = config.primary ?? [];
|
|
21754
|
+
const secondaryFilters = config.secondary ?? [];
|
|
21464
21755
|
if (primaryFilters.length === 0 && secondaryFilters.length === 0) {
|
|
21465
21756
|
return undefined;
|
|
21466
21757
|
}
|
|
@@ -21629,6 +21920,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
21629
21920
|
}]
|
|
21630
21921
|
}] });
|
|
21631
21922
|
|
|
21923
|
+
//#region ---- Expression Scope ----
|
|
21924
|
+
/**
|
|
21925
|
+
* Builds the expression scope used to evaluate lookup `create.context` templates.
|
|
21926
|
+
* Matches widget-renderer `context.eval` / `context.set` semantics.
|
|
21927
|
+
*/
|
|
21928
|
+
function buildLookupExpressionScope(contextService, parentPath) {
|
|
21929
|
+
return {
|
|
21930
|
+
context: {
|
|
21931
|
+
eval: (path) => {
|
|
21932
|
+
const fullPath = path.startsWith('>') && parentPath ? `${parentPath}.${path.substring(1)}` : path;
|
|
21933
|
+
return contextService.getValue(fullPath);
|
|
21934
|
+
},
|
|
21935
|
+
set: (path, value) => {
|
|
21936
|
+
contextService.update(path, value, { origin: 'user' });
|
|
21937
|
+
},
|
|
21938
|
+
data: () => contextService.data(),
|
|
21939
|
+
isDirty: () => {
|
|
21940
|
+
if (!contextService.isSavedCommitted()) {
|
|
21941
|
+
return false;
|
|
21942
|
+
}
|
|
21943
|
+
return contextService.isDirty();
|
|
21944
|
+
},
|
|
21945
|
+
options: (path) => {
|
|
21946
|
+
if (path == null || path === '') {
|
|
21947
|
+
return contextService.getValue('options');
|
|
21948
|
+
}
|
|
21949
|
+
return contextService.getValue(`options.${path}`);
|
|
21950
|
+
},
|
|
21951
|
+
},
|
|
21952
|
+
events: {},
|
|
21953
|
+
widget: {},
|
|
21954
|
+
methods: {},
|
|
21955
|
+
vars: {},
|
|
21956
|
+
};
|
|
21957
|
+
}
|
|
21958
|
+
//#endregion
|
|
21959
|
+
//#region ---- Create Context Evaluation ----
|
|
21960
|
+
/**
|
|
21961
|
+
* Deep-evaluates expression strings inside lookup `create.context` (e.g. parentId from context).
|
|
21962
|
+
*/
|
|
21963
|
+
async function evaluateLookupCreateContext(template, expressionEvaluator, scope) {
|
|
21964
|
+
if (!template || !isObjectLike(template)) {
|
|
21965
|
+
return {};
|
|
21966
|
+
}
|
|
21967
|
+
return (await evaluateLookupCreateContextValue(template, expressionEvaluator, scope));
|
|
21968
|
+
}
|
|
21969
|
+
async function evaluateLookupCreateContextValue(value, expressionEvaluator, scope) {
|
|
21970
|
+
if (typeof value === 'string' && expressionEvaluator.isExpression(value)) {
|
|
21971
|
+
return expressionEvaluator.evaluate(value, scope);
|
|
21972
|
+
}
|
|
21973
|
+
if (isArray(value)) {
|
|
21974
|
+
const results = await Promise.all(value.map((entry) => evaluateLookupCreateContextValue(entry, expressionEvaluator, scope)));
|
|
21975
|
+
return results;
|
|
21976
|
+
}
|
|
21977
|
+
if (isObjectLike(value)) {
|
|
21978
|
+
const result = {};
|
|
21979
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
21980
|
+
result[key] = await evaluateLookupCreateContextValue(entry, expressionEvaluator, scope);
|
|
21981
|
+
}
|
|
21982
|
+
return result;
|
|
21983
|
+
}
|
|
21984
|
+
return value;
|
|
21985
|
+
}
|
|
21986
|
+
/**
|
|
21987
|
+
* Removes null/undefined entries from resolved create context before Entity:Create.
|
|
21988
|
+
*/
|
|
21989
|
+
function compactLookupCreateContext(data) {
|
|
21990
|
+
const result = {};
|
|
21991
|
+
for (const [key, value] of Object.entries(cloneDeep(data))) {
|
|
21992
|
+
if (!isNil(value) && value !== '') {
|
|
21993
|
+
result[key] = value;
|
|
21994
|
+
}
|
|
21995
|
+
}
|
|
21996
|
+
return result;
|
|
21997
|
+
}
|
|
21998
|
+
//#endregion
|
|
21999
|
+
|
|
21632
22000
|
const LEGACY_ENTITY_DATA_SELECTOR_OPTION_KEYS = [
|
|
21633
22001
|
'allowMultiple',
|
|
21634
22002
|
'allowUnselect',
|
|
@@ -22800,6 +23168,18 @@ function createLookupEntityTreeDataSource(config) {
|
|
|
22800
23168
|
//#endregion
|
|
22801
23169
|
//#region ---- Helpers ----
|
|
22802
23170
|
const LOADING_LABEL = '@acorex:common.status.loading';
|
|
23171
|
+
/**
|
|
23172
|
+
* Entity keys can come back as strings from `byKey` while the bound value is numeric (or vice versa).
|
|
23173
|
+
*/
|
|
23174
|
+
function isSameLookupKey(left, right) {
|
|
23175
|
+
if (left === right) {
|
|
23176
|
+
return true;
|
|
23177
|
+
}
|
|
23178
|
+
if (left == null || right == null) {
|
|
23179
|
+
return false;
|
|
23180
|
+
}
|
|
23181
|
+
return String(left) === String(right);
|
|
23182
|
+
}
|
|
22803
23183
|
/**
|
|
22804
23184
|
* Resolves stored widget value(s) to entity key(s).
|
|
22805
23185
|
*/
|
|
@@ -22856,7 +23236,7 @@ function areLookupSelectionItemsHydrated(rawValue, items, options) {
|
|
|
22856
23236
|
}
|
|
22857
23237
|
const { valueField } = options;
|
|
22858
23238
|
return ids.every((id) => {
|
|
22859
|
-
const item = items.find((candidate) => get(candidate, valueField)
|
|
23239
|
+
const item = items.find((candidate) => isSameLookupKey(get(candidate, valueField), id));
|
|
22860
23240
|
return item != null && isLookupItemHydrated(item, options);
|
|
22861
23241
|
});
|
|
22862
23242
|
}
|
|
@@ -23254,6 +23634,8 @@ function findTreeNode(nodes, valueField, key) {
|
|
|
23254
23634
|
//#region ----- Component -----
|
|
23255
23635
|
class AXPLookupWidgetTablePanelComponent {
|
|
23256
23636
|
#loadedItems;
|
|
23637
|
+
/** Set when a row command fires so the following row click does not select. */
|
|
23638
|
+
#skipNextRowSelection;
|
|
23257
23639
|
#totalCount;
|
|
23258
23640
|
//#endregion
|
|
23259
23641
|
//#region ----- Lifecycle -----
|
|
@@ -23282,9 +23664,13 @@ class AXPLookupWidgetTablePanelComponent {
|
|
|
23282
23664
|
/** When set, matching text in table cells is highlighted. */
|
|
23283
23665
|
this.highlightText = input('', /* @ts-ignore */
|
|
23284
23666
|
...(ngDevMode ? [{ debugName: "highlightText" }] : /* istanbul ignore next */ []));
|
|
23667
|
+
/** Entity list row actions (preview, etc.) shown as command columns. */
|
|
23668
|
+
this.rowActions = input(/* @ts-ignore */
|
|
23669
|
+
...(ngDevMode ? [undefined, { debugName: "rowActions" }] : /* istanbul ignore next */ []));
|
|
23285
23670
|
//#endregion
|
|
23286
23671
|
//#region ----- Outputs -----
|
|
23287
23672
|
this.itemClick = output();
|
|
23673
|
+
this.rowAction = output();
|
|
23288
23674
|
//#endregion
|
|
23289
23675
|
//#region ----- View Children -----
|
|
23290
23676
|
this.tableRef = viewChild(AXDataTableComponent, /* @ts-ignore */
|
|
@@ -23293,7 +23679,20 @@ class AXPLookupWidgetTablePanelComponent {
|
|
|
23293
23679
|
//#region ----- State -----
|
|
23294
23680
|
this.visibleColumns = computed(() => this.columns().filter((column) => column.visible !== false), /* @ts-ignore */
|
|
23295
23681
|
...(ngDevMode ? [{ debugName: "visibleColumns" }] : /* istanbul ignore next */ []));
|
|
23682
|
+
this.hasRowActionPrimary = computed(() => this.rowActions()?.hasPrimary() ?? false, /* @ts-ignore */
|
|
23683
|
+
...(ngDevMode ? [{ debugName: "hasRowActionPrimary" }] : /* istanbul ignore next */ []));
|
|
23684
|
+
this.hasRowActionDropdown = computed(() => this.rowActions()?.hasDropdown() ?? false, /* @ts-ignore */
|
|
23685
|
+
...(ngDevMode ? [{ debugName: "hasRowActionDropdown" }] : /* istanbul ignore next */ []));
|
|
23686
|
+
this.primaryRowActionItems = computed(() => (this.rowActions()?.getPrimaryItems() ?? []), /* @ts-ignore */
|
|
23687
|
+
...(ngDevMode ? [{ debugName: "primaryRowActionItems" }] : /* istanbul ignore next */ []));
|
|
23688
|
+
this.primaryRowActionColumnWidth = computed(() => {
|
|
23689
|
+
const count = this.primaryRowActionItems().length;
|
|
23690
|
+
return count > 0 ? `${count * 70}px` : '60px';
|
|
23691
|
+
}, /* @ts-ignore */
|
|
23692
|
+
...(ngDevMode ? [{ debugName: "primaryRowActionColumnWidth" }] : /* istanbul ignore next */ []));
|
|
23296
23693
|
this.#loadedItems = [];
|
|
23694
|
+
/** Set when a row command fires so the following row click does not select. */
|
|
23695
|
+
this.#skipNextRowSelection = false;
|
|
23297
23696
|
this.#totalCount = signal(0, /* @ts-ignore */
|
|
23298
23697
|
...(ngDevMode ? [{ debugName: "#totalCount" }] : /* istanbul ignore next */ []));
|
|
23299
23698
|
this.tableDataSource = new AXDataSource({
|
|
@@ -23323,6 +23722,13 @@ class AXPLookupWidgetTablePanelComponent {
|
|
|
23323
23722
|
}), /* @ts-ignore */
|
|
23324
23723
|
...(ngDevMode ? [{ debugName: "loadingConfig" }] : /* istanbul ignore next */ []));
|
|
23325
23724
|
this.host = inject((ElementRef));
|
|
23725
|
+
this.getDropdownRowActionItems = (rowData) => {
|
|
23726
|
+
const handler = this.rowActions();
|
|
23727
|
+
if (!handler) {
|
|
23728
|
+
return Promise.resolve([]);
|
|
23729
|
+
}
|
|
23730
|
+
return handler.getDropdownItems(rowData).then((items) => items);
|
|
23731
|
+
};
|
|
23326
23732
|
//#endregion
|
|
23327
23733
|
//#region ----- Row State -----
|
|
23328
23734
|
this.resolveRowCssClass = (row) => {
|
|
@@ -23385,8 +23791,22 @@ class AXPLookupWidgetTablePanelComponent {
|
|
|
23385
23791
|
//#endregion
|
|
23386
23792
|
//#region ----- Event Handlers -----
|
|
23387
23793
|
handleRowClick(event) {
|
|
23794
|
+
if (this.#skipNextRowSelection) {
|
|
23795
|
+
this.#skipNextRowSelection = false;
|
|
23796
|
+
return;
|
|
23797
|
+
}
|
|
23388
23798
|
this.#handleItemClick(event.data);
|
|
23389
23799
|
}
|
|
23800
|
+
handleRowActionClick(event) {
|
|
23801
|
+
event.nativeEvent.preventDefault();
|
|
23802
|
+
event.nativeEvent.stopPropagation();
|
|
23803
|
+
this.#skipNextRowSelection = true;
|
|
23804
|
+
const item = event.data;
|
|
23805
|
+
if (!item) {
|
|
23806
|
+
return;
|
|
23807
|
+
}
|
|
23808
|
+
this.rowAction.emit({ name: event.name, item });
|
|
23809
|
+
}
|
|
23390
23810
|
handleItemMouseDown(event, item) {
|
|
23391
23811
|
event.preventDefault();
|
|
23392
23812
|
event.stopPropagation();
|
|
@@ -23438,7 +23858,7 @@ class AXPLookupWidgetTablePanelComponent {
|
|
|
23438
23858
|
return Boolean(item[this.disabledField()]);
|
|
23439
23859
|
}
|
|
23440
23860
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTablePanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23441
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetTablePanelComponent, isStandalone: true, selector: "axp-lookup-widget-table-panel", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: "disabledField", publicName: "disabledField", isSignal: true, isRequired: false, transformFunction: null }, selectedValues: { classPropertyName: "selectedValues", publicName: "selectedValues", isSignal: true, isRequired: false, transformFunction: null }, parentField: { classPropertyName: "parentField", publicName: "parentField", isSignal: true, isRequired: false, transformFunction: null }, hasChildrenField: { classPropertyName: "hasChildrenField", publicName: "hasChildrenField", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: "itemHeight", publicName: "itemHeight", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleItems: { classPropertyName: "maxVisibleItems", publicName: "maxVisibleItems", isSignal: true, isRequired: false, transformFunction: null }, alternate: { classPropertyName: "alternate", publicName: "alternate", isSignal: true, isRequired: false, transformFunction: null }, highlightText: { classPropertyName: "highlightText", publicName: "highlightText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick" }, host: { properties: { "class.ax-lookup-multi-column-tree": "!!parentField()", "style.height.px": "tableHeight()" }, classAttribute: "ax-lookup-multi-column block min-h-0" }, viewQueries: [{ propertyName: "tableRef", first: true, predicate: AXDataTableComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"parentField() ? dataSource() : tableDataSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n>\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && !!parentField()\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n</ax-data-table>\n", dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$7.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$6.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "columnKey", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "columnFixed", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23861
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetTablePanelComponent, isStandalone: true, selector: "axp-lookup-widget-table-panel", inputs: { dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: "disabledField", publicName: "disabledField", isSignal: true, isRequired: false, transformFunction: null }, selectedValues: { classPropertyName: "selectedValues", publicName: "selectedValues", isSignal: true, isRequired: false, transformFunction: null }, parentField: { classPropertyName: "parentField", publicName: "parentField", isSignal: true, isRequired: false, transformFunction: null }, hasChildrenField: { classPropertyName: "hasChildrenField", publicName: "hasChildrenField", isSignal: true, isRequired: false, transformFunction: null }, itemHeight: { classPropertyName: "itemHeight", publicName: "itemHeight", isSignal: true, isRequired: false, transformFunction: null }, maxVisibleItems: { classPropertyName: "maxVisibleItems", publicName: "maxVisibleItems", isSignal: true, isRequired: false, transformFunction: null }, alternate: { classPropertyName: "alternate", publicName: "alternate", isSignal: true, isRequired: false, transformFunction: null }, highlightText: { classPropertyName: "highlightText", publicName: "highlightText", isSignal: true, isRequired: false, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemClick: "itemClick", rowAction: "rowAction" }, host: { properties: { "class.ax-lookup-multi-column-tree": "!!parentField()", "style.height.px": "tableHeight()" }, classAttribute: "ax-lookup-multi-column block min-h-0" }, viewQueries: [{ propertyName: "tableRef", first: true, predicate: AXDataTableComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"parentField() ? dataSource() : tableDataSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n>\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && !!parentField()\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n <!-- ----- Entity row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"primaryRowActionColumnWidth()\"\n [items]=\"primaryRowActionItems()\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-command-column>\n }\n @if (hasRowActionDropdown()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowActionItems\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n", dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$7.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$7.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$7.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1$6.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "columnKey", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "columnFixed", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23442
23862
|
}
|
|
23443
23863
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTablePanelComponent, decorators: [{
|
|
23444
23864
|
type: Component,
|
|
@@ -23446,8 +23866,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
23446
23866
|
class: 'ax-lookup-multi-column block min-h-0',
|
|
23447
23867
|
'[class.ax-lookup-multi-column-tree]': '!!parentField()',
|
|
23448
23868
|
'[style.height.px]': 'tableHeight()',
|
|
23449
|
-
}, template: "<ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"parentField() ? dataSource() : tableDataSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n>\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && !!parentField()\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n</ax-data-table>\n" }]
|
|
23450
|
-
}], ctorParameters: () => [], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], disabledField: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledField", required: false }] }], selectedValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedValues", required: false }] }], parentField: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentField", required: false }] }], hasChildrenField: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasChildrenField", required: false }] }], itemHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemHeight", required: false }] }], maxVisibleItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxVisibleItems", required: false }] }], alternate: [{ type: i0.Input, args: [{ isSignal: true, alias: "alternate", required: false }] }], highlightText: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightText", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], tableRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXDataTableComponent), { isSignal: true }] }] } });
|
|
23869
|
+
}, template: "<ax-data-table\n class=\"ax-lookup-multi-column-table\"\n look=\"minimal\"\n [dataSource]=\"parentField() ? dataSource() : tableDataSource\"\n [parentField]=\"parentField() ?? ''\"\n [hasChildrenField]=\"hasChildrenField()\"\n [itemHeight]=\"itemHeight()\"\n [alternative]=\"alternate()\"\n [highlightText]=\"highlightText()\"\n [loading]=\"loadingConfig()\"\n [paging]=\"false\"\n [showHeader]=\"true\"\n [fixedHeader]=\"true\"\n [showFooter]=\"false\"\n [allowReordering]=\"false\"\n [rowCssClass]=\"resolveRowCssClass\"\n (onRowClick)=\"handleRowClick($event)\"\n>\n @for (column of visibleColumns(); track column.name) {\n <axp-widget-column-renderer\n [expandHandler]=\"$index === 0 && !!parentField()\"\n [caption]=\"column.title\"\n [customWidth]=\"resolveColumnWidth(column)\"\n [node]=\"column.node\"\n ></axp-widget-column-renderer>\n }\n <!-- ----- Entity row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <ax-command-column\n fixed=\"end\"\n [width]=\"primaryRowActionColumnWidth()\"\n [items]=\"primaryRowActionItems()\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-command-column>\n }\n @if (hasRowActionDropdown()) {\n <ax-dropdown-command-column\n fixed=\"end\"\n [width]=\"'60px'\"\n [items]=\"getDropdownRowActionItems\"\n (onItemClick)=\"handleRowActionClick($event)\"\n ></ax-dropdown-command-column>\n }\n</ax-data-table>\n" }]
|
|
23870
|
+
}], ctorParameters: () => [], propDecorators: { dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], disabledField: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledField", required: false }] }], selectedValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedValues", required: false }] }], parentField: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentField", required: false }] }], hasChildrenField: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasChildrenField", required: false }] }], itemHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemHeight", required: false }] }], maxVisibleItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxVisibleItems", required: false }] }], alternate: [{ type: i0.Input, args: [{ isSignal: true, alias: "alternate", required: false }] }], highlightText: [{ type: i0.Input, args: [{ isSignal: true, alias: "highlightText", required: false }] }], rowActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowActions", required: false }] }], itemClick: [{ type: i0.Output, args: ["itemClick"] }], rowAction: [{ type: i0.Output, args: ["rowAction"] }], tableRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXDataTableComponent), { isSignal: true }] }] } });
|
|
23451
23871
|
|
|
23452
23872
|
//#region ----- Imports -----
|
|
23453
23873
|
//#endregion
|
|
@@ -23504,6 +23924,8 @@ class AXPLookupWidgetTableHostComponent extends NXValueComponent {
|
|
|
23504
23924
|
...(ngDevMode ? [{ debugName: "searchable" }] : /* istanbul ignore next */ []));
|
|
23505
23925
|
this.selectedTemplate = input(undefined, /* @ts-ignore */
|
|
23506
23926
|
...(ngDevMode ? [{ debugName: "selectedTemplate" }] : /* istanbul ignore next */ []));
|
|
23927
|
+
this.rowActions = input(/* @ts-ignore */
|
|
23928
|
+
...(ngDevMode ? [undefined, { debugName: "rowActions" }] : /* istanbul ignore next */ []));
|
|
23507
23929
|
//#endregion
|
|
23508
23930
|
//#region ----- Outputs -----
|
|
23509
23931
|
this.onItemSelected = output();
|
|
@@ -23547,7 +23969,7 @@ class AXPLookupWidgetTableHostComponent extends NXValueComponent {
|
|
|
23547
23969
|
* the selection (same as ax-lookup).
|
|
23548
23970
|
*/
|
|
23549
23971
|
this.showSelectedTemplate = computed(() => {
|
|
23550
|
-
if (!this.selectedTemplate() || this.valueItems().length === 0) {
|
|
23972
|
+
if (!this.selectedTemplate() || this.valueItems().length === 0 || !this.displayText()) {
|
|
23551
23973
|
return false;
|
|
23552
23974
|
}
|
|
23553
23975
|
return !this.expanded() && this.searchText() === this.displayText();
|
|
@@ -23648,6 +24070,14 @@ class AXPLookupWidgetTableHostComponent extends NXValueComponent {
|
|
|
23648
24070
|
this.expanded.set(true);
|
|
23649
24071
|
}
|
|
23650
24072
|
}
|
|
24073
|
+
async handleTableRowAction(event) {
|
|
24074
|
+
const handler = this.rowActions();
|
|
24075
|
+
if (!handler) {
|
|
24076
|
+
return;
|
|
24077
|
+
}
|
|
24078
|
+
this.expanded.set(false);
|
|
24079
|
+
await handler.execute(event.name, event.item);
|
|
24080
|
+
}
|
|
23651
24081
|
handleTableItemClick(event) {
|
|
23652
24082
|
this.onItemSelected.emit({
|
|
23653
24083
|
component: this,
|
|
@@ -23760,11 +24190,11 @@ class AXPLookupWidgetTableHostComponent extends NXValueComponent {
|
|
|
23760
24190
|
return this.#hydrationPromise;
|
|
23761
24191
|
}
|
|
23762
24192
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTableHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23763
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetTableHostComponent, isStandalone: true, selector: "axp-lookup-widget-table-host", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, treeDataSource: { classPropertyName: "treeDataSource", publicName: "treeDataSource", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: "disabledField", publicName: "disabledField", isSignal: true, isRequired: false, transformFunction: null }, parentField: { classPropertyName: "parentField", publicName: "parentField", isSignal: true, isRequired: false, transformFunction: null }, hasChildrenField: { classPropertyName: "hasChildrenField", publicName: "hasChildrenField", isSignal: true, isRequired: false, transformFunction: null }, searchFields: { classPropertyName: "searchFields", publicName: "searchFields", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, valueItems: { classPropertyName: "valueItems", publicName: "valueItems", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, selectedTemplate: { classPropertyName: "selectedTemplate", publicName: "selectedTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", onItemSelected: "onItemSelected" }, host: { classAttribute: "block w-full" }, providers: [
|
|
24193
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetTableHostComponent, isStandalone: true, selector: "axp-lookup-widget-table-host", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, caption: { classPropertyName: "caption", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, dataSource: { classPropertyName: "dataSource", publicName: "dataSource", isSignal: true, isRequired: true, transformFunction: null }, treeDataSource: { classPropertyName: "treeDataSource", publicName: "treeDataSource", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: true, transformFunction: null }, valueField: { classPropertyName: "valueField", publicName: "valueField", isSignal: true, isRequired: false, transformFunction: null }, textField: { classPropertyName: "textField", publicName: "textField", isSignal: true, isRequired: false, transformFunction: null }, disabledField: { classPropertyName: "disabledField", publicName: "disabledField", isSignal: true, isRequired: false, transformFunction: null }, parentField: { classPropertyName: "parentField", publicName: "parentField", isSignal: true, isRequired: false, transformFunction: null }, hasChildrenField: { classPropertyName: "hasChildrenField", publicName: "hasChildrenField", isSignal: true, isRequired: false, transformFunction: null }, searchFields: { classPropertyName: "searchFields", publicName: "searchFields", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, valueItems: { classPropertyName: "valueItems", publicName: "valueItems", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, readonly: { classPropertyName: "readonly", publicName: "readonly", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, selectedTemplate: { classPropertyName: "selectedTemplate", publicName: "selectedTemplate", isSignal: true, isRequired: false, transformFunction: null }, rowActions: { classPropertyName: "rowActions", publicName: "rowActions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", onItemSelected: "onItemSelected" }, host: { classAttribute: "block w-full" }, providers: [
|
|
23764
24194
|
{ provide: AXComponent, useExisting: AXPLookupWidgetTableHostComponent },
|
|
23765
24195
|
{ provide: AXClearableComponent, useExisting: AXPLookupWidgetTableHostComponent },
|
|
23766
24196
|
{ provide: AXValuableComponent, useExisting: AXPLookupWidgetTableHostComponent },
|
|
23767
|
-
], viewQueries: [{ propertyName: "triggerSearchInput", first: true, predicate: ["triggerSearchInput"], descendants: true, isSignal: true }, { propertyName: "popoverRef", first: true, predicate: AXPopoverComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #origin\n class=\"ax-editor-container ax-solid ax-default ax-lookup-trigger w-full\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: valueItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!searchable()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !searchable()\"\n [attr.inputmode]=\"searchable() ? null : 'none'\"\n [value]=\"triggerInputValue()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n\n @if (selectedValues().length > 0 && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <button type=\"button\" class=\"ax-general-button-icon\" tabindex=\"-1\" [disabled]=\"disabled() || readonly()\">\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></span>\n </button>\n\n <ng-content select=\"ax-validation-rule\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"origin.offsetWidth + 'px'\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" (keydown.escape)=\"expanded.set(false)\">\n <axp-lookup-widget-table-panel\n [dataSource]=\"resolvedTableDataSource()\"\n [columns]=\"columns()\"\n [highlightText]=\"highlightQuery()\"\n [valueField]=\"valueField()\"\n [disabledField]=\"disabledField()\"\n [parentField]=\"parentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [selectedValues]=\"selectedValues()\"\n (itemClick)=\"handleTableItemClick($event)\"\n ></axp-lookup-widget-table-panel>\n </div>\n</ax-popover>\n", styles: ["@layer properties;:host{display:block;width:100%}:host .ax-editor-container{justify-content:flex-start;gap:var(--spacing, .25rem)}:host .ax-lookup-trigger{cursor:pointer;-webkit-user-select:none;user-select:none}:host .ax-lookup-value{position:relative;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-select-input{cursor:pointer;caret-color:transparent;-webkit-user-select:none;user-select:none}:host .ax-lookup-selected-content{pointer-events:none;position:relative;z-index:0;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-input-overlay{position:absolute;inset:0;z-index:10;margin:0!important;height:100%;width:100%;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0!important;color:transparent;caret-color:transparent}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "component", type: AXPLookupWidgetTablePanelComponent, selector: "axp-lookup-widget-table-panel", inputs: ["dataSource", "columns", "valueField", "disabledField", "selectedValues", "parentField", "hasChildrenField", "itemHeight", "maxVisibleItems", "alternate", "highlightText"], outputs: ["itemClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24197
|
+
], viewQueries: [{ propertyName: "triggerSearchInput", first: true, predicate: ["triggerSearchInput"], descendants: true, isSignal: true }, { propertyName: "popoverRef", first: true, predicate: AXPopoverComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div\n #origin\n class=\"ax-editor-container ax-solid ax-default ax-lookup-trigger w-full\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: valueItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!searchable()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !searchable()\"\n [attr.inputmode]=\"searchable() ? null : 'none'\"\n [value]=\"triggerInputValue()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n\n @if (selectedValues().length > 0 && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <button type=\"button\" class=\"ax-general-button-icon\" tabindex=\"-1\" [disabled]=\"disabled() || readonly()\">\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></span>\n </button>\n\n <ng-content select=\"ax-validation-rule\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"origin.offsetWidth + 'px'\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" (keydown.escape)=\"expanded.set(false)\">\n <axp-lookup-widget-table-panel\n [dataSource]=\"resolvedTableDataSource()\"\n [columns]=\"columns()\"\n [highlightText]=\"highlightQuery()\"\n [valueField]=\"valueField()\"\n [disabledField]=\"disabledField()\"\n [parentField]=\"parentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [selectedValues]=\"selectedValues()\"\n [rowActions]=\"rowActions()\"\n (itemClick)=\"handleTableItemClick($event)\"\n (rowAction)=\"handleTableRowAction($event)\"\n ></axp-lookup-widget-table-panel>\n </div>\n</ax-popover>\n", styles: ["@layer properties;:host{display:block;width:100%}:host .ax-editor-container{justify-content:flex-start;gap:var(--spacing, .25rem)}:host .ax-lookup-trigger{cursor:pointer;-webkit-user-select:none;user-select:none}:host .ax-lookup-value{position:relative;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-select-input{cursor:pointer;caret-color:transparent;-webkit-user-select:none;user-select:none}:host .ax-lookup-selected-content{pointer-events:none;position:relative;z-index:0;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-input-overlay{position:absolute;inset:0;z-index:10;margin:0!important;height:100%;width:100%;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0!important;color:transparent;caret-color:transparent}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "visualContextScope", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "closeOnNavigation", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "component", type: AXPLookupWidgetTablePanelComponent, selector: "axp-lookup-widget-table-panel", inputs: ["dataSource", "columns", "valueField", "disabledField", "selectedValues", "parentField", "hasChildrenField", "itemHeight", "maxVisibleItems", "alternate", "highlightText", "rowActions"], outputs: ["itemClick", "rowAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
23768
24198
|
}
|
|
23769
24199
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetTableHostComponent, decorators: [{
|
|
23770
24200
|
type: Component,
|
|
@@ -23774,8 +24204,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
23774
24204
|
{ provide: AXComponent, useExisting: AXPLookupWidgetTableHostComponent },
|
|
23775
24205
|
{ provide: AXClearableComponent, useExisting: AXPLookupWidgetTableHostComponent },
|
|
23776
24206
|
{ provide: AXValuableComponent, useExisting: AXPLookupWidgetTableHostComponent },
|
|
23777
|
-
], template: "<div\n #origin\n class=\"ax-editor-container ax-solid ax-default ax-lookup-trigger w-full\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: valueItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!searchable()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !searchable()\"\n [attr.inputmode]=\"searchable() ? null : 'none'\"\n [value]=\"triggerInputValue()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n\n @if (selectedValues().length > 0 && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <button type=\"button\" class=\"ax-general-button-icon\" tabindex=\"-1\" [disabled]=\"disabled() || readonly()\">\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></span>\n </button>\n\n <ng-content select=\"ax-validation-rule\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"origin.offsetWidth + 'px'\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" (keydown.escape)=\"expanded.set(false)\">\n <axp-lookup-widget-table-panel\n [dataSource]=\"resolvedTableDataSource()\"\n [columns]=\"columns()\"\n [highlightText]=\"highlightQuery()\"\n [valueField]=\"valueField()\"\n [disabledField]=\"disabledField()\"\n [parentField]=\"parentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [selectedValues]=\"selectedValues()\"\n (itemClick)=\"handleTableItemClick($event)\"\n ></axp-lookup-widget-table-panel>\n </div>\n</ax-popover>\n", styles: ["@layer properties;:host{display:block;width:100%}:host .ax-editor-container{justify-content:flex-start;gap:var(--spacing, .25rem)}:host .ax-lookup-trigger{cursor:pointer;-webkit-user-select:none;user-select:none}:host .ax-lookup-value{position:relative;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-select-input{cursor:pointer;caret-color:transparent;-webkit-user-select:none;user-select:none}:host .ax-lookup-selected-content{pointer-events:none;position:relative;z-index:0;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-input-overlay{position:absolute;inset:0;z-index:10;margin:0!important;height:100%;width:100%;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0!important;color:transparent;caret-color:transparent}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
23778
|
-
}], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], caption: [{ type: i0.Input, args: [{ isSignal: true, alias: "caption", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], treeDataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "treeDataSource", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: "textField", required: false }] }], disabledField: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledField", required: false }] }], parentField: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentField", required: false }] }], hasChildrenField: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasChildrenField", required: false }] }], searchFields: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchFields", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], valueItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueItems", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], selectedTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedTemplate", required: false }] }], onItemSelected: [{ type: i0.Output, args: ["onItemSelected"] }], triggerSearchInput: [{ type: i0.ViewChild, args: ['triggerSearchInput', { isSignal: true }] }], popoverRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPopoverComponent), { isSignal: true }] }] } });
|
|
24207
|
+
], template: "<div\n #origin\n class=\"ax-editor-container ax-solid ax-default ax-lookup-trigger w-full\"\n [class.ax-state-disabled]=\"disabled()\"\n [class.ax-state-readonly]=\"readonly()\"\n (click)=\"onTriggerClick()\"\n>\n <div class=\"ax-lookup-value\">\n @if (showSelectedTemplate()) {\n <div class=\"ax-lookup-selected-content\" aria-hidden=\"true\">\n <ng-container\n [ngTemplateOutlet]=\"selectedTemplate()!\"\n [ngTemplateOutletContext]=\"{ $implicit: valueItems()[0] }\"\n />\n </div>\n }\n <input\n #triggerSearchInput\n type=\"text\"\n class=\"ax-input\"\n [class.ax-lookup-select-input]=\"!searchable()\"\n [class.ax-lookup-input-overlay]=\"showSelectedTemplate()\"\n [placeholder]=\"triggerSearchPlaceholder()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly() || !searchable()\"\n [attr.inputmode]=\"searchable() ? null : 'none'\"\n [value]=\"triggerInputValue()\"\n (input)=\"onTriggerSearchInput($any($event.target).value)\"\n (keydown)=\"onTriggerKeydown($event)\"\n (click)=\"$event.stopPropagation()\"\n />\n </div>\n\n @if (selectedValues().length > 0 && !disabled() && !readonly()) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n }\n\n <button type=\"button\" class=\"ax-general-button-icon\" tabindex=\"-1\" [disabled]=\"disabled() || readonly()\">\n <span\n class=\"ax-icon\"\n [class.ax-icon-chevron-down]=\"!expanded()\"\n [class.ax-icon-chevron-up]=\"expanded()\"\n ></span>\n </button>\n\n <ng-content select=\"ax-validation-rule\"></ng-content>\n</div>\n\n<ax-popover\n [target]=\"origin\"\n [openOn]=\"'manual'\"\n [closeOn]=\"'clickOut'\"\n [placement]=\"'bottom-start'\"\n [width]=\"origin.offsetWidth + 'px'\"\n [disabled]=\"disabled() || readonly()\"\n (onClosed)=\"onPopoverClosed()\"\n>\n <div class=\"ax-lookup-popup\" (keydown.escape)=\"expanded.set(false)\">\n <axp-lookup-widget-table-panel\n [dataSource]=\"resolvedTableDataSource()\"\n [columns]=\"columns()\"\n [highlightText]=\"highlightQuery()\"\n [valueField]=\"valueField()\"\n [disabledField]=\"disabledField()\"\n [parentField]=\"parentField()\"\n [hasChildrenField]=\"hasChildrenField()\"\n [selectedValues]=\"selectedValues()\"\n [rowActions]=\"rowActions()\"\n (itemClick)=\"handleTableItemClick($event)\"\n (rowAction)=\"handleTableRowAction($event)\"\n ></axp-lookup-widget-table-panel>\n </div>\n</ax-popover>\n", styles: ["@layer properties;:host{display:block;width:100%}:host .ax-editor-container{justify-content:flex-start;gap:var(--spacing, .25rem)}:host .ax-lookup-trigger{cursor:pointer;-webkit-user-select:none;user-select:none}:host .ax-lookup-value{position:relative;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-select-input{cursor:pointer;caret-color:transparent;-webkit-user-select:none;user-select:none}:host .ax-lookup-selected-content{pointer-events:none;position:relative;z-index:0;display:flex;min-width:0px;flex:1;align-items:center;overflow:hidden}:host .ax-lookup-input-overlay{position:absolute;inset:0;z-index:10;margin:0!important;height:100%;width:100%;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0!important;color:transparent;caret-color:transparent}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
24208
|
+
}], ctorParameters: () => [], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], caption: [{ type: i0.Input, args: [{ isSignal: true, alias: "caption", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], dataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataSource", required: true }] }], treeDataSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "treeDataSource", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: true }] }], valueField: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueField", required: false }] }], textField: [{ type: i0.Input, args: [{ isSignal: true, alias: "textField", required: false }] }], disabledField: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabledField", required: false }] }], parentField: [{ type: i0.Input, args: [{ isSignal: true, alias: "parentField", required: false }] }], hasChildrenField: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasChildrenField", required: false }] }], searchFields: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchFields", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], valueItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "valueItems", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], selectedTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedTemplate", required: false }] }], rowActions: [{ type: i0.Input, args: [{ isSignal: true, alias: "rowActions", required: false }] }], onItemSelected: [{ type: i0.Output, args: ["onItemSelected"] }], triggerSearchInput: [{ type: i0.ViewChild, args: ['triggerSearchInput', { isSignal: true }] }], popoverRef: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPopoverComponent), { isSignal: true }] }] } });
|
|
23779
24209
|
|
|
23780
24210
|
//#region ----- Imports -----
|
|
23781
24211
|
//#endregion
|
|
@@ -23800,6 +24230,7 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
23800
24230
|
this.localeService = inject(AXLocaleService);
|
|
23801
24231
|
this.destroyRef = inject(DestroyRef);
|
|
23802
24232
|
this.lookupByKeyCache = inject(AXPLookupByKeyCacheService);
|
|
24233
|
+
this.rowActionsService = inject(AXPEntityDataSelectorRowActionsService);
|
|
23803
24234
|
//#endregion
|
|
23804
24235
|
//#region ----- View Children -----
|
|
23805
24236
|
this.lookup = viewChild(AXLookupComponent, /* @ts-ignore */
|
|
@@ -23829,6 +24260,8 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
23829
24260
|
...(ngDevMode ? [{ debugName: "shouldFocus" }] : /* istanbul ignore next */ []));
|
|
23830
24261
|
/** Skips one {@link findByValue} pass after inline create when selection is already hydrated. */
|
|
23831
24262
|
this.skipFindByValueOnce = false;
|
|
24263
|
+
/** Latest {@link findByValue} run; older in-flight runs must not overwrite its result. */
|
|
24264
|
+
this.findByValueRequestId = 0;
|
|
23832
24265
|
this.lastEditorLocaleKey = this.resolveEditorLocaleKey();
|
|
23833
24266
|
//#endregion
|
|
23834
24267
|
//#region ----- Computed Properties -----
|
|
@@ -23907,6 +24340,20 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
23907
24340
|
allowCreate: this.options()['allowCreate'],
|
|
23908
24341
|
}), /* @ts-ignore */
|
|
23909
24342
|
...(ngDevMode ? [{ debugName: "resolvedCreate" }] : /* istanbul ignore next */ []));
|
|
24343
|
+
this.rowActionsConfig = computed(() => this.options()['rowActions'] ?? undefined, { ...(ngDevMode ? { debugName: "rowActionsConfig" } : /* istanbul ignore next */ {}), equal: isEqual });
|
|
24344
|
+
this.rowActionsHandler = computed(() => {
|
|
24345
|
+
const entity = this.entityDef();
|
|
24346
|
+
const config = this.rowActionsConfig();
|
|
24347
|
+
if (!entity || !config) {
|
|
24348
|
+
return undefined;
|
|
24349
|
+
}
|
|
24350
|
+
return this.rowActionsService.createHandler(entity, config);
|
|
24351
|
+
}, /* @ts-ignore */
|
|
24352
|
+
...(ngDevMode ? [{ debugName: "rowActionsHandler" }] : /* istanbul ignore next */ []));
|
|
24353
|
+
this.rowActionPrimaryItems = computed(() => this.rowActionsHandler()?.getPrimaryItems() ?? [], /* @ts-ignore */
|
|
24354
|
+
...(ngDevMode ? [{ debugName: "rowActionPrimaryItems" }] : /* istanbul ignore next */ []));
|
|
24355
|
+
this.hasRowActionPrimary = computed(() => this.rowActionPrimaryItems().length > 0, /* @ts-ignore */
|
|
24356
|
+
...(ngDevMode ? [{ debugName: "hasRowActionPrimary" }] : /* istanbul ignore next */ []));
|
|
23910
24357
|
this.valueField = computed(() => {
|
|
23911
24358
|
const explicit = this.options()['valueField']?.trim();
|
|
23912
24359
|
if (explicit) {
|
|
@@ -24089,6 +24536,23 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
24089
24536
|
}
|
|
24090
24537
|
}, /* @ts-ignore */
|
|
24091
24538
|
...(ngDevMode ? [{ debugName: "#efValue" }] : /* istanbul ignore next */ []));
|
|
24539
|
+
/** Value can be bound before the entity definition resolves; hydrate the selection label once it does. */
|
|
24540
|
+
this.#efEntityHydration = effect(() => {
|
|
24541
|
+
if (!this.entityDef()) {
|
|
24542
|
+
return;
|
|
24543
|
+
}
|
|
24544
|
+
untracked(() => {
|
|
24545
|
+
const currentValue = this.getValue();
|
|
24546
|
+
if (!this.hasValue(currentValue)) {
|
|
24547
|
+
return;
|
|
24548
|
+
}
|
|
24549
|
+
if (areLookupSelectionItemsHydrated(currentValue, this.selectedItems(), this.getHydrationOptions())) {
|
|
24550
|
+
return;
|
|
24551
|
+
}
|
|
24552
|
+
void this.findByValue();
|
|
24553
|
+
});
|
|
24554
|
+
}, /* @ts-ignore */
|
|
24555
|
+
...(ngDevMode ? [{ debugName: "#efEntityHydration" }] : /* istanbul ignore next */ []));
|
|
24092
24556
|
this.#filterEffect = effect(() => {
|
|
24093
24557
|
const entity = this.entityDef();
|
|
24094
24558
|
const pending = this.hasPendingCascadeFilter();
|
|
@@ -24159,7 +24623,7 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
24159
24623
|
value: newValue,
|
|
24160
24624
|
displayText: this.multiple() ? labels.join(', ') : (labels[0] ?? ''),
|
|
24161
24625
|
operation: {
|
|
24162
|
-
type: this.multiple() ? 'in' :
|
|
24626
|
+
type: this.multiple() ? 'in' : AXP_LOOKUP_FILTER_DEFAULT_OPERATOR,
|
|
24163
24627
|
},
|
|
24164
24628
|
});
|
|
24165
24629
|
}
|
|
@@ -24174,10 +24638,25 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
24174
24638
|
#efEntity;
|
|
24175
24639
|
#hydrateBoundValue;
|
|
24176
24640
|
#efValue;
|
|
24641
|
+
/** Value can be bound before the entity definition resolves; hydrate the selection label once it does. */
|
|
24642
|
+
#efEntityHydration;
|
|
24177
24643
|
#filterEffect;
|
|
24178
24644
|
#focusEffect;
|
|
24179
24645
|
//#endregion
|
|
24180
24646
|
//#region ----- Event Handlers -----
|
|
24647
|
+
async handleItemRowAction(event, commandName, item) {
|
|
24648
|
+
event.nativeEvent?.preventDefault();
|
|
24649
|
+
event.nativeEvent?.stopPropagation();
|
|
24650
|
+
const handler = this.rowActionsHandler();
|
|
24651
|
+
if (!handler) {
|
|
24652
|
+
return;
|
|
24653
|
+
}
|
|
24654
|
+
await handler.execute(commandName, item);
|
|
24655
|
+
}
|
|
24656
|
+
handleLookupItemRowActionMouseDown(event) {
|
|
24657
|
+
event.preventDefault();
|
|
24658
|
+
event.stopPropagation();
|
|
24659
|
+
}
|
|
24181
24660
|
handleLookupItemSelected(e) {
|
|
24182
24661
|
const item = e.item;
|
|
24183
24662
|
if (item == null) {
|
|
@@ -24207,7 +24686,7 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
24207
24686
|
value,
|
|
24208
24687
|
displayText: this.multiple() ? [] : '',
|
|
24209
24688
|
operation: {
|
|
24210
|
-
type: this.multiple() ? 'in' :
|
|
24689
|
+
type: this.multiple() ? 'in' : AXP_LOOKUP_FILTER_DEFAULT_OPERATOR,
|
|
24211
24690
|
},
|
|
24212
24691
|
});
|
|
24213
24692
|
return;
|
|
@@ -24343,30 +24822,33 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
24343
24822
|
this.setItems(currentItems, false);
|
|
24344
24823
|
return;
|
|
24345
24824
|
}
|
|
24825
|
+
// Without the entity definition the rows cannot be fetched; `#efEntityHydration` retries once it resolves.
|
|
24826
|
+
const entityDef = this.entityDef();
|
|
24827
|
+
if (!entityDef) {
|
|
24828
|
+
return;
|
|
24829
|
+
}
|
|
24830
|
+
const requestId = ++this.findByValueRequestId;
|
|
24346
24831
|
this.isLoading.set(true);
|
|
24347
24832
|
this.beginHydration();
|
|
24348
24833
|
try {
|
|
24349
|
-
const entityDef = this.entityDef();
|
|
24350
24834
|
const entityDataAccessor = this.entityService.withEntity(this.entity()).data();
|
|
24351
24835
|
const valueField = hydration.valueField;
|
|
24352
24836
|
const idsToFetch = ids.filter((id) => {
|
|
24353
|
-
const existing = currentItems.find((item) => get(item, valueField)
|
|
24837
|
+
const existing = currentItems.find((item) => isSameLookupKey(get(item, valueField), id));
|
|
24354
24838
|
return existing == null || !isLookupItemHydrated(existing, hydration);
|
|
24355
24839
|
});
|
|
24356
24840
|
const entityKey = this.entity();
|
|
24357
|
-
const fetchedById =
|
|
24358
|
-
|
|
24359
|
-
|
|
24360
|
-
|
|
24361
|
-
|
|
24362
|
-
|
|
24363
|
-
|
|
24364
|
-
|
|
24365
|
-
|
|
24366
|
-
})
|
|
24367
|
-
: new Map();
|
|
24841
|
+
const fetchedById = await fetchLookupRowsByKeys({
|
|
24842
|
+
entity: entityDef,
|
|
24843
|
+
valueField,
|
|
24844
|
+
keys: idsToFetch,
|
|
24845
|
+
getQueryFields: () => this.lookupQueryFields(),
|
|
24846
|
+
byKey: this.lookupByKeyCache.wrap(entityKey, (id) => entityDataAccessor.byKey(id)),
|
|
24847
|
+
queryList: (request) => entityDataAccessor.query(request),
|
|
24848
|
+
onRow: (key, row) => this.lookupByKeyCache.remember(entityKey, key, row),
|
|
24849
|
+
});
|
|
24368
24850
|
const mergedItems = (await Promise.all(ids.map(async (id) => {
|
|
24369
|
-
const existing = currentItems.find((item) => get(item, valueField)
|
|
24851
|
+
const existing = currentItems.find((item) => isSameLookupKey(get(item, valueField), id));
|
|
24370
24852
|
if (existing != null && isLookupItemHydrated(existing, hydration)) {
|
|
24371
24853
|
return existing;
|
|
24372
24854
|
}
|
|
@@ -24376,11 +24858,15 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
24376
24858
|
}
|
|
24377
24859
|
return this.decorateLookupItem(fetched);
|
|
24378
24860
|
}))).filter((item) => item != null);
|
|
24379
|
-
this.
|
|
24861
|
+
if (requestId === this.findByValueRequestId) {
|
|
24862
|
+
this.setItems(mergedItems, false);
|
|
24863
|
+
}
|
|
24380
24864
|
}
|
|
24381
24865
|
catch (error) {
|
|
24382
24866
|
console.error('[LookupWidget] findByValue() error:', error);
|
|
24383
|
-
this.
|
|
24867
|
+
if (requestId === this.findByValueRequestId) {
|
|
24868
|
+
this.setItems([], false);
|
|
24869
|
+
}
|
|
24384
24870
|
}
|
|
24385
24871
|
finally {
|
|
24386
24872
|
this.isLoading.set(false);
|
|
@@ -24653,7 +25139,7 @@ class AXPLookupWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
24653
25139
|
this.shouldFocus.set(true);
|
|
24654
25140
|
}
|
|
24655
25141
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
24656
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetEditComponent, isStandalone: true, selector: "axp-lookup-widget-edit", host: { classAttribute: "w-full" }, viewQueries: [{ propertyName: "lookup", first: true, predicate: AXLookupComponent, descendants: true, isSignal: true }, { propertyName: "tableLookupHost", first: true, predicate: AXPLookupWidgetTableHostComponent, descendants: true, isSignal: true }, { propertyName: "popupTagBox", first: true, predicate: ["popupTagBox"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (entityDef() && editorKey()) {\n <!-- ----- Entity lookup editor ----- -->\n <div class=\"flex items-center gap-1 w-full\">\n <!--------------------------------------------------------------->\n <!-- ----- Popup look: full entity data selector ----- -->\n @if (isPopupLook()) {\n <ax-tag-box\n #popupTagBox\n class=\"flex-1 min-w-0\"\n [tagTemplate]=\"popupTagTemplate\"\n [ngModel]=\"selectedItems()\"\n [textField]=\"displayField()\"\n [valueField]=\"valueField()\"\n (onValueChanged)=\"handlePopupValueChange($event)\"\n [placeholder]=\"selectedItems().length ? '' : ((placeholderText() | translate | async) ?? '')\"\n [addOnEnter]=\"false\"\n [addOnComma]=\"false\"\n [readonly]=\"true\"\n [disabled]=\"isLookupDisabled()\"\n (click)=\"handlePopupTriggerClick($event)\"\n (onKeyUp)=\"handlePopupKeyUp($event)\"\n (onBlur)=\"handlePopupBlur($event)\"\n >\n @if (hasClearButton() && selectedItems().length > 0) {\n <ax-clear-button (click)=\"handlePopupClearClick()\"></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Search icon opens entity selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n </ax-tag-box>\n }\n <!-- ----- Inline ax-lookup / table host ----- -->\n @else if (effectiveDataSource(); as dataSource) {\n <!-- ----- Multi-column modes: platform widget column renderer ----- -->\n @if (isTableLookupMode()) {\n <axp-lookup-widget-table-host\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [dataSource]=\"dataSource\"\n [columns]=\"lookupWidgetTableColumns()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [disabledField]=\"'disabled'\"\n [parentField]=\"lookupMode() === 'multi-column-tree' ? treeParentField() : undefined\"\n [treeDataSource]=\"lookupMode() === 'multi-column-tree' ? entityTreeDataSource() : undefined\"\n [searchFields]=\"lookupTreeSearchFields()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [selectedTemplate]=\"lookupItemTemplate\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </axp-lookup-widget-table-host>\n }\n <!-- ----- List / tree chip modes: ax-lookup ----- -->\n @else {\n <ax-lookup\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [mode]=\"lookupMode()\"\n [treeParentField]=\"treeParentField()\"\n [dataSource]=\"dataSource\"\n [treeDataSource]=\"entityTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [itemTemplate]=\"$any(multiple() ? lookupItemTemplate : lookupDropDownListItemTemplate)\"\n [selectedTemplate]=\"lookupItemTemplate\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-lookup>\n }\n }\n <!--------------------------------------------------------------->\n <!-- ----- Inline create for the lookup entity ----- -->\n @if (resolvedCreate().enabled) {\n <ax-button\n color=\"primary\"\n look=\"twotone\"\n [disabled]=\"isLookupDisabled() || isLoading()\"\n (onClick)=\"handleCreateClick($event)\"\n [title]=\"'@general:actions.create.title' | translate | async\"\n >\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n\n<!-- ----- Lookup item and selected-value label ----- -->\n<ng-template #lookupItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"ax-lookup-option-text\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n</ng-template>\n<!-- ----- Drop-down-list rows: library skips .ax-lookup-option chrome when itemTemplate is set ----- -->\n<ng-template #lookupDropDownListItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex h-full w-full min-w-0 items-center px-3 text-sm\">\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n </span>\n</ng-template>\n<!-- ----- Popup look selected chips ----- -->\n<ng-template #popupTagTemplate let-item let-index=\"index\">\n <div class=\"inline-flex items-center gap-1.5 rounded-md px-3 py-1 text-sm surface\">\n <span>{{ (getLookupItemLabel(item) | translate | async) ?? '' }}</span>\n @if (!isReadonly() && !isLookupDisabled()) {\n <button type=\"button\" (click)=\"handlePopupRemoveItem($event, index)\">\n <ax-icon class=\"ax-icon ax-icon-close\"></ax-icon>\n </button>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.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: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i3.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: AXFormModule }, { kind: "directive", type: i5.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "component", type: AXHighlightTextComponent, selector: "ax-highlight-text", inputs: ["text", "query", "highlightDisabled", "highlightOptions"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { 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: "component", type: AXPLookupWidgetTableHostComponent, selector: "axp-lookup-widget-table-host", inputs: ["name", "placeholder", "caption", "searchPlaceholder", "dataSource", "treeDataSource", "columns", "valueField", "textField", "disabledField", "parentField", "hasChildrenField", "searchFields", "value", "valueItems", "disabled", "readonly", "searchable", "selectedTemplate"], outputs: ["valueChange", "onItemSelected"] }, { kind: "ngmodule", type: AXTagBoxModule }, { kind: "component", type: i6$1.AXTagBoxComponent, selector: "ax-tag-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "allowNull", "type", "look", "addOnComma", "addOnEnter", "valueField", "textField", "readonlyField", "allowDuplicateValues", "tagTemplate"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onTagClick", "onTagDblClick", "onTagContextMenu"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25142
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXPLookupWidgetEditComponent, isStandalone: true, selector: "axp-lookup-widget-edit", host: { classAttribute: "w-full" }, viewQueries: [{ propertyName: "lookup", first: true, predicate: AXLookupComponent, descendants: true, isSignal: true }, { propertyName: "tableLookupHost", first: true, predicate: AXPLookupWidgetTableHostComponent, descendants: true, isSignal: true }, { propertyName: "popupTagBox", first: true, predicate: ["popupTagBox"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "@if (entityDef() && editorKey()) {\n <!-- ----- Entity lookup editor ----- -->\n <div class=\"flex items-center gap-1 w-full\">\n <!--------------------------------------------------------------->\n <!-- ----- Popup look: full entity data selector ----- -->\n @if (isPopupLook()) {\n <ax-tag-box\n #popupTagBox\n class=\"flex-1 min-w-0\"\n [tagTemplate]=\"popupTagTemplate\"\n [ngModel]=\"selectedItems()\"\n [textField]=\"displayField()\"\n [valueField]=\"valueField()\"\n (onValueChanged)=\"handlePopupValueChange($event)\"\n [placeholder]=\"selectedItems().length ? '' : ((placeholderText() | translate | async) ?? '')\"\n [addOnEnter]=\"false\"\n [addOnComma]=\"false\"\n [readonly]=\"true\"\n [disabled]=\"isLookupDisabled()\"\n (click)=\"handlePopupTriggerClick($event)\"\n (onKeyUp)=\"handlePopupKeyUp($event)\"\n (onBlur)=\"handlePopupBlur($event)\"\n >\n @if (hasClearButton() && selectedItems().length > 0) {\n <ax-clear-button (click)=\"handlePopupClearClick()\"></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Search icon opens entity selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n </ax-tag-box>\n }\n <!-- ----- Inline ax-lookup / table host ----- -->\n @else if (effectiveDataSource(); as dataSource) {\n <!-- ----- Multi-column modes: platform widget column renderer ----- -->\n @if (isTableLookupMode()) {\n <axp-lookup-widget-table-host\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [dataSource]=\"dataSource\"\n [columns]=\"lookupWidgetTableColumns()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [disabledField]=\"'disabled'\"\n [parentField]=\"lookupMode() === 'multi-column-tree' ? treeParentField() : undefined\"\n [treeDataSource]=\"lookupMode() === 'multi-column-tree' ? entityTreeDataSource() : undefined\"\n [searchFields]=\"lookupTreeSearchFields()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [selectedTemplate]=\"lookupItemTemplate\"\n [rowActions]=\"rowActionsHandler()\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </axp-lookup-widget-table-host>\n }\n <!-- ----- List / tree chip modes: ax-lookup ----- -->\n @else {\n <ax-lookup\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [mode]=\"lookupMode()\"\n [treeParentField]=\"treeParentField()\"\n [dataSource]=\"dataSource\"\n [treeDataSource]=\"entityTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [itemTemplate]=\"\n $any(\n multiple()\n ? hasRowActionPrimary()\n ? lookupListItemWithActionsTemplate\n : lookupItemTemplate\n : lookupDropDownListItemTemplate\n )\n \"\n [selectedTemplate]=\"lookupItemTemplate\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-lookup>\n }\n }\n <!--------------------------------------------------------------->\n <!-- ----- Inline create for the lookup entity ----- -->\n @if (resolvedCreate().enabled) {\n <ax-button\n color=\"primary\"\n look=\"twotone\"\n [disabled]=\"isLookupDisabled() || isLoading()\"\n (onClick)=\"handleCreateClick($event)\"\n [title]=\"'@general:actions.create.title' | translate | async\"\n >\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n\n<!-- ----- Lookup item and selected-value label ----- -->\n<ng-template #lookupItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"ax-lookup-option-text\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n</ng-template>\n<!-- ----- Drop-down-list rows: library skips .ax-lookup-option chrome when itemTemplate is set ----- -->\n<ng-template #lookupDropDownListItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex h-full w-full min-w-0 items-center gap-1 px-3 text-sm\">\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n <!-- ----- Primary row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n }\n </span>\n</ng-template>\n<!-- ----- Multi-select list rows with row actions ----- -->\n<ng-template #lookupListItemWithActionsTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex w-full min-w-0 items-center gap-1\">\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n </span>\n</ng-template>\n<!-- ----- Popup look selected chips ----- -->\n<ng-template #popupTagTemplate let-item let-index=\"index\">\n <div class=\"inline-flex items-center gap-1.5 rounded-md px-3 py-1 text-sm surface\">\n <span>{{ (getLookupItemLabel(item) | translate | async) ?? '' }}</span>\n @if (!isReadonly() && !isLookupDisabled()) {\n <button type=\"button\" (click)=\"handlePopupRemoveItem($event, index)\">\n <ax-icon class=\"ax-icon ax-icon-close\"></ax-icon>\n </button>\n }\n </div>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.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: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i3.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: AXFormModule }, { kind: "directive", type: i5.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "component", type: AXHighlightTextComponent, selector: "ax-highlight-text", inputs: ["text", "query", "highlightDisabled", "highlightOptions"] }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "component", type: i1$2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "context"], outputs: ["visibleChange"] }, { 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: "component", type: AXPLookupWidgetTableHostComponent, selector: "axp-lookup-widget-table-host", inputs: ["name", "placeholder", "caption", "searchPlaceholder", "dataSource", "treeDataSource", "columns", "valueField", "textField", "disabledField", "parentField", "hasChildrenField", "searchFields", "value", "valueItems", "disabled", "readonly", "searchable", "selectedTemplate", "rowActions"], outputs: ["valueChange", "onItemSelected"] }, { kind: "ngmodule", type: AXTagBoxModule }, { kind: "component", type: i6$1.AXTagBoxComponent, selector: "ax-tag-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "allowNull", "type", "look", "addOnComma", "addOnEnter", "valueField", "textField", "readonlyField", "allowDuplicateValues", "tagTemplate"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onTagClick", "onTagDblClick", "onTagContextMenu"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXValidationModule }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24657
25143
|
}
|
|
24658
25144
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXPLookupWidgetEditComponent, decorators: [{
|
|
24659
25145
|
type: Component,
|
|
@@ -24672,7 +25158,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
24672
25158
|
AXTagBoxModule,
|
|
24673
25159
|
AXTranslationModule,
|
|
24674
25160
|
AXValidationModule,
|
|
24675
|
-
], template: "@if (entityDef() && editorKey()) {\n <!-- ----- Entity lookup editor ----- -->\n <div class=\"flex items-center gap-1 w-full\">\n <!--------------------------------------------------------------->\n <!-- ----- Popup look: full entity data selector ----- -->\n @if (isPopupLook()) {\n <ax-tag-box\n #popupTagBox\n class=\"flex-1 min-w-0\"\n [tagTemplate]=\"popupTagTemplate\"\n [ngModel]=\"selectedItems()\"\n [textField]=\"displayField()\"\n [valueField]=\"valueField()\"\n (onValueChanged)=\"handlePopupValueChange($event)\"\n [placeholder]=\"selectedItems().length ? '' : ((placeholderText() | translate | async) ?? '')\"\n [addOnEnter]=\"false\"\n [addOnComma]=\"false\"\n [readonly]=\"true\"\n [disabled]=\"isLookupDisabled()\"\n (click)=\"handlePopupTriggerClick($event)\"\n (onKeyUp)=\"handlePopupKeyUp($event)\"\n (onBlur)=\"handlePopupBlur($event)\"\n >\n @if (hasClearButton() && selectedItems().length > 0) {\n <ax-clear-button (click)=\"handlePopupClearClick()\"></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Search icon opens entity selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n </ax-tag-box>\n }\n <!-- ----- Inline ax-lookup / table host ----- -->\n @else if (effectiveDataSource(); as dataSource) {\n <!-- ----- Multi-column modes: platform widget column renderer ----- -->\n @if (isTableLookupMode()) {\n <axp-lookup-widget-table-host\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [dataSource]=\"dataSource\"\n [columns]=\"lookupWidgetTableColumns()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [disabledField]=\"'disabled'\"\n [parentField]=\"lookupMode() === 'multi-column-tree' ? treeParentField() : undefined\"\n [treeDataSource]=\"lookupMode() === 'multi-column-tree' ? entityTreeDataSource() : undefined\"\n [searchFields]=\"lookupTreeSearchFields()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [selectedTemplate]=\"lookupItemTemplate\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </axp-lookup-widget-table-host>\n }\n <!-- ----- List / tree chip modes: ax-lookup ----- -->\n @else {\n <ax-lookup\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [mode]=\"lookupMode()\"\n [treeParentField]=\"treeParentField()\"\n [dataSource]=\"dataSource\"\n [treeDataSource]=\"entityTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [itemTemplate]=\"$any(multiple() ? lookupItemTemplate
|
|
25161
|
+
], template: "@if (entityDef() && editorKey()) {\n <!-- ----- Entity lookup editor ----- -->\n <div class=\"flex items-center gap-1 w-full\">\n <!--------------------------------------------------------------->\n <!-- ----- Popup look: full entity data selector ----- -->\n @if (isPopupLook()) {\n <ax-tag-box\n #popupTagBox\n class=\"flex-1 min-w-0\"\n [tagTemplate]=\"popupTagTemplate\"\n [ngModel]=\"selectedItems()\"\n [textField]=\"displayField()\"\n [valueField]=\"valueField()\"\n (onValueChanged)=\"handlePopupValueChange($event)\"\n [placeholder]=\"selectedItems().length ? '' : ((placeholderText() | translate | async) ?? '')\"\n [addOnEnter]=\"false\"\n [addOnComma]=\"false\"\n [readonly]=\"true\"\n [disabled]=\"isLookupDisabled()\"\n (click)=\"handlePopupTriggerClick($event)\"\n (onKeyUp)=\"handlePopupKeyUp($event)\"\n (onBlur)=\"handlePopupBlur($event)\"\n >\n @if (hasClearButton() && selectedItems().length > 0) {\n <ax-clear-button (click)=\"handlePopupClearClick()\"></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n <ax-suffix>\n <ax-button\n color=\"ghost\"\n look=\"blank\"\n [disabled]=\"isLookupDisabled() || isReadonly() || isLoading()\"\n (onClick)=\"handlePopupTriggerClick($event)\"\n >\n @if (isLoading()) {\n <ax-loading></ax-loading>\n }\n <!-- ----- Search icon opens entity selector ----- -->\n @else {\n <ax-icon icon=\"far fa-search\"></ax-icon>\n }\n </ax-button>\n </ax-suffix>\n </ax-tag-box>\n }\n <!-- ----- Inline ax-lookup / table host ----- -->\n @else if (effectiveDataSource(); as dataSource) {\n <!-- ----- Multi-column modes: platform widget column renderer ----- -->\n @if (isTableLookupMode()) {\n <axp-lookup-widget-table-host\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [dataSource]=\"dataSource\"\n [columns]=\"lookupWidgetTableColumns()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [disabledField]=\"'disabled'\"\n [parentField]=\"lookupMode() === 'multi-column-tree' ? treeParentField() : undefined\"\n [treeDataSource]=\"lookupMode() === 'multi-column-tree' ? entityTreeDataSource() : undefined\"\n [searchFields]=\"lookupTreeSearchFields()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [selectedTemplate]=\"lookupItemTemplate\"\n [rowActions]=\"rowActionsHandler()\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </axp-lookup-widget-table-host>\n }\n <!-- ----- List / tree chip modes: ax-lookup ----- -->\n @else {\n <ax-lookup\n class=\"flex-1 min-w-0\"\n [name]=\"name ?? ''\"\n [placeholder]=\"(placeholderText() | translate | async) ?? ''\"\n [caption]=\"(placeholderText() | translate | async) ?? ''\"\n [searchPlaceholder]=\"('@general:widgets.lookup.search.placeholder' | translate | async) ?? ''\"\n [mode]=\"lookupMode()\"\n [treeParentField]=\"treeParentField()\"\n [dataSource]=\"dataSource\"\n [treeDataSource]=\"entityTreeDataSource()\"\n [valueField]=\"valueField()\"\n [textField]=\"displayField()\"\n [value]=\"boundValue()\"\n [valueItems]=\"selectedItems()\"\n [disabled]=\"isLookupDisabled()\"\n [readonly]=\"isReadonly()\"\n [searchable]=\"true\"\n [itemTemplate]=\"\n $any(\n multiple()\n ? hasRowActionPrimary()\n ? lookupListItemWithActionsTemplate\n : lookupItemTemplate\n : lookupDropDownListItemTemplate\n )\n \"\n [selectedTemplate]=\"lookupItemTemplate\"\n (valueChange)=\"handleLookupModelChange($event)\"\n (onItemSelected)=\"handleLookupItemSelected($event)\"\n >\n @if (hasClearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"$safeNavigationMigration(validation.options?.message)\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-lookup>\n }\n }\n <!--------------------------------------------------------------->\n <!-- ----- Inline create for the lookup entity ----- -->\n @if (resolvedCreate().enabled) {\n <ax-button\n color=\"primary\"\n look=\"twotone\"\n [disabled]=\"isLookupDisabled() || isLoading()\"\n (onClick)=\"handleCreateClick($event)\"\n [title]=\"'@general:actions.create.title' | translate | async\"\n >\n <ax-icon icon=\"far fa-plus\"></ax-icon>\n </ax-button>\n }\n </div>\n}\n\n<!-- ----- Lookup item and selected-value label ----- -->\n<ng-template #lookupItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"ax-lookup-option-text\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n</ng-template>\n<!-- ----- Drop-down-list rows: library skips .ax-lookup-option chrome when itemTemplate is set ----- -->\n<ng-template #lookupDropDownListItemTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex h-full w-full min-w-0 items-center gap-1 px-3 text-sm\">\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n <!-- ----- Primary row actions (preview, etc.) ----- -->\n @if (hasRowActionPrimary()) {\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n }\n </span>\n</ng-template>\n<!-- ----- Multi-select list rows with row actions ----- -->\n<ng-template #lookupListItemWithActionsTemplate let-item let-highlightText=\"highlightText\">\n <span class=\"flex w-full min-w-0 items-center gap-1\">\n <span class=\"ax-lookup-option-text min-w-0 flex-1 truncate\">\n <ax-highlight-text\n [text]=\"(getLookupItemLabel(item) | translate | async) ?? ''\"\n [query]=\"highlightText ?? ''\"\n ></ax-highlight-text>\n </span>\n <span class=\"inline-flex shrink-0 items-center\" (mousedown)=\"handleLookupItemRowActionMouseDown($event)\">\n @for (action of rowActionPrimaryItems(); track action.name) {\n <ax-button\n look=\"blank\"\n color=\"ghost\"\n [title]=\"action.text\"\n (onClick)=\"handleItemRowAction($event, action.name, item)\"\n >\n @if (action.icon) {\n <ax-icon [icon]=\"action.icon\"></ax-icon>\n }\n </ax-button>\n }\n </span>\n </span>\n</ng-template>\n<!-- ----- Popup look selected chips ----- -->\n<ng-template #popupTagTemplate let-item let-index=\"index\">\n <div class=\"inline-flex items-center gap-1.5 rounded-md px-3 py-1 text-sm surface\">\n <span>{{ (getLookupItemLabel(item) | translate | async) ?? '' }}</span>\n @if (!isReadonly() && !isLookupDisabled()) {\n <button type=\"button\" (click)=\"handlePopupRemoveItem($event, index)\">\n <ax-icon class=\"ax-icon ax-icon-close\"></ax-icon>\n </button>\n }\n </div>\n</ng-template>\n" }]
|
|
24676
25162
|
}], propDecorators: { lookup: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXLookupComponent), { isSignal: true }] }], tableLookupHost: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPLookupWidgetTableHostComponent), { isSignal: true }] }], popupTagBox: [{ type: i0.ViewChild, args: ['popupTagBox', { isSignal: true }] }] } });
|
|
24677
25163
|
|
|
24678
25164
|
var lookupWidgetEdit_component = /*#__PURE__*/Object.freeze({
|
|
@@ -25462,179 +25948,6 @@ var lookupWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
|
25462
25948
|
AXPLookupWidgetColumnComponent: AXPLookupWidgetColumnComponent
|
|
25463
25949
|
});
|
|
25464
25950
|
|
|
25465
|
-
const AXPLookupWidget = {
|
|
25466
|
-
name: 'lookup-editor',
|
|
25467
|
-
title: 'Lookup',
|
|
25468
|
-
categories: [],
|
|
25469
|
-
groups: [AXPWidgetGroupEnum.EntityWidget],
|
|
25470
|
-
defaultFilterWidgetName: 'lookup-filter',
|
|
25471
|
-
type: 'editor',
|
|
25472
|
-
icon: 'fa-light fa-list-radio',
|
|
25473
|
-
properties: [
|
|
25474
|
-
AXP_DISABLED_PROPERTY,
|
|
25475
|
-
AXP_ALLOW_CLEAR_PROPERTY,
|
|
25476
|
-
AXP_DATA_PATH_PROPERTY,
|
|
25477
|
-
{
|
|
25478
|
-
name: 'expose',
|
|
25479
|
-
title: 'Expose',
|
|
25480
|
-
group: AXP_DATA_PROPERTY_GROUP,
|
|
25481
|
-
schema: {
|
|
25482
|
-
dataType: 'string',
|
|
25483
|
-
interface: {
|
|
25484
|
-
name: 'expose',
|
|
25485
|
-
path: 'options.expose',
|
|
25486
|
-
type: AXPWidgetsCatalog.select,
|
|
25487
|
-
},
|
|
25488
|
-
},
|
|
25489
|
-
visible: true,
|
|
25490
|
-
},
|
|
25491
|
-
{
|
|
25492
|
-
name: 'entity',
|
|
25493
|
-
title: 'Entity',
|
|
25494
|
-
group: AXP_DATA_PROPERTY_GROUP,
|
|
25495
|
-
schema: {
|
|
25496
|
-
dataType: 'string',
|
|
25497
|
-
interface: {
|
|
25498
|
-
name: 'entity',
|
|
25499
|
-
path: 'options.entity',
|
|
25500
|
-
type: AXPWidgetsCatalog.text,
|
|
25501
|
-
},
|
|
25502
|
-
},
|
|
25503
|
-
visible: true,
|
|
25504
|
-
},
|
|
25505
|
-
AXP_ALLOW_MULTIPLE_PROPERTY,
|
|
25506
|
-
createBooleanProperty({
|
|
25507
|
-
name: 'popoverEnabled',
|
|
25508
|
-
title: 'Entity Detail Popover',
|
|
25509
|
-
path: 'options.popover.enabled',
|
|
25510
|
-
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
25511
|
-
defaultValue: true,
|
|
25512
|
-
}),
|
|
25513
|
-
{
|
|
25514
|
-
name: 'displayFormat',
|
|
25515
|
-
title: 'Display Format',
|
|
25516
|
-
group: AXP_DATA_PROPERTY_GROUP,
|
|
25517
|
-
schema: {
|
|
25518
|
-
dataType: 'string',
|
|
25519
|
-
interface: {
|
|
25520
|
-
name: 'displayFormat',
|
|
25521
|
-
path: 'options.displayFormat',
|
|
25522
|
-
type: AXPWidgetsCatalog.template,
|
|
25523
|
-
},
|
|
25524
|
-
},
|
|
25525
|
-
visible: true,
|
|
25526
|
-
},
|
|
25527
|
-
{
|
|
25528
|
-
name: 'columnResolveStrategy',
|
|
25529
|
-
title: 'Column resolve strategy',
|
|
25530
|
-
group: AXP_DATA_PROPERTY_GROUP,
|
|
25531
|
-
schema: {
|
|
25532
|
-
dataType: 'string',
|
|
25533
|
-
defaultValue: 'hydrated',
|
|
25534
|
-
interface: {
|
|
25535
|
-
name: 'columnResolveStrategy',
|
|
25536
|
-
path: 'options.columnResolve.strategy',
|
|
25537
|
-
type: AXPWidgetsCatalog.select,
|
|
25538
|
-
valueTransforms: objectKeyValueTransforms('id'),
|
|
25539
|
-
options: {
|
|
25540
|
-
dataSource: [
|
|
25541
|
-
{ id: 'hydrated', title: 'Hydrated (titles on row)' },
|
|
25542
|
-
{ id: 'idsWithCount', title: 'Ids + count on row (load titles on open)' },
|
|
25543
|
-
{ id: 'countOnly', title: 'Count on row (named query on open)' },
|
|
25544
|
-
],
|
|
25545
|
-
},
|
|
25546
|
-
},
|
|
25547
|
-
},
|
|
25548
|
-
visible: true,
|
|
25549
|
-
},
|
|
25550
|
-
{
|
|
25551
|
-
name: 'columnResolveCountFieldPath',
|
|
25552
|
-
title: 'Column resolve — count field path',
|
|
25553
|
-
group: AXP_DATA_PROPERTY_GROUP,
|
|
25554
|
-
schema: {
|
|
25555
|
-
dataType: 'string',
|
|
25556
|
-
interface: {
|
|
25557
|
-
name: 'columnResolveCountFieldPath',
|
|
25558
|
-
path: 'options.columnResolve.countFieldPath',
|
|
25559
|
-
type: AXPWidgetsCatalog.text,
|
|
25560
|
-
},
|
|
25561
|
-
},
|
|
25562
|
-
visible: true,
|
|
25563
|
-
},
|
|
25564
|
-
{
|
|
25565
|
-
name: 'columnResolveIdsPath',
|
|
25566
|
-
title: 'Column resolve — ids path',
|
|
25567
|
-
group: AXP_DATA_PROPERTY_GROUP,
|
|
25568
|
-
schema: {
|
|
25569
|
-
dataType: 'string',
|
|
25570
|
-
interface: {
|
|
25571
|
-
name: 'columnResolveIdsPath',
|
|
25572
|
-
path: 'options.columnResolve.idsPath',
|
|
25573
|
-
type: AXPWidgetsCatalog.text,
|
|
25574
|
-
},
|
|
25575
|
-
},
|
|
25576
|
-
visible: true,
|
|
25577
|
-
},
|
|
25578
|
-
{
|
|
25579
|
-
name: 'columnResolveQueryKey',
|
|
25580
|
-
title: 'Column resolve — query key (countOnly)',
|
|
25581
|
-
group: AXP_DATA_PROPERTY_GROUP,
|
|
25582
|
-
schema: {
|
|
25583
|
-
dataType: 'string',
|
|
25584
|
-
interface: {
|
|
25585
|
-
name: 'columnResolveQueryKey',
|
|
25586
|
-
path: 'options.columnResolve.queryKey',
|
|
25587
|
-
type: AXPWidgetsCatalog.text,
|
|
25588
|
-
},
|
|
25589
|
-
},
|
|
25590
|
-
visible: true,
|
|
25591
|
-
},
|
|
25592
|
-
{
|
|
25593
|
-
name: 'columnResolveQueryParams',
|
|
25594
|
-
title: 'Column resolve — query params (JSON: param → row path)',
|
|
25595
|
-
group: AXP_DATA_PROPERTY_GROUP,
|
|
25596
|
-
schema: {
|
|
25597
|
-
dataType: 'string',
|
|
25598
|
-
interface: {
|
|
25599
|
-
name: 'columnResolveQueryParams',
|
|
25600
|
-
path: 'options.columnResolve.queryParams',
|
|
25601
|
-
type: AXPWidgetsCatalog.text,
|
|
25602
|
-
},
|
|
25603
|
-
},
|
|
25604
|
-
visible: true,
|
|
25605
|
-
},
|
|
25606
|
-
{
|
|
25607
|
-
name: 'columnResolveQueryResultItemsPath',
|
|
25608
|
-
title: 'Column resolve — query result items path',
|
|
25609
|
-
group: AXP_DATA_PROPERTY_GROUP,
|
|
25610
|
-
schema: {
|
|
25611
|
-
dataType: 'string',
|
|
25612
|
-
defaultValue: 'items',
|
|
25613
|
-
interface: {
|
|
25614
|
-
name: 'columnResolveQueryResultItemsPath',
|
|
25615
|
-
path: 'options.columnResolve.queryResultItemsPath',
|
|
25616
|
-
type: AXPWidgetsCatalog.text,
|
|
25617
|
-
},
|
|
25618
|
-
},
|
|
25619
|
-
visible: true,
|
|
25620
|
-
},
|
|
25621
|
-
],
|
|
25622
|
-
components: {
|
|
25623
|
-
view: {
|
|
25624
|
-
component: () => Promise.resolve().then(function () { return lookupWidgetView_component; }).then((c) => c.AXPLookupWidgetViewComponent),
|
|
25625
|
-
},
|
|
25626
|
-
edit: {
|
|
25627
|
-
component: () => Promise.resolve().then(function () { return lookupWidgetEdit_component; }).then((c) => c.AXPLookupWidgetEditComponent),
|
|
25628
|
-
},
|
|
25629
|
-
column: {
|
|
25630
|
-
component: () => Promise.resolve().then(function () { return lookupWidgetColumn_component; }).then((c) => c.AXPLookupWidgetColumnComponent),
|
|
25631
|
-
},
|
|
25632
|
-
designer: {
|
|
25633
|
-
component: () => Promise.resolve().then(function () { return lookupWidgetEdit_component; }).then((c) => c.AXPLookupWidgetEditComponent),
|
|
25634
|
-
},
|
|
25635
|
-
},
|
|
25636
|
-
};
|
|
25637
|
-
|
|
25638
25951
|
/**
|
|
25639
25952
|
* Source type
|
|
25640
25953
|
*/
|
|
@@ -28278,6 +28591,7 @@ const ENTITY_EXTENDED_WIDGETS = [
|
|
|
28278
28591
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
28279
28592
|
groups: [AXPWidgetGroupEnum.EntityWidget],
|
|
28280
28593
|
type: 'filter',
|
|
28594
|
+
defaultFilterOperator: AXP_LOOKUP_FILTER_DEFAULT_OPERATOR,
|
|
28281
28595
|
components: {},
|
|
28282
28596
|
options: {
|
|
28283
28597
|
look: 'select',
|
|
@@ -31983,7 +32297,7 @@ class AXPEntityModule {
|
|
|
31983
32297
|
},
|
|
31984
32298
|
{
|
|
31985
32299
|
key: 'Entity:Bulk',
|
|
31986
|
-
command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-
|
|
32300
|
+
command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-DccwhqkT.mjs').then((c) => c.AXPBulkEntityCommand),
|
|
31987
32301
|
},
|
|
31988
32302
|
{
|
|
31989
32303
|
key: 'Entity:OpenList',
|
|
@@ -32144,7 +32458,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
32144
32458
|
},
|
|
32145
32459
|
{
|
|
32146
32460
|
key: 'Entity:Bulk',
|
|
32147
|
-
command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-
|
|
32461
|
+
command: () => import('./acorex-platform-framework-client-layout-entity-bulk-entity.command-DccwhqkT.mjs').then((c) => c.AXPBulkEntityCommand),
|
|
32148
32462
|
},
|
|
32149
32463
|
{
|
|
32150
32464
|
key: 'Entity:OpenList',
|
|
@@ -32469,5 +32783,5 @@ function detectEntityChanges(oldObj, newObj) {
|
|
|
32469
32783
|
* Generated bundle index. Do not edit.
|
|
32470
32784
|
*/
|
|
32471
32785
|
|
|
32472
|
-
export { AXPEntityListViewModelResolver as $, AXPEntityDefinitionRegistryService as A, AXPEntityCategoryWidgetViewComponent as B, AXPEntityCommandTriggerViewModel as C, AXPEntityCreateViewElementViewModel as D, AXPEntityCreateViewModelFactory as E, AXPEntityCreateViewSectionViewModel as F, AXPEntityDataProvider as G, AXPEntityDataProviderImpl as H, AXPEntityDataSelectorRowActionsService as I, AXPEntityDataSelectorService as J, AXPEntityDefinitionProviderWidget as K, AXPEntityDefinitionProviderWidgetEditComponent as L, AXPEntityDeletePerformService as M, AXPEntityDetailListViewModel as N, AXPEntityDetailPopoverComponent as O, AXPEntityDetailPopoverService as P, AXPEntityDetailViewModelFactory as Q, AXPEntityDetailViewModelResolver as R, AXPEntityEventDispatcherService as S, AXPEntityFormBuilderService as T, AXPEntityLifecycleHookKeys as U, AXPEntityListPersistenceModeDefault as V, AXPEntityListTableService as W, AXPEntityListToolbarService as X, AXPEntityListViewCardFieldViewModel as Y, AXPEntityListViewColumnViewModel as Z, AXPEntityListViewModelFactory as _, showOperationResultToast as a, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY as a$, AXPEntityListWidget as a0, AXPEntityListWidgetViewComponent as a1, AXPEntityMasterCreateViewModel as a2, AXPEntityMasterListCardSelectActionName as a3, AXPEntityMasterListViewModel as a4, AXPEntityMasterListViewQueryViewModel as a5, AXPEntityMasterSingleElementViewModel as a6, AXPEntityMasterSingleViewGroupViewModel as a7, AXPEntityMasterSingleViewModel as a8, AXPEntityMasterUpdateElementViewModel as a9, AXPLookupWidgetViewComponent as aA, AXPMiddlewareAbortError as aB, AXPMiddlewareEntityStorageService as aC, AXPMultiSourceDefinitionProviderContext as aD, AXPMultiSourceDefinitionProviderService as aE, AXPMultiSourceFederatedSearchService as aF, AXPMultiSourceSelectorComponent as aG, AXPMultiSourceSelectorService as aH, AXPMultiSourceSelectorWidget as aI, AXPMultiSourceSelectorWidgetColumnComponent as aJ, AXPMultiSourceSelectorWidgetEditComponent as aK, AXPMultiSourceSelectorWidgetViewComponent as aL, AXPMultiSourceType as aM, AXPOpenEntityDetailsCommand as aN, AXPOpenEntityListCommand as aO, AXPRelatedColumnEnrichmentService as aP, AXPRelatedColumnMetadataResolver as aQ, AXPSelectorStructureWidget as aR, AXPSelectorStructureWidgetColumnComponent as aS, AXPSelectorStructureWidgetEditComponent as aT, AXPSelectorStructureWidgetViewComponent as aU, AXPShowFileUploaderPopupCommand as aV, AXPTruncatedBreadcrumbComponent as aW, AXPUpdateEntityCommand as aX, AXPUpdateEntityStatusCommand as aY, AXPViewEntityDetailsCommand as aZ, AXP_APPEARANCE_SECTION_ORDER as a_, AXPEntityMasterUpdateViewModel as aa, AXPEntityMasterUpdateViewModelFactory as ab, AXPEntityMiddlewareSkipContext as ac, AXPEntityModule as ad, AXPEntityPreloadFiltersContainerComponent as ae, AXPEntityPreloadFiltersViewModel as af, AXPEntityPreloadFiltersViewModelResolver as ag, AXPEntityResolver as ah, AXPEntityRuntimeAccessorService as ai, AXPEntityService as aj, AXPEntityStorageService as ak, AXPEntityUpdateViewSectionViewModel as al, AXPFileListComponent as am, AXPFileUploaderLoadFilesQuery as an, AXPFileUploaderSaveFilesCommand as ao, AXPFileUploaderWidget as ap, AXPFileUploaderWidgetColumnComponent as aq, AXPFileUploaderWidgetEditComponent as ar, AXPFileUploaderWidgetService as as, AXPFileUploaderWidgetViewComponent as at, AXPGetEntityDetailsQuery as au, AXPLayoutOrderingConfigService as av, AXPLookupByKeyCacheService as aw, AXPLookupWidget as ax, AXPLookupWidgetColumnComponent as ay, AXPLookupWidgetEditComponent as az, buildSelectedIdsFilter as b, detectEntityChanges as b$, AXP_CLASSIFICATION_SECTION_ORDER as b0, AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS as b1, AXP_CLIENT_LOCAL_PLUGIN_NAME as b2, AXP_DATA_SEEDER_TOKEN as b3, AXP_ENTITY_ACTION_PLUGIN as b4, AXP_ENTITY_CONFIG_TOKEN as b5, AXP_ENTITY_DEFINITION_LOADER as b6, AXP_ENTITY_MIDDLEWARE as b7, AXP_ENTITY_MODIFIER as b8, AXP_ENTITY_STORAGE_MIDDLEWARE as b9, axpUpdateEntityStatusCommandDefinition as bA, buildDataSourceTraceSnapshot as bB, canPersistEntityListState as bC, clientLocalPlugin as bD, cloneLayoutArrays as bE, columnOrderingMiddleware as bF, columnOrderingMiddlewareProvider as bG, columnWidthMiddleware as bH, columnWidthMiddlewareProvider as bI, committedAttachments as bJ, composeEntityMiddlewares as bK, composeEntityStorageMiddlewares as bL, computeEntityAggregates as bM, configureEntityListColumnsSettingsMigrateDrop as bN, configureEntityListColumnsSettingsVersion as bO, createColumnOrderingMiddlewareProvider as bP, createEntityCardDisplayScope as bQ, createEntityCardLogicScope as bR, createEntityMiddlewareContext as bS, createEntityStorageContext as bT, createLayoutOrderingMiddlewareProvider as bU, defaultCardLayoutMiddleware as bV, defaultCardLayoutMiddlewareProvider as bW, defaultMultiLanguageMiddleware as bX, defaultMultiLanguageMiddlewareProvider as bY, defaultSortPresetsMiddleware as bZ, defaultSortPresetsMiddlewareProvider as b_, AXP_MULTI_SOURCE_DEFINITION_PROVIDER as ba, DEFAULT_COLUMN_ORDER as bb, DEFAULT_PAIR_SPAN_RULES as bc, DEFAULT_PROPERTY_ORDER as bd, DEFAULT_SECTION_ORDER as be, ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE as bf, ENTITY_LIST_LAYOUT_META as bg, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY as bh, ENTITY_MASTER_LIST_TRACE_NS as bi, EntityBuilder as bj, EntityDataAccessor as bk, GALLERY_PAGE_COMPONENT_KEY as bl, TREE_CHILDREN_QUERY_TAKE as bm, actionExists as bn, applyDataSourcePagingWithoutLoad as bo, attachmentFieldCount as bp, attachmentNeedsHydration as bq, attachmentsPlugin as br, attachmentsSemanticallyEqual as bs, axpBuildEntityListPageContextSnapshot as bt, axpCreateEntityAiToolInputDefaults as bu, axpCreateEntityCommandDefinition as bv, axpDeleteEntityCommandDefinition as bw, axpOpenEntityListCommandDefinition as bx, axpRunEntityListPageContextAction as by, axpShowFileUploaderPopupCommandDefinition as bz, ATTACHMENTS_PAGE_COMPONENT_KEY as c, readPersistedEntityListInstanceCurrentView as c$, dispatchEntityModifiedSideEffects as c0, ensureHierarchicalRootFilter as c1, ensureLayoutPropertyView as c2, ensureLayoutSection as c3, ensureListActions as c4, entityCreateBridgeMiddleware as c5, entityDeleteBridgeMiddleware as c6, entityGetOneBridgeMiddleware as c7, entityListInstanceCurrentViewPath as c8, entityListInstanceFilterPath as c9, hydrateAttachmentFieldToFileList as cA, isAXPMiddlewareAbortError as cB, isAttachmentFieldPresentOnRow as cC, isAttachmentListEntry as cD, isAttachmentStorageRef as cE, isCategoryEntity as cF, isCategoryFilter as cG, isFileListItem as cH, isFileUploaderEditDialogAuto as cI, isLegacyEntityDataSelectorOptions as cJ, layoutOrderingMiddlewareFactory as cK, layoutOrderingMiddlewareProvider as cL, mapEntityStorageErrorToCommandResult as cM, mapLegacyEntityDataSelectorOptions as cN, mergeEntityListViewAndPersistedFilters as cO, normalizeEntityCardHeaderDisplayValue as cP, normalizeEntityDataSelectorColumnSpecs as cQ, normalizeEntityDataSelectorOptions as cR, normalizeEntityFieldToFileList as cS, normalizeEntityListPersistenceMode as cT, normalizeListPaging as cU, prefetchClientLocalRelated as cV, provideEntity as cW, provideEntityMiddlewareBridge as cX, provideEntityRealtimeHandlers as cY, provideEntityStorageMiddlewareBridge as cZ, provideLocalEntityCatalog as c_, entityListStylingRulesPath as ca, entityQueryBridgeMiddleware as cb, entityStorageCreateBridgeMiddleware as cc, entityStorageDeleteBridgeMiddleware as cd, entityStorageGetOneBridgeMiddleware as ce, entityStorageQueryBridgeMiddleware as cf, entityStorageUpdateBridgeMiddleware as cg, entityUpdateBridgeMiddleware as ch, eventDispatchMiddleware as ci, filterEntityMiddlewares as cj, filterEntityStorageMiddlewares as ck, filterSortEntityRows as cl, filterTouchesParentKey as cm, findEntityListRowDataInTree as cn, fingerprintAttachmentItem as co, fingerprintAttachments as cp, fireEntityLifecycleHook as cq, formatLookupItemDisplay as cr, formatLookupItemDisplayAsync as cs, galleryPlugin as ct, getDataSourcePageIndex as cu, getEntityListColumnsSettingsMigrateDrop as cv, getEntityListColumnsSettingsVersion as cw, getEntityListRowId as cx, getMasterInterfacePropertySortKey as cy, hasFileUploaderTitleOrDescriptionFields as cz, AXMEntityCrudService as d, readPersistedEntityListInstanceFilters as d0, readPersistedEntityListStylingRules as d1, resetPagingForTreeChildrenLoad as d2, resolveAttachmentFieldPath as d3, resolveEntityCardBadgeColorValue as d4, resolveEntityCardHeaderValue as d5, resolveEntityMasterFieldStylingClass as d6, resolveEntityMasterRecordStylingClass as d7, resolveEntityMasterStylingClass as d8, resolveEntityPluginDetailPageOrder as d9, resolveFileUploaderEditDialog as da, resolveFileUploaderEntityScope as db, resolveLookupDisplayField as dc, resolveLookupDisplayTemplate as dd, resolveLookupEntityCacheKey as de, resolveLookupEntityKey as df, resolveMasterInterfacePropertyOrder as dg, restoreEntityListExpandedRows as dh, runEntityMiddlewarePipeline as di, runEntityQuery as dj, runEntityStorageMiddlewarePipeline as dk, searchResultDescriptionMiddleware as dl, searchResultDescriptionMiddlewareProvider as dm, shouldLoadEntityListStateFromStorage as dn, shouldResetEntityListStateOnRouteEntry as dp, traceEntityMasterList as dq, AXMEntityCrudServiceImpl as e, AXPCategoryTreeService as f, AXPClientLocalPluginModule as g, AXPCreateEntityCommand as h, AXPDataSeederService as i, AXPDeleteEntityCommand as j, AXPDomainQueryEntityDefinitionLoader as k, AXPEditFileUploaderCommand as l, AXPEntityBulkPatchPerformService as m, newBulkExecutionId as n, AXPEntityCardComponent as o, persistedAttachments as p, AXPEntityCardFieldsResolver as q, resolveBulkFailureBody as r, settleAfterLoadingDialog as s, AXPEntityCardSelectActionName as t, AXPEntityCardSkeletonComponent as u, AXPEntityCategoryTreeSelectorComponent as v, watchBulkProgress as w, AXPEntityCategoryWidget as x, AXPEntityCategoryWidgetColumnComponent as y, AXPEntityCategoryWidgetEditComponent as z };
|
|
32473
|
-
//# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-
|
|
32786
|
+
export { AXPEntityListViewModelResolver as $, AXPEntityDefinitionRegistryService as A, AXPEntityCategoryWidgetViewComponent as B, AXPEntityCommandTriggerViewModel as C, AXPEntityCreateViewElementViewModel as D, AXPEntityCreateViewModelFactory as E, AXPEntityCreateViewSectionViewModel as F, AXPEntityDataProvider as G, AXPEntityDataProviderImpl as H, AXPEntityDataSelectorRowActionsService as I, AXPEntityDataSelectorService as J, AXPEntityDefinitionProviderWidget as K, AXPEntityDefinitionProviderWidgetEditComponent as L, AXPEntityDeletePerformService as M, AXPEntityDetailListViewModel as N, AXPEntityDetailPopoverComponent as O, AXPEntityDetailPopoverService as P, AXPEntityDetailViewModelFactory as Q, AXPEntityDetailViewModelResolver as R, AXPEntityEventDispatcherService as S, AXPEntityFormBuilderService as T, AXPEntityLifecycleHookKeys as U, AXPEntityListPersistenceModeDefault as V, AXPEntityListTableService as W, AXPEntityListToolbarService as X, AXPEntityListViewCardFieldViewModel as Y, AXPEntityListViewColumnViewModel as Z, AXPEntityListViewModelFactory as _, showOperationResultToast as a, AXP_CATEGORY_TREE_ROOT_TITLE_I18N_KEY as a$, AXPEntityListWidget as a0, AXPEntityListWidgetViewComponent as a1, AXPEntityMasterCreateViewModel as a2, AXPEntityMasterListCardSelectActionName as a3, AXPEntityMasterListViewModel as a4, AXPEntityMasterListViewQueryViewModel as a5, AXPEntityMasterSingleElementViewModel as a6, AXPEntityMasterSingleViewGroupViewModel as a7, AXPEntityMasterSingleViewModel as a8, AXPEntityMasterUpdateElementViewModel as a9, AXPLookupWidgetViewComponent as aA, AXPMiddlewareAbortError as aB, AXPMiddlewareEntityStorageService as aC, AXPMultiSourceDefinitionProviderContext as aD, AXPMultiSourceDefinitionProviderService as aE, AXPMultiSourceFederatedSearchService as aF, AXPMultiSourceSelectorComponent as aG, AXPMultiSourceSelectorService as aH, AXPMultiSourceSelectorWidget as aI, AXPMultiSourceSelectorWidgetColumnComponent as aJ, AXPMultiSourceSelectorWidgetEditComponent as aK, AXPMultiSourceSelectorWidgetViewComponent as aL, AXPMultiSourceType as aM, AXPOpenEntityDetailsCommand as aN, AXPOpenEntityListCommand as aO, AXPRelatedColumnEnrichmentService as aP, AXPRelatedColumnMetadataResolver as aQ, AXPSelectorStructureWidget as aR, AXPSelectorStructureWidgetColumnComponent as aS, AXPSelectorStructureWidgetEditComponent as aT, AXPSelectorStructureWidgetViewComponent as aU, AXPShowFileUploaderPopupCommand as aV, AXPTruncatedBreadcrumbComponent as aW, AXPUpdateEntityCommand as aX, AXPUpdateEntityStatusCommand as aY, AXPViewEntityDetailsCommand as aZ, AXP_APPEARANCE_SECTION_ORDER as a_, AXPEntityMasterUpdateViewModel as aa, AXPEntityMasterUpdateViewModelFactory as ab, AXPEntityMiddlewareSkipContext as ac, AXPEntityModule as ad, AXPEntityPreloadFiltersContainerComponent as ae, AXPEntityPreloadFiltersViewModel as af, AXPEntityPreloadFiltersViewModelResolver as ag, AXPEntityResolver as ah, AXPEntityRuntimeAccessorService as ai, AXPEntityService as aj, AXPEntityStorageService as ak, AXPEntityUpdateViewSectionViewModel as al, AXPFileListComponent as am, AXPFileUploaderLoadFilesQuery as an, AXPFileUploaderSaveFilesCommand as ao, AXPFileUploaderWidget as ap, AXPFileUploaderWidgetColumnComponent as aq, AXPFileUploaderWidgetEditComponent as ar, AXPFileUploaderWidgetService as as, AXPFileUploaderWidgetViewComponent as at, AXPGetEntityDetailsQuery as au, AXPLayoutOrderingConfigService as av, AXPLookupByKeyCacheService as aw, AXPLookupWidget as ax, AXPLookupWidgetColumnComponent as ay, AXPLookupWidgetEditComponent as az, buildSelectedIdsFilter as b, defaultSortPresetsMiddlewareProvider as b$, AXP_CLASSIFICATION_SECTION_ORDER as b0, AXP_CLIENT_LOCAL_DEFAULT_MAX_ITEMS as b1, AXP_CLIENT_LOCAL_PLUGIN_NAME as b2, AXP_DATA_SEEDER_TOKEN as b3, AXP_ENTITY_ACTION_PLUGIN as b4, AXP_ENTITY_CONFIG_TOKEN as b5, AXP_ENTITY_DEFINITION_LOADER as b6, AXP_ENTITY_MIDDLEWARE as b7, AXP_ENTITY_MODIFIER as b8, AXP_ENTITY_STORAGE_MIDDLEWARE as b9, axpShowFileUploaderPopupCommandDefinition as bA, axpUpdateEntityStatusCommandDefinition as bB, buildDataSourceTraceSnapshot as bC, canPersistEntityListState as bD, clientLocalPlugin as bE, cloneLayoutArrays as bF, columnOrderingMiddleware as bG, columnOrderingMiddlewareProvider as bH, columnWidthMiddleware as bI, columnWidthMiddlewareProvider as bJ, committedAttachments as bK, composeEntityMiddlewares as bL, composeEntityStorageMiddlewares as bM, computeEntityAggregates as bN, configureEntityListColumnsSettingsMigrateDrop as bO, configureEntityListColumnsSettingsVersion as bP, createColumnOrderingMiddlewareProvider as bQ, createEntityCardDisplayScope as bR, createEntityCardLogicScope as bS, createEntityMiddlewareContext as bT, createEntityStorageContext as bU, createLayoutOrderingMiddlewareProvider as bV, defaultCardLayoutMiddleware as bW, defaultCardLayoutMiddlewareProvider as bX, defaultMultiLanguageMiddleware as bY, defaultMultiLanguageMiddlewareProvider as bZ, defaultSortPresetsMiddleware as b_, AXP_LOOKUP_FILTER_DEFAULT_OPERATOR as ba, AXP_MULTI_SOURCE_DEFINITION_PROVIDER as bb, DEFAULT_COLUMN_ORDER as bc, DEFAULT_PAIR_SPAN_RULES as bd, DEFAULT_PROPERTY_ORDER as be, DEFAULT_SECTION_ORDER as bf, ENTITY_FORM_ACTION_FIRST_STEP_CONTINUE as bg, ENTITY_LIST_LAYOUT_META as bh, ENTITY_LIST_ROUTE_CONTEXT_SESSION_KEY as bi, ENTITY_MASTER_LIST_TRACE_NS as bj, EntityBuilder as bk, EntityDataAccessor as bl, GALLERY_PAGE_COMPONENT_KEY as bm, TREE_CHILDREN_QUERY_TAKE as bn, actionExists as bo, applyDataSourcePagingWithoutLoad as bp, attachmentFieldCount as bq, attachmentNeedsHydration as br, attachmentsPlugin as bs, attachmentsSemanticallyEqual as bt, axpBuildEntityListPageContextSnapshot as bu, axpCreateEntityAiToolInputDefaults as bv, axpCreateEntityCommandDefinition as bw, axpDeleteEntityCommandDefinition as bx, axpOpenEntityListCommandDefinition as by, axpRunEntityListPageContextAction as bz, ATTACHMENTS_PAGE_COMPONENT_KEY as c, provideLocalEntityCatalog as c$, detectEntityChanges as c0, dispatchEntityModifiedSideEffects as c1, ensureHierarchicalRootFilter as c2, ensureLayoutPropertyView as c3, ensureLayoutSection as c4, ensureListActions as c5, entityCreateBridgeMiddleware as c6, entityDeleteBridgeMiddleware as c7, entityGetOneBridgeMiddleware as c8, entityListInstanceCurrentViewPath as c9, hasFileUploaderTitleOrDescriptionFields as cA, hydrateAttachmentFieldToFileList as cB, isAXPMiddlewareAbortError as cC, isAttachmentFieldPresentOnRow as cD, isAttachmentListEntry as cE, isAttachmentStorageRef as cF, isCategoryEntity as cG, isCategoryFilter as cH, isFileListItem as cI, isFileUploaderEditDialogAuto as cJ, isLegacyEntityDataSelectorOptions as cK, layoutOrderingMiddlewareFactory as cL, layoutOrderingMiddlewareProvider as cM, mapEntityStorageErrorToCommandResult as cN, mapLegacyEntityDataSelectorOptions as cO, mergeEntityListViewAndPersistedFilters as cP, normalizeEntityCardHeaderDisplayValue as cQ, normalizeEntityDataSelectorColumnSpecs as cR, normalizeEntityDataSelectorOptions as cS, normalizeEntityFieldToFileList as cT, normalizeEntityListPersistenceMode as cU, normalizeListPaging as cV, prefetchClientLocalRelated as cW, provideEntity as cX, provideEntityMiddlewareBridge as cY, provideEntityRealtimeHandlers as cZ, provideEntityStorageMiddlewareBridge as c_, entityListInstanceFilterPath as ca, entityListStylingRulesPath as cb, entityQueryBridgeMiddleware as cc, entityStorageCreateBridgeMiddleware as cd, entityStorageDeleteBridgeMiddleware as ce, entityStorageGetOneBridgeMiddleware as cf, entityStorageQueryBridgeMiddleware as cg, entityStorageUpdateBridgeMiddleware as ch, entityUpdateBridgeMiddleware as ci, eventDispatchMiddleware as cj, filterEntityMiddlewares as ck, filterEntityStorageMiddlewares as cl, filterSortEntityRows as cm, filterTouchesParentKey as cn, findEntityListRowDataInTree as co, fingerprintAttachmentItem as cp, fingerprintAttachments as cq, fireEntityLifecycleHook as cr, formatLookupItemDisplay as cs, formatLookupItemDisplayAsync as ct, galleryPlugin as cu, getDataSourcePageIndex as cv, getEntityListColumnsSettingsMigrateDrop as cw, getEntityListColumnsSettingsVersion as cx, getEntityListRowId as cy, getMasterInterfacePropertySortKey as cz, AXMEntityCrudService as d, readPersistedEntityListInstanceCurrentView as d0, readPersistedEntityListInstanceFilters as d1, readPersistedEntityListStylingRules as d2, resetPagingForTreeChildrenLoad as d3, resolveAttachmentFieldPath as d4, resolveEntityCardBadgeColorValue as d5, resolveEntityCardHeaderValue as d6, resolveEntityMasterFieldStylingClass as d7, resolveEntityMasterRecordStylingClass as d8, resolveEntityMasterStylingClass as d9, resolveEntityPluginDetailPageOrder as da, resolveFileUploaderEditDialog as db, resolveFileUploaderEntityScope as dc, resolveLookupDisplayField as dd, resolveLookupDisplayTemplate as de, resolveLookupEntityCacheKey as df, resolveLookupEntityKey as dg, resolveMasterInterfacePropertyOrder as dh, restoreEntityListExpandedRows as di, runEntityMiddlewarePipeline as dj, runEntityQuery as dk, runEntityStorageMiddlewarePipeline as dl, searchResultDescriptionMiddleware as dm, searchResultDescriptionMiddlewareProvider as dn, shouldLoadEntityListStateFromStorage as dp, shouldResetEntityListStateOnRouteEntry as dq, traceEntityMasterList as dr, AXMEntityCrudServiceImpl as e, AXPCategoryTreeService as f, AXPClientLocalPluginModule as g, AXPCreateEntityCommand as h, AXPDataSeederService as i, AXPDeleteEntityCommand as j, AXPDomainQueryEntityDefinitionLoader as k, AXPEditFileUploaderCommand as l, AXPEntityBulkPatchPerformService as m, newBulkExecutionId as n, AXPEntityCardComponent as o, persistedAttachments as p, AXPEntityCardFieldsResolver as q, resolveBulkFailureBody as r, settleAfterLoadingDialog as s, AXPEntityCardSelectActionName as t, AXPEntityCardSkeletonComponent as u, AXPEntityCategoryTreeSelectorComponent as v, watchBulkProgress as w, AXPEntityCategoryWidget as x, AXPEntityCategoryWidgetColumnComponent as y, AXPEntityCategoryWidgetEditComponent as z };
|
|
32787
|
+
//# sourceMappingURL=acorex-platform-framework-client-layout-entity-acorex-platform-framework-client-layout-entity-DLW9GiJh.mjs.map
|