@solidev/data 0.9.1 → 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/solidev-data-richedit.mjs +141 -0
- package/fesm2022/solidev-data-richedit.mjs.map +1 -0
- package/fesm2022/solidev-data.mjs +1919 -1987
- package/fesm2022/solidev-data.mjs.map +1 -1
- package/package.json +5 -1
- package/types/solidev-data-richedit.d.ts +40 -0
- package/types/solidev-data.d.ts +378 -423
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { EventEmitter, Output, Input, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/common';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import * as i2 from 'ngx-editor';
|
|
6
|
+
import { Editor, NgxEditorModule } from 'ngx-editor';
|
|
7
|
+
import * as i3 from '@angular/forms';
|
|
8
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms';
|
|
9
|
+
import { firstValueFrom } from 'rxjs';
|
|
10
|
+
|
|
11
|
+
const RichEditToolbars = {
|
|
12
|
+
default: [
|
|
13
|
+
["bold", "italic"],
|
|
14
|
+
["underline", "strike"],
|
|
15
|
+
["code", "blockquote"],
|
|
16
|
+
["ordered_list", "bullet_list"],
|
|
17
|
+
[{ heading: ["h1", "h2", "h3", "h4", "h5", "h6"] }],
|
|
18
|
+
["link"],
|
|
19
|
+
["text_color", "background_color"],
|
|
20
|
+
["align_left", "align_center", "align_right", "align_justify"],
|
|
21
|
+
],
|
|
22
|
+
light: [
|
|
23
|
+
["bold", "italic", "underline"],
|
|
24
|
+
["ordered_list", "bullet_list"],
|
|
25
|
+
["text_color"],
|
|
26
|
+
["align_left", "align_center", "align_right", "align_justify"],
|
|
27
|
+
],
|
|
28
|
+
none: [],
|
|
29
|
+
};
|
|
30
|
+
class RicheditComponent {
|
|
31
|
+
model;
|
|
32
|
+
field;
|
|
33
|
+
editable = true;
|
|
34
|
+
edit = true;
|
|
35
|
+
mode = "dd";
|
|
36
|
+
/** Hide label (for inline forms) */
|
|
37
|
+
hideLabel = false;
|
|
38
|
+
/** Hide button (for changed usage) */
|
|
39
|
+
hideButton = false;
|
|
40
|
+
/** Form control, from outside or created */
|
|
41
|
+
fc;
|
|
42
|
+
/** Toolbar mode */
|
|
43
|
+
toolbar = "default";
|
|
44
|
+
changed = new EventEmitter();
|
|
45
|
+
/** Field manager */
|
|
46
|
+
manager;
|
|
47
|
+
/** Computed required */
|
|
48
|
+
required;
|
|
49
|
+
editor;
|
|
50
|
+
html = "";
|
|
51
|
+
realToolbar;
|
|
52
|
+
ngOnInit() {
|
|
53
|
+
this.editor = new Editor();
|
|
54
|
+
if (this.toolbar === "light" || this.toolbar === "default") {
|
|
55
|
+
this.realToolbar = RichEditToolbars[this.toolbar];
|
|
56
|
+
}
|
|
57
|
+
else if (this.toolbar === "none") {
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
this.realToolbar = this.toolbar;
|
|
61
|
+
}
|
|
62
|
+
if (!this.fc) {
|
|
63
|
+
this.fc = new FormControl("");
|
|
64
|
+
if (this.model && this.field) {
|
|
65
|
+
this.manager = this.model.FM(this.field);
|
|
66
|
+
this.required = this.manager?.required || false;
|
|
67
|
+
this.fc.setValue(this.model[this.field] || "", {
|
|
68
|
+
emitEvent: false,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (this.edit) {
|
|
72
|
+
this.fc.enable();
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
this.fc.disable();
|
|
76
|
+
}
|
|
77
|
+
this.fc.valueChanges.subscribe((v) => this.changed.emit(v));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// make sure to destory the editor
|
|
81
|
+
ngOnDestroy() {
|
|
82
|
+
this.editor.destroy();
|
|
83
|
+
}
|
|
84
|
+
toggleEdit() {
|
|
85
|
+
if (this.editable) {
|
|
86
|
+
if (this.edit) {
|
|
87
|
+
this.fc.disable();
|
|
88
|
+
this.edit = false;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this.fc.enable();
|
|
92
|
+
this.edit = true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
this.fc.disable();
|
|
97
|
+
this.edit = false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async save() {
|
|
101
|
+
if (this.model && this.field) {
|
|
102
|
+
this.model.setFV(this.field, this.fc.value);
|
|
103
|
+
if (this.mode === "dd") {
|
|
104
|
+
await firstValueFrom(this.model.update([this.field], { updateModel: true }));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RicheditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: RicheditComponent, isStandalone: true, selector: "data-richedit", inputs: { model: "model", field: "field", editable: "editable", edit: "edit", mode: "mode", hideLabel: "hideLabel", hideButton: "hideButton", fc: "fc", toolbar: "toolbar" }, outputs: { changed: "changed" }, ngImport: i0, template: "\n<ng-template #editorTemplate>\n <div class=\"NgxEditor__Wrapper\">\n @if (edit && toolbar!=='none') {\n <ngx-editor-menu [editor]=\"editor\" [toolbar]=\"realToolbar\"></ngx-editor-menu>\n }\n <ngx-editor [editor]=\"editor\" [formControl]=\"fc\" [placeholder]=\"''\"></ngx-editor>\n </div>\n @if (edit && !hideButton) {\n <button class=\"btn btn-primary btn-sm w-100 mt-1\" (click)=\"save()\"><i class=\"bi bi-save me-2\"></i>Enregistrer</button>\n }\n</ng-template>\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<!-- Dd display-->\n@if (mode==='dd') {\n @if (!hideLabel) {\n <dt [class.required]=\"required\"><span class=\"editable\" (click)=\"toggleEdit()\" role=\"button\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span></dt>\n }\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n </dd>\n }\n <!-- Inline display-->\n @if (mode==='inline') {\n @if (!hideLabel) {\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n }\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n }\n <!-- Form display-->\n @if (mode==='form') {\n @if (!hideLabel) {\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n }\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n }", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: NgxEditorModule }, { kind: "component", type: i2.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i2.NgxEditorMenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.Eager });
|
|
110
|
+
}
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RicheditComponent, decorators: [{
|
|
112
|
+
type: Component,
|
|
113
|
+
args: [{ selector: "data-richedit", imports: [CommonModule, NgxEditorModule, ReactiveFormsModule], changeDetection: ChangeDetectionStrategy.Eager, template: "\n<ng-template #editorTemplate>\n <div class=\"NgxEditor__Wrapper\">\n @if (edit && toolbar!=='none') {\n <ngx-editor-menu [editor]=\"editor\" [toolbar]=\"realToolbar\"></ngx-editor-menu>\n }\n <ngx-editor [editor]=\"editor\" [formControl]=\"fc\" [placeholder]=\"''\"></ngx-editor>\n </div>\n @if (edit && !hideButton) {\n <button class=\"btn btn-primary btn-sm w-100 mt-1\" (click)=\"save()\"><i class=\"bi bi-save me-2\"></i>Enregistrer</button>\n }\n</ng-template>\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<!-- Dd display-->\n@if (mode==='dd') {\n @if (!hideLabel) {\n <dt [class.required]=\"required\"><span class=\"editable\" (click)=\"toggleEdit()\" role=\"button\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span></dt>\n }\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n </dd>\n }\n <!-- Inline display-->\n @if (mode==='inline') {\n @if (!hideLabel) {\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n }\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n }\n <!-- Form display-->\n @if (mode==='form') {\n @if (!hideLabel) {\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n }\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n }" }]
|
|
114
|
+
}], propDecorators: { model: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], field: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], editable: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], edit: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], mode: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}], hideLabel: [{
|
|
125
|
+
type: Input
|
|
126
|
+
}], hideButton: [{
|
|
127
|
+
type: Input
|
|
128
|
+
}], fc: [{
|
|
129
|
+
type: Input
|
|
130
|
+
}], toolbar: [{
|
|
131
|
+
type: Input
|
|
132
|
+
}], changed: [{
|
|
133
|
+
type: Output
|
|
134
|
+
}] } });
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Generated bundle index. Do not edit.
|
|
138
|
+
*/
|
|
139
|
+
|
|
140
|
+
export { RichEditToolbars, RicheditComponent };
|
|
141
|
+
//# sourceMappingURL=solidev-data-richedit.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solidev-data-richedit.mjs","sources":["../../../projects/data/richedit/richedit.component.ts","../../../projects/data/richedit/richedit.component.html","../../../projects/data/richedit/solidev-data-richedit.ts"],"sourcesContent":["import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ChangeDetectionStrategy,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { Editor, NgxEditorModule, Toolbar } from \"ngx-editor\";\nimport { FormControl, ReactiveFormsModule } from \"@angular/forms\";\nimport { BaseFieldManager, DataModel } from \"@solidev/data\";\nimport { firstValueFrom } from \"rxjs\";\n\nexport const RichEditToolbars: { [index: string]: Toolbar } = {\n default: [\n [\"bold\", \"italic\"],\n [\"underline\", \"strike\"],\n [\"code\", \"blockquote\"],\n [\"ordered_list\", \"bullet_list\"],\n [{ heading: [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"] }],\n [\"link\"],\n [\"text_color\", \"background_color\"],\n [\"align_left\", \"align_center\", \"align_right\", \"align_justify\"],\n ],\n light: [\n [\"bold\", \"italic\", \"underline\"],\n [\"ordered_list\", \"bullet_list\"],\n [\"text_color\"],\n [\"align_left\", \"align_center\", \"align_right\", \"align_justify\"],\n ],\n none: [],\n};\n\n@Component({\n selector: \"data-richedit\",\n imports: [CommonModule, NgxEditorModule, ReactiveFormsModule],\n templateUrl: \"./richedit.component.html\",\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrls: [\"./richedit.component.sass\"],\n})\nexport class RicheditComponent<FT, T extends DataModel>\n implements OnInit, OnDestroy\n{\n @Input() public model?: T;\n @Input() public field?: string;\n @Input() public editable: boolean = true;\n @Input() public edit: boolean = true;\n @Input() public mode: \"dd\" | \"inline\" | \"form\" = \"dd\";\n /** Hide label (for inline forms) */\n @Input() public hideLabel: boolean = false;\n /** Hide button (for changed usage) */\n @Input() public hideButton: boolean = false;\n /** Form control, from outside or created */\n @Input() public fc!: FormControl<string | null>;\n /** Toolbar mode */\n @Input() public toolbar: \"none\" | \"default\" | \"light\" | Toolbar = \"default\";\n @Output() public changed = new EventEmitter<string | null>();\n /** Field manager */\n public manager?: BaseFieldManager<FT>;\n /** Computed required */\n public required!: boolean;\n public editor!: Editor;\n public html = \"\";\n public realToolbar!: Toolbar;\n\n ngOnInit(): void {\n this.editor = new Editor();\n if (this.toolbar === \"light\" || this.toolbar === \"default\") {\n this.realToolbar = RichEditToolbars[this.toolbar];\n } else if (this.toolbar === \"none\") {\n } else {\n this.realToolbar = this.toolbar as Toolbar;\n }\n if (!this.fc) {\n this.fc = new FormControl<string>(\"\");\n if (this.model && this.field) {\n this.manager = this.model.FM(this.field);\n this.required = this.manager?.required || false;\n this.fc.setValue((this.model as any)[this.field] || \"\", {\n emitEvent: false,\n });\n }\n if (this.edit) {\n this.fc.enable();\n } else {\n this.fc.disable();\n }\n this.fc.valueChanges.subscribe((v) => this.changed.emit(v));\n }\n }\n\n // make sure to destory the editor\n ngOnDestroy(): void {\n this.editor.destroy();\n }\n\n toggleEdit() {\n if (this.editable) {\n if (this.edit) {\n this.fc.disable();\n this.edit = false;\n } else {\n this.fc.enable();\n this.edit = true;\n }\n } else {\n this.fc.disable();\n this.edit = false;\n }\n }\n\n public async save() {\n if (this.model && this.field) {\n this.model.setFV(this.field, this.fc.value);\n if (this.mode === \"dd\") {\n await firstValueFrom(\n this.model.update([this.field], { updateModel: true }),\n );\n }\n }\n }\n}\n","\n<ng-template #editorTemplate>\n <div class=\"NgxEditor__Wrapper\">\n @if (edit && toolbar!=='none') {\n <ngx-editor-menu [editor]=\"editor\" [toolbar]=\"realToolbar\"></ngx-editor-menu>\n }\n <ngx-editor [editor]=\"editor\" [formControl]=\"fc\" [placeholder]=\"''\"></ngx-editor>\n </div>\n @if (edit && !hideButton) {\n <button class=\"btn btn-primary btn-sm w-100 mt-1\" (click)=\"save()\"><i class=\"bi bi-save me-2\"></i>Enregistrer</button>\n }\n</ng-template>\n<ng-template #titleTpl>\n <ng-content></ng-content>\n</ng-template>\n<!-- Dd display-->\n@if (mode==='dd') {\n @if (!hideLabel) {\n <dt [class.required]=\"required\"><span class=\"editable\" (click)=\"toggleEdit()\" role=\"button\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container></span></dt>\n }\n <dd [class.mb-0]=\"hideLabel\">\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n </dd>\n }\n <!-- Inline display-->\n @if (mode==='inline') {\n @if (!hideLabel) {\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n }\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n }\n <!-- Form display-->\n @if (mode==='form') {\n @if (!hideLabel) {\n <label [class.required]=\"required\">\n <ng-container *ngTemplateOutlet=\"titleTpl\"></ng-container>\n </label>\n }\n <ng-container *ngTemplateOutlet=\"editorTemplate\"></ng-container>\n }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|