cmat 0.0.19 → 0.0.21
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/components/x6-angular-shape/index.d.ts +5 -0
- package/components/x6-angular-shape/node.d.ts +11 -0
- package/components/x6-angular-shape/public-api.d.ts +3 -0
- package/components/x6-angular-shape/registry.d.ts +13 -0
- package/components/x6-angular-shape/view.d.ts +16 -0
- package/fesm2022/cmat-components-adapter.mjs +9 -9
- package/fesm2022/cmat-components-breadcrumb.mjs +9 -9
- package/fesm2022/cmat-components-card.mjs +3 -3
- package/fesm2022/cmat-components-carousel.mjs +12 -12
- package/fesm2022/cmat-components-cascade.mjs +9 -9
- package/fesm2022/cmat-components-chip-input.mjs +3 -3
- package/fesm2022/cmat-components-custom-formly.mjs +87 -87
- package/fesm2022/cmat-components-date-range.mjs +3 -3
- package/fesm2022/cmat-components-drawer.mjs +6 -6
- package/fesm2022/cmat-components-fullscreen.mjs +3 -3
- package/fesm2022/cmat-components-highlight.mjs +6 -6
- package/fesm2022/cmat-components-image-viewer.mjs +3 -3
- package/fesm2022/cmat-components-json-editor.mjs +3 -3
- package/fesm2022/cmat-components-knob-input.mjs +3 -3
- package/fesm2022/cmat-components-masonry.mjs +3 -3
- package/fesm2022/cmat-components-material-color-picker.mjs +3 -3
- package/fesm2022/cmat-components-material-datetimepicker.mjs +42 -42
- package/fesm2022/cmat-components-navigation.mjs +39 -39
- package/fesm2022/cmat-components-opt-input.mjs +3 -3
- package/fesm2022/cmat-components-org-chart.mjs +9 -9
- package/fesm2022/cmat-components-pagination.mjs +12 -12
- package/fesm2022/cmat-components-password-strength.mjs +9 -9
- package/fesm2022/cmat-components-popover.mjs +9 -9
- package/fesm2022/cmat-components-progress-bar.mjs +3 -3
- package/fesm2022/cmat-components-rating.mjs +3 -3
- package/fesm2022/cmat-components-select-search.mjs +11 -11
- package/fesm2022/cmat-components-select-search.mjs.map +1 -1
- package/fesm2022/cmat-components-select-table.mjs +3 -3
- package/fesm2022/cmat-components-select-tree.mjs +3 -3
- package/fesm2022/cmat-components-speed-dial.mjs +9 -9
- package/fesm2022/cmat-components-timeline.mjs +12 -12
- package/fesm2022/cmat-components-toast.mjs +9 -9
- package/fesm2022/cmat-components-transfer-picker.mjs +18 -18
- package/fesm2022/cmat-components-treetable.mjs +6 -6
- package/fesm2022/cmat-components-upload.mjs +9 -9
- package/fesm2022/cmat-components-x6-angular-shape.mjs +183 -0
- package/fesm2022/cmat-components-x6-angular-shape.mjs.map +1 -0
- package/fesm2022/cmat-directives-animate-on-scroll.mjs +6 -6
- package/fesm2022/cmat-directives-arrow-cursor.mjs +3 -3
- package/fesm2022/cmat-directives-autofocus.mjs +3 -3
- package/fesm2022/cmat-directives-data-exporter.mjs +21 -21
- package/fesm2022/cmat-directives-debounce.mjs +9 -9
- package/fesm2022/cmat-directives-digit-only.mjs +6 -6
- package/fesm2022/cmat-directives-equal-validator.mjs +3 -3
- package/fesm2022/cmat-lib-mock-api.mjs +6 -6
- package/fesm2022/cmat-pipes-bytes.mjs +3 -3
- package/fesm2022/cmat-pipes-date-format.mjs +3 -3
- package/fesm2022/cmat-pipes-find-by-key.mjs +3 -3
- package/fesm2022/cmat-pipes-group-by.mjs +3 -3
- package/fesm2022/cmat-pipes-keys.mjs +3 -3
- package/fesm2022/cmat-pipes-secure.mjs +3 -3
- package/fesm2022/cmat-pipes-uppercase.mjs +3 -3
- package/fesm2022/cmat-services-alert.mjs +3 -3
- package/fesm2022/cmat-services-config.mjs +6 -6
- package/fesm2022/cmat-services-confirmation.mjs +6 -6
- package/fesm2022/cmat-services-data.mjs +3 -3
- package/fesm2022/cmat-services-export-as.mjs +3 -3
- package/fesm2022/cmat-services-loading.mjs +6 -6
- package/fesm2022/cmat-services-local-storage.mjs +3 -3
- package/fesm2022/cmat-services-media-watcher.mjs +3 -3
- package/fesm2022/cmat-services-platform.mjs +3 -3
- package/fesm2022/cmat-services-splash-screen.mjs +3 -3
- package/fesm2022/cmat-services-title.mjs +3 -3
- package/fesm2022/cmat-services-translation.mjs +3 -3
- package/fesm2022/cmat-services-utils.mjs +3 -3
- package/package.json +35 -31
|
@@ -156,10 +156,10 @@ class CmatTransferPickerService {
|
|
|
156
156
|
}
|
|
157
157
|
});
|
|
158
158
|
}
|
|
159
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
160
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.
|
|
159
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
160
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerService, providedIn: 'root' }); }
|
|
161
161
|
}
|
|
162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerService, decorators: [{
|
|
163
163
|
type: Injectable,
|
|
164
164
|
args: [{
|
|
165
165
|
providedIn: 'root'
|
|
@@ -226,10 +226,10 @@ class CmatTransferPickerFilterComponent {
|
|
|
226
226
|
changeFilterData() {
|
|
227
227
|
this._service.filterDataSource({ filterData: this.filterData });
|
|
228
228
|
}
|
|
229
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
230
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.
|
|
229
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerFilterComponent, deps: [{ token: i1.Overlay }, { token: CmatTransferPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
230
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: CmatTransferPickerFilterComponent, isStandalone: true, selector: "cmat-transfer-picker-filter", inputs: { filters: "filters" }, viewQueries: [{ propertyName: "overlayOrigin", first: true, predicate: CdkOverlayOrigin, descendants: true, static: true }, { propertyName: "filterTemplate", first: true, predicate: ["filterTemplate"], descendants: true, static: true }], exportAs: ["cmatTransferPickerFilter"], ngImport: i0, template: "<button type=\"button\" class=\"mr-2 mt-1\" mat-icon-button cdk-overlay-origin (click)=\"toggleFilter()\">\r\n <mat-icon svgIcon=\"mat_outline:filter_list\"></mat-icon>\r\n</button>\r\n<ng-template #filterTemplate=\"cdkPortal\" cdk-portal>\r\n <div\r\n class=\"transfer-picker-filter-panel bg-card flex flex-col flex-nowrap place-content-start box-border items-start w-full shadow\">\r\n <mat-button-toggle-group name=\"condition\" [hideSingleSelectionIndicator]=\"true\" (change)=\"onConditionChange($event.value)\">\r\n <mat-button-toggle value=\"or\" [checked]=\"filterData.condition === 'or'\">\u6216</mat-button-toggle>\r\n <mat-button-toggle value=\"and\" [checked]=\"filterData.condition === 'and'\">\u4E14</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n\r\n <div class=\"chip-list\">\r\n @for (item of filters; track $index) {\r\n <div class=\"chip-wrapper\" role=\"presentation\"\r\n (click)=\"onFilterClick(item)\">\r\n <span class=\"chip\" [ngClass]=\"{selected: item?.selected}\">{{item.label}}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".transfer-picker-filter-panel{min-width:276px;padding:10px 0}.transfer-picker-filter-panel .mat-button-toggle-group{font-size:12px;margin-right:15px;margin-bottom:20px;align-self:flex-end}.transfer-picker-filter-panel .mat-button-toggle-group .mat-button-toggle-label-content{line-height:1.8}.transfer-picker-filter-panel .chip-list{width:276px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;box-sizing:border-box}.transfer-picker-filter-panel .chip-list:after{content:\"\";flex:1 1 0%;max-width:33.333333%}.transfer-picker-filter-panel .chip-list .chip-wrapper{flex:1 1 0%;box-sizing:border-box;max-width:33.333333%;text-align:center;margin-bottom:20px}.transfer-picker-filter-panel .chip-list .chip-wrapper .chip{display:inline-block;min-width:50%;cursor:pointer;padding:5px 10px;font-size:12px}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonToggleModule }, { kind: "directive", type: i3.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled", "disabledInteractive", "hideSingleSelectionIndicator", "hideMultipleSelectionIndicator"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i3.MatButtonToggle, selector: "mat-button-toggle", inputs: ["aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "disableRipple", "appearance", "checked", "disabled", "disabledInteractive"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i6.TemplatePortalDirective, selector: "[cdk-portal], [portal]", exportAs: ["cdkPortal"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
231
231
|
}
|
|
232
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
232
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerFilterComponent, decorators: [{
|
|
233
233
|
type: Component,
|
|
234
234
|
args: [{ selector: 'cmat-transfer-picker-filter', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatTransferPickerFilter', imports: [MatButtonToggleModule, MatIconModule, CommonModule, PortalModule, MatButtonModule, OverlayModule], template: "<button type=\"button\" class=\"mr-2 mt-1\" mat-icon-button cdk-overlay-origin (click)=\"toggleFilter()\">\r\n <mat-icon svgIcon=\"mat_outline:filter_list\"></mat-icon>\r\n</button>\r\n<ng-template #filterTemplate=\"cdkPortal\" cdk-portal>\r\n <div\r\n class=\"transfer-picker-filter-panel bg-card flex flex-col flex-nowrap place-content-start box-border items-start w-full shadow\">\r\n <mat-button-toggle-group name=\"condition\" [hideSingleSelectionIndicator]=\"true\" (change)=\"onConditionChange($event.value)\">\r\n <mat-button-toggle value=\"or\" [checked]=\"filterData.condition === 'or'\">\u6216</mat-button-toggle>\r\n <mat-button-toggle value=\"and\" [checked]=\"filterData.condition === 'and'\">\u4E14</mat-button-toggle>\r\n </mat-button-toggle-group>\r\n\r\n <div class=\"chip-list\">\r\n @for (item of filters; track $index) {\r\n <div class=\"chip-wrapper\" role=\"presentation\"\r\n (click)=\"onFilterClick(item)\">\r\n <span class=\"chip\" [ngClass]=\"{selected: item?.selected}\">{{item.label}}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n</ng-template>", styles: [".transfer-picker-filter-panel{min-width:276px;padding:10px 0}.transfer-picker-filter-panel .mat-button-toggle-group{font-size:12px;margin-right:15px;margin-bottom:20px;align-self:flex-end}.transfer-picker-filter-panel .mat-button-toggle-group .mat-button-toggle-label-content{line-height:1.8}.transfer-picker-filter-panel .chip-list{width:276px;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;box-sizing:border-box}.transfer-picker-filter-panel .chip-list:after{content:\"\";flex:1 1 0%;max-width:33.333333%}.transfer-picker-filter-panel .chip-list .chip-wrapper{flex:1 1 0%;box-sizing:border-box;max-width:33.333333%;text-align:center;margin-bottom:20px}.transfer-picker-filter-panel .chip-list .chip-wrapper .chip{display:inline-block;min-width:50%;cursor:pointer;padding:5px 10px;font-size:12px}\n"] }]
|
|
235
235
|
}], ctorParameters: () => [{ type: i1.Overlay }, { type: CmatTransferPickerService }], propDecorators: { filters: [{
|
|
@@ -256,10 +256,10 @@ class CmatTransferPickerSearchComponent {
|
|
|
256
256
|
reset() {
|
|
257
257
|
this.keyword.setValue('');
|
|
258
258
|
}
|
|
259
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
260
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.
|
|
259
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerSearchComponent, deps: [{ token: CmatTransferPickerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
260
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: CmatTransferPickerSearchComponent, isStandalone: true, selector: "cmat-transfer-picker-search", inputs: { searchPlaceholder: "searchPlaceholder" }, exportAs: ["cmatTransferPickerSearch"], ngImport: i0, template: "<mat-form-field>\r\n <input matInput type=\"text\" placeholder=\"{{searchPlaceholder}}\" [formControl]=\"keyword\">\r\n @if (keyword.value) {\r\n <button type=\"button\" matSuffix mat-icon-button (click)=\"reset()\">\r\n <mat-icon svgIcon=\"mat_outline:close\"></mat-icon>\r\n </button>\r\n }\r\n</mat-form-field>", styles: ["cmat-transfer-picker-search{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center}cmat-transfer-picker-search .mat-mdc-form-field{width:88%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6$1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly", "disabledInteractive"], exportAs: ["matInput"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
261
261
|
}
|
|
262
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
262
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerSearchComponent, decorators: [{
|
|
263
263
|
type: Component,
|
|
264
264
|
args: [{ selector: 'cmat-transfer-picker-search', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatTransferPickerSearch', imports: [MatFormFieldModule, MatIconModule, ReactiveFormsModule, MatButtonModule, MatInputModule], template: "<mat-form-field>\r\n <input matInput type=\"text\" placeholder=\"{{searchPlaceholder}}\" [formControl]=\"keyword\">\r\n @if (keyword.value) {\r\n <button type=\"button\" matSuffix mat-icon-button (click)=\"reset()\">\r\n <mat-icon svgIcon=\"mat_outline:close\"></mat-icon>\r\n </button>\r\n }\r\n</mat-form-field>", styles: ["cmat-transfer-picker-search{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center}cmat-transfer-picker-search .mat-mdc-form-field{width:88%}\n"] }]
|
|
265
265
|
}], ctorParameters: () => [{ type: CmatTransferPickerService }], propDecorators: { searchPlaceholder: [{
|
|
@@ -470,10 +470,10 @@ class CmatTransferPickerSourceComponent {
|
|
|
470
470
|
}
|
|
471
471
|
return null;
|
|
472
472
|
}
|
|
473
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
474
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.
|
|
473
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerSourceComponent, deps: [{ token: CmatTransferPickerService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
474
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: CmatTransferPickerSourceComponent, isStandalone: true, selector: "cmat-transfer-picker-source", viewQueries: [{ propertyName: "tree", first: true, predicate: ["componentTree"], descendants: true }], exportAs: ["cmatTransferPickerSource"], ngImport: i0, template: "<mat-card class=\"transfer-picker-source shadow\">\r\n <mat-card-header class=\"pb-3 items-center\">\r\n <mat-card-title class=\"transfer-picker-source-title\">{{options.title}}</mat-card-title>\r\n @if (options.filterable) {\r\n <cmat-transfer-picker-filter\r\n [filters]=\"options.filters\"></cmat-transfer-picker-filter>\r\n }\r\n </mat-card-header>\r\n <mat-card-content class=\"transfer-picker-source-content\">\r\n @if (options.searchable) {\r\n <cmat-transfer-picker-search\r\n [searchPlaceholder]=\"options.searchPlaceholder\"></cmat-transfer-picker-search>\r\n }\r\n\r\n <cdk-virtual-scroll-viewport itemSize=\"48\"\r\n class=\"transfer-picker-source-scroll-wrapper overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <mat-tree #componentTree [dataSource]=\"dataSource\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" [matTreeNodePadding]=\"nestedNodeMap.get(node)?.level\">\r\n <button type=\"button\" mat-icon-button disabled> </button>\r\n <mat-checkbox class=\"checklist-leaf-node\" [checked]=\"checklistSelection.isSelected(nestedNodeMap.get(node)!)\"\r\n [disabled]=\"nestedNodeMap.get(node)?.disabled\" (change)=\"transferLeafItemSelectionToggle(nestedNodeMap.get(node)!);\">\r\n {{node.label}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" [matTreeNodePadding]=\"nestedNodeMap.get(node)?.level\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle>\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n svgIcon=\"{{componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'}}\">\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox [checked]=\"descendantsAllSelected(nestedNodeMap.get(node)!)||nestedNodeMap.get(node)?.disabled\"\r\n [indeterminate]=\"descendantsPartiallySelected(nestedNodeMap.get(node)!)\" [disabled]=\"nestedNodeMap.get(node)?.disabled\"\r\n (change)=\"transferItemSelectionToggle(nestedNodeMap.get(node)!)\">\r\n {{node.label}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n </mat-tree>\r\n @if (!dataSource.length) {\r\n <div class=\"transfer-picker-source-empty\">\u6682\u65E0\u6570\u636E</div>\r\n }\r\n </cdk-virtual-scroll-viewport>\r\n </mat-card-content>\r\n</mat-card>", styles: [".transfer-picker-source{width:276px;height:100%;padding:0}.transfer-picker-source .mat-mdc-card-header{display:flex;flex-direction:row;flex-wrap:nowrap;box-sizing:border-box;place-content:space-between;align-items:flex-start;margin-bottom:-8px}.transfer-picker-source-title{font-size:1rem;margin-bottom:0}.transfer-picker-source-scroll-wrapper{height:300px}.transfer-picker-source-empty{text-align:center;font-size:1rem;margin-top:20px;color:#00000040}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i2$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i2$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i3$2.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i3$2.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "directive", type: i3$2.MatTreeNodeToggle, selector: "[matTreeNodeToggle]", inputs: ["matTreeNodeToggleRecursive"] }, { kind: "component", type: i3$2.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i3$2.MatTreeNode, selector: "mat-tree-node", inputs: ["tabIndex", "disabled"], outputs: ["activation", "expandedChange"], exportAs: ["matTreeNode"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i4$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "aria-expanded", "aria-controls", "aria-owns", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: CmatTransferPickerFilterComponent, selector: "cmat-transfer-picker-filter", inputs: ["filters"], exportAs: ["cmatTransferPickerFilter"] }, { kind: "component", type: CmatTransferPickerSearchComponent, selector: "cmat-transfer-picker-search", inputs: ["searchPlaceholder"], exportAs: ["cmatTransferPickerSearch"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i7.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "component", type: i7.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
475
475
|
}
|
|
476
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
476
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerSourceComponent, decorators: [{
|
|
477
477
|
type: Component,
|
|
478
478
|
args: [{ selector: 'cmat-transfer-picker-source', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatTransferPickerSource', imports: [MatCardModule, MatTreeModule, MatCheckboxModule, MatIconModule, MatButtonModule,
|
|
479
479
|
CmatTransferPickerFilterComponent, CmatTransferPickerSearchComponent, ScrollingModule], template: "<mat-card class=\"transfer-picker-source shadow\">\r\n <mat-card-header class=\"pb-3 items-center\">\r\n <mat-card-title class=\"transfer-picker-source-title\">{{options.title}}</mat-card-title>\r\n @if (options.filterable) {\r\n <cmat-transfer-picker-filter\r\n [filters]=\"options.filters\"></cmat-transfer-picker-filter>\r\n }\r\n </mat-card-header>\r\n <mat-card-content class=\"transfer-picker-source-content\">\r\n @if (options.searchable) {\r\n <cmat-transfer-picker-search\r\n [searchPlaceholder]=\"options.searchPlaceholder\"></cmat-transfer-picker-search>\r\n }\r\n\r\n <cdk-virtual-scroll-viewport itemSize=\"48\"\r\n class=\"transfer-picker-source-scroll-wrapper overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <mat-tree #componentTree [dataSource]=\"dataSource\" [childrenAccessor]=\"childrenAccessor\">\r\n <mat-tree-node *matTreeNodeDef=\"let node\" [matTreeNodePadding]=\"nestedNodeMap.get(node)?.level\">\r\n <button type=\"button\" mat-icon-button disabled> </button>\r\n <mat-checkbox class=\"checklist-leaf-node\" [checked]=\"checklistSelection.isSelected(nestedNodeMap.get(node)!)\"\r\n [disabled]=\"nestedNodeMap.get(node)?.disabled\" (change)=\"transferLeafItemSelectionToggle(nestedNodeMap.get(node)!);\">\r\n {{node.label}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n\r\n <mat-tree-node *matTreeNodeDef=\"let node; when: hasChild\" [matTreeNodePadding]=\"nestedNodeMap.get(node)?.level\">\r\n <button type=\"button\" mat-icon-button matTreeNodeToggle>\r\n <mat-icon class=\"mat-icon-rtl-mirror\"\r\n svgIcon=\"{{componentTree.isExpanded(node) ? 'mat_outline:expand_more' : 'mat_outline:chevron_right'}}\">\r\n </mat-icon>\r\n </button>\r\n <mat-checkbox [checked]=\"descendantsAllSelected(nestedNodeMap.get(node)!)||nestedNodeMap.get(node)?.disabled\"\r\n [indeterminate]=\"descendantsPartiallySelected(nestedNodeMap.get(node)!)\" [disabled]=\"nestedNodeMap.get(node)?.disabled\"\r\n (change)=\"transferItemSelectionToggle(nestedNodeMap.get(node)!)\">\r\n {{node.label}}\r\n </mat-checkbox>\r\n </mat-tree-node>\r\n </mat-tree>\r\n @if (!dataSource.length) {\r\n <div class=\"transfer-picker-source-empty\">\u6682\u65E0\u6570\u636E</div>\r\n }\r\n </cdk-virtual-scroll-viewport>\r\n </mat-card-content>\r\n</mat-card>", styles: [".transfer-picker-source{width:276px;height:100%;padding:0}.transfer-picker-source .mat-mdc-card-header{display:flex;flex-direction:row;flex-wrap:nowrap;box-sizing:border-box;place-content:space-between;align-items:flex-start;margin-bottom:-8px}.transfer-picker-source-title{font-size:1rem;margin-bottom:0}.transfer-picker-source-scroll-wrapper{height:300px}.transfer-picker-source-empty{text-align:center;font-size:1rem;margin-top:20px;color:#00000040}\n"] }]
|
|
@@ -490,10 +490,10 @@ class CmatTransferPickerTargetComponent {
|
|
|
490
490
|
this.selectedList.splice(this.selectedList.indexOf(item), 1);
|
|
491
491
|
this.clearItemChange.next(item);
|
|
492
492
|
}
|
|
493
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
494
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.
|
|
493
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerTargetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
494
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: CmatTransferPickerTargetComponent, isStandalone: true, selector: "cmat-transfer-picker-target", inputs: { selectedList: "selectedList" }, outputs: { clearItemChange: "clearItemChange" }, exportAs: ["cmatTransferPickerTarget"], ngImport: i0, template: "<mat-card class=\"transfer-picker-target shadow\">\r\n <mat-card-header class=\"pb-3 items-center\">\r\n <mat-card-title class=\"transfer-picker-target-title\">\u5DF2\u9009\u62E9 {{selectedList.length}} \u9879</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cdk-virtual-scroll-viewport itemSize=\"40\"\r\n class=\"transfer-picker-target-scroll-wrapper overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <mat-list dense>\r\n @for (item of selectedList; track $index) {\r\n <mat-list-item class=\"transfer-picker-target-item\">\r\n <div mat-line class=\"flex flex-row items-center\">\r\n <div class=\"flex-1\">{{item.label}}</div>\r\n <button type=\"button\" mat-icon-button (click)=\"clearItem(item)\">\r\n <mat-icon svgIcon=\"heroicons_solid:x-circle\"></mat-icon>\r\n </button>\r\n </div>\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n @if (!selectedList.length) {\r\n <div class=\"transfer-picker-target-empty\">\u6682\u65E0\u6570\u636E</div>\r\n }\r\n </cdk-virtual-scroll-viewport>\r\n </mat-card-content>\r\n</mat-card>", styles: [".transfer-picker-target{height:100%;padding:0;width:276px}.transfer-picker-target .mat-mdc-card-header{margin-bottom:-8px}.transfer-picker-target-title{font-size:1rem;margin-bottom:0;padding:12px 0}.transfer-picker-target-item{width:100%}.transfer-picker-target-scroll-wrapper{height:356px}.transfer-picker-target-empty{text-align:center;margin-top:20px;color:#00000040}\n"], dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i2$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i2$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2$2.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i2$2.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i7.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "component", type: i7.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5$1.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
495
495
|
}
|
|
496
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
496
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerTargetComponent, decorators: [{
|
|
497
497
|
type: Component,
|
|
498
498
|
args: [{ selector: 'cmat-transfer-picker-target', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatTransferPickerTarget', imports: [MatCardModule, MatListModule, MatIconModule, ScrollingModule, MatButtonModule], template: "<mat-card class=\"transfer-picker-target shadow\">\r\n <mat-card-header class=\"pb-3 items-center\">\r\n <mat-card-title class=\"transfer-picker-target-title\">\u5DF2\u9009\u62E9 {{selectedList.length}} \u9879</mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <cdk-virtual-scroll-viewport itemSize=\"40\"\r\n class=\"transfer-picker-target-scroll-wrapper overflow-y-auto lg:overflow-y-hidden lg:hover:overflow-y-auto scrollbar-custom\">\r\n <mat-list dense>\r\n @for (item of selectedList; track $index) {\r\n <mat-list-item class=\"transfer-picker-target-item\">\r\n <div mat-line class=\"flex flex-row items-center\">\r\n <div class=\"flex-1\">{{item.label}}</div>\r\n <button type=\"button\" mat-icon-button (click)=\"clearItem(item)\">\r\n <mat-icon svgIcon=\"heroicons_solid:x-circle\"></mat-icon>\r\n </button>\r\n </div>\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n @if (!selectedList.length) {\r\n <div class=\"transfer-picker-target-empty\">\u6682\u65E0\u6570\u636E</div>\r\n }\r\n </cdk-virtual-scroll-viewport>\r\n </mat-card-content>\r\n</mat-card>", styles: [".transfer-picker-target{height:100%;padding:0;width:276px}.transfer-picker-target .mat-mdc-card-header{margin-bottom:-8px}.transfer-picker-target-title{font-size:1rem;margin-bottom:0;padding:12px 0}.transfer-picker-target-item{width:100%}.transfer-picker-target-scroll-wrapper{height:356px}.transfer-picker-target-empty{text-align:center;margin-top:20px;color:#00000040}\n"] }]
|
|
499
499
|
}], ctorParameters: () => [], propDecorators: { selectedList: [{
|
|
@@ -550,10 +550,10 @@ class CmatTransferPickerComponent {
|
|
|
550
550
|
this.selectChange.next(this.selectedList);
|
|
551
551
|
this._changeDetectorRef.detectChanges();
|
|
552
552
|
}
|
|
553
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
554
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.
|
|
553
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerComponent, deps: [{ token: CmatTransferPickerService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
554
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.1.1", type: CmatTransferPickerComponent, isStandalone: true, selector: "cmat-transfer-picker", inputs: { title: "title", filterable: "filterable", searchable: "searchable", searchPlaceholder: "searchPlaceholder", dataSource: "dataSource", filters: "filters", selectedValues: "selectedValues" }, outputs: { selectChange: "selectChange" }, viewQueries: [{ propertyName: "source", first: true, predicate: CmatTransferPickerSourceComponent, descendants: true, static: true }], exportAs: ["cmatTransferPicker"], ngImport: i0, template: "<cmat-transfer-picker-source></cmat-transfer-picker-source>\r\n<div class=\"cmat-transfer-picker-operation flex flex-col flex-nowrap gap-2 mx-2\">\r\n <button type=\"button\" class=\"pl-2\" mat-raised-button color=\"primary\" (click)=\"pick()\">\r\n \u9009\u62E9<mat-icon svgIcon=\"mat_outline:chevron_right\"></mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"pl-2\" mat-raised-button color=\"primary\" (click)=\"reset()\">\r\n <mat-icon svgIcon=\"mat_outline:chevron_left\"></mat-icon>\u91CD\u7F6E\r\n </button>\r\n</div>\r\n<cmat-transfer-picker-target [selectedList]=\"selectedList\" (clearItemChange)=\"onClearItemChange($event)\">\r\n</cmat-transfer-picker-target>", styles: ["cmat-transfer-picker{height:100%;overflow:hidden;padding:1rem;display:flex;flex-wrap:nowrap;justify-items:center;align-items:center;gap:.5rem}cmat-transfer-picker cmat-transfer-picker-source,cmat-transfer-picker cmat-transfer-picker-target{height:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3$1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5$1.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: CmatTransferPickerSourceComponent, selector: "cmat-transfer-picker-source", exportAs: ["cmatTransferPickerSource"] }, { kind: "component", type: CmatTransferPickerTargetComponent, selector: "cmat-transfer-picker-target", inputs: ["selectedList"], outputs: ["clearItemChange"], exportAs: ["cmatTransferPickerTarget"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
555
555
|
}
|
|
556
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
556
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTransferPickerComponent, decorators: [{
|
|
557
557
|
type: Component,
|
|
558
558
|
args: [{ selector: 'cmat-transfer-picker', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatTransferPicker', imports: [MatIconModule, MatButtonModule, CmatTransferPickerSourceComponent, CmatTransferPickerTargetComponent], template: "<cmat-transfer-picker-source></cmat-transfer-picker-source>\r\n<div class=\"cmat-transfer-picker-operation flex flex-col flex-nowrap gap-2 mx-2\">\r\n <button type=\"button\" class=\"pl-2\" mat-raised-button color=\"primary\" (click)=\"pick()\">\r\n \u9009\u62E9<mat-icon svgIcon=\"mat_outline:chevron_right\"></mat-icon>\r\n </button>\r\n <button type=\"button\" class=\"pl-2\" mat-raised-button color=\"primary\" (click)=\"reset()\">\r\n <mat-icon svgIcon=\"mat_outline:chevron_left\"></mat-icon>\u91CD\u7F6E\r\n </button>\r\n</div>\r\n<cmat-transfer-picker-target [selectedList]=\"selectedList\" (clearItemChange)=\"onClearItemChange($event)\">\r\n</cmat-transfer-picker-target>", styles: ["cmat-transfer-picker{height:100%;overflow:hidden;padding:1rem;display:flex;flex-wrap:nowrap;justify-items:center;align-items:center;gap:.5rem}cmat-transfer-picker cmat-transfer-picker-source,cmat-transfer-picker cmat-transfer-picker-target{height:100%}\n"] }]
|
|
559
559
|
}], ctorParameters: () => [{ type: CmatTransferPickerService }, { type: i0.ChangeDetectorRef }], propDecorators: { title: [{
|
|
@@ -11,10 +11,10 @@ import { MatTableDataSource, MatTableModule } from '@angular/material/table';
|
|
|
11
11
|
import { Subject } from 'rxjs';
|
|
12
12
|
|
|
13
13
|
class CmatTreeTableColumnDirective {
|
|
14
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
15
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTreeTableColumnDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
15
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.1.1", type: CmatTreeTableColumnDirective, isStandalone: true, selector: "ng-template[cmatTreeTableColumn]", ngImport: i0 }); }
|
|
16
16
|
}
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTreeTableColumnDirective, decorators: [{
|
|
18
18
|
type: Directive,
|
|
19
19
|
args: [{
|
|
20
20
|
selector: 'ng-template[cmatTreeTableColumn]',
|
|
@@ -88,10 +88,10 @@ class CmatTreeTableComponent {
|
|
|
88
88
|
}
|
|
89
89
|
return flattenedNodes;
|
|
90
90
|
}
|
|
91
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
92
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.
|
|
91
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTreeTableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
92
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: CmatTreeTableComponent, isStandalone: true, selector: "cmat-treetable", inputs: { data: "data", verticalSeparator: "verticalSeparator", initExpand: "initExpand", tableClass: "tableClass", showControlColumn: "showControlColumn" }, outputs: { nodeClicked: "nodeClicked" }, queries: [{ propertyName: "customColumnTpl", first: true, predicate: CmatTreeTableColumnDirective, descendants: true, read: TemplateRef }], exportAs: ["cmatTreeTable"], usesOnChanges: true, ngImport: i0, template: "<table mat-table class=\"normal-mobile-table w-full bg-transparent\" [dataSource]=\"dataSource\" [ngClass]=\"tableClass\">\r\n @for (column of getDisplayedColumns(); track $index) {\r\n @if(column==='operate'){\r\n <ng-container matColumnDef=\"{{column}}\">\r\n <th *matHeaderCellDef mat-header-cell class=\"text-center\"\r\n [ngClass]=\"{'vertical-separator': verticalSeparator&&!$first}\"> \u64CD\u4F5C </th>\r\n <td *matCellDef=\"let element\" mat-cell [ngClass]=\"{'vertical-separator': verticalSeparator&&!$first}\">\r\n <ng-container\r\n *ngTemplateOutlet=\"customColumnTpl ? customColumnTpl : columnTpl; context: {$implicit: element}\"></ng-container>\r\n </td>\r\n </ng-container>\r\n }@else {\r\n <ng-container matColumnDef=\"{{column}}\">\r\n <th *matHeaderCellDef mat-header-cell [ngClass]=\"{'vertical-separator': verticalSeparator&&!$first}\">\r\n {{column}}\r\n </th>\r\n <td *matCellDef=\"let element\" mat-cell [ngClass]=\"{'vertical-separator': verticalSeparator&&!$first}\">\r\n @if($first){\r\n <div class=\"value-cell\">\r\n <div [innerHTML]=\"formatIndentation(element)\"></div>\r\n <button mat-icon-button [ngStyle]=\"{'visibility': element.children?.length>0 ? 'visible' : 'hidden'}\"\r\n (click)=\"onNodeClick(element)\">\r\n <mat-icon [svgIcon]=\"element.isExpanded? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <div>{{element[column]}}</div>\r\n </div>\r\n }@else {\r\n <div>\r\n {{element[column]}}\r\n </div>\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n }\r\n\r\n <tr *matHeaderRowDef=\"getDisplayedColumns()\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: getDisplayedColumns();\" mat-row class='group'></tr>\r\n</table>\r\n\r\n<ng-template #columnTpl>\r\n <div>\u8BF7\u5B9E\u73B0\u81EA\u5B9A\u4E49\u6A21\u677F</div>\r\n</ng-template>", styles: ["cmat-treetable .value-cell{display:flex;align-items:center}cmat-treetable .vertical-separator{border-left:1px solid var(--cmat-divider)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatTableModule }, { kind: "component", type: i2.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i2.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i2.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i2.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i2.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i2.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i2.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i2.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i2.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i2.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
93
93
|
}
|
|
94
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatTreeTableComponent, decorators: [{
|
|
95
95
|
type: Component,
|
|
96
96
|
args: [{ selector: 'cmat-treetable', imports: [CommonModule, MatTableModule, MatIconModule, MatButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'cmatTreeTable', template: "<table mat-table class=\"normal-mobile-table w-full bg-transparent\" [dataSource]=\"dataSource\" [ngClass]=\"tableClass\">\r\n @for (column of getDisplayedColumns(); track $index) {\r\n @if(column==='operate'){\r\n <ng-container matColumnDef=\"{{column}}\">\r\n <th *matHeaderCellDef mat-header-cell class=\"text-center\"\r\n [ngClass]=\"{'vertical-separator': verticalSeparator&&!$first}\"> \u64CD\u4F5C </th>\r\n <td *matCellDef=\"let element\" mat-cell [ngClass]=\"{'vertical-separator': verticalSeparator&&!$first}\">\r\n <ng-container\r\n *ngTemplateOutlet=\"customColumnTpl ? customColumnTpl : columnTpl; context: {$implicit: element}\"></ng-container>\r\n </td>\r\n </ng-container>\r\n }@else {\r\n <ng-container matColumnDef=\"{{column}}\">\r\n <th *matHeaderCellDef mat-header-cell [ngClass]=\"{'vertical-separator': verticalSeparator&&!$first}\">\r\n {{column}}\r\n </th>\r\n <td *matCellDef=\"let element\" mat-cell [ngClass]=\"{'vertical-separator': verticalSeparator&&!$first}\">\r\n @if($first){\r\n <div class=\"value-cell\">\r\n <div [innerHTML]=\"formatIndentation(element)\"></div>\r\n <button mat-icon-button [ngStyle]=\"{'visibility': element.children?.length>0 ? 'visible' : 'hidden'}\"\r\n (click)=\"onNodeClick(element)\">\r\n <mat-icon [svgIcon]=\"element.isExpanded? 'mat_outline:expand_more' : 'mat_outline:chevron_right'\">\r\n </mat-icon>\r\n </button>\r\n\r\n <div>{{element[column]}}</div>\r\n </div>\r\n }@else {\r\n <div>\r\n {{element[column]}}\r\n </div>\r\n }\r\n </td>\r\n </ng-container>\r\n }\r\n }\r\n\r\n <tr *matHeaderRowDef=\"getDisplayedColumns()\" mat-header-row></tr>\r\n <tr *matRowDef=\"let row; columns: getDisplayedColumns();\" mat-row class='group'></tr>\r\n</table>\r\n\r\n<ng-template #columnTpl>\r\n <div>\u8BF7\u5B9E\u73B0\u81EA\u5B9A\u4E49\u6A21\u677F</div>\r\n</ng-template>", styles: ["cmat-treetable .value-cell{display:flex;align-items:center}cmat-treetable .vertical-separator{border-left:1px solid var(--cmat-divider)}\n"] }]
|
|
97
97
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { data: [{
|
|
@@ -95,10 +95,10 @@ class CmatFilesUtilService {
|
|
|
95
95
|
tap((res) => res), catchError(err => CmatUtilsService.handleError(err)));
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
99
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.
|
|
98
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatFilesUtilService, deps: [{ token: i1.HttpClient }, { token: i2.CmatUrlStateConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
99
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatFilesUtilService, providedIn: 'root' }); }
|
|
100
100
|
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatFilesUtilService, decorators: [{
|
|
102
102
|
type: Injectable,
|
|
103
103
|
args: [{
|
|
104
104
|
providedIn: 'root'
|
|
@@ -180,10 +180,10 @@ class CmatUploadComponent {
|
|
|
180
180
|
remove() {
|
|
181
181
|
this.removeEvent.emit(this);
|
|
182
182
|
}
|
|
183
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
184
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.
|
|
183
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatUploadComponent, deps: [{ token: CmatFilesUtilService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
184
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: CmatUploadComponent, isStandalone: true, selector: "cmat-upload", inputs: { fileAlias: "fileAlias", filePath: "filePath", fileCategory: "fileCategory", editMode: "editMode", autoUpload: "autoUpload", id: "id", file: "file" }, outputs: { removeEvent: "removeEvent", uploadEvent: "uploadEvent" }, exportAs: ["cmatUpload"], ngImport: i0, template: "<div class=\"flex flex-col\">\r\n <div class=\"flex flex-row items-center\">\r\n <span class=\"flex items-center px-1\">\r\n <mat-icon class=\"icon-size-6 text-hint\"\r\n [svgIcon]=\"fileType\"></mat-icon>\r\n </span>\r\n <span class=\"text-sm flex flex-auto whitespace-nowrap overflow-x-hidden text-ellipsis\"\r\n matTooltip=\"{{file.name}}\">{{file.name}}({{file.size | cmatBytes}})</span>\r\n <span class=\"space-x-1 print:hidden\">\r\n @if(id===null){\r\n <button mat-icon-button color=\"primary\" class=\"w-8 min-h-8 h-8 max-w-8\" [ngClass]=\"{'disabled' : isUploading}\"\r\n (click)=\"upload()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n </button>\r\n }\r\n\r\n @if(id!==null){\r\n <button mat-icon-button color=\"primary\" class=\"w-8 min-h-8 h-8 max-w-8\" (click)=\"download()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_outline:file_download'\"></mat-icon>\r\n </button>\r\n }\r\n\r\n @if(editMode){\r\n <button mat-icon-button color=\"warn\" class=\"w-8 min-h-8 h-8 max-w-8\" (click)=\"remove()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon>\r\n </button>\r\n }\r\n </span>\r\n </div>\r\n @if(id===null){\r\n <mat-progress-bar [value]=\"progressPercentage\"></mat-progress-bar>\r\n <div class=\"text-sm block whitespace-nowrap overflow-x-hidden text-ellipsis\">\r\n <span>{{progressPercentage}}%</span><span> {{loaded | cmatBytes}} of {{total | cmatBytes}}</span>\r\n </div>\r\n }\r\n</div>", dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i4$1.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i5.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "pipe", type: CmatBytesPipe, name: "cmatBytes" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
185
185
|
}
|
|
186
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
186
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatUploadComponent, decorators: [{
|
|
187
187
|
type: Component,
|
|
188
188
|
args: [{ selector: 'cmat-upload', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatUpload', imports: [MatButtonModule, MatIconModule, MatProgressBarModule, MatTooltipModule, CmatBytesPipe, NgClass], template: "<div class=\"flex flex-col\">\r\n <div class=\"flex flex-row items-center\">\r\n <span class=\"flex items-center px-1\">\r\n <mat-icon class=\"icon-size-6 text-hint\"\r\n [svgIcon]=\"fileType\"></mat-icon>\r\n </span>\r\n <span class=\"text-sm flex flex-auto whitespace-nowrap overflow-x-hidden text-ellipsis\"\r\n matTooltip=\"{{file.name}}\">{{file.name}}({{file.size | cmatBytes}})</span>\r\n <span class=\"space-x-1 print:hidden\">\r\n @if(id===null){\r\n <button mat-icon-button color=\"primary\" class=\"w-8 min-h-8 h-8 max-w-8\" [ngClass]=\"{'disabled' : isUploading}\"\r\n (click)=\"upload()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n </button>\r\n }\r\n\r\n @if(id!==null){\r\n <button mat-icon-button color=\"primary\" class=\"w-8 min-h-8 h-8 max-w-8\" (click)=\"download()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'mat_outline:file_download'\"></mat-icon>\r\n </button>\r\n }\r\n\r\n @if(editMode){\r\n <button mat-icon-button color=\"warn\" class=\"w-8 min-h-8 h-8 max-w-8\" (click)=\"remove()\">\r\n <mat-icon class=\"icon-size-5\" [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon>\r\n </button>\r\n }\r\n </span>\r\n </div>\r\n @if(id===null){\r\n <mat-progress-bar [value]=\"progressPercentage\"></mat-progress-bar>\r\n <div class=\"text-sm block whitespace-nowrap overflow-x-hidden text-ellipsis\">\r\n <span>{{progressPercentage}}%</span><span> {{loaded | cmatBytes}} of {{total | cmatBytes}}</span>\r\n </div>\r\n }\r\n</div>" }]
|
|
189
189
|
}], ctorParameters: () => [{ type: CmatFilesUtilService }, { type: i0.ChangeDetectorRef }], propDecorators: { fileAlias: [{
|
|
@@ -305,10 +305,10 @@ class CmatUploadQueueComponent {
|
|
|
305
305
|
getData() {
|
|
306
306
|
return Array.isArray(this.filesData) ? this.filesData : [];
|
|
307
307
|
}
|
|
308
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.
|
|
309
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.
|
|
308
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatUploadQueueComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.CmatMediaWatcherService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
309
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.1", type: CmatUploadQueueComponent, isStandalone: true, selector: "cmat-upload-queue", inputs: { fileAlias: "fileAlias", filePath: "filePath", fileCategory: "fileCategory", required: "required", autoUpload: "autoUpload", multiple: "multiple", accept: "accept", title: "title", editMode: "editMode", filesData: "filesData" }, outputs: { outputRemoveIdEvent: "outputRemoveIdEvent", outputUploadIdEvent: "outputUploadIdEvent", outputFilesDataEvent: "outputFilesDataEvent" }, host: { listeners: { "drop": "onDrop($event)", "dragover": "onDropOver($event)" } }, viewQueries: [{ propertyName: "fileUploads", predicate: i0.forwardRef(() => CmatUploadComponent), descendants: true }], exportAs: ["cmatUploadQueue"], ngImport: i0, template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <legend class=\"text-lg\">\r\n {{title}}\r\n @if(required){\r\n <span>*</span>\r\n }\r\n </legend>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <input type=\"file\" class=\"hidden\" [id]=\"id\" [multiple]=\"multiple\" [accept]=\"accept\" />\r\n\r\n @if(editMode){\r\n <mat-card-actions class=\"space-x-1 print:hidden\">\r\n @if(!isHandSet){\r\n <button mat-raised-button color=\"primary\" (click)=\"choose()\">\r\n @if(autoUpload){\r\n <mat-icon [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n }@else {\r\n <mat-icon [svgIcon]=\"'mat_outline:add_box'\"></mat-icon>\r\n }\r\n <span class=\"ml-2\">\u9009\u62E9</span>\r\n </button>\r\n @if(getData().length > 0&&multiple){\r\n @if(!autoUpload){\r\n <button mat-raised-button color=\"accent\" (click)=\"uploadAll()\"><mat-icon\r\n [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon><span class=\"ml-2\">\u4E0A\u4F20\u5168\u90E8</span></button>\r\n }\r\n\r\n <button mat-raised-button color=\"warn\" (click)=\"removeAll()\"><mat-icon\r\n [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon><span class=\"ml-2\">\u5220\u9664\u5168\u90E8</span></button>\r\n }\r\n }@else {\r\n <button mat-icon-button color=\"primary\" (click)=\"choose()\">\r\n @if(autoUpload){\r\n <mat-icon [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n }@else {\r\n <mat-icon [svgIcon]=\"'mat_outline:add_box'\"></mat-icon>\r\n }\r\n </button>\r\n\r\n @if(getData().length > 0&&multiple){\r\n @if(!autoUpload){\r\n <button mat-icon-button color=\"accent\" (click)=\"uploadAll()\"><mat-icon\r\n [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon></button>\r\n }\r\n\r\n <button mat-icon-button color=\"warn\" (click)=\"removeAll()\"><mat-icon\r\n [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon></button>\r\n }\r\n }\r\n </mat-card-actions>\r\n }\r\n\r\n <mat-card-content>\r\n <mat-list class=\"border-t\">\r\n @for (file of getData(); track $index) {\r\n <mat-list-item class=\"cmat-upload-file-item h-full\">\r\n <cmat-upload class=\"my-2\" [fileAlias]=\"fileAlias\" [filePath]=\"filePath\" [fileCategory]=\"fileCategory\"\r\n [autoUpload]=\"autoUpload\" [editMode]=\"editMode\" [file]=\"file\" [id]=\"file.id||null\"\r\n (removeEvent)=\"remove($event)\" (uploadEvent)=\"upload($event)\"></cmat-upload>\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n </mat-card-content>\r\n</mat-card>", dependencies: [{ kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2$1.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i2$1.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i2$1.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i2$1.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i3$1.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i3$1.MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: CmatUploadComponent, selector: "cmat-upload", inputs: ["fileAlias", "filePath", "fileCategory", "editMode", "autoUpload", "id", "file"], outputs: ["removeEvent", "uploadEvent"], exportAs: ["cmatUpload"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
310
310
|
}
|
|
311
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.
|
|
311
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: CmatUploadQueueComponent, decorators: [{
|
|
312
312
|
type: Component,
|
|
313
313
|
args: [{ selector: 'cmat-upload-queue', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'cmatUploadQueue', imports: [MatCardModule, MatListModule, MatButtonModule, MatIconModule, CmatUploadComponent], template: "<mat-card>\r\n <mat-card-header>\r\n <mat-card-title>\r\n <legend class=\"text-lg\">\r\n {{title}}\r\n @if(required){\r\n <span>*</span>\r\n }\r\n </legend>\r\n </mat-card-title>\r\n </mat-card-header>\r\n <input type=\"file\" class=\"hidden\" [id]=\"id\" [multiple]=\"multiple\" [accept]=\"accept\" />\r\n\r\n @if(editMode){\r\n <mat-card-actions class=\"space-x-1 print:hidden\">\r\n @if(!isHandSet){\r\n <button mat-raised-button color=\"primary\" (click)=\"choose()\">\r\n @if(autoUpload){\r\n <mat-icon [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n }@else {\r\n <mat-icon [svgIcon]=\"'mat_outline:add_box'\"></mat-icon>\r\n }\r\n <span class=\"ml-2\">\u9009\u62E9</span>\r\n </button>\r\n @if(getData().length > 0&&multiple){\r\n @if(!autoUpload){\r\n <button mat-raised-button color=\"accent\" (click)=\"uploadAll()\"><mat-icon\r\n [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon><span class=\"ml-2\">\u4E0A\u4F20\u5168\u90E8</span></button>\r\n }\r\n\r\n <button mat-raised-button color=\"warn\" (click)=\"removeAll()\"><mat-icon\r\n [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon><span class=\"ml-2\">\u5220\u9664\u5168\u90E8</span></button>\r\n }\r\n }@else {\r\n <button mat-icon-button color=\"primary\" (click)=\"choose()\">\r\n @if(autoUpload){\r\n <mat-icon [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon>\r\n }@else {\r\n <mat-icon [svgIcon]=\"'mat_outline:add_box'\"></mat-icon>\r\n }\r\n </button>\r\n\r\n @if(getData().length > 0&&multiple){\r\n @if(!autoUpload){\r\n <button mat-icon-button color=\"accent\" (click)=\"uploadAll()\"><mat-icon\r\n [svgIcon]=\"'mat_outline:file_upload'\"></mat-icon></button>\r\n }\r\n\r\n <button mat-icon-button color=\"warn\" (click)=\"removeAll()\"><mat-icon\r\n [svgIcon]=\"'heroicons_solid:trash'\"></mat-icon></button>\r\n }\r\n }\r\n </mat-card-actions>\r\n }\r\n\r\n <mat-card-content>\r\n <mat-list class=\"border-t\">\r\n @for (file of getData(); track $index) {\r\n <mat-list-item class=\"cmat-upload-file-item h-full\">\r\n <cmat-upload class=\"my-2\" [fileAlias]=\"fileAlias\" [filePath]=\"filePath\" [fileCategory]=\"fileCategory\"\r\n [autoUpload]=\"autoUpload\" [editMode]=\"editMode\" [file]=\"file\" [id]=\"file.id||null\"\r\n (removeEvent)=\"remove($event)\" (uploadEvent)=\"upload($event)\"></cmat-upload>\r\n </mat-list-item>\r\n }\r\n </mat-list>\r\n </mat-card-content>\r\n</mat-card>" }]
|
|
314
314
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1$1.CmatMediaWatcherService }, { type: i0.ElementRef }], propDecorators: { fileUploads: [{
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { Node, Markup, ObjectExt, Graph, NodeView } from '@antv/x6';
|
|
2
|
+
import { ApplicationRef, TemplateRef, ViewContainerRef, Renderer2, createComponent } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
/* eslint-disable no-redeclare */
|
|
5
|
+
/* eslint-disable @typescript-eslint/no-namespace */
|
|
6
|
+
class AngularShape extends Node {
|
|
7
|
+
}
|
|
8
|
+
(function (AngularShape) {
|
|
9
|
+
function getMarkup(primer) {
|
|
10
|
+
const markup = [];
|
|
11
|
+
const content = Markup.getForeignObjectMarkup();
|
|
12
|
+
if (primer) {
|
|
13
|
+
markup.push(...[
|
|
14
|
+
{
|
|
15
|
+
tagName: primer,
|
|
16
|
+
selector: 'body',
|
|
17
|
+
},
|
|
18
|
+
content,
|
|
19
|
+
]);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
markup.push(content);
|
|
23
|
+
}
|
|
24
|
+
return markup;
|
|
25
|
+
}
|
|
26
|
+
AngularShape.config({
|
|
27
|
+
view: 'angular-shape-view',
|
|
28
|
+
markup: getMarkup(),
|
|
29
|
+
attrs: {
|
|
30
|
+
body: {
|
|
31
|
+
fill: 'none',
|
|
32
|
+
stroke: 'none',
|
|
33
|
+
refWidth: '100%',
|
|
34
|
+
refHeight: '100%',
|
|
35
|
+
},
|
|
36
|
+
fo: {
|
|
37
|
+
refWidth: '100%',
|
|
38
|
+
refHeight: '100%',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
propHooks(metadata) {
|
|
42
|
+
if (metadata.markup == null) {
|
|
43
|
+
const primer = metadata.primer;
|
|
44
|
+
if (primer) {
|
|
45
|
+
metadata.markup = getMarkup(primer);
|
|
46
|
+
let attrs = {};
|
|
47
|
+
switch (primer) {
|
|
48
|
+
case 'circle':
|
|
49
|
+
attrs = {
|
|
50
|
+
refCx: '50%',
|
|
51
|
+
refCy: '50%',
|
|
52
|
+
refR: '50%',
|
|
53
|
+
};
|
|
54
|
+
break;
|
|
55
|
+
case 'ellipse':
|
|
56
|
+
attrs = {
|
|
57
|
+
refCx: '50%',
|
|
58
|
+
refCy: '50%',
|
|
59
|
+
refRx: '50%',
|
|
60
|
+
refRy: '50%',
|
|
61
|
+
};
|
|
62
|
+
break;
|
|
63
|
+
default:
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
metadata.attrs = ObjectExt.merge({}, {
|
|
67
|
+
body: {
|
|
68
|
+
refWidth: null,
|
|
69
|
+
refHeight: null,
|
|
70
|
+
...attrs,
|
|
71
|
+
},
|
|
72
|
+
}, metadata.attrs ?? {});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return metadata;
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
Node.registry.register('angular-shape', AngularShape, true);
|
|
79
|
+
})(AngularShape || (AngularShape = {}));
|
|
80
|
+
|
|
81
|
+
const registerInfo = new Map();
|
|
82
|
+
function register(config) {
|
|
83
|
+
const { shape, injector, content, ...others } = config;
|
|
84
|
+
registerInfo.set(shape, { injector, content });
|
|
85
|
+
Graph.registerNode(shape, {
|
|
86
|
+
inherit: 'angular-shape',
|
|
87
|
+
...others,
|
|
88
|
+
}, true);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* eslint-disable no-redeclare */
|
|
92
|
+
/* eslint-disable @typescript-eslint/no-namespace */
|
|
93
|
+
class AngularShapeView extends NodeView {
|
|
94
|
+
getNodeContainer() {
|
|
95
|
+
return this.selectors?.foContent;
|
|
96
|
+
}
|
|
97
|
+
onMouseDown(e, x, y) {
|
|
98
|
+
const target = e.target;
|
|
99
|
+
const tagName = target.tagName.toLowerCase();
|
|
100
|
+
if (tagName === 'input') {
|
|
101
|
+
const type = target.getAttribute('type');
|
|
102
|
+
if (type == null || ['text', 'password', 'number', 'email', 'search', 'tel', 'url'].includes(type)) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
super.onMouseDown(e, x, y);
|
|
107
|
+
}
|
|
108
|
+
unmount() {
|
|
109
|
+
this.unmountAngularContent();
|
|
110
|
+
super.unmount();
|
|
111
|
+
return this;
|
|
112
|
+
}
|
|
113
|
+
confirmUpdate(flag) {
|
|
114
|
+
const ret = super.confirmUpdate(flag);
|
|
115
|
+
return this.handleAction(ret, AngularShapeView.action, () => this.renderAngularContent());
|
|
116
|
+
}
|
|
117
|
+
renderAngularContent() {
|
|
118
|
+
this.unmountAngularContent();
|
|
119
|
+
const container = this.getNodeContainer();
|
|
120
|
+
if (container) {
|
|
121
|
+
const node = this.cell;
|
|
122
|
+
const { injector, content } = registerInfo.get(node.shape);
|
|
123
|
+
const applicationRef = injector.get(ApplicationRef);
|
|
124
|
+
const environmentInjector = applicationRef.injector;
|
|
125
|
+
if (content instanceof TemplateRef) {
|
|
126
|
+
const viewContainerRef = injector.get(ViewContainerRef);
|
|
127
|
+
const renderer = injector.get(Renderer2);
|
|
128
|
+
const ngArguments = this.getNgArguments();
|
|
129
|
+
const embeddedViewRef = viewContainerRef.createEmbeddedView(content, { ngArguments });
|
|
130
|
+
embeddedViewRef.rootNodes.forEach(node => renderer.appendChild(container, node));
|
|
131
|
+
embeddedViewRef.detectChanges();
|
|
132
|
+
node.on('change:data', () => this.setInstanceInput(content, embeddedViewRef));
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const componentRef = createComponent(content, { environmentInjector, hostElement: container });
|
|
136
|
+
applicationRef.attachView(componentRef.hostView);
|
|
137
|
+
this.setInstanceInput(content, componentRef);
|
|
138
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
139
|
+
node.on('change:data', () => this.setInstanceInput(content, componentRef));
|
|
140
|
+
node.on('removed', () => componentRef.destroy());
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
unmountAngularContent() {
|
|
145
|
+
const container = this.getNodeContainer();
|
|
146
|
+
container.innerHTML = '';
|
|
147
|
+
return container;
|
|
148
|
+
}
|
|
149
|
+
getNgArguments() {
|
|
150
|
+
const input = this.cell.data?.ngArguments || {};
|
|
151
|
+
return input;
|
|
152
|
+
}
|
|
153
|
+
/** 当执行 node.setData() 时需要对实例设置新的输入值 */
|
|
154
|
+
setInstanceInput(content, ref) {
|
|
155
|
+
const ngArguments = this.getNgArguments();
|
|
156
|
+
if (content instanceof TemplateRef) {
|
|
157
|
+
const embeddedViewRef = ref;
|
|
158
|
+
embeddedViewRef.context = { ngArguments };
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
const componentRef = ref;
|
|
162
|
+
Object.keys(ngArguments).forEach(v => componentRef.setInput(v, ngArguments[v]));
|
|
163
|
+
componentRef.changeDetectorRef.detectChanges();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
(function (AngularShapeView) {
|
|
168
|
+
AngularShapeView.action = 'angular';
|
|
169
|
+
AngularShapeView.config({
|
|
170
|
+
bootstrap: [AngularShapeView.action],
|
|
171
|
+
actions: {
|
|
172
|
+
component: AngularShapeView.action,
|
|
173
|
+
},
|
|
174
|
+
});
|
|
175
|
+
NodeView.registry.register('angular-shape-view', AngularShapeView, true);
|
|
176
|
+
})(AngularShapeView || (AngularShapeView = {}));
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Generated bundle index. Do not edit.
|
|
180
|
+
*/
|
|
181
|
+
|
|
182
|
+
export { AngularShape, AngularShapeView, register, registerInfo };
|
|
183
|
+
//# sourceMappingURL=cmat-components-x6-angular-shape.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cmat-components-x6-angular-shape.mjs","sources":["../../../projects/cmat/components/x6-angular-shape/node.ts","../../../projects/cmat/components/x6-angular-shape/registry.ts","../../../projects/cmat/components/x6-angular-shape/view.ts","../../../projects/cmat/components/x6-angular-shape/cmat-components-x6-angular-shape.ts"],"sourcesContent":["/* eslint-disable no-redeclare */\r\n/* eslint-disable @typescript-eslint/no-namespace */\r\nimport { Node, Markup, ObjectExt } from '@antv/x6';\r\n\r\nexport class AngularShape<\r\n Properties extends AngularShape.Properties = AngularShape.Properties,\r\n> extends Node<Properties> { }\r\n\r\nexport namespace AngularShape {\r\n export type Primer = 'rect' | 'circle' | 'path' | 'ellipse' | 'polygon' | 'polyline';\r\n\r\n export interface Properties extends Node.Properties {\r\n primer?: Primer;\r\n }\r\n}\r\n\r\nexport namespace AngularShape {\r\n function getMarkup(primer?: Primer) : Markup.JSONMarkup[]{\r\n const markup: Markup.JSONMarkup[] = [];\r\n const content = Markup.getForeignObjectMarkup();\r\n\r\n if (primer) {\r\n markup.push(\r\n ...[\r\n {\r\n tagName: primer,\r\n selector: 'body',\r\n },\r\n content,\r\n ],\r\n );\r\n } else {\r\n markup.push(content);\r\n }\r\n\r\n return markup;\r\n }\r\n\r\n AngularShape.config<Properties>({\r\n view: 'angular-shape-view',\r\n markup: getMarkup(),\r\n attrs: {\r\n body: {\r\n fill: 'none',\r\n stroke: 'none',\r\n refWidth: '100%',\r\n refHeight: '100%',\r\n },\r\n fo: {\r\n refWidth: '100%',\r\n refHeight: '100%',\r\n },\r\n },\r\n propHooks(metadata: Properties) {\r\n if (metadata.markup == null) {\r\n const primer = metadata.primer;\r\n if (primer) {\r\n metadata.markup = getMarkup(primer);\r\n\r\n let attrs = {};\r\n switch (primer) {\r\n case 'circle':\r\n attrs = {\r\n refCx: '50%',\r\n refCy: '50%',\r\n refR: '50%',\r\n };\r\n break;\r\n case 'ellipse':\r\n attrs = {\r\n refCx: '50%',\r\n refCy: '50%',\r\n refRx: '50%',\r\n refRy: '50%',\r\n };\r\n break;\r\n default:\r\n break;\r\n }\r\n metadata.attrs = ObjectExt.merge(\r\n {},\r\n {\r\n body: {\r\n refWidth: null,\r\n refHeight: null,\r\n ...attrs,\r\n },\r\n },\r\n metadata.attrs ?? {},\r\n );\r\n }\r\n }\r\n return metadata;\r\n },\r\n });\r\n\r\n Node.registry.register('angular-shape', AngularShape, true);\r\n}","import { Injector, TemplateRef, Type } from '@angular/core';\r\nimport { Graph, Node } from '@antv/x6';\r\n\r\nexport type Content = TemplateRef<any> | Type<any>;\r\n\r\nexport type AngularShapeConfig = Node.Properties & {\r\n shape: string;\r\n injector: Injector;\r\n content: Content;\r\n};\r\n\r\nexport const registerInfo = new Map<\r\n string,\r\n {\r\n injector: Injector;\r\n content: Content;\r\n }\r\n>();\r\n\r\nexport function register(config: AngularShapeConfig): void {\r\n const { shape, injector, content, ...others } = config;\r\n \r\n registerInfo.set(shape, { injector, content });\r\n\r\n Graph.registerNode(\r\n shape,\r\n {\r\n inherit: 'angular-shape',\r\n ...others,\r\n },\r\n true,\r\n );\r\n}","/* eslint-disable no-redeclare */\r\n/* eslint-disable @typescript-eslint/no-namespace */\r\nimport { ApplicationRef, ComponentRef, createComponent, EmbeddedViewRef, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { Dom, NodeView } from '@antv/x6';\r\nimport { AngularShape } from './node';\r\nimport { Content, registerInfo } from './registry';\r\n\r\nexport class AngularShapeView extends NodeView<AngularShape> {\r\n getNodeContainer(): HTMLDivElement {\r\n return this.selectors?.foContent as HTMLDivElement;\r\n }\r\n\r\n override onMouseDown(e: Dom.MouseDownEvent, x: number, y: number): void {\r\n const target = e.target as Element;\r\n const tagName = target.tagName.toLowerCase();\r\n if (tagName === 'input') {\r\n const type = target.getAttribute('type');\r\n if (type == null || ['text', 'password', 'number', 'email', 'search', 'tel', 'url'].includes(type)) {\r\n return;\r\n }\r\n }\r\n\r\n super.onMouseDown(e, x, y);\r\n }\r\n\r\n override unmount(): this {\r\n this.unmountAngularContent();\r\n super.unmount();\r\n return this;\r\n }\r\n\r\n override confirmUpdate(flag: number): number {\r\n const ret = super.confirmUpdate(flag);\r\n return this.handleAction(ret, AngularShapeView.action, () => this.renderAngularContent());\r\n }\r\n\r\n protected renderAngularContent(): void {\r\n this.unmountAngularContent();\r\n const container = this.getNodeContainer();\r\n if (container) {\r\n const node = this.cell;\r\n const { injector, content } = registerInfo.get(node.shape)!; \r\n const applicationRef = injector.get(ApplicationRef);\r\n const environmentInjector = applicationRef.injector; \r\n \r\n if (content instanceof TemplateRef) {\r\n const viewContainerRef = injector.get(ViewContainerRef);\r\n const renderer=injector.get(Renderer2);\r\n const ngArguments = this.getNgArguments();\r\n const embeddedViewRef = viewContainerRef.createEmbeddedView(content, { ngArguments });\r\n embeddedViewRef.rootNodes.forEach(node =>renderer.appendChild(container,node));\r\n embeddedViewRef.detectChanges();\r\n node.on('change:data', () => this.setInstanceInput(content, embeddedViewRef));\r\n } else { \r\n const componentRef = createComponent(content, { environmentInjector, hostElement: container });\r\n applicationRef.attachView(componentRef.hostView);\r\n this.setInstanceInput(content, componentRef);\r\n componentRef.changeDetectorRef.detectChanges();\r\n node.on('change:data', () => this.setInstanceInput(content, componentRef));\r\n node.on('removed', () => componentRef.destroy());\r\n }\r\n }\r\n }\r\n\r\n protected unmountAngularContent(): HTMLDivElement {\r\n const container = this.getNodeContainer();\r\n container.innerHTML = '';\r\n return container;\r\n }\r\n\r\n\r\n private getNgArguments(): Record<string, any> {\r\n const input = (this.cell.data?.ngArguments as Record<string, any>) || {};\r\n return input;\r\n }\r\n\r\n /** 当执行 node.setData() 时需要对实例设置新的输入值 */\r\n private setInstanceInput(content: Content, ref: EmbeddedViewRef<any> | ComponentRef<any>): void {\r\n const ngArguments = this.getNgArguments();\r\n if (content instanceof TemplateRef) {\r\n const embeddedViewRef = ref as EmbeddedViewRef<any>;\r\n embeddedViewRef.context = { ngArguments };\r\n } else {\r\n const componentRef = ref as ComponentRef<any>;\r\n Object.keys(ngArguments).forEach(v => componentRef.setInput(v, ngArguments[v]));\r\n componentRef.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n}\r\n\r\nexport namespace AngularShapeView {\r\n export const action = 'angular' as any;\r\n\r\n AngularShapeView.config({\r\n bootstrap: [action],\r\n actions: {\r\n component: action,\r\n },\r\n });\r\n\r\n NodeView.registry.register('angular-shape-view', AngularShapeView, true);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|