@bnsights/bbsf-controls 1.2.29 → 1.2.30
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/README.md
CHANGED
|
@@ -400,6 +400,10 @@ If the issue persists, consider using a different HTML editor component that's c
|
|
|
400
400
|
|
|
401
401
|
## Change Log
|
|
402
402
|
|
|
403
|
+
## 1.2.30 / 02-08-2026
|
|
404
|
+
=====================
|
|
405
|
+
- Export FileUploadService into public api
|
|
406
|
+
|
|
403
407
|
## 1.2.29 / 05-07-2026
|
|
404
408
|
|
|
405
409
|
=====================
|
|
Binary file
|
|
@@ -6807,7 +6807,7 @@ class MarkdownEditorComponent {
|
|
|
6807
6807
|
return !!(this.options?.isReadonly || this.options?.isDisabled || this.markdownEditorFormControl?.disabled);
|
|
6808
6808
|
}
|
|
6809
6809
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: MarkdownEditorComponent, deps: [{ token: i3.UtilityService }, { token: GlobalSettings }, { token: i3.ControlValidationService }, { token: ControlUtility }, { token: i2.FormGroupDirective }, { token: i0.ChangeDetectorRef }, { token: i2.ControlContainer, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6810
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.16", type: MarkdownEditorComponent, isStandalone: true, selector: "BBSF-MarkdownEditor", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, viewQueries: [{ propertyName: "editorBody", first: true, predicate: ["editorBody"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-htmleditor bbsf-markdowneditor\" [formGroup]=\"group\">\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\n {{options.labelValue}}\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\n class=\"text-danger\">*</span>\n </label>\n\n <div class=\"bbsf-input-container {{options.extraClasses}}\">\n <div class=\"md-editor\" [style.height]=\"editorHeight\">\n <div class=\"md-editor__toolbar\" role=\"toolbar\" [attr.aria-label]=\"utilityService.getResourceValue('FormattingToolbar') || 'Formatting toolbar'\">\n @for (item of toolbarItems; track $index) {\n @switch (item) {\n @case ('|') {\n <span class=\"md-editor__divider\" aria-hidden=\"true\"></span>\n }\n @case ('link') {\n <div class=\"md-editor__link-wrap\">\n <button type=\"button\" class=\"md-editor__btn\" [class.is-active]=\"isActive('link')\"\n [disabled]=\"disabled('link')\" (click)=\"openLinkPopover()\" title=\"Link\" aria-label=\"Link\">\n <i class=\"pi pi-link\" aria-hidden=\"true\"></i>\n </button>\n @if (showLinkPopover()) {\n <div class=\"md-editor__link-popover\" role=\"dialog\" aria-label=\"Link\">\n <input class=\"md-editor__link-input\" type=\"url\"\n [value]=\"linkInputValue()\" (input)=\"onLinkInput($any($event.target).value)\"\n (keydown)=\"onLinkKeydown($event)\"\n placeholder=\"https://...\" aria-label=\"Link URL\" />\n <button type=\"button\" class=\"md-editor__link-ok\" (click)=\"commitLink()\" title=\"Apply\">\n <i class=\"pi pi-check\" aria-hidden=\"true\"></i>\n </button>\n <button type=\"button\" class=\"md-editor__link-cancel\" (click)=\"cancelLink()\" title=\"Cancel\">\n <i class=\"pi pi-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n </div>\n }\n @case ('table') {\n <div class=\"md-editor__table-wrap\">\n <button type=\"button\" class=\"md-editor__btn\" [class.is-active]=\"isActive('table') || showTablePopover()\"\n [disabled]=\"disabled('table')\" (click)=\"toggleTablePopover()\" [attr.aria-expanded]=\"showTablePopover()\"\n aria-haspopup=\"menu\" title=\"Table\" aria-label=\"Table\">\n <i class=\"pi pi-table\" aria-hidden=\"true\"></i>\n </button>\n @if (showTablePopover()) {\n <div class=\"md-editor__table-popover\" role=\"menu\" aria-label=\"Table\">\n @if (inTable()) {\n @for (group of tableMenuGroups; track $index) {\n <div class=\"md-editor__table-group\" role=\"group\">\n @for (id of group; track id) {\n <button type=\"button\" class=\"md-editor__btn\" role=\"menuitem\"\n [class.md-editor__btn--danger]=\"id === 'deleteTable'\"\n (click)=\"tableOp(id)\"\n [title]=\"tableOpMeta(id).label\" [attr.aria-label]=\"tableOpMeta(id).label\">\n <i class=\"pi {{ tableOpMeta(id).icon }}\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n }\n } @else {\n <button type=\"button\" class=\"md-editor__table-insert\" role=\"menuitem\" (click)=\"insertTable()\">\n <i class=\"pi pi-table\" aria-hidden=\"true\"></i>\n <span>Insert table</span>\n </button>\n }\n </div>\n }\n </div>\n }\n @default {\n <button type=\"button\" class=\"md-editor__btn\"\n [class.is-active]=\"isActive(item)\" [disabled]=\"disabled(item)\"\n (click)=\"run(item)\"\n [title]=\"button(item)?.label ?? ''\" [attr.aria-label]=\"button(item)?.label ?? ''\">\n @if (textLabel(item); as txt) {\n <span class=\"md-editor__btn-text\">{{ txt }}</span>\n } @else {\n <i class=\"pi {{ button(item)?.icon }}\" aria-hidden=\"true\"></i>\n }\n </button>\n }\n }\n }\n @if (maxLength !== null) {\n <span class=\"md-editor__count\" [class.md-editor__count--over]=\"isOverLimit()\"\n aria-live=\"polite\">{{ characters() }} / {{ maxLength }}</span>\n }\n </div>\n\n <div #editorBody class=\"md-editor__body\"\n [attr.aria-label]=\"options.labelValue || options.name\"\n [attr.data-placeholder]=\"options.placeholder || ''\"></div>\n </div>\n </div>\n\n <div class=\"subtext-container\">\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\n <div class=\"bbsf-validation\" *ngIf=\"(markdownEditorFormControl.invalid && markdownEditorFormControl.touched)\">\n {{getErrorValidation(markdownEditorFormControl.errors|keyvalue)}}\n </div>\n </div>\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\n {{resetError()}}</div>\n </div>\n</div>\n", styles: [":host{display:block;--mde-text: #1d1d1f;--mde-text-secondary: #6e6e73;--mde-border: rgba(0, 0, 0, .14);--mde-hover: rgba(0, 0, 0, .05);--mde-primary: #1b84ff;--mde-primary-subtle: rgba(27, 132, 255, .12);--mde-popover-bg: #ffffff;--mde-popover-border: rgba(0, 0, 0, .12);--mde-danger: #d70015;--mde-danger-subtle: rgba(215, 0, 21, .1);--mde-cell-selected: rgba(27, 132, 255, .15);--mde-th-bg: rgba(0, 0, 0, .04);--mde-code-bg: rgba(0, 0, 0, .06)}.bbsf-markdowneditor .md-editor{display:flex;flex-direction:column;min-height:180px;position:relative;color:var(--mde-text);border:1px solid var(--mde-border);border-radius:.475rem;background:#fff;overflow:visible}.bbsf-markdowneditor .md-editor__toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:4px 6px;border-bottom:1px solid var(--mde-border)}.bbsf-markdowneditor .md-editor__divider{width:1px;height:18px;margin-inline:4px;background:var(--mde-border)}.bbsf-markdowneditor .md-editor__btn{min-width:28px;height:28px;padding-inline:7px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--mde-text-secondary);font-size:12px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease}.bbsf-markdowneditor .md-editor__btn:hover:not(:disabled){background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__btn.is-active{background:var(--mde-primary-subtle);color:var(--mde-primary);border-color:var(--mde-primary-subtle)}.bbsf-markdowneditor .md-editor__btn:disabled{opacity:.4;cursor:default}.bbsf-markdowneditor .md-editor__btn i.pi{font-size:13px}.bbsf-markdowneditor .md-editor__btn-text{font-weight:600;font-style:normal}.bbsf-markdowneditor .md-editor__link-wrap,.bbsf-markdowneditor .md-editor__table-wrap{position:relative;display:inline-flex}.bbsf-markdowneditor .md-editor__link-popover,.bbsf-markdowneditor .md-editor__table-popover{position:absolute;top:calc(100% + 4px);inset-inline-start:0;z-index:1000;color:var(--mde-text);background:var(--mde-popover-bg);border:1px solid var(--mde-popover-border);box-shadow:0 8px 24px #0000002e}.bbsf-markdowneditor .md-editor__link-popover{display:flex;gap:4px;padding:4px;border-radius:6px}.bbsf-markdowneditor .md-editor__link-input{width:200px;padding:4px 6px;font-size:12px;border:1px solid var(--mde-border);border-radius:4px;outline:none;background:transparent;color:inherit}.bbsf-markdowneditor .md-editor__link-input:focus{border-color:var(--mde-primary)}.bbsf-markdowneditor .md-editor__link-ok,.bbsf-markdowneditor .md-editor__link-cancel{width:24px;height:24px;border-radius:4px;border:none;background:transparent;cursor:pointer;color:var(--mde-text-secondary)}.bbsf-markdowneditor .md-editor__link-ok:hover,.bbsf-markdowneditor .md-editor__link-cancel:hover{background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__table-popover{display:flex;flex-direction:column;gap:4px;padding:6px;border-radius:8px}.bbsf-markdowneditor .md-editor__table-group{display:flex;gap:2px}.bbsf-markdowneditor .md-editor__table-group:not(:last-child){padding-bottom:4px;border-bottom:1px solid var(--mde-border)}.bbsf-markdowneditor .md-editor__table-insert{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:6px;border:1px solid transparent;background:transparent;color:inherit;font-size:12px;white-space:nowrap;cursor:pointer}.bbsf-markdowneditor .md-editor__table-insert:hover{background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__btn--danger{color:var(--mde-danger)}.bbsf-markdowneditor .md-editor__btn--danger:hover:not(:disabled){background:var(--mde-danger-subtle)}.bbsf-markdowneditor .md-editor__count{margin-inline-start:auto;padding-inline:6px;font-size:11px;font-variant-numeric:tabular-nums;color:var(--mde-text-secondary)}.bbsf-markdowneditor .md-editor__count--over{color:var(--mde-danger);font-weight:600}.bbsf-markdowneditor .md-editor__body{flex:1;min-height:56px;overflow-y:auto;padding:8px 10px;font-size:13px;line-height:1.55;color:var(--mde-text);cursor:text}.bbsf-markdowneditor .md-editor__body:focus-within{outline:none}:host ::ng-deep .md-editor__prosemirror{outline:none}:host ::ng-deep .md-editor__prosemirror>*{margin-block:0 .5em}:host ::ng-deep .md-editor__prosemirror>:last-child{margin-block-end:0}:host ::ng-deep .md-editor__prosemirror h1{font-size:1.4em;font-weight:700}:host ::ng-deep .md-editor__prosemirror h2{font-size:1.2em;font-weight:700}:host ::ng-deep .md-editor__prosemirror h3{font-size:1.05em;font-weight:700}:host ::ng-deep .md-editor__prosemirror ul,:host ::ng-deep .md-editor__prosemirror ol{padding-inline-start:1.4em}:host ::ng-deep .md-editor__prosemirror a{color:var(--mde-primary);text-decoration:underline;cursor:pointer}:host ::ng-deep .md-editor__prosemirror code{background:var(--mde-code-bg);padding:1px 4px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95em}:host ::ng-deep .md-editor__prosemirror pre{background:var(--mde-code-bg);border-radius:6px;padding:8px 10px;overflow-x:auto}:host ::ng-deep .md-editor__prosemirror pre code{background:transparent;padding:0}:host ::ng-deep .md-editor__prosemirror blockquote{margin-inline:0;padding-inline-start:10px;border-inline-start:3px solid var(--mde-border);color:var(--mde-text-secondary)}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList]{list-style:none;padding-inline-start:.2em}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList] li{display:flex;align-items:flex-start;gap:6px}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList] li>label{margin-block-start:.15em}:host ::ng-deep .md-editor__prosemirror .tableWrapper{overflow-x:auto}:host ::ng-deep .md-editor__prosemirror table{border-collapse:collapse;table-layout:fixed;width:100%;margin:0;overflow:hidden}:host ::ng-deep .md-editor__prosemirror table td,:host ::ng-deep .md-editor__prosemirror table th{position:relative;box-sizing:border-box;min-width:3em;padding:4px 8px;border:1px solid var(--mde-border);vertical-align:top;text-align:start}:host ::ng-deep .md-editor__prosemirror table td>*,:host ::ng-deep .md-editor__prosemirror table th>*{margin-block:0}:host ::ng-deep .md-editor__prosemirror table th{font-weight:600;background:var(--mde-th-bg)}:host ::ng-deep .md-editor__prosemirror table .selectedCell:after{content:\"\";position:absolute;inset:0;background:var(--mde-cell-selected);pointer-events:none;z-index:2}:host ::ng-deep .md-editor__prosemirror table .column-resize-handle{position:absolute;inset-inline-end:-2px;inset-block:0;width:4px;background:var(--mde-primary);cursor:col-resize}:host ::ng-deep .md-editor__prosemirror.resize-cursor{cursor:col-resize}:host ::ng-deep .md-editor__prosemirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--mde-text-secondary);float:inline-start;pointer-events:none;height:0}:host ::ng-deep .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}:host ::ng-deep .ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid var(--mde-text, currentColor);animation:md-editor-gapcursor-blink 1.1s steps(2,start) infinite}:host ::ng-deep .ProseMirror-focused .ProseMirror-gapcursor{display:block}@keyframes md-editor-gapcursor-blink{to{visibility:hidden}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
|
|
6810
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.16", type: MarkdownEditorComponent, isStandalone: true, selector: "BBSF-MarkdownEditor", inputs: { group: "group", options: "options" }, outputs: { OnChange: "OnChange" }, viewQueries: [{ propertyName: "editorBody", first: true, predicate: ["editorBody"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group bbsf-control bbsf-htmleditor bbsf-markdowneditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n\r\n <div class=\"bbsf-input-container {{options.extraClasses}}\">\r\n <div class=\"md-editor\" [style.height]=\"editorHeight\">\r\n <div class=\"md-editor__toolbar\" role=\"toolbar\" [attr.aria-label]=\"utilityService.getResourceValue('FormattingToolbar') || 'Formatting toolbar'\">\r\n @for (item of toolbarItems; track $index) {\r\n @switch (item) {\r\n @case ('|') {\r\n <span class=\"md-editor__divider\" aria-hidden=\"true\"></span>\r\n }\r\n @case ('link') {\r\n <div class=\"md-editor__link-wrap\">\r\n <button type=\"button\" class=\"md-editor__btn\" [class.is-active]=\"isActive('link')\"\r\n [disabled]=\"disabled('link')\" (click)=\"openLinkPopover()\" title=\"Link\" aria-label=\"Link\">\r\n <i class=\"pi pi-link\" aria-hidden=\"true\"></i>\r\n </button>\r\n @if (showLinkPopover()) {\r\n <div class=\"md-editor__link-popover\" role=\"dialog\" aria-label=\"Link\">\r\n <input class=\"md-editor__link-input\" type=\"url\"\r\n [value]=\"linkInputValue()\" (input)=\"onLinkInput($any($event.target).value)\"\r\n (keydown)=\"onLinkKeydown($event)\"\r\n placeholder=\"https://...\" aria-label=\"Link URL\" />\r\n <button type=\"button\" class=\"md-editor__link-ok\" (click)=\"commitLink()\" title=\"Apply\">\r\n <i class=\"pi pi-check\" aria-hidden=\"true\"></i>\r\n </button>\r\n <button type=\"button\" class=\"md-editor__link-cancel\" (click)=\"cancelLink()\" title=\"Cancel\">\r\n <i class=\"pi pi-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @case ('table') {\r\n <div class=\"md-editor__table-wrap\">\r\n <button type=\"button\" class=\"md-editor__btn\" [class.is-active]=\"isActive('table') || showTablePopover()\"\r\n [disabled]=\"disabled('table')\" (click)=\"toggleTablePopover()\" [attr.aria-expanded]=\"showTablePopover()\"\r\n aria-haspopup=\"menu\" title=\"Table\" aria-label=\"Table\">\r\n <i class=\"pi pi-table\" aria-hidden=\"true\"></i>\r\n </button>\r\n @if (showTablePopover()) {\r\n <div class=\"md-editor__table-popover\" role=\"menu\" aria-label=\"Table\">\r\n @if (inTable()) {\r\n @for (group of tableMenuGroups; track $index) {\r\n <div class=\"md-editor__table-group\" role=\"group\">\r\n @for (id of group; track id) {\r\n <button type=\"button\" class=\"md-editor__btn\" role=\"menuitem\"\r\n [class.md-editor__btn--danger]=\"id === 'deleteTable'\"\r\n (click)=\"tableOp(id)\"\r\n [title]=\"tableOpMeta(id).label\" [attr.aria-label]=\"tableOpMeta(id).label\">\r\n <i class=\"pi {{ tableOpMeta(id).icon }}\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n </div>\r\n }\r\n } @else {\r\n <button type=\"button\" class=\"md-editor__table-insert\" role=\"menuitem\" (click)=\"insertTable()\">\r\n <i class=\"pi pi-table\" aria-hidden=\"true\"></i>\r\n <span>Insert table</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n @default {\r\n <button type=\"button\" class=\"md-editor__btn\"\r\n [class.is-active]=\"isActive(item)\" [disabled]=\"disabled(item)\"\r\n (click)=\"run(item)\"\r\n [title]=\"button(item)?.label ?? ''\" [attr.aria-label]=\"button(item)?.label ?? ''\">\r\n @if (textLabel(item); as txt) {\r\n <span class=\"md-editor__btn-text\">{{ txt }}</span>\r\n } @else {\r\n <i class=\"pi {{ button(item)?.icon }}\" aria-hidden=\"true\"></i>\r\n }\r\n </button>\r\n }\r\n }\r\n }\r\n @if (maxLength !== null) {\r\n <span class=\"md-editor__count\" [class.md-editor__count--over]=\"isOverLimit()\"\r\n aria-live=\"polite\">{{ characters() }} / {{ maxLength }}</span>\r\n }\r\n </div>\r\n\r\n <div #editorBody class=\"md-editor__body\"\r\n [attr.aria-label]=\"options.labelValue || options.name\"\r\n [attr.data-placeholder]=\"options.placeholder || ''\"></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"subtext-container\">\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <div class=\"bbsf-validation\" *ngIf=\"(markdownEditorFormControl.invalid && markdownEditorFormControl.touched)\">\r\n {{getErrorValidation(markdownEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;--mde-text: #1d1d1f;--mde-text-secondary: #6e6e73;--mde-border: rgba(0, 0, 0, .14);--mde-hover: rgba(0, 0, 0, .05);--mde-primary: #1b84ff;--mde-primary-subtle: rgba(27, 132, 255, .12);--mde-popover-bg: #ffffff;--mde-popover-border: rgba(0, 0, 0, .12);--mde-danger: #d70015;--mde-danger-subtle: rgba(215, 0, 21, .1);--mde-cell-selected: rgba(27, 132, 255, .15);--mde-th-bg: rgba(0, 0, 0, .04);--mde-code-bg: rgba(0, 0, 0, .06)}.bbsf-markdowneditor .md-editor{display:flex;flex-direction:column;min-height:180px;position:relative;color:var(--mde-text);border:1px solid var(--mde-border);border-radius:.475rem;background:#fff;overflow:visible}.bbsf-markdowneditor .md-editor__toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:4px 6px;border-bottom:1px solid var(--mde-border)}.bbsf-markdowneditor .md-editor__divider{width:1px;height:18px;margin-inline:4px;background:var(--mde-border)}.bbsf-markdowneditor .md-editor__btn{min-width:28px;height:28px;padding-inline:7px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--mde-text-secondary);font-size:12px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease}.bbsf-markdowneditor .md-editor__btn:hover:not(:disabled){background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__btn.is-active{background:var(--mde-primary-subtle);color:var(--mde-primary);border-color:var(--mde-primary-subtle)}.bbsf-markdowneditor .md-editor__btn:disabled{opacity:.4;cursor:default}.bbsf-markdowneditor .md-editor__btn i.pi{font-size:13px}.bbsf-markdowneditor .md-editor__btn-text{font-weight:600;font-style:normal}.bbsf-markdowneditor .md-editor__link-wrap,.bbsf-markdowneditor .md-editor__table-wrap{position:relative;display:inline-flex}.bbsf-markdowneditor .md-editor__link-popover,.bbsf-markdowneditor .md-editor__table-popover{position:absolute;top:calc(100% + 4px);inset-inline-start:0;z-index:1000;color:var(--mde-text);background:var(--mde-popover-bg);border:1px solid var(--mde-popover-border);box-shadow:0 8px 24px #0000002e}.bbsf-markdowneditor .md-editor__link-popover{display:flex;gap:4px;padding:4px;border-radius:6px}.bbsf-markdowneditor .md-editor__link-input{width:200px;padding:4px 6px;font-size:12px;border:1px solid var(--mde-border);border-radius:4px;outline:none;background:transparent;color:inherit}.bbsf-markdowneditor .md-editor__link-input:focus{border-color:var(--mde-primary)}.bbsf-markdowneditor .md-editor__link-ok,.bbsf-markdowneditor .md-editor__link-cancel{width:24px;height:24px;border-radius:4px;border:none;background:transparent;cursor:pointer;color:var(--mde-text-secondary)}.bbsf-markdowneditor .md-editor__link-ok:hover,.bbsf-markdowneditor .md-editor__link-cancel:hover{background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__table-popover{display:flex;flex-direction:column;gap:4px;padding:6px;border-radius:8px}.bbsf-markdowneditor .md-editor__table-group{display:flex;gap:2px}.bbsf-markdowneditor .md-editor__table-group:not(:last-child){padding-bottom:4px;border-bottom:1px solid var(--mde-border)}.bbsf-markdowneditor .md-editor__table-insert{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:6px;border:1px solid transparent;background:transparent;color:inherit;font-size:12px;white-space:nowrap;cursor:pointer}.bbsf-markdowneditor .md-editor__table-insert:hover{background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__btn--danger{color:var(--mde-danger)}.bbsf-markdowneditor .md-editor__btn--danger:hover:not(:disabled){background:var(--mde-danger-subtle)}.bbsf-markdowneditor .md-editor__count{margin-inline-start:auto;padding-inline:6px;font-size:11px;font-variant-numeric:tabular-nums;color:var(--mde-text-secondary)}.bbsf-markdowneditor .md-editor__count--over{color:var(--mde-danger);font-weight:600}.bbsf-markdowneditor .md-editor__body{flex:1;min-height:56px;overflow-y:auto;padding:8px 10px;font-size:13px;line-height:1.55;color:var(--mde-text);cursor:text}.bbsf-markdowneditor .md-editor__body:focus-within{outline:none}:host ::ng-deep .md-editor__prosemirror{outline:none}:host ::ng-deep .md-editor__prosemirror>*{margin-block:0 .5em}:host ::ng-deep .md-editor__prosemirror>:last-child{margin-block-end:0}:host ::ng-deep .md-editor__prosemirror h1{font-size:1.4em;font-weight:700}:host ::ng-deep .md-editor__prosemirror h2{font-size:1.2em;font-weight:700}:host ::ng-deep .md-editor__prosemirror h3{font-size:1.05em;font-weight:700}:host ::ng-deep .md-editor__prosemirror ul,:host ::ng-deep .md-editor__prosemirror ol{padding-inline-start:1.4em}:host ::ng-deep .md-editor__prosemirror a{color:var(--mde-primary);text-decoration:underline;cursor:pointer}:host ::ng-deep .md-editor__prosemirror code{background:var(--mde-code-bg);padding:1px 4px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95em}:host ::ng-deep .md-editor__prosemirror pre{background:var(--mde-code-bg);border-radius:6px;padding:8px 10px;overflow-x:auto}:host ::ng-deep .md-editor__prosemirror pre code{background:transparent;padding:0}:host ::ng-deep .md-editor__prosemirror blockquote{margin-inline:0;padding-inline-start:10px;border-inline-start:3px solid var(--mde-border);color:var(--mde-text-secondary)}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList]{list-style:none;padding-inline-start:.2em}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList] li{display:flex;align-items:flex-start;gap:6px}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList] li>label{margin-block-start:.15em}:host ::ng-deep .md-editor__prosemirror .tableWrapper{overflow-x:auto}:host ::ng-deep .md-editor__prosemirror table{border-collapse:collapse;table-layout:fixed;width:100%;margin:0;overflow:hidden}:host ::ng-deep .md-editor__prosemirror table td,:host ::ng-deep .md-editor__prosemirror table th{position:relative;box-sizing:border-box;min-width:3em;padding:4px 8px;border:1px solid var(--mde-border);vertical-align:top;text-align:start}:host ::ng-deep .md-editor__prosemirror table td>*,:host ::ng-deep .md-editor__prosemirror table th>*{margin-block:0}:host ::ng-deep .md-editor__prosemirror table th{font-weight:600;background:var(--mde-th-bg)}:host ::ng-deep .md-editor__prosemirror table .selectedCell:after{content:\"\";position:absolute;inset:0;background:var(--mde-cell-selected);pointer-events:none;z-index:2}:host ::ng-deep .md-editor__prosemirror table .column-resize-handle{position:absolute;inset-inline-end:-2px;inset-block:0;width:4px;background:var(--mde-primary);cursor:col-resize}:host ::ng-deep .md-editor__prosemirror.resize-cursor{cursor:col-resize}:host ::ng-deep .md-editor__prosemirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--mde-text-secondary);float:inline-start;pointer-events:none;height:0}:host ::ng-deep .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}:host ::ng-deep .ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid var(--mde-text, currentColor);animation:md-editor-gapcursor-blink 1.1s steps(2,start) infinite}:host ::ng-deep .ProseMirror-focused .ProseMirror-gapcursor{display:block}@keyframes md-editor-gapcursor-blink{to{visibility:hidden}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
|
|
6811
6811
|
}
|
|
6812
6812
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImport: i0, type: MarkdownEditorComponent, decorators: [{
|
|
6813
6813
|
type: Component,
|
|
@@ -6815,7 +6815,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.16", ngImpo
|
|
|
6815
6815
|
CommonModule,
|
|
6816
6816
|
FormsModule,
|
|
6817
6817
|
ReactiveFormsModule
|
|
6818
|
-
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"form-group bbsf-control bbsf-htmleditor bbsf-markdowneditor\" [formGroup]=\"group\">\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\n {{options.labelValue}}\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\n class=\"text-danger\">*</span>\n </label>\n\n <div class=\"bbsf-input-container {{options.extraClasses}}\">\n <div class=\"md-editor\" [style.height]=\"editorHeight\">\n <div class=\"md-editor__toolbar\" role=\"toolbar\" [attr.aria-label]=\"utilityService.getResourceValue('FormattingToolbar') || 'Formatting toolbar'\">\n @for (item of toolbarItems; track $index) {\n @switch (item) {\n @case ('|') {\n <span class=\"md-editor__divider\" aria-hidden=\"true\"></span>\n }\n @case ('link') {\n <div class=\"md-editor__link-wrap\">\n <button type=\"button\" class=\"md-editor__btn\" [class.is-active]=\"isActive('link')\"\n [disabled]=\"disabled('link')\" (click)=\"openLinkPopover()\" title=\"Link\" aria-label=\"Link\">\n <i class=\"pi pi-link\" aria-hidden=\"true\"></i>\n </button>\n @if (showLinkPopover()) {\n <div class=\"md-editor__link-popover\" role=\"dialog\" aria-label=\"Link\">\n <input class=\"md-editor__link-input\" type=\"url\"\n [value]=\"linkInputValue()\" (input)=\"onLinkInput($any($event.target).value)\"\n (keydown)=\"onLinkKeydown($event)\"\n placeholder=\"https://...\" aria-label=\"Link URL\" />\n <button type=\"button\" class=\"md-editor__link-ok\" (click)=\"commitLink()\" title=\"Apply\">\n <i class=\"pi pi-check\" aria-hidden=\"true\"></i>\n </button>\n <button type=\"button\" class=\"md-editor__link-cancel\" (click)=\"cancelLink()\" title=\"Cancel\">\n <i class=\"pi pi-times\" aria-hidden=\"true\"></i>\n </button>\n </div>\n }\n </div>\n }\n @case ('table') {\n <div class=\"md-editor__table-wrap\">\n <button type=\"button\" class=\"md-editor__btn\" [class.is-active]=\"isActive('table') || showTablePopover()\"\n [disabled]=\"disabled('table')\" (click)=\"toggleTablePopover()\" [attr.aria-expanded]=\"showTablePopover()\"\n aria-haspopup=\"menu\" title=\"Table\" aria-label=\"Table\">\n <i class=\"pi pi-table\" aria-hidden=\"true\"></i>\n </button>\n @if (showTablePopover()) {\n <div class=\"md-editor__table-popover\" role=\"menu\" aria-label=\"Table\">\n @if (inTable()) {\n @for (group of tableMenuGroups; track $index) {\n <div class=\"md-editor__table-group\" role=\"group\">\n @for (id of group; track id) {\n <button type=\"button\" class=\"md-editor__btn\" role=\"menuitem\"\n [class.md-editor__btn--danger]=\"id === 'deleteTable'\"\n (click)=\"tableOp(id)\"\n [title]=\"tableOpMeta(id).label\" [attr.aria-label]=\"tableOpMeta(id).label\">\n <i class=\"pi {{ tableOpMeta(id).icon }}\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n }\n } @else {\n <button type=\"button\" class=\"md-editor__table-insert\" role=\"menuitem\" (click)=\"insertTable()\">\n <i class=\"pi pi-table\" aria-hidden=\"true\"></i>\n <span>Insert table</span>\n </button>\n }\n </div>\n }\n </div>\n }\n @default {\n <button type=\"button\" class=\"md-editor__btn\"\n [class.is-active]=\"isActive(item)\" [disabled]=\"disabled(item)\"\n (click)=\"run(item)\"\n [title]=\"button(item)?.label ?? ''\" [attr.aria-label]=\"button(item)?.label ?? ''\">\n @if (textLabel(item); as txt) {\n <span class=\"md-editor__btn-text\">{{ txt }}</span>\n } @else {\n <i class=\"pi {{ button(item)?.icon }}\" aria-hidden=\"true\"></i>\n }\n </button>\n }\n }\n }\n @if (maxLength !== null) {\n <span class=\"md-editor__count\" [class.md-editor__count--over]=\"isOverLimit()\"\n aria-live=\"polite\">{{ characters() }} / {{ maxLength }}</span>\n }\n </div>\n\n <div #editorBody class=\"md-editor__body\"\n [attr.aria-label]=\"options.labelValue || options.name\"\n [attr.data-placeholder]=\"options.placeholder || ''\"></div>\n </div>\n </div>\n\n <div class=\"subtext-container\">\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\n <div class=\"bbsf-validation\" *ngIf=\"(markdownEditorFormControl.invalid && markdownEditorFormControl.touched)\">\n {{getErrorValidation(markdownEditorFormControl.errors|keyvalue)}}\n </div>\n </div>\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\n {{resetError()}}</div>\n </div>\n</div>\n", styles: [":host{display:block;--mde-text: #1d1d1f;--mde-text-secondary: #6e6e73;--mde-border: rgba(0, 0, 0, .14);--mde-hover: rgba(0, 0, 0, .05);--mde-primary: #1b84ff;--mde-primary-subtle: rgba(27, 132, 255, .12);--mde-popover-bg: #ffffff;--mde-popover-border: rgba(0, 0, 0, .12);--mde-danger: #d70015;--mde-danger-subtle: rgba(215, 0, 21, .1);--mde-cell-selected: rgba(27, 132, 255, .15);--mde-th-bg: rgba(0, 0, 0, .04);--mde-code-bg: rgba(0, 0, 0, .06)}.bbsf-markdowneditor .md-editor{display:flex;flex-direction:column;min-height:180px;position:relative;color:var(--mde-text);border:1px solid var(--mde-border);border-radius:.475rem;background:#fff;overflow:visible}.bbsf-markdowneditor .md-editor__toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:4px 6px;border-bottom:1px solid var(--mde-border)}.bbsf-markdowneditor .md-editor__divider{width:1px;height:18px;margin-inline:4px;background:var(--mde-border)}.bbsf-markdowneditor .md-editor__btn{min-width:28px;height:28px;padding-inline:7px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--mde-text-secondary);font-size:12px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease}.bbsf-markdowneditor .md-editor__btn:hover:not(:disabled){background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__btn.is-active{background:var(--mde-primary-subtle);color:var(--mde-primary);border-color:var(--mde-primary-subtle)}.bbsf-markdowneditor .md-editor__btn:disabled{opacity:.4;cursor:default}.bbsf-markdowneditor .md-editor__btn i.pi{font-size:13px}.bbsf-markdowneditor .md-editor__btn-text{font-weight:600;font-style:normal}.bbsf-markdowneditor .md-editor__link-wrap,.bbsf-markdowneditor .md-editor__table-wrap{position:relative;display:inline-flex}.bbsf-markdowneditor .md-editor__link-popover,.bbsf-markdowneditor .md-editor__table-popover{position:absolute;top:calc(100% + 4px);inset-inline-start:0;z-index:1000;color:var(--mde-text);background:var(--mde-popover-bg);border:1px solid var(--mde-popover-border);box-shadow:0 8px 24px #0000002e}.bbsf-markdowneditor .md-editor__link-popover{display:flex;gap:4px;padding:4px;border-radius:6px}.bbsf-markdowneditor .md-editor__link-input{width:200px;padding:4px 6px;font-size:12px;border:1px solid var(--mde-border);border-radius:4px;outline:none;background:transparent;color:inherit}.bbsf-markdowneditor .md-editor__link-input:focus{border-color:var(--mde-primary)}.bbsf-markdowneditor .md-editor__link-ok,.bbsf-markdowneditor .md-editor__link-cancel{width:24px;height:24px;border-radius:4px;border:none;background:transparent;cursor:pointer;color:var(--mde-text-secondary)}.bbsf-markdowneditor .md-editor__link-ok:hover,.bbsf-markdowneditor .md-editor__link-cancel:hover{background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__table-popover{display:flex;flex-direction:column;gap:4px;padding:6px;border-radius:8px}.bbsf-markdowneditor .md-editor__table-group{display:flex;gap:2px}.bbsf-markdowneditor .md-editor__table-group:not(:last-child){padding-bottom:4px;border-bottom:1px solid var(--mde-border)}.bbsf-markdowneditor .md-editor__table-insert{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:6px;border:1px solid transparent;background:transparent;color:inherit;font-size:12px;white-space:nowrap;cursor:pointer}.bbsf-markdowneditor .md-editor__table-insert:hover{background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__btn--danger{color:var(--mde-danger)}.bbsf-markdowneditor .md-editor__btn--danger:hover:not(:disabled){background:var(--mde-danger-subtle)}.bbsf-markdowneditor .md-editor__count{margin-inline-start:auto;padding-inline:6px;font-size:11px;font-variant-numeric:tabular-nums;color:var(--mde-text-secondary)}.bbsf-markdowneditor .md-editor__count--over{color:var(--mde-danger);font-weight:600}.bbsf-markdowneditor .md-editor__body{flex:1;min-height:56px;overflow-y:auto;padding:8px 10px;font-size:13px;line-height:1.55;color:var(--mde-text);cursor:text}.bbsf-markdowneditor .md-editor__body:focus-within{outline:none}:host ::ng-deep .md-editor__prosemirror{outline:none}:host ::ng-deep .md-editor__prosemirror>*{margin-block:0 .5em}:host ::ng-deep .md-editor__prosemirror>:last-child{margin-block-end:0}:host ::ng-deep .md-editor__prosemirror h1{font-size:1.4em;font-weight:700}:host ::ng-deep .md-editor__prosemirror h2{font-size:1.2em;font-weight:700}:host ::ng-deep .md-editor__prosemirror h3{font-size:1.05em;font-weight:700}:host ::ng-deep .md-editor__prosemirror ul,:host ::ng-deep .md-editor__prosemirror ol{padding-inline-start:1.4em}:host ::ng-deep .md-editor__prosemirror a{color:var(--mde-primary);text-decoration:underline;cursor:pointer}:host ::ng-deep .md-editor__prosemirror code{background:var(--mde-code-bg);padding:1px 4px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95em}:host ::ng-deep .md-editor__prosemirror pre{background:var(--mde-code-bg);border-radius:6px;padding:8px 10px;overflow-x:auto}:host ::ng-deep .md-editor__prosemirror pre code{background:transparent;padding:0}:host ::ng-deep .md-editor__prosemirror blockquote{margin-inline:0;padding-inline-start:10px;border-inline-start:3px solid var(--mde-border);color:var(--mde-text-secondary)}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList]{list-style:none;padding-inline-start:.2em}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList] li{display:flex;align-items:flex-start;gap:6px}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList] li>label{margin-block-start:.15em}:host ::ng-deep .md-editor__prosemirror .tableWrapper{overflow-x:auto}:host ::ng-deep .md-editor__prosemirror table{border-collapse:collapse;table-layout:fixed;width:100%;margin:0;overflow:hidden}:host ::ng-deep .md-editor__prosemirror table td,:host ::ng-deep .md-editor__prosemirror table th{position:relative;box-sizing:border-box;min-width:3em;padding:4px 8px;border:1px solid var(--mde-border);vertical-align:top;text-align:start}:host ::ng-deep .md-editor__prosemirror table td>*,:host ::ng-deep .md-editor__prosemirror table th>*{margin-block:0}:host ::ng-deep .md-editor__prosemirror table th{font-weight:600;background:var(--mde-th-bg)}:host ::ng-deep .md-editor__prosemirror table .selectedCell:after{content:\"\";position:absolute;inset:0;background:var(--mde-cell-selected);pointer-events:none;z-index:2}:host ::ng-deep .md-editor__prosemirror table .column-resize-handle{position:absolute;inset-inline-end:-2px;inset-block:0;width:4px;background:var(--mde-primary);cursor:col-resize}:host ::ng-deep .md-editor__prosemirror.resize-cursor{cursor:col-resize}:host ::ng-deep .md-editor__prosemirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--mde-text-secondary);float:inline-start;pointer-events:none;height:0}:host ::ng-deep .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}:host ::ng-deep .ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid var(--mde-text, currentColor);animation:md-editor-gapcursor-blink 1.1s steps(2,start) infinite}:host ::ng-deep .ProseMirror-focused .ProseMirror-gapcursor{display:block}@keyframes md-editor-gapcursor-blink{to{visibility:hidden}}\n"] }]
|
|
6818
|
+
], schemas: [CUSTOM_ELEMENTS_SCHEMA], template: "<div class=\"form-group bbsf-control bbsf-htmleditor bbsf-markdowneditor\" [formGroup]=\"group\">\r\n <div [ngClass]=\"(options.viewType==1)?'bbsf-vertical':'bbsf-horizontal'\">\r\n <label *ngIf=\"!options.hideLabel\" class=\"bbsf-label {{options.labelExtraClasses}}\">\r\n {{options.labelValue}}\r\n <span *ngIf=\"((options.showAsterisk&&options.isRequired)||(options.isRequired))&&!options.isReadonly\"\r\n class=\"text-danger\">*</span>\r\n </label>\r\n\r\n <div class=\"bbsf-input-container {{options.extraClasses}}\">\r\n <div class=\"md-editor\" [style.height]=\"editorHeight\">\r\n <div class=\"md-editor__toolbar\" role=\"toolbar\" [attr.aria-label]=\"utilityService.getResourceValue('FormattingToolbar') || 'Formatting toolbar'\">\r\n @for (item of toolbarItems; track $index) {\r\n @switch (item) {\r\n @case ('|') {\r\n <span class=\"md-editor__divider\" aria-hidden=\"true\"></span>\r\n }\r\n @case ('link') {\r\n <div class=\"md-editor__link-wrap\">\r\n <button type=\"button\" class=\"md-editor__btn\" [class.is-active]=\"isActive('link')\"\r\n [disabled]=\"disabled('link')\" (click)=\"openLinkPopover()\" title=\"Link\" aria-label=\"Link\">\r\n <i class=\"pi pi-link\" aria-hidden=\"true\"></i>\r\n </button>\r\n @if (showLinkPopover()) {\r\n <div class=\"md-editor__link-popover\" role=\"dialog\" aria-label=\"Link\">\r\n <input class=\"md-editor__link-input\" type=\"url\"\r\n [value]=\"linkInputValue()\" (input)=\"onLinkInput($any($event.target).value)\"\r\n (keydown)=\"onLinkKeydown($event)\"\r\n placeholder=\"https://...\" aria-label=\"Link URL\" />\r\n <button type=\"button\" class=\"md-editor__link-ok\" (click)=\"commitLink()\" title=\"Apply\">\r\n <i class=\"pi pi-check\" aria-hidden=\"true\"></i>\r\n </button>\r\n <button type=\"button\" class=\"md-editor__link-cancel\" (click)=\"cancelLink()\" title=\"Cancel\">\r\n <i class=\"pi pi-times\" aria-hidden=\"true\"></i>\r\n </button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n @case ('table') {\r\n <div class=\"md-editor__table-wrap\">\r\n <button type=\"button\" class=\"md-editor__btn\" [class.is-active]=\"isActive('table') || showTablePopover()\"\r\n [disabled]=\"disabled('table')\" (click)=\"toggleTablePopover()\" [attr.aria-expanded]=\"showTablePopover()\"\r\n aria-haspopup=\"menu\" title=\"Table\" aria-label=\"Table\">\r\n <i class=\"pi pi-table\" aria-hidden=\"true\"></i>\r\n </button>\r\n @if (showTablePopover()) {\r\n <div class=\"md-editor__table-popover\" role=\"menu\" aria-label=\"Table\">\r\n @if (inTable()) {\r\n @for (group of tableMenuGroups; track $index) {\r\n <div class=\"md-editor__table-group\" role=\"group\">\r\n @for (id of group; track id) {\r\n <button type=\"button\" class=\"md-editor__btn\" role=\"menuitem\"\r\n [class.md-editor__btn--danger]=\"id === 'deleteTable'\"\r\n (click)=\"tableOp(id)\"\r\n [title]=\"tableOpMeta(id).label\" [attr.aria-label]=\"tableOpMeta(id).label\">\r\n <i class=\"pi {{ tableOpMeta(id).icon }}\" aria-hidden=\"true\"></i>\r\n </button>\r\n }\r\n </div>\r\n }\r\n } @else {\r\n <button type=\"button\" class=\"md-editor__table-insert\" role=\"menuitem\" (click)=\"insertTable()\">\r\n <i class=\"pi pi-table\" aria-hidden=\"true\"></i>\r\n <span>Insert table</span>\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n @default {\r\n <button type=\"button\" class=\"md-editor__btn\"\r\n [class.is-active]=\"isActive(item)\" [disabled]=\"disabled(item)\"\r\n (click)=\"run(item)\"\r\n [title]=\"button(item)?.label ?? ''\" [attr.aria-label]=\"button(item)?.label ?? ''\">\r\n @if (textLabel(item); as txt) {\r\n <span class=\"md-editor__btn-text\">{{ txt }}</span>\r\n } @else {\r\n <i class=\"pi {{ button(item)?.icon }}\" aria-hidden=\"true\"></i>\r\n }\r\n </button>\r\n }\r\n }\r\n }\r\n @if (maxLength !== null) {\r\n <span class=\"md-editor__count\" [class.md-editor__count--over]=\"isOverLimit()\"\r\n aria-live=\"polite\">{{ characters() }} / {{ maxLength }}</span>\r\n }\r\n </div>\r\n\r\n <div #editorBody class=\"md-editor__body\"\r\n [attr.aria-label]=\"options.labelValue || options.name\"\r\n [attr.data-placeholder]=\"options.placeholder || ''\"></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"subtext-container\">\r\n <div class=\"bbsf-control-desc\" *ngIf=\"options.labelDescription!=null\">{{options.labelDescription}}</div>\r\n <div class=\"bbsf-validation\" *ngIf=\"(markdownEditorFormControl.invalid && markdownEditorFormControl.touched)\">\r\n {{getErrorValidation(markdownEditorFormControl.errors|keyvalue)}}\r\n </div>\r\n </div>\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n</div>\r\n", styles: [":host{display:block;--mde-text: #1d1d1f;--mde-text-secondary: #6e6e73;--mde-border: rgba(0, 0, 0, .14);--mde-hover: rgba(0, 0, 0, .05);--mde-primary: #1b84ff;--mde-primary-subtle: rgba(27, 132, 255, .12);--mde-popover-bg: #ffffff;--mde-popover-border: rgba(0, 0, 0, .12);--mde-danger: #d70015;--mde-danger-subtle: rgba(215, 0, 21, .1);--mde-cell-selected: rgba(27, 132, 255, .15);--mde-th-bg: rgba(0, 0, 0, .04);--mde-code-bg: rgba(0, 0, 0, .06)}.bbsf-markdowneditor .md-editor{display:flex;flex-direction:column;min-height:180px;position:relative;color:var(--mde-text);border:1px solid var(--mde-border);border-radius:.475rem;background:#fff;overflow:visible}.bbsf-markdowneditor .md-editor__toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:2px;padding:4px 6px;border-bottom:1px solid var(--mde-border)}.bbsf-markdowneditor .md-editor__divider{width:1px;height:18px;margin-inline:4px;background:var(--mde-border)}.bbsf-markdowneditor .md-editor__btn{min-width:28px;height:28px;padding-inline:7px;border-radius:6px;border:1px solid transparent;background:transparent;color:var(--mde-text-secondary);font-size:12px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease}.bbsf-markdowneditor .md-editor__btn:hover:not(:disabled){background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__btn.is-active{background:var(--mde-primary-subtle);color:var(--mde-primary);border-color:var(--mde-primary-subtle)}.bbsf-markdowneditor .md-editor__btn:disabled{opacity:.4;cursor:default}.bbsf-markdowneditor .md-editor__btn i.pi{font-size:13px}.bbsf-markdowneditor .md-editor__btn-text{font-weight:600;font-style:normal}.bbsf-markdowneditor .md-editor__link-wrap,.bbsf-markdowneditor .md-editor__table-wrap{position:relative;display:inline-flex}.bbsf-markdowneditor .md-editor__link-popover,.bbsf-markdowneditor .md-editor__table-popover{position:absolute;top:calc(100% + 4px);inset-inline-start:0;z-index:1000;color:var(--mde-text);background:var(--mde-popover-bg);border:1px solid var(--mde-popover-border);box-shadow:0 8px 24px #0000002e}.bbsf-markdowneditor .md-editor__link-popover{display:flex;gap:4px;padding:4px;border-radius:6px}.bbsf-markdowneditor .md-editor__link-input{width:200px;padding:4px 6px;font-size:12px;border:1px solid var(--mde-border);border-radius:4px;outline:none;background:transparent;color:inherit}.bbsf-markdowneditor .md-editor__link-input:focus{border-color:var(--mde-primary)}.bbsf-markdowneditor .md-editor__link-ok,.bbsf-markdowneditor .md-editor__link-cancel{width:24px;height:24px;border-radius:4px;border:none;background:transparent;cursor:pointer;color:var(--mde-text-secondary)}.bbsf-markdowneditor .md-editor__link-ok:hover,.bbsf-markdowneditor .md-editor__link-cancel:hover{background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__table-popover{display:flex;flex-direction:column;gap:4px;padding:6px;border-radius:8px}.bbsf-markdowneditor .md-editor__table-group{display:flex;gap:2px}.bbsf-markdowneditor .md-editor__table-group:not(:last-child){padding-bottom:4px;border-bottom:1px solid var(--mde-border)}.bbsf-markdowneditor .md-editor__table-insert{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:6px;border:1px solid transparent;background:transparent;color:inherit;font-size:12px;white-space:nowrap;cursor:pointer}.bbsf-markdowneditor .md-editor__table-insert:hover{background:var(--mde-hover)}.bbsf-markdowneditor .md-editor__btn--danger{color:var(--mde-danger)}.bbsf-markdowneditor .md-editor__btn--danger:hover:not(:disabled){background:var(--mde-danger-subtle)}.bbsf-markdowneditor .md-editor__count{margin-inline-start:auto;padding-inline:6px;font-size:11px;font-variant-numeric:tabular-nums;color:var(--mde-text-secondary)}.bbsf-markdowneditor .md-editor__count--over{color:var(--mde-danger);font-weight:600}.bbsf-markdowneditor .md-editor__body{flex:1;min-height:56px;overflow-y:auto;padding:8px 10px;font-size:13px;line-height:1.55;color:var(--mde-text);cursor:text}.bbsf-markdowneditor .md-editor__body:focus-within{outline:none}:host ::ng-deep .md-editor__prosemirror{outline:none}:host ::ng-deep .md-editor__prosemirror>*{margin-block:0 .5em}:host ::ng-deep .md-editor__prosemirror>:last-child{margin-block-end:0}:host ::ng-deep .md-editor__prosemirror h1{font-size:1.4em;font-weight:700}:host ::ng-deep .md-editor__prosemirror h2{font-size:1.2em;font-weight:700}:host ::ng-deep .md-editor__prosemirror h3{font-size:1.05em;font-weight:700}:host ::ng-deep .md-editor__prosemirror ul,:host ::ng-deep .md-editor__prosemirror ol{padding-inline-start:1.4em}:host ::ng-deep .md-editor__prosemirror a{color:var(--mde-primary);text-decoration:underline;cursor:pointer}:host ::ng-deep .md-editor__prosemirror code{background:var(--mde-code-bg);padding:1px 4px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95em}:host ::ng-deep .md-editor__prosemirror pre{background:var(--mde-code-bg);border-radius:6px;padding:8px 10px;overflow-x:auto}:host ::ng-deep .md-editor__prosemirror pre code{background:transparent;padding:0}:host ::ng-deep .md-editor__prosemirror blockquote{margin-inline:0;padding-inline-start:10px;border-inline-start:3px solid var(--mde-border);color:var(--mde-text-secondary)}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList]{list-style:none;padding-inline-start:.2em}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList] li{display:flex;align-items:flex-start;gap:6px}:host ::ng-deep .md-editor__prosemirror ul[data-type=taskList] li>label{margin-block-start:.15em}:host ::ng-deep .md-editor__prosemirror .tableWrapper{overflow-x:auto}:host ::ng-deep .md-editor__prosemirror table{border-collapse:collapse;table-layout:fixed;width:100%;margin:0;overflow:hidden}:host ::ng-deep .md-editor__prosemirror table td,:host ::ng-deep .md-editor__prosemirror table th{position:relative;box-sizing:border-box;min-width:3em;padding:4px 8px;border:1px solid var(--mde-border);vertical-align:top;text-align:start}:host ::ng-deep .md-editor__prosemirror table td>*,:host ::ng-deep .md-editor__prosemirror table th>*{margin-block:0}:host ::ng-deep .md-editor__prosemirror table th{font-weight:600;background:var(--mde-th-bg)}:host ::ng-deep .md-editor__prosemirror table .selectedCell:after{content:\"\";position:absolute;inset:0;background:var(--mde-cell-selected);pointer-events:none;z-index:2}:host ::ng-deep .md-editor__prosemirror table .column-resize-handle{position:absolute;inset-inline-end:-2px;inset-block:0;width:4px;background:var(--mde-primary);cursor:col-resize}:host ::ng-deep .md-editor__prosemirror.resize-cursor{cursor:col-resize}:host ::ng-deep .md-editor__prosemirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--mde-text-secondary);float:inline-start;pointer-events:none;height:0}:host ::ng-deep .ProseMirror-gapcursor{display:none;pointer-events:none;position:absolute}:host ::ng-deep .ProseMirror-gapcursor:after{content:\"\";display:block;position:absolute;top:-2px;width:20px;border-top:1px solid var(--mde-text, currentColor);animation:md-editor-gapcursor-blink 1.1s steps(2,start) infinite}:host ::ng-deep .ProseMirror-focused .ProseMirror-gapcursor{display:block}@keyframes md-editor-gapcursor-blink{to{visibility:hidden}}\n"] }]
|
|
6819
6819
|
}], ctorParameters: () => [{ type: i3.UtilityService }, { type: GlobalSettings }, { type: i3.ControlValidationService }, { type: ControlUtility }, { type: i2.FormGroupDirective }, { type: i0.ChangeDetectorRef }, { type: i2.ControlContainer, decorators: [{
|
|
6820
6820
|
type: Optional
|
|
6821
6821
|
}] }], propDecorators: { group: [{
|
|
@@ -12331,5 +12331,5 @@ var ToolbarButtons;
|
|
|
12331
12331
|
* Generated bundle index. Do not edit.
|
|
12332
12332
|
*/
|
|
12333
12333
|
|
|
12334
|
-
export { AddButton, AppBaseComponent, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, BBSFCoreModule, BBSFDatePipe, BBSFDateTimeModule, BBSFDateTimePipe, BBSFDropdownModule, BBSFEditorsModule, BBSFFormsBasicModule, BBSFMultilingualModule, BBSFPhoneModule, BBSFSpecializedModule, BBSFUploadsModule, BBSFUtilityModule, BBSF_DATE_TIME_FORMATS, BTagsInputComponent, BreadCrumb, BreadCrumbModel, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlFilterItem, ControlLayout, ControlOptionsBase, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DefaultIntl, DeleteButton, DropdownActionItem, DropdownActions, DropdownListComponent, DropdownListItem, DropdownOptions, EditButton, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, ExportButton, FileDTO, FileType, FileUploadComponent, FileUploadCropperOptions, FileUploadCropperPreset, FileUploadModel, FileUploadOptions, FilterItem, FilterOptions, FilterType, FiltersButton, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, GridViewModel, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageValidation, LogoCropperComponent, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MapSearchTypes, MapZoomLevel, MarkDownIcons, MarkdownEditorComponent, MarkdownEditorOptions, MarkdownMode, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultilingualControlOptionsBase, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PageHeaderComponentComponent, PageHeaderOptions, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, PreventDoubleClickDirective, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RecaptchaComponent, RecaptchaModel, RecaptchaOptions, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, RepeaterTableComponent, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagInputView, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxModel, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, ToolbarButtons, UploadPersonalImage, environment, options };
|
|
12334
|
+
export { AddButton, AppBaseComponent, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, BBSFCoreModule, BBSFDatePipe, BBSFDateTimeModule, BBSFDateTimePipe, BBSFDropdownModule, BBSFEditorsModule, BBSFFormsBasicModule, BBSFMultilingualModule, BBSFPhoneModule, BBSFSpecializedModule, BBSFUploadsModule, BBSFUtilityModule, BBSF_DATE_TIME_FORMATS, BTagsInputComponent, BreadCrumb, BreadCrumbModel, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlFilterItem, ControlLayout, ControlOptionsBase, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DefaultIntl, DeleteButton, DropdownActionItem, DropdownActions, DropdownListComponent, DropdownListItem, DropdownOptions, EditButton, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, ExportButton, FileDTO, FileType, FileUploadComponent, FileUploadCropperOptions, FileUploadCropperPreset, FileUploadModel, FileUploadOptions, FileUploadService, FilterItem, FilterOptions, FilterType, FiltersButton, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, GridViewModel, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageValidation, LogoCropperComponent, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MapSearchTypes, MapZoomLevel, MarkDownIcons, MarkdownEditorComponent, MarkdownEditorOptions, MarkdownMode, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultilingualControlOptionsBase, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PageHeaderComponentComponent, PageHeaderOptions, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, PreventDoubleClickDirective, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RecaptchaComponent, RecaptchaModel, RecaptchaOptions, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, RepeaterTableComponent, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagInputView, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxModel, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, ToolbarButtons, UploadPersonalImage, environment, options };
|
|
12335
12335
|
//# sourceMappingURL=bnsights-bbsf-controls.mjs.map
|