@quadrel-enterprise-ui/framework 19.3.9 → 19.4.1
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/CHANGELOG.md +10 -0
- package/fesm2022/quadrel-enterprise-ui-framework.mjs +13 -8
- package/fesm2022/quadrel-enterprise-ui-framework.mjs.map +1 -1
- package/lib/file-collector/file-collector.component.d.ts.map +1 -1
- package/lib/forms/model/forms.interface.d.ts +14 -0
- package/lib/forms/model/forms.interface.d.ts.map +1 -1
- package/lib/forms/pin-code/pin-code.component.d.ts +1 -0
- package/lib/forms/pin-code/pin-code.component.d.ts.map +1 -1
- package/lib/forms/shared/helpers/forms.helpers.d.ts +2 -1
- package/lib/forms/shared/helpers/forms.helpers.d.ts.map +1 -1
- package/lib/table/row/selection/table-row-selection.component.d.ts +1 -0
- package/lib/table/row/selection/table-row-selection.component.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
## [19.4.1](https://github.com/BAZG-Quadrel/quadrel-framework/compare/v19.4.0...v19.4.1) (2025-12-17)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* table should not propagate click event for selection ([3d65d95](https://github.com/BAZG-Quadrel/quadrel-framework/commit/3d65d95fe8b25085bd55374d6401bb47c42ca31d))
|
|
6
|
+
## [19.4.0](https://github.com/BAZG-Quadrel/quadrel-framework/compare/v19.3.9...v19.4.0) (2025-12-16)
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* Added Type to QdPinCodeConfig ([250d04d](https://github.com/BAZG-Quadrel/quadrel-framework/commit/250d04d8ef1166b9b4ea5a6b5e2bcdd17f9b8c1e))
|
|
1
11
|
## [19.3.9](https://github.com/BAZG-Quadrel/quadrel-framework/compare/v19.3.8...v19.3.9) (2025-12-15)
|
|
2
12
|
## [19.3.8](https://github.com/BAZG-Quadrel/quadrel-framework/compare/v19.3.7...v19.3.8) (2025-12-15)
|
|
3
13
|
## [19.3.7](https://github.com/BAZG-Quadrel/quadrel-framework/compare/v19.3.6...v19.3.7) (2025-12-15)
|
|
@@ -8051,6 +8051,7 @@ const getDigitsOnly = (config) => get(config, 'digitsOnly', false);
|
|
|
8051
8051
|
const getCodeLength = (config) => get(config, 'codeLength', 6);
|
|
8052
8052
|
const getFocusOnInit = (config) => get(config, 'focusOnInit', false);
|
|
8053
8053
|
const getCodeHidden = (config) => get(config, 'codeHidden', false);
|
|
8054
|
+
const getPinCodeInputType = (config) => get(config, 'inputType', 'tel');
|
|
8054
8055
|
/**
|
|
8055
8056
|
* Common Checkboxes & Radiobuttons form properties
|
|
8056
8057
|
*
|
|
@@ -13904,6 +13905,7 @@ class QdPinCodeComponent {
|
|
|
13904
13905
|
codeLength;
|
|
13905
13906
|
focusOnInit;
|
|
13906
13907
|
codeHidden;
|
|
13908
|
+
inputType;
|
|
13907
13909
|
iterable = Array;
|
|
13908
13910
|
blurCurrent;
|
|
13909
13911
|
control;
|
|
@@ -14043,6 +14045,7 @@ class QdPinCodeComponent {
|
|
|
14043
14045
|
this.codeLength = getCodeLength(this.config);
|
|
14044
14046
|
this.focusOnInit = getFocusOnInit(this.config);
|
|
14045
14047
|
this.codeHidden = getCodeHidden(this.config);
|
|
14048
|
+
this.inputType = getPinCodeInputType(this.config);
|
|
14046
14049
|
}
|
|
14047
14050
|
hasFocusOnInitChanged(config) {
|
|
14048
14051
|
return config.previousValue?.focusOnInit !== config.currentValue?.focusOnInit;
|
|
@@ -14169,7 +14172,7 @@ class QdPinCodeComponent {
|
|
|
14169
14172
|
},
|
|
14170
14173
|
QdPinCodeService,
|
|
14171
14174
|
QdFormsActionEmitterService
|
|
14172
|
-
], viewQueries: [{ propertyName: "inputsList", predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<ng-container *ngFor=\"let i of iterable(codeLength); let index = index; let last = last\">\n <input\n #input\n *ngIf=\"!readonly && !viewonly\"\n [ngClass]=\"'qd-pin-code__input qd-pin-code--input-' + index + (last ? ' qd-pin-code__input--last' : '')\"\n [attr.data-test-id]=\"testId + '-input-' + index\"\n [type]=\"codeHidden ? 'password' :
|
|
14175
|
+
], viewQueries: [{ propertyName: "inputsList", predicate: ["input"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<ng-container *ngFor=\"let i of iterable(codeLength); let index = index; let last = last\">\n <input\n #input\n *ngIf=\"!readonly && !viewonly\"\n [ngClass]=\"'qd-pin-code__input qd-pin-code--input-' + index + (last ? ' qd-pin-code__input--last' : '')\"\n [attr.data-test-id]=\"testId + '-input-' + index\"\n [type]=\"codeHidden ? 'password' : inputType\"\n [tabindex]=\"pinCodeService.firstEmpty === index ? 0 : -1\"\n (click)=\"handleCLick($event)\"\n (keydown.backspace)=\"handleDelete($event)\"\n (keydown.delete)=\"handleDelete($event)\"\n (keydown.enter)=\"handleComplete()\"\n (keypress)=\"handleInput($event)\"\n (blur)=\"handleBlur(index)\"\n [disabled]=\"disabled\"\n />\n</ng-container>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <qd-form-hint\n [hint]=\"hint\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[pinCodeService.joinedValues]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[pinCodeService.joinedValues]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [":host{display:block;height:4.5rem;margin-bottom:.75rem}:host .qd-pin-code__input{width:1.875rem;height:2.25rem;border:.0625rem solid rgb(180,180,180);margin-right:.75rem;margin-bottom:.375rem;caret-color:#fff0;cursor:default;font-size:1.5rem;font-weight:500;text-align:center}:host .qd-pin-code__input--last{margin-right:0}:host .qd-pin-code__input:focus{border-width:.125rem;border-color:#069}:host .qd-pin-code__input:active{border-width:.0625rem;border-color:#b4b4b4}:host .qd-pin-code__input:focus-visible{outline:none}:host.qd-pin-code--error .qd-pin-code__input{border-color:#c70023}:host.qd-pin-code--error .qd-pin-code__input:focus{border-width:.125rem}:host.qd-pin-code--error .qd-pin-code__input:active{border-width:.0625rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: QdFormHintComponent, selector: "qd-form-hint", inputs: ["hint", "control", "hasError", "hintAction", "data-test-id"] }, { kind: "component", type: QdFormLabelComponent, selector: "qd-form-label", inputs: ["label", "isDisabled", "readonly", "viewonly", "control", "tooltip", "data-test-id"] }, { kind: "component", type: QdFormReadonlyComponent, selector: "qd-form-readonly", inputs: ["values", "readonlyAction", "data-test-id"] }, { kind: "component", type: QdFormViewonlyComponent, selector: "qd-form-viewonly", inputs: ["values", "viewonlyAction", "data-test-id"] }] });
|
|
14173
14176
|
}
|
|
14174
14177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: QdPinCodeComponent, decorators: [{
|
|
14175
14178
|
type: Component,
|
|
@@ -14181,7 +14184,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImpo
|
|
|
14181
14184
|
},
|
|
14182
14185
|
QdPinCodeService,
|
|
14183
14186
|
QdFormsActionEmitterService
|
|
14184
|
-
], host: { class: 'qd-pin-code' }, standalone: false, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<ng-container *ngFor=\"let i of iterable(codeLength); let index = index; let last = last\">\n <input\n #input\n *ngIf=\"!readonly && !viewonly\"\n [ngClass]=\"'qd-pin-code__input qd-pin-code--input-' + index + (last ? ' qd-pin-code__input--last' : '')\"\n [attr.data-test-id]=\"testId + '-input-' + index\"\n [type]=\"codeHidden ? 'password' :
|
|
14187
|
+
], host: { class: 'qd-pin-code' }, standalone: false, template: "<qd-form-label\n [label]=\"label\"\n [readonly]=\"readonly\"\n [viewonly]=\"viewonly\"\n [control]=\"control\"\n [tooltip]=\"config?.tooltip\"\n [data-test-id]=\"testId\"\n></qd-form-label>\n\n<ng-container *ngFor=\"let i of iterable(codeLength); let index = index; let last = last\">\n <input\n #input\n *ngIf=\"!readonly && !viewonly\"\n [ngClass]=\"'qd-pin-code__input qd-pin-code--input-' + index + (last ? ' qd-pin-code__input--last' : '')\"\n [attr.data-test-id]=\"testId + '-input-' + index\"\n [type]=\"codeHidden ? 'password' : inputType\"\n [tabindex]=\"pinCodeService.firstEmpty === index ? 0 : -1\"\n (click)=\"handleCLick($event)\"\n (keydown.backspace)=\"handleDelete($event)\"\n (keydown.delete)=\"handleDelete($event)\"\n (keydown.enter)=\"handleComplete()\"\n (keypress)=\"handleInput($event)\"\n (blur)=\"handleBlur(index)\"\n [disabled]=\"disabled\"\n />\n</ng-container>\n\n<ng-container *ngIf=\"!readonly && !viewonly\">\n <qd-form-hint\n [hint]=\"hint\"\n [control]=\"control\"\n [hasError]=\"hasError\"\n [hintAction]=\"hintAction\"\n [data-test-id]=\"testId\"\n ></qd-form-hint>\n</ng-container>\n\n<qd-form-readonly\n *ngIf=\"readonly\"\n [values]=\"[pinCodeService.joinedValues]\"\n [readonlyAction]=\"readonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-readonly>\n\n<qd-form-viewonly\n *ngIf=\"viewonly\"\n [values]=\"[pinCodeService.joinedValues]\"\n [viewonlyAction]=\"viewonlyAction\"\n [data-test-id]=\"testId\"\n></qd-form-viewonly>\n", styles: [":host{display:block;height:4.5rem;margin-bottom:.75rem}:host .qd-pin-code__input{width:1.875rem;height:2.25rem;border:.0625rem solid rgb(180,180,180);margin-right:.75rem;margin-bottom:.375rem;caret-color:#fff0;cursor:default;font-size:1.5rem;font-weight:500;text-align:center}:host .qd-pin-code__input--last{margin-right:0}:host .qd-pin-code__input:focus{border-width:.125rem;border-color:#069}:host .qd-pin-code__input:active{border-width:.0625rem;border-color:#b4b4b4}:host .qd-pin-code__input:focus-visible{outline:none}:host.qd-pin-code--error .qd-pin-code__input{border-color:#c70023}:host.qd-pin-code--error .qd-pin-code__input:focus{border-width:.125rem}:host.qd-pin-code--error .qd-pin-code__input:active{border-width:.0625rem}\n"] }]
|
|
14185
14188
|
}], ctorParameters: () => [{ type: QdPinCodeService }, { type: i0.ChangeDetectorRef }, { type: QdFormsActionEmitterService }, { type: i1$4.ControlContainer, decorators: [{
|
|
14186
14189
|
type: Optional
|
|
14187
14190
|
}, {
|
|
@@ -19511,8 +19514,6 @@ class QdFileCollectorComponent {
|
|
|
19511
19514
|
}
|
|
19512
19515
|
ngOnInit() {
|
|
19513
19516
|
this.initializeConfig(this.config);
|
|
19514
|
-
this.fileCollectorService.initialize(this.config);
|
|
19515
|
-
this.fileCollectorValidationService.initialize(this.config);
|
|
19516
19517
|
this.initViewMode();
|
|
19517
19518
|
if (this.sectionActionService) {
|
|
19518
19519
|
this._subscriptions.add(this.sectionActionService.action$.pipe(filter(type => type === 'addNew')).subscribe(() => this.clickFileInput()));
|
|
@@ -19520,8 +19521,7 @@ class QdFileCollectorComponent {
|
|
|
19520
19521
|
}
|
|
19521
19522
|
ngOnChanges(changes) {
|
|
19522
19523
|
if (changes['config'] && !changes['config'].firstChange) {
|
|
19523
|
-
this.
|
|
19524
|
-
this.fileCollectorValidationService.initialize(this.config);
|
|
19524
|
+
this.initializeConfig(this.config);
|
|
19525
19525
|
}
|
|
19526
19526
|
}
|
|
19527
19527
|
ngOnDestroy() {
|
|
@@ -19558,6 +19558,8 @@ class QdFileCollectorComponent {
|
|
|
19558
19558
|
config.allowedMimeTypes = this.fileTypeService.getMimeTypes(config.allowedFileTypes);
|
|
19559
19559
|
config.allowedFileNamePattern = this.fileTypeService.getFileNamePattern(config.allowedFileTypes);
|
|
19560
19560
|
}
|
|
19561
|
+
this.fileCollectorService.initialize(this.config);
|
|
19562
|
+
this.fileCollectorValidationService.initialize(this.config);
|
|
19561
19563
|
}
|
|
19562
19564
|
validateConfig(config) {
|
|
19563
19565
|
if (!config)
|
|
@@ -24100,6 +24102,9 @@ class QdTableRowSelectionComponent {
|
|
|
24100
24102
|
isRowSelected$() {
|
|
24101
24103
|
return this.rowSelectionService.isRowSelected$(this.rowIndex);
|
|
24102
24104
|
}
|
|
24105
|
+
stopPropagation(event) {
|
|
24106
|
+
event.stopPropagation();
|
|
24107
|
+
}
|
|
24103
24108
|
handleChange(event) {
|
|
24104
24109
|
if (event.target.checked) {
|
|
24105
24110
|
this.rowSelectionService.setRowSelected(this.rowIndex);
|
|
@@ -24109,11 +24114,11 @@ class QdTableRowSelectionComponent {
|
|
|
24109
24114
|
}
|
|
24110
24115
|
}
|
|
24111
24116
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: QdTableRowSelectionComponent, deps: [{ token: QdTableRowSelectionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
24112
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: QdTableRowSelectionComponent, isStandalone: false, selector: "[qd-table-row-selection]", inputs: { rowIndex: "rowIndex", testId: ["data-test-id", "testId"] }, host: { properties: { "attr.data-test-id": "this.dataTestId" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"selectionType\">\n <ng-container *ngSwitchCase=\"'singleSelect'\">\n <input\n type=\"radio\"\n [name]=\"'qd-table-selection__' + tableId\"\n [checked]=\"isRowSelected$() | async\"\n (change)=\"handleChange($event)\"\n [attr.data-test-id]=\"testId + '-radio'\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"'multiSelect'\">\n <input\n type=\"checkbox\"\n [name]=\"'qd-table-selection__' + tableId\"\n [checked]=\"isRowSelected$() | async\"\n (change)=\"handleChange($event)\"\n [attr.data-test-id]=\"testId + '-checkbox'\"\n />\n </ng-container>\n</ng-container>\n", styles: ["input{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
24117
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.17", type: QdTableRowSelectionComponent, isStandalone: false, selector: "[qd-table-row-selection]", inputs: { rowIndex: "rowIndex", testId: ["data-test-id", "testId"] }, host: { properties: { "attr.data-test-id": "this.dataTestId" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"selectionType\">\n <ng-container *ngSwitchCase=\"'singleSelect'\">\n <input\n type=\"radio\"\n [name]=\"'qd-table-selection__' + tableId\"\n [checked]=\"isRowSelected$() | async\"\n (click)=\"stopPropagation($event)\"\n (change)=\"handleChange($event)\"\n [attr.data-test-id]=\"testId + '-radio'\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"'multiSelect'\">\n <input\n type=\"checkbox\"\n [name]=\"'qd-table-selection__' + tableId\"\n [checked]=\"isRowSelected$() | async\"\n (click)=\"stopPropagation($event)\"\n (change)=\"handleChange($event)\"\n [attr.data-test-id]=\"testId + '-checkbox'\"\n />\n </ng-container>\n</ng-container>\n", styles: ["input{cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
24113
24118
|
}
|
|
24114
24119
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.17", ngImport: i0, type: QdTableRowSelectionComponent, decorators: [{
|
|
24115
24120
|
type: Component,
|
|
24116
|
-
args: [{ selector: '[qd-table-row-selection]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container [ngSwitch]=\"selectionType\">\n <ng-container *ngSwitchCase=\"'singleSelect'\">\n <input\n type=\"radio\"\n [name]=\"'qd-table-selection__' + tableId\"\n [checked]=\"isRowSelected$() | async\"\n (change)=\"handleChange($event)\"\n [attr.data-test-id]=\"testId + '-radio'\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"'multiSelect'\">\n <input\n type=\"checkbox\"\n [name]=\"'qd-table-selection__' + tableId\"\n [checked]=\"isRowSelected$() | async\"\n (change)=\"handleChange($event)\"\n [attr.data-test-id]=\"testId + '-checkbox'\"\n />\n </ng-container>\n</ng-container>\n", styles: ["input{cursor:pointer}\n"] }]
|
|
24121
|
+
args: [{ selector: '[qd-table-row-selection]', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<ng-container [ngSwitch]=\"selectionType\">\n <ng-container *ngSwitchCase=\"'singleSelect'\">\n <input\n type=\"radio\"\n [name]=\"'qd-table-selection__' + tableId\"\n [checked]=\"isRowSelected$() | async\"\n (click)=\"stopPropagation($event)\"\n (change)=\"handleChange($event)\"\n [attr.data-test-id]=\"testId + '-radio'\"\n />\n </ng-container>\n <ng-container *ngSwitchCase=\"'multiSelect'\">\n <input\n type=\"checkbox\"\n [name]=\"'qd-table-selection__' + tableId\"\n [checked]=\"isRowSelected$() | async\"\n (click)=\"stopPropagation($event)\"\n (change)=\"handleChange($event)\"\n [attr.data-test-id]=\"testId + '-checkbox'\"\n />\n </ng-container>\n</ng-container>\n", styles: ["input{cursor:pointer}\n"] }]
|
|
24117
24122
|
}], ctorParameters: () => [{ type: QdTableRowSelectionService }], propDecorators: { rowIndex: [{
|
|
24118
24123
|
type: Input
|
|
24119
24124
|
}], testId: [{
|