@sd-angular/core 0.0.1004 → 0.0.1008
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/autocomplete/sd-angular-core-autocomplete.metadata.json +1 -1
- package/autocomplete/src/lib/autocomplete.component.d.ts +9 -5
- package/bundles/sd-angular-core-api.umd.js +29 -12
- package/bundles/sd-angular-core-api.umd.js.map +1 -1
- package/bundles/sd-angular-core-api.umd.min.js +1 -1
- package/bundles/sd-angular-core-api.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-autocomplete.umd.js +65 -42
- package/bundles/sd-angular-core-autocomplete.umd.js.map +1 -1
- package/bundles/sd-angular-core-autocomplete.umd.min.js +2 -2
- package/bundles/sd-angular-core-autocomplete.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-button.umd.js +29 -12
- package/bundles/sd-angular-core-button.umd.js.map +1 -1
- package/bundles/sd-angular-core-button.umd.min.js +1 -1
- package/bundles/sd-angular-core-button.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-cache.umd.js +29 -12
- package/bundles/sd-angular-core-cache.umd.js.map +1 -1
- package/bundles/sd-angular-core-cache.umd.min.js +2 -2
- package/bundles/sd-angular-core-cache.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-chart.umd.js +29 -12
- package/bundles/sd-angular-core-chart.umd.js.map +1 -1
- package/bundles/sd-angular-core-chart.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-checkbox.umd.js +29 -12
- package/bundles/sd-angular-core-checkbox.umd.js.map +1 -1
- package/bundles/sd-angular-core-checkbox.umd.min.js +1 -1
- package/bundles/sd-angular-core-checkbox.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-chip.umd.js +29 -12
- package/bundles/sd-angular-core-chip.umd.js.map +1 -1
- package/bundles/sd-angular-core-chip.umd.min.js +1 -1
- package/bundles/sd-angular-core-chip.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-comment.umd.js +446 -0
- package/bundles/sd-angular-core-comment.umd.js.map +1 -0
- package/bundles/sd-angular-core-comment.umd.min.js +16 -0
- package/bundles/sd-angular-core-comment.umd.min.js.map +1 -0
- package/bundles/sd-angular-core-common.umd.js +71 -16
- package/bundles/sd-angular-core-common.umd.js.map +1 -1
- package/bundles/sd-angular-core-common.umd.min.js +3 -2
- package/bundles/sd-angular-core-common.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-date-range.umd.js +29 -12
- package/bundles/sd-angular-core-date-range.umd.js.map +1 -1
- package/bundles/sd-angular-core-date-range.umd.min.js +2 -2
- package/bundles/sd-angular-core-date-range.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-date-time.umd.js +29 -12
- package/bundles/sd-angular-core-date-time.umd.js.map +1 -1
- package/bundles/sd-angular-core-date-time.umd.min.js +2 -2
- package/bundles/sd-angular-core-date-time.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-editor.umd.js +29 -12
- package/bundles/sd-angular-core-editor.umd.js.map +1 -1
- package/bundles/sd-angular-core-editor.umd.min.js +1 -1
- package/bundles/sd-angular-core-editor.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-excel.umd.js +29 -12
- package/bundles/sd-angular-core-excel.umd.js.map +1 -1
- package/bundles/sd-angular-core-excel.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-export.umd.js +29 -12
- package/bundles/sd-angular-core-export.umd.js.map +1 -1
- package/bundles/sd-angular-core-export.umd.min.js +1 -1
- package/bundles/sd-angular-core-export.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js +31 -12
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-grid.umd.js +29 -12
- package/bundles/sd-angular-core-grid.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-input-currency.umd.js +29 -12
- package/bundles/sd-angular-core-input-currency.umd.js.map +1 -1
- package/bundles/sd-angular-core-input-currency.umd.min.js +2 -2
- package/bundles/sd-angular-core-input-currency.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-input-dropdown.umd.js +29 -12
- package/bundles/sd-angular-core-input-dropdown.umd.js.map +1 -1
- package/bundles/sd-angular-core-input-dropdown.umd.min.js +1 -1
- package/bundles/sd-angular-core-input-dropdown.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-input-upload-file.umd.js +29 -12
- package/bundles/sd-angular-core-input-upload-file.umd.js.map +1 -1
- package/bundles/sd-angular-core-input-upload-file.umd.min.js +2 -2
- package/bundles/sd-angular-core-input-upload-file.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-input.umd.js +54 -17
- package/bundles/sd-angular-core-input.umd.js.map +1 -1
- package/bundles/sd-angular-core-input.umd.min.js +2 -2
- package/bundles/sd-angular-core-input.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-konva.umd.js +29 -12
- package/bundles/sd-angular-core-konva.umd.js.map +1 -1
- package/bundles/sd-angular-core-konva.umd.min.js +1 -1
- package/bundles/sd-angular-core-konva.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-radio.umd.js +29 -12
- package/bundles/sd-angular-core-radio.umd.js.map +1 -1
- package/bundles/sd-angular-core-radio.umd.min.js +1 -1
- package/bundles/sd-angular-core-radio.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-select-editor.umd.js +29 -12
- package/bundles/sd-angular-core-select-editor.umd.js.map +1 -1
- package/bundles/sd-angular-core-select-editor.umd.min.js +2 -2
- package/bundles/sd-angular-core-select-editor.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-select.umd.js +162 -135
- package/bundles/sd-angular-core-select.umd.js.map +1 -1
- package/bundles/sd-angular-core-select.umd.min.js +2 -2
- package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-setting.umd.js +29 -12
- package/bundles/sd-angular-core-setting.umd.js.map +1 -1
- package/bundles/sd-angular-core-setting.umd.min.js +1 -1
- package/bundles/sd-angular-core-setting.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-side-drawer.umd.js +29 -12
- package/bundles/sd-angular-core-side-drawer.umd.js.map +1 -1
- package/bundles/sd-angular-core-side-drawer.umd.min.js +2 -2
- package/bundles/sd-angular-core-side-drawer.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-switch.umd.js +29 -12
- package/bundles/sd-angular-core-switch.umd.js.map +1 -1
- package/bundles/sd-angular-core-switch.umd.min.js +2 -2
- package/bundles/sd-angular-core-switch.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-tab-router.umd.js +29 -12
- package/bundles/sd-angular-core-tab-router.umd.js.map +1 -1
- package/bundles/sd-angular-core-tab-router.umd.min.js +2 -2
- package/bundles/sd-angular-core-tab-router.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-textarea.umd.js +29 -12
- package/bundles/sd-angular-core-textarea.umd.js.map +1 -1
- package/bundles/sd-angular-core-textarea.umd.min.js +2 -2
- package/bundles/sd-angular-core-textarea.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-time.umd.js +29 -12
- package/bundles/sd-angular-core-time.umd.js.map +1 -1
- package/bundles/sd-angular-core-time.umd.min.js +2 -2
- package/bundles/sd-angular-core-time.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.js +29 -12
- package/bundles/sd-angular-core-upload-excel.umd.js.map +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.min.js +1 -1
- package/bundles/sd-angular-core-upload-excel.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-upload-file.umd.js +29 -12
- package/bundles/sd-angular-core-upload-file.umd.js.map +1 -1
- package/bundles/sd-angular-core-upload-file.umd.min.js +2 -2
- package/bundles/sd-angular-core-upload-file.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-utility.umd.js +29 -12
- package/bundles/sd-angular-core-utility.umd.js.map +1 -1
- package/bundles/sd-angular-core-utility.umd.min.js +1 -1
- package/bundles/sd-angular-core-utility.umd.min.js.map +1 -1
- package/bundles/sd-angular-core.umd.js +33 -16
- package/bundles/sd-angular-core.umd.js.map +1 -1
- package/bundles/sd-angular-core.umd.min.js +1 -1
- package/bundles/sd-angular-core.umd.min.js.map +1 -1
- package/comment/index.d.ts +1 -0
- package/comment/package.json +12 -0
- package/comment/sd-angular-core-comment.d.ts +4 -0
- package/comment/sd-angular-core-comment.metadata.json +1 -0
- package/comment/src/lib/comment.component.d.ts +17 -0
- package/comment/src/lib/comment.model.d.ts +21 -0
- package/comment/src/lib/comment.module.d.ts +2 -0
- package/comment/src/public-api.d.ts +3 -0
- package/common/sd-angular-core-common.metadata.json +1 -1
- package/common/src/lib/common.module.d.ts +2 -0
- package/common/src/lib/directives/view-def.directive.d.ts +5 -0
- package/common/src/public-api.d.ts +2 -0
- package/esm2015/autocomplete/src/lib/autocomplete.component.js +35 -26
- package/esm2015/autocomplete/src/lib/autocomplete.module.js +6 -3
- package/esm2015/comment/index.js +2 -0
- package/esm2015/comment/sd-angular-core-comment.js +5 -0
- package/esm2015/comment/src/lib/comment.component.js +60 -0
- package/esm2015/comment/src/lib/comment.model.js +2 -0
- package/esm2015/comment/src/lib/comment.module.js +37 -0
- package/esm2015/comment/src/public-api.js +7 -0
- package/esm2015/common/src/lib/common.module.js +20 -0
- package/esm2015/common/src/lib/directives/view-def.directive.js +16 -0
- package/esm2015/common/src/public-api.js +3 -1
- package/esm2015/grid-material/src/lib/pipes/selection-disable.pipe.js +2 -1
- package/esm2015/grid-material/src/lib/pipes/selection-visible.pipe.js +2 -1
- package/esm2015/input/src/lib/input.component.js +23 -4
- package/esm2015/input/src/lib/input.module.js +6 -3
- package/esm2015/public-api.js +2 -1
- package/esm2015/select/src/lib/select.component.js +72 -72
- package/esm2015/select/src/lib/select.module.js +6 -3
- package/fesm2015/sd-angular-core-autocomplete.js +37 -27
- package/fesm2015/sd-angular-core-autocomplete.js.map +1 -1
- package/fesm2015/sd-angular-core-comment.js +106 -0
- package/fesm2015/sd-angular-core-comment.js.map +1 -0
- package/fesm2015/sd-angular-core-common.js +35 -1
- package/fesm2015/sd-angular-core-common.js.map +1 -1
- package/fesm2015/sd-angular-core-grid-material.js +2 -0
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-input.js +26 -6
- package/fesm2015/sd-angular-core-input.js.map +1 -1
- package/fesm2015/sd-angular-core-select.js +75 -73
- package/fesm2015/sd-angular-core-select.js.map +1 -1
- package/fesm2015/sd-angular-core.js +1 -0
- package/fesm2015/sd-angular-core.js.map +1 -1
- package/input/sd-angular-core-input.metadata.json +1 -1
- package/input/src/lib/input.component.d.ts +5 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
- package/{sd-angular-core-0.0.1004.tgz → sd-angular-core-0.0.1008.tgz} +0 -0
- package/select/sd-angular-core-select.metadata.json +1 -1
- package/select/src/lib/select.component.d.ts +11 -5
|
@@ -9,7 +9,7 @@ import { v4 } from 'uuid';
|
|
|
9
9
|
import { Subscription } from 'rxjs';
|
|
10
10
|
import { SdUtilityService } from '@sd-angular/core/utility';
|
|
11
11
|
import { MatAutocompleteTrigger, MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
12
|
-
import { SdFormControl } from '@sd-angular/core/common';
|
|
12
|
+
import { SdFormControl, SdViewDefDirective, SdCommonModule } from '@sd-angular/core/common';
|
|
13
13
|
import '@sd-angular/core/typing';
|
|
14
14
|
import { MatIconModule } from '@angular/material/icon';
|
|
15
15
|
import { SdTranslateModule } from '@sd-angular/core/translate';
|
|
@@ -63,6 +63,7 @@ class SdAutocomplete {
|
|
|
63
63
|
this.isRequired = false;
|
|
64
64
|
this.disableErrorMessage = false;
|
|
65
65
|
_subscription.set(this, new Subscription());
|
|
66
|
+
this.isFocused = false;
|
|
66
67
|
_loadItems.set(this, (searchText, items) => __awaiter(this, void 0, void 0, function* () {
|
|
67
68
|
this.loading = true;
|
|
68
69
|
return yield items(searchText).finally(() => this.loading = false);
|
|
@@ -71,6 +72,7 @@ class SdAutocomplete {
|
|
|
71
72
|
}));
|
|
72
73
|
this.onSelect = (item) => {
|
|
73
74
|
if (item) {
|
|
75
|
+
this.selectedItem = item;
|
|
74
76
|
if (typeof (item) === 'string' || typeof (item) === 'number') {
|
|
75
77
|
if (this.formControl.value !== item) {
|
|
76
78
|
this.formControl.setValue(item);
|
|
@@ -89,21 +91,40 @@ class SdAutocomplete {
|
|
|
89
91
|
this.inputControl.setValue('', {
|
|
90
92
|
emitEvent: false
|
|
91
93
|
});
|
|
92
|
-
// this.ref.markForCheck();
|
|
93
|
-
// this.inputControl.setValue('', {
|
|
94
|
-
// emitEvent: false
|
|
95
|
-
// });
|
|
96
94
|
}
|
|
97
95
|
};
|
|
98
96
|
this.onFocus = () => {
|
|
97
|
+
this.isFocused = true;
|
|
99
98
|
this.inputControl.setValue('');
|
|
100
99
|
// this.inputControl.updateValueAndValidity();
|
|
101
100
|
};
|
|
102
101
|
this.onBlur = () => {
|
|
102
|
+
this.isFocused = false;
|
|
103
103
|
this.inputControl.setValue('', {
|
|
104
104
|
emitEvent: false
|
|
105
105
|
});
|
|
106
106
|
};
|
|
107
|
+
this.onClick = () => {
|
|
108
|
+
var _a;
|
|
109
|
+
if ((_a = this.sdView) === null || _a === void 0 ? void 0 : _a.templateRef) {
|
|
110
|
+
if (!this.formControl.disabled && !this.isFocused) {
|
|
111
|
+
this.focus();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
this.blur = () => {
|
|
116
|
+
var _a, _b;
|
|
117
|
+
(_b = (_a = this.input) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.blur();
|
|
118
|
+
// $(this.input.nativeElement).trigger('blur');
|
|
119
|
+
};
|
|
120
|
+
this.focus = () => {
|
|
121
|
+
this.isFocused = true;
|
|
122
|
+
setTimeout(() => {
|
|
123
|
+
var _a, _b;
|
|
124
|
+
(_b = (_a = this.input) === null || _a === void 0 ? void 0 : _a.nativeElement) === null || _b === void 0 ? void 0 : _b.focus();
|
|
125
|
+
// $(this.input.nativeElement).trigger('focus');
|
|
126
|
+
}, 100);
|
|
127
|
+
};
|
|
107
128
|
this.clear = ($event) => {
|
|
108
129
|
var _a;
|
|
109
130
|
$event === null || $event === void 0 ? void 0 : $event.stopPropagation();
|
|
@@ -124,21 +145,6 @@ class SdAutocomplete {
|
|
|
124
145
|
this.inputControl.updateValueAndValidity({ emitEvent: true });
|
|
125
146
|
};
|
|
126
147
|
}
|
|
127
|
-
get isNumber() {
|
|
128
|
-
var _a;
|
|
129
|
-
if (__classPrivateFieldGet(this, _model) || __classPrivateFieldGet(this, _model) === 0) {
|
|
130
|
-
return typeof (__classPrivateFieldGet(this, _model)) === 'number';
|
|
131
|
-
}
|
|
132
|
-
if ((_a = __classPrivateFieldGet(this, _currentItems)) === null || _a === void 0 ? void 0 : _a.length) {
|
|
133
|
-
if (this.valueField) {
|
|
134
|
-
return typeof (__classPrivateFieldGet(this, _currentItems)[0][this.valueField]) === 'number';
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
return typeof (__classPrivateFieldGet(this, _currentItems)[0]) === 'number';
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return false;
|
|
141
|
-
}
|
|
142
148
|
set form(val) {
|
|
143
149
|
if (val) {
|
|
144
150
|
if (val instanceof NgForm) {
|
|
@@ -171,9 +177,11 @@ class SdAutocomplete {
|
|
|
171
177
|
val = (val === '') || val;
|
|
172
178
|
if (val) {
|
|
173
179
|
this.inputControl.disable();
|
|
180
|
+
this.formControl.disable();
|
|
174
181
|
}
|
|
175
182
|
else {
|
|
176
183
|
this.inputControl.enable();
|
|
184
|
+
this.formControl.disable();
|
|
177
185
|
}
|
|
178
186
|
}
|
|
179
187
|
set required(val) {
|
|
@@ -253,9 +261,9 @@ _model = new WeakMap(), _items = new WeakMap(), _currentItems = new WeakMap(), _
|
|
|
253
261
|
SdAutocomplete.decorators = [
|
|
254
262
|
{ type: Component, args: [{
|
|
255
263
|
selector: 'sd-autocomplete',
|
|
256
|
-
template: "<div class=\"d-flex align-items-center\"
|
|
264
|
+
template: "<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n[class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value, selectedItem: selectedItem }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"sd-md\" [ngClass]=\"{'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n [floatLabel]=\"size === 'sm' || formControl.value ? 'always':'auto'\" appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{ label }}</mat-label>\r\n <input [id]=\"id\" #autocompleteTrigger [formControl]=\"inputControl\" [placeholder]=\"controlPlaceHolder | async\"\r\n [ngClass]=\"{'c-selected': formControl?.value}\" [matAutocomplete]=\"auto\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\r\n matInput [autocomplete]=\"id\" autocorrect=\"off\" [errorStateMatcher]=\"matcher\" [required]=\"isRequired\" #input />\r\n <mat-icon *ngIf=\"!loading && formControl?.value && !inputControl.disabled\" class=\"pointer sd-suffix-icon\"\r\n (click)=\"clear($event)\" matSuffix>cancel\r\n </mat-icon>\r\n <mat-icon *ngIf=\"actionIcon && !loading && !formControl?.value && !inputControl.disabled\"\r\n class=\"pointer sd-suffix-icon\" (click)=\"onAction($event)\" matSuffix>{{actionIcon}}\r\n </mat-icon>\r\n <mat-spinner *ngIf=\"loading\" strokeWidth=\"2\" mode=\"indeterminate\" diameter=\"18\" value=\"100\" matSuffix>\r\n </mat-spinner>\r\n <mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"onSelect($event.option.value)\">\r\n <mat-option *ngFor=\"let item of filteredItems | async\" [value]=\"item\" matTooltipPosition=\"above\"\r\n [matTooltip]=\"displayField ? item[displayField] : item\">\r\n <ng-container *ngIf=\"autocompleteDisplayDef?.templateRef\">\r\n <ng-container *ngTemplateOutlet=\"autocompleteDisplayDef.templateRef;context:{item: item}\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!autocompleteDisplayDef?.templateRef\">\r\n {{ displayField ? item[displayField] : item }}\r\n </ng-container>\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"formControl?.errors?.required && !disableErrorMessage\">\r\n {{ \"This field is required\" | sdTranslate }}\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-template>\r\n</div>",
|
|
257
265
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
258
|
-
styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.c-selected::-moz-placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected::placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected:-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.c-selected::-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-moz-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected:-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}"]
|
|
266
|
+
styles: [":host{display:block;padding-top:5px}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.c-selected::-moz-placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected::placeholder{color:#000;opacity:1}:host ::ng-deep .mat-form-field input.c-selected:-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.c-selected::-ms-input-placeholder{color:#000}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-moz-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected:-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field input.mat-input-element:disabled.c-selected::-ms-input-placeholder{color:#4d4d4d}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}"]
|
|
259
267
|
},] }
|
|
260
268
|
];
|
|
261
269
|
SdAutocomplete.ctorParameters = () => [
|
|
@@ -270,8 +278,6 @@ SdAutocomplete.propDecorators = {
|
|
|
270
278
|
valueField: [{ type: Input }],
|
|
271
279
|
displayField: [{ type: Input }],
|
|
272
280
|
placeholder: [{ type: Input }],
|
|
273
|
-
leftLabel: [{ type: Input }],
|
|
274
|
-
labelMinWidth: [{ type: Input }],
|
|
275
281
|
items: [{ type: Input }],
|
|
276
282
|
limit: [{ type: Input }],
|
|
277
283
|
model: [{ type: Input }],
|
|
@@ -282,7 +288,9 @@ SdAutocomplete.propDecorators = {
|
|
|
282
288
|
sdChange: [{ type: Output }],
|
|
283
289
|
disabled: [{ type: Input }],
|
|
284
290
|
required: [{ type: Input }],
|
|
285
|
-
_disableErrorMessage: [{ type: Input, args: ['disableErrorMessage',] }]
|
|
291
|
+
_disableErrorMessage: [{ type: Input, args: ['disableErrorMessage',] }],
|
|
292
|
+
input: [{ type: ViewChild, args: ['input',] }],
|
|
293
|
+
sdView: [{ type: ContentChild, args: [SdViewDefDirective,] }]
|
|
286
294
|
};
|
|
287
295
|
|
|
288
296
|
class SdAutocompleteModule {
|
|
@@ -299,7 +307,8 @@ SdAutocompleteModule.decorators = [
|
|
|
299
307
|
MatAutocompleteModule,
|
|
300
308
|
MatIconModule,
|
|
301
309
|
MatProgressSpinnerModule,
|
|
302
|
-
SdTranslateModule
|
|
310
|
+
SdTranslateModule,
|
|
311
|
+
SdCommonModule
|
|
303
312
|
],
|
|
304
313
|
declarations: [
|
|
305
314
|
SdAutocomplete,
|
|
@@ -307,7 +316,8 @@ SdAutocompleteModule.decorators = [
|
|
|
307
316
|
],
|
|
308
317
|
exports: [
|
|
309
318
|
SdAutocomplete,
|
|
310
|
-
SdAutocompleteDisplayDefDirective
|
|
319
|
+
SdAutocompleteDisplayDefDirective,
|
|
320
|
+
SdCommonModule
|
|
311
321
|
],
|
|
312
322
|
providers: []
|
|
313
323
|
},] }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-autocomplete.js","sources":["../../../../projects/sd-core/autocomplete/src/lib/autocomplete-display-def.directive.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.component.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.module.ts","../../../../projects/sd-core/autocomplete/src/public-api.ts","../../../../projects/sd-core/autocomplete/sd-angular-core-autocomplete.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdAutocompleteDisplayDef]'\r\n})\r\nexport class SdAutocompleteDisplayDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n OnDestroy,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { startWith, switchMap, debounceTime, debounce, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport * as uuid from 'uuid';\r\nimport { FormControl, NgForm, Validators, FormGroupDirective, FormGroup } from '@angular/forms';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\r\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { SdFormControl } from '@sd-angular/core/common';\r\n\r\nclass SdAutocompleteErrotStateMatcher implements ErrorStateMatcher {\r\n constructor(private formControl: FormControl) { }\r\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(this.formControl?.invalid && (this.formControl?.dirty || this.formControl?.touched || isSubmitted));\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'sd-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdAutocomplete implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) autocompleteTrigger: MatAutocompleteTrigger;\r\n id = `I${uuid.v4()}`;\r\n #model: string | number;\r\n #items: any[] | ((searchText: string) => Promise<any[]>) = [];\r\n #currentItems: any[] = [];\r\n #delay = 500; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n #name = uuid.v4();\r\n loading = false;\r\n inputControl = new FormControl();\r\n formControl = new SdFormControl();\r\n matcher = new SdAutocompleteErrotStateMatcher(this.formControl);\r\n get isNumber() {\r\n if (this.#model || this.#model === 0) {\r\n return typeof (this.#model) === 'number';\r\n }\r\n if (this.#currentItems?.length) {\r\n if (this.valueField) {\r\n return typeof (this.#currentItems[0][this.valueField]) === 'number';\r\n } else {\r\n return typeof (this.#currentItems[0]) === 'number';\r\n }\r\n }\r\n return false;\r\n }\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n @Input() label: string;\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() placeholder: string;\r\n @Input() leftLabel: string;\r\n @Input() labelMinWidth: string;\r\n\r\n @Input() set items(items: undefined | any[] | ((searchText?: string) => Promise<any[]>)) {\r\n if (!items) {\r\n this.#items = [];\r\n } else if (Array.isArray(items)) {\r\n this.#items = items.filter(e => e !== null && e !== undefined);\r\n } else {\r\n this.#items = items;\r\n }\r\n this.formControl.updateValueAndValidity();\r\n this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n @Input() limit = 100;\r\n\r\n filteredItems: Observable<any[]>;\r\n controlPlaceHolder: Observable<string | number>;\r\n @Input() set model(value: undefined | number | string) {\r\n this.#model = value;\r\n this.formControl.setValue(value);\r\n }\r\n\r\n @ContentChild(SdAutocompleteDisplayDefDirective) autocompleteDisplayDef: SdAutocompleteDisplayDefDirective;\r\n @Input() actionIcon: string;\r\n @Output() action = new EventEmitter();\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.inputControl.disable();\r\n } else {\r\n this.inputControl.enable();\r\n }\r\n }\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n if (this.isRequired) {\r\n this.formControl.setValidators([Validators.required]);\r\n } else {\r\n this.formControl.clearValidators();\r\n }\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n #subscription = new Subscription();\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private utilityService: SdUtilityService) {\r\n }\r\n\r\n ngOnInit() { \r\n this.#subscription.add(this.formControl.touchedChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.statusChanges.subscribe(() => this.ref.markForCheck()));\r\n this.filteredItems = this.inputControl.valueChanges.pipe(\r\n debounceTime(typeof (this.#items) === 'function' ? this.#delay : 0),\r\n // distinctUntilChanged(), Dùng sẽ gây ra bug khi items changes\r\n switchMap(async () => {\r\n const val = this.inputControl.value || '';\r\n if (typeof (this.#items) === 'function') {\r\n const items = await this.#loadItems(val, this.#items);\r\n this.#currentItems = items.filter((item, index) => index < this.limit);\r\n return this.#currentItems;\r\n }\r\n const { changeAliasLowerCase } = this.utilityService;\r\n this.#currentItems = this.#items.filter(item => {\r\n const value = item[this.valueField];\r\n const display = item[this.displayField];\r\n const searchText = changeAliasLowerCase(val);\r\n return changeAliasLowerCase(value).indexOf(searchText) !== -1 || changeAliasLowerCase(display).indexOf(searchText) !== -1\r\n }).filter((item, index) => index < this.limit);\r\n return this.#currentItems;\r\n })\r\n );\r\n this.controlPlaceHolder = this.formControl.valueChanges.pipe(\r\n startWith(''),\r\n // distinctUntilChanged(), Dùng sẽ gây ra bug khi items changes\r\n switchMap(async () => {\r\n const val = this.formControl.value;\r\n if (val || val === 0) {\r\n let currentItems = [];\r\n const items = this.#items;\r\n if (typeof (items) === 'function') {\r\n currentItems = await this.#loadItems(val, items);\r\n } else {\r\n currentItems = items || [];\r\n }\r\n if (this.valueField && this.displayField) {\r\n const item = currentItems.find(e => e[this.valueField] === val);\r\n return item?.[this.displayField] || val;\r\n } else {\r\n return currentItems.find(e => e === val) || val;\r\n }\r\n } else {\r\n return this.placeholder || this.label || '';\r\n }\r\n }));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n this.#form?.removeControl(this.#name);\r\n }\r\n\r\n #loadItems = async (searchText: string, items: (searchText?: string) => Promise<any[]>) => {\r\n this.loading = true;\r\n return await items(searchText).finally(() => this.loading = false);\r\n // this.ref.detectChanges();\r\n // return this.#previousResults;\r\n }\r\n\r\n onSelect = (item: any) => {\r\n if (item) {\r\n if (typeof (item) === 'string' || typeof (item) === 'number') {\r\n if (this.formControl.value !== item) {\r\n this.formControl.setValue(item);\r\n this.modelChange.emit(item);\r\n this.sdChange.emit(item);\r\n }\r\n } else if (this.valueField && this.displayField) {\r\n const val = item?.[this.valueField] || null;\r\n if (this.formControl.value !== val) {\r\n this.formControl.setValue(val);\r\n this.modelChange.emit(val);\r\n this.sdChange.emit(item);\r\n }\r\n }\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n // this.ref.markForCheck();\r\n // this.inputControl.setValue('', {\r\n // emitEvent: false\r\n // });\r\n }\r\n }\r\n\r\n onFocus = () => {\r\n this.inputControl.setValue('');\r\n // this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n onBlur = () => {\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n this.inputControl?.setValue('');\r\n if (this.#model) {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n }\r\n }\r\n\r\n onAction = ($event: Event) => {\r\n $event?.stopPropagation();\r\n this.autocompleteTrigger?.closePanel();\r\n this.action.emit();\r\n }\r\n\r\n reValidate = () => {\r\n this.inputControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdAutocomplete } from './autocomplete.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport '@sd-angular/core/typing';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n SdTranslateModule\r\n ],\r\n declarations: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective\r\n ],\r\n exports: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdAutocompleteModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/autocomplete.module';\r\nexport * from './lib/autocomplete.component';\r\nexport * from './lib/autocomplete-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-autocomplete.js","sources":["../../../../projects/sd-core/autocomplete/src/lib/autocomplete-display-def.directive.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.component.ts","../../../../projects/sd-core/autocomplete/src/lib/autocomplete.module.ts","../../../../projects/sd-core/autocomplete/src/public-api.ts","../../../../projects/sd-core/autocomplete/sd-angular-core-autocomplete.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdAutocompleteDisplayDef]'\r\n})\r\nexport class SdAutocompleteDisplayDefDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n OnDestroy,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { startWith, switchMap, debounceTime, debounce, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport * as uuid from 'uuid';\r\n// import $ from 'jquery';\r\nimport { FormControl, NgForm, Validators, FormGroupDirective, FormGroup } from '@angular/forms';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\r\nimport { MatAutocompleteTrigger } from '@angular/material/autocomplete';\r\nimport { SdFormControl, SdViewDefDirective } from '@sd-angular/core/common';\r\n\r\nclass SdAutocompleteErrotStateMatcher implements ErrorStateMatcher {\r\n constructor(private formControl: FormControl) { }\r\n isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {\r\n const isSubmitted = form && form.submitted;\r\n return !!(this.formControl?.invalid && (this.formControl?.dirty || this.formControl?.touched || isSubmitted));\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'sd-autocomplete',\r\n templateUrl: './autocomplete.component.html',\r\n styleUrls: ['./autocomplete.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdAutocomplete implements OnInit, OnDestroy, AfterViewInit {\r\n @ViewChild(MatAutocompleteTrigger, { read: MatAutocompleteTrigger }) autocompleteTrigger: MatAutocompleteTrigger;\r\n id = `I${uuid.v4()}`;\r\n #model: string | number;\r\n #items: any[] | ((searchText: string) => Promise<any[]>) = [];\r\n #currentItems: any[] = [];\r\n #delay = 500; // Sau khoảng thời gian delay nếu không có thay đổi thì thì mới bắt đầu thực hiện gọi hàm\r\n #name = uuid.v4();\r\n loading = false;\r\n inputControl = new FormControl();\r\n formControl = new SdFormControl();\r\n matcher = new SdAutocompleteErrotStateMatcher(this.formControl);\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n @Input() label: string;\r\n @Input() valueField: string;\r\n @Input() displayField: string;\r\n @Input() placeholder: string;\r\n\r\n @Input() set items(items: undefined | any[] | ((searchText?: string) => Promise<any[]>)) {\r\n if (!items) {\r\n this.#items = [];\r\n } else if (Array.isArray(items)) {\r\n this.#items = items.filter(e => e !== null && e !== undefined);\r\n } else {\r\n this.#items = items;\r\n }\r\n this.formControl.updateValueAndValidity();\r\n this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n @Input() limit = 100;\r\n\r\n filteredItems: Observable<any[]>;\r\n controlPlaceHolder: Observable<string | number>;\r\n @Input() set model(value: undefined | number | string) {\r\n this.#model = value;\r\n this.formControl.setValue(value);\r\n }\r\n\r\n @ContentChild(SdAutocompleteDisplayDefDirective) autocompleteDisplayDef: SdAutocompleteDisplayDefDirective;\r\n @Input() actionIcon: string;\r\n @Output() action = new EventEmitter();\r\n @Output() modelChange = new EventEmitter();\r\n @Output() sdChange = new EventEmitter();\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.inputControl.disable();\r\n this.formControl.disable();\r\n } else {\r\n this.inputControl.enable();\r\n this.formControl.disable();\r\n }\r\n }\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n if (this.isRequired) {\r\n this.formControl.setValidators([Validators.required]);\r\n } else {\r\n this.formControl.clearValidators();\r\n }\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n #subscription = new Subscription();\r\n @ViewChild('input') input: ElementRef;\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n selectedItem: any;\r\n constructor(\r\n private ref: ChangeDetectorRef,\r\n private utilityService: SdUtilityService) {\r\n }\r\n\r\n ngOnInit() { \r\n this.#subscription.add(this.formControl.touchedChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.statusChanges.subscribe(() => this.ref.markForCheck()));\r\n this.filteredItems = this.inputControl.valueChanges.pipe(\r\n debounceTime(typeof (this.#items) === 'function' ? this.#delay : 0),\r\n // distinctUntilChanged(), Dùng sẽ gây ra bug khi items changes\r\n switchMap(async () => {\r\n const val = this.inputControl.value || '';\r\n if (typeof (this.#items) === 'function') {\r\n const items = await this.#loadItems(val, this.#items);\r\n this.#currentItems = items.filter((item, index) => index < this.limit);\r\n return this.#currentItems;\r\n }\r\n const { changeAliasLowerCase } = this.utilityService;\r\n this.#currentItems = this.#items.filter(item => {\r\n const value = item[this.valueField];\r\n const display = item[this.displayField];\r\n const searchText = changeAliasLowerCase(val);\r\n return changeAliasLowerCase(value).indexOf(searchText) !== -1 || changeAliasLowerCase(display).indexOf(searchText) !== -1\r\n }).filter((item, index) => index < this.limit);\r\n return this.#currentItems;\r\n })\r\n );\r\n this.controlPlaceHolder = this.formControl.valueChanges.pipe(\r\n startWith(''),\r\n // distinctUntilChanged(), Dùng sẽ gây ra bug khi items changes\r\n switchMap(async () => {\r\n const val = this.formControl.value;\r\n if (val || val === 0) {\r\n let currentItems = [];\r\n const items = this.#items;\r\n if (typeof (items) === 'function') {\r\n currentItems = await this.#loadItems(val, items);\r\n } else {\r\n currentItems = items || [];\r\n }\r\n if (this.valueField && this.displayField) {\r\n const item = currentItems.find(e => e[this.valueField] === val);\r\n return item?.[this.displayField] || val;\r\n } else {\r\n return currentItems.find(e => e === val) || val;\r\n }\r\n } else {\r\n return this.placeholder || this.label || '';\r\n }\r\n }));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#subscription.unsubscribe();\r\n this.#form?.removeControl(this.#name);\r\n }\r\n\r\n #loadItems = async (searchText: string, items: (searchText?: string) => Promise<any[]>) => {\r\n this.loading = true;\r\n return await items(searchText).finally(() => this.loading = false);\r\n // this.ref.detectChanges();\r\n // return this.#previousResults;\r\n }\r\n\r\n onSelect = (item: any) => {\r\n if (item) {\r\n this.selectedItem = item;\r\n if (typeof (item) === 'string' || typeof (item) === 'number') {\r\n if (this.formControl.value !== item) {\r\n this.formControl.setValue(item);\r\n this.modelChange.emit(item);\r\n this.sdChange.emit(item);\r\n }\r\n } else if (this.valueField && this.displayField) {\r\n const val = item?.[this.valueField] || null;\r\n if (this.formControl.value !== val) {\r\n this.formControl.setValue(val);\r\n this.modelChange.emit(val);\r\n this.sdChange.emit(item);\r\n }\r\n }\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.inputControl.setValue('');\r\n // this.inputControl.updateValueAndValidity();\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n this.inputControl.setValue('', {\r\n emitEvent: false\r\n });\r\n }\r\n\r\n onClick = () => {\r\n if(this.sdView?.templateRef) {\r\n if(!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n blur = () => {\r\n this.input?.nativeElement?.blur();\r\n // $(this.input.nativeElement).trigger('blur');\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.input?.nativeElement?.focus();\r\n // $(this.input.nativeElement).trigger('focus');\r\n }, 100);\r\n }\r\n\r\n clear = ($event?: any) => {\r\n $event?.stopPropagation();\r\n this.inputControl?.setValue('');\r\n if (this.#model) {\r\n this.formControl.setValue(null);\r\n this.modelChange.emit(null);\r\n this.sdChange.emit(null);\r\n }\r\n }\r\n\r\n onAction = ($event: Event) => {\r\n $event?.stopPropagation();\r\n this.autocompleteTrigger?.closePanel();\r\n this.action.emit();\r\n }\r\n\r\n reValidate = () => {\r\n this.inputControl.updateValueAndValidity({ emitEvent: true });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { SdAutocomplete } from './autocomplete.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport '@sd-angular/core/typing';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { SdAutocompleteDisplayDefDirective } from './autocomplete-display-def.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatInputModule,\r\n MatTooltipModule,\r\n MatFormFieldModule,\r\n MatAutocompleteModule,\r\n MatIconModule,\r\n MatProgressSpinnerModule,\r\n SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective\r\n ],\r\n exports: [\r\n SdAutocomplete,\r\n SdAutocompleteDisplayDefDirective,\r\n SdCommonModule\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdAutocompleteModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/autocomplete.module';\r\nexport * from './lib/autocomplete.component';\r\nexport * from './lib/autocomplete-display-def.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { SdTranslateModule } from '@sd-angular/core/translate';
|
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
+
import { __awaiter, __classPrivateFieldGet } from 'tslib';
|
|
7
|
+
import { BehaviorSubject } from 'rxjs';
|
|
8
|
+
import { map } from 'rxjs/operators';
|
|
9
|
+
import { SdButtonModule } from '@sd-angular/core/button';
|
|
10
|
+
import { SdInputModule } from '@sd-angular/core/input';
|
|
11
|
+
import { SdTextareaModule } from '@sd-angular/core/textarea';
|
|
12
|
+
import { SdUtilityModule } from '@sd-angular/core/utility';
|
|
13
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
14
|
+
|
|
15
|
+
var _items, _send, _load;
|
|
16
|
+
class SdComment {
|
|
17
|
+
constructor() {
|
|
18
|
+
_items.set(this, new BehaviorSubject([]));
|
|
19
|
+
_send.set(this, new BehaviorSubject(''));
|
|
20
|
+
this.onSend = () => {
|
|
21
|
+
var _a, _b;
|
|
22
|
+
if (this.message) {
|
|
23
|
+
(_b = (_a = this.option) === null || _a === void 0 ? void 0 : _a.event) === null || _b === void 0 ? void 0 : _b.onSend(this.message);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
_load.set(this, () => __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const { items } = this.commentOption;
|
|
28
|
+
const results = items();
|
|
29
|
+
if (results instanceof Promise) {
|
|
30
|
+
return yield results;
|
|
31
|
+
}
|
|
32
|
+
return results;
|
|
33
|
+
}));
|
|
34
|
+
this.reload = () => __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
__classPrivateFieldGet(this, _items).next(yield __classPrivateFieldGet(this, _load).call(this));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
set option(option) {
|
|
39
|
+
this.commentOption = option;
|
|
40
|
+
this.reload();
|
|
41
|
+
}
|
|
42
|
+
;
|
|
43
|
+
ngOnInit() {
|
|
44
|
+
this.items = __classPrivateFieldGet(this, _items).pipe(map(items => {
|
|
45
|
+
return items.map(e => {
|
|
46
|
+
var _a;
|
|
47
|
+
return (Object.assign(Object.assign({}, e), { picture: (_a = e.picture) !== null && _a !== void 0 ? _a : `https://ui-avatars.com/api/?size=32&rounded=true&background=random&name=${e.creator}` }));
|
|
48
|
+
});
|
|
49
|
+
}));
|
|
50
|
+
this.count = this.items.pipe(map(items => items.length));
|
|
51
|
+
}
|
|
52
|
+
ngOnDestroy() {
|
|
53
|
+
}
|
|
54
|
+
ngAfterViewInit() {
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
_items = new WeakMap(), _send = new WeakMap(), _load = new WeakMap();
|
|
58
|
+
SdComment.decorators = [
|
|
59
|
+
{ type: Component, args: [{
|
|
60
|
+
selector: 'sd-comment',
|
|
61
|
+
template: "<div class=\"c-container\">\r\n <div class=\"c-header\">\r\n <div class=\"c-title\">{{'Comments' | sdTranslate}} <span>({{count | async}})</span></div>\r\n </div>\r\n <div class=\"c-body\">\r\n <ng-container *ngFor=\"let item of items | async\">\r\n <div class=\"d-flex my-8\">\r\n <div class=\"c-avatar mr-12\">\r\n <img height=\"32\" width=\"32px\" [src]=\"item.picture\">\r\n </div>\r\n <div class=\"c-comment\">\r\n <div class=\"c-info mb-4\">\r\n {{'By' | sdTranslate}}\r\n <span class=\"c-creator ml-2\">\r\n {{item.creator}}\r\n </span>\r\n <ng-container *ngIf=\"item.createdDate\">\r\n <span class=\"mx-4\">\u2022</span>\r\n <span [matTooltip]=\"item.createdDate | date:'dd/MM/yyyy HH:mm'\">{{item.createdDate | sdTimeDifferent:'dd/MM/yyyy HH:mm':'hour' | async}}</span>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-content\" [innerHtml]=\"item.content\">\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"c-footer p-16\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <sd-input [(model)]=\"message\" disableErrorMessage></sd-input>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col-12 mt-16\">\r\n <sd-button class=\"float-right\" title=\"G\u1EEDi\" (action)=\"onSend()\" [disabled]=\"!message\" color=\"primary\" type=\"fill\" size=\"sm\">\r\n </sd-button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>",
|
|
62
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
63
|
+
styles: [".c-container{display:flex;flex-direction:column;height:100%}.c-container .c-header{align-items:center;background-color:#fff;display:flex;height:40px;padding:0 16px}.c-container .c-header .c-title{font-weight:500}.c-container .c-body{background:#f8f9fa;flex:1;overflow-y:hidden;padding:16px}.c-container .c-body:hover{overflow-y:auto}.c-container .c-body .c-comment{background:#fff;border:1px solid #f2f2f2;border-radius:4px;padding:12px 16px}.c-container .c-body .c-comment .c-info{color:#757575}.c-container .c-body .c-comment .c-info .c-creator{color:#000;font-weight:500}.c-container .c-footer{min-height:120px}"]
|
|
64
|
+
},] }
|
|
65
|
+
];
|
|
66
|
+
SdComment.ctorParameters = () => [];
|
|
67
|
+
SdComment.propDecorators = {
|
|
68
|
+
option: [{ type: Input }]
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
class SdCommentModule {
|
|
72
|
+
}
|
|
73
|
+
SdCommentModule.decorators = [
|
|
74
|
+
{ type: NgModule, args: [{
|
|
75
|
+
imports: [
|
|
76
|
+
CommonModule,
|
|
77
|
+
MatButtonModule,
|
|
78
|
+
MatIconModule,
|
|
79
|
+
MatTooltipModule,
|
|
80
|
+
SdTranslateModule,
|
|
81
|
+
SdButtonModule,
|
|
82
|
+
SdInputModule,
|
|
83
|
+
SdTextareaModule,
|
|
84
|
+
SdUtilityModule,
|
|
85
|
+
SdTranslateModule
|
|
86
|
+
],
|
|
87
|
+
declarations: [
|
|
88
|
+
SdComment
|
|
89
|
+
],
|
|
90
|
+
exports: [
|
|
91
|
+
SdComment
|
|
92
|
+
],
|
|
93
|
+
providers: []
|
|
94
|
+
},] }
|
|
95
|
+
];
|
|
96
|
+
|
|
97
|
+
/*
|
|
98
|
+
* Public API Surface of superdev-angular-core
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Generated bundle index. Do not edit.
|
|
103
|
+
*/
|
|
104
|
+
|
|
105
|
+
export { SdComment, SdCommentModule };
|
|
106
|
+
//# sourceMappingURL=sd-angular-core-comment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sd-angular-core-comment.js","sources":["../../../../projects/sd-core/comment/src/lib/comment.component.ts","../../../../projects/sd-core/comment/src/lib/comment.module.ts","../../../../projects/sd-core/comment/src/public-api.ts","../../../../projects/sd-core/comment/sd-angular-core-comment.ts"],"sourcesContent":["import {\r\n Component,\r\n AfterViewInit,\r\n OnInit,\r\n OnDestroy,\r\n Input,\r\n ChangeDetectionStrategy\r\n} from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, switchMap } from 'rxjs/operators';\r\nimport { Comment, SdCommentOption } from './comment.model';\r\n@Component({\r\n selector: 'sd-comment',\r\n templateUrl: './comment.component.html',\r\n styleUrls: ['./comment.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdComment implements OnInit, AfterViewInit, OnDestroy {\r\n #items = new BehaviorSubject<Comment[]>([]);\r\n #send = new BehaviorSubject<string>('');\r\n commentOption: SdCommentOption;\r\n @Input() set option(option: SdCommentOption) {\r\n this.commentOption = option;\r\n this.reload();\r\n };\r\n\r\n items: Observable<Comment[]>;\r\n count: Observable<number>;\r\n message: string;\r\n constructor() {\r\n }\r\n ngOnInit(): void {\r\n this.items = this.#items.pipe(map(items => {\r\n return items.map(e => ({\r\n ...e,\r\n picture: e.picture ?? `https://ui-avatars.com/api/?size=32&rounded=true&background=random&name=${e.creator}`\r\n }))\r\n }));\r\n this.count = this.items.pipe(map(items => items.length));\r\n }\r\n ngOnDestroy(): void {\r\n }\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n onSend = () => {\r\n if (this.message) {\r\n this.option?.event?.onSend(this.message);\r\n }\r\n }\r\n\r\n #load = async () => {\r\n const { items } = this.commentOption;\r\n const results = items();\r\n if (results instanceof Promise) {\r\n return await results;\r\n }\r\n return results;\r\n }\r\n\r\n reload = async () => {\r\n this.#items.next(await this.#load());\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { SdComment } from './comment.component';\r\nimport { SdButtonModule } from '@sd-angular/core/button';\r\nimport { SdInputModule } from '@sd-angular/core/input';\r\nimport { SdTextareaModule } from '@sd-angular/core/textarea';\r\nimport { SdUtilityModule } from '@sd-angular/core/utility';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n MatButtonModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdTranslateModule,\r\n SdButtonModule,\r\n SdInputModule,\r\n SdTextareaModule,\r\n SdUtilityModule,\r\n SdTranslateModule\r\n ],\r\n declarations: [\r\n SdComment\r\n ],\r\n exports: [\r\n SdComment\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdCommentModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/comment.module';\r\nexport * from './lib/comment.model';\r\nexport * from './lib/comment.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;MAiBa,SAAS;IAYpB;QAXA,iBAAS,IAAI,eAAe,CAAY,EAAE,CAAC,EAAC;QAC5C,gBAAQ,IAAI,eAAe,CAAS,EAAE,CAAC,EAAC;QA0BxC,WAAM,GAAG;;YACP,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,YAAA,IAAI,CAAC,MAAM,0CAAE,KAAK,0CAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;aAC1C;SACF,CAAA;QAED,gBAAQ;YACN,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;YACrC,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;YACxB,IAAI,OAAO,YAAY,OAAO,EAAE;gBAC9B,OAAO,MAAM,OAAO,CAAC;aACtB;YACD,OAAO,OAAO,CAAC;SAChB,CAAA,EAAA;QAED,WAAM,GAAG;YACP,qCAAY,IAAI,CAAC,MAAM,yCAAA,IAAI,CAAQ,CAAC,CAAC;SACtC,CAAA,CAAA;KAhCA;IATD,IAAa,MAAM,CAAC,MAAuB;QACzC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;;IAOD,QAAQ;QACN,IAAI,CAAC,KAAK,GAAG,qCAAY,IAAI,CAAC,GAAG,CAAC,KAAK;YACrC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAAI,wCACjB,CAAC,KACJ,OAAO,QAAE,CAAC,CAAC,OAAO,mCAAI,2EAA2E,CAAC,CAAC,OAAO,EAAE,KAC5G;aAAA,CAAC,CAAA;SACJ,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;KAC1D;IACD,WAAW;KACV;IACD,eAAe;KACd;;;;YAhCF,SAAS,SAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,4lDAAuC;gBAEvC,eAAe,EAAE,uBAAuB,CAAC,MAAM;;aAChD;;;;qBAKE,KAAK;;;MCaK,eAAe;;;YAtB3B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;oBACZ,eAAe;oBACf,aAAa;oBACb,gBAAgB;oBAChB,iBAAiB;oBACjB,cAAc;oBACd,aAAa;oBACb,gBAAgB;oBAChB,eAAe;oBACf,iBAAiB;iBAClB;gBACD,YAAY,EAAE;oBACZ,SAAS;iBACV;gBACD,OAAO,EAAE;oBACP,SAAS;iBACV;gBACD,SAAS,EAAE,EACV;aACF;;;ACjCD;;;;ACAA;;;;;;"}
|
|
@@ -1,6 +1,40 @@
|
|
|
1
|
+
import { Directive, TemplateRef, NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
1
3
|
import { FormControl } from '@angular/forms';
|
|
2
4
|
import { Subject } from 'rxjs';
|
|
3
5
|
|
|
6
|
+
class SdViewDefDirective {
|
|
7
|
+
// @Input() sdViewDef: string;
|
|
8
|
+
constructor(templateRef) {
|
|
9
|
+
this.templateRef = templateRef;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
SdViewDefDirective.decorators = [
|
|
13
|
+
{ type: Directive, args: [{
|
|
14
|
+
selector: '[sdViewDef]'
|
|
15
|
+
},] }
|
|
16
|
+
];
|
|
17
|
+
SdViewDefDirective.ctorParameters = () => [
|
|
18
|
+
{ type: TemplateRef }
|
|
19
|
+
];
|
|
20
|
+
|
|
21
|
+
class SdCommonModule {
|
|
22
|
+
}
|
|
23
|
+
SdCommonModule.decorators = [
|
|
24
|
+
{ type: NgModule, args: [{
|
|
25
|
+
imports: [
|
|
26
|
+
CommonModule
|
|
27
|
+
],
|
|
28
|
+
declarations: [
|
|
29
|
+
SdViewDefDirective
|
|
30
|
+
],
|
|
31
|
+
exports: [
|
|
32
|
+
SdViewDefDirective
|
|
33
|
+
],
|
|
34
|
+
providers: []
|
|
35
|
+
},] }
|
|
36
|
+
];
|
|
37
|
+
|
|
4
38
|
class SdFormControl extends FormControl {
|
|
5
39
|
constructor(formState, validator = null, asyncValidator = null) {
|
|
6
40
|
super(formState, validator, asyncValidator);
|
|
@@ -16,5 +50,5 @@ class SdFormControl extends FormControl {
|
|
|
16
50
|
* Generated bundle index. Do not edit.
|
|
17
51
|
*/
|
|
18
52
|
|
|
19
|
-
export { SdFormControl };
|
|
53
|
+
export { SdCommonModule, SdFormControl, SdViewDefDirective };
|
|
20
54
|
//# sourceMappingURL=sd-angular-core-common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-common.js","sources":["../../../../projects/sd-core/common/src/lib/models/sd-form-control.ts","../../../../projects/sd-core/common/sd-angular-core-common.ts"],"sourcesContent":["import { FormControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nexport class SdFormControl extends FormControl {\r\n touchedChanges: Subject<boolean> = new Subject<boolean>();\r\n\r\n constructor(\r\n formState?: Object,\r\n validator: ValidatorFn | ValidatorFn[] = null,\r\n asyncValidator: AsyncValidatorFn | AsyncValidatorFn[] = null\r\n ) {\r\n super(formState, validator, asyncValidator);\r\n }\r\n\r\n markAsTouched({ onlySelf }: { onlySelf?: boolean } = {}): void {\r\n super.markAsTouched({ onlySelf });\r\n this.touchedChanges.next(true);\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"sd-angular-core-common.js","sources":["../../../../projects/sd-core/common/src/lib/directives/view-def.directive.ts","../../../../projects/sd-core/common/src/lib/common.module.ts","../../../../projects/sd-core/common/src/lib/models/sd-form-control.ts","../../../../projects/sd-core/common/sd-angular-core-common.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdViewDef]'\r\n})\r\nexport class SdViewDefDirective {\r\n // @Input() sdViewDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdViewDefDirective } from './directives/view-def.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdViewDefDirective\r\n ],\r\n exports: [\r\n SdViewDefDirective\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdCommonModule { }\r\n","import { FormControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nexport class SdFormControl extends FormControl {\r\n touchedChanges: Subject<boolean> = new Subject<boolean>();\r\n\r\n constructor(\r\n formState?: Object,\r\n validator: ValidatorFn | ValidatorFn[] = null,\r\n asyncValidator: AsyncValidatorFn | AsyncValidatorFn[] = null\r\n ) {\r\n super(formState, validator, asyncValidator);\r\n }\r\n\r\n markAsTouched({ onlySelf }: { onlySelf?: boolean } = {}): void {\r\n super.markAsTouched({ onlySelf });\r\n this.touchedChanges.next(true);\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAKa,kBAAkB;;IAE7B,YAAmB,WAA6B;QAA7B,gBAAW,GAAX,WAAW,CAAkB;KAAK;;;YALtD,SAAS,SAAC;gBACT,QAAQ,EAAE,aAAa;aACxB;;;YAJmB,WAAW;;;MCiBlB,cAAc;;;YAb1B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,YAAY,EAAE;oBACZ,kBAAkB;iBACnB;gBACD,OAAO,EAAE;oBACP,kBAAkB;iBACnB;gBACD,SAAS,EAAE,EACV;aACF;;;MCdY,aAAc,SAAQ,WAAW;IAG5C,YACE,SAAkB,EAClB,YAAyC,IAAI,EAC7C,iBAAwD,IAAI;QAE5D,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAP9C,mBAAc,GAAqB,IAAI,OAAO,EAAW,CAAC;KAQzD;IAED,aAAa,CAAC,EAAE,QAAQ,KAA6B,EAAE;QACrD,KAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChC;;;AChBH;;;;;;"}
|
|
@@ -2558,6 +2558,7 @@ class SdSelectionDisablePipe {
|
|
|
2558
2558
|
const { disabled, actions } = selection;
|
|
2559
2559
|
if (!(actions === null || actions === void 0 ? void 0 : actions.length)) {
|
|
2560
2560
|
if (!disabled) {
|
|
2561
|
+
rowData.selectable = true;
|
|
2561
2562
|
return false;
|
|
2562
2563
|
}
|
|
2563
2564
|
rowData.selectable = !disabled(rowData, selectedItems);
|
|
@@ -3017,6 +3018,7 @@ class SdSelectionVisiblePipe {
|
|
|
3017
3018
|
const { actions } = selection;
|
|
3018
3019
|
rowData.actions = rowData.actions || [];
|
|
3019
3020
|
if (!(actions === null || actions === void 0 ? void 0 : actions.length)) {
|
|
3021
|
+
rowData.selectable = true;
|
|
3020
3022
|
return rowData.selectable;
|
|
3021
3023
|
}
|
|
3022
3024
|
for (const action of actions) {
|