@acorex/platform 21.0.0-next.71 → 21.0.0-next.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/acorex-platform-auth.mjs +10 -2
- 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 +3792 -1679
- package/fesm2022/acorex-platform-common.mjs.map +1 -1
- package/fesm2022/acorex-platform-core.mjs +1112 -103
- package/fesm2022/acorex-platform-core.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-builder.mjs +53 -170
- package/fesm2022/acorex-platform-layout-builder.mjs.map +1 -1
- package/fesm2022/acorex-platform-layout-components.mjs +70 -46
- 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 +341 -418
- 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 +115 -74
- 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 +184 -655
- 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 +76 -32
- package/fesm2022/acorex-platform-themes-default.mjs.map +1 -1
- package/package.json +1 -1
- package/types/acorex-platform-auth.d.ts +2 -0
- package/types/acorex-platform-common.d.ts +891 -259
- package/types/acorex-platform-core.d.ts +284 -40
- package/types/acorex-platform-layout-builder.d.ts +10 -22
- package/types/acorex-platform-layout-components.d.ts +9 -7
- package/types/acorex-platform-layout-entity.d.ts +37 -41
- package/types/acorex-platform-layout-views.d.ts +125 -67
- package/types/acorex-platform-layout-widget-core.d.ts +53 -61
- package/types/acorex-platform-layout-widgets.d.ts +33 -20
- 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';
|
|
@@ -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
|
}
|
|
@@ -4012,7 +4013,6 @@ class AXPDateTimeBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
4012
4013
|
}
|
|
4013
4014
|
return this.resolvedPresets().find((p) => p.id === id && p.kind === 'manual');
|
|
4014
4015
|
}, ...(ngDevMode ? [{ debugName: "selectedManualPreset" }] : /* istanbul ignore next */ []));
|
|
4015
|
-
this.multiple = computed(() => this.options()['multiple'], ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
|
|
4016
4016
|
this.clearButton = computed(() => this.options()['clearButton'], ...(ngDevMode ? [{ debugName: "clearButton" }] : /* istanbul ignore next */ []));
|
|
4017
4017
|
this.minValue = computed(() => this.options()['minValue'], ...(ngDevMode ? [{ debugName: "minValue" }] : /* istanbul ignore next */ []));
|
|
4018
4018
|
this.maxValue = computed(() => this.options()['maxValue'], ...(ngDevMode ? [{ debugName: "maxValue" }] : /* istanbul ignore next */ []));
|
|
@@ -4045,10 +4045,6 @@ class AXPDateTimeBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
4045
4045
|
}
|
|
4046
4046
|
return undefined;
|
|
4047
4047
|
}, ...(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
4048
|
this.filterValue = computed(() => {
|
|
4053
4049
|
const value = this.getValue()?.value;
|
|
4054
4050
|
if (typeof value === 'object' && value !== null) {
|
|
@@ -4149,25 +4145,11 @@ class AXPDateTimeBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
4149
4145
|
}
|
|
4150
4146
|
//#endregion
|
|
4151
4147
|
//#region ---- Standard Mode Handlers ----
|
|
4152
|
-
handleValueChange(e
|
|
4148
|
+
handleValueChange(e) {
|
|
4153
4149
|
if (e.isUserInteraction) {
|
|
4154
|
-
|
|
4155
|
-
if (this.multiple()) {
|
|
4156
|
-
this.setValue(newValues);
|
|
4157
|
-
}
|
|
4158
|
-
else {
|
|
4159
|
-
this.setValue(newValues[0]);
|
|
4160
|
-
}
|
|
4150
|
+
this.setValue(e.value);
|
|
4161
4151
|
}
|
|
4162
4152
|
}
|
|
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
4153
|
//#endregion
|
|
4172
4154
|
//#region ---- Filter Mode Handlers ----
|
|
4173
4155
|
handlePresetChange(e) {
|
|
@@ -4309,443 +4291,21 @@ class AXPDateTimeBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
4309
4291
|
return cls;
|
|
4310
4292
|
}
|
|
4311
4293
|
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 }); }
|
|
4294
|
+
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", "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
4295
|
}
|
|
4522
4296
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDateTimeBoxWidgetEditComponent, decorators: [{
|
|
4523
4297
|
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: [
|
|
4298
|
+
args: [{ selector: 'axp-date-time-box-widget-edit', changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
4737
4299
|
CommonModule,
|
|
4738
4300
|
FormsModule,
|
|
4739
4301
|
AXFormModule,
|
|
4740
4302
|
AXValidationModule,
|
|
4741
4303
|
AXDateTimeBoxModule,
|
|
4742
|
-
AXButtonModule,
|
|
4743
4304
|
AXDecoratorModule,
|
|
4744
4305
|
AXSelectBoxModule,
|
|
4745
4306
|
AXTranslationModule,
|
|
4746
4307
|
AXPFilterOperationsComponent,
|
|
4747
|
-
],
|
|
4748
|
-
}]
|
|
4308
|
+
], 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
4309
|
}], ctorParameters: () => [], propDecorators: { selectBox: [{ type: i0.ViewChild, args: ['selectBox', { isSignal: true }] }], __class: [{
|
|
4750
4310
|
type: HostBinding,
|
|
4751
4311
|
args: ['class']
|
|
@@ -5157,7 +4717,7 @@ class AXPLargeTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
5157
4717
|
constructor() {
|
|
5158
4718
|
super(...arguments);
|
|
5159
4719
|
this.multiple = computed(() => this.options()['multiple'], ...(ngDevMode ? [{ debugName: "multiple" }] : /* istanbul ignore next */ []));
|
|
5160
|
-
this.
|
|
4720
|
+
this.effectiveMultiLanguage = computed(() => shouldUseLocaleMapShape(!!this.options()['multiLanguage'], this.getValue(), this.fullPath() ? this.contextService.getSavedValue(this.fullPath()) : undefined), ...(ngDevMode ? [{ debugName: "effectiveMultiLanguage" }] : /* istanbul ignore next */ []));
|
|
5161
4721
|
this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
5162
4722
|
this.clearButton = computed(() => this.options()['clearButton'] ?? true, ...(ngDevMode ? [{ debugName: "clearButton" }] : /* istanbul ignore next */ []));
|
|
5163
4723
|
this.placeholder = computed(() => this.options()['placeholder'], ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
@@ -5170,26 +4730,17 @@ class AXPLargeTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
5170
4730
|
});
|
|
5171
4731
|
this.getCurrentText = computed(() => this.translationService.resolve(this.getValue(), this.currentLanguage()), ...(ngDevMode ? [{ debugName: "getCurrentText" }] : /* istanbul ignore next */ []));
|
|
5172
4732
|
}
|
|
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
4733
|
handleValueChange(e) {
|
|
5181
4734
|
if (!e.isUserInteraction) {
|
|
5182
4735
|
return;
|
|
5183
4736
|
}
|
|
5184
|
-
|
|
5185
|
-
|
|
5186
|
-
|
|
5187
|
-
|
|
5188
|
-
this.
|
|
5189
|
-
|
|
5190
|
-
|
|
5191
|
-
this.setUserValue(e.value ?? '');
|
|
5192
|
-
}
|
|
4737
|
+
const path = this.fullPath();
|
|
4738
|
+
const current = this.getValue();
|
|
4739
|
+
const saved = path ? this.contextService.getSavedValue(path) : undefined;
|
|
4740
|
+
const nextValue = this.effectiveMultiLanguage()
|
|
4741
|
+
? buildLocaleTextMapValue(current, saved, this.currentLanguage(), e.value ?? '')
|
|
4742
|
+
: (e.value ?? '');
|
|
4743
|
+
this.setValue(nextValue);
|
|
5193
4744
|
}
|
|
5194
4745
|
openMultiLanguagePopup() {
|
|
5195
4746
|
const node = {
|
|
@@ -5241,7 +4792,7 @@ class AXPLargeTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
5241
4792
|
></ax-validation-rule>
|
|
5242
4793
|
}
|
|
5243
4794
|
</ax-text-area>
|
|
5244
|
-
@if (
|
|
4795
|
+
@if (effectiveMultiLanguage()) {
|
|
5245
4796
|
<ax-button
|
|
5246
4797
|
look="blank"
|
|
5247
4798
|
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 +4834,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
5283
4834
|
></ax-validation-rule>
|
|
5284
4835
|
}
|
|
5285
4836
|
</ax-text-area>
|
|
5286
|
-
@if (
|
|
4837
|
+
@if (effectiveMultiLanguage()) {
|
|
5287
4838
|
<ax-button
|
|
5288
4839
|
look="blank"
|
|
5289
4840
|
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"
|
|
@@ -6839,7 +6390,7 @@ class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
6839
6390
|
this.placeholder = computed(() => this.options()['placeholder'], ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
6840
6391
|
this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
6841
6392
|
this.readonly = computed(() => this.options()['readonly'], ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
|
|
6842
|
-
this.
|
|
6393
|
+
this.effectiveMultiLanguage = computed(() => shouldUseLocaleMapShape(!!this.options()['multiLanguage'], this.getValue(), this.fullPath() ? this.contextService.getSavedValue(this.fullPath()) : undefined), ...(ngDevMode ? [{ debugName: "effectiveMultiLanguage" }] : /* istanbul ignore next */ []));
|
|
6843
6394
|
this.minLineCount = computed(() => this.options()['minLineCount'] ?? this.options()['maxLineCount'] ?? 3, ...(ngDevMode ? [{ debugName: "minLineCount" }] : /* istanbul ignore next */ []));
|
|
6844
6395
|
this.maxLineCount = computed(() => this.options()['maxLineCount'] ?? this.options()['minLineCount'] ?? 3, ...(ngDevMode ? [{ debugName: "maxLineCount" }] : /* istanbul ignore next */ []));
|
|
6845
6396
|
this.popupService = inject(AXPopupService);
|
|
@@ -6852,22 +6403,14 @@ class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
6852
6403
|
onWysiwygChanged(e) {
|
|
6853
6404
|
if (!e.isUserInteraction)
|
|
6854
6405
|
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
|
-
}
|
|
6406
|
+
const path = this.fullPath();
|
|
6407
|
+
const current = this.getValue();
|
|
6408
|
+
const saved = path ? this.contextService.getSavedValue(path) : undefined;
|
|
6409
|
+
const lang = this.currentLanguage() ?? '';
|
|
6410
|
+
const nextValue = this.effectiveMultiLanguage()
|
|
6411
|
+
? buildLocaleTextMapValue(current, saved, lang, e.value ?? '')
|
|
6412
|
+
: (e.value ?? '');
|
|
6413
|
+
this.setValue(nextValue);
|
|
6871
6414
|
}
|
|
6872
6415
|
async openMultiLanguagePopup() {
|
|
6873
6416
|
const node = {
|
|
@@ -6912,7 +6455,7 @@ class AXPRichTextWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
6912
6455
|
<ax-wysiwyg-list></ax-wysiwyg-list>
|
|
6913
6456
|
<ax-wysiwyg-alignment></ax-wysiwyg-alignment>
|
|
6914
6457
|
</ax-prefix>
|
|
6915
|
-
@if (
|
|
6458
|
+
@if (effectiveMultiLanguage()) {
|
|
6916
6459
|
<ax-suffix>
|
|
6917
6460
|
<ax-button class="ax-sm" (onClick)="openMultiLanguagePopup()" [disabled]="disabled()" look="blank">
|
|
6918
6461
|
<ax-prefix>
|
|
@@ -6953,7 +6496,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
6953
6496
|
<ax-wysiwyg-list></ax-wysiwyg-list>
|
|
6954
6497
|
<ax-wysiwyg-alignment></ax-wysiwyg-alignment>
|
|
6955
6498
|
</ax-prefix>
|
|
6956
|
-
@if (
|
|
6499
|
+
@if (effectiveMultiLanguage()) {
|
|
6957
6500
|
<ax-suffix>
|
|
6958
6501
|
<ax-button class="ax-sm" (onClick)="openMultiLanguagePopup()" [disabled]="disabled()" look="blank">
|
|
6959
6502
|
<ax-prefix>
|
|
@@ -7303,9 +6846,6 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7303
6846
|
this.hasSeenDataSource = false;
|
|
7304
6847
|
//#region ---- Focus Management ----
|
|
7305
6848
|
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
6849
|
this.#focusEffect = effect(() => {
|
|
7310
6850
|
const shouldFocus = this.shouldFocus();
|
|
7311
6851
|
if (!shouldFocus) {
|
|
@@ -7397,7 +6937,7 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7397
6937
|
if (this.filterMode()) {
|
|
7398
6938
|
const newValue = e.value;
|
|
7399
6939
|
const text = this.selectedItems().map((item) => get(item, this.textField()));
|
|
7400
|
-
this.
|
|
6940
|
+
this.setValue({
|
|
7401
6941
|
value: newValue,
|
|
7402
6942
|
displayText: text,
|
|
7403
6943
|
operation: {
|
|
@@ -7406,26 +6946,13 @@ class AXPSelectBoxWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7406
6946
|
});
|
|
7407
6947
|
}
|
|
7408
6948
|
else if (this.widgetsConfigs.selectValueStrategy === 'valueField') {
|
|
7409
|
-
this.
|
|
6949
|
+
this.setValue(e.value);
|
|
7410
6950
|
}
|
|
7411
6951
|
else if (this.multiple()) {
|
|
7412
|
-
this.
|
|
6952
|
+
this.setValue(this.selectedItems());
|
|
7413
6953
|
}
|
|
7414
6954
|
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);
|
|
6955
|
+
this.setValue(this.selectedItems()[0]);
|
|
7429
6956
|
}
|
|
7430
6957
|
}
|
|
7431
6958
|
//#endregion
|
|
@@ -7863,16 +7390,32 @@ class AXPSelectionListWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7863
7390
|
this.look = computed(() => this.options()['look'] ?? 'solid', ...(ngDevMode ? [{ debugName: "look" }] : /* istanbul ignore next */ []));
|
|
7864
7391
|
this.showControl = computed(() => this.options()['showControl'] ?? true, ...(ngDevMode ? [{ debugName: "showControl" }] : /* istanbul ignore next */ []));
|
|
7865
7392
|
this.imageMode = computed(() => this.options()['imageMode'] ?? false, ...(ngDevMode ? [{ debugName: "imageMode" }] : /* istanbul ignore next */ []));
|
|
7393
|
+
this.imageField = computed(() => this.options()['imageField'] ?? this.textField(), ...(ngDevMode ? [{ debugName: "imageField" }] : /* istanbul ignore next */ []));
|
|
7866
7394
|
this.displayItems = signal([], ...(ngDevMode ? [{ debugName: "displayItems" }] : /* istanbul ignore next */ []));
|
|
7867
|
-
this.ef = effect(() => {
|
|
7868
|
-
this.
|
|
7869
|
-
|
|
7870
|
-
.
|
|
7871
|
-
|
|
7395
|
+
this.ef = effect((onCleanup) => {
|
|
7396
|
+
const rawDataSource = this.options()['dataSource'];
|
|
7397
|
+
if (Array.isArray(rawDataSource) && rawDataSource.length > 0) {
|
|
7398
|
+
this.displayItems.set(rawDataSource);
|
|
7399
|
+
}
|
|
7400
|
+
const ds = this.dataSource();
|
|
7401
|
+
const sub = ds.onChanged.subscribe((e) => {
|
|
7402
|
+
if (e.items?.length) {
|
|
7403
|
+
this.displayItems.set(e.items);
|
|
7404
|
+
}
|
|
7872
7405
|
});
|
|
7873
|
-
|
|
7406
|
+
onCleanup(() => sub.unsubscribe());
|
|
7407
|
+
void ds.refresh();
|
|
7874
7408
|
}, ...(ngDevMode ? [{ debugName: "ef" }] : /* istanbul ignore next */ []));
|
|
7875
7409
|
}
|
|
7410
|
+
resolveItemImage(item) {
|
|
7411
|
+
const field = this.imageField();
|
|
7412
|
+
const row = get(item, 'data', item);
|
|
7413
|
+
return String(get(row, field, ''));
|
|
7414
|
+
}
|
|
7415
|
+
resolveItemAlt(item) {
|
|
7416
|
+
const row = get(item, 'data', item);
|
|
7417
|
+
return String(get(row, 'title', get(row, this.valueField(), '')));
|
|
7418
|
+
}
|
|
7876
7419
|
handleValueChange(e) {
|
|
7877
7420
|
if (e.isUserInteraction) {
|
|
7878
7421
|
this.setValue(e.value);
|
|
@@ -7903,7 +7446,7 @@ class AXPSelectionListWidgetEditComponent extends AXPDataListWidgetComponent {
|
|
|
7903
7446
|
>
|
|
7904
7447
|
<ng-template #imageTemplate let-item>
|
|
7905
7448
|
@if (imageMode()) {
|
|
7906
|
-
<img class="ax-w-14 ax-h-14" [src]="item.
|
|
7449
|
+
<img class="ax-w-14 ax-h-14" [src]="resolveItemImage(item)" [attr.alt]="resolveItemAlt(item)" />
|
|
7907
7450
|
}
|
|
7908
7451
|
</ng-template>
|
|
7909
7452
|
@for (validation of validationRules(); track $index) {
|
|
@@ -7938,7 +7481,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
7938
7481
|
>
|
|
7939
7482
|
<ng-template #imageTemplate let-item>
|
|
7940
7483
|
@if (imageMode()) {
|
|
7941
|
-
<img class="ax-w-14 ax-h-14" [src]="item.
|
|
7484
|
+
<img class="ax-w-14 ax-h-14" [src]="resolveItemImage(item)" [attr.alt]="resolveItemAlt(item)" />
|
|
7942
7485
|
}
|
|
7943
7486
|
</ng-template>
|
|
7944
7487
|
@for (validation of validationRules(); track $index) {
|
|
@@ -7967,6 +7510,10 @@ class AXPSelectionListWidgetViewComponent extends AXPDataListWidgetComponent {
|
|
|
7967
7510
|
constructor() {
|
|
7968
7511
|
super(...arguments);
|
|
7969
7512
|
this.imageMode = computed(() => this.options()['imageMode'] ?? false, ...(ngDevMode ? [{ debugName: "imageMode" }] : /* istanbul ignore next */ []));
|
|
7513
|
+
this.imageField = computed(() => this.options()['imageField'] ?? this.textField(), ...(ngDevMode ? [{ debugName: "imageField" }] : /* istanbul ignore next */ []));
|
|
7514
|
+
}
|
|
7515
|
+
resolveItemImage(item) {
|
|
7516
|
+
return String(item[this.imageField()] ?? '');
|
|
7970
7517
|
}
|
|
7971
7518
|
get __class() {
|
|
7972
7519
|
const cls = {};
|
|
@@ -7978,7 +7525,7 @@ class AXPSelectionListWidgetViewComponent extends AXPDataListWidgetComponent {
|
|
|
7978
7525
|
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
7526
|
@for (item of selectedItems(); track $index) {
|
|
7980
7527
|
@if (imageMode()) {
|
|
7981
|
-
<img class="ax-w-14 ax-h-14 ax-rounded-sm" [src]="item[textField()]" />
|
|
7528
|
+
<img class="ax-w-14 ax-h-14 ax-rounded-sm" [src]="resolveItemImage(item)" [attr.alt]="item[textField()]" />
|
|
7982
7529
|
} @else {
|
|
7983
7530
|
<ax-badge class="ax-p-0.5" [color]="'surface'" [text]="item[textField()]"></ax-badge>
|
|
7984
7531
|
}
|
|
@@ -7994,7 +7541,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
7994
7541
|
template: `
|
|
7995
7542
|
@for (item of selectedItems(); track $index) {
|
|
7996
7543
|
@if (imageMode()) {
|
|
7997
|
-
<img class="ax-w-14 ax-h-14 ax-rounded-sm" [src]="item[textField()]" />
|
|
7544
|
+
<img class="ax-w-14 ax-h-14 ax-rounded-sm" [src]="resolveItemImage(item)" [attr.alt]="item[textField()]" />
|
|
7998
7545
|
} @else {
|
|
7999
7546
|
<ax-badge class="ax-p-0.5" [color]="'surface'" [text]="item[textField()]"></ax-badge>
|
|
8000
7547
|
}
|
|
@@ -8956,7 +8503,7 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
8956
8503
|
super(...arguments);
|
|
8957
8504
|
this.popupService = inject(AXPopupService);
|
|
8958
8505
|
this.translationService = inject(AXTranslationService);
|
|
8959
|
-
this.
|
|
8506
|
+
this.effectiveMultiLanguage = computed(() => shouldUseLocaleMapShape(!!this.options()['multiLanguage'], this.getValue(), this.fullPath() ? this.contextService.getSavedValue(this.fullPath()) : undefined), ...(ngDevMode ? [{ debugName: "effectiveMultiLanguage" }] : /* istanbul ignore next */ []));
|
|
8960
8507
|
this.hasClearButton = computed(() => this.options()['hasClearButton'], ...(ngDevMode ? [{ debugName: "hasClearButton" }] : /* istanbul ignore next */ []));
|
|
8961
8508
|
this.disabled = computed(() => this.options()['disabled'], ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
8962
8509
|
this.readonly = computed(() => this.options()['readonly'], ...(ngDevMode ? [{ debugName: "readonly" }] : /* istanbul ignore next */ []));
|
|
@@ -8967,10 +8514,6 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
8967
8514
|
}
|
|
8968
8515
|
ngOnInit() {
|
|
8969
8516
|
super.ngOnInit();
|
|
8970
|
-
const v = this.getValue();
|
|
8971
|
-
if (this.multiLanguage() && typeof v === 'string') {
|
|
8972
|
-
this.setValue({ [this.currentLanguage()]: v }, { origin: 'system' });
|
|
8973
|
-
}
|
|
8974
8517
|
this.translationService.langChanges$.subscribe((i) => {
|
|
8975
8518
|
this.currentLanguage.set(i);
|
|
8976
8519
|
});
|
|
@@ -8979,15 +8522,13 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
8979
8522
|
if (!e.isUserInteraction) {
|
|
8980
8523
|
return;
|
|
8981
8524
|
}
|
|
8982
|
-
|
|
8983
|
-
|
|
8984
|
-
|
|
8985
|
-
|
|
8986
|
-
this.
|
|
8987
|
-
|
|
8988
|
-
|
|
8989
|
-
this.setUserValue(e.value ?? '');
|
|
8990
|
-
}
|
|
8525
|
+
const path = this.fullPath();
|
|
8526
|
+
const current = this.getValue();
|
|
8527
|
+
const saved = path ? this.contextService.getSavedValue(path) : undefined;
|
|
8528
|
+
const nextValue = this.effectiveMultiLanguage()
|
|
8529
|
+
? buildLocaleTextMapValue(current, saved, this.currentLanguage(), e.value ?? '')
|
|
8530
|
+
: (e.value ?? '');
|
|
8531
|
+
this.setValue(nextValue);
|
|
8991
8532
|
}
|
|
8992
8533
|
getCurrentText() {
|
|
8993
8534
|
return this.translationService.resolve(this.getValue(), this.currentLanguage());
|
|
@@ -9045,7 +8586,7 @@ class AXPTextBoxWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
9045
8586
|
@if (hasClearButton()) {
|
|
9046
8587
|
<ax-clear-button></ax-clear-button>
|
|
9047
8588
|
}
|
|
9048
|
-
@if (
|
|
8589
|
+
@if (effectiveMultiLanguage()) {
|
|
9049
8590
|
<ax-suffix>
|
|
9050
8591
|
<ax-button (onClick)="openMultiLanguagePopup()" [disabled]="disabled()" look="blank">
|
|
9051
8592
|
<ax-prefix>
|
|
@@ -9085,7 +8626,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
9085
8626
|
@if (hasClearButton()) {
|
|
9086
8627
|
<ax-clear-button></ax-clear-button>
|
|
9087
8628
|
}
|
|
9088
|
-
@if (
|
|
8629
|
+
@if (effectiveMultiLanguage()) {
|
|
9089
8630
|
<ax-suffix>
|
|
9090
8631
|
<ax-button (onClick)="openMultiLanguagePopup()" [disabled]="disabled()" look="blank">
|
|
9091
8632
|
<ax-prefix>
|
|
@@ -10558,7 +10099,7 @@ class AXPDataListWidgetViewComponent extends AXPValueWidgetComponent {
|
|
|
10558
10099
|
></ax-dropdown-command-column>
|
|
10559
10100
|
}
|
|
10560
10101
|
</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 }); }
|
|
10102
|
+
`, 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", "cellTemplate", "headerTemplate"], outputs: ["sortToggle"] }, { kind: "ngmodule", type: AXTranslationModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
10562
10103
|
}
|
|
10563
10104
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPDataListWidgetViewComponent, decorators: [{
|
|
10564
10105
|
type: Component,
|
|
@@ -13006,7 +12547,7 @@ class AXPSignatureWidgetColumnComponent extends AXPColumnWidgetComponent {
|
|
|
13006
12547
|
.create()
|
|
13007
12548
|
.dialog((dialog) => {
|
|
13008
12549
|
dialog
|
|
13009
|
-
.setTitle('
|
|
12550
|
+
.setTitle('@platform-layout-widgets:widgets.signature.title')
|
|
13010
12551
|
.setSize('lg')
|
|
13011
12552
|
.content((layoutBuilder) => {
|
|
13012
12553
|
layoutBuilder.flex((flex) => {
|
|
@@ -13078,17 +12619,43 @@ var signaturePadWidgetColumn_component = /*#__PURE__*/Object.freeze({
|
|
|
13078
12619
|
AXPSignatureWidgetColumnComponent: AXPSignatureWidgetColumnComponent
|
|
13079
12620
|
});
|
|
13080
12621
|
|
|
12622
|
+
//#region ---- Component: Signature Pad Widget Edit ----
|
|
13081
12623
|
class AXPSignatureWidgetEditComponent extends AXPValueWidgetComponent {
|
|
13082
12624
|
constructor() {
|
|
13083
12625
|
super(...arguments);
|
|
12626
|
+
//#region ---- Options & State ----
|
|
13084
12627
|
this.disabled = computed(() => this.options()['disabled'] ?? false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
13085
|
-
/** When true (default), show click overlay
|
|
12628
|
+
/** When true (default), show click-to-edit overlay over read-only paint. Set false when used inside a dialog. */
|
|
13086
12629
|
this.showOverlay = computed(() => this.options()['showOverlay'] ?? true, ...(ngDevMode ? [{ debugName: "showOverlay" }] : /* istanbul ignore next */ []));
|
|
13087
|
-
/**
|
|
12630
|
+
/** Paint editMode: true hides pen/highlighter/eraser toolbars. */
|
|
13088
12631
|
this.editMode = computed(() => this.options()['editMode'] ?? true, ...(ngDevMode ? [{ debugName: "editMode" }] : /* istanbul ignore next */ []));
|
|
12632
|
+
this.hasSignature = computed(() => {
|
|
12633
|
+
const value = this.getValue();
|
|
12634
|
+
return typeof value === 'string' && value.length > 0;
|
|
12635
|
+
}, ...(ngDevMode ? [{ debugName: "hasSignature" }] : /* istanbul ignore next */ []));
|
|
12636
|
+
this.showSignaturePreview = computed(() => this.showOverlay() && this.hasSignature(), ...(ngDevMode ? [{ debugName: "showSignaturePreview" }] : /* istanbul ignore next */ []));
|
|
12637
|
+
this.showPaintSurface = computed(() => !this.showOverlay(), ...(ngDevMode ? [{ debugName: "showPaintSurface" }] : /* istanbul ignore next */ []));
|
|
12638
|
+
this.isInteracting = signal(false, ...(ngDevMode ? [{ debugName: "isInteracting" }] : /* istanbul ignore next */ []));
|
|
12639
|
+
this.showEmptyHint = computed(() => this.showOverlay() && !this.hasSignature(), ...(ngDevMode ? [{ debugName: "showEmptyHint" }] : /* istanbul ignore next */ []));
|
|
12640
|
+
this.showDialogHint = computed(() => !this.showOverlay() && !this.hasSignature() && !this.isInteracting(), ...(ngDevMode ? [{ debugName: "showDialogHint" }] : /* istanbul ignore next */ []));
|
|
12641
|
+
this.showDesktopHover = computed(() => this.showOverlay() && !this.deviceService.isTouchScreen() && !this.disabled(), ...(ngDevMode ? [{ debugName: "showDesktopHover" }] : /* istanbul ignore next */ []));
|
|
12642
|
+
this.hovering = signal(false, ...(ngDevMode ? [{ debugName: "hovering" }] : /* istanbul ignore next */ []));
|
|
12643
|
+
this.emptyHint = computed(() => {
|
|
12644
|
+
const placeholder = this.options()['placeholder']?.trim();
|
|
12645
|
+
return placeholder || '@platform-layout-widgets:widgets.signature.empty-state.hint';
|
|
12646
|
+
}, ...(ngDevMode ? [{ debugName: "emptyHint" }] : /* istanbul ignore next */ []));
|
|
12647
|
+
this.signHereHint = computed(() => {
|
|
12648
|
+
const placeholder = this.options()['placeholder']?.trim();
|
|
12649
|
+
return placeholder || '@platform-layout-widgets:widgets.signature.empty-state.sign-here';
|
|
12650
|
+
}, ...(ngDevMode ? [{ debugName: "signHereHint" }] : /* istanbul ignore next */ []));
|
|
13089
12651
|
this.paintContainer = viewChild('paintContainer', ...(ngDevMode ? [{ debugName: "paintContainer" }] : /* istanbul ignore next */ []));
|
|
13090
12652
|
this.paintView = viewChild('paintView', ...(ngDevMode ? [{ debugName: "paintView" }] : /* istanbul ignore next */ []));
|
|
12653
|
+
//#endregion
|
|
12654
|
+
//#region ---- Services & Dependencies ----
|
|
13091
12655
|
this.layoutBuilder = inject(AXPLayoutBuilderService);
|
|
12656
|
+
this.deviceService = inject(AXPDeviceService);
|
|
12657
|
+
//#endregion
|
|
12658
|
+
//#region ---- Effects ----
|
|
13092
12659
|
this.#loadInitialImageEffect = effect(() => {
|
|
13093
12660
|
const view = this.paintView();
|
|
13094
12661
|
const container = this.paintContainer();
|
|
@@ -13098,14 +12665,72 @@ class AXPSignatureWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
13098
12665
|
}
|
|
13099
12666
|
else if (container && value == null) {
|
|
13100
12667
|
container.clear();
|
|
12668
|
+
this.isInteracting.set(false);
|
|
13101
12669
|
}
|
|
13102
12670
|
}, ...(ngDevMode ? [{ debugName: "#loadInitialImageEffect" }] : /* istanbul ignore next */ []));
|
|
13103
12671
|
this.#init = afterNextRender(() => {
|
|
13104
12672
|
this.paintContainer()?.setPenWidth(5);
|
|
13105
12673
|
});
|
|
13106
12674
|
}
|
|
12675
|
+
//#endregion
|
|
12676
|
+
//#region ---- Effects ----
|
|
13107
12677
|
#loadInitialImageEffect;
|
|
13108
12678
|
#init;
|
|
12679
|
+
//#endregion
|
|
12680
|
+
//#region ---- Widget API ----
|
|
12681
|
+
api() {
|
|
12682
|
+
return {
|
|
12683
|
+
clear: () => {
|
|
12684
|
+
this.clearSignaturePad();
|
|
12685
|
+
},
|
|
12686
|
+
};
|
|
12687
|
+
}
|
|
12688
|
+
//#endregion
|
|
12689
|
+
//#region ---- UI Handlers ----
|
|
12690
|
+
clearSignaturePad() {
|
|
12691
|
+
this.setValue(null);
|
|
12692
|
+
this.paintContainer()?.clear();
|
|
12693
|
+
this.isInteracting.set(false);
|
|
12694
|
+
}
|
|
12695
|
+
handleMouseEnter() {
|
|
12696
|
+
if (!this.showDesktopHover()) {
|
|
12697
|
+
return;
|
|
12698
|
+
}
|
|
12699
|
+
this.hovering.set(true);
|
|
12700
|
+
}
|
|
12701
|
+
handleMouseLeave() {
|
|
12702
|
+
if (!this.showDesktopHover()) {
|
|
12703
|
+
return;
|
|
12704
|
+
}
|
|
12705
|
+
this.hovering.set(false);
|
|
12706
|
+
}
|
|
12707
|
+
handleSurfaceClick(event) {
|
|
12708
|
+
const target = event.target;
|
|
12709
|
+
if (target?.closest('[data-signature-action]')) {
|
|
12710
|
+
return;
|
|
12711
|
+
}
|
|
12712
|
+
if (!this.showOverlay() || this.disabled()) {
|
|
12713
|
+
return;
|
|
12714
|
+
}
|
|
12715
|
+
event.stopPropagation();
|
|
12716
|
+
void this.openEditor();
|
|
12717
|
+
}
|
|
12718
|
+
handleOverlayClick(event) {
|
|
12719
|
+
event.stopPropagation();
|
|
12720
|
+
if (this.disabled()) {
|
|
12721
|
+
return;
|
|
12722
|
+
}
|
|
12723
|
+
void this.openEditor();
|
|
12724
|
+
}
|
|
12725
|
+
handleSurfacePointerDown(event) {
|
|
12726
|
+
if (this.showOverlay() || this.disabled()) {
|
|
12727
|
+
return;
|
|
12728
|
+
}
|
|
12729
|
+
const target = event.target;
|
|
12730
|
+
if (target.closest('.ax-canvas-element')) {
|
|
12731
|
+
this.isInteracting.set(true);
|
|
12732
|
+
}
|
|
12733
|
+
}
|
|
13109
12734
|
async openEditor() {
|
|
13110
12735
|
if (this.disabled()) {
|
|
13111
12736
|
return;
|
|
@@ -13114,31 +12739,32 @@ class AXPSignatureWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
13114
12739
|
.create()
|
|
13115
12740
|
.dialog((dialog) => {
|
|
13116
12741
|
dialog
|
|
13117
|
-
.setTitle('
|
|
12742
|
+
.setTitle('@platform-layout-widgets:widgets.signature.title')
|
|
13118
12743
|
.setSize('sm')
|
|
13119
12744
|
.setCloseButton(true)
|
|
13120
12745
|
.setContext({ value: this.getValue() })
|
|
13121
12746
|
.content((content) => {
|
|
13122
12747
|
content.setDirection('column').setGap('16px').setAlignItems('stretch').customWidget('signature', {
|
|
12748
|
+
name: 'signature',
|
|
13123
12749
|
path: 'value',
|
|
13124
12750
|
disabled: this.disabled(),
|
|
13125
12751
|
showOverlay: false,
|
|
12752
|
+
editMode: true,
|
|
13126
12753
|
});
|
|
13127
12754
|
})
|
|
13128
12755
|
.setActions((actions) => {
|
|
13129
12756
|
actions.custom({
|
|
13130
|
-
title: '@general:actions.
|
|
13131
|
-
icon: 'fa-light fa-
|
|
13132
|
-
|
|
13133
|
-
|
|
13134
|
-
command: { name: 'signature-download' },
|
|
12757
|
+
title: '@general:actions.clear.title',
|
|
12758
|
+
icon: 'fa-light fa-eraser',
|
|
12759
|
+
disabled: '{{ !context.value }}',
|
|
12760
|
+
command: { name: 'widget:signature.clear' },
|
|
13135
12761
|
position: 'prefix',
|
|
13136
12762
|
});
|
|
13137
12763
|
actions.custom({
|
|
13138
12764
|
title: '@general:actions.delete.title',
|
|
13139
12765
|
icon: 'fa-light fa-trash-can',
|
|
13140
12766
|
color: 'danger',
|
|
13141
|
-
disabled:
|
|
12767
|
+
disabled: '{{ !context.value }}',
|
|
13142
12768
|
command: { name: 'signature-clear' },
|
|
13143
12769
|
});
|
|
13144
12770
|
actions.custom({
|
|
@@ -13158,17 +12784,7 @@ class AXPSignatureWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
13158
12784
|
this.setValue(null);
|
|
13159
12785
|
return;
|
|
13160
12786
|
}
|
|
13161
|
-
if (action === 'signature-
|
|
13162
|
-
const dataUrl = context.value;
|
|
13163
|
-
if (typeof dataUrl === 'string') {
|
|
13164
|
-
const link = document.createElement('a');
|
|
13165
|
-
link.href = dataUrl;
|
|
13166
|
-
link.target = '_blank';
|
|
13167
|
-
link.download = 'signature.png';
|
|
13168
|
-
link.click();
|
|
13169
|
-
}
|
|
13170
|
-
}
|
|
13171
|
-
else if (action === 'signature-apply') {
|
|
12787
|
+
if (action === 'signature-apply') {
|
|
13172
12788
|
const newValue = context.value;
|
|
13173
12789
|
if (typeof newValue === 'string' || newValue === null) {
|
|
13174
12790
|
this.setValue(newValue);
|
|
@@ -13177,62 +12793,13 @@ class AXPSignatureWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
13177
12793
|
ref.close();
|
|
13178
12794
|
}
|
|
13179
12795
|
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 }); }
|
|
12796
|
+
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
12797
|
}
|
|
13205
12798
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSignatureWidgetEditComponent, decorators: [{
|
|
13206
12799
|
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
|
-
}]
|
|
12800
|
+
args: [{ selector: 'axp-signature-pad-widget-edit', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
12801
|
+
class: 'ax-block ax-w-full',
|
|
12802
|
+
}, 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
12803
|
}], propDecorators: { paintContainer: [{ type: i0.ViewChild, args: ['paintContainer', { isSignal: true }] }], paintView: [{ type: i0.ViewChild, args: ['paintView', { isSignal: true }] }] } });
|
|
13237
12804
|
|
|
13238
12805
|
var signaturePadWidgetEdit_component = /*#__PURE__*/Object.freeze({
|
|
@@ -15037,8 +14604,6 @@ class AXPItemConfiguratorWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15037
14604
|
this.isInitialized = signal(false, ...(ngDevMode ? [{ debugName: "isInitialized" }] : /* istanbul ignore next */ []));
|
|
15038
14605
|
/** True while syncing models from shared context (discard/load); writes use system origin. */
|
|
15039
14606
|
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
14607
|
//#endregion
|
|
15043
14608
|
//#region ---- Models ----
|
|
15044
14609
|
this.selectedItemIdModel = model('', ...(ngDevMode ? [{ debugName: "selectedItemIdModel" }] : /* istanbul ignore next */ []));
|
|
@@ -15114,7 +14679,6 @@ class AXPItemConfiguratorWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15114
14679
|
}
|
|
15115
14680
|
});
|
|
15116
14681
|
}
|
|
15117
|
-
untracked(() => this.syncBaselineFromModels());
|
|
15118
14682
|
queueMicrotask(() => this.hydratingFromContext.set(false));
|
|
15119
14683
|
}, ...(ngDevMode ? [{ debugName: "syncValueToConfigurator" }] : /* istanbul ignore next */ []));
|
|
15120
14684
|
this.syncConfiguratorToValue = effect(() => {
|
|
@@ -15128,32 +14692,10 @@ class AXPItemConfiguratorWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15128
14692
|
if (isEqual(next, currentValue)) {
|
|
15129
14693
|
return;
|
|
15130
14694
|
}
|
|
15131
|
-
const origin = this.hydratingFromContext() ? 'system' : 'user';
|
|
15132
14695
|
untracked(() => {
|
|
15133
|
-
this.setValue(next
|
|
14696
|
+
this.setValue(next);
|
|
15134
14697
|
});
|
|
15135
14698
|
}, ...(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
14699
|
}
|
|
15158
14700
|
//#endregion
|
|
15159
14701
|
//#region ---- Utility Methods ----
|
|
@@ -15168,22 +14710,6 @@ class AXPItemConfiguratorWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
15168
14710
|
options: vals,
|
|
15169
14711
|
};
|
|
15170
14712
|
}
|
|
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
14713
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPItemConfiguratorWidgetEditComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
15188
14714
|
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
14715
|
@if (isInitialized()) {
|
|
@@ -21007,6 +20533,7 @@ class AXPSpacingWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
21007
20533
|
constructor() {
|
|
21008
20534
|
super(...arguments);
|
|
21009
20535
|
this.ngZone = inject(NgZone);
|
|
20536
|
+
this.toggleShortcutKeys = chordToKbdItemKeys('ctrl+b');
|
|
21010
20537
|
this.isDragging = false;
|
|
21011
20538
|
this.calculatedValues = signal(cloneDeep(AXP_default_Spacing_Box_Value), ...(ngDevMode ? [{ debugName: "calculatedValues" }] : /* istanbul ignore next */ []));
|
|
21012
20539
|
this.originalValues = signal(cloneDeep(AXP_default_Spacing_Box_Value), ...(ngDevMode ? [{ debugName: "originalValues" }] : /* istanbul ignore next */ []));
|
|
@@ -21186,7 +20713,7 @@ class AXPSpacingWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
21186
20713
|
return { clientX: touch.clientX, clientY: touch.clientY };
|
|
21187
20714
|
}
|
|
21188
20715
|
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 }); }
|
|
20716
|
+
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
20717
|
}
|
|
21191
20718
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: AXPSpacingWidgetEditComponent, decorators: [{
|
|
21192
20719
|
type: Component,
|
|
@@ -21199,9 +20726,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImpor
|
|
|
21199
20726
|
AXRangeSliderModule,
|
|
21200
20727
|
AXButtonModule,
|
|
21201
20728
|
AXDropdownButtonModule,
|
|
20729
|
+
AXKBDComponent,
|
|
20730
|
+
AXKBDItemComponent,
|
|
21202
20731
|
AXNumberBoxModule,
|
|
21203
20732
|
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"] }]
|
|
20733
|
+
], 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
20734
|
}], propDecorators: { popover: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXPopoverComponent), { isSignal: true }] }] } });
|
|
21206
20735
|
|
|
21207
20736
|
var spacingWidgetEditor_component = /*#__PURE__*/Object.freeze({
|
|
@@ -24068,7 +23597,7 @@ class AXPTabularDataWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
24068
23597
|
this.platform = inject(AXPlatform);
|
|
24069
23598
|
}
|
|
24070
23599
|
async openPopup() {
|
|
24071
|
-
const { AXPTabularDataPopupComponent } = await import('./acorex-platform-layout-widgets-tabular-data-edit-popup.component-
|
|
23600
|
+
const { AXPTabularDataPopupComponent } = await import('./acorex-platform-layout-widgets-tabular-data-edit-popup.component-DjpZU6gz.mjs');
|
|
24072
23601
|
const popupData = await this.popupService.open(AXPTabularDataPopupComponent, {
|
|
24073
23602
|
size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : this.columns().length > 3 ? 'lg' : 'md',
|
|
24074
23603
|
header: true,
|
|
@@ -24120,7 +23649,7 @@ class AXPTabularDataEditorWidgetViewComponent extends AXPValueWidgetComponent {
|
|
|
24120
23649
|
this.columns = this.options()['columns'];
|
|
24121
23650
|
}
|
|
24122
23651
|
async openPopup() {
|
|
24123
|
-
const { AXPTabularDataPopupComponent } = await import('./acorex-platform-layout-widgets-tabular-data-view-popup.component-
|
|
23652
|
+
const { AXPTabularDataPopupComponent } = await import('./acorex-platform-layout-widgets-tabular-data-view-popup.component-gX-3Kx9I.mjs');
|
|
24124
23653
|
this.popupService.open(AXPTabularDataPopupComponent, {
|
|
24125
23654
|
size: this.platform.is('Mobile') || this.platform.is('SM') ? 'full' : 'md',
|
|
24126
23655
|
header: true,
|