@solidev/data 0.10.0 → 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.
@@ -28,19 +28,27 @@ const RichEditToolbars = {
28
28
  none: [],
29
29
  };
30
30
  class RicheditComponent {
31
- constructor() {
32
- this.editable = true;
33
- this.edit = true;
34
- this.mode = "dd";
35
- /** Hide label (for inline forms) */
36
- this.hideLabel = false;
37
- /** Hide button (for changed usage) */
38
- this.hideButton = false;
39
- /** Toolbar mode */
40
- this.toolbar = "default";
41
- this.changed = new EventEmitter();
42
- this.html = "";
43
- }
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;
44
52
  ngOnInit() {
45
53
  this.editor = new Editor();
46
54
  if (this.toolbar === "light" || this.toolbar === "default") {
@@ -97,8 +105,8 @@ class RicheditComponent {
97
105
  }
98
106
  }
99
107
  }
100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RicheditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵ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 }); }
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 });
102
110
  }
103
111
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: RicheditComponent, decorators: [{
104
112
  type: Component,
@@ -1 +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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"}
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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"}