@acorex/platform 21.0.0-next.71 → 21.0.0-next.73
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/contracts/README.md +3 -0
- package/fesm2022/acorex-platform-auth.mjs +82 -60
- package/fesm2022/acorex-platform-auth.mjs.map +1 -1
- package/fesm2022/{acorex-platform-common-common-settings.provider-Bi1RYif5.mjs → acorex-platform-common-common-settings.provider-Ytey9uhY.mjs} +15 -1
- package/fesm2022/acorex-platform-common-common-settings.provider-Ytey9uhY.mjs.map +1 -0
- package/fesm2022/acorex-platform-common.mjs +3796 -1677
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-contracts.mjs +10 -0
- package/fesm2022/acorex-platform-contracts.mjs.map +1 -0
- package/fesm2022/acorex-platform-core.mjs +1126 -114
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +56 -170
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +254 -53
- package/fesm2022/acorex-platform-layout-components.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-designer.mjs +199 -126
- package/fesm2022/acorex-platform-layout-designer.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs → acorex-platform-layout-entity-attachments-page.component-B0EkdqvH.mjs} +6 -1
- package/fesm2022/acorex-platform-layout-entity-attachments-page.component-B0EkdqvH.mjs.map +1 -0
- package/fesm2022/acorex-platform-layout-entity.mjs +403 -460
- package/fesm2022/acorex-platform-layout-entity.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-views.mjs +675 -301
- package/fesm2022/acorex-platform-layout-views.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-widget-core.mjs +126 -75
- package/fesm2022/acorex-platform-layout-widget-core.mjs.map +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs} +2 -2
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-edit-popup.component-BcpRkpJp.mjs.map → acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs → acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs} +2 -2
- package/fesm2022/{acorex-platform-layout-widgets-tabular-data-view-popup.component-DQtK4lxl.mjs.map → acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs.map} +1 -1
- package/fesm2022/acorex-platform-layout-widgets.mjs +450 -750
- package/fesm2022/acorex-platform-layout-widgets.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-B1nsdpTY.mjs +48 -0
- package/fesm2022/acorex-platform-themes-default-error-401.component-B1nsdpTY.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-D4UvRe8u.mjs +42 -0
- package/fesm2022/acorex-platform-themes-default-error-404.component-D4UvRe8u.mjs.map +1 -0
- package/fesm2022/acorex-platform-themes-default.mjs +79 -35
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared-settings.provider-BjuzSe0T.mjs.map +1 -1
- package/fesm2022/acorex-platform-themes-shared.mjs +3 -0
- package/fesm2022/acorex-platform-themes-shared.mjs.map +1 -1
- package/fesm2022/acorex-platform-workflow.mjs +57 -54
- package/fesm2022/acorex-platform-workflow.mjs.map +1 -1
- package/package.json +5 -1
- package/types/acorex-platform-auth.d.ts +31 -22
- package/types/acorex-platform-common.d.ts +892 -259
- package/types/acorex-platform-contracts.d.ts +39 -0
- package/types/acorex-platform-core.d.ts +291 -47
- package/types/acorex-platform-layout-builder.d.ts +10 -22
- package/types/acorex-platform-layout-components.d.ts +86 -14
- package/types/acorex-platform-layout-entity.d.ts +218 -212
- package/types/acorex-platform-layout-views.d.ts +125 -67
- package/types/acorex-platform-layout-widget-core.d.ts +56 -62
- package/types/acorex-platform-layout-widgets.d.ts +78 -65
- package/types/acorex-platform-themes-default.d.ts +14 -4
- package/fesm2022/acorex-platform-common-common-settings.provider-Bi1RYif5.mjs.map +0 -1
- package/fesm2022/acorex-platform-layout-entity-attachments-page.component-D8iQnT-R.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs +0 -31
- package/fesm2022/acorex-platform-themes-default-error-401.component-C7EYJzSr.mjs.map +0 -1
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs +0 -25
- package/fesm2022/acorex-platform-themes-default-error-404.component-7MVLMwIa.mjs.map +0 -1
|
@@ -22,7 +22,7 @@ import { AXTextBoxModule } from '@acorex/components/text-box';
|
|
|
22
22
|
import * as i6 from '@acorex/core/translation';
|
|
23
23
|
import { AXTranslationModule, AXTranslationService, resolveMultiLanguageString } from '@acorex/core/translation';
|
|
24
24
|
import { AXP_LOCALE_MANAGEMENT_PORT, AXPFilterOperatorMiddlewareService, AXPCleanNestedFilters, AXPClipBoardService, AXPSettingsService, AXPRegionalSetting, ALL_DEFAULT_OPERATORS, DATE_OPERATORS, BOOLEAN_OPERATORS, NUMBER_OPERATORS, STRING_OPERATORS, resolveDateFilterPresets, findManualPresetIdByOperation, applyDateFilterPreset, AXPFileStorageService, AXPFileActionsService, AXPStatusDefinitionProviderService, AXPRefreshEvent, AXPCommonSettings } from '@acorex/platform/common';
|
|
25
|
-
import { AXPDeviceService, setSmart, AXPColorPaletteService, extractValue, AXPTagService, AXPExpressionEvaluatorService, AXPHookService, AXPDataGenerator, AXPDataSourceDefinitionProviderService, sortByMultiLanguageString, applyQueryArray, objectKeyValueTransforms } from '@acorex/platform/core';
|
|
25
|
+
import { AXPDeviceService, setSmart, AXPColorPaletteService, extractValue, shouldUseLocaleMapShape, buildLocaleTextMapValue, AXPTagService, AXPExpressionEvaluatorService, AXPHookService, AXPDataGenerator, AXPDataSourceDefinitionProviderService, sortByMultiLanguageString, applyQueryArray, chordToKbdItemKeys, 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';
|
|
@@ -31,11 +31,11 @@ import * as i1$5 from '@angular/forms';
|
|
|
31
31
|
import { FormsModule } from '@angular/forms';
|
|
32
32
|
import * as i3$1 from '@acorex/components/select-box';
|
|
33
33
|
import { AXSelectBoxComponent, AXSelectBoxModule } from '@acorex/components/select-box';
|
|
34
|
-
import { set, get, castArray, isNil, isNull, isEmpty, isNumber, isEqual, cloneDeep } from 'lodash-es';
|
|
34
|
+
import { set, get, castArray, isNil, isNull, isEmpty, isNumber, defaultTo, isEqual, cloneDeep } from 'lodash-es';
|
|
35
35
|
import * as i2$2 from '@acorex/components/loading';
|
|
36
36
|
import { AXLoadingModule } from '@acorex/components/loading';
|
|
37
37
|
import { AXPCommandService, provideQuerySetups } from '@acorex/platform/runtime';
|
|
38
|
-
import { AXPConditionBuilderComponent, AXPColorPalettePickerComponent, AXPDragDropListComponent, AXPColumnItemListComponent, AXPImageEditorService, AXPStateMessageComponent, AXPOutcomeResultsViewerComponent, AXPStopwatchComponent, AXPWidgetFieldConfiguratorComponent, AXPItemConfiguratorComponent, AXPRepeaterRowsLayoutComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryColumnsComponent } from '@acorex/platform/layout/components';
|
|
38
|
+
import { AXPConditionBuilderComponent, AXPColorPalettePickerComponent, AXPDragDropListComponent, AXPColumnItemListComponent, AXPImageEditorService, AXPStateMessageComponent, AXPOutcomeResultsViewerComponent, AXPSignatureEditorService, AXPStopwatchComponent, AXPWidgetFieldConfiguratorComponent, AXPItemConfiguratorComponent, AXPRepeaterRowsLayoutComponent, AXPQueryFiltersComponent, AXPQuerySortsComponent, AXPQueryColumnsComponent } from '@acorex/platform/layout/components';
|
|
39
39
|
import { AXValidationModule, AXValidationService } from '@acorex/core/validation';
|
|
40
40
|
import { AXColorUtil } from '@acorex/core/utils';
|
|
41
41
|
import * as i2$3 from '@acorex/components/color-box';
|
|
@@ -114,6 +114,7 @@ import * as i1$j from '@acorex/components/button-group';
|
|
|
114
114
|
import { AXButtonGroupModule } from '@acorex/components/button-group';
|
|
115
115
|
import * as i6$1 from '@acorex/components/dropdown-button';
|
|
116
116
|
import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
|
|
117
|
+
import { AXKBDComponent, AXKBDItemComponent } from '@acorex/components/kbd';
|
|
117
118
|
import * as i1$k from '@acorex/components/cron-job';
|
|
118
119
|
import { AXCronJobModule } from '@acorex/components/cron-job';
|
|
119
120
|
import * as i3$6 from '@acorex/components/time-duration';
|
|
@@ -533,7 +534,7 @@ class AXPProviderSelectWidgetEditBase extends AXPDataListWidgetComponent {
|
|
|
533
534
|
if (this.filterMode()) {
|
|
534
535
|
const newValue = e.value;
|
|
535
536
|
const text = this.selectedItems().map((item) => get(item, this.textField()));
|
|
536
|
-
this.
|
|
537
|
+
this.setValue({
|
|
537
538
|
value: newValue,
|
|
538
539
|
displayText: text,
|
|
539
540
|
operation: {
|
|
@@ -543,10 +544,10 @@ class AXPProviderSelectWidgetEditBase extends AXPDataListWidgetComponent {
|
|
|
543
544
|
}
|
|
544
545
|
else if (this.multiple()) {
|
|
545
546
|
const keys = this.selectedItems().map((item) => get(item, this.valueField()));
|
|
546
|
-
this.
|
|
547
|
+
this.setValue(keys);
|
|
547
548
|
}
|
|
548
549
|
else {
|
|
549
|
-
this.
|
|
550
|
+
this.setValue(e.value);
|
|
550
551
|
}
|
|
551
552
|
}
|
|
552
553
|
}
|
|
@@ -3151,7 +3152,6 @@ const AXPAddressWidget = {
|
|
|
3151
3152
|
},
|
|
3152
3153
|
};
|
|
3153
3154
|
|
|
3154
|
-
//#region ---- Address Data Types ----
|
|
3155
3155
|
//#endregion
|
|
3156
3156
|
|
|
3157
3157
|
//#region ---- Service ----
|
|
@@ -4012,7 +4012,6 @@ class AXPDateTimeBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
4012
4012
|
}
|
|
4013
4013
|
return this.resolvedPresets().find((p) => p.id === id && p.kind === 'manual');
|
|
4014
4014
|
}, ...(ngDevMode ? [{ debugName: "selectedManualPreset" }] : /* istanbul ignore next */ []));
|
|
4015
|
-
this.multiple = computed(() => this.options()['multiple'], ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
|
|
4016
4015
|
this.clearButton = computed(() => this.options()['clearButton'], ...(ngDevMode ? [{ debugName: "clearButton" }] : /* istanbul ignore next */ []));
|
|
4017
4016
|
this.minValue = computed(() => this.options()['minValue'], ...(ngDevMode ? [{ debugName: "minValue" }] : /* istanbul ignore next */ []));
|
|
4018
4017
|
this.maxValue = computed(() => this.options()['maxValue'], ...(ngDevMode ? [{ debugName: "maxValue" }] : /* istanbul ignore next */ []));
|
|
@@ -4045,10 +4044,6 @@ class AXPDateTimeBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
4045
4044
|
}
|
|
4046
4045
|
return undefined;
|
|
4047
4046
|
}, ...(ngDevMode ? [{ debugName: "inputDepth" }] : /* istanbul ignore next */ []));
|
|
4048
|
-
this.internalValue = computed(() => {
|
|
4049
|
-
const values = Array.isArray(this.getValue()) ? this.getValue() : [this.getValue()];
|
|
4050
|
-
return values;
|
|
4051
|
-
}, ...(ngDevMode ? [{ debugName: "internalValue" }] : /* istanbul ignore next */ []));
|
|
4052
4047
|
this.filterValue = computed(() => {
|
|
4053
4048
|
const value = this.getValue()?.value;
|
|
4054
4049
|
if (typeof value === 'object' && value !== null) {
|
|
@@ -4149,25 +4144,11 @@ class AXPDateTimeBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
4149
4144
|
}
|
|
4150
4145
|
//#endregion
|
|
4151
4146
|
//#region ---- Standard Mode Handlers ----
|
|
4152
|
-
handleValueChange(e
|
|
4147
|
+
handleValueChange(e) {
|
|
4153
4148
|
if (e.isUserInteraction) {
|
|
4154
|
-
|
|
4155
|
-
if (this.multiple()) {
|
|
4156
|
-
this.setValue(newValues);
|
|
4157
|
-
}
|
|
4158
|
-
else {
|
|
4159
|
-
this.setValue(newValues[0]);
|
|
4160
|
-
}
|
|
4149
|
+
this.setValue(e.value);
|
|
4161
4150
|
}
|
|
4162
4151
|
}
|
|
4163
|
-
addItem() {
|
|
4164
|
-
const newValues = [...this.internalValue(), ''];
|
|
4165
|
-
this.setValue(newValues);
|
|
4166
|
-
}
|
|
4167
|
-
deleteItem(i) {
|
|
4168
|
-
const newValues = this.internalValue().filter((_, index) => index !== i);
|
|
4169
|
-
this.setValue(newValues);
|
|
4170
|
-
}
|
|
4171
4152
|
//#endregion
|
|
4172
4153
|
//#region ---- Filter Mode Handlers ----
|
|
4173
4154
|
handlePresetChange(e) {
|
|
@@ -4309,443 +4290,21 @@ class AXPDateTimeBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
4309
4290
|
return cls;
|
|
4310
4291
|
}
|
|
4311
4292
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDateTimeBoxWidgetEditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4312
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDateTimeBoxWidgetEditComponent, isStandalone: true, selector: "axp-date-time-box-widget-edit", host: { properties: { "class": "this.__class" } }, viewQueries: [{ propertyName: "selectBox", first: true, predicate: ["selectBox"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
4313
|
-
@if (filterMode()) {
|
|
4314
|
-
@if (filterUi() === 'simple') {
|
|
4315
|
-
<div class="ax-flex ax-items-center ax-w-full">
|
|
4316
|
-
@if (operation().type === 'between') {
|
|
4317
|
-
<div class="ax-flex-1 ax-flex ax-gap-2">
|
|
4318
|
-
<ax-datetime-box
|
|
4319
|
-
#dateTimeBox
|
|
4320
|
-
class="ax-w-full"
|
|
4321
|
-
[format]="calendarFormat()"
|
|
4322
|
-
[picker]="format()"
|
|
4323
|
-
[depth]="inputDepth()"
|
|
4324
|
-
[minValue]="filterFromMinValue()"
|
|
4325
|
-
[maxValue]="filterFromMaxValue()"
|
|
4326
|
-
[placeholder]="'@general:terms.common.from' | translate | async"
|
|
4327
|
-
[disabled]="isValuelessOperation()"
|
|
4328
|
-
[ngModel]="filterRangeValue().from"
|
|
4329
|
-
(onValueChanged)="handleFilterValueChange($event, 'from')"
|
|
4330
|
-
>
|
|
4331
|
-
<ax-clear-button></ax-clear-button>
|
|
4332
|
-
@for (validation of validationRules(); track $index) {
|
|
4333
|
-
<ax-validation-rule
|
|
4334
|
-
[rule]="validation.rule"
|
|
4335
|
-
[message]="validation.options?.message"
|
|
4336
|
-
[options]="validation.options"
|
|
4337
|
-
></ax-validation-rule>
|
|
4338
|
-
}
|
|
4339
|
-
</ax-datetime-box>
|
|
4340
|
-
<ax-datetime-box
|
|
4341
|
-
class="ax-w-full"
|
|
4342
|
-
[format]="calendarFormat()"
|
|
4343
|
-
[picker]="format()"
|
|
4344
|
-
[depth]="inputDepth()"
|
|
4345
|
-
[minValue]="filterToMinValue()"
|
|
4346
|
-
[maxValue]="filterToMaxValue()"
|
|
4347
|
-
[placeholder]="'@general:terms.common.to' | translate | async"
|
|
4348
|
-
[disabled]="isValuelessOperation()"
|
|
4349
|
-
[ngModel]="filterRangeValue().to"
|
|
4350
|
-
(onValueChanged)="handleFilterValueChange($event, 'to')"
|
|
4351
|
-
>
|
|
4352
|
-
<ax-clear-button></ax-clear-button>
|
|
4353
|
-
@for (validation of validationRules(); track $index) {
|
|
4354
|
-
<ax-validation-rule
|
|
4355
|
-
[rule]="validation.rule"
|
|
4356
|
-
[message]="validation.options?.message"
|
|
4357
|
-
[options]="validation.options"
|
|
4358
|
-
></ax-validation-rule>
|
|
4359
|
-
}
|
|
4360
|
-
</ax-datetime-box>
|
|
4361
|
-
</div>
|
|
4362
|
-
} @else {
|
|
4363
|
-
<ax-datetime-box
|
|
4364
|
-
#dateTimeBox
|
|
4365
|
-
class="ax-flex-1"
|
|
4366
|
-
[format]="calendarFormat()"
|
|
4367
|
-
[picker]="format()"
|
|
4368
|
-
[depth]="inputDepth()"
|
|
4369
|
-
[placeholder]="(placeholder() | translate | async) ?? ''"
|
|
4370
|
-
[disabled]="isValuelessOperation()"
|
|
4371
|
-
[ngModel]="filterValue()"
|
|
4372
|
-
(onValueChanged)="handleFilterValueChange($event, 'self')"
|
|
4373
|
-
>
|
|
4374
|
-
<ax-clear-button></ax-clear-button>
|
|
4375
|
-
@for (validation of validationRules(); track $index) {
|
|
4376
|
-
<ax-validation-rule
|
|
4377
|
-
[rule]="validation.rule"
|
|
4378
|
-
[message]="validation.options?.message"
|
|
4379
|
-
[options]="validation.options"
|
|
4380
|
-
></ax-validation-rule>
|
|
4381
|
-
}
|
|
4382
|
-
</ax-datetime-box>
|
|
4383
|
-
}
|
|
4384
|
-
<axp-filter-operations
|
|
4385
|
-
type="datetime"
|
|
4386
|
-
[operations]="filterOperations()"
|
|
4387
|
-
[selectedOperation]="operation().type"
|
|
4388
|
-
(selectedOperationChange)="handleOperationChange($event)"
|
|
4389
|
-
></axp-filter-operations>
|
|
4390
|
-
</div>
|
|
4391
|
-
} @else {
|
|
4392
|
-
<div class="ax-flex ax-flex-col ax-items-center ax-w-full">
|
|
4393
|
-
@if (resolvedPresets().length) {
|
|
4394
|
-
<ax-select-box
|
|
4395
|
-
#selectBox
|
|
4396
|
-
class="ax-w-full"
|
|
4397
|
-
[dataSource]="translatedPresets()"
|
|
4398
|
-
[valueField]="'id'"
|
|
4399
|
-
[textField]="'title'"
|
|
4400
|
-
[placeholder]="('@general:actions.select.title' | translate | async) ?? ''"
|
|
4401
|
-
[ngModel]="selectedPresetId()"
|
|
4402
|
-
(onValueChanged)="handlePresetChange($event)"
|
|
4403
|
-
>
|
|
4404
|
-
<ax-clear-button></ax-clear-button>
|
|
4405
|
-
</ax-select-box>
|
|
4406
|
-
}
|
|
4407
|
-
@if (selectedManualPreset()?.operationType === 'between') {
|
|
4408
|
-
<div class="ax-flex ax-gap-2 ax-mt-2 ax-w-full">
|
|
4409
|
-
<ax-datetime-box
|
|
4410
|
-
[format]="calendarFormat()"
|
|
4411
|
-
[picker]="format()"
|
|
4412
|
-
[depth]="inputDepth()"
|
|
4413
|
-
[minValue]="filterFromMinValue()"
|
|
4414
|
-
[maxValue]="filterFromMaxValue()"
|
|
4415
|
-
[placeholder]="'@general:terms.common.from' | translate | async"
|
|
4416
|
-
[ngModel]="filterRangeValue().from"
|
|
4417
|
-
(onValueChanged)="handleFilterValueChange($event, 'from')"
|
|
4418
|
-
>
|
|
4419
|
-
@for (validation of validationRules(); track $index) {
|
|
4420
|
-
<ax-validation-rule
|
|
4421
|
-
[rule]="validation.rule"
|
|
4422
|
-
[message]="validation.options?.message"
|
|
4423
|
-
[options]="validation.options"
|
|
4424
|
-
></ax-validation-rule>
|
|
4425
|
-
}
|
|
4426
|
-
<ax-clear-button></ax-clear-button>
|
|
4427
|
-
</ax-datetime-box>
|
|
4428
|
-
<ax-datetime-box
|
|
4429
|
-
[format]="calendarFormat()"
|
|
4430
|
-
[picker]="format()"
|
|
4431
|
-
[depth]="inputDepth()"
|
|
4432
|
-
[minValue]="filterToMinValue()"
|
|
4433
|
-
[maxValue]="filterToMaxValue()"
|
|
4434
|
-
[placeholder]="'@general:terms.common.to' | translate | async"
|
|
4435
|
-
[ngModel]="filterRangeValue().to"
|
|
4436
|
-
(onValueChanged)="handleFilterValueChange($event, 'to')"
|
|
4437
|
-
>
|
|
4438
|
-
<ax-clear-button></ax-clear-button>
|
|
4439
|
-
@for (validation of validationRules(); track $index) {
|
|
4440
|
-
<ax-validation-rule
|
|
4441
|
-
[rule]="validation.rule"
|
|
4442
|
-
[message]="validation.options?.message"
|
|
4443
|
-
[options]="validation.options"
|
|
4444
|
-
></ax-validation-rule>
|
|
4445
|
-
}
|
|
4446
|
-
</ax-datetime-box>
|
|
4447
|
-
</div>
|
|
4448
|
-
}
|
|
4449
|
-
@if (
|
|
4450
|
-
selectedManualPreset()?.operationType === 'greaterThan' ||
|
|
4451
|
-
selectedManualPreset()?.operationType === 'lessThan'
|
|
4452
|
-
) {
|
|
4453
|
-
<div class="ax-w-full ax-mt-2">
|
|
4454
|
-
<ax-datetime-box
|
|
4455
|
-
[format]="calendarFormat()"
|
|
4456
|
-
[picker]="format()"
|
|
4457
|
-
[depth]="inputDepth()"
|
|
4458
|
-
[ngModel]="filterValue()"
|
|
4459
|
-
(onValueChanged)="handleFilterValueChange($event, 'self')"
|
|
4460
|
-
>
|
|
4461
|
-
@for (validation of validationRules(); track $index) {
|
|
4462
|
-
<ax-validation-rule
|
|
4463
|
-
[rule]="validation.rule"
|
|
4464
|
-
[message]="validation.options?.message"
|
|
4465
|
-
[options]="validation.options"
|
|
4466
|
-
></ax-validation-rule>
|
|
4467
|
-
}
|
|
4468
|
-
<ax-clear-button></ax-clear-button>
|
|
4469
|
-
</ax-datetime-box>
|
|
4470
|
-
</div>
|
|
4471
|
-
}
|
|
4472
|
-
</div>
|
|
4473
|
-
}
|
|
4474
|
-
} @else {
|
|
4475
|
-
<div class="ax-grid ax-grid-cols-12 ax-gap-4">
|
|
4476
|
-
@for (datetime of internalValue(); track $index) {
|
|
4477
|
-
<ax-datetime-box
|
|
4478
|
-
class="ax-col-span-12"
|
|
4479
|
-
[ngModel]="datetime"
|
|
4480
|
-
[picker]="format()"
|
|
4481
|
-
[depth]="inputDepth()"
|
|
4482
|
-
(onValueChanged)="handleValueChange($event, $index)"
|
|
4483
|
-
[minValue]="minValue()"
|
|
4484
|
-
[maxValue]="maxValue()"
|
|
4485
|
-
[disabled]="disabled()"
|
|
4486
|
-
[readonly]="readonly()"
|
|
4487
|
-
[format]="calendarFormat()"
|
|
4488
|
-
[placeholder]="placeholder()"
|
|
4489
|
-
>
|
|
4490
|
-
@for (validation of validationRules(); track $index) {
|
|
4491
|
-
<ax-validation-rule
|
|
4492
|
-
[rule]="validation.rule"
|
|
4493
|
-
[message]="validation.options?.message"
|
|
4494
|
-
[options]="validation.options"
|
|
4495
|
-
></ax-validation-rule>
|
|
4496
|
-
}
|
|
4497
|
-
@if (clearButton()) {
|
|
4498
|
-
<ax-clear-button></ax-clear-button>
|
|
4499
|
-
}
|
|
4500
|
-
@if (multiple()) {
|
|
4501
|
-
<ax-suffix>
|
|
4502
|
-
<ax-button class="ax-border-s" (onClick)="deleteItem($index)" look="blank" color="danger">
|
|
4503
|
-
<ax-icon class="far fa-trash"> </ax-icon>
|
|
4504
|
-
</ax-button>
|
|
4505
|
-
</ax-suffix>
|
|
4506
|
-
}
|
|
4507
|
-
</ax-datetime-box>
|
|
4508
|
-
}
|
|
4509
|
-
@if (multiple()) {
|
|
4510
|
-
<ax-button
|
|
4511
|
-
class="ax-col-start-9 lg:ax-col-start-10 xl:ax-col-start-11 ax-col-end-13"
|
|
4512
|
-
[text]="!internalValue().length ? 'Add New' : 'Add Another'"
|
|
4513
|
-
look="twotone"
|
|
4514
|
-
(onClick)="addItem()"
|
|
4515
|
-
[disabled]="disabled()"
|
|
4516
|
-
></ax-button>
|
|
4517
|
-
}
|
|
4518
|
-
</div>
|
|
4519
|
-
}
|
|
4520
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: AXValidationModule }, { kind: "ngmodule", type: AXDateTimeBoxModule }, { kind: "component", type: i3$3.AXDateTimeBoxComponent, selector: "ax-datetime-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "depth", "id", "type", "look", "holidayDates", "allowTyping", "picker", "calendar", "weekend", "weekdays", "format"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "onOpened", "onClosed", "readonlyChange", "disabledChange", "formatChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.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: "component", type: i2$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3$1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPFilterOperationsComponent, selector: "axp-filter-operations", inputs: ["selectedOperation", "type", "operations"], outputs: ["selectedOperationChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4293
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPDateTimeBoxWidgetEditComponent, isStandalone: true, selector: "axp-date-time-box-widget-edit", host: { properties: { "class": "this.__class" } }, viewQueries: [{ propertyName: "selectBox", first: true, predicate: ["selectBox"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- Filter mode: grid/list filters with operation metadata and optional preset ranges -->\n@if (filterMode()) {\n <!-- Simple filter UI: operation picker + one or two datetime inputs -->\n @if (filterUi() === 'simple') {\n <div class=\"ax-flex ax-items-center ax-w-full\">\n <!-- Between operation: from / to range inputs -->\n @if (operation().type === 'between') {\n <div class=\"ax-flex-1 ax-flex ax-gap-2\">\n <ax-datetime-box\n #dateTimeBox\n class=\"ax-w-full\"\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [minValue]=\"filterFromMinValue()\"\n [maxValue]=\"filterFromMaxValue()\"\n [placeholder]=\"'@general:terms.common.from' | translate | async\"\n [disabled]=\"isValuelessOperation()\"\n [ngModel]=\"filterRangeValue().from\"\n (onValueChanged)=\"handleFilterValueChange($event, 'from')\"\n >\n <ax-clear-button></ax-clear-button>\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-datetime-box>\n <ax-datetime-box\n class=\"ax-w-full\"\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [minValue]=\"filterToMinValue()\"\n [maxValue]=\"filterToMaxValue()\"\n [placeholder]=\"'@general:terms.common.to' | translate | async\"\n [disabled]=\"isValuelessOperation()\"\n [ngModel]=\"filterRangeValue().to\"\n (onValueChanged)=\"handleFilterValueChange($event, 'to')\"\n >\n <ax-clear-button></ax-clear-button>\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-datetime-box>\n </div>\n } @else {\n <!-- Single-value operations: equal, greaterThan, lessThan, isEmpty, isNotEmpty, etc. -->\n <ax-datetime-box\n #dateTimeBox\n class=\"ax-flex-1\"\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n [disabled]=\"isValuelessOperation()\"\n [ngModel]=\"filterValue()\"\n (onValueChanged)=\"handleFilterValueChange($event, 'self')\"\n >\n <ax-clear-button></ax-clear-button>\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-datetime-box>\n }\n\n <!-- Operation selector (equal, between, isEmpty, ...) -->\n <axp-filter-operations\n type=\"datetime\"\n [operations]=\"filterOperations()\"\n [selectedOperation]=\"operation().type\"\n (selectedOperationChange)=\"handleOperationChange($event)\"\n ></axp-filter-operations>\n </div>\n } @else {\n <!-- Presets filter UI: relative ranges (Today, This Week, ...) plus manual inputs -->\n <div class=\"ax-flex ax-flex-col ax-items-center ax-w-full\">\n <!-- Preset dropdown (Today, Yesterday, This Week, Between, Greater Than, ...) -->\n @if (resolvedPresets().length) {\n <ax-select-box\n #selectBox\n class=\"ax-w-full\"\n [dataSource]=\"translatedPresets()\"\n [valueField]=\"'id'\"\n [textField]=\"'title'\"\n [placeholder]=\"('@general:actions.select.title' | translate | async) ?? ''\"\n [ngModel]=\"selectedPresetId()\"\n (onValueChanged)=\"handlePresetChange($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n }\n\n <!-- Manual preset: custom between range -->\n @if (selectedManualPreset()?.operationType === 'between') {\n <div class=\"ax-flex ax-gap-2 ax-mt-2 ax-w-full\">\n <ax-datetime-box\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [minValue]=\"filterFromMinValue()\"\n [maxValue]=\"filterFromMaxValue()\"\n [placeholder]=\"'@general:terms.common.from' | translate | async\"\n [ngModel]=\"filterRangeValue().from\"\n (onValueChanged)=\"handleFilterValueChange($event, 'from')\"\n >\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n <ax-clear-button></ax-clear-button>\n </ax-datetime-box>\n <ax-datetime-box\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [minValue]=\"filterToMinValue()\"\n [maxValue]=\"filterToMaxValue()\"\n [placeholder]=\"'@general:terms.common.to' | translate | async\"\n [ngModel]=\"filterRangeValue().to\"\n (onValueChanged)=\"handleFilterValueChange($event, 'to')\"\n >\n <ax-clear-button></ax-clear-button>\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-datetime-box>\n </div>\n }\n\n <!-- Manual preset: single bound for greaterThan / lessThan -->\n @if (\n selectedManualPreset()?.operationType === 'greaterThan' ||\n selectedManualPreset()?.operationType === 'lessThan'\n ) {\n <div class=\"ax-w-full ax-mt-2\">\n <ax-datetime-box\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [ngModel]=\"filterValue()\"\n (onValueChanged)=\"handleFilterValueChange($event, 'self')\"\n >\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n <ax-clear-button></ax-clear-button>\n </ax-datetime-box>\n </div>\n }\n </div>\n }\n} @else {\n <!-- Standard form edit: single date/time value bound to entity or form field -->\n <ax-datetime-box\n [ngModel]=\"getValue()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n (onValueChanged)=\"handleValueChange($event)\"\n [minValue]=\"minValue()\"\n [maxValue]=\"maxValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [format]=\"calendarFormat()\"\n [placeholder]=\"placeholder()\"\n >\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (clearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n </ax-datetime-box>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: AXValidationModule }, { kind: "ngmodule", type: AXDateTimeBoxModule }, { kind: "component", type: i3$3.AXDateTimeBoxComponent, selector: "ax-datetime-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "depth", "id", "type", "look", "holidayDates", "allowTyping", "picker", "calendar", "weekend", "weekdays", "calendarLook", "yearRange", "boxLook", "format"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "onOpened", "onClosed", "readonlyChange", "disabledChange", "formatChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i3$1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "component", type: AXPFilterOperationsComponent, selector: "axp-filter-operations", inputs: ["selectedOperation", "type", "operations"], outputs: ["selectedOperationChange"] }, { kind: "pipe", type: i1$4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4521
4294
|
}
|
|
4522
4295
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDateTimeBoxWidgetEditComponent, decorators: [{
|
|
4523
4296
|
type: Component,
|
|
4524
|
-
args: [{
|
|
4525
|
-
selector: 'axp-date-time-box-widget-edit',
|
|
4526
|
-
template: `
|
|
4527
|
-
@if (filterMode()) {
|
|
4528
|
-
@if (filterUi() === 'simple') {
|
|
4529
|
-
<div class="ax-flex ax-items-center ax-w-full">
|
|
4530
|
-
@if (operation().type === 'between') {
|
|
4531
|
-
<div class="ax-flex-1 ax-flex ax-gap-2">
|
|
4532
|
-
<ax-datetime-box
|
|
4533
|
-
#dateTimeBox
|
|
4534
|
-
class="ax-w-full"
|
|
4535
|
-
[format]="calendarFormat()"
|
|
4536
|
-
[picker]="format()"
|
|
4537
|
-
[depth]="inputDepth()"
|
|
4538
|
-
[minValue]="filterFromMinValue()"
|
|
4539
|
-
[maxValue]="filterFromMaxValue()"
|
|
4540
|
-
[placeholder]="'@general:terms.common.from' | translate | async"
|
|
4541
|
-
[disabled]="isValuelessOperation()"
|
|
4542
|
-
[ngModel]="filterRangeValue().from"
|
|
4543
|
-
(onValueChanged)="handleFilterValueChange($event, 'from')"
|
|
4544
|
-
>
|
|
4545
|
-
<ax-clear-button></ax-clear-button>
|
|
4546
|
-
@for (validation of validationRules(); track $index) {
|
|
4547
|
-
<ax-validation-rule
|
|
4548
|
-
[rule]="validation.rule"
|
|
4549
|
-
[message]="validation.options?.message"
|
|
4550
|
-
[options]="validation.options"
|
|
4551
|
-
></ax-validation-rule>
|
|
4552
|
-
}
|
|
4553
|
-
</ax-datetime-box>
|
|
4554
|
-
<ax-datetime-box
|
|
4555
|
-
class="ax-w-full"
|
|
4556
|
-
[format]="calendarFormat()"
|
|
4557
|
-
[picker]="format()"
|
|
4558
|
-
[depth]="inputDepth()"
|
|
4559
|
-
[minValue]="filterToMinValue()"
|
|
4560
|
-
[maxValue]="filterToMaxValue()"
|
|
4561
|
-
[placeholder]="'@general:terms.common.to' | translate | async"
|
|
4562
|
-
[disabled]="isValuelessOperation()"
|
|
4563
|
-
[ngModel]="filterRangeValue().to"
|
|
4564
|
-
(onValueChanged)="handleFilterValueChange($event, 'to')"
|
|
4565
|
-
>
|
|
4566
|
-
<ax-clear-button></ax-clear-button>
|
|
4567
|
-
@for (validation of validationRules(); track $index) {
|
|
4568
|
-
<ax-validation-rule
|
|
4569
|
-
[rule]="validation.rule"
|
|
4570
|
-
[message]="validation.options?.message"
|
|
4571
|
-
[options]="validation.options"
|
|
4572
|
-
></ax-validation-rule>
|
|
4573
|
-
}
|
|
4574
|
-
</ax-datetime-box>
|
|
4575
|
-
</div>
|
|
4576
|
-
} @else {
|
|
4577
|
-
<ax-datetime-box
|
|
4578
|
-
#dateTimeBox
|
|
4579
|
-
class="ax-flex-1"
|
|
4580
|
-
[format]="calendarFormat()"
|
|
4581
|
-
[picker]="format()"
|
|
4582
|
-
[depth]="inputDepth()"
|
|
4583
|
-
[placeholder]="(placeholder() | translate | async) ?? ''"
|
|
4584
|
-
[disabled]="isValuelessOperation()"
|
|
4585
|
-
[ngModel]="filterValue()"
|
|
4586
|
-
(onValueChanged)="handleFilterValueChange($event, 'self')"
|
|
4587
|
-
>
|
|
4588
|
-
<ax-clear-button></ax-clear-button>
|
|
4589
|
-
@for (validation of validationRules(); track $index) {
|
|
4590
|
-
<ax-validation-rule
|
|
4591
|
-
[rule]="validation.rule"
|
|
4592
|
-
[message]="validation.options?.message"
|
|
4593
|
-
[options]="validation.options"
|
|
4594
|
-
></ax-validation-rule>
|
|
4595
|
-
}
|
|
4596
|
-
</ax-datetime-box>
|
|
4597
|
-
}
|
|
4598
|
-
<axp-filter-operations
|
|
4599
|
-
type="datetime"
|
|
4600
|
-
[operations]="filterOperations()"
|
|
4601
|
-
[selectedOperation]="operation().type"
|
|
4602
|
-
(selectedOperationChange)="handleOperationChange($event)"
|
|
4603
|
-
></axp-filter-operations>
|
|
4604
|
-
</div>
|
|
4605
|
-
} @else {
|
|
4606
|
-
<div class="ax-flex ax-flex-col ax-items-center ax-w-full">
|
|
4607
|
-
@if (resolvedPresets().length) {
|
|
4608
|
-
<ax-select-box
|
|
4609
|
-
#selectBox
|
|
4610
|
-
class="ax-w-full"
|
|
4611
|
-
[dataSource]="translatedPresets()"
|
|
4612
|
-
[valueField]="'id'"
|
|
4613
|
-
[textField]="'title'"
|
|
4614
|
-
[placeholder]="('@general:actions.select.title' | translate | async) ?? ''"
|
|
4615
|
-
[ngModel]="selectedPresetId()"
|
|
4616
|
-
(onValueChanged)="handlePresetChange($event)"
|
|
4617
|
-
>
|
|
4618
|
-
<ax-clear-button></ax-clear-button>
|
|
4619
|
-
</ax-select-box>
|
|
4620
|
-
}
|
|
4621
|
-
@if (selectedManualPreset()?.operationType === 'between') {
|
|
4622
|
-
<div class="ax-flex ax-gap-2 ax-mt-2 ax-w-full">
|
|
4623
|
-
<ax-datetime-box
|
|
4624
|
-
[format]="calendarFormat()"
|
|
4625
|
-
[picker]="format()"
|
|
4626
|
-
[depth]="inputDepth()"
|
|
4627
|
-
[minValue]="filterFromMinValue()"
|
|
4628
|
-
[maxValue]="filterFromMaxValue()"
|
|
4629
|
-
[placeholder]="'@general:terms.common.from' | translate | async"
|
|
4630
|
-
[ngModel]="filterRangeValue().from"
|
|
4631
|
-
(onValueChanged)="handleFilterValueChange($event, 'from')"
|
|
4632
|
-
>
|
|
4633
|
-
@for (validation of validationRules(); track $index) {
|
|
4634
|
-
<ax-validation-rule
|
|
4635
|
-
[rule]="validation.rule"
|
|
4636
|
-
[message]="validation.options?.message"
|
|
4637
|
-
[options]="validation.options"
|
|
4638
|
-
></ax-validation-rule>
|
|
4639
|
-
}
|
|
4640
|
-
<ax-clear-button></ax-clear-button>
|
|
4641
|
-
</ax-datetime-box>
|
|
4642
|
-
<ax-datetime-box
|
|
4643
|
-
[format]="calendarFormat()"
|
|
4644
|
-
[picker]="format()"
|
|
4645
|
-
[depth]="inputDepth()"
|
|
4646
|
-
[minValue]="filterToMinValue()"
|
|
4647
|
-
[maxValue]="filterToMaxValue()"
|
|
4648
|
-
[placeholder]="'@general:terms.common.to' | translate | async"
|
|
4649
|
-
[ngModel]="filterRangeValue().to"
|
|
4650
|
-
(onValueChanged)="handleFilterValueChange($event, 'to')"
|
|
4651
|
-
>
|
|
4652
|
-
<ax-clear-button></ax-clear-button>
|
|
4653
|
-
@for (validation of validationRules(); track $index) {
|
|
4654
|
-
<ax-validation-rule
|
|
4655
|
-
[rule]="validation.rule"
|
|
4656
|
-
[message]="validation.options?.message"
|
|
4657
|
-
[options]="validation.options"
|
|
4658
|
-
></ax-validation-rule>
|
|
4659
|
-
}
|
|
4660
|
-
</ax-datetime-box>
|
|
4661
|
-
</div>
|
|
4662
|
-
}
|
|
4663
|
-
@if (
|
|
4664
|
-
selectedManualPreset()?.operationType === 'greaterThan' ||
|
|
4665
|
-
selectedManualPreset()?.operationType === 'lessThan'
|
|
4666
|
-
) {
|
|
4667
|
-
<div class="ax-w-full ax-mt-2">
|
|
4668
|
-
<ax-datetime-box
|
|
4669
|
-
[format]="calendarFormat()"
|
|
4670
|
-
[picker]="format()"
|
|
4671
|
-
[depth]="inputDepth()"
|
|
4672
|
-
[ngModel]="filterValue()"
|
|
4673
|
-
(onValueChanged)="handleFilterValueChange($event, 'self')"
|
|
4674
|
-
>
|
|
4675
|
-
@for (validation of validationRules(); track $index) {
|
|
4676
|
-
<ax-validation-rule
|
|
4677
|
-
[rule]="validation.rule"
|
|
4678
|
-
[message]="validation.options?.message"
|
|
4679
|
-
[options]="validation.options"
|
|
4680
|
-
></ax-validation-rule>
|
|
4681
|
-
}
|
|
4682
|
-
<ax-clear-button></ax-clear-button>
|
|
4683
|
-
</ax-datetime-box>
|
|
4684
|
-
</div>
|
|
4685
|
-
}
|
|
4686
|
-
</div>
|
|
4687
|
-
}
|
|
4688
|
-
} @else {
|
|
4689
|
-
<div class="ax-grid ax-grid-cols-12 ax-gap-4">
|
|
4690
|
-
@for (datetime of internalValue(); track $index) {
|
|
4691
|
-
<ax-datetime-box
|
|
4692
|
-
class="ax-col-span-12"
|
|
4693
|
-
[ngModel]="datetime"
|
|
4694
|
-
[picker]="format()"
|
|
4695
|
-
[depth]="inputDepth()"
|
|
4696
|
-
(onValueChanged)="handleValueChange($event, $index)"
|
|
4697
|
-
[minValue]="minValue()"
|
|
4698
|
-
[maxValue]="maxValue()"
|
|
4699
|
-
[disabled]="disabled()"
|
|
4700
|
-
[readonly]="readonly()"
|
|
4701
|
-
[format]="calendarFormat()"
|
|
4702
|
-
[placeholder]="placeholder()"
|
|
4703
|
-
>
|
|
4704
|
-
@for (validation of validationRules(); track $index) {
|
|
4705
|
-
<ax-validation-rule
|
|
4706
|
-
[rule]="validation.rule"
|
|
4707
|
-
[message]="validation.options?.message"
|
|
4708
|
-
[options]="validation.options"
|
|
4709
|
-
></ax-validation-rule>
|
|
4710
|
-
}
|
|
4711
|
-
@if (clearButton()) {
|
|
4712
|
-
<ax-clear-button></ax-clear-button>
|
|
4713
|
-
}
|
|
4714
|
-
@if (multiple()) {
|
|
4715
|
-
<ax-suffix>
|
|
4716
|
-
<ax-button class="ax-border-s" (onClick)="deleteItem($index)" look="blank" color="danger">
|
|
4717
|
-
<ax-icon class="far fa-trash"> </ax-icon>
|
|
4718
|
-
</ax-button>
|
|
4719
|
-
</ax-suffix>
|
|
4720
|
-
}
|
|
4721
|
-
</ax-datetime-box>
|
|
4722
|
-
}
|
|
4723
|
-
@if (multiple()) {
|
|
4724
|
-
<ax-button
|
|
4725
|
-
class="ax-col-start-9 lg:ax-col-start-10 xl:ax-col-start-11 ax-col-end-13"
|
|
4726
|
-
[text]="!internalValue().length ? 'Add New' : 'Add Another'"
|
|
4727
|
-
look="twotone"
|
|
4728
|
-
(onClick)="addItem()"
|
|
4729
|
-
[disabled]="disabled()"
|
|
4730
|
-
></ax-button>
|
|
4731
|
-
}
|
|
4732
|
-
</div>
|
|
4733
|
-
}
|
|
4734
|
-
`,
|
|
4735
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
4736
|
-
imports: [
|
|
4297
|
+
args: [{ selector: 'axp-date-time-box-widget-edit', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
4737
4298
|
CommonModule,
|
|
4738
4299
|
FormsModule,
|
|
4739
4300
|
AXFormModule,
|
|
4740
4301
|
AXValidationModule,
|
|
4741
4302
|
AXDateTimeBoxModule,
|
|
4742
|
-
AXButtonModule,
|
|
4743
4303
|
AXDecoratorModule,
|
|
4744
4304
|
AXSelectBoxModule,
|
|
4745
4305
|
AXTranslationModule,
|
|
4746
4306
|
AXPFilterOperationsComponent,
|
|
4747
|
-
],
|
|
4748
|
-
}]
|
|
4307
|
+
], template: "<!-- Filter mode: grid/list filters with operation metadata and optional preset ranges -->\n@if (filterMode()) {\n <!-- Simple filter UI: operation picker + one or two datetime inputs -->\n @if (filterUi() === 'simple') {\n <div class=\"ax-flex ax-items-center ax-w-full\">\n <!-- Between operation: from / to range inputs -->\n @if (operation().type === 'between') {\n <div class=\"ax-flex-1 ax-flex ax-gap-2\">\n <ax-datetime-box\n #dateTimeBox\n class=\"ax-w-full\"\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [minValue]=\"filterFromMinValue()\"\n [maxValue]=\"filterFromMaxValue()\"\n [placeholder]=\"'@general:terms.common.from' | translate | async\"\n [disabled]=\"isValuelessOperation()\"\n [ngModel]=\"filterRangeValue().from\"\n (onValueChanged)=\"handleFilterValueChange($event, 'from')\"\n >\n <ax-clear-button></ax-clear-button>\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-datetime-box>\n <ax-datetime-box\n class=\"ax-w-full\"\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [minValue]=\"filterToMinValue()\"\n [maxValue]=\"filterToMaxValue()\"\n [placeholder]=\"'@general:terms.common.to' | translate | async\"\n [disabled]=\"isValuelessOperation()\"\n [ngModel]=\"filterRangeValue().to\"\n (onValueChanged)=\"handleFilterValueChange($event, 'to')\"\n >\n <ax-clear-button></ax-clear-button>\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-datetime-box>\n </div>\n } @else {\n <!-- Single-value operations: equal, greaterThan, lessThan, isEmpty, isNotEmpty, etc. -->\n <ax-datetime-box\n #dateTimeBox\n class=\"ax-flex-1\"\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [placeholder]=\"(placeholder() | translate | async) ?? ''\"\n [disabled]=\"isValuelessOperation()\"\n [ngModel]=\"filterValue()\"\n (onValueChanged)=\"handleFilterValueChange($event, 'self')\"\n >\n <ax-clear-button></ax-clear-button>\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-datetime-box>\n }\n\n <!-- Operation selector (equal, between, isEmpty, ...) -->\n <axp-filter-operations\n type=\"datetime\"\n [operations]=\"filterOperations()\"\n [selectedOperation]=\"operation().type\"\n (selectedOperationChange)=\"handleOperationChange($event)\"\n ></axp-filter-operations>\n </div>\n } @else {\n <!-- Presets filter UI: relative ranges (Today, This Week, ...) plus manual inputs -->\n <div class=\"ax-flex ax-flex-col ax-items-center ax-w-full\">\n <!-- Preset dropdown (Today, Yesterday, This Week, Between, Greater Than, ...) -->\n @if (resolvedPresets().length) {\n <ax-select-box\n #selectBox\n class=\"ax-w-full\"\n [dataSource]=\"translatedPresets()\"\n [valueField]=\"'id'\"\n [textField]=\"'title'\"\n [placeholder]=\"('@general:actions.select.title' | translate | async) ?? ''\"\n [ngModel]=\"selectedPresetId()\"\n (onValueChanged)=\"handlePresetChange($event)\"\n >\n <ax-clear-button></ax-clear-button>\n </ax-select-box>\n }\n\n <!-- Manual preset: custom between range -->\n @if (selectedManualPreset()?.operationType === 'between') {\n <div class=\"ax-flex ax-gap-2 ax-mt-2 ax-w-full\">\n <ax-datetime-box\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [minValue]=\"filterFromMinValue()\"\n [maxValue]=\"filterFromMaxValue()\"\n [placeholder]=\"'@general:terms.common.from' | translate | async\"\n [ngModel]=\"filterRangeValue().from\"\n (onValueChanged)=\"handleFilterValueChange($event, 'from')\"\n >\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n <ax-clear-button></ax-clear-button>\n </ax-datetime-box>\n <ax-datetime-box\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [minValue]=\"filterToMinValue()\"\n [maxValue]=\"filterToMaxValue()\"\n [placeholder]=\"'@general:terms.common.to' | translate | async\"\n [ngModel]=\"filterRangeValue().to\"\n (onValueChanged)=\"handleFilterValueChange($event, 'to')\"\n >\n <ax-clear-button></ax-clear-button>\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n </ax-datetime-box>\n </div>\n }\n\n <!-- Manual preset: single bound for greaterThan / lessThan -->\n @if (\n selectedManualPreset()?.operationType === 'greaterThan' ||\n selectedManualPreset()?.operationType === 'lessThan'\n ) {\n <div class=\"ax-w-full ax-mt-2\">\n <ax-datetime-box\n [format]=\"calendarFormat()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n [ngModel]=\"filterValue()\"\n (onValueChanged)=\"handleFilterValueChange($event, 'self')\"\n >\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n <ax-clear-button></ax-clear-button>\n </ax-datetime-box>\n </div>\n }\n </div>\n }\n} @else {\n <!-- Standard form edit: single date/time value bound to entity or form field -->\n <ax-datetime-box\n [ngModel]=\"getValue()\"\n [picker]=\"format()\"\n [depth]=\"inputDepth()\"\n (onValueChanged)=\"handleValueChange($event)\"\n [minValue]=\"minValue()\"\n [maxValue]=\"maxValue()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonly()\"\n [format]=\"calendarFormat()\"\n [placeholder]=\"placeholder()\"\n >\n @for (validation of validationRules(); track $index) {\n <ax-validation-rule\n [rule]=\"validation.rule\"\n [message]=\"validation.options?.message\"\n [options]=\"validation.options\"\n ></ax-validation-rule>\n }\n @if (clearButton()) {\n <ax-clear-button></ax-clear-button>\n }\n </ax-datetime-box>\n}\n" }]
|
|
4749
4308
|
}], ctorParameters: () => [], propDecorators: { selectBox: [{ type: i0.ViewChild, args: ['selectBox', { isSignal: true }] }], __class: [{
|
|
4750
4309
|
type: HostBinding,
|
|
4751
4310
|
args: ['class']
|
|
@@ -5157,7 +4716,7 @@ class AXPLargeTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
5157
4716
|
constructor() {
|
|
5158
4717
|
super(...arguments);
|
|
5159
4718
|
this.multiple = computed(() => this.options()['multiple'], ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
|
|
5160
|
-
this.
|
|
4719
|
+
this.effectiveMultiLanguage = computed(() => shouldUseLocaleMapShape(!!this.options()['multiLanguage'], this.getValue(), this.fullPath() ? this.contextService.getSavedValue(this.fullPath()) : undefined), ...(ngDevMode ? [{ debugName: "effectiveMultiLanguage" }] : /* istanbul ignore next */ []));
|
|
5161
4720
|
this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
5162
4721
|
this.clearButton = computed(() => this.options()['clearButton'] ?? true, ...(ngDevMode ? [{ debugName: "clearButton" }] : /* istanbul ignore next */ []));
|
|
5163
4722
|
this.placeholder = computed(() => this.options()['placeholder'], ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
@@ -5170,26 +4729,17 @@ class AXPLargeTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
5170
4729
|
});
|
|
5171
4730
|
this.getCurrentText = computed(() => this.translationService.resolve(this.getValue(), this.currentLanguage()), ...(ngDevMode ? [{ debugName: "getCurrentText" }] : /* istanbul ignore next */ []));
|
|
5172
4731
|
}
|
|
5173
|
-
ngOnInit() {
|
|
5174
|
-
super.ngOnInit();
|
|
5175
|
-
const v = this.getValue();
|
|
5176
|
-
if (this.multiLanguage() && typeof v === 'string') {
|
|
5177
|
-
this.setValue({ [this.currentLanguage()]: v }, { origin: 'system' });
|
|
5178
|
-
}
|
|
5179
|
-
}
|
|
5180
4732
|
handleValueChange(e) {
|
|
5181
4733
|
if (!e.isUserInteraction) {
|
|
5182
4734
|
return;
|
|
5183
4735
|
}
|
|
5184
|
-
|
|
5185
|
-
|
|
5186
|
-
|
|
5187
|
-
|
|
5188
|
-
this.
|
|
5189
|
-
|
|
5190
|
-
|
|
5191
|
-
this.setUserValue(e.value ?? '');
|
|
5192
|
-
}
|
|
4736
|
+
const path = this.fullPath();
|
|
4737
|
+
const current = this.getValue();
|
|
4738
|
+
const saved = path ? this.contextService.getSavedValue(path) : undefined;
|
|
4739
|
+
const nextValue = this.effectiveMultiLanguage()
|
|
4740
|
+
? buildLocaleTextMapValue(current, saved, this.currentLanguage(), e.value ?? '')
|
|
4741
|
+
: (e.value ?? '');
|
|
4742
|
+
this.setValue(nextValue);
|
|
5193
4743
|
}
|
|
5194
4744
|
openMultiLanguagePopup() {
|
|
5195
4745
|
const node = {
|
|
@@ -5241,7 +4791,7 @@ class AXPLargeTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
5241
4791
|
></ax-validation-rule>
|
|
5242
4792
|
}
|
|
5243
4793
|
</ax-text-area>
|
|
5244
|
-
@if (
|
|
4794
|
+
@if (effectiveMultiLanguage()) {
|
|
5245
4795
|
<ax-button
|
|
5246
4796
|
look="blank"
|
|
5247
4797
|
class="ax-absolute ax-sm ax-end-1 ax-bottom-1 ax-z-0 ax-opacity-50 hover:ax-opacity-100 hover:ax-z-10"
|
|
@@ -5283,7 +4833,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
5283
4833
|
></ax-validation-rule>
|
|
5284
4834
|
}
|
|
5285
4835
|
</ax-text-area>
|
|
5286
|
-
@if (
|
|
4836
|
+
@if (effectiveMultiLanguage()) {
|
|
5287
4837
|
<ax-button
|
|
5288
4838
|
look="blank"
|
|
5289
4839
|
class="ax-absolute ax-sm ax-end-1 ax-bottom-1 ax-z-0 ax-opacity-50 hover:ax-opacity-100 hover:ax-z-10"
|
|
@@ -5833,18 +5383,40 @@ const AXPNumberBoxWidget = {
|
|
|
5833
5383
|
},
|
|
5834
5384
|
};
|
|
5835
5385
|
|
|
5386
|
+
//#region ---- Password Text Direction ----
|
|
5387
|
+
/** Default text direction for password inputs (Latin passwords in RTL locales). */
|
|
5388
|
+
const PASSWORD_DEFAULT_TEXT_DIRECTION = 'ltr';
|
|
5389
|
+
/**
|
|
5390
|
+
* Resolves password field text direction. Defaults to LTR unless explicitly overridden.
|
|
5391
|
+
*/
|
|
5392
|
+
function resolvePasswordTextDirection(options) {
|
|
5393
|
+
const direction = options['direction'];
|
|
5394
|
+
if (direction === 'ltr' || direction === 'rtl') {
|
|
5395
|
+
return direction;
|
|
5396
|
+
}
|
|
5397
|
+
return PASSWORD_DEFAULT_TEXT_DIRECTION;
|
|
5398
|
+
}
|
|
5399
|
+
//#endregion
|
|
5400
|
+
|
|
5836
5401
|
class AXPPasswordBoxWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
5837
5402
|
constructor() {
|
|
5838
5403
|
super(...arguments);
|
|
5839
5404
|
this.hasEyeIcon = this.options['hasEyeIcon'];
|
|
5840
5405
|
this.showPassword = this.options['showPassword'];
|
|
5406
|
+
this.textDirection = computed(() => resolvePasswordTextDirection(this.options), ...(ngDevMode ? [{ debugName: "textDirection" }] : /* istanbul ignore next */ []));
|
|
5841
5407
|
this.show = signal(!!this.rawValue, ...(ngDevMode ? [{ debugName: "show" }] : /* istanbul ignore next */ []));
|
|
5842
5408
|
}
|
|
5409
|
+
get hostDir() {
|
|
5410
|
+
return this.textDirection();
|
|
5411
|
+
}
|
|
5412
|
+
get hostDirection() {
|
|
5413
|
+
return this.textDirection();
|
|
5414
|
+
}
|
|
5843
5415
|
toggleEye() {
|
|
5844
5416
|
this.show.update((prev) => !prev);
|
|
5845
5417
|
}
|
|
5846
5418
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPPasswordBoxWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
5847
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPPasswordBoxWidgetColumnComponent, isStandalone: true, selector: "axp-password-box-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `<div class="ax-flex ax-flex-1 ax-gap-3 ax-group ax-items-start ax-w-max">
|
|
5419
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPPasswordBoxWidgetColumnComponent, isStandalone: true, selector: "axp-password-box-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, host: { properties: { "attr.dir": "this.hostDir", "style.direction": "this.hostDirection" } }, usesInheritance: true, ngImport: i0, template: `<div class="ax-flex ax-flex-1 ax-gap-3 ax-group ax-items-start ax-w-max">
|
|
5848
5420
|
<span>{{ show() ? rawValue : '*******' }}</span>
|
|
5849
5421
|
@if (hasEyeIcon) {
|
|
5850
5422
|
<span
|
|
@@ -5882,7 +5454,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
5882
5454
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5883
5455
|
inputs: ['rawValue', 'rowData'],
|
|
5884
5456
|
}]
|
|
5885
|
-
}]
|
|
5457
|
+
}], propDecorators: { hostDir: [{
|
|
5458
|
+
type: HostBinding,
|
|
5459
|
+
args: ['attr.dir']
|
|
5460
|
+
}], hostDirection: [{
|
|
5461
|
+
type: HostBinding,
|
|
5462
|
+
args: ['style.direction']
|
|
5463
|
+
}] } });
|
|
5886
5464
|
|
|
5887
5465
|
var passwordBoxWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
5888
5466
|
__proto__: null,
|
|
@@ -5894,6 +5472,13 @@ class AXPPasswordBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
5894
5472
|
super(...arguments);
|
|
5895
5473
|
this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
5896
5474
|
this.hasClearButton = computed(() => this.options()['hasClearButton'], ...(ngDevMode ? [{ debugName: "hasClearButton" }] : /* istanbul ignore next */ []));
|
|
5475
|
+
this.textDirection = computed(() => resolvePasswordTextDirection(this.options()), ...(ngDevMode ? [{ debugName: "textDirection" }] : /* istanbul ignore next */ []));
|
|
5476
|
+
}
|
|
5477
|
+
get hostDir() {
|
|
5478
|
+
return this.textDirection();
|
|
5479
|
+
}
|
|
5480
|
+
get hostDirection() {
|
|
5481
|
+
return this.textDirection();
|
|
5897
5482
|
}
|
|
5898
5483
|
get __class() {
|
|
5899
5484
|
const cls = {};
|
|
@@ -5902,7 +5487,7 @@ class AXPPasswordBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
5902
5487
|
return cls;
|
|
5903
5488
|
}
|
|
5904
5489
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPPasswordBoxWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
5905
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPPasswordBoxWidgetEditComponent, isStandalone: true, selector: "axp-password-box-widget-edit", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
|
|
5490
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPPasswordBoxWidgetEditComponent, isStandalone: true, selector: "axp-password-box-widget-edit", host: { properties: { "attr.dir": "this.hostDir", "style.direction": "this.hostDirection", "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
|
|
5906
5491
|
<ax-password-box [ngModel]="getValue()" [disabled]="disabled()" (onValueChanged)="handleValueChanged($event)">
|
|
5907
5492
|
@for (validation of validationRules(); track $index) {
|
|
5908
5493
|
<ax-validation-rule
|
|
@@ -5938,7 +5523,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
5938
5523
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5939
5524
|
imports: [FormsModule, AXDecoratorModule, AXPasswordBoxModule, AXValidationModule, AXFormModule],
|
|
5940
5525
|
}]
|
|
5941
|
-
}], propDecorators: {
|
|
5526
|
+
}], propDecorators: { hostDir: [{
|
|
5527
|
+
type: HostBinding,
|
|
5528
|
+
args: ['attr.dir']
|
|
5529
|
+
}], hostDirection: [{
|
|
5530
|
+
type: HostBinding,
|
|
5531
|
+
args: ['style.direction']
|
|
5532
|
+
}], __class: [{
|
|
5942
5533
|
type: HostBinding,
|
|
5943
5534
|
args: ['class']
|
|
5944
5535
|
}] } });
|
|
@@ -5955,6 +5546,7 @@ class AXPPasswordBoxWidgetViewComponent extends AXPValueWidgetComponent {
|
|
|
5955
5546
|
this.hasCopyIcon = computed(() => this.options()['hasCopyIcon'], ...(ngDevMode ? [{ debugName: "hasCopyIcon" }] : /* istanbul ignore next */ []));
|
|
5956
5547
|
this.hasEyeIcon = computed(() => this.options()['hasEyeIcon'], ...(ngDevMode ? [{ debugName: "hasEyeIcon" }] : /* istanbul ignore next */ []));
|
|
5957
5548
|
this.showPassword = computed(() => this.options()['showPassword'], ...(ngDevMode ? [{ debugName: "showPassword" }] : /* istanbul ignore next */ []));
|
|
5549
|
+
this.textDirection = computed(() => resolvePasswordTextDirection(this.options()), ...(ngDevMode ? [{ debugName: "textDirection" }] : /* istanbul ignore next */ []));
|
|
5958
5550
|
this.show = signal(false, ...(ngDevMode ? [{ debugName: "show" }] : /* istanbul ignore next */ []));
|
|
5959
5551
|
this.clipboard = inject(AXPClipBoardService);
|
|
5960
5552
|
}
|
|
@@ -5964,7 +5556,11 @@ class AXPPasswordBoxWidgetViewComponent extends AXPValueWidgetComponent {
|
|
|
5964
5556
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPPasswordBoxWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
5965
5557
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPPasswordBoxWidgetViewComponent, isStandalone: true, selector: "axp-password-box-widget-view", usesInheritance: true, ngImport: i0, template: `
|
|
5966
5558
|
<div class="ax-col-start-1 ax-col-end-10 lg:ax-col-end-7">
|
|
5967
|
-
<div
|
|
5559
|
+
<div
|
|
5560
|
+
class="ax-flex ax-flex-1 ax-gap-3 ax-group ax-items-start ax-w-max"
|
|
5561
|
+
[attr.dir]="textDirection()"
|
|
5562
|
+
[style.direction]="textDirection()"
|
|
5563
|
+
>
|
|
5968
5564
|
<span>{{ show() ? internalValue() : '*******' }}</span>
|
|
5969
5565
|
@if (hasEyeIcon()) {
|
|
5970
5566
|
<span
|
|
@@ -5996,7 +5592,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
5996
5592
|
selector: 'axp-password-box-widget-view',
|
|
5997
5593
|
template: `
|
|
5998
5594
|
<div class="ax-col-start-1 ax-col-end-10 lg:ax-col-end-7">
|
|
5999
|
-
<div
|
|
5595
|
+
<div
|
|
5596
|
+
class="ax-flex ax-flex-1 ax-gap-3 ax-group ax-items-start ax-w-max"
|
|
5597
|
+
[attr.dir]="textDirection()"
|
|
5598
|
+
[style.direction]="textDirection()"
|
|
5599
|
+
>
|
|
6000
5600
|
<span>{{ show() ? internalValue() : '*******' }}</span>
|
|
6001
5601
|
@if (hasEyeIcon()) {
|
|
6002
5602
|
<span
|
|
@@ -6836,38 +6436,60 @@ var richTextWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
|
6836
6436
|
class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
6837
6437
|
constructor() {
|
|
6838
6438
|
super(...arguments);
|
|
6439
|
+
//#region ---- Services & Dependencies ----
|
|
6440
|
+
this.popupService = inject(AXPopupService);
|
|
6441
|
+
this.translationService = inject(AXTranslationService);
|
|
6442
|
+
this.wysiwygRef = viewChild('wysiwygRef', ...(ngDevMode ? [{ debugName: "wysiwygRef" }] : /* istanbul ignore next */ []));
|
|
6443
|
+
//#endregion
|
|
6444
|
+
//#region ---- Computed Properties ----
|
|
6839
6445
|
this.placeholder = computed(() => this.options()['placeholder'], ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
6840
6446
|
this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
6841
6447
|
this.readonly = computed(() => this.options()['readonly'], ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
|
|
6842
|
-
this.
|
|
6448
|
+
this.effectiveMultiLanguage = computed(() => shouldUseLocaleMapShape(!!this.options()['multiLanguage'], this.getValue(), this.fullPath() ? this.contextService.getSavedValue(this.fullPath()) : undefined), ...(ngDevMode ? [{ debugName: "effectiveMultiLanguage" }] : /* istanbul ignore next */ []));
|
|
6843
6449
|
this.minLineCount = computed(() => this.options()['minLineCount'] ?? this.options()['maxLineCount'] ?? 3, ...(ngDevMode ? [{ debugName: "minLineCount" }] : /* istanbul ignore next */ []));
|
|
6844
6450
|
this.maxLineCount = computed(() => this.options()['maxLineCount'] ?? this.options()['minLineCount'] ?? 3, ...(ngDevMode ? [{ debugName: "maxLineCount" }] : /* istanbul ignore next */ []));
|
|
6845
|
-
this.
|
|
6846
|
-
this.translationService = inject(AXTranslationService);
|
|
6451
|
+
this.getCurrentText = computed(() => this.translationService.resolve(this.getValue(), this.currentLanguage()), ...(ngDevMode ? [{ debugName: "getCurrentText" }] : /* istanbul ignore next */ []));
|
|
6847
6452
|
this.currentLanguage = toSignal(this.translationService.langChanges$, {
|
|
6848
6453
|
initialValue: this.translationService.getActiveLang(),
|
|
6849
6454
|
});
|
|
6850
|
-
|
|
6455
|
+
//#endregion
|
|
6456
|
+
//#region ---- Effects ----
|
|
6457
|
+
/**
|
|
6458
|
+
* Quill keeps its own DOM state; one-way ngModel does not refresh it on discard/apply.
|
|
6459
|
+
* Re-sync when the context store reverts or replaces data from outside user edits.
|
|
6460
|
+
*/
|
|
6461
|
+
this.#syncWysiwygFromContextEffect = effect(() => {
|
|
6462
|
+
const changeState = this.contextService.changeEvent().state;
|
|
6463
|
+
const text = this.getCurrentText();
|
|
6464
|
+
const wysiwyg = this.wysiwygRef();
|
|
6465
|
+
if (!this.shouldSyncWysiwygFromContext(changeState)) {
|
|
6466
|
+
return;
|
|
6467
|
+
}
|
|
6468
|
+
untracked(() => {
|
|
6469
|
+
void this.applyWysiwygContentWhenReady(wysiwyg, text);
|
|
6470
|
+
});
|
|
6471
|
+
}, ...(ngDevMode ? [{ debugName: "#syncWysiwygFromContextEffect" }] : /* istanbul ignore next */ []));
|
|
6851
6472
|
}
|
|
6473
|
+
//#endregion
|
|
6474
|
+
//#region ---- Effects ----
|
|
6475
|
+
/**
|
|
6476
|
+
* Quill keeps its own DOM state; one-way ngModel does not refresh it on discard/apply.
|
|
6477
|
+
* Re-sync when the context store reverts or replaces data from outside user edits.
|
|
6478
|
+
*/
|
|
6479
|
+
#syncWysiwygFromContextEffect;
|
|
6480
|
+
//#endregion
|
|
6481
|
+
//#region ---- UI Handlers ----
|
|
6852
6482
|
onWysiwygChanged(e) {
|
|
6853
6483
|
if (!e.isUserInteraction)
|
|
6854
6484
|
return;
|
|
6855
|
-
|
|
6856
|
-
|
|
6857
|
-
|
|
6858
|
-
|
|
6859
|
-
|
|
6860
|
-
|
|
6861
|
-
|
|
6862
|
-
|
|
6863
|
-
}
|
|
6864
|
-
}
|
|
6865
|
-
ngOnInit() {
|
|
6866
|
-
super.ngOnInit();
|
|
6867
|
-
const v = this.getValue();
|
|
6868
|
-
if (this.multiLanguage() && typeof v === 'string') {
|
|
6869
|
-
this.setValue({ [this.currentLanguage()]: v });
|
|
6870
|
-
}
|
|
6485
|
+
const path = this.fullPath();
|
|
6486
|
+
const current = this.getValue();
|
|
6487
|
+
const saved = path ? this.contextService.getSavedValue(path) : undefined;
|
|
6488
|
+
const lang = this.currentLanguage() ?? '';
|
|
6489
|
+
const nextValue = this.effectiveMultiLanguage()
|
|
6490
|
+
? buildLocaleTextMapValue(current, saved, lang, e.value ?? '')
|
|
6491
|
+
: (e.value ?? '');
|
|
6492
|
+
this.setValue(nextValue);
|
|
6871
6493
|
}
|
|
6872
6494
|
async openMultiLanguagePopup() {
|
|
6873
6495
|
const node = {
|
|
@@ -6893,8 +6515,30 @@ class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
6893
6515
|
this.setValue({ ...map });
|
|
6894
6516
|
}
|
|
6895
6517
|
}
|
|
6518
|
+
//#endregion
|
|
6519
|
+
//#region ---- Utility Methods ----
|
|
6520
|
+
shouldSyncWysiwygFromContext(state) {
|
|
6521
|
+
return state === 'restored' || state === 'initiated';
|
|
6522
|
+
}
|
|
6523
|
+
async applyWysiwygContentWhenReady(wysiwyg, text) {
|
|
6524
|
+
const content = defaultTo(text, '');
|
|
6525
|
+
for (let attempt = 0; attempt < 30; attempt++) {
|
|
6526
|
+
const editor = wysiwyg ?? this.wysiwygRef();
|
|
6527
|
+
if (!editor) {
|
|
6528
|
+
return;
|
|
6529
|
+
}
|
|
6530
|
+
try {
|
|
6531
|
+
editor.setWysiwygContent(content);
|
|
6532
|
+
return;
|
|
6533
|
+
}
|
|
6534
|
+
catch {
|
|
6535
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
6536
|
+
}
|
|
6537
|
+
}
|
|
6538
|
+
}
|
|
6896
6539
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPRichTextWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
6897
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPRichTextWidgetEditComponent, isStandalone: true, selector: "axp-rich-text-widget-edit", host: { classAttribute: "ax-block ax-flex-1" }, usesInheritance: true, ngImport: i0, template: `<ax-wysiwyg-container
|
|
6540
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPRichTextWidgetEditComponent, isStandalone: true, selector: "axp-rich-text-widget-edit", host: { classAttribute: "ax-block ax-flex-1" }, viewQueries: [{ propertyName: "wysiwygRef", first: true, predicate: ["wysiwygRef"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `<ax-wysiwyg-container
|
|
6541
|
+
#wysiwygRef
|
|
6898
6542
|
[placeHolder]="(placeholder() | translate | async)!"
|
|
6899
6543
|
[disabled]="disabled()"
|
|
6900
6544
|
[readonly]="readonly()"
|
|
@@ -6912,7 +6556,7 @@ class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
6912
6556
|
<ax-wysiwyg-list></ax-wysiwyg-list>
|
|
6913
6557
|
<ax-wysiwyg-alignment></ax-wysiwyg-alignment>
|
|
6914
6558
|
</ax-prefix>
|
|
6915
|
-
@if (
|
|
6559
|
+
@if (effectiveMultiLanguage()) {
|
|
6916
6560
|
<ax-suffix>
|
|
6917
6561
|
<ax-button class="ax-sm" (onClick)="openMultiLanguagePopup()" [disabled]="disabled()" look="blank">
|
|
6918
6562
|
<ax-prefix>
|
|
@@ -6936,6 +6580,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
6936
6580
|
args: [{
|
|
6937
6581
|
selector: 'axp-rich-text-widget-edit',
|
|
6938
6582
|
template: `<ax-wysiwyg-container
|
|
6583
|
+
#wysiwygRef
|
|
6939
6584
|
[placeHolder]="(placeholder() | translate | async)!"
|
|
6940
6585
|
[disabled]="disabled()"
|
|
6941
6586
|
[readonly]="readonly()"
|
|
@@ -6953,7 +6598,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
6953
6598
|
<ax-wysiwyg-list></ax-wysiwyg-list>
|
|
6954
6599
|
<ax-wysiwyg-alignment></ax-wysiwyg-alignment>
|
|
6955
6600
|
</ax-prefix>
|
|
6956
|
-
@if (
|
|
6601
|
+
@if (effectiveMultiLanguage()) {
|
|
6957
6602
|
<ax-suffix>
|
|
6958
6603
|
<ax-button class="ax-sm" (onClick)="openMultiLanguagePopup()" [disabled]="disabled()" look="blank">
|
|
6959
6604
|
<ax-prefix>
|
|
@@ -6987,7 +6632,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
6987
6632
|
AsyncPipe,
|
|
6988
6633
|
],
|
|
6989
6634
|
}]
|
|
6990
|
-
}] });
|
|
6635
|
+
}], propDecorators: { wysiwygRef: [{ type: i0.ViewChild, args: ['wysiwygRef', { isSignal: true }] }] } });
|
|
6991
6636
|
|
|
6992
6637
|
var richTextWidgetEdit_component = /*#__PURE__*/Object.freeze({
|
|
6993
6638
|
__proto__: null,
|
|
@@ -7303,9 +6948,6 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7303
6948
|
this.hasSeenDataSource = false;
|
|
7304
6949
|
//#region ---- Focus Management ----
|
|
7305
6950
|
this.shouldFocus = signal(false, ...(ngDevMode ? [{ debugName: "shouldFocus" }] : /* istanbul ignore next */ []));
|
|
7306
|
-
this.eff = effect(() => {
|
|
7307
|
-
console.log('filter', this.filter());
|
|
7308
|
-
}, ...(ngDevMode ? [{ debugName: "eff" }] : /* istanbul ignore next */ []));
|
|
7309
6951
|
this.#focusEffect = effect(() => {
|
|
7310
6952
|
const shouldFocus = this.shouldFocus();
|
|
7311
6953
|
if (!shouldFocus) {
|
|
@@ -7397,7 +7039,7 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7397
7039
|
if (this.filterMode()) {
|
|
7398
7040
|
const newValue = e.value;
|
|
7399
7041
|
const text = this.selectedItems().map((item) => get(item, this.textField()));
|
|
7400
|
-
this.
|
|
7042
|
+
this.setValue({
|
|
7401
7043
|
value: newValue,
|
|
7402
7044
|
displayText: text,
|
|
7403
7045
|
operation: {
|
|
@@ -7406,26 +7048,13 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7406
7048
|
});
|
|
7407
7049
|
}
|
|
7408
7050
|
else if (this.widgetsConfigs.selectValueStrategy === 'valueField') {
|
|
7409
|
-
this.
|
|
7051
|
+
this.setValue(e.value);
|
|
7410
7052
|
}
|
|
7411
7053
|
else if (this.multiple()) {
|
|
7412
|
-
this.
|
|
7054
|
+
this.setValue(this.selectedItems());
|
|
7413
7055
|
}
|
|
7414
7056
|
else {
|
|
7415
|
-
this.
|
|
7416
|
-
}
|
|
7417
|
-
}
|
|
7418
|
-
else if (!this.filterMode()) {
|
|
7419
|
-
// Programmatic sync from the select box (hydration, datasource refresh).
|
|
7420
|
-
const systemOrigin = { origin: 'system' };
|
|
7421
|
-
if (this.widgetsConfigs.selectValueStrategy === 'valueField') {
|
|
7422
|
-
this.setValue(e.value, systemOrigin);
|
|
7423
|
-
}
|
|
7424
|
-
else if (this.multiple()) {
|
|
7425
|
-
this.setValue(this.selectedItems(), systemOrigin);
|
|
7426
|
-
}
|
|
7427
|
-
else {
|
|
7428
|
-
this.setValue(this.selectedItems()[0], systemOrigin);
|
|
7057
|
+
this.setValue(this.selectedItems()[0]);
|
|
7429
7058
|
}
|
|
7430
7059
|
}
|
|
7431
7060
|
//#endregion
|
|
@@ -7863,16 +7492,32 @@ class AXPSelectionListWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7863
7492
|
this.look = computed(() => this.options()['look'] ?? 'solid', ...(ngDevMode ? [{ debugName: "look" }] : /* istanbul ignore next */ []));
|
|
7864
7493
|
this.showControl = computed(() => this.options()['showControl'] ?? true, ...(ngDevMode ? [{ debugName: "showControl" }] : /* istanbul ignore next */ []));
|
|
7865
7494
|
this.imageMode = computed(() => this.options()['imageMode'] ?? false, ...(ngDevMode ? [{ debugName: "imageMode" }] : /* istanbul ignore next */ []));
|
|
7495
|
+
this.imageField = computed(() => this.options()['imageField'] ?? this.textField(), ...(ngDevMode ? [{ debugName: "imageField" }] : /* istanbul ignore next */ []));
|
|
7866
7496
|
this.displayItems = signal([], ...(ngDevMode ? [{ debugName: "displayItems" }] : /* istanbul ignore next */ []));
|
|
7867
|
-
this.ef = effect(() => {
|
|
7868
|
-
this.
|
|
7869
|
-
|
|
7870
|
-
.
|
|
7871
|
-
|
|
7497
|
+
this.ef = effect((onCleanup) => {
|
|
7498
|
+
const rawDataSource = this.options()['dataSource'];
|
|
7499
|
+
if (Array.isArray(rawDataSource) && rawDataSource.length > 0) {
|
|
7500
|
+
this.displayItems.set(rawDataSource);
|
|
7501
|
+
}
|
|
7502
|
+
const ds = this.dataSource();
|
|
7503
|
+
const sub = ds.onChanged.subscribe((e) => {
|
|
7504
|
+
if (e.items?.length) {
|
|
7505
|
+
this.displayItems.set(e.items);
|
|
7506
|
+
}
|
|
7872
7507
|
});
|
|
7873
|
-
|
|
7508
|
+
onCleanup(() => sub.unsubscribe());
|
|
7509
|
+
void ds.refresh();
|
|
7874
7510
|
}, ...(ngDevMode ? [{ debugName: "ef" }] : /* istanbul ignore next */ []));
|
|
7875
7511
|
}
|
|
7512
|
+
resolveItemImage(item) {
|
|
7513
|
+
const field = this.imageField();
|
|
7514
|
+
const row = get(item, 'data', item);
|
|
7515
|
+
return String(get(row, field, ''));
|
|
7516
|
+
}
|
|
7517
|
+
resolveItemAlt(item) {
|
|
7518
|
+
const row = get(item, 'data', item);
|
|
7519
|
+
return String(get(row, 'title', get(row, this.valueField(), '')));
|
|
7520
|
+
}
|
|
7876
7521
|
handleValueChange(e) {
|
|
7877
7522
|
if (e.isUserInteraction) {
|
|
7878
7523
|
this.setValue(e.value);
|
|
@@ -7903,7 +7548,7 @@ class AXPSelectionListWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7903
7548
|
>
|
|
7904
7549
|
<ng-template #imageTemplate let-item>
|
|
7905
7550
|
@if (imageMode()) {
|
|
7906
|
-
<img class="ax-w-14 ax-h-14" [src]="item.
|
|
7551
|
+
<img class="ax-w-14 ax-h-14" [src]="resolveItemImage(item)" [attr.alt]="resolveItemAlt(item)" />
|
|
7907
7552
|
}
|
|
7908
7553
|
</ng-template>
|
|
7909
7554
|
@for (validation of validationRules(); track $index) {
|
|
@@ -7938,7 +7583,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
7938
7583
|
>
|
|
7939
7584
|
<ng-template #imageTemplate let-item>
|
|
7940
7585
|
@if (imageMode()) {
|
|
7941
|
-
<img class="ax-w-14 ax-h-14" [src]="item.
|
|
7586
|
+
<img class="ax-w-14 ax-h-14" [src]="resolveItemImage(item)" [attr.alt]="resolveItemAlt(item)" />
|
|
7942
7587
|
}
|
|
7943
7588
|
</ng-template>
|
|
7944
7589
|
@for (validation of validationRules(); track $index) {
|
|
@@ -7967,6 +7612,10 @@ class AXPSelectionListWidgetViewComponent extends AXPDataListWidgetComponent {
|
|
|
7967
7612
|
constructor() {
|
|
7968
7613
|
super(...arguments);
|
|
7969
7614
|
this.imageMode = computed(() => this.options()['imageMode'] ?? false, ...(ngDevMode ? [{ debugName: "imageMode" }] : /* istanbul ignore next */ []));
|
|
7615
|
+
this.imageField = computed(() => this.options()['imageField'] ?? this.textField(), ...(ngDevMode ? [{ debugName: "imageField" }] : /* istanbul ignore next */ []));
|
|
7616
|
+
}
|
|
7617
|
+
resolveItemImage(item) {
|
|
7618
|
+
return String(item[this.imageField()] ?? '');
|
|
7970
7619
|
}
|
|
7971
7620
|
get __class() {
|
|
7972
7621
|
const cls = {};
|
|
@@ -7978,7 +7627,7 @@ class AXPSelectionListWidgetViewComponent extends AXPDataListWidgetComponent {
|
|
|
7978
7627
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPSelectionListWidgetViewComponent, isStandalone: true, selector: "axp-selection-list-widget-view", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
|
|
7979
7628
|
@for (item of selectedItems(); track $index) {
|
|
7980
7629
|
@if (imageMode()) {
|
|
7981
|
-
<img class="ax-w-14 ax-h-14 ax-rounded-sm" [src]="item[textField()]" />
|
|
7630
|
+
<img class="ax-w-14 ax-h-14 ax-rounded-sm" [src]="resolveItemImage(item)" [attr.alt]="item[textField()]" />
|
|
7982
7631
|
} @else {
|
|
7983
7632
|
<ax-badge class="ax-p-0.5" [color]="'surface'" [text]="item[textField()]"></ax-badge>
|
|
7984
7633
|
}
|
|
@@ -7994,7 +7643,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
7994
7643
|
template: `
|
|
7995
7644
|
@for (item of selectedItems(); track $index) {
|
|
7996
7645
|
@if (imageMode()) {
|
|
7997
|
-
<img class="ax-w-14 ax-h-14 ax-rounded-sm" [src]="item[textField()]" />
|
|
7646
|
+
<img class="ax-w-14 ax-h-14 ax-rounded-sm" [src]="resolveItemImage(item)" [attr.alt]="item[textField()]" />
|
|
7998
7647
|
} @else {
|
|
7999
7648
|
<ax-badge class="ax-p-0.5" [color]="'surface'" [text]="item[textField()]"></ax-badge>
|
|
8000
7649
|
}
|
|
@@ -8956,7 +8605,7 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
8956
8605
|
super(...arguments);
|
|
8957
8606
|
this.popupService = inject(AXPopupService);
|
|
8958
8607
|
this.translationService = inject(AXTranslationService);
|
|
8959
|
-
this.
|
|
8608
|
+
this.effectiveMultiLanguage = computed(() => shouldUseLocaleMapShape(!!this.options()['multiLanguage'], this.getValue(), this.fullPath() ? this.contextService.getSavedValue(this.fullPath()) : undefined), ...(ngDevMode ? [{ debugName: "effectiveMultiLanguage" }] : /* istanbul ignore next */ []));
|
|
8960
8609
|
this.hasClearButton = computed(() => this.options()['hasClearButton'], ...(ngDevMode ? [{ debugName: "hasClearButton" }] : /* istanbul ignore next */ []));
|
|
8961
8610
|
this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
8962
8611
|
this.readonly = computed(() => this.options()['readonly'], ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
|
|
@@ -8967,10 +8616,6 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
8967
8616
|
}
|
|
8968
8617
|
ngOnInit() {
|
|
8969
8618
|
super.ngOnInit();
|
|
8970
|
-
const v = this.getValue();
|
|
8971
|
-
if (this.multiLanguage() && typeof v === 'string') {
|
|
8972
|
-
this.setValue({ [this.currentLanguage()]: v }, { origin: 'system' });
|
|
8973
|
-
}
|
|
8974
8619
|
this.translationService.langChanges$.subscribe((i) => {
|
|
8975
8620
|
this.currentLanguage.set(i);
|
|
8976
8621
|
});
|
|
@@ -8979,15 +8624,13 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
8979
8624
|
if (!e.isUserInteraction) {
|
|
8980
8625
|
return;
|
|
8981
8626
|
}
|
|
8982
|
-
|
|
8983
|
-
|
|
8984
|
-
|
|
8985
|
-
|
|
8986
|
-
this.
|
|
8987
|
-
|
|
8988
|
-
|
|
8989
|
-
this.setUserValue(e.value ?? '');
|
|
8990
|
-
}
|
|
8627
|
+
const path = this.fullPath();
|
|
8628
|
+
const current = this.getValue();
|
|
8629
|
+
const saved = path ? this.contextService.getSavedValue(path) : undefined;
|
|
8630
|
+
const nextValue = this.effectiveMultiLanguage()
|
|
8631
|
+
? buildLocaleTextMapValue(current, saved, this.currentLanguage(), e.value ?? '')
|
|
8632
|
+
: (e.value ?? '');
|
|
8633
|
+
this.setValue(nextValue);
|
|
8991
8634
|
}
|
|
8992
8635
|
getCurrentText() {
|
|
8993
8636
|
return this.translationService.resolve(this.getValue(), this.currentLanguage());
|
|
@@ -9045,7 +8688,7 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
9045
8688
|
@if (hasClearButton()) {
|
|
9046
8689
|
<ax-clear-button></ax-clear-button>
|
|
9047
8690
|
}
|
|
9048
|
-
@if (
|
|
8691
|
+
@if (effectiveMultiLanguage()) {
|
|
9049
8692
|
<ax-suffix>
|
|
9050
8693
|
<ax-button (onClick)="openMultiLanguagePopup()" [disabled]="disabled()" look="blank">
|
|
9051
8694
|
<ax-prefix>
|
|
@@ -9085,7 +8728,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
9085
8728
|
@if (hasClearButton()) {
|
|
9086
8729
|
<ax-clear-button></ax-clear-button>
|
|
9087
8730
|
}
|
|
9088
|
-
@if (
|
|
8731
|
+
@if (effectiveMultiLanguage()) {
|
|
9089
8732
|
<ax-suffix>
|
|
9090
8733
|
<ax-button (onClick)="openMultiLanguagePopup()" [disabled]="disabled()" look="blank">
|
|
9091
8734
|
<ax-prefix>
|
|
@@ -10558,7 +10201,7 @@ class AXPDataListWidgetViewComponent extends AXPValueWidgetComponent {
|
|
|
10558
10201
|
></ax-dropdown-command-column>
|
|
10559
10202
|
}
|
|
10560
10203
|
</ax-data-table>
|
|
10561
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$c.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$c.AXRowIndexColumnComponent, selector: "ax-index-column", inputs: ["width", "caption", "fixed", "footerTemplate", "padZero"] }, { kind: "component", type: i1$c.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i1$c.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$c.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10204
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1$c.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1$c.AXRowIndexColumnComponent, selector: "ax-index-column", inputs: ["width", "caption", "fixed", "footerTemplate", "padZero"] }, { kind: "component", type: i1$c.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed"] }, { kind: "component", type: i1$c.AXRowCommandColumnComponent, selector: "ax-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "items"], outputs: ["onItemClick"] }, { kind: "component", type: i1$c.AXRowDropdownCommandColumnComponent, selector: "ax-dropdown-command-column", inputs: ["width", "caption", "fixed", "footerTemplate", "emptyStateTemplate", "emptyStateText", "items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i1.AXPWidgetColumnRendererComponent, selector: "axp-widget-column-renderer", inputs: ["caption", "customExpandIcon", "customCollapseIcon", "customWidth", "node", "footerTemplate", "expandHandler", "sortEnabled", "headerSortDirection", "headerSortPriority", "columnFixed", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10562
10205
|
}
|
|
10563
10206
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataListWidgetViewComponent, decorators: [{
|
|
10564
10207
|
type: Component,
|
|
@@ -12367,29 +12010,63 @@ var mapWidgetView_component = /*#__PURE__*/Object.freeze({
|
|
|
12367
12010
|
AXPMapWidgetViewComponent: AXPMapWidgetViewComponent
|
|
12368
12011
|
});
|
|
12369
12012
|
|
|
12370
|
-
//#region ----
|
|
12371
|
-
|
|
12013
|
+
//#region ---- QR code print utility ----
|
|
12014
|
+
/**
|
|
12015
|
+
* Opens the system print dialog for the QR code SVG inside the given container.
|
|
12016
|
+
*/
|
|
12017
|
+
function printQrcodeFromElement(container, size) {
|
|
12018
|
+
const svg = container.querySelector('svg');
|
|
12019
|
+
if (!svg) {
|
|
12020
|
+
return;
|
|
12021
|
+
}
|
|
12022
|
+
const printWindow = window.open('', '_blank', 'noopener,noreferrer');
|
|
12023
|
+
if (!printWindow) {
|
|
12024
|
+
return;
|
|
12025
|
+
}
|
|
12026
|
+
const svgMarkup = svg.outerHTML;
|
|
12027
|
+
printWindow.document.write(`<!DOCTYPE html>
|
|
12028
|
+
<html>
|
|
12029
|
+
<head>
|
|
12030
|
+
<title>QR Code</title>
|
|
12031
|
+
<style>
|
|
12032
|
+
body {
|
|
12033
|
+
display: flex;
|
|
12034
|
+
align-items: center;
|
|
12035
|
+
justify-content: center;
|
|
12036
|
+
min-height: 100vh;
|
|
12037
|
+
margin: 0;
|
|
12038
|
+
}
|
|
12039
|
+
svg {
|
|
12040
|
+
width: ${size}px;
|
|
12041
|
+
height: ${size}px;
|
|
12042
|
+
}
|
|
12043
|
+
</style>
|
|
12044
|
+
</head>
|
|
12045
|
+
<body>${svgMarkup}</body>
|
|
12046
|
+
</html>`);
|
|
12047
|
+
printWindow.document.close();
|
|
12048
|
+
printWindow.focus();
|
|
12049
|
+
printWindow.print();
|
|
12050
|
+
printWindow.close();
|
|
12051
|
+
}
|
|
12052
|
+
//#endregion
|
|
12053
|
+
|
|
12054
|
+
//#region ---- Types ----
|
|
12055
|
+
const QRCODE_WIDGET_NAME = 'qrcode';
|
|
12056
|
+
//#endregion
|
|
12057
|
+
//#region ---- QR code viewer service ----
|
|
12058
|
+
/**
|
|
12059
|
+
* Opens a read-only QR code preview dialog with print and cancel actions.
|
|
12060
|
+
*/
|
|
12061
|
+
class AXPQrcodeViewerService {
|
|
12372
12062
|
constructor() {
|
|
12373
|
-
|
|
12374
|
-
//#region ---- Services & Dependencies ----
|
|
12063
|
+
//#region ---- Services & Dependencies ----
|
|
12375
12064
|
this.layoutBuilder = inject(AXPLayoutBuilderService);
|
|
12376
|
-
//#endregion
|
|
12377
|
-
//#region ---- Computed Properties ----
|
|
12378
|
-
this.size = computed(() => this.options?.size ?? 200, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
12379
|
-
this.level = computed(() => {
|
|
12380
|
-
const opt = this.options?.level;
|
|
12381
|
-
return typeof opt === 'string' ? opt : (opt?.id ?? 'M');
|
|
12382
|
-
}, ...(ngDevMode ? [{ debugName: "level" }] : /* istanbul ignore next */ []));
|
|
12383
|
-
this.color = computed(() => {
|
|
12384
|
-
const opt = this.options?.color;
|
|
12385
|
-
return AXColorUtil.colorStringToHex(opt ?? '#000000');
|
|
12386
|
-
}, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
12387
|
-
this.outputType = computed(() => this.options?.outputType ?? 'svg', ...(ngDevMode ? [{ debugName: "outputType" }] : /* istanbul ignore next */ []));
|
|
12388
12065
|
}
|
|
12389
12066
|
//#endregion
|
|
12390
|
-
//#region ----
|
|
12391
|
-
async
|
|
12392
|
-
const contentValue =
|
|
12067
|
+
//#region ---- Public API ----
|
|
12068
|
+
async open(options) {
|
|
12069
|
+
const contentValue = options.content;
|
|
12393
12070
|
if (!contentValue) {
|
|
12394
12071
|
return;
|
|
12395
12072
|
}
|
|
@@ -12397,26 +12074,76 @@ class AXPQrcodeWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
12397
12074
|
.create()
|
|
12398
12075
|
.dialog((dialog) => {
|
|
12399
12076
|
dialog
|
|
12400
|
-
.setTitle(
|
|
12077
|
+
.setTitle(options.title ?? '@platform-layout-widgets:widgets.qrcode.title')
|
|
12401
12078
|
.setSize('md')
|
|
12079
|
+
.setCloseButton(true)
|
|
12402
12080
|
.setContext({ qr: contentValue })
|
|
12403
12081
|
.content((content) => {
|
|
12404
|
-
content.setDirection('column').setGap('24px').setAlignItems('center').customWidget(
|
|
12082
|
+
content.setDirection('column').setGap('24px').setAlignItems('center').customWidget(QRCODE_WIDGET_NAME, {
|
|
12083
|
+
name: QRCODE_WIDGET_NAME,
|
|
12405
12084
|
path: 'qr',
|
|
12406
|
-
size:
|
|
12407
|
-
level:
|
|
12408
|
-
color:
|
|
12085
|
+
size: options.size ?? 200,
|
|
12086
|
+
level: options.level ?? 'M',
|
|
12087
|
+
color: options.color ?? '#000000',
|
|
12409
12088
|
readonly: true,
|
|
12410
|
-
outputType:
|
|
12089
|
+
outputType: options.outputType ?? 'svg',
|
|
12411
12090
|
});
|
|
12412
12091
|
})
|
|
12413
12092
|
.setActions((actions) => {
|
|
12093
|
+
actions.custom({
|
|
12094
|
+
title: '@general:actions.print.title',
|
|
12095
|
+
icon: 'fa-light fa-print',
|
|
12096
|
+
command: { name: `widget:${QRCODE_WIDGET_NAME}.print` },
|
|
12097
|
+
position: 'suffix',
|
|
12098
|
+
});
|
|
12414
12099
|
actions.cancel('@general:actions.cancel.title');
|
|
12415
12100
|
});
|
|
12416
12101
|
})
|
|
12417
12102
|
.show();
|
|
12418
12103
|
ref.close();
|
|
12419
12104
|
}
|
|
12105
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPQrcodeViewerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12106
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPQrcodeViewerService, providedIn: 'root' }); }
|
|
12107
|
+
}
|
|
12108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPQrcodeViewerService, decorators: [{
|
|
12109
|
+
type: Injectable,
|
|
12110
|
+
args: [{ providedIn: 'root' }]
|
|
12111
|
+
}] });
|
|
12112
|
+
|
|
12113
|
+
//#region ---- Component: QR Code Widget Column ----
|
|
12114
|
+
class AXPQrcodeWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
12115
|
+
constructor() {
|
|
12116
|
+
super(...arguments);
|
|
12117
|
+
//#region ---- Services & Dependencies ----
|
|
12118
|
+
this.qrcodeViewer = inject(AXPQrcodeViewerService);
|
|
12119
|
+
//#endregion
|
|
12120
|
+
//#region ---- Computed Properties ----
|
|
12121
|
+
this.size = computed(() => this.options?.size ?? 200, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
12122
|
+
this.level = computed(() => {
|
|
12123
|
+
const opt = this.options?.level;
|
|
12124
|
+
return typeof opt === 'string' ? opt : (opt?.id ?? 'M');
|
|
12125
|
+
}, ...(ngDevMode ? [{ debugName: "level" }] : /* istanbul ignore next */ []));
|
|
12126
|
+
this.color = computed(() => {
|
|
12127
|
+
const opt = this.options?.color;
|
|
12128
|
+
return AXColorUtil.colorStringToHex(opt ?? '#000000');
|
|
12129
|
+
}, ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
12130
|
+
this.outputType = computed(() => this.options?.outputType ?? 'svg', ...(ngDevMode ? [{ debugName: "outputType" }] : /* istanbul ignore next */ []));
|
|
12131
|
+
}
|
|
12132
|
+
//#endregion
|
|
12133
|
+
//#region ---- UI Handlers ----
|
|
12134
|
+
async showPopup() {
|
|
12135
|
+
const contentValue = this.rawValue;
|
|
12136
|
+
if (!contentValue) {
|
|
12137
|
+
return;
|
|
12138
|
+
}
|
|
12139
|
+
await this.qrcodeViewer.open({
|
|
12140
|
+
content: contentValue,
|
|
12141
|
+
size: this.size(),
|
|
12142
|
+
level: this.level(),
|
|
12143
|
+
color: this.color(),
|
|
12144
|
+
outputType: this.outputType(),
|
|
12145
|
+
});
|
|
12146
|
+
}
|
|
12420
12147
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPQrcodeWidgetColumnComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
12421
12148
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPQrcodeWidgetColumnComponent, isStandalone: true, selector: "axp-qrcode-widget-column", inputs: { rawValue: "rawValue", rowData: "rowData" }, usesInheritance: true, ngImport: i0, template: `
|
|
12422
12149
|
<div class="ax-flex ax-items-center ax-gap-2">
|
|
@@ -12606,22 +12333,49 @@ var qrcodeWidgetEdit_component = /*#__PURE__*/Object.freeze({
|
|
|
12606
12333
|
class AXPQrcodeWidgetViewComponent extends AXPValueWidgetComponent {
|
|
12607
12334
|
constructor() {
|
|
12608
12335
|
super(...arguments);
|
|
12336
|
+
//#region ---- View Children ----
|
|
12337
|
+
this.qrContainer = viewChild('qrContainer', ...(ngDevMode ? [{ debugName: "qrContainer" }] : /* istanbul ignore next */ []));
|
|
12338
|
+
//#endregion
|
|
12339
|
+
//#region ---- Computed Properties ----
|
|
12609
12340
|
this.size = computed(() => this.options()['size'] ?? 200, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
12610
12341
|
this.level = computed(() => this.options()['level']?.id ?? 'M', ...(ngDevMode ? [{ debugName: "level" }] : /* istanbul ignore next */ []));
|
|
12611
12342
|
this.color = computed(() => AXColorUtil.colorStringToHex(this.options()['color'] ?? '#000000'), ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
12612
12343
|
this.outputType = computed(() => this.options()['outputType'] ?? 'svg', ...(ngDevMode ? [{ debugName: "outputType" }] : /* istanbul ignore next */ []));
|
|
12613
12344
|
}
|
|
12345
|
+
//#endregion
|
|
12346
|
+
//#region ---- Host Bindings ----
|
|
12614
12347
|
get __class() {
|
|
12615
12348
|
const cls = {};
|
|
12616
|
-
cls[
|
|
12617
|
-
return cls
|
|
12349
|
+
cls['ax-inline-block'] = true;
|
|
12350
|
+
return Object.keys(cls)
|
|
12351
|
+
.filter((key) => cls[key])
|
|
12352
|
+
.join(' ');
|
|
12353
|
+
}
|
|
12354
|
+
//#endregion
|
|
12355
|
+
//#region ---- Widget API ----
|
|
12356
|
+
api() {
|
|
12357
|
+
return {
|
|
12358
|
+
print: () => {
|
|
12359
|
+
const container = this.qrContainer()?.nativeElement;
|
|
12360
|
+
if (container) {
|
|
12361
|
+
printQrcodeFromElement(container, this.size());
|
|
12362
|
+
}
|
|
12363
|
+
},
|
|
12364
|
+
};
|
|
12618
12365
|
}
|
|
12619
12366
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPQrcodeWidgetViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
12620
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPQrcodeWidgetViewComponent, isStandalone: true, selector: "axp-qrcode-widget", host: { properties: { "class": "this.__class" } }, usesInheritance: true, ngImport: i0, template: `
|
|
12621
|
-
{{ getValue() }}
|
|
12367
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPQrcodeWidgetViewComponent, isStandalone: true, selector: "axp-qrcode-widget", host: { properties: { "class": "this.__class" } }, viewQueries: [{ propertyName: "qrContainer", first: true, predicate: ["qrContainer"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
|
|
12622
12368
|
@if (getValue()) {
|
|
12623
|
-
<
|
|
12624
|
-
|
|
12369
|
+
<div #qrContainer class="ax-inline-block">
|
|
12370
|
+
<ax-qrcode
|
|
12371
|
+
[content]="getValue()"
|
|
12372
|
+
[size]="size()"
|
|
12373
|
+
[color]="color()"
|
|
12374
|
+
[level]="level()"
|
|
12375
|
+
[outputType]="outputType()"
|
|
12376
|
+
>
|
|
12377
|
+
</ax-qrcode>
|
|
12378
|
+
</div>
|
|
12625
12379
|
}
|
|
12626
12380
|
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXQrcodeModule }, { kind: "component", type: i5$3.AXQrcodeComponent, selector: "ax-qrcode", inputs: ["content", "size", "level", "color", "backgroundColor", "outputType"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12627
12381
|
}
|
|
@@ -12630,16 +12384,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
12630
12384
|
args: [{
|
|
12631
12385
|
selector: 'axp-qrcode-widget',
|
|
12632
12386
|
template: `
|
|
12633
|
-
{{ getValue() }}
|
|
12634
12387
|
@if (getValue()) {
|
|
12635
|
-
<
|
|
12636
|
-
|
|
12388
|
+
<div #qrContainer class="ax-inline-block">
|
|
12389
|
+
<ax-qrcode
|
|
12390
|
+
[content]="getValue()"
|
|
12391
|
+
[size]="size()"
|
|
12392
|
+
[color]="color()"
|
|
12393
|
+
[level]="level()"
|
|
12394
|
+
[outputType]="outputType()"
|
|
12395
|
+
>
|
|
12396
|
+
</ax-qrcode>
|
|
12397
|
+
</div>
|
|
12637
12398
|
}
|
|
12638
12399
|
`,
|
|
12639
12400
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
12640
12401
|
imports: [AXQrcodeModule],
|
|
12641
12402
|
}]
|
|
12642
|
-
}], propDecorators: { __class: [{
|
|
12403
|
+
}], propDecorators: { qrContainer: [{ type: i0.ViewChild, args: ['qrContainer', { isSignal: true }] }], __class: [{
|
|
12643
12404
|
type: HostBinding,
|
|
12644
12405
|
args: ['class']
|
|
12645
12406
|
}] } });
|
|
@@ -13006,7 +12767,7 @@ class AXPSignatureWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
13006
12767
|
.create()
|
|
13007
12768
|
.dialog((dialog) => {
|
|
13008
12769
|
dialog
|
|
13009
|
-
.setTitle('
|
|
12770
|
+
.setTitle('@platform-layout-widgets:widgets.signature.title')
|
|
13010
12771
|
.setSize('lg')
|
|
13011
12772
|
.content((layoutBuilder) => {
|
|
13012
12773
|
layoutBuilder.flex((flex) => {
|
|
@@ -13078,17 +12839,43 @@ var signaturePadWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
|
13078
12839
|
AXPSignatureWidgetColumnComponent: AXPSignatureWidgetColumnComponent
|
|
13079
12840
|
});
|
|
13080
12841
|
|
|
12842
|
+
//#region ---- Component: Signature Pad Widget Edit ----
|
|
13081
12843
|
class AXPSignatureWidgetEditComponent extends AXPValueWidgetComponent {
|
|
13082
12844
|
constructor() {
|
|
13083
12845
|
super(...arguments);
|
|
12846
|
+
//#region ---- Options & State ----
|
|
13084
12847
|
this.disabled = computed(() => this.options()['disabled'] ?? false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
13085
|
-
/** When true (default), show click overlay
|
|
12848
|
+
/** When true (default), show click-to-edit overlay over read-only paint. Set false when used inside a dialog. */
|
|
13086
12849
|
this.showOverlay = computed(() => this.options()['showOverlay'] ?? true, ...(ngDevMode ? [{ debugName: "showOverlay" }] : /* istanbul ignore next */ []));
|
|
13087
|
-
/**
|
|
12850
|
+
/** Paint editMode: true hides pen/highlighter/eraser toolbars. */
|
|
13088
12851
|
this.editMode = computed(() => this.options()['editMode'] ?? true, ...(ngDevMode ? [{ debugName: "editMode" }] : /* istanbul ignore next */ []));
|
|
12852
|
+
this.hasSignature = computed(() => {
|
|
12853
|
+
const value = this.getValue();
|
|
12854
|
+
return typeof value === 'string' && value.length > 0;
|
|
12855
|
+
}, ...(ngDevMode ? [{ debugName: "hasSignature" }] : /* istanbul ignore next */ []));
|
|
12856
|
+
this.showSignaturePreview = computed(() => this.showOverlay() && this.hasSignature(), ...(ngDevMode ? [{ debugName: "showSignaturePreview" }] : /* istanbul ignore next */ []));
|
|
12857
|
+
this.showPaintSurface = computed(() => !this.showOverlay(), ...(ngDevMode ? [{ debugName: "showPaintSurface" }] : /* istanbul ignore next */ []));
|
|
12858
|
+
this.isInteracting = signal(false, ...(ngDevMode ? [{ debugName: "isInteracting" }] : /* istanbul ignore next */ []));
|
|
12859
|
+
this.showEmptyHint = computed(() => this.showOverlay() && !this.hasSignature(), ...(ngDevMode ? [{ debugName: "showEmptyHint" }] : /* istanbul ignore next */ []));
|
|
12860
|
+
this.showDialogHint = computed(() => !this.showOverlay() && !this.hasSignature() && !this.isInteracting(), ...(ngDevMode ? [{ debugName: "showDialogHint" }] : /* istanbul ignore next */ []));
|
|
12861
|
+
this.showDesktopHover = computed(() => this.showOverlay() && !this.deviceService.isTouchScreen() && !this.disabled(), ...(ngDevMode ? [{ debugName: "showDesktopHover" }] : /* istanbul ignore next */ []));
|
|
12862
|
+
this.hovering = signal(false, ...(ngDevMode ? [{ debugName: "hovering" }] : /* istanbul ignore next */ []));
|
|
12863
|
+
this.emptyHint = computed(() => {
|
|
12864
|
+
const placeholder = this.options()['placeholder']?.trim();
|
|
12865
|
+
return placeholder || '@platform-layout-widgets:widgets.signature.empty-state.hint';
|
|
12866
|
+
}, ...(ngDevMode ? [{ debugName: "emptyHint" }] : /* istanbul ignore next */ []));
|
|
12867
|
+
this.signHereHint = computed(() => {
|
|
12868
|
+
const placeholder = this.options()['placeholder']?.trim();
|
|
12869
|
+
return placeholder || '@platform-layout-widgets:widgets.signature.empty-state.sign-here';
|
|
12870
|
+
}, ...(ngDevMode ? [{ debugName: "signHereHint" }] : /* istanbul ignore next */ []));
|
|
13089
12871
|
this.paintContainer = viewChild('paintContainer', ...(ngDevMode ? [{ debugName: "paintContainer" }] : /* istanbul ignore next */ []));
|
|
13090
12872
|
this.paintView = viewChild('paintView', ...(ngDevMode ? [{ debugName: "paintView" }] : /* istanbul ignore next */ []));
|
|
13091
|
-
|
|
12873
|
+
//#endregion
|
|
12874
|
+
//#region ---- Services & Dependencies ----
|
|
12875
|
+
this.signatureEditorService = inject(AXPSignatureEditorService);
|
|
12876
|
+
this.deviceService = inject(AXPDeviceService);
|
|
12877
|
+
//#endregion
|
|
12878
|
+
//#region ---- Effects ----
|
|
13092
12879
|
this.#loadInitialImageEffect = effect(() => {
|
|
13093
12880
|
const view = this.paintView();
|
|
13094
12881
|
const container = this.paintContainer();
|
|
@@ -13098,141 +12885,92 @@ class AXPSignatureWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
13098
12885
|
}
|
|
13099
12886
|
else if (container && value == null) {
|
|
13100
12887
|
container.clear();
|
|
12888
|
+
this.isInteracting.set(false);
|
|
13101
12889
|
}
|
|
13102
12890
|
}, ...(ngDevMode ? [{ debugName: "#loadInitialImageEffect" }] : /* istanbul ignore next */ []));
|
|
13103
12891
|
this.#init = afterNextRender(() => {
|
|
13104
12892
|
this.paintContainer()?.setPenWidth(5);
|
|
13105
12893
|
});
|
|
13106
12894
|
}
|
|
12895
|
+
//#endregion
|
|
12896
|
+
//#region ---- Effects ----
|
|
13107
12897
|
#loadInitialImageEffect;
|
|
13108
12898
|
#init;
|
|
13109
|
-
|
|
12899
|
+
//#endregion
|
|
12900
|
+
//#region ---- Widget API ----
|
|
12901
|
+
api() {
|
|
12902
|
+
return {
|
|
12903
|
+
clear: () => {
|
|
12904
|
+
this.clearSignaturePad();
|
|
12905
|
+
},
|
|
12906
|
+
};
|
|
12907
|
+
}
|
|
12908
|
+
//#endregion
|
|
12909
|
+
//#region ---- UI Handlers ----
|
|
12910
|
+
clearSignaturePad() {
|
|
12911
|
+
this.setValue(null);
|
|
12912
|
+
this.paintContainer()?.clear();
|
|
12913
|
+
this.isInteracting.set(false);
|
|
12914
|
+
}
|
|
12915
|
+
handleMouseEnter() {
|
|
12916
|
+
if (!this.showDesktopHover()) {
|
|
12917
|
+
return;
|
|
12918
|
+
}
|
|
12919
|
+
this.hovering.set(true);
|
|
12920
|
+
}
|
|
12921
|
+
handleMouseLeave() {
|
|
12922
|
+
if (!this.showDesktopHover()) {
|
|
12923
|
+
return;
|
|
12924
|
+
}
|
|
12925
|
+
this.hovering.set(false);
|
|
12926
|
+
}
|
|
12927
|
+
handleSurfaceClick(event) {
|
|
12928
|
+
const target = event.target;
|
|
12929
|
+
if (target?.closest('[data-signature-action]')) {
|
|
12930
|
+
return;
|
|
12931
|
+
}
|
|
12932
|
+
if (!this.showOverlay() || this.disabled()) {
|
|
12933
|
+
return;
|
|
12934
|
+
}
|
|
12935
|
+
event.stopPropagation();
|
|
12936
|
+
void this.openEditor();
|
|
12937
|
+
}
|
|
12938
|
+
handleOverlayClick(event) {
|
|
12939
|
+
event.stopPropagation();
|
|
13110
12940
|
if (this.disabled()) {
|
|
13111
12941
|
return;
|
|
13112
12942
|
}
|
|
13113
|
-
|
|
13114
|
-
|
|
13115
|
-
|
|
13116
|
-
|
|
13117
|
-
.setTitle('Signature')
|
|
13118
|
-
.setSize('sm')
|
|
13119
|
-
.setCloseButton(true)
|
|
13120
|
-
.setContext({ value: this.getValue() })
|
|
13121
|
-
.content((content) => {
|
|
13122
|
-
content.setDirection('column').setGap('16px').setAlignItems('stretch').customWidget('signature', {
|
|
13123
|
-
path: 'value',
|
|
13124
|
-
disabled: this.disabled(),
|
|
13125
|
-
showOverlay: false,
|
|
13126
|
-
});
|
|
13127
|
-
})
|
|
13128
|
-
.setActions((actions) => {
|
|
13129
|
-
actions.custom({
|
|
13130
|
-
title: '@general:actions.download.title',
|
|
13131
|
-
icon: 'fa-light fa-download',
|
|
13132
|
-
color: 'primary',
|
|
13133
|
-
disabled: false,
|
|
13134
|
-
command: { name: 'signature-download' },
|
|
13135
|
-
position: 'prefix',
|
|
13136
|
-
});
|
|
13137
|
-
actions.custom({
|
|
13138
|
-
title: '@general:actions.delete.title',
|
|
13139
|
-
icon: 'fa-light fa-trash-can',
|
|
13140
|
-
color: 'danger',
|
|
13141
|
-
disabled: false,
|
|
13142
|
-
command: { name: 'signature-clear' },
|
|
13143
|
-
});
|
|
13144
|
-
actions.custom({
|
|
13145
|
-
title: '@general:actions.apply.title',
|
|
13146
|
-
icon: 'fa-light fa-check',
|
|
13147
|
-
color: 'primary',
|
|
13148
|
-
disabled: false,
|
|
13149
|
-
command: { name: 'signature-apply' },
|
|
13150
|
-
});
|
|
13151
|
-
});
|
|
13152
|
-
})
|
|
13153
|
-
.show();
|
|
13154
|
-
const action = ref.action();
|
|
13155
|
-
const context = ref.context() ?? {};
|
|
13156
|
-
if (action === 'signature-clear') {
|
|
13157
|
-
ref.close();
|
|
13158
|
-
this.setValue(null);
|
|
12943
|
+
void this.openEditor();
|
|
12944
|
+
}
|
|
12945
|
+
handleSurfacePointerDown(event) {
|
|
12946
|
+
if (this.showOverlay() || this.disabled()) {
|
|
13159
12947
|
return;
|
|
13160
12948
|
}
|
|
13161
|
-
|
|
13162
|
-
|
|
13163
|
-
|
|
13164
|
-
const link = document.createElement('a');
|
|
13165
|
-
link.href = dataUrl;
|
|
13166
|
-
link.target = '_blank';
|
|
13167
|
-
link.download = 'signature.png';
|
|
13168
|
-
link.click();
|
|
13169
|
-
}
|
|
12949
|
+
const target = event.target;
|
|
12950
|
+
if (target.closest('.ax-canvas-element')) {
|
|
12951
|
+
this.isInteracting.set(true);
|
|
13170
12952
|
}
|
|
13171
|
-
|
|
13172
|
-
|
|
13173
|
-
|
|
13174
|
-
|
|
13175
|
-
|
|
12953
|
+
}
|
|
12954
|
+
async openEditor() {
|
|
12955
|
+
if (this.disabled()) {
|
|
12956
|
+
return;
|
|
12957
|
+
}
|
|
12958
|
+
const result = await this.signatureEditorService.open({
|
|
12959
|
+
value: this.getValue(),
|
|
12960
|
+
disabled: this.disabled(),
|
|
12961
|
+
});
|
|
12962
|
+
if (result.action === 'apply') {
|
|
12963
|
+
this.setValue(result.value);
|
|
13176
12964
|
}
|
|
13177
|
-
ref.close();
|
|
13178
12965
|
}
|
|
13179
12966
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSignatureWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
13180
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPSignatureWidgetEditComponent, isStandalone: true, selector: "axp-signature-pad-widget-edit", viewQueries: [{ propertyName: "paintContainer", first: true, predicate: ["paintContainer"], descendants: true, isSignal: true }, { propertyName: "paintView", first: true, predicate: ["paintView"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template:
|
|
13181
|
-
<div class="ax-relative">
|
|
13182
|
-
@if (showOverlay()) {
|
|
13183
|
-
<div
|
|
13184
|
-
(click)="openEditor()"
|
|
13185
|
-
class="ax-transition-all ax-absolute ax-z-10 ax-inset-0 hover:ax-bg-black/50 ax-flex ax-items-center ax-justify-center ax-cursor-pointer"
|
|
13186
|
-
>
|
|
13187
|
-
<i
|
|
13188
|
-
class="ax-w-full ax-h-full ax-flex ax-justify-center ax-items-center fa-solid fa-pencil ax-text-transparent hover:ax-text-white"
|
|
13189
|
-
></i>
|
|
13190
|
-
</div>
|
|
13191
|
-
}
|
|
13192
|
-
<ax-paint-container
|
|
13193
|
-
[editMode]="editMode()"
|
|
13194
|
-
[disabled]="disabled()"
|
|
13195
|
-
[ngModel]="getValue()"
|
|
13196
|
-
(ngModelChange)="setValue($event)"
|
|
13197
|
-
class="ax-h-full ax-max-w-[20rem]"
|
|
13198
|
-
#paintContainer
|
|
13199
|
-
>
|
|
13200
|
-
<ax-paint-view #paintView paintBackgroundColor="white"></ax-paint-view>
|
|
13201
|
-
</ax-paint-container>
|
|
13202
|
-
</div>
|
|
13203
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXImageModule }, { 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: AXPaintModule }, { kind: "component", type: i2$8.AXPaintContainerComponent, selector: "ax-paint-container", inputs: ["look", "disabled", "editMode"] }, { kind: "component", type: i2$8.AXPaintViewComponent, selector: "ax-paint-view", inputs: ["class", "paintBackgroundColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
12967
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPSignatureWidgetEditComponent, isStandalone: true, selector: "axp-signature-pad-widget-edit", host: { classAttribute: "ax-block ax-w-full" }, viewQueries: [{ propertyName: "paintContainer", first: true, predicate: ["paintContainer"], descendants: true, isSignal: true }, { propertyName: "paintView", first: true, predicate: ["paintView"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"axp-signature-pad-widget-edit ax-block ax-w-full ax-select-none\">\n <div\n class=\"ax-relative ax-w-full ax-min-h-[9rem] ax-overflow-hidden ax-rounded-md\"\n [class.ax-cursor-pointer]=\"showOverlay() && !disabled()\"\n [class.ax-cursor-not-allowed]=\"disabled()\"\n [class.ax-opacity-60]=\"disabled()\"\n (mouseenter)=\"handleMouseEnter()\"\n (mouseleave)=\"handleMouseLeave()\"\n (click)=\"handleSurfaceClick($event)\"\n (pointerdown)=\"handleSurfacePointerDown($event)\"\n >\n @if (showSignaturePreview()) {\n <ax-image [src]=\"getValue()!\" class=\"ax-block ax-w-full ax-min-h-[9rem] ax-object-contain\" />\n } @else if (showPaintSurface()) {\n <ax-paint-container\n look=\"none\"\n [editMode]=\"editMode()\"\n [disabled]=\"disabled()\"\n [ngModel]=\"getValue()\"\n (ngModelChange)=\"setValue($event)\"\n class=\"__paint\"\n #paintContainer\n >\n <ax-paint-view #paintView paintBackgroundColor=\"white\"></ax-paint-view>\n </ax-paint-container>\n }\n\n @if (showEmptyHint()) {\n <div\n class=\"ax-absolute ax-inset-0 ax-z-10 ax-flex ax-flex-col ax-items-center ax-justify-center ax-gap-2 ax-pointer-events-none\"\n >\n <i class=\"fa-light fa-file-signature ax-text-2xl\"></i>\n <span class=\"ax-text-sm\">{{ emptyHint() | translate | async }}</span>\n </div>\n }\n\n @if (showDialogHint()) {\n <div\n class=\"ax-absolute ax-inset-0 ax-z-10 ax-flex ax-items-center ax-justify-center ax-pointer-events-none ax-text-sm ax-opacity-60\"\n >\n {{ signHereHint() | translate | async }}\n </div>\n }\n\n @if (showDesktopHover()) {\n <div\n class=\"ax-absolute ax-inset-0 ax-z-20 ax-flex ax-cursor-pointer ax-items-center ax-justify-center ax-bg-neutral-900/50 ax-text-neutral-100 ax-transition-opacity ax-duration-400\"\n data-signature-action=\"true\"\n [style.opacity]=\"hovering() ? 1 : 0\"\n (click)=\"handleOverlayClick($event)\"\n >\n <i class=\"fa-light fa-pen\"></i>\n </div>\n }\n </div>\n</div>\n", styles: [".axp-signature-pad-widget-edit .__paint{display:block;width:100%;min-height:9rem}.axp-signature-pad-widget-edit ax-paint-container{display:block;width:100%}.axp-signature-pad-widget-edit ax-paint-container .ax-main-toolbar,.axp-signature-pad-widget-edit ax-paint-container .ax-secondary-toolbar{display:none}:host ::ng-deep .axp-signature-pad-widget-edit ax-paint-container,:host ::ng-deep .axp-signature-pad-widget-edit ax-paint-container>.ax-editor-container,:host ::ng-deep .axp-signature-pad-widget-edit ax-paint-view,:host ::ng-deep .axp-signature-pad-widget-edit ax-paint-view .ax-canvas-element{border:none!important;box-shadow:none!important;outline:none!important}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXPaintModule }, { kind: "component", type: i2$8.AXPaintContainerComponent, selector: "ax-paint-container", inputs: ["look", "disabled", "editMode"] }, { kind: "component", type: i2$8.AXPaintViewComponent, selector: "ax-paint-view", inputs: ["class", "paintBackgroundColor"] }, { kind: "ngmodule", type: AXImageModule }, { kind: "component", type: i1$e.AXImageComponent, selector: "ax-image", inputs: ["width", "height", "overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i6.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13204
12968
|
}
|
|
13205
12969
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSignatureWidgetEditComponent, decorators: [{
|
|
13206
12970
|
type: Component,
|
|
13207
|
-
args: [{
|
|
13208
|
-
|
|
13209
|
-
template:
|
|
13210
|
-
<div class="ax-relative">
|
|
13211
|
-
@if (showOverlay()) {
|
|
13212
|
-
<div
|
|
13213
|
-
(click)="openEditor()"
|
|
13214
|
-
class="ax-transition-all ax-absolute ax-z-10 ax-inset-0 hover:ax-bg-black/50 ax-flex ax-items-center ax-justify-center ax-cursor-pointer"
|
|
13215
|
-
>
|
|
13216
|
-
<i
|
|
13217
|
-
class="ax-w-full ax-h-full ax-flex ax-justify-center ax-items-center fa-solid fa-pencil ax-text-transparent hover:ax-text-white"
|
|
13218
|
-
></i>
|
|
13219
|
-
</div>
|
|
13220
|
-
}
|
|
13221
|
-
<ax-paint-container
|
|
13222
|
-
[editMode]="editMode()"
|
|
13223
|
-
[disabled]="disabled()"
|
|
13224
|
-
[ngModel]="getValue()"
|
|
13225
|
-
(ngModelChange)="setValue($event)"
|
|
13226
|
-
class="ax-h-full ax-max-w-[20rem]"
|
|
13227
|
-
#paintContainer
|
|
13228
|
-
>
|
|
13229
|
-
<ax-paint-view #paintView paintBackgroundColor="white"></ax-paint-view>
|
|
13230
|
-
</ax-paint-container>
|
|
13231
|
-
</div>
|
|
13232
|
-
`,
|
|
13233
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
13234
|
-
imports: [AXButtonModule, AXDecoratorModule, AXImageModule, FormsModule, AXPaintModule],
|
|
13235
|
-
}]
|
|
12971
|
+
args: [{ selector: 'axp-signature-pad-widget-edit', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
12972
|
+
class: 'ax-block ax-w-full',
|
|
12973
|
+
}, imports: [FormsModule, AXPaintModule, AXImageModule, AXTranslationModule, AsyncPipe], template: "<div class=\"axp-signature-pad-widget-edit ax-block ax-w-full ax-select-none\">\n <div\n class=\"ax-relative ax-w-full ax-min-h-[9rem] ax-overflow-hidden ax-rounded-md\"\n [class.ax-cursor-pointer]=\"showOverlay() && !disabled()\"\n [class.ax-cursor-not-allowed]=\"disabled()\"\n [class.ax-opacity-60]=\"disabled()\"\n (mouseenter)=\"handleMouseEnter()\"\n (mouseleave)=\"handleMouseLeave()\"\n (click)=\"handleSurfaceClick($event)\"\n (pointerdown)=\"handleSurfacePointerDown($event)\"\n >\n @if (showSignaturePreview()) {\n <ax-image [src]=\"getValue()!\" class=\"ax-block ax-w-full ax-min-h-[9rem] ax-object-contain\" />\n } @else if (showPaintSurface()) {\n <ax-paint-container\n look=\"none\"\n [editMode]=\"editMode()\"\n [disabled]=\"disabled()\"\n [ngModel]=\"getValue()\"\n (ngModelChange)=\"setValue($event)\"\n class=\"__paint\"\n #paintContainer\n >\n <ax-paint-view #paintView paintBackgroundColor=\"white\"></ax-paint-view>\n </ax-paint-container>\n }\n\n @if (showEmptyHint()) {\n <div\n class=\"ax-absolute ax-inset-0 ax-z-10 ax-flex ax-flex-col ax-items-center ax-justify-center ax-gap-2 ax-pointer-events-none\"\n >\n <i class=\"fa-light fa-file-signature ax-text-2xl\"></i>\n <span class=\"ax-text-sm\">{{ emptyHint() | translate | async }}</span>\n </div>\n }\n\n @if (showDialogHint()) {\n <div\n class=\"ax-absolute ax-inset-0 ax-z-10 ax-flex ax-items-center ax-justify-center ax-pointer-events-none ax-text-sm ax-opacity-60\"\n >\n {{ signHereHint() | translate | async }}\n </div>\n }\n\n @if (showDesktopHover()) {\n <div\n class=\"ax-absolute ax-inset-0 ax-z-20 ax-flex ax-cursor-pointer ax-items-center ax-justify-center ax-bg-neutral-900/50 ax-text-neutral-100 ax-transition-opacity ax-duration-400\"\n data-signature-action=\"true\"\n [style.opacity]=\"hovering() ? 1 : 0\"\n (click)=\"handleOverlayClick($event)\"\n >\n <i class=\"fa-light fa-pen\"></i>\n </div>\n }\n </div>\n</div>\n", styles: [".axp-signature-pad-widget-edit .__paint{display:block;width:100%;min-height:9rem}.axp-signature-pad-widget-edit ax-paint-container{display:block;width:100%}.axp-signature-pad-widget-edit ax-paint-container .ax-main-toolbar,.axp-signature-pad-widget-edit ax-paint-container .ax-secondary-toolbar{display:none}:host ::ng-deep .axp-signature-pad-widget-edit ax-paint-container,:host ::ng-deep .axp-signature-pad-widget-edit ax-paint-container>.ax-editor-container,:host ::ng-deep .axp-signature-pad-widget-edit ax-paint-view,:host ::ng-deep .axp-signature-pad-widget-edit ax-paint-view .ax-canvas-element{border:none!important;box-shadow:none!important;outline:none!important}\n"] }]
|
|
13236
12974
|
}], propDecorators: { paintContainer: [{ type: i0.ViewChild, args: ['paintContainer', { isSignal: true }] }], paintView: [{ type: i0.ViewChild, args: ['paintView', { isSignal: true }] }] } });
|
|
13237
12975
|
|
|
13238
12976
|
var signaturePadWidgetEdit_component = /*#__PURE__*/Object.freeze({
|
|
@@ -15037,8 +14775,6 @@ class AXPItemConfiguratorWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15037
14775
|
this.isInitialized = signal(false, ...(ngDevMode ? [{ debugName: "isInitialized" }] : /* istanbul ignore next */ []));
|
|
15038
14776
|
/** True while syncing models from shared context (discard/load); writes use system origin. */
|
|
15039
14777
|
this.hydratingFromContext = signal(false, ...(ngDevMode ? [{ debugName: "hydratingFromContext" }] : /* istanbul ignore next */ []));
|
|
15040
|
-
this.baseline = signal(null, ...(ngDevMode ? [{ debugName: "baseline" }] : /* istanbul ignore next */ []));
|
|
15041
|
-
this.isDirtySignal = signal(false, ...(ngDevMode ? [{ debugName: "isDirtySignal" }] : /* istanbul ignore next */ []));
|
|
15042
14778
|
//#endregion
|
|
15043
14779
|
//#region ---- Models ----
|
|
15044
14780
|
this.selectedItemIdModel = model('', ...(ngDevMode ? [{ debugName: "selectedItemIdModel" }] : /* istanbul ignore next */ []));
|
|
@@ -15114,7 +14850,6 @@ class AXPItemConfiguratorWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15114
14850
|
}
|
|
15115
14851
|
});
|
|
15116
14852
|
}
|
|
15117
|
-
untracked(() => this.syncBaselineFromModels());
|
|
15118
14853
|
queueMicrotask(() => this.hydratingFromContext.set(false));
|
|
15119
14854
|
}, ...(ngDevMode ? [{ debugName: "syncValueToConfigurator" }] : /* istanbul ignore next */ []));
|
|
15120
14855
|
this.syncConfiguratorToValue = effect(() => {
|
|
@@ -15128,32 +14863,10 @@ class AXPItemConfiguratorWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15128
14863
|
if (isEqual(next, currentValue)) {
|
|
15129
14864
|
return;
|
|
15130
14865
|
}
|
|
15131
|
-
const origin = this.hydratingFromContext() ? 'system' : 'user';
|
|
15132
14866
|
untracked(() => {
|
|
15133
|
-
this.setValue(next
|
|
14867
|
+
this.setValue(next);
|
|
15134
14868
|
});
|
|
15135
14869
|
}, ...(ngDevMode ? [{ debugName: "syncConfiguratorToValue" }] : /* istanbul ignore next */ []));
|
|
15136
|
-
this.evaluateDirty = effect(() => {
|
|
15137
|
-
if (!this.isInitialized()) {
|
|
15138
|
-
return;
|
|
15139
|
-
}
|
|
15140
|
-
const base = this.baseline();
|
|
15141
|
-
if (base == null) {
|
|
15142
|
-
return;
|
|
15143
|
-
}
|
|
15144
|
-
const sid = this.selectedItemIdModel();
|
|
15145
|
-
const vals = this.valuesModel();
|
|
15146
|
-
const current = this.buildWidgetNode(sid, vals);
|
|
15147
|
-
const dirty = !isEqual(current, base);
|
|
15148
|
-
this.setDirtyState(dirty);
|
|
15149
|
-
}, ...(ngDevMode ? [{ debugName: "evaluateDirty" }] : /* istanbul ignore next */ []));
|
|
15150
|
-
}
|
|
15151
|
-
//#endregion
|
|
15152
|
-
//#region ---- Widget API ----
|
|
15153
|
-
api() {
|
|
15154
|
-
return {
|
|
15155
|
-
isDirty: () => this.isDirtySignal(),
|
|
15156
|
-
};
|
|
15157
14870
|
}
|
|
15158
14871
|
//#endregion
|
|
15159
14872
|
//#region ---- Utility Methods ----
|
|
@@ -15168,22 +14881,6 @@ class AXPItemConfiguratorWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15168
14881
|
options: vals,
|
|
15169
14882
|
};
|
|
15170
14883
|
}
|
|
15171
|
-
syncBaselineFromModels() {
|
|
15172
|
-
if (!this.isInitialized()) {
|
|
15173
|
-
return;
|
|
15174
|
-
}
|
|
15175
|
-
const sid = this.selectedItemIdModel();
|
|
15176
|
-
const vals = this.valuesModel();
|
|
15177
|
-
this.baseline.set(cloneDeep(this.buildWidgetNode(sid, vals)));
|
|
15178
|
-
this.setDirtyState(false);
|
|
15179
|
-
}
|
|
15180
|
-
setDirtyState(dirty) {
|
|
15181
|
-
if (this.isDirtySignal() === dirty) {
|
|
15182
|
-
return;
|
|
15183
|
-
}
|
|
15184
|
-
this.isDirtySignal.set(dirty);
|
|
15185
|
-
this.layoutService.notifyWidgetDirtyChanged();
|
|
15186
|
-
}
|
|
15187
14884
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPItemConfiguratorWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
15188
14885
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPItemConfiguratorWidgetEditComponent, isStandalone: true, selector: "axp-item-configurator-widget-edit", inputs: { selectedItemIdModel: { classPropertyName: "selectedItemIdModel", publicName: "selectedItemIdModel", isSignal: true, isRequired: false, transformFunction: null }, valuesModel: { classPropertyName: "valuesModel", publicName: "valuesModel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedItemIdModel: "selectedItemIdModelChange", valuesModel: "valuesModelChange" }, usesInheritance: true, ngImport: i0, template: `
|
|
15189
14886
|
@if (isInitialized()) {
|
|
@@ -21007,6 +20704,7 @@ class AXPSpacingWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
21007
20704
|
constructor() {
|
|
21008
20705
|
super(...arguments);
|
|
21009
20706
|
this.ngZone = inject(NgZone);
|
|
20707
|
+
this.toggleShortcutKeys = chordToKbdItemKeys('ctrl+b');
|
|
21010
20708
|
this.isDragging = false;
|
|
21011
20709
|
this.calculatedValues = signal(cloneDeep(AXP_default_Spacing_Box_Value), ...(ngDevMode ? [{ debugName: "calculatedValues" }] : /* istanbul ignore next */ []));
|
|
21012
20710
|
this.originalValues = signal(cloneDeep(AXP_default_Spacing_Box_Value), ...(ngDevMode ? [{ debugName: "originalValues" }] : /* istanbul ignore next */ []));
|
|
@@ -21186,7 +20884,7 @@ class AXPSpacingWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
21186
20884
|
return { clientX: touch.clientX, clientY: touch.clientY };
|
|
21187
20885
|
}
|
|
21188
20886
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSpacingWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
21189
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPSpacingWidgetEditComponent, isStandalone: true, selector: "axp-spacing-widget-editor", viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"axp-spacing-box ax-flex ax-justify-center ax-items-center ax-pt-4 ax-pb-2\">\n <div class=\"axp-spacing-inner-box\">\n <div class=\"axp-spacing-margin-box\">\n <!--MARGIN SVG DEFINE-->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"224\" height=\"112\" class=\"area\">\n <mask id=\"margin-mask\" width=\"224\" height=\"112\">\n <rect fill=\"#000\" height=\"112\" width=\"224\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#fff\" height=\"112\" rx=\"4\" width=\"224\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#000\" height=\"66\" rx=\"4\" width=\"154\" x=\"35\" y=\"23\"></rect>\n </mask>\n <defs>\n <linearGradient id=\"FuseLinearGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stop-color=\"white\"></stop>\n <stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\"></stop>\n </linearGradient>\n </defs>\n\n <!--MARGIN TOP SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'top')\"\n (mousedown)=\"listenToMove($event, 'margin', 'top')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n fill-opacity=\"0.12\"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"url(#FuseLinearGradient)\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n fill-opacity=\"0.02\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN RIGHT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'right')\"\n (mousedown)=\"listenToMove($event, 'margin', 'right')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m224,0\n v112\n l-36,-24\n v-64\n l36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m224,0\n v112\n l-36,-24\n v-64\n l36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN BOTTOM SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'bottom')\"\n (mousedown)=\"listenToMove($event, 'margin', 'bottom')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,112\n h224\n l-36,-24\n h-152\n l-36,24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,112\n h224\n l-36,-24\n h-152\n l-36,24z\n \"\n fill-opacity=\"0.064\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN LEFT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'left')\"\n (mousedown)=\"listenToMove($event, 'margin', 'left')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n v112\n l36,-24\n v-64\n l-36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n v112\n l36,-24\n v-64\n l-36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n </svg>\n\n <!--MARGIN TOP VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <span>{{ calculatedValues().margin.top + ' ' + units().margin.top }}</span>\n </div>\n </div>\n\n <!--MARGIN RIGHT VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <span>{{ calculatedValues().margin.right + ' ' + units().margin.right }}</span>\n </div>\n </div>\n\n <!--MARGIN BOTTOM VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <span>{{ calculatedValues().margin.bottom + ' ' + units().margin.bottom }}</span>\n </div>\n </div>\n\n <!--MARGIN LEFT VALUE-->\n <div tabindex=\"0\" style=\"grid-area: 2 / 1 / 3 / 2\" class=\"axp-spacing-value-container\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <span>{{ calculatedValues().margin.left + ' ' + units().margin.left }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"axp-spacing-padding-box\">\n <!--SVG DEFINE-->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"62\" class=\"area\">\n <mask id=\"padding-mask\" width=\"150\" height=\"62\">\n <rect fill=\"#000\" height=\"60\" width=\"150\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#fff\" height=\"60\" rx=\"2\" width=\"150\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#000\" height=\"14\" rx=\"2\" width=\"80\" x=\"35\" y=\"23\"></rect>\n </mask>\n\n <!--PADDING TOP SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'top')\"\n (mousedown)=\"listenToMove($event, 'padding', 'top')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n h150\n l-36,24\n h-78\n l-36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n h150\n l-36,24\n h-78\n l-36,-24z\n \"\n fill-opacity=\"0.064\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING RIGHT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'right')\"\n (mousedown)=\"listenToMove($event, 'padding', 'right')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m150,0\n v60\n l-36,-24\n v-12\n l36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m150,0\n v60\n l-36,-24\n v-12\n l36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING BOTTOM SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'bottom')\"\n (mousedown)=\"listenToMove($event, 'padding', 'bottom')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,60\n h150\n l-36,-24\n h-78\n l-36,24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,60\n h150\n l-36,-24\n h-78\n l-36,24z\n \"\n fill-opacity=\"0.12\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING LEFT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'left')\"\n (mousedown)=\"listenToMove($event, 'padding', 'left')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n v60\n l36,-24\n v-12\n l-36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n v60\n l36,-24\n v-12\n l-36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n </svg>\n\n <!--PADDING TOP SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <span>{{ this.calculatedValues().padding.top + ' ' + units().padding.top }}</span>\n </div>\n </div>\n\n <!--PADDING RIGHT SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <span>{{ this.calculatedValues().padding.right + ' ' + units().padding.right }}</span>\n </div>\n </div>\n\n <!--PADDING BOTTOM SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <span>{{ this.calculatedValues().padding.bottom + ' ' + units().padding.bottom }}</span>\n </div>\n </div>\n\n <!--PADDING LEFT SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <span>{{ this.calculatedValues().padding.left + ' ' + units().padding.left }}</span>\n </div>\n </div>\n </div>\n\n <!--PADDING TEXT-->\n <svg class=\"axp-spacing-padding-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">PADDING</text>\n </svg>\n\n <!--MARGIN TEXT-->\n <svg class=\"axp-spacing-margin-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">MARGIN</text>\n </svg>\n\n <!-- Ctrl hint -->\n <!-- <div class=\"ax-text-xs ax-text-center ax-text-neutral-400 ax-mt-1\">\n Hold Ctrl while dragging to adjust all sides\n </div> -->\n </div>\n</div>\n\n<ng-template #template let-type=\"type\" let-side=\"side\" let-value=\"value\">\n <div\n class=\"axp-spacing-popup-container\"\n (keydown.control.b)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n >\n <div class=\"axp-spacing-popover\">\n <!--SET EMPTY-->\n <div class=\"ax-size-4 ax-cursor-pointer\" (click)=\"setSpacing(0, type, side)\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path opacity=\"0.4\" d=\"M14 2L14 13L10 13L10 2L14 2Z\" fill=\"currentColor\" fill-opacity=\"0.67\"></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.99995 7L7.99995 1H8.99995L8.99995 14H7.99995L7.99995 8L3.70706 8L5.85351 10.1464L5.1464 10.8536L1.79285 7.5L5.1464 4.14645L5.85351 4.85355L3.70706 7L7.99995 7Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n\n <div class=\"ax-flex ax-justify-center ax-h-6 ax-flex-col\">\n <input\n type=\"range\"\n name=\"range\"\n [min]=\"0\"\n [max]=\"200\"\n [value]=\"this.calculatedValues()[this.current().type][this.current().side]\"\n (input)=\"setSpacing($event, type, side)\"\n />\n </div>\n <div>\n <!--INPUT NUMBER-->\n <div style=\"--local-gap: 8px\">\n <div\n style=\"\n gap: 8px;\n height: auto;\n display: flex;\n flex-flow: column;\n -webkit-box-align: stretch;\n align-items: stretch;\n -webkit-box-pack: start;\n position: relative;\n justify-content: stretch;\n width: 100%;\n -webkit-box-flex: 1;\n flex-grow: 1;\n \"\n >\n <ax-number-box\n class=\"ax-sm\"\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [ngModel]=\"value\"\n (onValueChanged)=\"setSpacing($event.value ?? 0, type, side)\"\n [showSpinButtons]=\"false\"\n >\n <ax-suffix>\n <ax-dropdown-button [text]=\"getSpacingUnitLabel(type, side)\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n <ax-button-item-list>\n @for (u of spacingUnits; track $index) {\n <ax-button-item\n [text]=\"u.toUpperCase()\"\n [selected]=\"getSpacingUnit(type, side) === u\"\n (onClick)=\"onSpacingUnitChange(u, type, side)\"\n ></ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-number-box>\n </div>\n </div>\n </div>\n <div class=\"axp-spacing-template-values\">\n @for (i of FixedValues; track $index) {\n <div\n (click)=\"setSpacing(i.value, type, side)\"\n class=\"hover:!ax-bg-gradient-to-b hover:!ax-from-white/20 hover:!ax-to-white/5 !ax-cursor-pointer\"\n [class]=\"i.colspan ? 'ax-col-span-' + i.colspan : ''\"\n [class]=\"i.rowspan ? 'ax-row-span-' + i.rowspan : ''\"\n tabindex=\"0\"\n style=\"\n border-bottom-color: var(--color-border-1);\n border-left-color: var(--color-border-1);\n border-right-color: var(--color-border-1);\n border-top-color: var(--color-border-1);\n outline: 0px;\n cursor: default;\n user-select: none;\n padding: 0px;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n --component-icon-color: var(--color-text-secondary);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n border-radius: 4px;\n color: var(--color-action-secondary-text);\n background: var(--color-action-secondary-background);\n border-width: 0px;\n border-style: solid;\n box-shadow: var(--box-shadows-action-secondary);\n align-self: center;\n \"\n >\n <div class=\"ax-truncate\">\n {{ i.label }}\n <span class=\"ax-text-xs ax-text-neutral-400\">\n {{ units()[this.current().type][this.current().side] }}</span\n >\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"ax-h-[1px] ax-mt-1 ax-mb-1 ax-bg-border-1 ax-pointer-events-none\"></div>\n\n <div\n [class.ax-opacity-50]=\"\n originalValues()[this.current().type][this.current().side] ===\n calculatedValues()[this.current().type][this.current().side]\n \"\n (click)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n tabindex=\"0\"\n class=\"ax-outline-none ax-select-none ax-py-1 ax-px-2 ax-my-1 ax-min-h-6 ax-cursor-pointer hover:!ax-bg-[#404040]\"\n >\n <div class=\"ax-flex ax-flex-row ax-items-center\">\n <div class=\"ax-min-w-6 ax-self-center ax-grow ax-basis-0\">\n <div class=\"ax-items-center ax-box-border ax-grid ax-grid-cols-[16px_1fr_auto] ax-gap-x-2 ax-gap-y-1\">\n <div class=\"ax-size-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.70712 5.00004L6.35357 2.35359L5.64646 1.64648L1.79291 5.50004L5.64646 9.35359L6.35357 8.64648L3.70712 6.00004H10C11.6569 6.00004 13 7.34318 13 9.00004C13 10.6569 11.6569 12 10 12H8.00001V13H10C12.2092 13 14 11.2092 14 9.00004C14 6.7909 12.2092 5.00004 10 5.00004H3.70712Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Reset</div>\n </div>\n </div>\n <div class=\"ax-self-center\">\n <div\n class=\"ax-cursor-default ax-select-none ax-text-[11.5px] ax-font-normal ax-leading-4 ax-tracking-tight ax-text-secondary ax-justify-self-end ax-ml-[1px]\"\n >\n <span><kbd>Ctrl</kbd> + <kbd>B</kbd></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ax-popover #popover [openOn]=\"'click'\" [offsetY]=\"10\" [closeOn]=\"'clickOut'\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n type: this.current().type,\n side: this.current().side,\n value: this.calculatedValues()[this.current().type][this.current().side],\n }\"\n ></ng-container>\n</ax-popover>\n", styles: [".axp-spacing-box{--color-text-secondary: rgba(255, 255, 255, .67);--color-ui-scrollbar-thumb: rgba(255, 255, 255, .67);--color-background-1: #292929;--color-text-secondary: white;--color-border-2: rgba(255, 255, 255, .16);--color-changed: rgb(167, 209, 255);--color-background: rgba(0, 106, 204, .18)}.axp-spacing-box .axp-spacing-inner-box{transform:scale(1.2);position:relative;display:grid;width:224px;height:112px;grid-template-columns:36px 1px 36px 1fr 36px 1px 36px;grid-template-rows:24px 2px 24px 1fr 24px 2px 24px;outline-style:none;cursor:default;-webkit-user-select:none;user-select:none}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-value-container{pointer-events:none;border:none;outline:0px;cursor:default;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;place-self:center;padding:2px;height:auto;width:auto;font-family:inherit;font-size:inherit;position:relative;border-radius:4px;color:var(--color-text-secondary);background:transparent;box-sizing:border-box;box-shadow:none}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-value-container .axp-spacing-value-field{cursor:default;-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:400;line-height:10px;letter-spacing:-.115px;display:flex;color:var(--color-text-secondary);background:transparent;padding:2px;margin:0;border-radius:2px;max-width:100%;box-sizing:content-box;place-self:center;position:relative;opacity:1;align-items:center;justify-content:center}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-margin-box{border-radius:4px;grid-area:1/1/-1/-1;display:grid;grid-template-columns:36px 1fr 36px;grid-template-rows:24px minmax(8px,1fr) 24px;justify-items:center;width:224px;height:112px}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-padding-box{border-radius:4px;grid-area:3/3/span 3/span 3;display:grid;grid-template-columns:36px 1fr 36px;grid-template-rows:24px minmax(8px,1fr) 24px;justify-items:center;width:150px;height:60px}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-padding-text{grid-area:3/3/span 3/span 3;pointer-events:none;position:relative}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-margin-text{grid-area:1/1/-1/-1;pointer-events:none;position:relative}.axp-spacing-popup-container{--color-action-secondary-text: white;--color-action-secondary-background: linear-gradient( 180deg, rgba(255, 255, 255, .13) 0%, rgba(255, 255, 255, .11) 100% );--box-shadows-action-secondary: 0px .5px 1px rgba(0, 0, 0, .8), inset 0px .5px .5px rgba(255, 255, 255, .12);--color-border-1: rgba(255, 255, 255, .13);max-width:239px;min-width:201px;background:#353535;border-radius:.5rem;color:var(--color-text-secondary, white);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,sans-serif;font-size:11.5px;line-height:16px}.axp-spacing-popup-container .axp-spacing-popover{display:grid;grid-template-columns:16px 1fr 56px;grid-template-rows:24px 1fr;align-items:center;gap:8px;width:241px;padding:8px}.axp-spacing-popup-container .axp-spacing-popover .axp-spacing-template-values{display:grid;grid-area:2/1/3/-1;grid-template-columns:repeat(5,1fr);grid-template-rows:24px 24px;gap:4px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]{-webkit-appearance:none;appearance:none;width:100%;cursor:pointer;outline:none;overflow:hidden;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-webkit-slider-runnable-track{height:10px;background:#ccc;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-moz-range-track{height:10px;background:#ccc;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:10px;width:10px;background-color:#fff;border-radius:50%;border:1px solid #353535;box-shadow:-407px 0 0 400px #29292970}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-moz-range-thumb{height:10px;width:10px;background-color:#fff;border-radius:50%;border:1px solid #353535;box-shadow:-407px 0 0 400px #29292970}.area{grid-area:1/1/-1/-1;overflow:hidden;border-radius:2px;filter:drop-shadow(rgba(255,255,255,.2) 0px -.5px 0px) drop-shadow(rgba(0,0,0,.4) 0px 0px 1px) drop-shadow(rgba(0,0,0,.2) 0px 1px 0px)}\n"], dependencies: [{ kind: "ngmodule", type: AXNumberBoxModule }, { kind: "component", type: i1$7.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "minValue", "maxValue", "showSpinButtons", "thousandsSeparator", "decimals", "changeOnScroll", "step"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "thousandsSeparatorChange"] }, { 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: AXCheckBoxModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXRangeSliderModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i6$1.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
20887
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: AXPSpacingWidgetEditComponent, isStandalone: true, selector: "axp-spacing-widget-editor", viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"axp-spacing-box ax-flex ax-justify-center ax-items-center ax-pt-4 ax-pb-2\">\n <div class=\"axp-spacing-inner-box\">\n <div class=\"axp-spacing-margin-box\">\n <!--MARGIN SVG DEFINE-->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"224\" height=\"112\" class=\"area\">\n <mask id=\"margin-mask\" width=\"224\" height=\"112\">\n <rect fill=\"#000\" height=\"112\" width=\"224\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#fff\" height=\"112\" rx=\"4\" width=\"224\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#000\" height=\"66\" rx=\"4\" width=\"154\" x=\"35\" y=\"23\"></rect>\n </mask>\n <defs>\n <linearGradient id=\"FuseLinearGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stop-color=\"white\"></stop>\n <stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\"></stop>\n </linearGradient>\n </defs>\n\n <!--MARGIN TOP SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'top')\"\n (mousedown)=\"listenToMove($event, 'margin', 'top')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n fill-opacity=\"0.12\"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"url(#FuseLinearGradient)\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n fill-opacity=\"0.02\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN RIGHT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'right')\"\n (mousedown)=\"listenToMove($event, 'margin', 'right')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m224,0\n v112\n l-36,-24\n v-64\n l36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m224,0\n v112\n l-36,-24\n v-64\n l36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN BOTTOM SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'bottom')\"\n (mousedown)=\"listenToMove($event, 'margin', 'bottom')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,112\n h224\n l-36,-24\n h-152\n l-36,24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,112\n h224\n l-36,-24\n h-152\n l-36,24z\n \"\n fill-opacity=\"0.064\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN LEFT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'left')\"\n (mousedown)=\"listenToMove($event, 'margin', 'left')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n v112\n l36,-24\n v-64\n l-36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n v112\n l36,-24\n v-64\n l-36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n </svg>\n\n <!--MARGIN TOP VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <span>{{ calculatedValues().margin.top + ' ' + units().margin.top }}</span>\n </div>\n </div>\n\n <!--MARGIN RIGHT VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <span>{{ calculatedValues().margin.right + ' ' + units().margin.right }}</span>\n </div>\n </div>\n\n <!--MARGIN BOTTOM VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <span>{{ calculatedValues().margin.bottom + ' ' + units().margin.bottom }}</span>\n </div>\n </div>\n\n <!--MARGIN LEFT VALUE-->\n <div tabindex=\"0\" style=\"grid-area: 2 / 1 / 3 / 2\" class=\"axp-spacing-value-container\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <span>{{ calculatedValues().margin.left + ' ' + units().margin.left }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"axp-spacing-padding-box\">\n <!--SVG DEFINE-->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"62\" class=\"area\">\n <mask id=\"padding-mask\" width=\"150\" height=\"62\">\n <rect fill=\"#000\" height=\"60\" width=\"150\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#fff\" height=\"60\" rx=\"2\" width=\"150\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#000\" height=\"14\" rx=\"2\" width=\"80\" x=\"35\" y=\"23\"></rect>\n </mask>\n\n <!--PADDING TOP SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'top')\"\n (mousedown)=\"listenToMove($event, 'padding', 'top')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n h150\n l-36,24\n h-78\n l-36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n h150\n l-36,24\n h-78\n l-36,-24z\n \"\n fill-opacity=\"0.064\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING RIGHT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'right')\"\n (mousedown)=\"listenToMove($event, 'padding', 'right')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m150,0\n v60\n l-36,-24\n v-12\n l36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m150,0\n v60\n l-36,-24\n v-12\n l36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING BOTTOM SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'bottom')\"\n (mousedown)=\"listenToMove($event, 'padding', 'bottom')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,60\n h150\n l-36,-24\n h-78\n l-36,24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,60\n h150\n l-36,-24\n h-78\n l-36,24z\n \"\n fill-opacity=\"0.12\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING LEFT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'left')\"\n (mousedown)=\"listenToMove($event, 'padding', 'left')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n v60\n l36,-24\n v-12\n l-36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n v60\n l36,-24\n v-12\n l-36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n </svg>\n\n <!--PADDING TOP SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <span>{{ this.calculatedValues().padding.top + ' ' + units().padding.top }}</span>\n </div>\n </div>\n\n <!--PADDING RIGHT SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <span>{{ this.calculatedValues().padding.right + ' ' + units().padding.right }}</span>\n </div>\n </div>\n\n <!--PADDING BOTTOM SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <span>{{ this.calculatedValues().padding.bottom + ' ' + units().padding.bottom }}</span>\n </div>\n </div>\n\n <!--PADDING LEFT SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <span>{{ this.calculatedValues().padding.left + ' ' + units().padding.left }}</span>\n </div>\n </div>\n </div>\n\n <!--PADDING TEXT-->\n <svg class=\"axp-spacing-padding-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">PADDING</text>\n </svg>\n\n <!--MARGIN TEXT-->\n <svg class=\"axp-spacing-margin-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">MARGIN</text>\n </svg>\n\n <!-- Ctrl hint -->\n <!-- <div class=\"ax-text-xs ax-text-center ax-text-neutral-400 ax-mt-1\">\n Hold Ctrl while dragging to adjust all sides\n </div> -->\n </div>\n</div>\n\n<ng-template #template let-type=\"type\" let-side=\"side\" let-value=\"value\">\n <div\n class=\"axp-spacing-popup-container\"\n (keydown.control.b)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n >\n <div class=\"axp-spacing-popover\">\n <!--SET EMPTY-->\n <div class=\"ax-size-4 ax-cursor-pointer\" (click)=\"setSpacing(0, type, side)\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path opacity=\"0.4\" d=\"M14 2L14 13L10 13L10 2L14 2Z\" fill=\"currentColor\" fill-opacity=\"0.67\"></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.99995 7L7.99995 1H8.99995L8.99995 14H7.99995L7.99995 8L3.70706 8L5.85351 10.1464L5.1464 10.8536L1.79285 7.5L5.1464 4.14645L5.85351 4.85355L3.70706 7L7.99995 7Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n\n <div class=\"ax-flex ax-justify-center ax-h-6 ax-flex-col\">\n <input\n type=\"range\"\n name=\"range\"\n [min]=\"0\"\n [max]=\"200\"\n [value]=\"this.calculatedValues()[this.current().type][this.current().side]\"\n (input)=\"setSpacing($event, type, side)\"\n />\n </div>\n <div>\n <!--INPUT NUMBER-->\n <div style=\"--local-gap: 8px\">\n <div\n style=\"\n gap: 8px;\n height: auto;\n display: flex;\n flex-flow: column;\n -webkit-box-align: stretch;\n align-items: stretch;\n -webkit-box-pack: start;\n position: relative;\n justify-content: stretch;\n width: 100%;\n -webkit-box-flex: 1;\n flex-grow: 1;\n \"\n >\n <ax-number-box\n class=\"ax-sm\"\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [ngModel]=\"value\"\n (onValueChanged)=\"setSpacing($event.value ?? 0, type, side)\"\n [showSpinButtons]=\"false\"\n >\n <ax-suffix>\n <ax-dropdown-button [text]=\"getSpacingUnitLabel(type, side)\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n <ax-button-item-list>\n @for (u of spacingUnits; track $index) {\n <ax-button-item\n [text]=\"u.toUpperCase()\"\n [selected]=\"getSpacingUnit(type, side) === u\"\n (onClick)=\"onSpacingUnitChange(u, type, side)\"\n ></ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-number-box>\n </div>\n </div>\n </div>\n <div class=\"axp-spacing-template-values\">\n @for (i of FixedValues; track $index) {\n <div\n (click)=\"setSpacing(i.value, type, side)\"\n class=\"hover:!ax-bg-gradient-to-b hover:!ax-from-white/20 hover:!ax-to-white/5 !ax-cursor-pointer\"\n [class]=\"i.colspan ? 'ax-col-span-' + i.colspan : ''\"\n [class]=\"i.rowspan ? 'ax-row-span-' + i.rowspan : ''\"\n tabindex=\"0\"\n style=\"\n border-bottom-color: var(--color-border-1);\n border-left-color: var(--color-border-1);\n border-right-color: var(--color-border-1);\n border-top-color: var(--color-border-1);\n outline: 0px;\n cursor: default;\n user-select: none;\n padding: 0px;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n --component-icon-color: var(--color-text-secondary);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n border-radius: 4px;\n color: var(--color-action-secondary-text);\n background: var(--color-action-secondary-background);\n border-width: 0px;\n border-style: solid;\n box-shadow: var(--box-shadows-action-secondary);\n align-self: center;\n \"\n >\n <div class=\"ax-truncate\">\n {{ i.label }}\n <span class=\"ax-text-xs ax-text-neutral-400\">\n {{ units()[this.current().type][this.current().side] }}</span\n >\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"ax-h-[1px] ax-mt-1 ax-mb-1 ax-bg-border-1 ax-pointer-events-none\"></div>\n\n <div\n [class.ax-opacity-50]=\"\n originalValues()[this.current().type][this.current().side] ===\n calculatedValues()[this.current().type][this.current().side]\n \"\n (click)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n tabindex=\"0\"\n class=\"ax-outline-none ax-select-none ax-py-1 ax-px-2 ax-my-1 ax-min-h-6 ax-cursor-pointer hover:!ax-bg-[#404040]\"\n >\n <div class=\"ax-flex ax-flex-row ax-items-center\">\n <div class=\"ax-min-w-6 ax-self-center ax-grow ax-basis-0\">\n <div class=\"ax-items-center ax-box-border ax-grid ax-grid-cols-[16px_1fr_auto] ax-gap-x-2 ax-gap-y-1\">\n <div class=\"ax-size-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.70712 5.00004L6.35357 2.35359L5.64646 1.64648L1.79291 5.50004L5.64646 9.35359L6.35357 8.64648L3.70712 6.00004H10C11.6569 6.00004 13 7.34318 13 9.00004C13 10.6569 11.6569 12 10 12H8.00001V13H10C12.2092 13 14 11.2092 14 9.00004C14 6.7909 12.2092 5.00004 10 5.00004H3.70712Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Reset</div>\n </div>\n </div>\n <div class=\"ax-self-center\">\n <div\n class=\"ax-cursor-default ax-select-none ax-text-[11.5px] ax-font-normal ax-leading-4 ax-tracking-tight ax-text-secondary ax-justify-self-end ax-ml-[1px]\"\n >\n <ax-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"toggleShortcutKeys\"></ax-kbd-item>\n </ax-kbd>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ax-popover #popover [openOn]=\"'click'\" [offsetY]=\"10\" [closeOn]=\"'clickOut'\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n type: this.current().type,\n side: this.current().side,\n value: this.calculatedValues()[this.current().type][this.current().side],\n }\"\n ></ng-container>\n</ax-popover>\n", styles: [".axp-spacing-box{--color-text-secondary: rgba(255, 255, 255, .67);--color-ui-scrollbar-thumb: rgba(255, 255, 255, .67);--color-background-1: #292929;--color-text-secondary: white;--color-border-2: rgba(255, 255, 255, .16);--color-changed: rgb(167, 209, 255);--color-background: rgba(0, 106, 204, .18)}.axp-spacing-box .axp-spacing-inner-box{transform:scale(1.2);position:relative;display:grid;width:224px;height:112px;grid-template-columns:36px 1px 36px 1fr 36px 1px 36px;grid-template-rows:24px 2px 24px 1fr 24px 2px 24px;outline-style:none;cursor:default;-webkit-user-select:none;user-select:none}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-value-container{pointer-events:none;border:none;outline:0px;cursor:default;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;place-self:center;padding:2px;height:auto;width:auto;font-family:inherit;font-size:inherit;position:relative;border-radius:4px;color:var(--color-text-secondary);background:transparent;box-sizing:border-box;box-shadow:none}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-value-container .axp-spacing-value-field{cursor:default;-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:400;line-height:10px;letter-spacing:-.115px;display:flex;color:var(--color-text-secondary);background:transparent;padding:2px;margin:0;border-radius:2px;max-width:100%;box-sizing:content-box;place-self:center;position:relative;opacity:1;align-items:center;justify-content:center}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-margin-box{border-radius:4px;grid-area:1/1/-1/-1;display:grid;grid-template-columns:36px 1fr 36px;grid-template-rows:24px minmax(8px,1fr) 24px;justify-items:center;width:224px;height:112px}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-padding-box{border-radius:4px;grid-area:3/3/span 3/span 3;display:grid;grid-template-columns:36px 1fr 36px;grid-template-rows:24px minmax(8px,1fr) 24px;justify-items:center;width:150px;height:60px}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-padding-text{grid-area:3/3/span 3/span 3;pointer-events:none;position:relative}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-margin-text{grid-area:1/1/-1/-1;pointer-events:none;position:relative}.axp-spacing-popup-container{--color-action-secondary-text: white;--color-action-secondary-background: linear-gradient( 180deg, rgba(255, 255, 255, .13) 0%, rgba(255, 255, 255, .11) 100% );--box-shadows-action-secondary: 0px .5px 1px rgba(0, 0, 0, .8), inset 0px .5px .5px rgba(255, 255, 255, .12);--color-border-1: rgba(255, 255, 255, .13);max-width:239px;min-width:201px;background:#353535;border-radius:.5rem;color:var(--color-text-secondary, white);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,sans-serif;font-size:11.5px;line-height:16px}.axp-spacing-popup-container .axp-spacing-popover{display:grid;grid-template-columns:16px 1fr 56px;grid-template-rows:24px 1fr;align-items:center;gap:8px;width:241px;padding:8px}.axp-spacing-popup-container .axp-spacing-popover .axp-spacing-template-values{display:grid;grid-area:2/1/3/-1;grid-template-columns:repeat(5,1fr);grid-template-rows:24px 24px;gap:4px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]{-webkit-appearance:none;appearance:none;width:100%;cursor:pointer;outline:none;overflow:hidden;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-webkit-slider-runnable-track{height:10px;background:#ccc;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-moz-range-track{height:10px;background:#ccc;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:10px;width:10px;background-color:#fff;border-radius:50%;border:1px solid #353535;box-shadow:-407px 0 0 400px #29292970}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-moz-range-thumb{height:10px;width:10px;background-color:#fff;border-radius:50%;border:1px solid #353535;box-shadow:-407px 0 0 400px #29292970}.area{grid-area:1/1/-1/-1;overflow:hidden;border-radius:2px;filter:drop-shadow(rgba(255,255,255,.2) 0px -.5px 0px) drop-shadow(rgba(0,0,0,.4) 0px 0px 1px) drop-shadow(rgba(0,0,0,.2) 0px 1px 0px)}\n"], dependencies: [{ kind: "ngmodule", type: AXNumberBoxModule }, { kind: "component", type: i1$7.AXNumberBoxComponent, selector: "ax-number-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "minValue", "maxValue", "showSpinButtons", "thousandsSeparator", "decimals", "changeOnScroll", "step"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "thousandsSeparatorChange"] }, { 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: AXCheckBoxModule }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "component", type: i3$2.AXPopoverComponent, selector: "ax-popover", inputs: ["width", "disablePanelClass", "disabled", "offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "closeOnScroll", "backdropClass", "panelClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: AXRangeSliderModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "component", type: i6$1.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "component", type: AXKBDComponent, selector: "ax-kbd", inputs: ["look"] }, { kind: "component", type: AXKBDItemComponent, selector: "ax-kbd-item", inputs: ["keys", "join", "look"], outputs: ["lookChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i2$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
21190
20888
|
}
|
|
21191
20889
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSpacingWidgetEditComponent, decorators: [{
|
|
21192
20890
|
type: Component,
|
|
@@ -21199,9 +20897,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
21199
20897
|
AXRangeSliderModule,
|
|
21200
20898
|
AXButtonModule,
|
|
21201
20899
|
AXDropdownButtonModule,
|
|
20900
|
+
AXKBDComponent,
|
|
20901
|
+
AXKBDItemComponent,
|
|
21202
20902
|
AXNumberBoxModule,
|
|
21203
20903
|
AXDecoratorModule,
|
|
21204
|
-
], template: "<div class=\"axp-spacing-box ax-flex ax-justify-center ax-items-center ax-pt-4 ax-pb-2\">\n <div class=\"axp-spacing-inner-box\">\n <div class=\"axp-spacing-margin-box\">\n <!--MARGIN SVG DEFINE-->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"224\" height=\"112\" class=\"area\">\n <mask id=\"margin-mask\" width=\"224\" height=\"112\">\n <rect fill=\"#000\" height=\"112\" width=\"224\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#fff\" height=\"112\" rx=\"4\" width=\"224\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#000\" height=\"66\" rx=\"4\" width=\"154\" x=\"35\" y=\"23\"></rect>\n </mask>\n <defs>\n <linearGradient id=\"FuseLinearGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stop-color=\"white\"></stop>\n <stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\"></stop>\n </linearGradient>\n </defs>\n\n <!--MARGIN TOP SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'top')\"\n (mousedown)=\"listenToMove($event, 'margin', 'top')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n fill-opacity=\"0.12\"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"url(#FuseLinearGradient)\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n fill-opacity=\"0.02\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN RIGHT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'right')\"\n (mousedown)=\"listenToMove($event, 'margin', 'right')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m224,0\n v112\n l-36,-24\n v-64\n l36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m224,0\n v112\n l-36,-24\n v-64\n l36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN BOTTOM SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'bottom')\"\n (mousedown)=\"listenToMove($event, 'margin', 'bottom')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,112\n h224\n l-36,-24\n h-152\n l-36,24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,112\n h224\n l-36,-24\n h-152\n l-36,24z\n \"\n fill-opacity=\"0.064\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN LEFT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'left')\"\n (mousedown)=\"listenToMove($event, 'margin', 'left')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n v112\n l36,-24\n v-64\n l-36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n v112\n l36,-24\n v-64\n l-36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n </svg>\n\n <!--MARGIN TOP VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <span>{{ calculatedValues().margin.top + ' ' + units().margin.top }}</span>\n </div>\n </div>\n\n <!--MARGIN RIGHT VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <span>{{ calculatedValues().margin.right + ' ' + units().margin.right }}</span>\n </div>\n </div>\n\n <!--MARGIN BOTTOM VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <span>{{ calculatedValues().margin.bottom + ' ' + units().margin.bottom }}</span>\n </div>\n </div>\n\n <!--MARGIN LEFT VALUE-->\n <div tabindex=\"0\" style=\"grid-area: 2 / 1 / 3 / 2\" class=\"axp-spacing-value-container\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <span>{{ calculatedValues().margin.left + ' ' + units().margin.left }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"axp-spacing-padding-box\">\n <!--SVG DEFINE-->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"62\" class=\"area\">\n <mask id=\"padding-mask\" width=\"150\" height=\"62\">\n <rect fill=\"#000\" height=\"60\" width=\"150\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#fff\" height=\"60\" rx=\"2\" width=\"150\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#000\" height=\"14\" rx=\"2\" width=\"80\" x=\"35\" y=\"23\"></rect>\n </mask>\n\n <!--PADDING TOP SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'top')\"\n (mousedown)=\"listenToMove($event, 'padding', 'top')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n h150\n l-36,24\n h-78\n l-36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n h150\n l-36,24\n h-78\n l-36,-24z\n \"\n fill-opacity=\"0.064\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING RIGHT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'right')\"\n (mousedown)=\"listenToMove($event, 'padding', 'right')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m150,0\n v60\n l-36,-24\n v-12\n l36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m150,0\n v60\n l-36,-24\n v-12\n l36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING BOTTOM SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'bottom')\"\n (mousedown)=\"listenToMove($event, 'padding', 'bottom')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,60\n h150\n l-36,-24\n h-78\n l-36,24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,60\n h150\n l-36,-24\n h-78\n l-36,24z\n \"\n fill-opacity=\"0.12\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING LEFT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'left')\"\n (mousedown)=\"listenToMove($event, 'padding', 'left')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n v60\n l36,-24\n v-12\n l-36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n v60\n l36,-24\n v-12\n l-36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n </svg>\n\n <!--PADDING TOP SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <span>{{ this.calculatedValues().padding.top + ' ' + units().padding.top }}</span>\n </div>\n </div>\n\n <!--PADDING RIGHT SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <span>{{ this.calculatedValues().padding.right + ' ' + units().padding.right }}</span>\n </div>\n </div>\n\n <!--PADDING BOTTOM SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <span>{{ this.calculatedValues().padding.bottom + ' ' + units().padding.bottom }}</span>\n </div>\n </div>\n\n <!--PADDING LEFT SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <span>{{ this.calculatedValues().padding.left + ' ' + units().padding.left }}</span>\n </div>\n </div>\n </div>\n\n <!--PADDING TEXT-->\n <svg class=\"axp-spacing-padding-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">PADDING</text>\n </svg>\n\n <!--MARGIN TEXT-->\n <svg class=\"axp-spacing-margin-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">MARGIN</text>\n </svg>\n\n <!-- Ctrl hint -->\n <!-- <div class=\"ax-text-xs ax-text-center ax-text-neutral-400 ax-mt-1\">\n Hold Ctrl while dragging to adjust all sides\n </div> -->\n </div>\n</div>\n\n<ng-template #template let-type=\"type\" let-side=\"side\" let-value=\"value\">\n <div\n class=\"axp-spacing-popup-container\"\n (keydown.control.b)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n >\n <div class=\"axp-spacing-popover\">\n <!--SET EMPTY-->\n <div class=\"ax-size-4 ax-cursor-pointer\" (click)=\"setSpacing(0, type, side)\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path opacity=\"0.4\" d=\"M14 2L14 13L10 13L10 2L14 2Z\" fill=\"currentColor\" fill-opacity=\"0.67\"></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.99995 7L7.99995 1H8.99995L8.99995 14H7.99995L7.99995 8L3.70706 8L5.85351 10.1464L5.1464 10.8536L1.79285 7.5L5.1464 4.14645L5.85351 4.85355L3.70706 7L7.99995 7Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n\n <div class=\"ax-flex ax-justify-center ax-h-6 ax-flex-col\">\n <input\n type=\"range\"\n name=\"range\"\n [min]=\"0\"\n [max]=\"200\"\n [value]=\"this.calculatedValues()[this.current().type][this.current().side]\"\n (input)=\"setSpacing($event, type, side)\"\n />\n </div>\n <div>\n <!--INPUT NUMBER-->\n <div style=\"--local-gap: 8px\">\n <div\n style=\"\n gap: 8px;\n height: auto;\n display: flex;\n flex-flow: column;\n -webkit-box-align: stretch;\n align-items: stretch;\n -webkit-box-pack: start;\n position: relative;\n justify-content: stretch;\n width: 100%;\n -webkit-box-flex: 1;\n flex-grow: 1;\n \"\n >\n <ax-number-box\n class=\"ax-sm\"\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [ngModel]=\"value\"\n (onValueChanged)=\"setSpacing($event.value ?? 0, type, side)\"\n [showSpinButtons]=\"false\"\n >\n <ax-suffix>\n <ax-dropdown-button [text]=\"getSpacingUnitLabel(type, side)\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n <ax-button-item-list>\n @for (u of spacingUnits; track $index) {\n <ax-button-item\n [text]=\"u.toUpperCase()\"\n [selected]=\"getSpacingUnit(type, side) === u\"\n (onClick)=\"onSpacingUnitChange(u, type, side)\"\n ></ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-number-box>\n </div>\n </div>\n </div>\n <div class=\"axp-spacing-template-values\">\n @for (i of FixedValues; track $index) {\n <div\n (click)=\"setSpacing(i.value, type, side)\"\n class=\"hover:!ax-bg-gradient-to-b hover:!ax-from-white/20 hover:!ax-to-white/5 !ax-cursor-pointer\"\n [class]=\"i.colspan ? 'ax-col-span-' + i.colspan : ''\"\n [class]=\"i.rowspan ? 'ax-row-span-' + i.rowspan : ''\"\n tabindex=\"0\"\n style=\"\n border-bottom-color: var(--color-border-1);\n border-left-color: var(--color-border-1);\n border-right-color: var(--color-border-1);\n border-top-color: var(--color-border-1);\n outline: 0px;\n cursor: default;\n user-select: none;\n padding: 0px;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n --component-icon-color: var(--color-text-secondary);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n border-radius: 4px;\n color: var(--color-action-secondary-text);\n background: var(--color-action-secondary-background);\n border-width: 0px;\n border-style: solid;\n box-shadow: var(--box-shadows-action-secondary);\n align-self: center;\n \"\n >\n <div class=\"ax-truncate\">\n {{ i.label }}\n <span class=\"ax-text-xs ax-text-neutral-400\">\n {{ units()[this.current().type][this.current().side] }}</span\n >\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"ax-h-[1px] ax-mt-1 ax-mb-1 ax-bg-border-1 ax-pointer-events-none\"></div>\n\n <div\n [class.ax-opacity-50]=\"\n originalValues()[this.current().type][this.current().side] ===\n calculatedValues()[this.current().type][this.current().side]\n \"\n (click)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n tabindex=\"0\"\n class=\"ax-outline-none ax-select-none ax-py-1 ax-px-2 ax-my-1 ax-min-h-6 ax-cursor-pointer hover:!ax-bg-[#404040]\"\n >\n <div class=\"ax-flex ax-flex-row ax-items-center\">\n <div class=\"ax-min-w-6 ax-self-center ax-grow ax-basis-0\">\n <div class=\"ax-items-center ax-box-border ax-grid ax-grid-cols-[16px_1fr_auto] ax-gap-x-2 ax-gap-y-1\">\n <div class=\"ax-size-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.70712 5.00004L6.35357 2.35359L5.64646 1.64648L1.79291 5.50004L5.64646 9.35359L6.35357 8.64648L3.70712 6.00004H10C11.6569 6.00004 13 7.34318 13 9.00004C13 10.6569 11.6569 12 10 12H8.00001V13H10C12.2092 13 14 11.2092 14 9.00004C14 6.7909 12.2092 5.00004 10 5.00004H3.70712Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Reset</div>\n </div>\n </div>\n <div class=\"ax-self-center\">\n <div\n class=\"ax-cursor-default ax-select-none ax-text-[11.5px] ax-font-normal ax-leading-4 ax-tracking-tight ax-text-secondary ax-justify-self-end ax-ml-[1px]\"\n >\n <span><kbd>Ctrl</kbd> + <kbd>B</kbd></span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ax-popover #popover [openOn]=\"'click'\" [offsetY]=\"10\" [closeOn]=\"'clickOut'\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n type: this.current().type,\n side: this.current().side,\n value: this.calculatedValues()[this.current().type][this.current().side],\n }\"\n ></ng-container>\n</ax-popover>\n", styles: [".axp-spacing-box{--color-text-secondary: rgba(255, 255, 255, .67);--color-ui-scrollbar-thumb: rgba(255, 255, 255, .67);--color-background-1: #292929;--color-text-secondary: white;--color-border-2: rgba(255, 255, 255, .16);--color-changed: rgb(167, 209, 255);--color-background: rgba(0, 106, 204, .18)}.axp-spacing-box .axp-spacing-inner-box{transform:scale(1.2);position:relative;display:grid;width:224px;height:112px;grid-template-columns:36px 1px 36px 1fr 36px 1px 36px;grid-template-rows:24px 2px 24px 1fr 24px 2px 24px;outline-style:none;cursor:default;-webkit-user-select:none;user-select:none}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-value-container{pointer-events:none;border:none;outline:0px;cursor:default;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;place-self:center;padding:2px;height:auto;width:auto;font-family:inherit;font-size:inherit;position:relative;border-radius:4px;color:var(--color-text-secondary);background:transparent;box-sizing:border-box;box-shadow:none}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-value-container .axp-spacing-value-field{cursor:default;-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:400;line-height:10px;letter-spacing:-.115px;display:flex;color:var(--color-text-secondary);background:transparent;padding:2px;margin:0;border-radius:2px;max-width:100%;box-sizing:content-box;place-self:center;position:relative;opacity:1;align-items:center;justify-content:center}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-margin-box{border-radius:4px;grid-area:1/1/-1/-1;display:grid;grid-template-columns:36px 1fr 36px;grid-template-rows:24px minmax(8px,1fr) 24px;justify-items:center;width:224px;height:112px}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-padding-box{border-radius:4px;grid-area:3/3/span 3/span 3;display:grid;grid-template-columns:36px 1fr 36px;grid-template-rows:24px minmax(8px,1fr) 24px;justify-items:center;width:150px;height:60px}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-padding-text{grid-area:3/3/span 3/span 3;pointer-events:none;position:relative}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-margin-text{grid-area:1/1/-1/-1;pointer-events:none;position:relative}.axp-spacing-popup-container{--color-action-secondary-text: white;--color-action-secondary-background: linear-gradient( 180deg, rgba(255, 255, 255, .13) 0%, rgba(255, 255, 255, .11) 100% );--box-shadows-action-secondary: 0px .5px 1px rgba(0, 0, 0, .8), inset 0px .5px .5px rgba(255, 255, 255, .12);--color-border-1: rgba(255, 255, 255, .13);max-width:239px;min-width:201px;background:#353535;border-radius:.5rem;color:var(--color-text-secondary, white);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,sans-serif;font-size:11.5px;line-height:16px}.axp-spacing-popup-container .axp-spacing-popover{display:grid;grid-template-columns:16px 1fr 56px;grid-template-rows:24px 1fr;align-items:center;gap:8px;width:241px;padding:8px}.axp-spacing-popup-container .axp-spacing-popover .axp-spacing-template-values{display:grid;grid-area:2/1/3/-1;grid-template-columns:repeat(5,1fr);grid-template-rows:24px 24px;gap:4px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]{-webkit-appearance:none;appearance:none;width:100%;cursor:pointer;outline:none;overflow:hidden;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-webkit-slider-runnable-track{height:10px;background:#ccc;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-moz-range-track{height:10px;background:#ccc;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:10px;width:10px;background-color:#fff;border-radius:50%;border:1px solid #353535;box-shadow:-407px 0 0 400px #29292970}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-moz-range-thumb{height:10px;width:10px;background-color:#fff;border-radius:50%;border:1px solid #353535;box-shadow:-407px 0 0 400px #29292970}.area{grid-area:1/1/-1/-1;overflow:hidden;border-radius:2px;filter:drop-shadow(rgba(255,255,255,.2) 0px -.5px 0px) drop-shadow(rgba(0,0,0,.4) 0px 0px 1px) drop-shadow(rgba(0,0,0,.2) 0px 1px 0px)}\n"] }]
|
|
20904
|
+
], template: "<div class=\"axp-spacing-box ax-flex ax-justify-center ax-items-center ax-pt-4 ax-pb-2\">\n <div class=\"axp-spacing-inner-box\">\n <div class=\"axp-spacing-margin-box\">\n <!--MARGIN SVG DEFINE-->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"224\" height=\"112\" class=\"area\">\n <mask id=\"margin-mask\" width=\"224\" height=\"112\">\n <rect fill=\"#000\" height=\"112\" width=\"224\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#fff\" height=\"112\" rx=\"4\" width=\"224\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#000\" height=\"66\" rx=\"4\" width=\"154\" x=\"35\" y=\"23\"></rect>\n </mask>\n <defs>\n <linearGradient id=\"FuseLinearGradient\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop stop-color=\"white\"></stop>\n <stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\"></stop>\n </linearGradient>\n </defs>\n\n <!--MARGIN TOP SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'top')\"\n (mousedown)=\"listenToMove($event, 'margin', 'top')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n fill-opacity=\"0.12\"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"url(#FuseLinearGradient)\"\n d=\"\n m0,0\n h224\n l-36,24\n h-152\n l-36,-24z\n \"\n fill-opacity=\"0.02\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN RIGHT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'right')\"\n (mousedown)=\"listenToMove($event, 'margin', 'right')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m224,0\n v112\n l-36,-24\n v-64\n l36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m224,0\n v112\n l-36,-24\n v-64\n l36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN BOTTOM SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'bottom')\"\n (mousedown)=\"listenToMove($event, 'margin', 'bottom')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,112\n h224\n l-36,-24\n h-152\n l-36,24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,112\n h224\n l-36,-24\n h-152\n l-36,24z\n \"\n fill-opacity=\"0.064\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n <!--MARGIN LEFT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'margin', 'left')\"\n (mousedown)=\"listenToMove($event, 'margin', 'left')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n v112\n l36,-24\n v-64\n l-36,-24z\n \"\n mask=\"url(#margin-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n v112\n l36,-24\n v-64\n l-36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#margin-mask)\"\n ></path>\n </g>\n </g>\n </svg>\n\n <!--MARGIN TOP VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <span>{{ calculatedValues().margin.top + ' ' + units().margin.top }}</span>\n </div>\n </div>\n\n <!--MARGIN RIGHT VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <span>{{ calculatedValues().margin.right + ' ' + units().margin.right }}</span>\n </div>\n </div>\n\n <!--MARGIN BOTTOM VALUE-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <span>{{ calculatedValues().margin.bottom + ' ' + units().margin.bottom }}</span>\n </div>\n </div>\n\n <!--MARGIN LEFT VALUE-->\n <div tabindex=\"0\" style=\"grid-area: 2 / 1 / 3 / 2\" class=\"axp-spacing-value-container\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <span>{{ calculatedValues().margin.left + ' ' + units().margin.left }}</span>\n </div>\n </div>\n </div>\n\n <div class=\"axp-spacing-padding-box\">\n <!--SVG DEFINE-->\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"62\" class=\"area\">\n <mask id=\"padding-mask\" width=\"150\" height=\"62\">\n <rect fill=\"#000\" height=\"60\" width=\"150\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#fff\" height=\"60\" rx=\"2\" width=\"150\" x=\"0\" y=\"0\"></rect>\n <rect fill=\"#000\" height=\"14\" rx=\"2\" width=\"80\" x=\"35\" y=\"23\"></rect>\n </mask>\n\n <!--PADDING TOP SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'top')\"\n (mousedown)=\"listenToMove($event, 'padding', 'top')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n h150\n l-36,24\n h-78\n l-36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n h150\n l-36,24\n h-78\n l-36,-24z\n \"\n fill-opacity=\"0.064\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING RIGHT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'right')\"\n (mousedown)=\"listenToMove($event, 'padding', 'right')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m150,0\n v60\n l-36,-24\n v-12\n l36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m150,0\n v60\n l-36,-24\n v-12\n l36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING BOTTOM SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'bottom')\"\n (mousedown)=\"listenToMove($event, 'padding', 'bottom')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,60\n h150\n l-36,-24\n h-78\n l-36,24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,60\n h150\n l-36,-24\n h-78\n l-36,24z\n \"\n fill-opacity=\"0.12\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n\n <!--PADDING LEFT SVG-->\n <g\n class=\"hover:ax-brightness-75\"\n style=\"cursor: s-resize\"\n (click)=\"openPopUp($event, 'padding', 'left')\"\n (mousedown)=\"listenToMove($event, 'padding', 'left')\"\n >\n <g>\n <path\n mode=\"delta\"\n fill=\"var(--color-background-1)\"\n d=\"\n m0,0\n v60\n l36,-24\n v-12\n l-36,-24z\n \"\n mask=\"url(#padding-mask)\"\n ></path>\n <path\n mode=\"delta\"\n fill=\"white\"\n d=\"\n m0,0\n v60\n l36,-24\n v-12\n l-36,-24z\n \"\n fill-opacity=\"0.094\"\n mask=\"url(#padding-mask)\"\n ></path>\n </g>\n </g>\n </svg>\n\n <!--PADDING TOP SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 1 / 2 / 2 / 3\">\n <span>{{ this.calculatedValues().padding.top + ' ' + units().padding.top }}</span>\n </div>\n </div>\n\n <!--PADDING RIGHT SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 3 / 3 / 4\">\n <span>{{ this.calculatedValues().padding.right + ' ' + units().padding.right }}</span>\n </div>\n </div>\n\n <!--PADDING BOTTOM SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 3 / 2 / 4 / 3\">\n <span>{{ this.calculatedValues().padding.bottom + ' ' + units().padding.bottom }}</span>\n </div>\n </div>\n\n <!--PADDING LEFT SVG-->\n <div tabindex=\"0\" class=\"axp-spacing-value-container\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <div class=\"axp-spacing-value-field\" style=\"grid-area: 2 / 1 / 3 / 2\">\n <span>{{ this.calculatedValues().padding.left + ' ' + units().padding.left }}</span>\n </div>\n </div>\n </div>\n\n <!--PADDING TEXT-->\n <svg class=\"axp-spacing-padding-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">PADDING</text>\n </svg>\n\n <!--MARGIN TEXT-->\n <svg class=\"axp-spacing-margin-text\" xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"100%\">\n <text x=\"5\" y=\"10\" fill=\"white\" font-weight=\"500\" font-size=\"7\">MARGIN</text>\n </svg>\n\n <!-- Ctrl hint -->\n <!-- <div class=\"ax-text-xs ax-text-center ax-text-neutral-400 ax-mt-1\">\n Hold Ctrl while dragging to adjust all sides\n </div> -->\n </div>\n</div>\n\n<ng-template #template let-type=\"type\" let-side=\"side\" let-value=\"value\">\n <div\n class=\"axp-spacing-popup-container\"\n (keydown.control.b)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n >\n <div class=\"axp-spacing-popover\">\n <!--SET EMPTY-->\n <div class=\"ax-size-4 ax-cursor-pointer\" (click)=\"setSpacing(0, type, side)\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path opacity=\"0.4\" d=\"M14 2L14 13L10 13L10 2L14 2Z\" fill=\"currentColor\" fill-opacity=\"0.67\"></path>\n <path\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n d=\"M7.99995 7L7.99995 1H8.99995L8.99995 14H7.99995L7.99995 8L3.70706 8L5.85351 10.1464L5.1464 10.8536L1.79285 7.5L5.1464 4.14645L5.85351 4.85355L3.70706 7L7.99995 7Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n\n <div class=\"ax-flex ax-justify-center ax-h-6 ax-flex-col\">\n <input\n type=\"range\"\n name=\"range\"\n [min]=\"0\"\n [max]=\"200\"\n [value]=\"this.calculatedValues()[this.current().type][this.current().side]\"\n (input)=\"setSpacing($event, type, side)\"\n />\n </div>\n <div>\n <!--INPUT NUMBER-->\n <div style=\"--local-gap: 8px\">\n <div\n style=\"\n gap: 8px;\n height: auto;\n display: flex;\n flex-flow: column;\n -webkit-box-align: stretch;\n align-items: stretch;\n -webkit-box-pack: start;\n position: relative;\n justify-content: stretch;\n width: 100%;\n -webkit-box-flex: 1;\n flex-grow: 1;\n \"\n >\n <ax-number-box\n class=\"ax-sm\"\n [minValue]=\"0\"\n [changeOnScroll]=\"true\"\n [ngModel]=\"value\"\n (onValueChanged)=\"setSpacing($event.value ?? 0, type, side)\"\n [showSpinButtons]=\"false\"\n >\n <ax-suffix>\n <ax-dropdown-button [text]=\"getSpacingUnitLabel(type, side)\" [look]=\"'blank'\" [mode]=\"'dropdown'\">\n <ax-button-item-list>\n @for (u of spacingUnits; track $index) {\n <ax-button-item\n [text]=\"u.toUpperCase()\"\n [selected]=\"getSpacingUnit(type, side) === u\"\n (onClick)=\"onSpacingUnitChange(u, type, side)\"\n ></ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-button>\n </ax-suffix>\n </ax-number-box>\n </div>\n </div>\n </div>\n <div class=\"axp-spacing-template-values\">\n @for (i of FixedValues; track $index) {\n <div\n (click)=\"setSpacing(i.value, type, side)\"\n class=\"hover:!ax-bg-gradient-to-b hover:!ax-from-white/20 hover:!ax-to-white/5 !ax-cursor-pointer\"\n [class]=\"i.colspan ? 'ax-col-span-' + i.colspan : ''\"\n [class]=\"i.rowspan ? 'ax-row-span-' + i.rowspan : ''\"\n tabindex=\"0\"\n style=\"\n border-bottom-color: var(--color-border-1);\n border-left-color: var(--color-border-1);\n border-right-color: var(--color-border-1);\n border-top-color: var(--color-border-1);\n outline: 0px;\n cursor: default;\n user-select: none;\n padding: 0px;\n box-sizing: border-box;\n font-family: inherit;\n font-size: inherit;\n --component-icon-color: var(--color-text-secondary);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n border-radius: 4px;\n color: var(--color-action-secondary-text);\n background: var(--color-action-secondary-background);\n border-width: 0px;\n border-style: solid;\n box-shadow: var(--box-shadows-action-secondary);\n align-self: center;\n \"\n >\n <div class=\"ax-truncate\">\n {{ i.label }}\n <span class=\"ax-text-xs ax-text-neutral-400\">\n {{ units()[this.current().type][this.current().side] }}</span\n >\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"ax-h-[1px] ax-mt-1 ax-mb-1 ax-bg-border-1 ax-pointer-events-none\"></div>\n\n <div\n [class.ax-opacity-50]=\"\n originalValues()[this.current().type][this.current().side] ===\n calculatedValues()[this.current().type][this.current().side]\n \"\n (click)=\"setSpacing(originalValues()[this.current().type][this.current().side], type, side)\"\n tabindex=\"0\"\n class=\"ax-outline-none ax-select-none ax-py-1 ax-px-2 ax-my-1 ax-min-h-6 ax-cursor-pointer hover:!ax-bg-[#404040]\"\n >\n <div class=\"ax-flex ax-flex-row ax-items-center\">\n <div class=\"ax-min-w-6 ax-self-center ax-grow ax-basis-0\">\n <div class=\"ax-items-center ax-box-border ax-grid ax-grid-cols-[16px_1fr_auto] ax-gap-x-2 ax-gap-y-1\">\n <div class=\"ax-size-4\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M3.70712 5.00004L6.35357 2.35359L5.64646 1.64648L1.79291 5.50004L5.64646 9.35359L6.35357 8.64648L3.70712 6.00004H10C11.6569 6.00004 13 7.34318 13 9.00004C13 10.6569 11.6569 12 10 12H8.00001V13H10C12.2092 13 14 11.2092 14 9.00004C14 6.7909 12.2092 5.00004 10 5.00004H3.70712Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </div>\n <div>Reset</div>\n </div>\n </div>\n <div class=\"ax-self-center\">\n <div\n class=\"ax-cursor-default ax-select-none ax-text-[11.5px] ax-font-normal ax-leading-4 ax-tracking-tight ax-text-secondary ax-justify-self-end ax-ml-[1px]\"\n >\n <ax-kbd class=\"look-text\">\n <ax-kbd-item [keys]=\"toggleShortcutKeys\"></ax-kbd-item>\n </ax-kbd>\n </div>\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n\n<ax-popover #popover [openOn]=\"'click'\" [offsetY]=\"10\" [closeOn]=\"'clickOut'\">\n <ng-container\n [ngTemplateOutlet]=\"template\"\n [ngTemplateOutletContext]=\"{\n type: this.current().type,\n side: this.current().side,\n value: this.calculatedValues()[this.current().type][this.current().side],\n }\"\n ></ng-container>\n</ax-popover>\n", styles: [".axp-spacing-box{--color-text-secondary: rgba(255, 255, 255, .67);--color-ui-scrollbar-thumb: rgba(255, 255, 255, .67);--color-background-1: #292929;--color-text-secondary: white;--color-border-2: rgba(255, 255, 255, .16);--color-changed: rgb(167, 209, 255);--color-background: rgba(0, 106, 204, .18)}.axp-spacing-box .axp-spacing-inner-box{transform:scale(1.2);position:relative;display:grid;width:224px;height:112px;grid-template-columns:36px 1px 36px 1fr 36px 1px 36px;grid-template-rows:24px 2px 24px 1fr 24px 2px 24px;outline-style:none;cursor:default;-webkit-user-select:none;user-select:none}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-value-container{pointer-events:none;border:none;outline:0px;cursor:default;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;place-self:center;padding:2px;height:auto;width:auto;font-family:inherit;font-size:inherit;position:relative;border-radius:4px;color:var(--color-text-secondary);background:transparent;box-sizing:border-box;box-shadow:none}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-value-container .axp-spacing-value-field{cursor:default;-webkit-user-select:none;user-select:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:400;line-height:10px;letter-spacing:-.115px;display:flex;color:var(--color-text-secondary);background:transparent;padding:2px;margin:0;border-radius:2px;max-width:100%;box-sizing:content-box;place-self:center;position:relative;opacity:1;align-items:center;justify-content:center}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-margin-box{border-radius:4px;grid-area:1/1/-1/-1;display:grid;grid-template-columns:36px 1fr 36px;grid-template-rows:24px minmax(8px,1fr) 24px;justify-items:center;width:224px;height:112px}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-padding-box{border-radius:4px;grid-area:3/3/span 3/span 3;display:grid;grid-template-columns:36px 1fr 36px;grid-template-rows:24px minmax(8px,1fr) 24px;justify-items:center;width:150px;height:60px}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-padding-text{grid-area:3/3/span 3/span 3;pointer-events:none;position:relative}.axp-spacing-box .axp-spacing-inner-box .axp-spacing-margin-text{grid-area:1/1/-1/-1;pointer-events:none;position:relative}.axp-spacing-popup-container{--color-action-secondary-text: white;--color-action-secondary-background: linear-gradient( 180deg, rgba(255, 255, 255, .13) 0%, rgba(255, 255, 255, .11) 100% );--box-shadows-action-secondary: 0px .5px 1px rgba(0, 0, 0, .8), inset 0px .5px .5px rgba(255, 255, 255, .12);--color-border-1: rgba(255, 255, 255, .13);max-width:239px;min-width:201px;background:#353535;border-radius:.5rem;color:var(--color-text-secondary, white);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen-Sans,Ubuntu,Cantarell,Helvetica Neue,Helvetica,Arial,\"Apple Color Emoji\",\"Segoe UI Emoji\",Segoe UI Symbol,sans-serif;font-size:11.5px;line-height:16px}.axp-spacing-popup-container .axp-spacing-popover{display:grid;grid-template-columns:16px 1fr 56px;grid-template-rows:24px 1fr;align-items:center;gap:8px;width:241px;padding:8px}.axp-spacing-popup-container .axp-spacing-popover .axp-spacing-template-values{display:grid;grid-area:2/1/3/-1;grid-template-columns:repeat(5,1fr);grid-template-rows:24px 24px;gap:4px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]{-webkit-appearance:none;appearance:none;width:100%;cursor:pointer;outline:none;overflow:hidden;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-webkit-slider-runnable-track{height:10px;background:#ccc;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-moz-range-track{height:10px;background:#ccc;border-radius:12px}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;height:10px;width:10px;background-color:#fff;border-radius:50%;border:1px solid #353535;box-shadow:-407px 0 0 400px #29292970}.axp-spacing-popup-container .axp-spacing-popover input[type=range]::-moz-range-thumb{height:10px;width:10px;background-color:#fff;border-radius:50%;border:1px solid #353535;box-shadow:-407px 0 0 400px #29292970}.area{grid-area:1/1/-1/-1;overflow:hidden;border-radius:2px;filter:drop-shadow(rgba(255,255,255,.2) 0px -.5px 0px) drop-shadow(rgba(0,0,0,.4) 0px 0px 1px) drop-shadow(rgba(0,0,0,.2) 0px 1px 0px)}\n"] }]
|
|
21205
20905
|
}], propDecorators: { popover: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPopoverComponent), { isSignal: true }] }] } });
|
|
21206
20906
|
|
|
21207
20907
|
var spacingWidgetEditor_component = /*#__PURE__*/Object.freeze({
|
|
@@ -24068,7 +23768,7 @@ class AXPTabularDataWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
24068
23768
|
this.platform = inject(AXPlatform);
|
|
24069
23769
|
}
|
|
24070
23770
|
async openPopup() {
|
|
24071
|
-
const { AXPTabularDataPopupComponent } = await import('./acorex-platform-layout-widgets-tabular-data-edit-popup.component-
|
|
23771
|
+
const { AXPTabularDataPopupComponent } = await import('./acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs');
|
|
24072
23772
|
const popupData = await this.popupService.open(AXPTabularDataPopupComponent, {
|
|
24073
23773
|
size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : this.columns().length > 3 ? 'lg' : 'md',
|
|
24074
23774
|
header: true,
|
|
@@ -24120,7 +23820,7 @@ class AXPTabularDataEditorWidgetViewComponent extends AXPValueWidgetComponent {
|
|
|
24120
23820
|
this.columns = this.options()['columns'];
|
|
24121
23821
|
}
|
|
24122
23822
|
async openPopup() {
|
|
24123
|
-
const { AXPTabularDataPopupComponent } = await import('./acorex-platform-layout-widgets-tabular-data-view-popup.component-
|
|
23823
|
+
const { AXPTabularDataPopupComponent } = await import('./acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs');
|
|
24124
23824
|
this.popupService.open(AXPTabularDataPopupComponent, {
|
|
24125
23825
|
size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',
|
|
24126
23826
|
header: true,
|
|
@@ -28425,5 +28125,5 @@ var getWidgetsForAi_query = /*#__PURE__*/Object.freeze({
|
|
|
28425
28125
|
* Generated bundle index. Do not edit.
|
|
28426
28126
|
*/
|
|
28427
28127
|
|
|
28428
|
-
export { AXPAddressWidget, AXPAddressWidgetColumnComponent, AXPAddressWidgetEditComponent, AXPAddressWidgetService, AXPAddressWidgetViewComponent, AXPAdvancedGridItemWidget, AXPAdvancedGridItemWidgetDesignerComponent, AXPAdvancedGridItemWidgetViewComponent, AXPAdvancedGridOptionsWidget, AXPAdvancedGridOptionsWidgetEditComponent, AXPAdvancedGridWidget, AXPAdvancedGridWidgetDesignerComponent, AXPAdvancedGridWidgetViewComponent, AXPAvatarWidget, AXPAvatarWidgetColumnComponent, AXPAvatarWidgetDesignerComponent, AXPAvatarWidgetEditComponent, AXPAvatarWidgetViewComponent, AXPBetweenExpressionValidationWidget, AXPBetweenValidationWidgetEditComponent, AXPBlockWidget, AXPBlockWidgetDesignerComponent, AXPBlockWidgetViewComponent, AXPBorderWidget, AXPBorderWidgetEditComponent, AXPButtonWidget, AXPButtonWidgetColumnComponent, AXPButtonWidgetViewComponent, AXPCallbackValidationWidget, AXPCallbackValidationWidgetEditComponent, AXPCheckBoxWidget, AXPCheckBoxWidgetColumnComponent, AXPCheckBoxWidgetDesignerComponent, AXPCheckBoxWidgetEditComponent, AXPCheckBoxWidgetViewComponent, AXPCodeEditorWidget, AXPCodeEditorWidgetColumnComponent, AXPCodeEditorWidgetEditComponent, AXPCodeEditorWidgetViewComponent, AXPColorBoxWidget, AXPColorBoxWidgetColumnComponent, AXPColorBoxWidgetDesignerComponent, AXPColorBoxWidgetEditComponent, AXPColorBoxWidgetViewComponent, AXPColorPaletteWidget, AXPColorPaletteWidgetColumnComponent, AXPColorPaletteWidgetDesignerComponent, AXPColorPaletteWidgetEditComponent, AXPColorPaletteWidgetViewComponent, AXPConditionBuilderWidget, AXPConditionBuilderWidgetEditComponent, AXPConditionBuilderWidgetViewComponent, AXPConnectedDragDropListsWidget, AXPConnectedListsWidgetColumnComponent, AXPConnectedListsWidgetEditComponent, AXPConnectedListsWidgetViewComponent, AXPContactWidget, AXPContactWidgetColumnComponent, AXPContactWidgetEditComponent, AXPContactWidgetViewComponent, AXPDataListWidget, AXPDataListWidgetViewComponent, AXPDataSourceOptionsWidget, AXPDataSourceOptionsWidgetEditComponent, AXPDateTimeBoxWidget, AXPDateTimeBoxWidgetColumnComponent, AXPDateTimeBoxWidgetEditComponent, AXPDateTimeBoxWidgetViewComponent, AXPDirectionWidget, AXPDirectionWidgetEditComponent, AXPDragDropListWidget, AXPEditorJsWidget, AXPEditorJsWidgetColumnComponent, AXPEditorJsWidgetEditComponent, AXPEditorJsWidgetViewComponent, AXPEqualValidationWidget, AXPEqualValidationWidgetEditComponent, AXPFieldsetWidget, AXPFieldsetWidgetDesignerComponent, AXPFieldsetWidgetViewComponent, AXPFlexItemOptionsWidget, AXPFlexItemOptionsWidgetEditComponent, AXPFlexItemWidget, AXPFlexItemWidgetDesignerComponent, AXPFlexItemWidgetViewComponent, AXPFlexOptionsWidget, AXPFlexOptionsWidgetEditComponent, AXPFlexWidget, AXPFlexWidgetDesignerComponent, AXPFlexWidgetViewComponent, AXPGalleryWidget, AXPGalleryWidgetEditComponent, AXPGalleryWidgetViewComponent, AXPGetWidgetsForAIQuery, AXPGreaterThanExpressionValidationWidget, AXPGreaterThanValidationWidgetEditComponent, AXPGridItemOptionsWidget, AXPGridItemOptionsWidgetEditComponent, AXPGridOptionsWidget, AXPGridOptionsWidgetEditComponent, AXPImageMarkerPopupComponent, AXPImageMarkerWidget, AXPImageMarkerWidgetColumnComponent, AXPImageMarkerWidgetEditComponent, AXPImageMarkerWidgetViewComponent, AXPItemConfiguratorWidget, AXPItemConfiguratorWidgetColumnComponent, AXPItemConfiguratorWidgetEditComponent, AXPJsonViewerWidget, AXPJsonViewerWidgetEditComponent, AXPJsonViewerWidgetViewComponent, AXPLargeTextWidget, AXPLargeTextWidgetColumnComponent, AXPLargeTextWidgetEditComponent, AXPLargeTextWidgetViewComponent, AXPLessThanExpressionValidationWidget, AXPLessThanValidationWidgetEditComponent, AXPListWidgetColumnComponent, AXPListWidgetEditComponent, AXPListWidgetViewComponent, AXPMapWidgetEditComponent, AXPMapWidgetViewComponent, AXPMaxLengthExpressionValidationWidget, AXPMaxLengthValidationWidgetEditComponent, AXPMinLengthExpressionValidationWidget, AXPMinLengthValidationWidgetEditComponent, AXPNumberBoxWidget, AXPNumberBoxWidgetColumnComponent, AXPNumberBoxWidgetEditComponent, AXPNumberBoxWidgetViewComponent, AXPOutcomeResultsViewerWidget, AXPOutcomeResultsViewerWidgetViewComponent, AXPPageWidget, AXPPageWidgetViewComponent, AXPPasswordBoxWidget, AXPPasswordBoxWidgetColumnComponent, AXPPasswordBoxWidgetEditComponent, AXPPasswordBoxWidgetViewComponent, AXPProgressBarWidget, AXPProgressBarWidgetColumnComponent, AXPProgressBarWidgetEditComponent, AXPProgressBarWidgetViewComponent, AXPProviderSelectWidgetColumnComponent, AXPProviderSelectWidgetEditBase, AXPProviderSelectWidgetViewComponent, AXPQrcodeWidget, AXPQrcodeWidgetColumnComponent, AXPQrcodeWidgetEditComponent, AXPQrcodeWidgetViewComponent, AXPRatePickerWidget, AXPRatePickerWidgetColumnComponent, AXPRatePickerWidgetEditComponent, AXPRatePickerWidgetViewComponent, AXPRegularExpressionValidationWidget, AXPRegularExpressionValidationWidgetEditComponent, AXPRepeaterWidget, AXPRepeaterWidgetDesignerComponent, AXPRepeaterWidgetEditComponent, AXPRepeaterWidgetViewComponent, AXPRequiredValidationWidget, AXPRequiredValidationWidgetEditComponent, AXPRichTextWidget, AXPRichTextWidgetColumnComponent, AXPRichTextWidgetEditComponent, AXPRichTextWidgetViewComponent, AXPSchedulerPickerWidget, AXPSchedulerPickerWidgetColumnComponent, AXPSchedulerPickerWidgetEditComponent, AXPSchedulerPickerWidgetViewComponent, AXPSelectBoxWidget, AXPSelectBoxWidgetColumnComponent, AXPSelectBoxWidgetEditComponent, AXPSelectBoxWidgetViewComponent, AXPSelectLanguagePopup, AXPSelectionListWidget, AXPSelectionListWidgetColumnComponent, AXPSelectionListWidgetDesignerComponent, AXPSelectionListWidgetEditComponent, AXPSelectionListWidgetViewComponent, AXPSignatureWidget, AXPSignatureWidgetColumnComponent, AXPSignatureWidgetEditComponent, AXPSignatureWidgetViewComponent, AXPSpacingWidget, AXPSpacingWidgetEditComponent, AXPStatusChipComponent, AXPStatusWidget, AXPStatusWidgetColumnComponent, AXPStatusWidgetEditComponent, AXPStatusWidgetViewComponent, AXPStepWizardWidget, AXPStepWizardWidgetViewComponent, AXPStopwatchWidget, AXPStopwatchWidgetViewComponent, AXPTableItemWidget, AXPTableItemWidgetDesignerComponent, AXPTableItemWidgetViewComponent, AXPTableWidget, AXPTableWidgetDesignerComponent, AXPTableWidgetViewComponent, AXPTagEditorWidget, AXPTagEditorWidgetColumnComponent, AXPTagEditorWidgetEditComponent, AXPTagEditorWidgetViewComponent, AXPTemplateBoxWidget, AXPTemplateBoxWidgetColumnComponent, AXPTemplateBoxWidgetEditComponent, AXPTemplateBoxWidgetPrintComponent, AXPTemplateBoxWidgetViewComponent, AXPTextBoxWidget, AXPTextBoxWidgetColumnComponent, AXPTextBoxWidgetEditComponent, AXPTextBoxWidgetViewComponent, AXPToggleWidget, AXPToggleWidgetColumnComponent, AXPToggleWidgetEditComponent, AXPToggleWidgetViewComponent, AXPWidgetFieldConfiguratorWidget, AXPWidgetFieldConfiguratorWidgetColumnComponent, AXPWidgetFieldConfiguratorWidgetEditComponent, AXPWidgetsModule, AXP_ABSOLUTE_UNITS, AXP_BORDER_RADIUS_UNITS, AXP_BORDER_WIDTH_UNITS, AXP_DATA_LIST_CMD_DELETE, AXP_DATA_LIST_CMD_EDIT, AXP_DATA_LIST_PENDING_DELETE_KEY, AXP_Flex_Box_Align_Options, AXP_Flex_Box_Alignments, AXP_Flex_Box_Justify_Options, AXP_Grid_Box_Align_Items_Options, AXP_Grid_Box_Alignments, AXP_Grid_Box_Justify_Items_Options, AXP_RELATIVE_UNITS, AXP_RELATIVE_UNITS_NO_PERCENT, AXP_ROW_EXPR_PREFIX, AXP_SPACING_UNITS, AXP_WIDGET_AI_AGENT_ASSIST_FOLLOW_UP_CHIPS_LAYOUT, AXP_WIDGET_AI_AGENT_CHART_LAYOUT, AXP_WIDGET_AI_AGENT_FORM_LAYOUT, AXP_WIDGET_AI_AGENT_NAMES, AXP_default_Border_Box_Units, AXP_default_Border_Box_Value, AXP_default_Spacing_Box_Units, AXP_default_Spacing_Box_Value, DEFAULT_STRATEGY_CONFIG, STRATEGY_CONFIG_TOKEN, matchesWidgetAiAgent };
|
|
28128
|
+
export { AXPAddressWidget, AXPAddressWidgetColumnComponent, AXPAddressWidgetEditComponent, AXPAddressWidgetService, AXPAddressWidgetViewComponent, AXPAdvancedGridItemWidget, AXPAdvancedGridItemWidgetDesignerComponent, AXPAdvancedGridItemWidgetViewComponent, AXPAdvancedGridOptionsWidget, AXPAdvancedGridOptionsWidgetEditComponent, AXPAdvancedGridWidget, AXPAdvancedGridWidgetDesignerComponent, AXPAdvancedGridWidgetViewComponent, AXPAvatarWidget, AXPAvatarWidgetColumnComponent, AXPAvatarWidgetDesignerComponent, AXPAvatarWidgetEditComponent, AXPAvatarWidgetViewComponent, AXPBetweenExpressionValidationWidget, AXPBetweenValidationWidgetEditComponent, AXPBlockWidget, AXPBlockWidgetDesignerComponent, AXPBlockWidgetViewComponent, AXPBorderWidget, AXPBorderWidgetEditComponent, AXPButtonWidget, AXPButtonWidgetColumnComponent, AXPButtonWidgetViewComponent, AXPCallbackValidationWidget, AXPCallbackValidationWidgetEditComponent, AXPCheckBoxWidget, AXPCheckBoxWidgetColumnComponent, AXPCheckBoxWidgetDesignerComponent, AXPCheckBoxWidgetEditComponent, AXPCheckBoxWidgetViewComponent, AXPCodeEditorWidget, AXPCodeEditorWidgetColumnComponent, AXPCodeEditorWidgetEditComponent, AXPCodeEditorWidgetViewComponent, AXPColorBoxWidget, AXPColorBoxWidgetColumnComponent, AXPColorBoxWidgetDesignerComponent, AXPColorBoxWidgetEditComponent, AXPColorBoxWidgetViewComponent, AXPColorPaletteWidget, AXPColorPaletteWidgetColumnComponent, AXPColorPaletteWidgetDesignerComponent, AXPColorPaletteWidgetEditComponent, AXPColorPaletteWidgetViewComponent, AXPConditionBuilderWidget, AXPConditionBuilderWidgetEditComponent, AXPConditionBuilderWidgetViewComponent, AXPConnectedDragDropListsWidget, AXPConnectedListsWidgetColumnComponent, AXPConnectedListsWidgetEditComponent, AXPConnectedListsWidgetViewComponent, AXPContactWidget, AXPContactWidgetColumnComponent, AXPContactWidgetEditComponent, AXPContactWidgetViewComponent, AXPDataListWidget, AXPDataListWidgetViewComponent, AXPDataSourceOptionsWidget, AXPDataSourceOptionsWidgetEditComponent, AXPDateTimeBoxWidget, AXPDateTimeBoxWidgetColumnComponent, AXPDateTimeBoxWidgetEditComponent, AXPDateTimeBoxWidgetViewComponent, AXPDirectionWidget, AXPDirectionWidgetEditComponent, AXPDragDropListWidget, AXPEditorJsWidget, AXPEditorJsWidgetColumnComponent, AXPEditorJsWidgetEditComponent, AXPEditorJsWidgetViewComponent, AXPEqualValidationWidget, AXPEqualValidationWidgetEditComponent, AXPFieldsetWidget, AXPFieldsetWidgetDesignerComponent, AXPFieldsetWidgetViewComponent, AXPFlexItemOptionsWidget, AXPFlexItemOptionsWidgetEditComponent, AXPFlexItemWidget, AXPFlexItemWidgetDesignerComponent, AXPFlexItemWidgetViewComponent, AXPFlexOptionsWidget, AXPFlexOptionsWidgetEditComponent, AXPFlexWidget, AXPFlexWidgetDesignerComponent, AXPFlexWidgetViewComponent, AXPGalleryWidget, AXPGalleryWidgetEditComponent, AXPGalleryWidgetViewComponent, AXPGetWidgetsForAIQuery, AXPGreaterThanExpressionValidationWidget, AXPGreaterThanValidationWidgetEditComponent, AXPGridItemOptionsWidget, AXPGridItemOptionsWidgetEditComponent, AXPGridOptionsWidget, AXPGridOptionsWidgetEditComponent, AXPImageMarkerPopupComponent, AXPImageMarkerWidget, AXPImageMarkerWidgetColumnComponent, AXPImageMarkerWidgetEditComponent, AXPImageMarkerWidgetViewComponent, AXPItemConfiguratorWidget, AXPItemConfiguratorWidgetColumnComponent, AXPItemConfiguratorWidgetEditComponent, AXPJsonViewerWidget, AXPJsonViewerWidgetEditComponent, AXPJsonViewerWidgetViewComponent, AXPLargeTextWidget, AXPLargeTextWidgetColumnComponent, AXPLargeTextWidgetEditComponent, AXPLargeTextWidgetViewComponent, AXPLessThanExpressionValidationWidget, AXPLessThanValidationWidgetEditComponent, AXPListWidgetColumnComponent, AXPListWidgetEditComponent, AXPListWidgetViewComponent, AXPMapWidgetEditComponent, AXPMapWidgetViewComponent, AXPMaxLengthExpressionValidationWidget, AXPMaxLengthValidationWidgetEditComponent, AXPMinLengthExpressionValidationWidget, AXPMinLengthValidationWidgetEditComponent, AXPNumberBoxWidget, AXPNumberBoxWidgetColumnComponent, AXPNumberBoxWidgetEditComponent, AXPNumberBoxWidgetViewComponent, AXPOutcomeResultsViewerWidget, AXPOutcomeResultsViewerWidgetViewComponent, AXPPageWidget, AXPPageWidgetViewComponent, AXPPasswordBoxWidget, AXPPasswordBoxWidgetColumnComponent, AXPPasswordBoxWidgetEditComponent, AXPPasswordBoxWidgetViewComponent, AXPProgressBarWidget, AXPProgressBarWidgetColumnComponent, AXPProgressBarWidgetEditComponent, AXPProgressBarWidgetViewComponent, AXPProviderSelectWidgetColumnComponent, AXPProviderSelectWidgetEditBase, AXPProviderSelectWidgetViewComponent, AXPQrcodeViewerService, AXPQrcodeWidget, AXPQrcodeWidgetColumnComponent, AXPQrcodeWidgetEditComponent, AXPQrcodeWidgetViewComponent, AXPRatePickerWidget, AXPRatePickerWidgetColumnComponent, AXPRatePickerWidgetEditComponent, AXPRatePickerWidgetViewComponent, AXPRegularExpressionValidationWidget, AXPRegularExpressionValidationWidgetEditComponent, AXPRepeaterWidget, AXPRepeaterWidgetDesignerComponent, AXPRepeaterWidgetEditComponent, AXPRepeaterWidgetViewComponent, AXPRequiredValidationWidget, AXPRequiredValidationWidgetEditComponent, AXPRichTextWidget, AXPRichTextWidgetColumnComponent, AXPRichTextWidgetEditComponent, AXPRichTextWidgetViewComponent, AXPSchedulerPickerWidget, AXPSchedulerPickerWidgetColumnComponent, AXPSchedulerPickerWidgetEditComponent, AXPSchedulerPickerWidgetViewComponent, AXPSelectBoxWidget, AXPSelectBoxWidgetColumnComponent, AXPSelectBoxWidgetEditComponent, AXPSelectBoxWidgetViewComponent, AXPSelectLanguagePopup, AXPSelectionListWidget, AXPSelectionListWidgetColumnComponent, AXPSelectionListWidgetDesignerComponent, AXPSelectionListWidgetEditComponent, AXPSelectionListWidgetViewComponent, AXPSignatureWidget, AXPSignatureWidgetColumnComponent, AXPSignatureWidgetEditComponent, AXPSignatureWidgetViewComponent, AXPSpacingWidget, AXPSpacingWidgetEditComponent, AXPStatusChipComponent, AXPStatusWidget, AXPStatusWidgetColumnComponent, AXPStatusWidgetEditComponent, AXPStatusWidgetViewComponent, AXPStepWizardWidget, AXPStepWizardWidgetViewComponent, AXPStopwatchWidget, AXPStopwatchWidgetViewComponent, AXPTableItemWidget, AXPTableItemWidgetDesignerComponent, AXPTableItemWidgetViewComponent, AXPTableWidget, AXPTableWidgetDesignerComponent, AXPTableWidgetViewComponent, AXPTagEditorWidget, AXPTagEditorWidgetColumnComponent, AXPTagEditorWidgetEditComponent, AXPTagEditorWidgetViewComponent, AXPTemplateBoxWidget, AXPTemplateBoxWidgetColumnComponent, AXPTemplateBoxWidgetEditComponent, AXPTemplateBoxWidgetPrintComponent, AXPTemplateBoxWidgetViewComponent, AXPTextBoxWidget, AXPTextBoxWidgetColumnComponent, AXPTextBoxWidgetEditComponent, AXPTextBoxWidgetViewComponent, AXPToggleWidget, AXPToggleWidgetColumnComponent, AXPToggleWidgetEditComponent, AXPToggleWidgetViewComponent, AXPWidgetFieldConfiguratorWidget, AXPWidgetFieldConfiguratorWidgetColumnComponent, AXPWidgetFieldConfiguratorWidgetEditComponent, AXPWidgetsModule, AXP_ABSOLUTE_UNITS, AXP_BORDER_RADIUS_UNITS, AXP_BORDER_WIDTH_UNITS, AXP_DATA_LIST_CMD_DELETE, AXP_DATA_LIST_CMD_EDIT, AXP_DATA_LIST_PENDING_DELETE_KEY, AXP_Flex_Box_Align_Options, AXP_Flex_Box_Alignments, AXP_Flex_Box_Justify_Options, AXP_Grid_Box_Align_Items_Options, AXP_Grid_Box_Alignments, AXP_Grid_Box_Justify_Items_Options, AXP_RELATIVE_UNITS, AXP_RELATIVE_UNITS_NO_PERCENT, AXP_ROW_EXPR_PREFIX, AXP_SPACING_UNITS, AXP_WIDGET_AI_AGENT_ASSIST_FOLLOW_UP_CHIPS_LAYOUT, AXP_WIDGET_AI_AGENT_CHART_LAYOUT, AXP_WIDGET_AI_AGENT_FORM_LAYOUT, AXP_WIDGET_AI_AGENT_NAMES, AXP_default_Border_Box_Units, AXP_default_Border_Box_Value, AXP_default_Spacing_Box_Units, AXP_default_Spacing_Box_Value, DEFAULT_STRATEGY_CONFIG, STRATEGY_CONFIG_TOKEN, matchesWidgetAiAgent, printQrcodeFromElement };
|
|
28429
28129
|
//# sourceMappingURL=acorex-platform-layout-widgets.mjs.map
|