@acorex/platform 21.0.0-next.37 → 21.0.0-next.40
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-common.mjs +25 -3
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +18 -172
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-domain.mjs +3 -0
- package/fesm2022/acorex-platform-domain.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +29 -13
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +62 -40
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +209 -62
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-entity.mjs +1072 -358
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +171 -86
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +170 -63
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs → acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs} +5 -60
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-widgets.mjs +720 -415
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-runtime.mjs +120 -9
- package/fesm2022/acorex-platform-runtime.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs → acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cx1lLUaR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs → acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-AOrcgjDF.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs → acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs} +3 -3
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-BfCeUU5F.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +26 -14
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/{acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs → acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs} +2 -2
- package/fesm2022/acorex-platform-themes-shared-settings.provider-D13QB3Hr.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs +94 -0
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-D566Kdvy.mjs.map +1 -0
- package/fesm2022/{acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs → acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs} +38 -16
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-D7-rCGl7.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-shared.mjs +183 -84
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +75 -15
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/package.json +1 -1
- package/types/acorex-platform-common.d.ts +11 -6
- package/types/acorex-platform-core.d.ts +67 -101
- package/types/acorex-platform-domain.d.ts +28 -2
- package/types/acorex-platform-layout-builder.d.ts +41 -28
- package/types/acorex-platform-layout-components.d.ts +4 -3
- package/types/acorex-platform-layout-designer.d.ts +56 -16
- package/types/acorex-platform-layout-entity.d.ts +180 -40
- package/types/acorex-platform-layout-views.d.ts +31 -29
- package/types/acorex-platform-layout-widget-core.d.ts +81 -52
- package/types/acorex-platform-layout-widgets.d.ts +42 -16
- package/types/acorex-platform-runtime.d.ts +156 -61
- package/types/acorex-platform-themes-default.d.ts +1 -0
- package/types/acorex-platform-workflow.d.ts +64 -52
- package/fesm2022/acorex-platform-layout-widgets-file-list-popup.component-9uCkMxcc.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-create-view.component-Cvvr4HnL.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-modify-view.component-TYoLN1Jq.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-entity-master-single-view.component-C2z5Lq9y.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-DSs1o1M6.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs +0 -65
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-column.component-CHfrTtol.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-shared-theme-color-chooser-view.component-BSmvnUVq.mjs.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i1$3 from '@acorex/platform/layout/widget-core';
|
|
2
|
-
import { createStringProperty, AXPWidgetsCatalog, createBooleanProperty, createSelectProperty, createNumberProperty, cloneProperty, AXPWidgetCoreModule, AXPDataListWidgetComponent, AXPColumnWidgetComponent, AXPLayoutBaseWidgetComponent, AXPWidgetGroupEnum,
|
|
2
|
+
import { createStringProperty, AXPWidgetsCatalog, createBooleanProperty, createSelectProperty, createNumberProperty, cloneProperty, AXPWidgetCoreModule, AXPDataListWidgetComponent, AXPColumnWidgetComponent, AXPLayoutBaseWidgetComponent, AXPWidgetGroupEnum, AXP_WIDGETS_ACTION_SUB_CONTROLS, AXP_WIDGETS_ACTION_CATEGORY, AXP_WIDGETS_EDITOR_CATEGORY, AXPValueWidgetComponent, AXP_WIDGETS_EDITOR_SUB_CHOICE, AXP_WIDGETS_EDITOR_SUB_VISUAL, AXP_WIDGETS_EDITOR_SUB_COMPOSITE, AXP_WIDGETS_EDITOR_SUB_DATETIME, AXP_WIDGETS_EDITOR_SUB_RICH, AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS, AXP_WIDGETS_EDITOR_SUB_NUMERIC, AXPWidgetStatus, AXP_WIDGETS_ADVANCE_SUB_MEDIA, AXP_WIDGETS_ADVANCE_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_INPUT, AXP_WIDGETS_LAYOUT_SUB_LISTS, AXP_WIDGETS_LAYOUT_CATEGORY, AXP_WIDGETS_ADVANCE_SUB_DATA, AXP_WIDGETS_ADVANCE_SUB_TOOLS, AXP_WIDGETS_EDITOR_SUB_CONFIG, AXPWidgetRegistryService, AXPPropertyEditorHelper, AXP_WIDGETS_LAYOUT_SUB_GRID, AXPBlockBaseLayoutWidgetComponent, AXP_WIDGETS_LAYOUT_SUB_SURFACES, AXPFlexBaseLayoutWidgetComponent, AXPFlexItemBaseLayoutWidgetComponent, AXP_WIDGETS_LAYOUT_SUB_SHELL, AXPTableBaseLayoutWidgetComponent, AXPTableItemBaseLayoutWidgetComponent, findNonEmptyBreakpoints, AXPGridItemBaseLayoutWidgetComponent, AXP_WIDGETS_LAYOUT_SUB_UTILITY, AXPGridBaseLayoutWidgetComponent, AXP_WIDGETS_LAYOUT_SUB_TABS, AXP_WIDGET_DEFINITION_PROVIDER, normalizeDefinitionCategories } from '@acorex/platform/layout/widget-core';
|
|
3
3
|
import { AX_STYLE_COLOR_TYPES, AX_STYLE_LOOK_TYPES, AXDataSource, convertArrayToDataSource } from '@acorex/cdk/common';
|
|
4
4
|
import { AXActionSheetService } from '@acorex/components/action-sheet';
|
|
5
5
|
import * as i1$2 from '@acorex/components/badge';
|
|
@@ -20,9 +20,9 @@ import { AXTabsModule } from '@acorex/components/tabs';
|
|
|
20
20
|
import * as i1$6 from '@acorex/components/text-box';
|
|
21
21
|
import { AXTextBoxModule } from '@acorex/components/text-box';
|
|
22
22
|
import * as i6 from '@acorex/core/translation';
|
|
23
|
-
import { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';
|
|
23
|
+
import { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';
|
|
24
24
|
import { AXP_LOCALE_MANAGEMENT_PORT, AXPFilterOperatorMiddlewareService, AXPCleanNestedFilters, AXPClipBoardService, AXPSettingsService, AXPRegionalSetting, AXPFileStorageService, AXPFileTypeProviderService, AXPFileActionsService, AXPStatusDefinitionProviderService, AXPRefreshEvent, AXPCommonSettings, ALL_DEFAULT_OPERATORS, DATE_OPERATORS, BOOLEAN_OPERATORS, NUMBER_OPERATORS, STRING_OPERATORS } from '@acorex/platform/common';
|
|
25
|
-
import { AXPDeviceService, setSmart, AXPColorPaletteService, extractValue,
|
|
25
|
+
import { AXPDeviceService, setSmart, AXPColorPaletteService, extractValue, AXPTagService, AXPExpressionEvaluatorService, AXPHookService, AXPDataGenerator, AXPComponentSlotModule, AXPDataSourceDefinitionProviderService, sortByMultiLanguageString, applyQueryArray, objectKeyValueTransforms } from '@acorex/platform/core';
|
|
26
26
|
import * as i1$4 from '@angular/common';
|
|
27
27
|
import { CommonModule, AsyncPipe } from '@angular/common';
|
|
28
28
|
import * as i0 from '@angular/core';
|
|
@@ -119,6 +119,8 @@ import { AXCronJobModule } from '@acorex/components/cron-job';
|
|
|
119
119
|
import { AXTimeDurationFormatter, AXCalendarService } from '@acorex/core/date-time';
|
|
120
120
|
import * as i3$6 from '@acorex/components/time-duration';
|
|
121
121
|
import { AXTimeDurationModule } from '@acorex/components/time-duration';
|
|
122
|
+
import * as i4$1 from '@acorex/components/tooltip';
|
|
123
|
+
import { AXTooltipModule } from '@acorex/components/tooltip';
|
|
122
124
|
import * as i1$l from '@acorex/components/alert';
|
|
123
125
|
import { AXAlertModule } from '@acorex/components/alert';
|
|
124
126
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
@@ -1310,8 +1312,7 @@ class AXPSelectLanguagePopup extends AXBasePageComponent {
|
|
|
1310
1312
|
if (this.showOtherLanguages() || !this.hasLanguagesBeyondProfiles()) {
|
|
1311
1313
|
return list;
|
|
1312
1314
|
}
|
|
1313
|
-
return list.filter((l) => l.isLocaleProfile ||
|
|
1314
|
-
this.hasTranslationContent(l.context?.value));
|
|
1315
|
+
return list.filter((l) => l.isLocaleProfile || this.hasTranslationContent(l.context?.value));
|
|
1315
1316
|
}, ...(ngDevMode ? [{ debugName: "visibleLanguageList" }] : /* istanbul ignore next */ []));
|
|
1316
1317
|
}
|
|
1317
1318
|
//#region ---- Lifecycle ----
|
|
@@ -1326,6 +1327,7 @@ class AXPSelectLanguagePopup extends AXBasePageComponent {
|
|
|
1326
1327
|
handleContextChanged(e, language) {
|
|
1327
1328
|
language.context = e.data;
|
|
1328
1329
|
}
|
|
1330
|
+
//TODO NEED TO FIX THOSE HAS NO PROFILE
|
|
1329
1331
|
onShowOtherLanguagesChanged(event) {
|
|
1330
1332
|
const next = !!event.value;
|
|
1331
1333
|
this.showOtherLanguages.set(next);
|
|
@@ -1337,8 +1339,7 @@ class AXPSelectLanguagePopup extends AXBasePageComponent {
|
|
|
1337
1339
|
if (!current) {
|
|
1338
1340
|
return list;
|
|
1339
1341
|
}
|
|
1340
|
-
const staysVisible = current.isLocaleProfile ||
|
|
1341
|
-
(!current.isLocaleProfile && this.hasTranslationContent(current.context?.value));
|
|
1342
|
+
const staysVisible = current.isLocaleProfile || (!current.isLocaleProfile && this.hasTranslationContent(current.context?.value));
|
|
1342
1343
|
if (staysVisible) {
|
|
1343
1344
|
return list;
|
|
1344
1345
|
}
|
|
@@ -1375,7 +1376,9 @@ class AXPSelectLanguagePopup extends AXBasePageComponent {
|
|
|
1375
1376
|
async onSaveButtonClick() {
|
|
1376
1377
|
const merged = { ...this.values };
|
|
1377
1378
|
this.languageList().forEach((item) => {
|
|
1378
|
-
|
|
1379
|
+
if (item.context.value) {
|
|
1380
|
+
merged[item.code] = item.context.value;
|
|
1381
|
+
}
|
|
1379
1382
|
});
|
|
1380
1383
|
this.close(merged);
|
|
1381
1384
|
}
|
|
@@ -1984,10 +1987,11 @@ var buttonWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
1984
1987
|
|
|
1985
1988
|
const AXPButtonWidget = {
|
|
1986
1989
|
name: 'button-action',
|
|
1987
|
-
title: '
|
|
1988
|
-
description: '
|
|
1990
|
+
title: '@platform-layout-widgets:widgets.button-action.title',
|
|
1991
|
+
description: '@platform-layout-widgets:widgets.button-action.description',
|
|
1989
1992
|
icon: 'fa-light fa-play',
|
|
1990
|
-
categories: [AXP_WIDGETS_ACTION_CATEGORY
|
|
1993
|
+
categories: [AXP_WIDGETS_ACTION_CATEGORY],
|
|
1994
|
+
subCategory: AXP_WIDGETS_ACTION_SUB_CONTROLS,
|
|
1991
1995
|
aiDescription: 'Primary or secondary action button. Use when the answer should offer a clear next step (submit, navigate, run) with label and optional icon.',
|
|
1992
1996
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
1993
1997
|
type: 'action',
|
|
@@ -2025,7 +2029,7 @@ const AXPConditionBuilderWidget = {
|
|
|
2025
2029
|
description: 'Builds filter conditions (field/operator/value) with AND/OR groups',
|
|
2026
2030
|
icon: 'fa-light fa-filter',
|
|
2027
2031
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
2028
|
-
groups: [AXPWidgetGroupEnum.
|
|
2032
|
+
groups: [AXPWidgetGroupEnum.BaseWidget],
|
|
2029
2033
|
type: 'editor',
|
|
2030
2034
|
properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],
|
|
2031
2035
|
components: {
|
|
@@ -2549,10 +2553,11 @@ var checkboxWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
2549
2553
|
|
|
2550
2554
|
const AXPCheckBoxWidget = {
|
|
2551
2555
|
name: 'checkbox-editor',
|
|
2552
|
-
title: '
|
|
2556
|
+
title: '@platform-layout-widgets:widgets.checkbox-editor.title',
|
|
2553
2557
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
2558
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,
|
|
2554
2559
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
2555
|
-
description: '
|
|
2560
|
+
description: '@platform-layout-widgets:widgets.checkbox-editor.description',
|
|
2556
2561
|
icon: 'fa-light fa-square-check',
|
|
2557
2562
|
defaultFilterWidgetName: 'boolean-filter',
|
|
2558
2563
|
type: 'editor',
|
|
@@ -2782,10 +2787,11 @@ var colorBoxWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
2782
2787
|
|
|
2783
2788
|
const AXPColorBoxWidget = {
|
|
2784
2789
|
name: 'color-editor',
|
|
2785
|
-
title: '
|
|
2786
|
-
description: '
|
|
2790
|
+
title: '@platform-layout-widgets:widgets.color-editor.title',
|
|
2791
|
+
description: '@platform-layout-widgets:widgets.color-editor.description',
|
|
2787
2792
|
icon: 'fa-light fa-palette',
|
|
2788
2793
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
2794
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_VISUAL,
|
|
2789
2795
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
2790
2796
|
type: 'editor',
|
|
2791
2797
|
properties: [
|
|
@@ -3133,10 +3139,11 @@ var colorPaletteWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
3133
3139
|
|
|
3134
3140
|
const AXPColorPaletteWidget = {
|
|
3135
3141
|
name: 'color-palette-editor',
|
|
3136
|
-
title: '
|
|
3137
|
-
description: '
|
|
3142
|
+
title: '@platform-layout-widgets:widgets.color-palette-editor.title',
|
|
3143
|
+
description: '@platform-layout-widgets:widgets.color-palette-editor.description',
|
|
3138
3144
|
icon: 'fa-light fa-swatchbook',
|
|
3139
3145
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
3146
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_VISUAL,
|
|
3140
3147
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
3141
3148
|
type: 'editor',
|
|
3142
3149
|
properties: [
|
|
@@ -3362,10 +3369,11 @@ var connectedListsWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
|
3362
3369
|
|
|
3363
3370
|
const AXPConnectedDragDropListsWidget = {
|
|
3364
3371
|
name: 'connected-lists-editor',
|
|
3365
|
-
title: '
|
|
3366
|
-
description: '
|
|
3372
|
+
title: '@platform-layout-widgets:widgets.connected-lists-editor.title',
|
|
3373
|
+
description: '@platform-layout-widgets:widgets.connected-lists-editor.description',
|
|
3367
3374
|
icon: 'fa-light fa-arrow-right-arrow-left',
|
|
3368
3375
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
3376
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,
|
|
3369
3377
|
groups: [AXPWidgetGroupEnum.UtilityWidget],
|
|
3370
3378
|
properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],
|
|
3371
3379
|
type: 'editor',
|
|
@@ -4143,9 +4151,10 @@ var contactWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
4143
4151
|
|
|
4144
4152
|
const AXPContactWidget = {
|
|
4145
4153
|
name: 'contact-editor',
|
|
4146
|
-
title: '
|
|
4147
|
-
description: '
|
|
4154
|
+
title: '@platform-layout-widgets:widgets.contact-editor.title',
|
|
4155
|
+
description: '@platform-layout-widgets:widgets.contact-editor.description',
|
|
4148
4156
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
4157
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_COMPOSITE,
|
|
4149
4158
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
4150
4159
|
icon: 'fa-light fa-address-book',
|
|
4151
4160
|
defaultFilterWidgetName: 'string-filter',
|
|
@@ -4195,9 +4204,10 @@ const AXPContactWidget = {
|
|
|
4195
4204
|
|
|
4196
4205
|
const AXPAddressWidget = {
|
|
4197
4206
|
name: 'address-editor',
|
|
4198
|
-
title: '
|
|
4199
|
-
description: '
|
|
4207
|
+
title: '@platform-layout-widgets:widgets.address-editor.title',
|
|
4208
|
+
description: '@platform-layout-widgets:widgets.address-editor.description',
|
|
4200
4209
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
4210
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_COMPOSITE,
|
|
4201
4211
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
4202
4212
|
icon: 'fa-light fa-location-dot',
|
|
4203
4213
|
defaultFilterWidgetName: 'string-filter',
|
|
@@ -5292,10 +5302,11 @@ var dateTimeBoxWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
5292
5302
|
|
|
5293
5303
|
const AXPDateTimeBoxWidget = {
|
|
5294
5304
|
name: 'date-time-editor',
|
|
5295
|
-
title: '
|
|
5296
|
-
description: '
|
|
5305
|
+
title: '@platform-layout-widgets:widgets.date-time-editor.title',
|
|
5306
|
+
description: '@platform-layout-widgets:widgets.date-time-editor.description',
|
|
5297
5307
|
icon: 'fa-light fa-calendar',
|
|
5298
5308
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
5309
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_DATETIME,
|
|
5299
5310
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
5300
5311
|
type: 'editor',
|
|
5301
5312
|
defaultFilterWidgetName: 'datetime-filter',
|
|
@@ -5544,11 +5555,12 @@ var editorJsWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
5544
5555
|
|
|
5545
5556
|
const AXPEditorJsWidget = {
|
|
5546
5557
|
name: 'editor-js-editor',
|
|
5547
|
-
title: '
|
|
5548
|
-
description: '
|
|
5558
|
+
title: '@platform-layout-widgets:widgets.editor-js-editor.title',
|
|
5559
|
+
description: '@platform-layout-widgets:widgets.editor-js-editor.description',
|
|
5549
5560
|
icon: 'fa-light fa-input-text',
|
|
5550
5561
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
5551
|
-
|
|
5562
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_RICH,
|
|
5563
|
+
groups: [AXPWidgetGroupEnum.BaseWidget],
|
|
5552
5564
|
defaultFilterWidgetName: 'string-filter',
|
|
5553
5565
|
type: 'editor',
|
|
5554
5566
|
properties: [
|
|
@@ -5577,20 +5589,20 @@ const AXPEditorJsWidget = {
|
|
|
5577
5589
|
class AXPLargeTextWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
5578
5590
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLargeTextWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
5579
5591
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPLargeTextWidgetColumnComponent, isStandalone: true, selector: "axp-large-text-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
|
|
5580
|
-
@let text = rawValue |
|
|
5592
|
+
@let text = rawValue | translate | async;
|
|
5581
5593
|
@if (text) {
|
|
5582
5594
|
<span class="ax-truncate"> {{ text }} </span>
|
|
5583
5595
|
} @else {
|
|
5584
5596
|
<span class="ax-text-muted">---</span>
|
|
5585
5597
|
}
|
|
5586
|
-
`, isInline: true, dependencies: [{ kind: "pipe", type:
|
|
5598
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5587
5599
|
}
|
|
5588
5600
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLargeTextWidgetColumnComponent, decorators: [{
|
|
5589
5601
|
type: Component,
|
|
5590
5602
|
args: [{
|
|
5591
5603
|
selector: 'axp-large-text-widget-column',
|
|
5592
5604
|
template: `
|
|
5593
|
-
@let text = rawValue |
|
|
5605
|
+
@let text = rawValue | translate | async;
|
|
5594
5606
|
@if (text) {
|
|
5595
5607
|
<span class="ax-truncate"> {{ text }} </span>
|
|
5596
5608
|
} @else {
|
|
@@ -5598,7 +5610,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
5598
5610
|
}
|
|
5599
5611
|
`,
|
|
5600
5612
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5601
|
-
imports: [
|
|
5613
|
+
imports: [AXTranslationModule, AsyncPipe],
|
|
5602
5614
|
inputs: ['rawValue', 'rowData'],
|
|
5603
5615
|
}]
|
|
5604
5616
|
}] });
|
|
@@ -5620,11 +5632,10 @@ class AXPLargeTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
5620
5632
|
this.rows = computed(() => this.options()['rows'], ...(ngDevMode ? [{ debugName: "rows" }] : /* istanbul ignore next */ []));
|
|
5621
5633
|
this.popupService = inject(AXPopupService);
|
|
5622
5634
|
this.translationService = inject(AXTranslationService);
|
|
5623
|
-
this.mlResolver = inject(AXPMultiLanguageStringResolverService);
|
|
5624
5635
|
this.currentLanguage = toSignal(this.translationService.langChanges$, {
|
|
5625
5636
|
initialValue: this.translationService.getActiveLang(),
|
|
5626
5637
|
});
|
|
5627
|
-
this.getCurrentText = computed(() => this.
|
|
5638
|
+
this.getCurrentText = computed(() => this.translationService.resolve(this.getValue(), this.currentLanguage()), ...(ngDevMode ? [{ debugName: "getCurrentText" }] : /* istanbul ignore next */ []));
|
|
5628
5639
|
}
|
|
5629
5640
|
ngOnInit() {
|
|
5630
5641
|
super.ngOnInit();
|
|
@@ -5658,7 +5669,7 @@ class AXPLargeTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
5658
5669
|
title: 'Select Language',
|
|
5659
5670
|
size: 'md',
|
|
5660
5671
|
data: {
|
|
5661
|
-
values: this.
|
|
5672
|
+
values: this.translationService.toLocaleMap(this.getValue(), this.currentLanguage()),
|
|
5662
5673
|
currentLanguage: this.currentLanguage(),
|
|
5663
5674
|
node: node,
|
|
5664
5675
|
mode: 'edit',
|
|
@@ -5776,50 +5787,34 @@ var largeTextWidgetEdit_component = /*#__PURE__*/Object.freeze({
|
|
|
5776
5787
|
class AXPLargeTextWidgetViewComponent extends AXPValueWidgetComponent {
|
|
5777
5788
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLargeTextWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
5778
5789
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPLargeTextWidgetViewComponent, isStandalone: true, selector: "axp-large-text-widget-view", usesInheritance: true, ngImport: i0, template: `
|
|
5779
|
-
|
|
5780
5790
|
<div class="ax-max-w-full ax-text-muted">
|
|
5781
|
-
|
|
5782
|
-
@let text = getValue() | axpResolveMultiLanguageString;
|
|
5791
|
+
@let text = getValue() | translate | async;
|
|
5783
5792
|
|
|
5784
5793
|
@if (text) {
|
|
5785
|
-
|
|
5786
5794
|
<span> {{ text }} </span>
|
|
5787
|
-
|
|
5788
5795
|
} @else {
|
|
5789
|
-
|
|
5790
5796
|
<span class="ax-text-muted">---</span>
|
|
5791
|
-
|
|
5792
5797
|
}
|
|
5793
|
-
|
|
5794
5798
|
</div>
|
|
5795
|
-
|
|
5796
|
-
`, isInline: true, dependencies: [{ kind: "pipe", type: AXPResolveMultiLanguageStringPipe, name: "axpResolveMultiLanguageString" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5799
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5797
5800
|
}
|
|
5798
5801
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPLargeTextWidgetViewComponent, decorators: [{
|
|
5799
5802
|
type: Component,
|
|
5800
5803
|
args: [{
|
|
5801
5804
|
selector: 'axp-large-text-widget-view',
|
|
5802
5805
|
template: `
|
|
5803
|
-
|
|
5804
5806
|
<div class="ax-max-w-full ax-text-muted">
|
|
5805
|
-
|
|
5806
|
-
@let text = getValue() | axpResolveMultiLanguageString;
|
|
5807
|
+
@let text = getValue() | translate | async;
|
|
5807
5808
|
|
|
5808
5809
|
@if (text) {
|
|
5809
|
-
|
|
5810
5810
|
<span> {{ text }} </span>
|
|
5811
|
-
|
|
5812
5811
|
} @else {
|
|
5813
|
-
|
|
5814
5812
|
<span class="ax-text-muted">---</span>
|
|
5815
|
-
|
|
5816
5813
|
}
|
|
5817
|
-
|
|
5818
5814
|
</div>
|
|
5819
|
-
|
|
5820
5815
|
`,
|
|
5821
5816
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5822
|
-
imports: [
|
|
5817
|
+
imports: [AXTranslationModule, AsyncPipe],
|
|
5823
5818
|
}]
|
|
5824
5819
|
}] });
|
|
5825
5820
|
|
|
@@ -5830,10 +5825,11 @@ var largeTextWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
5830
5825
|
|
|
5831
5826
|
const AXPLargeTextWidget = {
|
|
5832
5827
|
name: 'large-text-editor',
|
|
5833
|
-
title: '
|
|
5834
|
-
description: '
|
|
5828
|
+
title: '@platform-layout-widgets:widgets.large-text-editor.title',
|
|
5829
|
+
description: '@platform-layout-widgets:widgets.large-text-editor.description',
|
|
5835
5830
|
icon: 'fa-light fa-input-text',
|
|
5836
5831
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
5832
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS,
|
|
5837
5833
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
5838
5834
|
defaultFilterWidgetName: 'string-filter',
|
|
5839
5835
|
type: 'editor',
|
|
@@ -5970,10 +5966,11 @@ var listWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
|
5970
5966
|
|
|
5971
5967
|
const AXPDragDropListWidget = {
|
|
5972
5968
|
name: 'list-editor',
|
|
5973
|
-
title: '
|
|
5974
|
-
description: '
|
|
5969
|
+
title: '@platform-layout-widgets:widgets.list-editor.title',
|
|
5970
|
+
description: '@platform-layout-widgets:widgets.list-editor.description',
|
|
5975
5971
|
icon: 'fa-light fa-list',
|
|
5976
5972
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
5973
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,
|
|
5977
5974
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
5978
5975
|
properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],
|
|
5979
5976
|
type: 'editor',
|
|
@@ -6249,10 +6246,11 @@ var numberBoxWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
6249
6246
|
|
|
6250
6247
|
const AXPNumberBoxWidget = {
|
|
6251
6248
|
name: 'number-editor',
|
|
6252
|
-
title: '
|
|
6253
|
-
description: '
|
|
6249
|
+
title: '@platform-layout-widgets:widgets.number-editor.title',
|
|
6250
|
+
description: '@platform-layout-widgets:widgets.number-editor.description',
|
|
6254
6251
|
icon: 'fa-light fa-input-numeric',
|
|
6255
6252
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
6253
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_NUMERIC,
|
|
6256
6254
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
6257
6255
|
type: 'editor',
|
|
6258
6256
|
defaultFilterWidgetName: 'number-filter',
|
|
@@ -6498,10 +6496,11 @@ var passwordBoxWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
6498
6496
|
|
|
6499
6497
|
const AXPPasswordBoxWidget = {
|
|
6500
6498
|
name: 'password-editor',
|
|
6501
|
-
title: '
|
|
6502
|
-
description: '
|
|
6499
|
+
title: '@platform-layout-widgets:widgets.password-editor.title',
|
|
6500
|
+
description: '@platform-layout-widgets:widgets.password-editor.description',
|
|
6503
6501
|
icon: 'fa-light fa-lock',
|
|
6504
6502
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
6503
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS,
|
|
6505
6504
|
type: 'editor',
|
|
6506
6505
|
properties: [
|
|
6507
6506
|
AXP_NAME_PROPERTY,
|
|
@@ -6861,10 +6860,11 @@ var progressBarWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
6861
6860
|
|
|
6862
6861
|
const AXPProgressBarWidget = {
|
|
6863
6862
|
name: 'progress-bar-editor',
|
|
6864
|
-
title: '
|
|
6865
|
-
description: '
|
|
6863
|
+
title: '@platform-layout-widgets:widgets.progress-bar-editor.title',
|
|
6864
|
+
description: '@platform-layout-widgets:widgets.progress-bar-editor.description',
|
|
6866
6865
|
icon: 'fa-light fa-chart-line-up',
|
|
6867
6866
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
6867
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_NUMERIC,
|
|
6868
6868
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
6869
6869
|
type: 'editor',
|
|
6870
6870
|
properties: [
|
|
@@ -7078,10 +7078,11 @@ var ratePickerWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
7078
7078
|
|
|
7079
7079
|
const AXPRatePickerWidget = {
|
|
7080
7080
|
name: 'rate-picker-editor',
|
|
7081
|
-
title: '
|
|
7082
|
-
description: '
|
|
7081
|
+
title: '@platform-layout-widgets:widgets.rate-picker-editor.title',
|
|
7082
|
+
description: '@platform-layout-widgets:widgets.rate-picker-editor.description',
|
|
7083
7083
|
icon: 'fa-light fa-star',
|
|
7084
7084
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
7085
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_NUMERIC,
|
|
7085
7086
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
7086
7087
|
defaultFilterWidgetName: 'number-filter',
|
|
7087
7088
|
type: 'editor',
|
|
@@ -7123,30 +7124,97 @@ const AXPRatePickerWidget = {
|
|
|
7123
7124
|
},
|
|
7124
7125
|
};
|
|
7125
7126
|
|
|
7127
|
+
/** Stable context path for rich-text preview dialogs (layout builder + context store). */
|
|
7128
|
+
const AXP_RICH_TEXT_DIALOG_BODY_PATH = '__axpRichTextDialogBody';
|
|
7129
|
+
/**
|
|
7130
|
+
* Turns camelCase / kebab-case property segments into Title Case words for fallback titles.
|
|
7131
|
+
*/
|
|
7132
|
+
function humanizePropertyPath(path) {
|
|
7133
|
+
if (!path) {
|
|
7134
|
+
return '';
|
|
7135
|
+
}
|
|
7136
|
+
const spaced = path.replace(/([a-z])([A-Z])/g, '$1 $2').replace(/[-_]/g, ' ');
|
|
7137
|
+
return spaced.replace(/\b\w/g, (c) => c.toUpperCase());
|
|
7138
|
+
}
|
|
7139
|
+
/**
|
|
7140
|
+
* Resolves dialog title: translated keys (`@...`), humanized identifiers, or plain captions.
|
|
7141
|
+
*/
|
|
7142
|
+
async function resolveRichTextPreviewTitle(translation, caption, path) {
|
|
7143
|
+
const raw = caption?.trim() || path?.trim() || '';
|
|
7144
|
+
if (!raw) {
|
|
7145
|
+
return '';
|
|
7146
|
+
}
|
|
7147
|
+
if (raw.startsWith('@')) {
|
|
7148
|
+
return (await translation.translateAsync(raw)) ?? raw;
|
|
7149
|
+
}
|
|
7150
|
+
if (/^[a-z][a-zA-Z0-9]*$/.test(raw)) {
|
|
7151
|
+
return humanizePropertyPath(raw);
|
|
7152
|
+
}
|
|
7153
|
+
return raw;
|
|
7154
|
+
}
|
|
7155
|
+
/**
|
|
7156
|
+
* Approximate visible text length for rich HTML (decides inline vs truncated column cell).
|
|
7157
|
+
*/
|
|
7158
|
+
function richTextPlainTextLength(html) {
|
|
7159
|
+
if (!html?.trim()) {
|
|
7160
|
+
return 0;
|
|
7161
|
+
}
|
|
7162
|
+
try {
|
|
7163
|
+
if (typeof DOMParser !== 'undefined') {
|
|
7164
|
+
const doc = new DOMParser().parseFromString(html, 'text/html');
|
|
7165
|
+
const text = doc.body.textContent?.replace(/\s+/g, ' ').trim() ?? '';
|
|
7166
|
+
return text.length;
|
|
7167
|
+
}
|
|
7168
|
+
}
|
|
7169
|
+
catch {
|
|
7170
|
+
/* ignore */
|
|
7171
|
+
}
|
|
7172
|
+
return html.replace(/<[^>]*>/g, ' ').replace(/\s+/g, ' ').trim().length;
|
|
7173
|
+
}
|
|
7174
|
+
|
|
7126
7175
|
class AXPRichTextWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
7127
7176
|
constructor() {
|
|
7128
7177
|
super(...arguments);
|
|
7129
7178
|
this.platform = inject(AXPlatform);
|
|
7130
7179
|
this.layoutBuilder = inject(AXPLayoutBuilderService);
|
|
7131
|
-
this.mlResolver = inject(
|
|
7180
|
+
this.mlResolver = inject(AXTranslationService);
|
|
7181
|
+
}
|
|
7182
|
+
/** Plain-text length threshold: above this, cell is clamped and clickable for full preview. */
|
|
7183
|
+
previewMaxChars() {
|
|
7184
|
+
const v = this.options['previewMaxChars'];
|
|
7185
|
+
return typeof v === 'number' && v > 0 ? v : 100;
|
|
7186
|
+
}
|
|
7187
|
+
/** Whether resolved HTML is long enough to warrant truncation + popup. */
|
|
7188
|
+
isTruncatedPreview(resolvedHtml) {
|
|
7189
|
+
return richTextPlainTextLength(resolvedHtml) > this.previewMaxChars();
|
|
7190
|
+
}
|
|
7191
|
+
onExpandClick(event) {
|
|
7192
|
+
event.nativeEvent.preventDefault();
|
|
7193
|
+
event.nativeEvent.stopPropagation();
|
|
7194
|
+
void this.openPopup();
|
|
7132
7195
|
}
|
|
7133
7196
|
async openPopup() {
|
|
7134
|
-
const
|
|
7197
|
+
const lang = this.mlResolver.getActiveLang();
|
|
7198
|
+
const resolvedHtml = this.mlResolver.resolve(this.rawValue, lang) ?? '';
|
|
7199
|
+
if (!this.isTruncatedPreview(resolvedHtml)) {
|
|
7200
|
+
return;
|
|
7201
|
+
}
|
|
7202
|
+
const title = await resolveRichTextPreviewTitle(this.mlResolver, this.columnCaption, this.path);
|
|
7135
7203
|
const size = this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md';
|
|
7136
|
-
|
|
7204
|
+
await this.layoutBuilder
|
|
7137
7205
|
.create()
|
|
7138
7206
|
.dialog((dialog) => {
|
|
7139
7207
|
dialog
|
|
7140
|
-
.setTitle(
|
|
7208
|
+
.setTitle(title)
|
|
7141
7209
|
.setSize(size)
|
|
7210
|
+
.setContext({ [AXP_RICH_TEXT_DIALOG_BODY_PATH]: resolvedHtml })
|
|
7142
7211
|
.content((layoutBuilder) => {
|
|
7143
7212
|
layoutBuilder.flex((flex) => {
|
|
7144
|
-
flex.mode('view').
|
|
7145
|
-
|
|
7146
|
-
|
|
7147
|
-
|
|
7148
|
-
|
|
7149
|
-
});
|
|
7213
|
+
flex.mode('view').richText({
|
|
7214
|
+
path: AXP_RICH_TEXT_DIALOG_BODY_PATH,
|
|
7215
|
+
defaultValue: resolvedHtml,
|
|
7216
|
+
showFullContent: true,
|
|
7217
|
+
height: 400,
|
|
7150
7218
|
});
|
|
7151
7219
|
});
|
|
7152
7220
|
})
|
|
@@ -7155,42 +7223,71 @@ class AXPRichTextWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
7155
7223
|
});
|
|
7156
7224
|
})
|
|
7157
7225
|
.show();
|
|
7158
|
-
ref.close();
|
|
7159
7226
|
}
|
|
7160
7227
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPRichTextWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
7161
7228
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPRichTextWidgetColumnComponent, isStandalone: true, selector: "axp-rich-text-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
|
|
7162
|
-
@let html = rawValue |
|
|
7229
|
+
@let html = rawValue | translate | async;
|
|
7230
|
+
@let expandHint = '@platform-layout-widgets:widgets.rich-text-editor.column-expand-title' | translate | async;
|
|
7163
7231
|
@if (html) {
|
|
7164
|
-
|
|
7165
|
-
class="ax-
|
|
7166
|
-
|
|
7167
|
-
|
|
7168
|
-
|
|
7169
|
-
|
|
7232
|
+
@if (isTruncatedPreview(html)) {
|
|
7233
|
+
<div class="ax-flex ax-gap-1 ax-items-start ax-min-w-0 ax-max-w-full">
|
|
7234
|
+
<div
|
|
7235
|
+
class="ax-min-w-0 ax-flex-1 ax-line-clamp-3 ax-overflow-hidden ax-break-words"
|
|
7236
|
+
[innerHTML]="html | safe: 'html'"
|
|
7237
|
+
></div>
|
|
7238
|
+
<ax-button
|
|
7239
|
+
class="ax-xs ax-shrink-0"
|
|
7240
|
+
look="blank"
|
|
7241
|
+
[iconOnly]="true"
|
|
7242
|
+
[text]="expandHint ?? ''"
|
|
7243
|
+
[title]="expandHint ?? ''"
|
|
7244
|
+
(onClick)="onExpandClick($event)"
|
|
7245
|
+
>
|
|
7246
|
+
<ax-icon icon="far fa-expand"></ax-icon>
|
|
7247
|
+
</ax-button>
|
|
7248
|
+
</div>
|
|
7249
|
+
} @else {
|
|
7250
|
+
<div class="ax-min-w-0 ax-max-w-full ax-break-words" [innerHTML]="html | safe: 'html'"></div>
|
|
7251
|
+
}
|
|
7170
7252
|
} @else {
|
|
7171
7253
|
<span class="ax-text-muted">---</span>
|
|
7172
7254
|
}
|
|
7173
|
-
`, isInline: true, dependencies: [{ kind: "pipe", type: AXSafePipe, name: "safe" }, { kind: "pipe", type:
|
|
7255
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "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: i2$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: AXSafePipe, name: "safe" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7174
7256
|
}
|
|
7175
7257
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPRichTextWidgetColumnComponent, decorators: [{
|
|
7176
7258
|
type: Component,
|
|
7177
7259
|
args: [{
|
|
7178
7260
|
selector: 'axp-rich-text-widget-column',
|
|
7179
7261
|
template: `
|
|
7180
|
-
@let html = rawValue |
|
|
7262
|
+
@let html = rawValue | translate | async;
|
|
7263
|
+
@let expandHint = '@platform-layout-widgets:widgets.rich-text-editor.column-expand-title' | translate | async;
|
|
7181
7264
|
@if (html) {
|
|
7182
|
-
|
|
7183
|
-
class="ax-
|
|
7184
|
-
|
|
7185
|
-
|
|
7186
|
-
|
|
7187
|
-
|
|
7265
|
+
@if (isTruncatedPreview(html)) {
|
|
7266
|
+
<div class="ax-flex ax-gap-1 ax-items-start ax-min-w-0 ax-max-w-full">
|
|
7267
|
+
<div
|
|
7268
|
+
class="ax-min-w-0 ax-flex-1 ax-line-clamp-3 ax-overflow-hidden ax-break-words"
|
|
7269
|
+
[innerHTML]="html | safe: 'html'"
|
|
7270
|
+
></div>
|
|
7271
|
+
<ax-button
|
|
7272
|
+
class="ax-xs ax-shrink-0"
|
|
7273
|
+
look="blank"
|
|
7274
|
+
[iconOnly]="true"
|
|
7275
|
+
[text]="expandHint ?? ''"
|
|
7276
|
+
[title]="expandHint ?? ''"
|
|
7277
|
+
(onClick)="onExpandClick($event)"
|
|
7278
|
+
>
|
|
7279
|
+
<ax-icon icon="far fa-expand"></ax-icon>
|
|
7280
|
+
</ax-button>
|
|
7281
|
+
</div>
|
|
7282
|
+
} @else {
|
|
7283
|
+
<div class="ax-min-w-0 ax-max-w-full ax-break-words" [innerHTML]="html | safe: 'html'"></div>
|
|
7284
|
+
}
|
|
7188
7285
|
} @else {
|
|
7189
7286
|
<span class="ax-text-muted">---</span>
|
|
7190
7287
|
}
|
|
7191
7288
|
`,
|
|
7192
7289
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
7193
|
-
imports: [AXSafePipe,
|
|
7290
|
+
imports: [AXButtonModule, AXDecoratorModule, AXSafePipe, AXTranslationModule, AsyncPipe],
|
|
7194
7291
|
inputs: ['rawValue', 'rowData'],
|
|
7195
7292
|
}]
|
|
7196
7293
|
}] });
|
|
@@ -7211,11 +7308,10 @@ class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
7211
7308
|
this.maxLineCount = computed(() => this.options()['maxLineCount'] ?? this.options()['minLineCount'] ?? 3, ...(ngDevMode ? [{ debugName: "maxLineCount" }] : /* istanbul ignore next */ []));
|
|
7212
7309
|
this.popupService = inject(AXPopupService);
|
|
7213
7310
|
this.translationService = inject(AXTranslationService);
|
|
7214
|
-
this.mlResolver = inject(AXPMultiLanguageStringResolverService);
|
|
7215
7311
|
this.currentLanguage = toSignal(this.translationService.langChanges$, {
|
|
7216
7312
|
initialValue: this.translationService.getActiveLang(),
|
|
7217
7313
|
});
|
|
7218
|
-
this.getCurrentText = computed(() => this.
|
|
7314
|
+
this.getCurrentText = computed(() => this.translationService.resolve(this.getValue(), this.currentLanguage()), ...(ngDevMode ? [{ debugName: "getCurrentText" }] : /* istanbul ignore next */ []));
|
|
7219
7315
|
}
|
|
7220
7316
|
onWysiwygChanged(e) {
|
|
7221
7317
|
if (!e.isUserInteraction)
|
|
@@ -7250,7 +7346,7 @@ class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
7250
7346
|
title: 'Select Language',
|
|
7251
7347
|
size: 'lg',
|
|
7252
7348
|
data: {
|
|
7253
|
-
values: this.
|
|
7349
|
+
values: this.translationService.toLocaleMap(this.getValue(), this.currentLanguage()),
|
|
7254
7350
|
currentLanguage: this.currentLanguage(),
|
|
7255
7351
|
node: node,
|
|
7256
7352
|
mode: 'edit',
|
|
@@ -7367,29 +7463,40 @@ class AXPRichTextWidgetViewComponent extends AXPValueWidgetComponent {
|
|
|
7367
7463
|
super(...arguments);
|
|
7368
7464
|
this.platform = inject(AXPlatform);
|
|
7369
7465
|
this.layoutBuilder = inject(AXPLayoutBuilderService);
|
|
7370
|
-
this.mlResolver = inject(
|
|
7371
|
-
|
|
7466
|
+
this.mlResolver = inject(AXTranslationService);
|
|
7467
|
+
this.currentLanguage = toSignal(this.mlResolver.langChanges$, {
|
|
7468
|
+
initialValue: this.mlResolver.getActiveLang(),
|
|
7469
|
+
});
|
|
7470
|
+
/** Resolved HTML for inline snippet and preview dialog. */
|
|
7372
7471
|
this.displayHtml = computed(() => {
|
|
7373
7472
|
const v = this.getValue();
|
|
7374
|
-
return this.mlResolver.resolve(v);
|
|
7473
|
+
return this.mlResolver.resolve(v, this.currentLanguage());
|
|
7375
7474
|
}, ...(ngDevMode ? [{ debugName: "displayHtml" }] : /* istanbul ignore next */ []));
|
|
7475
|
+
/** Full-body preview (dialogs) vs truncated grid snippet. */
|
|
7476
|
+
this.showFullContent = computed(() => this.options()['showFullContent'] === true, ...(ngDevMode ? [{ debugName: "showFullContent" }] : /* istanbul ignore next */ []));
|
|
7477
|
+
this.previewMaxHeightPx = computed(() => {
|
|
7478
|
+
const h = this.options()['height'];
|
|
7479
|
+
return h != null && h > 0 ? h : 400;
|
|
7480
|
+
}, ...(ngDevMode ? [{ debugName: "previewMaxHeightPx" }] : /* istanbul ignore next */ []));
|
|
7376
7481
|
}
|
|
7377
7482
|
async openPopup() {
|
|
7483
|
+
const resolvedHtml = this.displayHtml();
|
|
7484
|
+
const title = await resolveRichTextPreviewTitle(this.mlResolver, undefined, this.path);
|
|
7378
7485
|
const size = this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md';
|
|
7379
|
-
|
|
7486
|
+
await this.layoutBuilder
|
|
7380
7487
|
.create()
|
|
7381
7488
|
.dialog((dialog) => {
|
|
7382
7489
|
dialog
|
|
7383
|
-
.setTitle(
|
|
7490
|
+
.setTitle(title)
|
|
7384
7491
|
.setSize(size)
|
|
7492
|
+
.setContext({ [AXP_RICH_TEXT_DIALOG_BODY_PATH]: resolvedHtml })
|
|
7385
7493
|
.content((layoutBuilder) => {
|
|
7386
7494
|
layoutBuilder.flex((flex) => {
|
|
7387
|
-
flex.mode('view').
|
|
7388
|
-
|
|
7389
|
-
|
|
7390
|
-
|
|
7391
|
-
|
|
7392
|
-
});
|
|
7495
|
+
flex.mode('view').richText({
|
|
7496
|
+
path: AXP_RICH_TEXT_DIALOG_BODY_PATH,
|
|
7497
|
+
defaultValue: resolvedHtml,
|
|
7498
|
+
showFullContent: true,
|
|
7499
|
+
height: 400,
|
|
7393
7500
|
});
|
|
7394
7501
|
});
|
|
7395
7502
|
})
|
|
@@ -7398,42 +7505,65 @@ class AXPRichTextWidgetViewComponent extends AXPValueWidgetComponent {
|
|
|
7398
7505
|
});
|
|
7399
7506
|
})
|
|
7400
7507
|
.show();
|
|
7401
|
-
ref.close();
|
|
7402
7508
|
}
|
|
7403
7509
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPRichTextWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
7404
7510
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPRichTextWidgetViewComponent, isStandalone: true, selector: "axp-rich-text-widget-view", usesInheritance: true, ngImport: i0, template: `
|
|
7405
|
-
@let html = getValue() |
|
|
7406
|
-
@if (
|
|
7407
|
-
|
|
7408
|
-
|
|
7409
|
-
|
|
7410
|
-
|
|
7411
|
-
|
|
7412
|
-
|
|
7511
|
+
@let html = getValue() | translate | async;
|
|
7512
|
+
@if (showFullContent()) {
|
|
7513
|
+
@if (html) {
|
|
7514
|
+
<div
|
|
7515
|
+
class="ax-overflow-auto ax-min-h-0 ax-rich-text-widget-full-preview"
|
|
7516
|
+
[style.max-height.px]="previewMaxHeightPx()"
|
|
7517
|
+
[innerHTML]="html | safe: 'html'"
|
|
7518
|
+
></div>
|
|
7519
|
+
} @else {
|
|
7520
|
+
<span class="ax-text-muted">---</span>
|
|
7521
|
+
}
|
|
7413
7522
|
} @else {
|
|
7414
|
-
|
|
7523
|
+
@if (html) {
|
|
7524
|
+
<span
|
|
7525
|
+
class="ax-truncate ax-underline ax-block ax-w-full ax-cursor-pointer ax-text-muted"
|
|
7526
|
+
(click)="openPopup()"
|
|
7527
|
+
[innerHTML]="html | safe: 'html'"
|
|
7528
|
+
>
|
|
7529
|
+
</span>
|
|
7530
|
+
} @else {
|
|
7531
|
+
<span class="ax-text-muted">---</span>
|
|
7532
|
+
}
|
|
7415
7533
|
}
|
|
7416
|
-
`, isInline: true, dependencies: [{ kind: "pipe", type: AXSafePipe, name: "safe" }, { kind: "pipe", type:
|
|
7534
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: AXSafePipe, name: "safe" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
7417
7535
|
}
|
|
7418
7536
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPRichTextWidgetViewComponent, decorators: [{
|
|
7419
7537
|
type: Component,
|
|
7420
7538
|
args: [{
|
|
7421
7539
|
selector: 'axp-rich-text-widget-view',
|
|
7422
7540
|
template: `
|
|
7423
|
-
@let html = getValue() |
|
|
7424
|
-
@if (
|
|
7425
|
-
|
|
7426
|
-
|
|
7427
|
-
|
|
7428
|
-
|
|
7429
|
-
|
|
7430
|
-
|
|
7541
|
+
@let html = getValue() | translate | async;
|
|
7542
|
+
@if (showFullContent()) {
|
|
7543
|
+
@if (html) {
|
|
7544
|
+
<div
|
|
7545
|
+
class="ax-overflow-auto ax-min-h-0 ax-rich-text-widget-full-preview"
|
|
7546
|
+
[style.max-height.px]="previewMaxHeightPx()"
|
|
7547
|
+
[innerHTML]="html | safe: 'html'"
|
|
7548
|
+
></div>
|
|
7549
|
+
} @else {
|
|
7550
|
+
<span class="ax-text-muted">---</span>
|
|
7551
|
+
}
|
|
7431
7552
|
} @else {
|
|
7432
|
-
|
|
7553
|
+
@if (html) {
|
|
7554
|
+
<span
|
|
7555
|
+
class="ax-truncate ax-underline ax-block ax-w-full ax-cursor-pointer ax-text-muted"
|
|
7556
|
+
(click)="openPopup()"
|
|
7557
|
+
[innerHTML]="html | safe: 'html'"
|
|
7558
|
+
>
|
|
7559
|
+
</span>
|
|
7560
|
+
} @else {
|
|
7561
|
+
<span class="ax-text-muted">---</span>
|
|
7562
|
+
}
|
|
7433
7563
|
}
|
|
7434
7564
|
`,
|
|
7435
7565
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
7436
|
-
imports: [AXSafePipe,
|
|
7566
|
+
imports: [AXSafePipe, AXTranslationModule, AsyncPipe],
|
|
7437
7567
|
}]
|
|
7438
7568
|
}] });
|
|
7439
7569
|
|
|
@@ -7444,10 +7574,11 @@ var richTextWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
7444
7574
|
|
|
7445
7575
|
const AXPRichTextWidget = {
|
|
7446
7576
|
name: 'rich-text-editor',
|
|
7447
|
-
title: '
|
|
7448
|
-
description: '
|
|
7577
|
+
title: '@platform-layout-widgets:widgets.rich-text-editor.title',
|
|
7578
|
+
description: '@platform-layout-widgets:widgets.rich-text-editor.description',
|
|
7449
7579
|
icon: 'fa-light fa-input-text',
|
|
7450
7580
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
7581
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_RICH,
|
|
7451
7582
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
7452
7583
|
defaultFilterWidgetName: 'string-filter',
|
|
7453
7584
|
type: 'editor',
|
|
@@ -7683,35 +7814,36 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7683
7814
|
this.contextService.patch(itemToExpose, true);
|
|
7684
7815
|
}
|
|
7685
7816
|
//#endregion
|
|
7686
|
-
|
|
7687
|
-
|
|
7688
|
-
|
|
7689
|
-
|
|
7690
|
-
|
|
7691
|
-
|
|
7692
|
-
|
|
7693
|
-
|
|
7694
|
-
|
|
7695
|
-
|
|
7696
|
-
|
|
7697
|
-
|
|
7817
|
+
}
|
|
7818
|
+
//#region ---- Set Value Based on Mode ----
|
|
7819
|
+
// Apply strategy even when the value comes from outside (isUserInteraction=false).
|
|
7820
|
+
if (this.filterMode()) {
|
|
7821
|
+
// Filter mode: set value with operation structure
|
|
7822
|
+
const newValue = e.value;
|
|
7823
|
+
const text = this.selectedItems().map((item) => get(item, this.textField()));
|
|
7824
|
+
this.setValue({
|
|
7825
|
+
value: newValue,
|
|
7826
|
+
displayText: text,
|
|
7827
|
+
operation: {
|
|
7828
|
+
type: this.multiple() ? 'in' : 'equal',
|
|
7829
|
+
},
|
|
7830
|
+
});
|
|
7831
|
+
}
|
|
7832
|
+
else {
|
|
7833
|
+
// Normal mode: set value directly
|
|
7834
|
+
if (this.widgetsConfigs.selectValueStrategy === 'valueField') {
|
|
7835
|
+
this.setValue(e.value);
|
|
7698
7836
|
}
|
|
7699
7837
|
else {
|
|
7700
|
-
|
|
7701
|
-
|
|
7702
|
-
this.setValue(e.value);
|
|
7838
|
+
if (this.multiple()) {
|
|
7839
|
+
this.setValue(this.selectedItems());
|
|
7703
7840
|
}
|
|
7704
7841
|
else {
|
|
7705
|
-
|
|
7706
|
-
this.setValue(this.selectedItems());
|
|
7707
|
-
}
|
|
7708
|
-
else {
|
|
7709
|
-
this.setValue(this.selectedItems()[0]);
|
|
7710
|
-
}
|
|
7842
|
+
this.setValue(this.selectedItems()[0]);
|
|
7711
7843
|
}
|
|
7712
7844
|
}
|
|
7713
|
-
//#endregion
|
|
7714
7845
|
}
|
|
7846
|
+
//#endregion
|
|
7715
7847
|
}
|
|
7716
7848
|
handleSearchValueChange(e) {
|
|
7717
7849
|
if (e.isUserInteraction) {
|
|
@@ -7925,10 +8057,11 @@ var selectBoxWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
7925
8057
|
|
|
7926
8058
|
const AXPSelectBoxWidget = {
|
|
7927
8059
|
name: 'select-editor',
|
|
7928
|
-
title: '
|
|
7929
|
-
description: '
|
|
8060
|
+
title: '@platform-layout-widgets:widgets.select-editor.title',
|
|
8061
|
+
description: '@platform-layout-widgets:widgets.select-editor.description',
|
|
7930
8062
|
icon: 'fa-light fa-list-dropdown',
|
|
7931
8063
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
8064
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,
|
|
7932
8065
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
7933
8066
|
defaultFilterWidgetName: 'select-filter',
|
|
7934
8067
|
type: 'editor',
|
|
@@ -8282,10 +8415,11 @@ var selectionListWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
8282
8415
|
|
|
8283
8416
|
const AXPSelectionListWidget = {
|
|
8284
8417
|
name: 'selection-list-editor',
|
|
8285
|
-
title: '
|
|
8286
|
-
description: '
|
|
8418
|
+
title: '@platform-layout-widgets:widgets.selection-list-editor.title',
|
|
8419
|
+
description: '@platform-layout-widgets:widgets.selection-list-editor.description',
|
|
8287
8420
|
icon: 'fa-light fa-list-radio',
|
|
8288
8421
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
8422
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,
|
|
8289
8423
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
8290
8424
|
defaultFilterWidgetName: 'select-filter',
|
|
8291
8425
|
properties: [
|
|
@@ -8775,10 +8909,11 @@ var tagEditorWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
8775
8909
|
|
|
8776
8910
|
const AXPTagEditorWidget = {
|
|
8777
8911
|
name: 'tag-editor',
|
|
8778
|
-
title: '
|
|
8912
|
+
title: '@platform-layout-widgets:widgets.tag-editor.title',
|
|
8779
8913
|
icon: 'fa-light fa-tags',
|
|
8780
|
-
description: '
|
|
8914
|
+
description: '@platform-layout-widgets:widgets.tag-editor.description',
|
|
8781
8915
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
8916
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,
|
|
8782
8917
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
8783
8918
|
type: 'editor',
|
|
8784
8919
|
defaultFilterWidgetName: 'string-filter',
|
|
@@ -9162,10 +9297,11 @@ var templateBoxWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
9162
9297
|
|
|
9163
9298
|
const AXPTemplateBoxWidget = {
|
|
9164
9299
|
name: 'template-box-editor',
|
|
9165
|
-
title: '
|
|
9300
|
+
title: '@platform-layout-widgets:widgets.template-box-editor.title',
|
|
9166
9301
|
icon: 'fa-light fa-file-alt',
|
|
9167
|
-
description: '
|
|
9302
|
+
description: '@platform-layout-widgets:widgets.template-box-editor.description',
|
|
9168
9303
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
9304
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS,
|
|
9169
9305
|
type: 'editor',
|
|
9170
9306
|
defaultFilterWidgetName: 'string-filter',
|
|
9171
9307
|
properties: [
|
|
@@ -9198,20 +9334,20 @@ const AXPTemplateBoxWidget = {
|
|
|
9198
9334
|
class AXPTextBoxWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
9199
9335
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTextBoxWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9200
9336
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPTextBoxWidgetColumnComponent, isStandalone: true, selector: "axp-text-box-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
|
|
9201
|
-
@let text = rawValue |
|
|
9337
|
+
@let text = rawValue | translate | async;
|
|
9202
9338
|
@if (text) {
|
|
9203
9339
|
{{ text }}
|
|
9204
9340
|
} @else {
|
|
9205
9341
|
<span class="ax-text-muted">---</span>
|
|
9206
9342
|
}
|
|
9207
|
-
`, isInline: true, dependencies: [{ kind: "pipe", type:
|
|
9343
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9208
9344
|
}
|
|
9209
9345
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTextBoxWidgetColumnComponent, decorators: [{
|
|
9210
9346
|
type: Component,
|
|
9211
9347
|
args: [{
|
|
9212
9348
|
selector: 'axp-text-box-widget-column',
|
|
9213
9349
|
template: `
|
|
9214
|
-
@let text = rawValue |
|
|
9350
|
+
@let text = rawValue | translate | async;
|
|
9215
9351
|
@if (text) {
|
|
9216
9352
|
{{ text }}
|
|
9217
9353
|
} @else {
|
|
@@ -9219,7 +9355,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
9219
9355
|
}
|
|
9220
9356
|
`,
|
|
9221
9357
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
9222
|
-
imports: [
|
|
9358
|
+
imports: [AXTranslationModule, AsyncPipe],
|
|
9223
9359
|
inputs: ['rawValue', 'rowData'],
|
|
9224
9360
|
}]
|
|
9225
9361
|
}] });
|
|
@@ -9234,7 +9370,6 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
9234
9370
|
super(...arguments);
|
|
9235
9371
|
this.popupService = inject(AXPopupService);
|
|
9236
9372
|
this.translationService = inject(AXTranslationService);
|
|
9237
|
-
this.mlResolver = inject(AXPMultiLanguageStringResolverService);
|
|
9238
9373
|
this.multiLanguage = computed(() => this.options()['multiLanguage'], ...(ngDevMode ? [{ debugName: "multiLanguage" }] : /* istanbul ignore next */ []));
|
|
9239
9374
|
this.hasClearButton = computed(() => this.options()['hasClearButton'], ...(ngDevMode ? [{ debugName: "hasClearButton" }] : /* istanbul ignore next */ []));
|
|
9240
9375
|
this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
@@ -9258,7 +9393,6 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
9258
9393
|
if (!e.isUserInteraction) {
|
|
9259
9394
|
return;
|
|
9260
9395
|
}
|
|
9261
|
-
;
|
|
9262
9396
|
if (this.multiLanguage()) {
|
|
9263
9397
|
const v = this.getValue();
|
|
9264
9398
|
const obj = v && typeof v === 'object' && !Array.isArray(v) ? { ...v } : {};
|
|
@@ -9270,7 +9404,7 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
9270
9404
|
}
|
|
9271
9405
|
}
|
|
9272
9406
|
getCurrentText() {
|
|
9273
|
-
return this.
|
|
9407
|
+
return this.translationService.resolve(this.getValue(), this.currentLanguage());
|
|
9274
9408
|
}
|
|
9275
9409
|
async openMultiLanguagePopup() {
|
|
9276
9410
|
const node = {
|
|
@@ -9285,7 +9419,7 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
9285
9419
|
title: 'Multi-language Text',
|
|
9286
9420
|
size: 'md',
|
|
9287
9421
|
data: {
|
|
9288
|
-
values: this.
|
|
9422
|
+
values: this.translationService.toLocaleMap(this.getValue(), this.currentLanguage()),
|
|
9289
9423
|
currentLanguage: this.currentLanguage(),
|
|
9290
9424
|
node: node,
|
|
9291
9425
|
mode: 'edit',
|
|
@@ -9401,33 +9535,35 @@ var textBoxWidgetEdit_component = /*#__PURE__*/Object.freeze({
|
|
|
9401
9535
|
|
|
9402
9536
|
class AXPTextBoxWidgetViewComponent extends AXPValueWidgetComponent {
|
|
9403
9537
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTextBoxWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
9404
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPTextBoxWidgetViewComponent, isStandalone: true, selector: "axp-text-box-widget-view", usesInheritance: true, ngImport: i0, template: `
|
|
9405
|
-
<div class="ax-text-muted">
|
|
9406
|
-
@let text = getValue() |
|
|
9407
|
-
|
|
9408
|
-
|
|
9409
|
-
|
|
9410
|
-
|
|
9411
|
-
|
|
9412
|
-
|
|
9413
|
-
|
|
9538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPTextBoxWidgetViewComponent, isStandalone: true, selector: "axp-text-box-widget-view", usesInheritance: true, ngImport: i0, template: `
|
|
9539
|
+
<div class="ax-text-muted">
|
|
9540
|
+
@let text = getValue() | translate | async;
|
|
9541
|
+
|
|
9542
|
+
@if (text) {
|
|
9543
|
+
<p>{{ text }}</p>
|
|
9544
|
+
} @else {
|
|
9545
|
+
<p class="ax-text-muted">---</p>
|
|
9546
|
+
}
|
|
9547
|
+
</div>
|
|
9548
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
9414
9549
|
}
|
|
9415
9550
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTextBoxWidgetViewComponent, decorators: [{
|
|
9416
9551
|
type: Component,
|
|
9417
9552
|
args: [{
|
|
9418
9553
|
selector: 'axp-text-box-widget-view',
|
|
9419
|
-
template: `
|
|
9420
|
-
<div class="ax-text-muted">
|
|
9421
|
-
@let text = getValue() |
|
|
9422
|
-
|
|
9423
|
-
|
|
9424
|
-
|
|
9425
|
-
|
|
9426
|
-
|
|
9427
|
-
|
|
9554
|
+
template: `
|
|
9555
|
+
<div class="ax-text-muted">
|
|
9556
|
+
@let text = getValue() | translate | async;
|
|
9557
|
+
|
|
9558
|
+
@if (text) {
|
|
9559
|
+
<p>{{ text }}</p>
|
|
9560
|
+
} @else {
|
|
9561
|
+
<p class="ax-text-muted">---</p>
|
|
9562
|
+
}
|
|
9563
|
+
</div>
|
|
9428
9564
|
`,
|
|
9429
9565
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
9430
|
-
imports: [
|
|
9566
|
+
imports: [AXTranslationModule, AsyncPipe],
|
|
9431
9567
|
}]
|
|
9432
9568
|
}] });
|
|
9433
9569
|
|
|
@@ -9438,10 +9574,11 @@ var textBoxWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
9438
9574
|
|
|
9439
9575
|
const AXPTextBoxWidget = {
|
|
9440
9576
|
name: 'text-editor',
|
|
9441
|
-
title: '
|
|
9577
|
+
title: '@platform-layout-widgets:widgets.text-editor.title',
|
|
9442
9578
|
icon: 'fa-light fa-input-text',
|
|
9443
|
-
description: '
|
|
9579
|
+
description: '@platform-layout-widgets:widgets.text-editor.description',
|
|
9444
9580
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
9581
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_TEXT_INPUTS,
|
|
9445
9582
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
9446
9583
|
type: 'editor',
|
|
9447
9584
|
defaultFilterWidgetName: 'string-filter',
|
|
@@ -9783,11 +9920,12 @@ var toggleWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
9783
9920
|
|
|
9784
9921
|
const AXPToggleWidget = {
|
|
9785
9922
|
name: 'toggle-editor',
|
|
9786
|
-
title: '
|
|
9787
|
-
description: '
|
|
9923
|
+
title: '@platform-layout-widgets:widgets.toggle-editor.title',
|
|
9924
|
+
description: '@platform-layout-widgets:widgets.toggle-editor.description',
|
|
9788
9925
|
icon: 'fa-light fa-toggle-on',
|
|
9789
9926
|
defaultFilterWidgetName: 'boolean-filter',
|
|
9790
9927
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
9928
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_CHOICE,
|
|
9791
9929
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
9792
9930
|
type: 'editor',
|
|
9793
9931
|
properties: [
|
|
@@ -10360,10 +10498,11 @@ var avatarWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
10360
10498
|
|
|
10361
10499
|
const AXPAvatarWidget = {
|
|
10362
10500
|
name: 'avatar',
|
|
10363
|
-
title: '
|
|
10364
|
-
description: '
|
|
10501
|
+
title: '@platform-layout-widgets:widgets.avatar.title',
|
|
10502
|
+
description: '@platform-layout-widgets:widgets.avatar.description',
|
|
10365
10503
|
icon: 'fa-light fa-image-user',
|
|
10366
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
10504
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
10505
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,
|
|
10367
10506
|
aiDescription: 'User or entity avatar from a reference id/type. Use when the answer should show who or what something belongs to, not a full photo gallery.',
|
|
10368
10507
|
groups: [AXPWidgetGroupEnum.EntityWidget],
|
|
10369
10508
|
type: 'editor',
|
|
@@ -10601,10 +10740,11 @@ var codeEditorWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
|
10601
10740
|
//#region ---- Widget Config ----
|
|
10602
10741
|
const AXPCodeEditorWidget = {
|
|
10603
10742
|
name: 'code-editor',
|
|
10604
|
-
title: '
|
|
10605
|
-
description: '
|
|
10743
|
+
title: '@platform-layout-widgets:widgets.code-editor.title',
|
|
10744
|
+
description: '@platform-layout-widgets:widgets.code-editor.description',
|
|
10606
10745
|
icon: 'fa-light fa-code',
|
|
10607
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
10746
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
10747
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_INPUT,
|
|
10608
10748
|
aiDescription: 'Syntax-highlighted code block. Use for snippets, scripts, or configs where line structure and language matter; bind source via data path or options.',
|
|
10609
10749
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
10610
10750
|
type: 'editor',
|
|
@@ -10914,10 +11054,11 @@ var dataListWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
10914
11054
|
|
|
10915
11055
|
const AXPDataListWidget = {
|
|
10916
11056
|
name: 'data-list',
|
|
10917
|
-
title: '
|
|
10918
|
-
description: '
|
|
11057
|
+
title: '@platform-layout-widgets:widgets.data-list.title',
|
|
11058
|
+
description: '@platform-layout-widgets:widgets.data-list.description',
|
|
10919
11059
|
icon: 'fa-light fa-table',
|
|
10920
|
-
categories: [AXP_WIDGETS_LAYOUT_CATEGORY
|
|
11060
|
+
categories: [AXP_WIDGETS_LAYOUT_CATEGORY],
|
|
11061
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_LISTS,
|
|
10921
11062
|
aiDescription: 'Use for tabular data: multiple rows with defined columns, paging, and optional row commands. Provide options.dataSource (rows) and options.columns.',
|
|
10922
11063
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
10923
11064
|
type: 'view',
|
|
@@ -11824,7 +11965,7 @@ class AXPFileUploaderWidgetService {
|
|
|
11824
11965
|
showEditDialogAfterSelect: false,
|
|
11825
11966
|
};
|
|
11826
11967
|
options = { ...defaultOptions, ...options };
|
|
11827
|
-
const component = await import('./acorex-platform-layout-widgets-file-list-popup.component-
|
|
11968
|
+
const component = await import('./acorex-platform-layout-widgets-file-list-popup.component-CDYAGBku.mjs').then((m) => m.AXPFileListPopupComponent);
|
|
11828
11969
|
const result = await this.popupService.open(component, {
|
|
11829
11970
|
title: await this.translate.translateAsync('@document-management:terms.common.file'),
|
|
11830
11971
|
data: {
|
|
@@ -11862,9 +12003,9 @@ class AXPFileUploaderWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
11862
12003
|
this.fileService = inject(AXPFileUploaderWidgetService);
|
|
11863
12004
|
}
|
|
11864
12005
|
async openFileList() {
|
|
11865
|
-
|
|
11866
|
-
this.fileService.showFileList({
|
|
11867
|
-
files
|
|
12006
|
+
const files = castArray(this.rawValue ?? []).filter((item) => item != null && typeof item === 'object' && typeof item.name === 'string');
|
|
12007
|
+
await this.fileService.showFileList({
|
|
12008
|
+
files,
|
|
11868
12009
|
readonly: true,
|
|
11869
12010
|
});
|
|
11870
12011
|
}
|
|
@@ -12322,10 +12463,11 @@ var fileUploaderWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
12322
12463
|
|
|
12323
12464
|
const AXPFileUploaderWidget = {
|
|
12324
12465
|
name: 'file-uploader',
|
|
12325
|
-
title: '
|
|
12326
|
-
description: '
|
|
12466
|
+
title: '@platform-layout-widgets:widgets.file-uploader.title',
|
|
12467
|
+
description: '@platform-layout-widgets:widgets.file-uploader.description',
|
|
12327
12468
|
icon: 'fa-light fa-files',
|
|
12328
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
12469
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
12470
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,
|
|
12329
12471
|
aiDescription: 'Use when the answer involves file attachments: list, upload, or download. Prefer when the user references documents or media beyond inline text.',
|
|
12330
12472
|
groups: ['form-element'],
|
|
12331
12473
|
type: 'editor',
|
|
@@ -13053,10 +13195,11 @@ var galleryWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
13053
13195
|
|
|
13054
13196
|
const AXPGalleryWidget = {
|
|
13055
13197
|
name: 'gallery',
|
|
13056
|
-
title: '
|
|
13057
|
-
description: '
|
|
13198
|
+
title: '@platform-layout-widgets:widgets.gallery.title',
|
|
13199
|
+
description: '@platform-layout-widgets:widgets.gallery.description',
|
|
13058
13200
|
icon: 'fa-light fa-images',
|
|
13059
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
13201
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
13202
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,
|
|
13060
13203
|
aiDescription: 'Image gallery with thumbnails and optional fullscreen. Use for multiple images or a carousel-like browse experience (not a single static image).',
|
|
13061
13204
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
13062
13205
|
properties: [
|
|
@@ -13534,13 +13677,13 @@ var imageMarkerWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
13534
13677
|
|
|
13535
13678
|
const AXPImageMarkerWidget = {
|
|
13536
13679
|
name: 'image-marker',
|
|
13537
|
-
title: '
|
|
13538
|
-
description: '
|
|
13680
|
+
title: '@platform-layout-widgets:widgets.image-marker.title',
|
|
13681
|
+
description: '@platform-layout-widgets:widgets.image-marker.description',
|
|
13539
13682
|
icon: 'fa-light fa-map-marker-alt',
|
|
13540
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
13683
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
13684
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,
|
|
13541
13685
|
aiDescription: 'Use when highlighting points or regions on a base image (annotations, hotspots). Provide base image plus marker coordinates or overlays in options.',
|
|
13542
13686
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
13543
|
-
aiCatalog: 'include',
|
|
13544
13687
|
type: 'editor',
|
|
13545
13688
|
properties: [
|
|
13546
13689
|
AXP_NAME_PROPERTY,
|
|
@@ -13704,12 +13847,13 @@ var jsonViewerWidgetEdit_component = /*#__PURE__*/Object.freeze({
|
|
|
13704
13847
|
//#region ---- Widget Config ----
|
|
13705
13848
|
const AXPJsonViewerWidget = {
|
|
13706
13849
|
name: 'json-viewer',
|
|
13707
|
-
title: '
|
|
13708
|
-
description: '
|
|
13850
|
+
title: '@platform-layout-widgets:widgets.json-viewer.title',
|
|
13851
|
+
description: '@platform-layout-widgets:widgets.json-viewer.description',
|
|
13709
13852
|
icon: 'fa-light fa-code',
|
|
13710
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
13853
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
13854
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_DATA,
|
|
13711
13855
|
aiDescription: 'Shows JSON as an expandable tree. Prefer when the payload is structured data (objects/arrays) and hierarchy matters more than plain text.',
|
|
13712
|
-
groups: [AXPWidgetGroupEnum.
|
|
13856
|
+
groups: [AXPWidgetGroupEnum.BaseWidget],
|
|
13713
13857
|
type: 'editor',
|
|
13714
13858
|
properties: [
|
|
13715
13859
|
AXP_NAME_PROPERTY,
|
|
@@ -14172,10 +14316,11 @@ var qrcodeWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
14172
14316
|
|
|
14173
14317
|
const AXPQrcodeWidget = {
|
|
14174
14318
|
name: 'qrcode',
|
|
14175
|
-
title: '
|
|
14176
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
14319
|
+
title: '@platform-layout-widgets:widgets.qrcode.title',
|
|
14320
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
14321
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,
|
|
14177
14322
|
icon: 'fa-light fa-qrcode',
|
|
14178
|
-
description: '
|
|
14323
|
+
description: '@platform-layout-widgets:widgets.qrcode.description',
|
|
14179
14324
|
aiDescription: 'Renders a scannable QR code from text or URL (options.content). Use when the user should open a link or payload on a phone.',
|
|
14180
14325
|
type: 'view',
|
|
14181
14326
|
properties: [
|
|
@@ -14465,9 +14610,10 @@ var schedulerPickerWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
14465
14610
|
|
|
14466
14611
|
const AXPSchedulerPickerWidget = {
|
|
14467
14612
|
name: 'scheduler-picker',
|
|
14468
|
-
title: '
|
|
14613
|
+
title: '@platform-layout-widgets:widgets.scheduler-picker.title',
|
|
14469
14614
|
icon: 'fa-light fa-calendar-clock',
|
|
14470
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
14615
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
14616
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_INPUT,
|
|
14471
14617
|
aiDescription: 'Schedule or calendar picker. Use when the user selects dates, times, or recurring slots; bind value via data path.',
|
|
14472
14618
|
type: 'editor',
|
|
14473
14619
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
@@ -14804,10 +14950,11 @@ var signaturePadWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
14804
14950
|
|
|
14805
14951
|
const AXPSignatureWidget = {
|
|
14806
14952
|
name: 'signature',
|
|
14807
|
-
title: '
|
|
14808
|
-
description: '
|
|
14953
|
+
title: '@platform-layout-widgets:widgets.signature.title',
|
|
14954
|
+
description: '@platform-layout-widgets:widgets.signature.description',
|
|
14809
14955
|
icon: 'fa-light fa-file-signature',
|
|
14810
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
14956
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
14957
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_INPUT,
|
|
14811
14958
|
aiDescription: 'Digital signature capture or display. Use when consent, approval, or handwritten input is required instead of typed text.',
|
|
14812
14959
|
type: 'editor',
|
|
14813
14960
|
properties: [
|
|
@@ -14891,6 +15038,8 @@ class AXPStatusChipComponent {
|
|
|
14891
15038
|
this.isPopoverOpen = signal(false, ...(ngDevMode ? [{ debugName: "isPopoverOpen" }] : /* istanbul ignore next */ []));
|
|
14892
15039
|
this.isUpdating = signal(false, ...(ngDevMode ? [{ debugName: "isUpdating" }] : /* istanbul ignore next */ []));
|
|
14893
15040
|
this.providerSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "providerSignal" }] : /* istanbul ignore next */ []));
|
|
15041
|
+
/** Native tooltip from translated `AXPStatusDefinition.description` (i18n key). */
|
|
15042
|
+
this.chipTooltip = signal(null, ...(ngDevMode ? [{ debugName: "chipTooltip" }] : /* istanbul ignore next */ []));
|
|
14894
15043
|
//#endregion
|
|
14895
15044
|
//#region ---- Computed Properties ----
|
|
14896
15045
|
this.statuses = computed(() => this.providerSignal()?.statuses ?? [], ...(ngDevMode ? [{ debugName: "statuses" }] : /* istanbul ignore next */ []));
|
|
@@ -14930,15 +15079,9 @@ class AXPStatusChipComponent {
|
|
|
14930
15079
|
if (!Array.isArray(statuses) || statuses.length === 0) {
|
|
14931
15080
|
return [];
|
|
14932
15081
|
}
|
|
14933
|
-
//
|
|
15082
|
+
// No declared transitions: executeTransition() rejects every path — do not offer fake targets
|
|
14934
15083
|
if (!Array.isArray(transitions) || transitions.length === 0) {
|
|
14935
|
-
return
|
|
14936
|
-
.filter((s) => s.name !== currentStatus.name)
|
|
14937
|
-
.map((s) => ({
|
|
14938
|
-
from: currentStatus.name,
|
|
14939
|
-
to: s.name,
|
|
14940
|
-
toStatus: s,
|
|
14941
|
-
}));
|
|
15084
|
+
return [];
|
|
14942
15085
|
}
|
|
14943
15086
|
// Filter transitions that start from current status
|
|
14944
15087
|
const availableTransitions = transitions.filter((t) => t.from === currentStatus.name);
|
|
@@ -14974,6 +15117,18 @@ class AXPStatusChipComponent {
|
|
|
14974
15117
|
this.providerSignal.set(provider);
|
|
14975
15118
|
});
|
|
14976
15119
|
}, ...(ngDevMode ? [{ debugName: "loadProvider" }] : /* istanbul ignore next */ []));
|
|
15120
|
+
this.syncDescriptionTooltip = effect(() => {
|
|
15121
|
+
const def = this.currentStatus();
|
|
15122
|
+
const descKey = def?.description;
|
|
15123
|
+
if (!descKey) {
|
|
15124
|
+
untracked(() => this.chipTooltip.set(null));
|
|
15125
|
+
return;
|
|
15126
|
+
}
|
|
15127
|
+
void this.translationService
|
|
15128
|
+
.translateAsync(descKey)
|
|
15129
|
+
.then((t) => untracked(() => this.chipTooltip.set(t || null)))
|
|
15130
|
+
.catch(() => untracked(() => this.chipTooltip.set(null)));
|
|
15131
|
+
}, ...(ngDevMode ? [{ debugName: "syncDescriptionTooltip" }] : /* istanbul ignore next */ []));
|
|
14977
15132
|
}
|
|
14978
15133
|
//#endregion
|
|
14979
15134
|
//#region ---- Public Methods ----
|
|
@@ -15072,8 +15227,12 @@ class AXPStatusChipComponent {
|
|
|
15072
15227
|
[class.ax-cursor-pointer]="hasTransitions"
|
|
15073
15228
|
[class.ax-cursor-default]="!hasTransitions"
|
|
15074
15229
|
(click)="hasTransitions && openPopover()"
|
|
15230
|
+
[attr.title]="chipTooltip() ?? null"
|
|
15075
15231
|
#chipElement
|
|
15076
15232
|
>
|
|
15233
|
+
@if (currentStatusDef.icon) {
|
|
15234
|
+
<i [class]="currentStatusDef.icon + ' ax-text-[0.85em] ax-opacity-90'"></i>
|
|
15235
|
+
}
|
|
15077
15236
|
<span>{{ currentStatusDef.title | translate | async }}</span>
|
|
15078
15237
|
@if (hasTransitions) {
|
|
15079
15238
|
<i class="fa-light fa-chevron-down ax-text-xs"></i>
|
|
@@ -15140,8 +15299,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
15140
15299
|
[class.ax-cursor-pointer]="hasTransitions"
|
|
15141
15300
|
[class.ax-cursor-default]="!hasTransitions"
|
|
15142
15301
|
(click)="hasTransitions && openPopover()"
|
|
15302
|
+
[attr.title]="chipTooltip() ?? null"
|
|
15143
15303
|
#chipElement
|
|
15144
15304
|
>
|
|
15305
|
+
@if (currentStatusDef.icon) {
|
|
15306
|
+
<i [class]="currentStatusDef.icon + ' ax-text-[0.85em] ax-opacity-90'"></i>
|
|
15307
|
+
}
|
|
15145
15308
|
<span>{{ currentStatusDef.title | translate | async }}</span>
|
|
15146
15309
|
@if (hasTransitions) {
|
|
15147
15310
|
<i class="fa-light fa-chevron-down ax-text-xs"></i>
|
|
@@ -15230,8 +15393,22 @@ class AXPStatusWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
15230
15393
|
this.definitionKey = computed(() => {
|
|
15231
15394
|
return this.options['definitionKey'] ?? null;
|
|
15232
15395
|
}, ...(ngDevMode ? [{ debugName: "definitionKey" }] : /* istanbul ignore next */ []));
|
|
15396
|
+
/**
|
|
15397
|
+
* When true, the grid cell is display-only (no transition popover). Default false preserves existing grids.
|
|
15398
|
+
*/
|
|
15399
|
+
this.columnReadonly = computed(() => !!this.options['readonly'], ...(ngDevMode ? [{ debugName: "columnReadonly" }] : /* istanbul ignore next */ []));
|
|
15233
15400
|
this.entityData = computed(() => {
|
|
15234
|
-
|
|
15401
|
+
const row = this.rowDataSignal();
|
|
15402
|
+
if (!row || typeof row !== 'object') {
|
|
15403
|
+
return null;
|
|
15404
|
+
}
|
|
15405
|
+
const entityKey = this.options['entity'];
|
|
15406
|
+
const fieldName = this.options['fieldName'];
|
|
15407
|
+
return {
|
|
15408
|
+
...row,
|
|
15409
|
+
...(entityKey ? { entity: entityKey, entityName: entityKey } : {}),
|
|
15410
|
+
...(fieldName ? { statusField: fieldName } : {}),
|
|
15411
|
+
};
|
|
15235
15412
|
}, ...(ngDevMode ? [{ debugName: "entityData" }] : /* istanbul ignore next */ []));
|
|
15236
15413
|
this.resolvedStatuses = computed(() => {
|
|
15237
15414
|
return this.providerSignal()?.statuses ?? [];
|
|
@@ -15271,15 +15448,9 @@ class AXPStatusWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
15271
15448
|
if (!Array.isArray(statuses) || statuses.length === 0) {
|
|
15272
15449
|
return [];
|
|
15273
15450
|
}
|
|
15274
|
-
//
|
|
15451
|
+
// No declared transitions: executeTransition() rejects every path — do not offer fake targets
|
|
15275
15452
|
if (!Array.isArray(transitions) || transitions.length === 0) {
|
|
15276
|
-
return
|
|
15277
|
-
.filter((s) => s.name !== currentStatus.name)
|
|
15278
|
-
.map((status) => ({
|
|
15279
|
-
from: currentStatus.name,
|
|
15280
|
-
to: status.name,
|
|
15281
|
-
toStatus: status,
|
|
15282
|
-
}));
|
|
15453
|
+
return [];
|
|
15283
15454
|
}
|
|
15284
15455
|
// Filter transitions that start from current status
|
|
15285
15456
|
const availableTransitions = transitions.filter((t) => t.from === currentStatus.name);
|
|
@@ -15330,7 +15501,7 @@ class AXPStatusWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
15330
15501
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.9", type: AXPStatusWidgetColumnComponent, isStandalone: true, selector: "axp-status-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData", rawValueInput: ["rawValue", "rawValueInput"], rowDataInput: ["rowData", "rowDataInput"] }, viewQueries: [{ propertyName: "statusChip", first: true, predicate: AXPStatusChipComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
15331
15502
|
<axp-status-chip
|
|
15332
15503
|
[status]="statusItem()"
|
|
15333
|
-
[readonly]="
|
|
15504
|
+
[readonly]="columnReadonly()"
|
|
15334
15505
|
[availableTransitions]="getAvailableTransitions()"
|
|
15335
15506
|
[definitionKey]="definitionKey()"
|
|
15336
15507
|
[entityData]="entityData()"
|
|
@@ -15348,7 +15519,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
15348
15519
|
template: `
|
|
15349
15520
|
<axp-status-chip
|
|
15350
15521
|
[status]="statusItem()"
|
|
15351
|
-
[readonly]="
|
|
15522
|
+
[readonly]="columnReadonly()"
|
|
15352
15523
|
[availableTransitions]="getAvailableTransitions()"
|
|
15353
15524
|
[definitionKey]="definitionKey()"
|
|
15354
15525
|
[entityData]="entityData()"
|
|
@@ -15385,6 +15556,8 @@ class AXPStatusWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15385
15556
|
//#region ---- Properties ----
|
|
15386
15557
|
this.statusService = inject(AXPStatusDefinitionProviderService);
|
|
15387
15558
|
this.definitionKey = computed(() => this.options()['definitionKey'] ?? null, ...(ngDevMode ? [{ debugName: "definitionKey" }] : /* istanbul ignore next */ []));
|
|
15559
|
+
/** When true, the chip is display-only (no transition popover). Set via interface options. */
|
|
15560
|
+
this.isReadonly = computed(() => !!this.options()['readonly'] || !!this.options()['disabled'], ...(ngDevMode ? [{ debugName: "isReadonly" }] : /* istanbul ignore next */ []));
|
|
15388
15561
|
this.providerSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "providerSignal" }] : /* istanbul ignore next */ []));
|
|
15389
15562
|
this.statuses = computed(() => this.providerSignal()?.statuses ?? [], ...(ngDevMode ? [{ debugName: "statuses" }] : /* istanbul ignore next */ []));
|
|
15390
15563
|
this.transitions = computed(() => this.providerSignal()?.transitions ?? [], ...(ngDevMode ? [{ debugName: "transitions" }] : /* istanbul ignore next */ []));
|
|
@@ -15472,15 +15645,9 @@ class AXPStatusWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15472
15645
|
if (!Array.isArray(statuses) || statuses.length === 0) {
|
|
15473
15646
|
return [];
|
|
15474
15647
|
}
|
|
15475
|
-
//
|
|
15648
|
+
// No declared transitions: executeTransition() rejects every path — do not offer fake targets
|
|
15476
15649
|
if (!Array.isArray(transitions) || transitions.length === 0) {
|
|
15477
|
-
return
|
|
15478
|
-
.filter((s) => s.name !== currentStatus.name)
|
|
15479
|
-
.map((status) => ({
|
|
15480
|
-
from: currentStatus.name,
|
|
15481
|
-
to: status.name,
|
|
15482
|
-
toStatus: status,
|
|
15483
|
-
}));
|
|
15650
|
+
return [];
|
|
15484
15651
|
}
|
|
15485
15652
|
// Filter transitions that start from current status
|
|
15486
15653
|
const availableTransitions = transitions.filter((t) => t.from === currentStatus.name);
|
|
@@ -15520,19 +15687,41 @@ class AXPStatusWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15520
15687
|
// Could show a toast notification here if needed
|
|
15521
15688
|
}
|
|
15522
15689
|
/**
|
|
15523
|
-
*
|
|
15690
|
+
* Build context for default `Entity:UpdateStatus` (entity key, record id, status field path).
|
|
15524
15691
|
*/
|
|
15525
15692
|
getEntityData() {
|
|
15526
|
-
|
|
15527
|
-
|
|
15528
|
-
const
|
|
15529
|
-
|
|
15693
|
+
const opts = this.options();
|
|
15694
|
+
const entityKey = (opts['entityName'] ?? opts['entity']);
|
|
15695
|
+
const statusField = (opts['statusField'] ?? opts['fieldName'] ?? this.path);
|
|
15696
|
+
const parentPath = this.parentPath();
|
|
15697
|
+
const idPathCandidates = [
|
|
15698
|
+
parentPath ? `${parentPath}.id` : null,
|
|
15699
|
+
'id',
|
|
15700
|
+
parentPath ? `${parentPath}._id` : null,
|
|
15701
|
+
'_id',
|
|
15702
|
+
].filter((p) => !!p);
|
|
15703
|
+
let id;
|
|
15704
|
+
for (const p of idPathCandidates) {
|
|
15705
|
+
id = this.contextService.getValue(p);
|
|
15706
|
+
if (id != null && String(id).length > 0) {
|
|
15707
|
+
break;
|
|
15708
|
+
}
|
|
15709
|
+
}
|
|
15710
|
+
if (!entityKey || id == null || String(id).length === 0) {
|
|
15711
|
+
return null;
|
|
15712
|
+
}
|
|
15713
|
+
return {
|
|
15714
|
+
entity: entityKey,
|
|
15715
|
+
entityName: entityKey,
|
|
15716
|
+
statusField: statusField ?? 'statusId',
|
|
15717
|
+
id: String(id),
|
|
15718
|
+
};
|
|
15530
15719
|
}
|
|
15531
15720
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPStatusWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
15532
15721
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.9", type: AXPStatusWidgetEditComponent, isStandalone: true, selector: "axp-status-widget-edit", viewQueries: [{ propertyName: "statusChip", first: true, predicate: AXPStatusChipComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
15533
15722
|
<axp-status-chip
|
|
15534
15723
|
[status]="currentStatus()"
|
|
15535
|
-
[readonly]="
|
|
15724
|
+
[readonly]="isReadonly()"
|
|
15536
15725
|
[availableTransitions]="getAvailableTransitions()"
|
|
15537
15726
|
[definitionKey]="definitionKey()"
|
|
15538
15727
|
[entityData]="getEntityData()"
|
|
@@ -15550,7 +15739,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
15550
15739
|
template: `
|
|
15551
15740
|
<axp-status-chip
|
|
15552
15741
|
[status]="currentStatus()"
|
|
15553
|
-
[readonly]="
|
|
15742
|
+
[readonly]="isReadonly()"
|
|
15554
15743
|
[availableTransitions]="getAvailableTransitions()"
|
|
15555
15744
|
[definitionKey]="definitionKey()"
|
|
15556
15745
|
[entityData]="getEntityData()"
|
|
@@ -15580,11 +15769,12 @@ class AXPStatusWidgetViewComponent extends AXPDataListWidgetComponent {
|
|
|
15580
15769
|
//#region ---- Properties ----
|
|
15581
15770
|
this.statusService = inject(AXPStatusDefinitionProviderService);
|
|
15582
15771
|
this.definitionKey = computed(() => this.options()['definitionKey'] ?? null, ...(ngDevMode ? [{ debugName: "definitionKey" }] : /* istanbul ignore next */ []));
|
|
15772
|
+
/** When true, the chip is display-only (no transition popover). Set via interface options. */
|
|
15773
|
+
this.isReadonly = computed(() => !!this.options()['readonly'] || !!this.options()['disabled'], ...(ngDevMode ? [{ debugName: "isReadonly" }] : /* istanbul ignore next */ []));
|
|
15583
15774
|
this.providerSignal = signal(undefined, ...(ngDevMode ? [{ debugName: "providerSignal" }] : /* istanbul ignore next */ []));
|
|
15584
15775
|
this.resolvedStatuses = computed(() => this.providerSignal()?.statuses ?? [], ...(ngDevMode ? [{ debugName: "resolvedStatuses" }] : /* istanbul ignore next */ []));
|
|
15585
15776
|
this.resolvedTransitions = computed(() => this.providerSignal()?.transitions ?? [], ...(ngDevMode ? [{ debugName: "resolvedTransitions" }] : /* istanbul ignore next */ []));
|
|
15586
15777
|
//#endregion
|
|
15587
|
-
//#endregion
|
|
15588
15778
|
//#region ---- Effects ----
|
|
15589
15779
|
this.loadProvider = effect(async () => {
|
|
15590
15780
|
const key = this.definitionKey();
|
|
@@ -15641,15 +15831,9 @@ class AXPStatusWidgetViewComponent extends AXPDataListWidgetComponent {
|
|
|
15641
15831
|
if (!Array.isArray(statuses) || statuses.length === 0) {
|
|
15642
15832
|
return [];
|
|
15643
15833
|
}
|
|
15644
|
-
//
|
|
15834
|
+
// No declared transitions: executeTransition() rejects every path — do not offer fake targets
|
|
15645
15835
|
if (!Array.isArray(transitions) || transitions.length === 0) {
|
|
15646
|
-
return
|
|
15647
|
-
.filter((s) => s.name !== currentStatus.name)
|
|
15648
|
-
.map((status) => ({
|
|
15649
|
-
from: currentStatus.name,
|
|
15650
|
-
to: status.name,
|
|
15651
|
-
toStatus: status,
|
|
15652
|
-
}));
|
|
15836
|
+
return [];
|
|
15653
15837
|
}
|
|
15654
15838
|
// Filter transitions that start from current status
|
|
15655
15839
|
const availableTransitions = transitions.filter((t) => t.from === currentStatus.name);
|
|
@@ -15702,7 +15886,7 @@ class AXPStatusWidgetViewComponent extends AXPDataListWidgetComponent {
|
|
|
15702
15886
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.9", type: AXPStatusWidgetViewComponent, isStandalone: true, selector: "axp-status-widget-view", viewQueries: [{ propertyName: "statusChip", first: true, predicate: AXPStatusChipComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
15703
15887
|
<axp-status-chip
|
|
15704
15888
|
[status]="currentStatus()"
|
|
15705
|
-
[readonly]="
|
|
15889
|
+
[readonly]="isReadonly()"
|
|
15706
15890
|
[availableTransitions]="getAvailableTransitions()"
|
|
15707
15891
|
[definitionKey]="definitionKey()"
|
|
15708
15892
|
[entityData]="getEntityData()"
|
|
@@ -15720,7 +15904,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
15720
15904
|
template: `
|
|
15721
15905
|
<axp-status-chip
|
|
15722
15906
|
[status]="currentStatus()"
|
|
15723
|
-
[readonly]="
|
|
15907
|
+
[readonly]="isReadonly()"
|
|
15724
15908
|
[availableTransitions]="getAvailableTransitions()"
|
|
15725
15909
|
[definitionKey]="definitionKey()"
|
|
15726
15910
|
[entityData]="getEntityData()"
|
|
@@ -15742,10 +15926,11 @@ var statusWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
15742
15926
|
|
|
15743
15927
|
const AXPStatusWidget = {
|
|
15744
15928
|
name: 'status-widget',
|
|
15745
|
-
title: '
|
|
15746
|
-
description: '
|
|
15929
|
+
title: '@platform-layout-widgets:widgets.status-widget.title',
|
|
15930
|
+
description: '@platform-layout-widgets:widgets.status-widget.description',
|
|
15747
15931
|
icon: 'fa-light fa-circle-check',
|
|
15748
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
15932
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
15933
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_DATA,
|
|
15749
15934
|
aiDescription: 'Visual status chip or badge for entity/state. Use when the answer should highlight a single workflow or lifecycle state (e.g. open, approved).',
|
|
15750
15935
|
groups: [AXPWidgetGroupEnum.EntityWidget],
|
|
15751
15936
|
defaultFilterWidgetName: 'status-filter',
|
|
@@ -15778,10 +15963,11 @@ const AXPStatusWidget = {
|
|
|
15778
15963
|
//#region ---- Widget Config ----
|
|
15779
15964
|
const AXPStopwatchWidget = {
|
|
15780
15965
|
name: 'stopwatch',
|
|
15781
|
-
title: '
|
|
15782
|
-
description: '
|
|
15966
|
+
title: '@platform-layout-widgets:widgets.stopwatch.title',
|
|
15967
|
+
description: '@platform-layout-widgets:widgets.stopwatch.description',
|
|
15783
15968
|
icon: 'fa-light fa-stopwatch',
|
|
15784
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
15969
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
15970
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_TOOLS,
|
|
15785
15971
|
aiDescription: 'Live stopwatch or countdown. Use when the answer involves elapsed time, deadlines, or timed steps; configure mode (count-up vs count-down) in options.',
|
|
15786
15972
|
groups: [AXPWidgetGroupEnum.UtilityWidget],
|
|
15787
15973
|
type: 'view',
|
|
@@ -15962,10 +16148,11 @@ var stopwatchWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
15962
16148
|
|
|
15963
16149
|
const AXPWidgetFieldConfiguratorWidget = {
|
|
15964
16150
|
name: 'widget-field-configurator',
|
|
15965
|
-
title: '
|
|
15966
|
-
icon: 'fa-
|
|
15967
|
-
description: '
|
|
16151
|
+
title: '@platform-layout-widgets:widgets.widget-field-configurator.title',
|
|
16152
|
+
icon: 'fa-light fa-puzzle-piece',
|
|
16153
|
+
description: '@platform-layout-widgets:widgets.widget-field-configurator.description',
|
|
15968
16154
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
16155
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_CONFIG,
|
|
15969
16156
|
groups: [AXPWidgetGroupEnum.UtilityWidget],
|
|
15970
16157
|
type: 'editor',
|
|
15971
16158
|
defaultFilterWidgetName: 'string-filter',
|
|
@@ -16182,12 +16369,12 @@ class AXPWidgetFieldConfiguratorWidgetColumnComponent extends AXPColumnWidgetCom
|
|
|
16182
16369
|
@if (widget()) {
|
|
16183
16370
|
<i [class]="widget()?.icon" class="fa-fw"></i>
|
|
16184
16371
|
<span [title]="widget()?.title" class="ax-text-xs ax-font-medium">
|
|
16185
|
-
{{ widget()?.title }}
|
|
16372
|
+
{{ widget()?.title | translate | async }}
|
|
16186
16373
|
</span>
|
|
16187
16374
|
} @else {
|
|
16188
16375
|
<span class="ax-text-muted">---</span>
|
|
16189
16376
|
}
|
|
16190
|
-
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16377
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
16191
16378
|
}
|
|
16192
16379
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPWidgetFieldConfiguratorWidgetColumnComponent, decorators: [{
|
|
16193
16380
|
type: Component,
|
|
@@ -16197,14 +16384,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
16197
16384
|
@if (widget()) {
|
|
16198
16385
|
<i [class]="widget()?.icon" class="fa-fw"></i>
|
|
16199
16386
|
<span [title]="widget()?.title" class="ax-text-xs ax-font-medium">
|
|
16200
|
-
{{ widget()?.title }}
|
|
16387
|
+
{{ widget()?.title | translate | async }}
|
|
16201
16388
|
</span>
|
|
16202
16389
|
} @else {
|
|
16203
16390
|
<span class="ax-text-muted">---</span>
|
|
16204
16391
|
}
|
|
16205
16392
|
`,
|
|
16206
16393
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
16207
|
-
imports: [],
|
|
16394
|
+
imports: [AXTranslationModule, AsyncPipe],
|
|
16208
16395
|
inputs: ['rawValue', 'rowData'],
|
|
16209
16396
|
}]
|
|
16210
16397
|
}] });
|
|
@@ -16216,10 +16403,11 @@ var widgetFieldConfiguratorWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
|
16216
16403
|
|
|
16217
16404
|
const AXPItemConfiguratorWidget = {
|
|
16218
16405
|
name: 'item-configurator',
|
|
16219
|
-
title: '
|
|
16220
|
-
icon: 'fa-
|
|
16221
|
-
description: '
|
|
16406
|
+
title: '@platform-layout-widgets:widgets.item-configurator.title',
|
|
16407
|
+
icon: 'fa-light fa-sliders',
|
|
16408
|
+
description: '@platform-layout-widgets:widgets.item-configurator.description',
|
|
16222
16409
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
16410
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_CONFIG,
|
|
16223
16411
|
groups: [AXPWidgetGroupEnum.UtilityWidget],
|
|
16224
16412
|
type: 'editor',
|
|
16225
16413
|
defaultFilterWidgetName: 'string-filter',
|
|
@@ -17215,9 +17403,10 @@ var advancedGridWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
17215
17403
|
|
|
17216
17404
|
const AXPAdvancedGridWidget = {
|
|
17217
17405
|
name: 'advanced-grid-layout',
|
|
17218
|
-
title: '
|
|
17406
|
+
title: '@platform-layout-widgets:widgets.advanced-grid-layout.title',
|
|
17219
17407
|
type: 'container',
|
|
17220
17408
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
17409
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,
|
|
17221
17410
|
icon: 'fa-light fa-grid-2',
|
|
17222
17411
|
properties: [
|
|
17223
17412
|
AXP_NAME_PROPERTY,
|
|
@@ -17455,9 +17644,10 @@ var advancedGridItemWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
17455
17644
|
|
|
17456
17645
|
const AXPAdvancedGridItemWidget = {
|
|
17457
17646
|
name: 'advanced-grid-item-layout',
|
|
17458
|
-
title: '
|
|
17647
|
+
title: '@platform-layout-widgets:widgets.advanced-grid-item-layout.title',
|
|
17459
17648
|
type: 'container',
|
|
17460
17649
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
17650
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,
|
|
17461
17651
|
icon: 'fa-light fa-objects-column',
|
|
17462
17652
|
properties: [
|
|
17463
17653
|
AXP_NAME_PROPERTY,
|
|
@@ -17600,10 +17790,11 @@ var blockWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
17600
17790
|
const AXPBlockWidget = {
|
|
17601
17791
|
name: 'block-layout',
|
|
17602
17792
|
type: 'container',
|
|
17603
|
-
title: '
|
|
17604
|
-
description: '
|
|
17793
|
+
title: '@platform-layout-widgets:widgets.block-layout.title',
|
|
17794
|
+
description: '@platform-layout-widgets:widgets.block-layout.description',
|
|
17605
17795
|
icon: 'fa-light fa-block',
|
|
17606
17796
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
17797
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,
|
|
17607
17798
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
17608
17799
|
options: {
|
|
17609
17800
|
canInsert: true,
|
|
@@ -17661,7 +17852,7 @@ class AXPFieldsetWidgetDesignerComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
17661
17852
|
@if (icon()) {
|
|
17662
17853
|
<i [class]="icon()" style="margin-inline-end: 0.5em;"></i>
|
|
17663
17854
|
}
|
|
17664
|
-
{{ title() |
|
|
17855
|
+
{{ title() | translate | async }}
|
|
17665
17856
|
</legend>
|
|
17666
17857
|
}
|
|
17667
17858
|
<div class="axp-fieldset-content">
|
|
@@ -17680,7 +17871,7 @@ class AXPFieldsetWidgetDesignerComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
17680
17871
|
}
|
|
17681
17872
|
</div>
|
|
17682
17873
|
</fieldset>
|
|
17683
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: AXPWidgetDesignerRendererDirective, selector: "[axp-widget-designer-renderer]", inputs: ["parentNode", "parentElement", "parentComponent", "index", "locked", "mode", "node"] }, { kind: "component", type: AXPDesignerAddWidgetMiniButtonComponent, selector: "axp-designer-add-widget-mini-button", outputs: ["onClick"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }
|
|
17874
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: AXPWidgetDesignerRendererDirective, selector: "[axp-widget-designer-renderer]", inputs: ["parentNode", "parentElement", "parentComponent", "index", "locked", "mode", "node"] }, { kind: "component", type: AXPDesignerAddWidgetMiniButtonComponent, selector: "axp-designer-add-widget-mini-button", outputs: ["onClick"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
17684
17875
|
}
|
|
17685
17876
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFieldsetWidgetDesignerComponent, decorators: [{
|
|
17686
17877
|
type: Component,
|
|
@@ -17693,7 +17884,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
17693
17884
|
@if (icon()) {
|
|
17694
17885
|
<i [class]="icon()" style="margin-inline-end: 0.5em;"></i>
|
|
17695
17886
|
}
|
|
17696
|
-
{{ title() |
|
|
17887
|
+
{{ title() | translate | async }}
|
|
17697
17888
|
</legend>
|
|
17698
17889
|
}
|
|
17699
17890
|
<div class="axp-fieldset-content">
|
|
@@ -17720,7 +17911,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
17720
17911
|
AXPWidgetCoreModule,
|
|
17721
17912
|
AXPWidgetDesignerRendererDirective,
|
|
17722
17913
|
AXPDesignerAddWidgetMiniButtonComponent,
|
|
17723
|
-
AXPResolveMultiLanguageStringPipe,
|
|
17724
17914
|
],
|
|
17725
17915
|
providers: [
|
|
17726
17916
|
{
|
|
@@ -17762,11 +17952,11 @@ class AXPFieldsetWidgetViewComponent extends AXPLayoutBaseWidgetComponent {
|
|
|
17762
17952
|
}
|
|
17763
17953
|
}
|
|
17764
17954
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFieldsetWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
17765
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPFieldsetWidgetViewComponent, isStandalone: true, selector: "axp-fieldset-widget-view", usesInheritance: true, ngImport: i0, template: "@switch (look()) {\n<!-- fieldset Style -->\n@case ('fieldset') {\n<fieldset class=\"fieldset\">\n
|
|
17955
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPFieldsetWidgetViewComponent, isStandalone: true, selector: "axp-fieldset-widget-view", usesInheritance: true, ngImport: i0, template: "@switch (look()) {\n <!-- fieldset Style -->\n @case ('fieldset') {\n <fieldset class=\"fieldset\">\n @if (shouldShowTitle()) {\n <legend class=\"legend\" (click)=\"toggleCollapse()\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n {{ title() | translate | async }}\n </legend>\n }\n @if (!collapsible() || isOpen()) {\n <div class=\"content\" [style.grid-template-columns]=\"'repeat(' + cols() + ', 1fr)'\">\n @if (description()) {\n <p class=\"description\" [style.grid-column]=\"'1 / -1'\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </fieldset>\n }\n <!-- Card Style -->\n @case ('card') {\n <div class=\"card\">\n @if (shouldShowTitle()) {\n <div class=\"legend\" (click)=\"toggleCollapse()\">\n <div class=\"caption\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-md\"></i>\n }\n <div class=\"text-content\">\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n @if (description()) {\n <p class=\"description\">{{ description() | translate | async }}</p>\n }\n </div>\n </div>\n <div class=\"icon\" [ngClass]=\"{ 'ax-transform ax-rotate-180': isOpen() }\">\n @if (collapsible()) {\n <i class=\"fa-solid fa-chevron-down\"></i>\n }\n </div>\n </div>\n }\n\n @if (!collapsible() || isOpen()) {\n <div class=\"content\" [style.grid-template-columns]=\"'repeat(' + cols() + ', 1fr)'\">\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </div>\n }\n <!-- Group Line style -->\n @case ('group') {\n <fieldset class=\"group\">\n @if (shouldShowTitle()) {\n <legend class=\"legend\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n <div class=\"title-line\"></div>\n </legend>\n }\n @if (!collapsible() || isOpen()) {\n <div class=\"content\" [style.grid-template-columns]=\"'repeat(' + cols() + ', 1fr)'\">\n @if (description()) {\n <p class=\"description\" [style.grid-column]=\"'1 / -1'\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </fieldset>\n }\n <!-- Container Style -->\n @case ('container') {\n <div class=\"container\">\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n <!-- End of switch-->\n}\n", styles: [":host{display:block;height:100%;width:100%}:host>.fieldset{border-radius:.375rem;border-width:1px;padding:.5rem 1.5rem 1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}:host>.fieldset>.legend{display:inline-flex;min-width:0px;cursor:pointer;align-items:center;gap:.5rem;padding-left:.5rem;padding-right:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600}:host>.fieldset>.legend .title{margin:0;flex-shrink:0;white-space:nowrap;padding:0}:host>.fieldset>.content{display:grid;gap:1rem}:host>.fieldset>.content .description{padding-top:.25rem;padding-bottom:.75rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host>.group{padding:0}:host>.group>.legend{margin-bottom:1rem;display:flex;width:100%;flex-direction:column;gap:.25rem;padding:0}:host>.group>.legend .title{margin:0;width:fit-content;white-space:nowrap;padding:0;font-size:1rem;line-height:1.5rem;font-weight:500}:host>.group>.legend .title-line{margin-top:.25rem;height:1px;width:100%;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}:host>.group>.content{display:grid;gap:1rem}:host>.group>.content .description{padding-top:.25rem;padding-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host>.card{height:100%;overflow:hidden;border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}:host>.card>.legend{display:flex;width:100%;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;padding:.625rem 1.25rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}:host>.card>.legend .caption{display:flex;flex-direction:row;align-items:center;gap:.5rem}:host>.card>.legend .caption .title{width:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.625}:host>.card>.legend .caption .description{width:100%;font-size:.75rem;line-height:1rem;opacity:.65}:host>.card>.legend .caption .icon{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host>.card>.content{display:grid;gap:1rem;border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem;border-top-width:1px;padding:1.25rem}:host>.container{display:grid;gap:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i1$3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
17766
17956
|
}
|
|
17767
17957
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFieldsetWidgetViewComponent, decorators: [{
|
|
17768
17958
|
type: Component,
|
|
17769
|
-
args: [{ selector: 'axp-fieldset-widget-view', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXPWidgetCoreModule, AXTranslationModule
|
|
17959
|
+
args: [{ selector: 'axp-fieldset-widget-view', changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, AXPWidgetCoreModule, AXTranslationModule], standalone: true, template: "@switch (look()) {\n <!-- fieldset Style -->\n @case ('fieldset') {\n <fieldset class=\"fieldset\">\n @if (shouldShowTitle()) {\n <legend class=\"legend\" (click)=\"toggleCollapse()\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n {{ title() | translate | async }}\n </legend>\n }\n @if (!collapsible() || isOpen()) {\n <div class=\"content\" [style.grid-template-columns]=\"'repeat(' + cols() + ', 1fr)'\">\n @if (description()) {\n <p class=\"description\" [style.grid-column]=\"'1 / -1'\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </fieldset>\n }\n <!-- Card Style -->\n @case ('card') {\n <div class=\"card\">\n @if (shouldShowTitle()) {\n <div class=\"legend\" (click)=\"toggleCollapse()\">\n <div class=\"caption\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-md\"></i>\n }\n <div class=\"text-content\">\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n @if (description()) {\n <p class=\"description\">{{ description() | translate | async }}</p>\n }\n </div>\n </div>\n <div class=\"icon\" [ngClass]=\"{ 'ax-transform ax-rotate-180': isOpen() }\">\n @if (collapsible()) {\n <i class=\"fa-solid fa-chevron-down\"></i>\n }\n </div>\n </div>\n }\n\n @if (!collapsible() || isOpen()) {\n <div class=\"content\" [style.grid-template-columns]=\"'repeat(' + cols() + ', 1fr)'\">\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </div>\n }\n <!-- Group Line style -->\n @case ('group') {\n <fieldset class=\"group\">\n @if (shouldShowTitle()) {\n <legend class=\"legend\">\n @if (icon()) {\n <i [class]=\"icon()\" class=\"ax-text-sm\"></i>\n }\n <h3 class=\"title\">{{ title() | translate | async }}</h3>\n <div class=\"title-line\"></div>\n </legend>\n }\n @if (!collapsible() || isOpen()) {\n <div class=\"content\" [style.grid-template-columns]=\"'repeat(' + cols() + ', 1fr)'\">\n @if (description()) {\n <p class=\"description\" [style.grid-column]=\"'1 / -1'\">\n {{ description() | translate | async }}\n </p>\n }\n <!-- render widgets -->\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n </fieldset>\n }\n <!-- Container Style -->\n @case ('container') {\n <div class=\"container\">\n @for (node of children(); track $index) {\n <ng-container\n axp-widget-renderer\n [node]=\"node\"\n [index]=\"index\"\n [parentNode]=\"this\"\n [mode]=\"node.mode ?? this.mode\"\n ></ng-container>\n }\n </div>\n }\n <!-- End of switch-->\n}\n", styles: [":host{display:block;height:100%;width:100%}:host>.fieldset{border-radius:.375rem;border-width:1px;padding:.5rem 1.5rem 1.5rem;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}:host>.fieldset>.legend{display:inline-flex;min-width:0px;cursor:pointer;align-items:center;gap:.5rem;padding-left:.5rem;padding-right:.5rem;font-size:1rem;line-height:1.5rem;font-weight:600}:host>.fieldset>.legend .title{margin:0;flex-shrink:0;white-space:nowrap;padding:0}:host>.fieldset>.content{display:grid;gap:1rem}:host>.fieldset>.content .description{padding-top:.25rem;padding-bottom:.75rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host>.group{padding:0}:host>.group>.legend{margin-bottom:1rem;display:flex;width:100%;flex-direction:column;gap:.25rem;padding:0}:host>.group>.legend .title{margin:0;width:fit-content;white-space:nowrap;padding:0;font-size:1rem;line-height:1.5rem;font-weight:500}:host>.group>.legend .title-line{margin-top:.25rem;height:1px;width:100%;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(229 229 229 / var(--tw-border-opacity, 1))}:host>.group>.content{display:grid;gap:1rem}:host>.group>.content .description{padding-top:.25rem;padding-bottom:1.5rem;font-size:.875rem;line-height:1.25rem;opacity:.65}:host>.card{height:100%;overflow:hidden;border-radius:.375rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}:host>.card>.legend{display:flex;width:100%;cursor:pointer;flex-direction:row;align-items:center;justify-content:space-between;padding:.625rem 1.25rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}:host>.card>.legend .caption{display:flex;flex-direction:row;align-items:center;gap:.5rem}:host>.card>.legend .caption .title{width:fit-content;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.625}:host>.card>.legend .caption .description{width:100%;font-size:.75rem;line-height:1rem;opacity:.65}:host>.card>.legend .caption .icon{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:host>.card>.content{display:grid;gap:1rem;border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem;border-top-width:1px;padding:1.25rem}:host>.container{display:grid;gap:1rem}\n"] }]
|
|
17770
17960
|
}] });
|
|
17771
17961
|
|
|
17772
17962
|
var fieldsetWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
@@ -17777,10 +17967,11 @@ var fieldsetWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
17777
17967
|
const AXPFieldsetWidget = {
|
|
17778
17968
|
name: 'fieldset-layout',
|
|
17779
17969
|
type: 'container',
|
|
17780
|
-
title: '
|
|
17781
|
-
description: '
|
|
17970
|
+
title: '@platform-layout-widgets:widgets.fieldset-layout.title',
|
|
17971
|
+
description: '@platform-layout-widgets:widgets.fieldset-layout.description',
|
|
17782
17972
|
icon: 'fa-light fa-object-group',
|
|
17783
17973
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
17974
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,
|
|
17784
17975
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
17785
17976
|
properties: [AXP_NAME_PROPERTY, AXP_TITLE_PROPERTY, AXP_ICON_PROPERTY, AXP_LAYOUT_SHOW_HEADER_PROPERTY, AXP_LAYOUT_COLUMNS_PROPERTY],
|
|
17786
17977
|
components: {
|
|
@@ -17881,7 +18072,7 @@ class AXPFlexWidgetViewComponent extends AXPFlexBaseLayoutWidgetComponent {
|
|
|
17881
18072
|
[node]="node"
|
|
17882
18073
|
[index]="index"
|
|
17883
18074
|
[parentNode]="this"
|
|
17884
|
-
[mode]="this.mode"
|
|
18075
|
+
[mode]="node.mode ?? this.mode"
|
|
17885
18076
|
></ng-container>
|
|
17886
18077
|
}
|
|
17887
18078
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i1$3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
@@ -17897,7 +18088,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
17897
18088
|
[node]="node"
|
|
17898
18089
|
[index]="index"
|
|
17899
18090
|
[parentNode]="this"
|
|
17900
|
-
[mode]="this.mode"
|
|
18091
|
+
[mode]="node.mode ?? this.mode"
|
|
17901
18092
|
></ng-container>
|
|
17902
18093
|
}
|
|
17903
18094
|
`,
|
|
@@ -17920,10 +18111,11 @@ var flexWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
17920
18111
|
const AXPFlexWidget = {
|
|
17921
18112
|
name: 'flex-layout',
|
|
17922
18113
|
type: 'container',
|
|
17923
|
-
title: '
|
|
17924
|
-
description: '
|
|
18114
|
+
title: '@platform-layout-widgets:widgets.flex-layout.title',
|
|
18115
|
+
description: '@platform-layout-widgets:widgets.flex-layout.description',
|
|
17925
18116
|
icon: 'fa-light fa-box-taped',
|
|
17926
18117
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
18118
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,
|
|
17927
18119
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
17928
18120
|
options: {
|
|
17929
18121
|
canInsert: true,
|
|
@@ -18067,11 +18259,12 @@ var flexItemWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
18067
18259
|
|
|
18068
18260
|
const AXPFlexItemWidget = {
|
|
18069
18261
|
name: 'flex-item-layout',
|
|
18070
|
-
title: '
|
|
18262
|
+
title: '@platform-layout-widgets:widgets.flex-item-layout.title',
|
|
18071
18263
|
type: 'container',
|
|
18072
18264
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
18265
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,
|
|
18073
18266
|
// groups: [AXPWidgetGroupEnum.FormElement],
|
|
18074
|
-
description: '
|
|
18267
|
+
description: '@platform-layout-widgets:widgets.flex-item-layout.description',
|
|
18075
18268
|
icon: 'fa-light fa-rectangle-vertical-history',
|
|
18076
18269
|
properties: [
|
|
18077
18270
|
AXP_NAME_PROPERTY,
|
|
@@ -18163,10 +18356,11 @@ var pageWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
18163
18356
|
|
|
18164
18357
|
const AXPPageWidget = {
|
|
18165
18358
|
name: 'page-layout',
|
|
18166
|
-
title: '
|
|
18167
|
-
description: '
|
|
18359
|
+
title: '@platform-layout-widgets:widgets.page-layout.title',
|
|
18360
|
+
description: '@platform-layout-widgets:widgets.page-layout.description',
|
|
18168
18361
|
icon: 'fa-light fa-page',
|
|
18169
18362
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
18363
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_SHELL,
|
|
18170
18364
|
type: 'container',
|
|
18171
18365
|
properties: [
|
|
18172
18366
|
AXP_NAME_PROPERTY,
|
|
@@ -18490,10 +18684,11 @@ var repeaterWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
18490
18684
|
|
|
18491
18685
|
const AXPRepeaterWidget = {
|
|
18492
18686
|
name: 'repeater-layout',
|
|
18493
|
-
title: '
|
|
18494
|
-
description: '
|
|
18687
|
+
title: '@platform-layout-widgets:widgets.repeater-layout.title',
|
|
18688
|
+
description: '@platform-layout-widgets:widgets.repeater-layout.description',
|
|
18495
18689
|
icon: 'fa-light fa-table-list',
|
|
18496
18690
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
18691
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,
|
|
18497
18692
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
18498
18693
|
type: 'container',
|
|
18499
18694
|
properties: [
|
|
@@ -18886,9 +19081,10 @@ var stepWizardWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
18886
19081
|
|
|
18887
19082
|
const AXPStepWizardWidget = {
|
|
18888
19083
|
name: 'step-wizard',
|
|
18889
|
-
title: '
|
|
18890
|
-
icon: 'fa-
|
|
18891
|
-
categories: [AXP_WIDGETS_LAYOUT_CATEGORY
|
|
19084
|
+
title: '@platform-layout-widgets:widgets.step-wizard.title',
|
|
19085
|
+
icon: 'fa-light fa-image-user',
|
|
19086
|
+
categories: [AXP_WIDGETS_LAYOUT_CATEGORY],
|
|
19087
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,
|
|
18892
19088
|
aiDescription: 'Use for multi-step flows (wizard). Present when the user should follow ordered steps; children typically hold step content.',
|
|
18893
19089
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
18894
19090
|
type: 'view',
|
|
@@ -19865,10 +20061,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
19865
20061
|
const AXPTableWidget = {
|
|
19866
20062
|
name: 'table-layout',
|
|
19867
20063
|
type: 'container',
|
|
19868
|
-
title: '
|
|
19869
|
-
description: '
|
|
20064
|
+
title: '@platform-layout-widgets:widgets.table-layout.title',
|
|
20065
|
+
description: '@platform-layout-widgets:widgets.table-layout.description',
|
|
19870
20066
|
icon: 'fa-light fa-table',
|
|
19871
20067
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
20068
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,
|
|
19872
20069
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
19873
20070
|
options: {
|
|
19874
20071
|
canInsert: true,
|
|
@@ -20283,10 +20480,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
20283
20480
|
|
|
20284
20481
|
const AXPTableItemWidget = {
|
|
20285
20482
|
name: 'table-item-layout',
|
|
20286
|
-
title: '
|
|
20483
|
+
title: '@platform-layout-widgets:widgets.table-item-layout.title',
|
|
20287
20484
|
type: 'container',
|
|
20288
20485
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
20289
|
-
|
|
20486
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,
|
|
20487
|
+
description: '@platform-layout-widgets:widgets.table-item-layout.description',
|
|
20290
20488
|
icon: 'fa-light fa-table-cells',
|
|
20291
20489
|
properties: [
|
|
20292
20490
|
AXP_NAME_PROPERTY,
|
|
@@ -23962,12 +24160,13 @@ var cronJobWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
23962
24160
|
|
|
23963
24161
|
const AXPCronJobWidget = {
|
|
23964
24162
|
name: 'cron-job',
|
|
23965
|
-
title: '
|
|
24163
|
+
title: '@platform-layout-widgets:widgets.cron-job.title',
|
|
23966
24164
|
icon: 'fa-light fa-alarm-clock',
|
|
23967
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
24165
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
24166
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_INPUT,
|
|
23968
24167
|
aiDescription: 'Cron expression editor and viewer. Use when the answer involves recurring schedules or job timing (not a one-off date picker).',
|
|
23969
24168
|
type: 'editor',
|
|
23970
|
-
groups: [AXPWidgetGroupEnum.
|
|
24169
|
+
groups: [AXPWidgetGroupEnum.BaseWidget],
|
|
23971
24170
|
properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],
|
|
23972
24171
|
components: {
|
|
23973
24172
|
view: {
|
|
@@ -24111,10 +24310,11 @@ var metaDataWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
24111
24310
|
|
|
24112
24311
|
const AXPMetaDataWidget = {
|
|
24113
24312
|
name: 'meta-data-editor',
|
|
24114
|
-
title: '
|
|
24313
|
+
title: '@platform-layout-widgets:widgets.meta-data-editor.title',
|
|
24115
24314
|
icon: 'fa-light fa-input-text',
|
|
24116
|
-
description: 'meta
|
|
24315
|
+
description: '@platform-layout-widgets:widgets.meta-data-editor.description',
|
|
24117
24316
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
24317
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_COMPOSITE,
|
|
24118
24318
|
type: 'editor',
|
|
24119
24319
|
defaultFilterWidgetName: 'string-filter',
|
|
24120
24320
|
properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY],
|
|
@@ -24422,10 +24622,11 @@ var numberUnitBoxWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
24422
24622
|
|
|
24423
24623
|
const AXPNumberUnitBoxWidget = {
|
|
24424
24624
|
name: 'number-unit-editor',
|
|
24425
|
-
title: '
|
|
24426
|
-
description: '
|
|
24625
|
+
title: '@platform-layout-widgets:widgets.number-unit-editor.title',
|
|
24626
|
+
description: '@platform-layout-widgets:widgets.number-unit-editor.description',
|
|
24427
24627
|
icon: 'fa-light fa-input-numeric',
|
|
24428
24628
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
24629
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_NUMERIC,
|
|
24429
24630
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
24430
24631
|
type: 'editor',
|
|
24431
24632
|
defaultFilterWidgetName: 'number-filter',
|
|
@@ -24471,10 +24672,11 @@ const AXPNumberUnitBoxWidget = {
|
|
|
24471
24672
|
|
|
24472
24673
|
const AXPTableEditorWidget = {
|
|
24473
24674
|
name: 'table-editor',
|
|
24474
|
-
title: '
|
|
24675
|
+
title: '@platform-layout-widgets:widgets.table-editor.title',
|
|
24475
24676
|
icon: 'fa-light fa-input-text',
|
|
24476
|
-
description: '
|
|
24677
|
+
description: '@platform-layout-widgets:widgets.table-editor.description',
|
|
24477
24678
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
24679
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_COMPOSITE,
|
|
24478
24680
|
type: 'editor',
|
|
24479
24681
|
defaultFilterWidgetName: 'string-filter',
|
|
24480
24682
|
properties: [
|
|
@@ -25479,13 +25681,13 @@ var imageWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
25479
25681
|
//#region ---- Image Widget Config ----
|
|
25480
25682
|
const AXPImageWidget = {
|
|
25481
25683
|
name: 'image',
|
|
25482
|
-
title: '
|
|
25483
|
-
description: '
|
|
25684
|
+
title: '@platform-layout-widgets:widgets.image.title',
|
|
25685
|
+
description: '@platform-layout-widgets:widgets.image.description',
|
|
25484
25686
|
icon: 'fa-light fa-image',
|
|
25485
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
25687
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
25688
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_MEDIA,
|
|
25486
25689
|
aiDescription: 'Use for a single image (URL or embedded). Prefer over plain markdown when aspect ratio, sizing, or binary handling matters.',
|
|
25487
25690
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
25488
|
-
aiCatalog: 'include',
|
|
25489
25691
|
type: 'editor',
|
|
25490
25692
|
properties: [
|
|
25491
25693
|
AXP_NAME_PROPERTY,
|
|
@@ -25657,13 +25859,13 @@ var listToolbarWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
25657
25859
|
|
|
25658
25860
|
const AXPListToolbarWidget = {
|
|
25659
25861
|
name: 'list-toolbar',
|
|
25660
|
-
title: '
|
|
25661
|
-
description: '',
|
|
25862
|
+
title: '@platform-layout-widgets:widgets.list-toolbar.title',
|
|
25662
25863
|
type: 'view',
|
|
25663
|
-
categories: [AXP_WIDGETS_LAYOUT_CATEGORY
|
|
25864
|
+
categories: [AXP_WIDGETS_LAYOUT_CATEGORY],
|
|
25865
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_LISTS,
|
|
25664
25866
|
aiDescription: 'Toolbar for list views: sort, filter, and column toggles. Use next to data-list when the user may refine or reorder rows.',
|
|
25665
25867
|
groups: [AXPWidgetGroupEnum.UtilityWidget],
|
|
25666
|
-
icon: 'fa-
|
|
25868
|
+
icon: 'fa-light fa-square',
|
|
25667
25869
|
properties: [
|
|
25668
25870
|
AXP_NAME_PROPERTY,
|
|
25669
25871
|
AXP_DATA_PATH_PROPERTY,
|
|
@@ -25702,13 +25904,13 @@ const AXPListToolbarWidget = {
|
|
|
25702
25904
|
|
|
25703
25905
|
const AXPMapWidget = {
|
|
25704
25906
|
name: 'map',
|
|
25705
|
-
title: '
|
|
25706
|
-
description: '
|
|
25907
|
+
title: '@platform-layout-widgets:widgets.map.title',
|
|
25908
|
+
description: '@platform-layout-widgets:widgets.map.description',
|
|
25707
25909
|
icon: 'fa-light fa-map-location',
|
|
25708
|
-
categories: [AXP_WIDGETS_ADVANCE_CATEGORY
|
|
25910
|
+
categories: [AXP_WIDGETS_ADVANCE_CATEGORY],
|
|
25911
|
+
subCategory: AXP_WIDGETS_ADVANCE_SUB_TOOLS,
|
|
25709
25912
|
aiDescription: 'Use when the answer involves locations, routes, or areas on a map. Pass markers, polygons, or center/zoom via options; suitable for “where”, “near”, or geographic summaries.',
|
|
25710
25913
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
25711
|
-
aiCatalog: 'include',
|
|
25712
25914
|
type: 'editor',
|
|
25713
25915
|
properties: [
|
|
25714
25916
|
AXP_NAME_PROPERTY,
|
|
@@ -25863,7 +26065,7 @@ class AXPTimerDurationWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
25863
26065
|
[options]="validation.options"
|
|
25864
26066
|
></ax-validation-rule>
|
|
25865
26067
|
}
|
|
25866
|
-
</ax-time-duration>`, isInline: true, 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: AXFormModule }, { kind: "directive", type: i3.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: AXTimeDurationModule }, { kind: "component", type: i3$6.AXTimeDurationComponent, selector: "ax-time-duration", inputs: ["disabled", "tabIndex", "readonly", "look", "valueStart", "valueEnd", "label", "maskDigits", "minValue", "maxValue"], outputs: ["onValueChanged"] }, { kind: "ngmodule", type: AXValidationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
26068
|
+
</ax-time-duration>`, isInline: true, 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: AXFormModule }, { kind: "directive", type: i3.AXValidationRuleDirective, selector: "ax-validation-rule", inputs: ["rule", "options", "message", "disabled"] }, { kind: "ngmodule", type: AXTimeDurationModule }, { kind: "component", type: i3$6.AXTimeDurationComponent, selector: "ax-time-duration", inputs: ["disabled", "tabIndex", "readonly", "look", "name", "valueStart", "valueEnd", "label", "maskDigits", "minValue", "maxValue"], outputs: ["onValueChanged"] }, { kind: "ngmodule", type: AXValidationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
25867
26069
|
}
|
|
25868
26070
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPTimerDurationWidgetEditComponent, decorators: [{
|
|
25869
26071
|
type: Component,
|
|
@@ -25929,10 +26131,11 @@ var timeDurationWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
25929
26131
|
|
|
25930
26132
|
const AXPTimeDurationWidget = {
|
|
25931
26133
|
name: 'time-duration',
|
|
25932
|
-
title: '
|
|
25933
|
-
description: '
|
|
26134
|
+
title: '@platform-layout-widgets:widgets.time-duration.title',
|
|
26135
|
+
description: '@platform-layout-widgets:widgets.time-duration.description',
|
|
25934
26136
|
icon: 'fa-light fa-clock',
|
|
25935
26137
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
26138
|
+
subCategory: AXP_WIDGETS_EDITOR_SUB_DATETIME,
|
|
25936
26139
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
25937
26140
|
defaultFilterWidgetName: 'time-duration-filter',
|
|
25938
26141
|
type: 'editor',
|
|
@@ -27203,10 +27406,11 @@ const AXPTimeDurationFilterWidget = {
|
|
|
27203
27406
|
|
|
27204
27407
|
const AXPDocumentWidget = {
|
|
27205
27408
|
name: 'document-layout',
|
|
27206
|
-
title: '
|
|
27207
|
-
description: '
|
|
27409
|
+
title: '@platform-layout-widgets:widgets.document-layout.title',
|
|
27410
|
+
description: '@platform-layout-widgets:widgets.document-layout.description',
|
|
27208
27411
|
icon: 'fa-light fa-page',
|
|
27209
27412
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
27413
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_SHELL,
|
|
27210
27414
|
type: 'container',
|
|
27211
27415
|
properties: [],
|
|
27212
27416
|
components: {},
|
|
@@ -27219,6 +27423,24 @@ class AXPFormFieldWidgetViewComponent extends AXPGridItemBaseLayoutWidgetCompone
|
|
|
27219
27423
|
this.showLabel = computed(() => this.options()['showLabel'] ?? true, ...(ngDevMode ? [{ debugName: "showLabel" }] : /* istanbul ignore next */ []));
|
|
27220
27424
|
this.badge = computed(() => this.options()['badge'], ...(ngDevMode ? [{ debugName: "badge" }] : /* istanbul ignore next */ []));
|
|
27221
27425
|
this.visible = computed(() => this.options()['visible'], ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
|
|
27426
|
+
this.hintText = computed(() => this.options()['hint'], ...(ngDevMode ? [{ debugName: "hintText" }] : /* istanbul ignore next */ []));
|
|
27427
|
+
this.hasHint = computed(() => {
|
|
27428
|
+
const h = this.hintText();
|
|
27429
|
+
if (h == null) {
|
|
27430
|
+
return false;
|
|
27431
|
+
}
|
|
27432
|
+
if (typeof h === 'string') {
|
|
27433
|
+
return h.trim().length > 0;
|
|
27434
|
+
}
|
|
27435
|
+
return true;
|
|
27436
|
+
}, ...(ngDevMode ? [{ debugName: "hasHint" }] : /* istanbul ignore next */ []));
|
|
27437
|
+
this.hintDisplayMode = computed(() => this.options()['hintDisplayMode'] === 'icon' ? 'icon' : 'note', ...(ngDevMode ? [{ debugName: "hintDisplayMode" }] : /* istanbul ignore next */ []));
|
|
27438
|
+
/** Info icon with tooltip (typically next to the label when the label is visible). */
|
|
27439
|
+
this.hintAsIcon = computed(() => this.hasHint() && this.hintDisplayMode() === 'icon', ...(ngDevMode ? [{ debugName: "hintAsIcon" }] : /* istanbul ignore next */ []));
|
|
27440
|
+
/** Visible helper copy under the field (inside `ax-form-field`). */
|
|
27441
|
+
this.hintAsNote = computed(() => this.hasHint() && this.hintDisplayMode() === 'note', ...(ngDevMode ? [{ debugName: "hintAsNote" }] : /* istanbul ignore next */ []));
|
|
27442
|
+
/** Label row needs to show even when label is hidden (e.g. icon-only hint with badge layout). */
|
|
27443
|
+
this.showTopRow = computed(() => this.showLabel() || !!this.badge() || this.hintAsIcon(), ...(ngDevMode ? [{ debugName: "showTopRow" }] : /* istanbul ignore next */ []));
|
|
27222
27444
|
this.isRequired = computed(() => this.children().some((c) => {
|
|
27223
27445
|
const validations = c.options?.['validations'];
|
|
27224
27446
|
return Array.isArray(validations) && validations.some((v) => v.rule === 'required');
|
|
@@ -27230,16 +27452,27 @@ class AXPFormFieldWidgetViewComponent extends AXPGridItemBaseLayoutWidgetCompone
|
|
|
27230
27452
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFormFieldWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
27231
27453
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPFormFieldWidgetViewComponent, isStandalone: true, selector: "axp-form-field-widget-view", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
|
|
27232
27454
|
<ax-form-field>
|
|
27233
|
-
@if (
|
|
27234
|
-
|
|
27235
|
-
|
|
27236
|
-
|
|
27237
|
-
|
|
27238
|
-
|
|
27239
|
-
|
|
27240
|
-
|
|
27241
|
-
|
|
27242
|
-
|
|
27455
|
+
@if (showTopRow()) {
|
|
27456
|
+
<div class="ax-flex ax-gap-1 ax-items-center ax-justify-between">
|
|
27457
|
+
<div class="ax-flex ax-min-w-0 ax-flex-wrap ax-items-center ax-gap-1 ax-leading-none">
|
|
27458
|
+
@if (showLabel()) {
|
|
27459
|
+
<ax-label [required]="isRequired()" class="ax-inline-flex ax-min-w-0 ax-items-center">{{ label() | translate | async }}</ax-label>
|
|
27460
|
+
}
|
|
27461
|
+
@if (hintAsIcon()) {
|
|
27462
|
+
<i
|
|
27463
|
+
role="button"
|
|
27464
|
+
tabindex="0"
|
|
27465
|
+
class="fa-regular fa-circle-info ax-relative ax-top-px ax-inline-flex ax-h-5 ax-w-5 ax-shrink-0 ax-cursor-help ax-items-center ax-justify-center ax-rounded-full ax-text-xs ax-leading-none ax-text-neutral-500 ax-outline-none ax-transition-[color,background-color] hover:ax-bg-neutral-100 hover:ax-text-neutral-800 focus-visible:ax-outline-2 focus-visible:ax-outline-primary-500 focus-visible:ax-outline-offset-1 ax-mt-[-5px]"
|
|
27466
|
+
[axTooltip]="(hintText()! | translate | async) ?? ''"
|
|
27467
|
+
axTooltipPlacement="top"
|
|
27468
|
+
[attr.aria-label]="(hintText()! | translate | async) ?? ''"
|
|
27469
|
+
></i>
|
|
27470
|
+
}
|
|
27471
|
+
</div>
|
|
27472
|
+
@if (badge()) {
|
|
27473
|
+
<span class="ax-text ax-p-1 ax-text-xs ax-rounded-md">{{ badge() | translate | async }}</span>
|
|
27474
|
+
}
|
|
27475
|
+
</div>
|
|
27243
27476
|
}
|
|
27244
27477
|
@for (node of children(); track $index) {
|
|
27245
27478
|
<ng-container
|
|
@@ -27251,8 +27484,13 @@ class AXPFormFieldWidgetViewComponent extends AXPGridItemBaseLayoutWidgetCompone
|
|
|
27251
27484
|
>
|
|
27252
27485
|
</ng-container>
|
|
27253
27486
|
}
|
|
27487
|
+
@if (hintAsNote()) {
|
|
27488
|
+
<p class="ax-text-xs ax-mt-1 ax-font-normal ax-opacity-75">
|
|
27489
|
+
{{ hintText()! | translate | async }}
|
|
27490
|
+
</p>
|
|
27491
|
+
}
|
|
27254
27492
|
</ax-form-field>
|
|
27255
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i2.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i1$3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "
|
|
27493
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i2.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: i1$3.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXTooltipModule }, { kind: "directive", type: i4$1.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltipDisabled", "axTooltip", "axTooltipContext", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27256
27494
|
}
|
|
27257
27495
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFormFieldWidgetViewComponent, decorators: [{
|
|
27258
27496
|
type: Component,
|
|
@@ -27260,16 +27498,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
27260
27498
|
selector: 'axp-form-field-widget-view',
|
|
27261
27499
|
template: `
|
|
27262
27500
|
<ax-form-field>
|
|
27263
|
-
@if (
|
|
27264
|
-
|
|
27265
|
-
|
|
27266
|
-
|
|
27267
|
-
|
|
27268
|
-
|
|
27269
|
-
|
|
27270
|
-
|
|
27271
|
-
|
|
27272
|
-
|
|
27501
|
+
@if (showTopRow()) {
|
|
27502
|
+
<div class="ax-flex ax-gap-1 ax-items-center ax-justify-between">
|
|
27503
|
+
<div class="ax-flex ax-min-w-0 ax-flex-wrap ax-items-center ax-gap-1 ax-leading-none">
|
|
27504
|
+
@if (showLabel()) {
|
|
27505
|
+
<ax-label [required]="isRequired()" class="ax-inline-flex ax-min-w-0 ax-items-center">{{ label() | translate | async }}</ax-label>
|
|
27506
|
+
}
|
|
27507
|
+
@if (hintAsIcon()) {
|
|
27508
|
+
<i
|
|
27509
|
+
role="button"
|
|
27510
|
+
tabindex="0"
|
|
27511
|
+
class="fa-regular fa-circle-info ax-relative ax-top-px ax-inline-flex ax-h-5 ax-w-5 ax-shrink-0 ax-cursor-help ax-items-center ax-justify-center ax-rounded-full ax-text-xs ax-leading-none ax-text-neutral-500 ax-outline-none ax-transition-[color,background-color] hover:ax-bg-neutral-100 hover:ax-text-neutral-800 focus-visible:ax-outline-2 focus-visible:ax-outline-primary-500 focus-visible:ax-outline-offset-1 ax-mt-[-5px]"
|
|
27512
|
+
[axTooltip]="(hintText()! | translate | async) ?? ''"
|
|
27513
|
+
axTooltipPlacement="top"
|
|
27514
|
+
[attr.aria-label]="(hintText()! | translate | async) ?? ''"
|
|
27515
|
+
></i>
|
|
27516
|
+
}
|
|
27517
|
+
</div>
|
|
27518
|
+
@if (badge()) {
|
|
27519
|
+
<span class="ax-text ax-p-1 ax-text-xs ax-rounded-md">{{ badge() | translate | async }}</span>
|
|
27520
|
+
}
|
|
27521
|
+
</div>
|
|
27273
27522
|
}
|
|
27274
27523
|
@for (node of children(); track $index) {
|
|
27275
27524
|
<ng-container
|
|
@@ -27281,6 +27530,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
27281
27530
|
>
|
|
27282
27531
|
</ng-container>
|
|
27283
27532
|
}
|
|
27533
|
+
@if (hintAsNote()) {
|
|
27534
|
+
<p class="ax-text-xs ax-mt-1 ax-font-normal ax-opacity-75">
|
|
27535
|
+
{{ hintText()! | translate | async }}
|
|
27536
|
+
</p>
|
|
27537
|
+
}
|
|
27284
27538
|
</ax-form-field>
|
|
27285
27539
|
`,
|
|
27286
27540
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -27291,7 +27545,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
27291
27545
|
AXPWidgetCoreModule,
|
|
27292
27546
|
AXTranslationModule,
|
|
27293
27547
|
AXBadgeModule,
|
|
27294
|
-
|
|
27548
|
+
AXDecoratorModule,
|
|
27549
|
+
AXTooltipModule,
|
|
27295
27550
|
],
|
|
27296
27551
|
standalone: true,
|
|
27297
27552
|
}]
|
|
@@ -27309,6 +27564,20 @@ class AXPFormFieldWidgetDesignerComponent extends AXPGridItemBaseLayoutWidgetCom
|
|
|
27309
27564
|
constructor() {
|
|
27310
27565
|
super(...arguments);
|
|
27311
27566
|
this.label = computed(() => this.options()['label'], ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
|
|
27567
|
+
this.hint = computed(() => this.options()['hint'], ...(ngDevMode ? [{ debugName: "hint" }] : /* istanbul ignore next */ []));
|
|
27568
|
+
this.hasHint = computed(() => {
|
|
27569
|
+
const h = this.hint();
|
|
27570
|
+
if (h == null || h === '') {
|
|
27571
|
+
return false;
|
|
27572
|
+
}
|
|
27573
|
+
if (typeof h === 'string') {
|
|
27574
|
+
return h.trim().length > 0;
|
|
27575
|
+
}
|
|
27576
|
+
return true;
|
|
27577
|
+
}, ...(ngDevMode ? [{ debugName: "hasHint" }] : /* istanbul ignore next */ []));
|
|
27578
|
+
this.hintDisplayMode = computed(() => this.options()['hintDisplayMode'] === 'icon' ? 'icon' : 'note', ...(ngDevMode ? [{ debugName: "hintDisplayMode" }] : /* istanbul ignore next */ []));
|
|
27579
|
+
this.hintAsIcon = computed(() => this.hasHint() && this.hintDisplayMode() === 'icon', ...(ngDevMode ? [{ debugName: "hintAsIcon" }] : /* istanbul ignore next */ []));
|
|
27580
|
+
this.hintAsNote = computed(() => this.hasHint() && this.hintDisplayMode() === 'note', ...(ngDevMode ? [{ debugName: "hintAsNote" }] : /* istanbul ignore next */ []));
|
|
27312
27581
|
}
|
|
27313
27582
|
get __class() {
|
|
27314
27583
|
return this.hostClass();
|
|
@@ -27321,7 +27590,12 @@ class AXPFormFieldWidgetDesignerComponent extends AXPGridItemBaseLayoutWidgetCom
|
|
|
27321
27590
|
},
|
|
27322
27591
|
], usesInheritance: true, ngImport: i0, template: `
|
|
27323
27592
|
<ax-form-field>
|
|
27324
|
-
<ax-
|
|
27593
|
+
<div class="ax-flex ax-gap-1 ax-items-center">
|
|
27594
|
+
<ax-label>{{ label() | translate | async }}</ax-label>
|
|
27595
|
+
@if (hintAsIcon()) {
|
|
27596
|
+
<i class="fa-regular fa-circle-info ax-text-sm ax-opacity-75" aria-hidden="true"></i>
|
|
27597
|
+
}
|
|
27598
|
+
</div>
|
|
27325
27599
|
@for (node of children(); track $index) {
|
|
27326
27600
|
<ng-container
|
|
27327
27601
|
axp-widget-designer-renderer
|
|
@@ -27334,8 +27608,13 @@ class AXPFormFieldWidgetDesignerComponent extends AXPGridItemBaseLayoutWidgetCom
|
|
|
27334
27608
|
} @empty {
|
|
27335
27609
|
<axp-designer-add-widget-mini-button></axp-designer-add-widget-mini-button>
|
|
27336
27610
|
}
|
|
27611
|
+
@if (hintAsNote()) {
|
|
27612
|
+
<p class="ax-text-xs ax-mt-1 ax-font-normal ax-opacity-75">
|
|
27613
|
+
{{ hint() | translate | async }}
|
|
27614
|
+
</p>
|
|
27615
|
+
}
|
|
27337
27616
|
</ax-form-field>
|
|
27338
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i2.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: AXPWidgetDesignerRendererDirective, selector: "[axp-widget-designer-renderer]", inputs: ["parentNode", "parentElement", "parentComponent", "index", "locked", "mode", "node"] }, { kind: "component", type: AXPDesignerAddWidgetMiniButtonComponent, selector: "axp-designer-add-widget-mini-button", outputs: ["onClick"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }
|
|
27617
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i2.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "directive", type: AXPWidgetDesignerRendererDirective, selector: "[axp-widget-designer-renderer]", inputs: ["parentNode", "parentElement", "parentComponent", "index", "locked", "mode", "node"] }, { kind: "component", type: AXPDesignerAddWidgetMiniButtonComponent, selector: "axp-designer-add-widget-mini-button", outputs: ["onClick"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27339
27618
|
}
|
|
27340
27619
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPFormFieldWidgetDesignerComponent, decorators: [{
|
|
27341
27620
|
type: Component,
|
|
@@ -27343,7 +27622,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
27343
27622
|
selector: 'axp-form-field-widget-designer',
|
|
27344
27623
|
template: `
|
|
27345
27624
|
<ax-form-field>
|
|
27346
|
-
<ax-
|
|
27625
|
+
<div class="ax-flex ax-gap-1 ax-items-center">
|
|
27626
|
+
<ax-label>{{ label() | translate | async }}</ax-label>
|
|
27627
|
+
@if (hintAsIcon()) {
|
|
27628
|
+
<i class="fa-regular fa-circle-info ax-text-sm ax-opacity-75" aria-hidden="true"></i>
|
|
27629
|
+
}
|
|
27630
|
+
</div>
|
|
27347
27631
|
@for (node of children(); track $index) {
|
|
27348
27632
|
<ng-container
|
|
27349
27633
|
axp-widget-designer-renderer
|
|
@@ -27356,6 +27640,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
27356
27640
|
} @empty {
|
|
27357
27641
|
<axp-designer-add-widget-mini-button></axp-designer-add-widget-mini-button>
|
|
27358
27642
|
}
|
|
27643
|
+
@if (hintAsNote()) {
|
|
27644
|
+
<p class="ax-text-xs ax-mt-1 ax-font-normal ax-opacity-75">
|
|
27645
|
+
{{ hint() | translate | async }}
|
|
27646
|
+
</p>
|
|
27647
|
+
}
|
|
27359
27648
|
</ax-form-field>
|
|
27360
27649
|
`,
|
|
27361
27650
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
@@ -27367,7 +27656,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
27367
27656
|
AXPWidgetCoreModule,
|
|
27368
27657
|
AXPWidgetDesignerRendererDirective,
|
|
27369
27658
|
AXPDesignerAddWidgetMiniButtonComponent,
|
|
27370
|
-
AXPResolveMultiLanguageStringPipe,
|
|
27371
27659
|
],
|
|
27372
27660
|
providers: [
|
|
27373
27661
|
{
|
|
@@ -27387,14 +27675,37 @@ var formFieldWidgetDesigner_component = /*#__PURE__*/Object.freeze({
|
|
|
27387
27675
|
AXPFormFieldWidgetDesignerComponent: AXPFormFieldWidgetDesignerComponent
|
|
27388
27676
|
});
|
|
27389
27677
|
|
|
27678
|
+
const AXP_FORM_FIELD_HINT_PROPERTY = createStringProperty({
|
|
27679
|
+
name: 'hint',
|
|
27680
|
+
title: 'Hint',
|
|
27681
|
+
path: 'options.hint',
|
|
27682
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
27683
|
+
});
|
|
27684
|
+
const AXP_FORM_FIELD_HINT_DISPLAY_MODE_PROPERTY = createSelectProperty({
|
|
27685
|
+
name: 'hintDisplayMode',
|
|
27686
|
+
title: 'Hint display',
|
|
27687
|
+
path: 'options.hintDisplayMode',
|
|
27688
|
+
group: AXP_BEHAVIOR_PROPERTY_GROUP,
|
|
27689
|
+
defaultValue: 'note',
|
|
27690
|
+
dataSource: [
|
|
27691
|
+
{ id: 'note', title: 'Note (below field)' },
|
|
27692
|
+
{ id: 'icon', title: 'Icon (tooltip)' },
|
|
27693
|
+
],
|
|
27694
|
+
});
|
|
27390
27695
|
const AXPFormFieldWidget = {
|
|
27391
27696
|
name: 'form-field',
|
|
27392
|
-
title: '
|
|
27697
|
+
title: '@platform-layout-widgets:widgets.form-field.title',
|
|
27393
27698
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
27699
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_UTILITY,
|
|
27394
27700
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
27395
27701
|
type: 'container',
|
|
27396
27702
|
icon: 'fa-light fa-pen-field',
|
|
27397
|
-
properties: [
|
|
27703
|
+
properties: [
|
|
27704
|
+
AXP_NAME_PROPERTY,
|
|
27705
|
+
cloneProperty(AXP_LABEL_PROPERTY, { schema: { defaultValue: 'Sample Label' } }),
|
|
27706
|
+
AXP_FORM_FIELD_HINT_PROPERTY,
|
|
27707
|
+
AXP_FORM_FIELD_HINT_DISPLAY_MODE_PROPERTY,
|
|
27708
|
+
],
|
|
27398
27709
|
components: {
|
|
27399
27710
|
view: {
|
|
27400
27711
|
component: () => Promise.resolve().then(function () { return formFieldWidgetView_component; }).then((c) => c.AXPFormFieldWidgetViewComponent),
|
|
@@ -27885,9 +28196,10 @@ var gridWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
27885
28196
|
|
|
27886
28197
|
const AXPGridWidget = {
|
|
27887
28198
|
name: 'grid-layout',
|
|
27888
|
-
title: '
|
|
28199
|
+
title: '@platform-layout-widgets:widgets.grid-layout.title',
|
|
27889
28200
|
type: 'container',
|
|
27890
28201
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
28202
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,
|
|
27891
28203
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
27892
28204
|
icon: 'fa-light fa-grid',
|
|
27893
28205
|
properties: [
|
|
@@ -28124,9 +28436,10 @@ var gridItemWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
28124
28436
|
|
|
28125
28437
|
const AXPGridItemWidget = {
|
|
28126
28438
|
name: 'grid-item-layout',
|
|
28127
|
-
title: '
|
|
28439
|
+
title: '@platform-layout-widgets:widgets.grid-item-layout.title',
|
|
28128
28440
|
type: 'container',
|
|
28129
28441
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
28442
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_GRID,
|
|
28130
28443
|
// groups: [AXPWidgetGroupEnum.FormElement],
|
|
28131
28444
|
icon: 'fa-light fa-objects-column',
|
|
28132
28445
|
properties: [
|
|
@@ -28153,10 +28466,11 @@ const AXPGridItemWidget = {
|
|
|
28153
28466
|
|
|
28154
28467
|
const AXPAlertBoxWidget = {
|
|
28155
28468
|
name: 'alert-box-layout',
|
|
28156
|
-
title: '
|
|
28157
|
-
description: '
|
|
28469
|
+
title: '@platform-layout-widgets:widgets.alert-box-layout.title',
|
|
28470
|
+
description: '@platform-layout-widgets:widgets.alert-box-layout.description',
|
|
28158
28471
|
icon: 'fa-light fa-circle-info',
|
|
28159
|
-
categories: [AXP_WIDGETS_LAYOUT_CATEGORY
|
|
28472
|
+
categories: [AXP_WIDGETS_LAYOUT_CATEGORY],
|
|
28473
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,
|
|
28160
28474
|
aiDescription: 'Use for notices: success, warning, danger, or info callouts with title and body. Prefer over plain text when severity or emphasis should be visible.',
|
|
28161
28475
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
28162
28476
|
type: 'view',
|
|
@@ -28399,9 +28713,10 @@ var iconWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
|
28399
28713
|
|
|
28400
28714
|
const AXPIconWidget = {
|
|
28401
28715
|
name: 'icon',
|
|
28402
|
-
title: '
|
|
28716
|
+
title: '@platform-layout-widgets:widgets.icon.title',
|
|
28403
28717
|
type: 'view',
|
|
28404
28718
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
28719
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_UTILITY,
|
|
28405
28720
|
// groups: [AXPWidgetGroupEnum.FormElement],
|
|
28406
28721
|
icon: 'fa-light fa-icons',
|
|
28407
28722
|
properties: [AXP_NAME_PROPERTY],
|
|
@@ -28607,10 +28922,11 @@ var panelWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
28607
28922
|
const AXPPanelWidget = {
|
|
28608
28923
|
name: 'panel-layout',
|
|
28609
28924
|
type: 'container',
|
|
28610
|
-
title: '
|
|
28611
|
-
description: '
|
|
28925
|
+
title: '@platform-layout-widgets:widgets.panel-layout.title',
|
|
28926
|
+
description: '@platform-layout-widgets:widgets.panel-layout.description',
|
|
28612
28927
|
icon: 'fa-light fa-rectangle-list',
|
|
28613
28928
|
categories: AXP_WIDGETS_LAYOUT_CATEGORY,
|
|
28929
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,
|
|
28614
28930
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
28615
28931
|
properties: [
|
|
28616
28932
|
AXP_NAME_PROPERTY,
|
|
@@ -28864,13 +29180,14 @@ var tabsetWidgetDesigner_component = /*#__PURE__*/Object.freeze({
|
|
|
28864
29180
|
|
|
28865
29181
|
const AXPTabSetWidget = {
|
|
28866
29182
|
name: 'tabset-layout',
|
|
28867
|
-
title: '
|
|
28868
|
-
description: '
|
|
29183
|
+
title: '@platform-layout-widgets:widgets.tabset-layout.title',
|
|
29184
|
+
description: '@platform-layout-widgets:widgets.tabset-layout.description',
|
|
28869
29185
|
type: 'view',
|
|
28870
|
-
categories: [AXP_WIDGETS_LAYOUT_CATEGORY
|
|
29186
|
+
categories: [AXP_WIDGETS_LAYOUT_CATEGORY],
|
|
29187
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_TABS,
|
|
28871
29188
|
aiDescription: 'Use to split content into labeled tabs. Pair with tabset-item children; each tab should map to one logical section of the answer.',
|
|
28872
29189
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
28873
|
-
icon: 'fa-
|
|
29190
|
+
icon: 'fa-light fa-square',
|
|
28874
29191
|
properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],
|
|
28875
29192
|
components: {
|
|
28876
29193
|
view: {
|
|
@@ -28951,13 +29268,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
28951
29268
|
|
|
28952
29269
|
const AXPTabSetItemWidget = {
|
|
28953
29270
|
name: 'tabset-item',
|
|
28954
|
-
title: '
|
|
28955
|
-
description: '
|
|
29271
|
+
title: '@platform-layout-widgets:widgets.tabset-item.title',
|
|
29272
|
+
description: '@platform-layout-widgets:widgets.tabset-item.description',
|
|
28956
29273
|
type: 'view',
|
|
28957
|
-
categories: [AXP_WIDGETS_LAYOUT_CATEGORY
|
|
29274
|
+
categories: [AXP_WIDGETS_LAYOUT_CATEGORY],
|
|
29275
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_TABS,
|
|
28958
29276
|
aiDescription: 'Single tab panel inside a tabset. Use one item per tab label; put the tab content in the slot or bound child widgets.',
|
|
28959
29277
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
28960
|
-
icon: 'fa-
|
|
29278
|
+
icon: 'fa-light fa-square',
|
|
28961
29279
|
properties: [AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY, AXP_DISABLED_PROPERTY],
|
|
28962
29280
|
components: {
|
|
28963
29281
|
view: {
|
|
@@ -28998,10 +29316,11 @@ var textBlockWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
28998
29316
|
|
|
28999
29317
|
const AXPTextBlockWidget = {
|
|
29000
29318
|
name: 'text-block-layout',
|
|
29001
|
-
title: '
|
|
29002
|
-
description: '
|
|
29319
|
+
title: '@platform-layout-widgets:widgets.text-block-layout.title',
|
|
29320
|
+
description: '@platform-layout-widgets:widgets.text-block-layout.description',
|
|
29003
29321
|
icon: 'fa-light fa-text',
|
|
29004
|
-
categories: [AXP_WIDGETS_LAYOUT_CATEGORY
|
|
29322
|
+
categories: [AXP_WIDGETS_LAYOUT_CATEGORY],
|
|
29323
|
+
subCategory: AXP_WIDGETS_LAYOUT_SUB_SURFACES,
|
|
29005
29324
|
aiDescription: 'Use for rich text blocks (options.content) when the answer needs structured prose beyond a single paragraph; supports inline formatting from the rich-text renderer.',
|
|
29006
29325
|
groups: [AXPWidgetGroupEnum.FormElement],
|
|
29007
29326
|
type: 'view',
|
|
@@ -29478,6 +29797,7 @@ var triggerExpressionEditorPopup_component = /*#__PURE__*/Object.freeze({
|
|
|
29478
29797
|
AXPTriggerExpressionEditorPopupComponent: AXPTriggerExpressionEditorPopupComponent
|
|
29479
29798
|
});
|
|
29480
29799
|
|
|
29800
|
+
//#region ---- Imports ----
|
|
29481
29801
|
//#endregion
|
|
29482
29802
|
//#region ---- Widget Lists (single source of truth) ----
|
|
29483
29803
|
/**
|
|
@@ -29594,6 +29914,7 @@ const EXTENDED_WIDGETS = [
|
|
|
29594
29914
|
name: 'select-filter',
|
|
29595
29915
|
title: 'Select Filter',
|
|
29596
29916
|
categories: AXP_WIDGETS_EDITOR_CATEGORY,
|
|
29917
|
+
groups: [AXPWidgetGroupEnum.BaseWidget],
|
|
29597
29918
|
type: 'filter',
|
|
29598
29919
|
components: {},
|
|
29599
29920
|
options: {
|
|
@@ -29695,13 +30016,9 @@ function toSerializableWidget(config) {
|
|
|
29695
30016
|
...(config.alias != null ? { alias: config.alias } : {}),
|
|
29696
30017
|
title: resolveWidgetLabelForAi(config.title) || String(config.name),
|
|
29697
30018
|
...(config.icon != null ? { icon: config.icon } : {}),
|
|
29698
|
-
...(config.description != null
|
|
29699
|
-
|
|
29700
|
-
|
|
29701
|
-
...(config.aiDescription != null && config.aiDescription !== ''
|
|
29702
|
-
? { aiDescription: config.aiDescription }
|
|
29703
|
-
: {}),
|
|
29704
|
-
categories: normalizeWidgetCategories(config.categories).map((c) => ({
|
|
30019
|
+
...(config.description != null ? { description: resolveWidgetLabelForAi(config.description) || undefined } : {}),
|
|
30020
|
+
...(config.aiDescription != null && config.aiDescription !== '' ? { aiDescription: config.aiDescription } : {}),
|
|
30021
|
+
categories: normalizeDefinitionCategories(config.categories).map((c) => ({
|
|
29705
30022
|
name: c.name,
|
|
29706
30023
|
title: resolveWidgetLabelForAi(c.title) || c.name,
|
|
29707
30024
|
order: c.order,
|
|
@@ -29714,7 +30031,6 @@ function toSerializableWidget(config) {
|
|
|
29714
30031
|
...(config.designer != null ? { designer: config.designer } : {}),
|
|
29715
30032
|
...(config.options != null ? { options: config.options } : {}),
|
|
29716
30033
|
...(config.defaultFilterWidgetName != null ? { defaultFilterWidgetName: config.defaultFilterWidgetName } : {}),
|
|
29717
|
-
...(config.aiCatalog != null ? { aiCatalog: config.aiCatalog } : {}),
|
|
29718
30034
|
};
|
|
29719
30035
|
}
|
|
29720
30036
|
function buildUsage(config) {
|
|
@@ -29737,7 +30053,7 @@ function buildUsage(config) {
|
|
|
29737
30053
|
//#endregion
|
|
29738
30054
|
//#region ---- Query ----
|
|
29739
30055
|
/**
|
|
29740
|
-
* Read-only
|
|
30056
|
+
* Read-only full widget registry (Widgets:GetForAI). Lists every registered widget.
|
|
29741
30057
|
*/
|
|
29742
30058
|
class AXPGetWidgetsForAIQuery {
|
|
29743
30059
|
constructor() {
|
|
@@ -29746,18 +30062,13 @@ class AXPGetWidgetsForAIQuery {
|
|
|
29746
30062
|
async fetch(input) {
|
|
29747
30063
|
const name = input?.name?.trim();
|
|
29748
30064
|
if (!name) {
|
|
29749
|
-
const list = this.registry
|
|
29750
|
-
.all()
|
|
29751
|
-
.filter((w) => isWidgetAiCatalogIncluded(w))
|
|
29752
|
-
.map((w) => ({
|
|
30065
|
+
const list = this.registry.all().map((w) => ({
|
|
29753
30066
|
name: String(w.name),
|
|
29754
30067
|
title: resolveWidgetLabelForAi(w.title) || String(w.name),
|
|
29755
|
-
...(w.description != null
|
|
29756
|
-
? { description: resolveWidgetLabelForAi(w.description) || undefined }
|
|
29757
|
-
: {}),
|
|
30068
|
+
...(w.description != null ? { description: resolveWidgetLabelForAi(w.description) || undefined } : {}),
|
|
29758
30069
|
...(w.aiDescription != null && w.aiDescription !== '' ? { aiDescription: w.aiDescription } : {}),
|
|
29759
30070
|
type: w.type,
|
|
29760
|
-
categories:
|
|
30071
|
+
categories: normalizeDefinitionCategories(w.categories).map((c) => ({
|
|
29761
30072
|
name: c.name,
|
|
29762
30073
|
title: resolveWidgetLabelForAi(c.title) || c.name,
|
|
29763
30074
|
order: c.order,
|
|
@@ -29767,12 +30078,6 @@ class AXPGetWidgetsForAIQuery {
|
|
|
29767
30078
|
}
|
|
29768
30079
|
try {
|
|
29769
30080
|
const config = this.registry.resolve(name);
|
|
29770
|
-
if (!isWidgetAiCatalogIncluded(config)) {
|
|
29771
|
-
return {
|
|
29772
|
-
success: false,
|
|
29773
|
-
error: `Widget "${name}" is not available for the AI widget catalog.`,
|
|
29774
|
-
};
|
|
29775
|
-
}
|
|
29776
30081
|
return {
|
|
29777
30082
|
success: true,
|
|
29778
30083
|
detail: toSerializableWidget(config),
|