@simplysm/angular 14.0.101 → 14.1.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/dist/controls/checkbox/sd-checkbox.d.ts.map +1 -1
- package/dist/controls/checkbox/sd-checkbox.js +3 -3
- package/dist/data/crud/sd-crud-list.d.ts +4 -2
- package/dist/data/crud/sd-crud-list.d.ts.map +1 -1
- package/dist/data/crud/sd-crud-list.js +60 -58
- package/dist/features/editor/sd-markdown-editor.d.ts +28 -0
- package/dist/features/editor/sd-markdown-editor.d.ts.map +1 -0
- package/dist/features/editor/sd-markdown-editor.js +250 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/package.json +18 -17
- package/scss/themes/_blueprint-surfaces.scss +34 -28
- package/scss/themes/_variables-blueprint.scss +10 -10
- package/src/controls/checkbox/sd-checkbox.ts +1 -0
- package/src/data/crud/sd-crud-list.ts +24 -22
- package/src/features/editor/sd-markdown-editor.ts +278 -0
- package/src/index.ts +1 -0
- package/styles.css +39 -38
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { booleanAttribute, ChangeDetectionStrategy, Component, computed, DestroyRef, effect, ElementRef, inject, input, model, signal, untracked, ViewEncapsulation, } from "@angular/core";
|
|
2
|
+
import { setupInvalid } from "../../core/validation/setupInvalid";
|
|
3
|
+
import { Editor } from "@tiptap/core";
|
|
4
|
+
import StarterKit from "@tiptap/starter-kit";
|
|
5
|
+
import Placeholder from "@tiptap/extension-placeholder";
|
|
6
|
+
import { Markdown } from "@tiptap/markdown";
|
|
7
|
+
import { useTiptapToolbar } from "./useTiptapToolbar";
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
function SdMarkdownEditor_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
10
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
11
|
+
i0.ɵɵdomElementStart(0, "div", 0)(1, "div", 2)(2, "button", 3);
|
|
12
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("h1")); });
|
|
13
|
+
i0.ɵɵtext(3, "H1");
|
|
14
|
+
i0.ɵɵdomElementEnd();
|
|
15
|
+
i0.ɵɵdomElementStart(4, "button", 4);
|
|
16
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("h2")); });
|
|
17
|
+
i0.ɵɵtext(5, "H2");
|
|
18
|
+
i0.ɵɵdomElementEnd()();
|
|
19
|
+
i0.ɵɵdomElementStart(6, "div", 2)(7, "button", 5);
|
|
20
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("bold")); });
|
|
21
|
+
i0.ɵɵtext(8, "B");
|
|
22
|
+
i0.ɵɵdomElementEnd();
|
|
23
|
+
i0.ɵɵdomElementStart(9, "button", 6);
|
|
24
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("italic")); });
|
|
25
|
+
i0.ɵɵtext(10, "I");
|
|
26
|
+
i0.ɵɵdomElementEnd();
|
|
27
|
+
i0.ɵɵdomElementStart(11, "button", 7);
|
|
28
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("strike")); });
|
|
29
|
+
i0.ɵɵtext(12, "S");
|
|
30
|
+
i0.ɵɵdomElementEnd()();
|
|
31
|
+
i0.ɵɵdomElementStart(13, "div", 2)(14, "button", 8);
|
|
32
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("bulletList")); });
|
|
33
|
+
i0.ɵɵtext(15, "UL");
|
|
34
|
+
i0.ɵɵdomElementEnd();
|
|
35
|
+
i0.ɵɵdomElementStart(16, "button", 9);
|
|
36
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("orderedList")); });
|
|
37
|
+
i0.ɵɵtext(17, "OL");
|
|
38
|
+
i0.ɵɵdomElementEnd();
|
|
39
|
+
i0.ɵɵdomElementStart(18, "button", 10);
|
|
40
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("indent")); });
|
|
41
|
+
i0.ɵɵtext(19, "\u2192");
|
|
42
|
+
i0.ɵɵdomElementEnd();
|
|
43
|
+
i0.ɵɵdomElementStart(20, "button", 11);
|
|
44
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_20_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("outdent")); });
|
|
45
|
+
i0.ɵɵtext(21, "\u2190");
|
|
46
|
+
i0.ɵɵdomElementEnd()();
|
|
47
|
+
i0.ɵɵdomElementStart(22, "div", 2)(23, "button", 12);
|
|
48
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("blockquote")); });
|
|
49
|
+
i0.ɵɵtext(24, "\u275D");
|
|
50
|
+
i0.ɵɵdomElementEnd();
|
|
51
|
+
i0.ɵɵdomElementStart(25, "button", 13);
|
|
52
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("codeBlock")); });
|
|
53
|
+
i0.ɵɵtext(26, "</>");
|
|
54
|
+
i0.ɵɵdomElementEnd()();
|
|
55
|
+
i0.ɵɵdomElementStart(27, "div", 2)(28, "button", 14);
|
|
56
|
+
i0.ɵɵdomListener("click", function SdMarkdownEditor_Conditional_0_Template_button_click_28_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.execCmd("clean")); });
|
|
57
|
+
i0.ɵɵtext(29, "Tx");
|
|
58
|
+
i0.ɵɵdomElementEnd()()();
|
|
59
|
+
} if (rf & 2) {
|
|
60
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
61
|
+
i0.ɵɵadvance(2);
|
|
62
|
+
i0.ɵɵclassProp("_active", ctx_r1.activeStates().h1);
|
|
63
|
+
i0.ɵɵadvance(2);
|
|
64
|
+
i0.ɵɵclassProp("_active", ctx_r1.activeStates().h2);
|
|
65
|
+
i0.ɵɵadvance(3);
|
|
66
|
+
i0.ɵɵclassProp("_active", ctx_r1.activeStates().bold);
|
|
67
|
+
i0.ɵɵadvance(2);
|
|
68
|
+
i0.ɵɵclassProp("_active", ctx_r1.activeStates().italic);
|
|
69
|
+
i0.ɵɵadvance(2);
|
|
70
|
+
i0.ɵɵclassProp("_active", ctx_r1.activeStates().strike);
|
|
71
|
+
i0.ɵɵadvance(3);
|
|
72
|
+
i0.ɵɵclassProp("_active", ctx_r1.activeStates().bulletList);
|
|
73
|
+
i0.ɵɵadvance(2);
|
|
74
|
+
i0.ɵɵclassProp("_active", ctx_r1.activeStates().orderedList);
|
|
75
|
+
i0.ɵɵadvance(7);
|
|
76
|
+
i0.ɵɵclassProp("_active", ctx_r1.activeStates().blockquote);
|
|
77
|
+
i0.ɵɵadvance(2);
|
|
78
|
+
i0.ɵɵclassProp("_active", ctx_r1.activeStates().codeBlock);
|
|
79
|
+
} }
|
|
80
|
+
const DEFAULT_EXTENSIONS = [
|
|
81
|
+
StarterKit,
|
|
82
|
+
Markdown,
|
|
83
|
+
];
|
|
84
|
+
export class SdMarkdownEditor {
|
|
85
|
+
value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
|
|
86
|
+
disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
87
|
+
readonly = input(false, { ...(ngDevMode ? { debugName: "readonly" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
88
|
+
required = input(false, { ...(ngDevMode ? { debugName: "required" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
|
|
89
|
+
placeholder = input(...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
90
|
+
validatorFn = input(...(ngDevMode ? [undefined, { debugName: "validatorFn" }] : /* istanbul ignore next */ []));
|
|
91
|
+
_elRef = inject(ElementRef);
|
|
92
|
+
_destroyRef = inject(DestroyRef);
|
|
93
|
+
/** @internal -- TipTap Editor 인스턴스. 테스트 및 고급 사용자용 */
|
|
94
|
+
editor = signal(undefined, ...(ngDevMode ? [{ debugName: "editor" }] : /* istanbul ignore next */ []));
|
|
95
|
+
_toolbar = useTiptapToolbar({ editor: this.editor });
|
|
96
|
+
activeStates = this._toolbar.activeStates;
|
|
97
|
+
_lastEditorMarkdown;
|
|
98
|
+
_lastExtensions;
|
|
99
|
+
_resolvedExtensions = computed(() => {
|
|
100
|
+
const ph = this.placeholder();
|
|
101
|
+
if (ph != null) {
|
|
102
|
+
return [...DEFAULT_EXTENSIONS, Placeholder.configure({ placeholder: ph })];
|
|
103
|
+
}
|
|
104
|
+
return DEFAULT_EXTENSIONS;
|
|
105
|
+
}, ...(ngDevMode ? [{ debugName: "_resolvedExtensions" }] : /* istanbul ignore next */ []));
|
|
106
|
+
constructor() {
|
|
107
|
+
effect(() => {
|
|
108
|
+
const extensions = this._resolvedExtensions();
|
|
109
|
+
const value = this.value();
|
|
110
|
+
const val = value === "" ? undefined : value;
|
|
111
|
+
if (value === "") {
|
|
112
|
+
untracked(() => this.value.set(undefined));
|
|
113
|
+
}
|
|
114
|
+
if (this._lastExtensions !== extensions) {
|
|
115
|
+
this._lastExtensions = extensions;
|
|
116
|
+
this._destroyEditor();
|
|
117
|
+
this._createEditor(extensions, val);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (val === this._lastEditorMarkdown)
|
|
121
|
+
return;
|
|
122
|
+
const currentEditor = untracked(() => this.editor());
|
|
123
|
+
if (currentEditor == null)
|
|
124
|
+
return;
|
|
125
|
+
const currentMarkdown = this._getEditorMarkdownFrom(currentEditor);
|
|
126
|
+
if (currentMarkdown === val)
|
|
127
|
+
return;
|
|
128
|
+
currentEditor.commands.setContent(val ?? "", { contentType: "markdown", emitUpdate: false });
|
|
129
|
+
this._lastEditorMarkdown = undefined;
|
|
130
|
+
});
|
|
131
|
+
effect(() => {
|
|
132
|
+
const ed = this.editor();
|
|
133
|
+
if (ed == null)
|
|
134
|
+
return;
|
|
135
|
+
const editable = !this.disabled() && !this.readonly();
|
|
136
|
+
ed.setEditable(editable);
|
|
137
|
+
});
|
|
138
|
+
setupInvalid(() => {
|
|
139
|
+
const errorMessages = [];
|
|
140
|
+
if (this.value() == null) {
|
|
141
|
+
if (this.required()) {
|
|
142
|
+
errorMessages.push("값을 입력하세요.");
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const validatorFn = this.validatorFn();
|
|
146
|
+
if (validatorFn != null) {
|
|
147
|
+
const message = validatorFn(this.value());
|
|
148
|
+
if (message != null) {
|
|
149
|
+
errorMessages.push(message);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return errorMessages.join("\r\n");
|
|
153
|
+
});
|
|
154
|
+
this._destroyRef.onDestroy(() => {
|
|
155
|
+
this._destroyEditor();
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
execCmd(cmd) {
|
|
159
|
+
if (this.disabled() || this.readonly())
|
|
160
|
+
return;
|
|
161
|
+
this._toolbar.execCmd(cmd);
|
|
162
|
+
}
|
|
163
|
+
_createEditor(extensions, initialContent) {
|
|
164
|
+
const container = this._elRef.nativeElement.querySelector("._editor-container");
|
|
165
|
+
if (container == null)
|
|
166
|
+
return;
|
|
167
|
+
this.editor.set(new Editor({
|
|
168
|
+
element: container,
|
|
169
|
+
extensions,
|
|
170
|
+
content: initialContent ?? "",
|
|
171
|
+
contentType: "markdown",
|
|
172
|
+
editable: untracked(() => !this.disabled() && !this.readonly()),
|
|
173
|
+
onUpdate: ({ editor }) => {
|
|
174
|
+
const markdown = this._getEditorMarkdownFrom(editor);
|
|
175
|
+
this._lastEditorMarkdown = markdown;
|
|
176
|
+
this.value.set(markdown);
|
|
177
|
+
},
|
|
178
|
+
onTransaction: () => {
|
|
179
|
+
this._toolbar.refreshActiveStates();
|
|
180
|
+
},
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
_destroyEditor() {
|
|
184
|
+
const ed = untracked(() => this.editor());
|
|
185
|
+
if (ed != null) {
|
|
186
|
+
ed.destroy();
|
|
187
|
+
this.editor.set(undefined);
|
|
188
|
+
}
|
|
189
|
+
this._lastEditorMarkdown = undefined;
|
|
190
|
+
}
|
|
191
|
+
_getEditorMarkdownFrom(editor) {
|
|
192
|
+
if (editor.isEmpty)
|
|
193
|
+
return undefined;
|
|
194
|
+
return editor.getMarkdown();
|
|
195
|
+
}
|
|
196
|
+
static ɵfac = function SdMarkdownEditor_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SdMarkdownEditor)(); };
|
|
197
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SdMarkdownEditor, selectors: [["sd-markdown-editor"]], hostVars: 2, hostBindings: function SdMarkdownEditor_HostBindings(rf, ctx) { if (rf & 2) {
|
|
198
|
+
i0.ɵɵattribute("data-sd-disabled", ctx.disabled())("data-sd-readonly", ctx.readonly());
|
|
199
|
+
} }, inputs: { value: [1, "value"], disabled: [1, "disabled"], readonly: [1, "readonly"], required: [1, "required"], placeholder: [1, "placeholder"], validatorFn: [1, "validatorFn"] }, outputs: { value: "valueChange" }, decls: 2, vars: 1, consts: [[1, "_toolbar"], [1, "_editor-container"], [1, "_btn-group"], ["type", "button", "data-cmd", "h1", 3, "click"], ["type", "button", "data-cmd", "h2", 3, "click"], ["type", "button", "data-cmd", "bold", 3, "click"], ["type", "button", "data-cmd", "italic", 3, "click"], ["type", "button", "data-cmd", "strike", 3, "click"], ["type", "button", "data-cmd", "bulletList", 3, "click"], ["type", "button", "data-cmd", "orderedList", 3, "click"], ["type", "button", "data-cmd", "indent", 3, "click"], ["type", "button", "data-cmd", "outdent", 3, "click"], ["type", "button", "data-cmd", "blockquote", 3, "click"], ["type", "button", "data-cmd", "codeBlock", 3, "click"], ["type", "button", "data-cmd", "clean", 3, "click"]], template: function SdMarkdownEditor_Template(rf, ctx) { if (rf & 1) {
|
|
200
|
+
i0.ɵɵconditionalCreate(0, SdMarkdownEditor_Conditional_0_Template, 30, 18, "div", 0);
|
|
201
|
+
i0.ɵɵdomElement(1, "div", 1);
|
|
202
|
+
} if (rf & 2) {
|
|
203
|
+
i0.ɵɵconditional(!ctx.disabled() && !ctx.readonly() ? 0 : -1);
|
|
204
|
+
} }, styles: ["sd-markdown-editor {\n display: block;\n position: relative;\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: var(--theme-secondary-lightest);\n}\nsd-markdown-editor > ._toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--gap-xs);\n padding: var(--gap-xs);\n border-bottom: 1px solid var(--trans-lighter);\n}\nsd-markdown-editor > ._toolbar > ._btn-group {\n display: flex;\n gap: 1px;\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button {\n padding: var(--gap-xs) var(--gap-sm);\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: transparent;\n cursor: pointer;\n font-size: var(--font-size-default);\n line-height: 1;\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button._active {\n background: var(--theme-primary-default);\n color: var(--text-trans-rev-default);\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button:hover {\n background: var(--trans-lighter);\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button._active:hover {\n background: var(--theme-primary-default);\n}\nsd-markdown-editor > ._editor-container {\n padding: var(--gap-sm);\n min-height: 6.25rem;\n font-family: var(--font-family-field);\n}\nsd-markdown-editor > ._editor-container > .tiptap {\n outline: none;\n}\nsd-markdown-editor > ._editor-container > .tiptap:focus {\n outline: none;\n}\nsd-markdown-editor[data-sd-disabled=true] {\n background: var(--theme-gray-lightest);\n color: var(--text-trans-light);\n}\nsd-markdown-editor[data-sd-disabled=true] > ._editor-container > .tiptap {\n cursor: not-allowed;\n}\nsd-markdown-editor[data-sd-readonly=true] > ._editor-container > .tiptap {\n cursor: default;\n}"], encapsulation: 2, changeDetection: 0 });
|
|
205
|
+
}
|
|
206
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdMarkdownEditor, [{
|
|
207
|
+
type: Component,
|
|
208
|
+
args: [{ selector: "sd-markdown-editor", changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, imports: [], template: `
|
|
209
|
+
@if (!disabled() && !readonly()) {
|
|
210
|
+
<div class="_toolbar">
|
|
211
|
+
<div class="_btn-group">
|
|
212
|
+
<button type="button" data-cmd="h1" [class._active]="activeStates().h1"
|
|
213
|
+
(click)="execCmd('h1')">H1</button>
|
|
214
|
+
<button type="button" data-cmd="h2" [class._active]="activeStates().h2"
|
|
215
|
+
(click)="execCmd('h2')">H2</button>
|
|
216
|
+
</div>
|
|
217
|
+
<div class="_btn-group">
|
|
218
|
+
<button type="button" data-cmd="bold" [class._active]="activeStates().bold"
|
|
219
|
+
(click)="execCmd('bold')">B</button>
|
|
220
|
+
<button type="button" data-cmd="italic" [class._active]="activeStates().italic"
|
|
221
|
+
(click)="execCmd('italic')">I</button>
|
|
222
|
+
<button type="button" data-cmd="strike" [class._active]="activeStates().strike"
|
|
223
|
+
(click)="execCmd('strike')">S</button>
|
|
224
|
+
</div>
|
|
225
|
+
<div class="_btn-group">
|
|
226
|
+
<button type="button" data-cmd="bulletList" [class._active]="activeStates().bulletList"
|
|
227
|
+
(click)="execCmd('bulletList')">UL</button>
|
|
228
|
+
<button type="button" data-cmd="orderedList" [class._active]="activeStates().orderedList"
|
|
229
|
+
(click)="execCmd('orderedList')">OL</button>
|
|
230
|
+
<button type="button" data-cmd="indent" (click)="execCmd('indent')">→</button>
|
|
231
|
+
<button type="button" data-cmd="outdent" (click)="execCmd('outdent')">←</button>
|
|
232
|
+
</div>
|
|
233
|
+
<div class="_btn-group">
|
|
234
|
+
<button type="button" data-cmd="blockquote" [class._active]="activeStates().blockquote"
|
|
235
|
+
(click)="execCmd('blockquote')">❝</button>
|
|
236
|
+
<button type="button" data-cmd="codeBlock" [class._active]="activeStates().codeBlock"
|
|
237
|
+
(click)="execCmd('codeBlock')"></></button>
|
|
238
|
+
</div>
|
|
239
|
+
<div class="_btn-group">
|
|
240
|
+
<button type="button" data-cmd="clean" (click)="execCmd('clean')">Tx</button>
|
|
241
|
+
</div>
|
|
242
|
+
</div>
|
|
243
|
+
}
|
|
244
|
+
<div class="_editor-container"></div>
|
|
245
|
+
`, host: {
|
|
246
|
+
"[attr.data-sd-disabled]": "disabled()",
|
|
247
|
+
"[attr.data-sd-readonly]": "readonly()",
|
|
248
|
+
}, styles: ["sd-markdown-editor {\n display: block;\n position: relative;\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: var(--theme-secondary-lightest);\n}\nsd-markdown-editor > ._toolbar {\n display: flex;\n flex-wrap: wrap;\n gap: var(--gap-xs);\n padding: var(--gap-xs);\n border-bottom: 1px solid var(--trans-lighter);\n}\nsd-markdown-editor > ._toolbar > ._btn-group {\n display: flex;\n gap: 1px;\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button {\n padding: var(--gap-xs) var(--gap-sm);\n border: 1px solid var(--trans-lighter);\n border-radius: var(--border-radius-default);\n background: transparent;\n cursor: pointer;\n font-size: var(--font-size-default);\n line-height: 1;\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button._active {\n background: var(--theme-primary-default);\n color: var(--text-trans-rev-default);\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button:hover {\n background: var(--trans-lighter);\n}\nsd-markdown-editor > ._toolbar > ._btn-group > button._active:hover {\n background: var(--theme-primary-default);\n}\nsd-markdown-editor > ._editor-container {\n padding: var(--gap-sm);\n min-height: 6.25rem;\n font-family: var(--font-family-field);\n}\nsd-markdown-editor > ._editor-container > .tiptap {\n outline: none;\n}\nsd-markdown-editor > ._editor-container > .tiptap:focus {\n outline: none;\n}\nsd-markdown-editor[data-sd-disabled=true] {\n background: var(--theme-gray-lightest);\n color: var(--text-trans-light);\n}\nsd-markdown-editor[data-sd-disabled=true] > ._editor-container > .tiptap {\n cursor: not-allowed;\n}\nsd-markdown-editor[data-sd-readonly=true] > ._editor-container > .tiptap {\n cursor: default;\n}"] }]
|
|
249
|
+
}], () => [], { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], required: [{ type: i0.Input, args: [{ isSignal: true, alias: "required", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], validatorFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "validatorFn", required: false }] }] }); })();
|
|
250
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdMarkdownEditor, { className: "SdMarkdownEditor", filePath: "packages/angular/src/features/editor/sd-markdown-editor.ts", lineNumber: 154 }); })();
|
package/dist/index.d.ts
CHANGED
|
@@ -111,6 +111,7 @@ export { SdThemeProvider } from "./features/theme/sd-theme-provider";
|
|
|
111
111
|
export { SdThemeSelector } from "./features/theme/sd-theme-selector";
|
|
112
112
|
export { SdAddressSearchModal, type Address, } from "./features/address/sd-address-search.modal";
|
|
113
113
|
export { SdTiptapEditor } from "./features/editor/sd-tiptap-editor";
|
|
114
|
+
export { SdMarkdownEditor } from "./features/editor/sd-markdown-editor";
|
|
114
115
|
export { SdLabel } from "./features/visual/sd-label";
|
|
115
116
|
export { SdNote } from "./features/visual/sd-note";
|
|
116
117
|
export { SdProgress } from "./features/visual/sd-progress";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -148,6 +148,7 @@ export { SdThemeSelector } from "./features/theme/sd-theme-selector";
|
|
|
148
148
|
export { SdAddressSearchModal, } from "./features/address/sd-address-search.modal";
|
|
149
149
|
// features/editor
|
|
150
150
|
export { SdTiptapEditor } from "./features/editor/sd-tiptap-editor";
|
|
151
|
+
export { SdMarkdownEditor } from "./features/editor/sd-markdown-editor";
|
|
151
152
|
// features/visual
|
|
152
153
|
export { SdLabel } from "./features/visual/sd-label";
|
|
153
154
|
export { SdNote } from "./features/visual/sd-note";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@simplysm/angular",
|
|
3
|
-
"version": "14.
|
|
3
|
+
"version": "14.1.1",
|
|
4
4
|
"description": "심플리즘 패키지 - Angular",
|
|
5
5
|
"author": "심플리즘",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -33,28 +33,29 @@
|
|
|
33
33
|
"@angular/service-worker": "^21.2.17",
|
|
34
34
|
"@ng-icons/core": "^33.2.4",
|
|
35
35
|
"@ng-icons/tabler-icons": "^33.2.4",
|
|
36
|
-
"@tiptap/core": "^3.
|
|
37
|
-
"@tiptap/extension-color": "^3.
|
|
38
|
-
"@tiptap/extension-document": "^3.
|
|
39
|
-
"@tiptap/extension-highlight": "^3.
|
|
40
|
-
"@tiptap/extension-image": "^3.
|
|
41
|
-
"@tiptap/extension-paragraph": "^3.
|
|
42
|
-
"@tiptap/extension-placeholder": "^3.
|
|
43
|
-
"@tiptap/extension-text": "^3.
|
|
44
|
-
"@tiptap/extension-text-align": "^3.
|
|
45
|
-
"@tiptap/extension-text-style": "^3.
|
|
46
|
-
"@tiptap/extension-underline": "^3.
|
|
47
|
-
"@tiptap/
|
|
36
|
+
"@tiptap/core": "^3.27.1",
|
|
37
|
+
"@tiptap/extension-color": "^3.27.1",
|
|
38
|
+
"@tiptap/extension-document": "^3.27.1",
|
|
39
|
+
"@tiptap/extension-highlight": "^3.27.1",
|
|
40
|
+
"@tiptap/extension-image": "^3.27.1",
|
|
41
|
+
"@tiptap/extension-paragraph": "^3.27.1",
|
|
42
|
+
"@tiptap/extension-placeholder": "^3.27.1",
|
|
43
|
+
"@tiptap/extension-text": "^3.27.1",
|
|
44
|
+
"@tiptap/extension-text-align": "^3.27.1",
|
|
45
|
+
"@tiptap/extension-text-style": "^3.27.1",
|
|
46
|
+
"@tiptap/extension-underline": "^3.27.1",
|
|
47
|
+
"@tiptap/markdown": "^3.27.1",
|
|
48
|
+
"@tiptap/starter-kit": "^3.27.1",
|
|
48
49
|
"bwip-js": "^4.11.1",
|
|
49
50
|
"echarts": "^6.1.0",
|
|
50
51
|
"html-to-image": "^1.11.13",
|
|
51
52
|
"jspdf": "^4.2.1",
|
|
52
53
|
"rxjs": "^7.8.2",
|
|
53
54
|
"tabbable": "^6.4.0",
|
|
54
|
-
"@simplysm/core-browser": "14.
|
|
55
|
-
"@simplysm/
|
|
56
|
-
"@simplysm/
|
|
57
|
-
"@simplysm/service-common": "14.
|
|
55
|
+
"@simplysm/core-browser": "14.1.1",
|
|
56
|
+
"@simplysm/core-common": "14.1.1",
|
|
57
|
+
"@simplysm/service-client": "14.1.1",
|
|
58
|
+
"@simplysm/service-common": "14.1.1"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
60
61
|
"@angular/compiler": "^21.2.17",
|
|
@@ -41,41 +41,47 @@ body.sd-theme-blueprint,
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
.sd-theme-blueprint sd-permission-table table > * > tr > * {
|
|
45
|
-
border-bottom: 1px solid var(--border-color-lighter);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme="first"] > *._before,
|
|
49
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme="first"] > *._title,
|
|
50
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme="first"] > *._after {
|
|
51
|
-
background: var(--trans-lighter);
|
|
52
|
-
border-top: 1px solid var(--border-color-default);
|
|
53
|
-
border-bottom: 1px solid var(--border-color-default);
|
|
54
|
-
color: var(--text-trans-default);
|
|
55
|
-
font-weight: 700;
|
|
56
|
-
|
|
57
|
-
> * {
|
|
58
|
-
color: var(--text-trans-default) !important;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// 하위 depth 틴트(info/warning/success lightest) 제거 → 무지, 행 헤어라인으로만 구분
|
|
63
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme="info"] > *._title,
|
|
64
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme="info"] > *._after,
|
|
65
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme="warning"] > *._title,
|
|
66
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme="warning"] > *._after,
|
|
67
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme="success"] > *._title,
|
|
68
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme="success"] > *._after {
|
|
69
|
-
background: transparent;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
44
|
.sd-theme-blueprint {
|
|
73
45
|
sd-modal > ._dialog > ._header {
|
|
74
46
|
background: var(--theme-primary-default);
|
|
75
47
|
color: var(--text-trans-rev-default);
|
|
48
|
+
|
|
49
|
+
> ._close-btn {
|
|
50
|
+
color: var(--text-trans-rev-dark);
|
|
51
|
+
|
|
52
|
+
&:hover {
|
|
53
|
+
color: var(--text-trans-rev-default);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
76
56
|
}
|
|
77
57
|
|
|
78
58
|
sd-crud-detail > sd-base-container > sd-busy-container > .bg-control > .main-align-end {
|
|
79
59
|
background: var(--theme-gray-lightest);
|
|
80
60
|
}
|
|
61
|
+
|
|
62
|
+
sd-permission-table {
|
|
63
|
+
> table > * > tr[data-sd-theme="first"] > *._before,
|
|
64
|
+
> table > * > tr[data-sd-theme="first"] > *._title,
|
|
65
|
+
> table > * > tr[data-sd-theme="first"] > *._after {
|
|
66
|
+
border-radius: 0;
|
|
67
|
+
box-shadow: inset 0 -1px 0 var(--border-color-lighter);
|
|
68
|
+
background: var(--theme-gray-lighter);
|
|
69
|
+
font-weight: bold;
|
|
70
|
+
|
|
71
|
+
> * {
|
|
72
|
+
color: var(--text-trans-default) !important;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
> table > * > tr[data-sd-theme="info"] > *._title,
|
|
77
|
+
> table > * > tr[data-sd-theme="info"] > *._after,
|
|
78
|
+
> table > * > tr[data-sd-theme="warning"] > *._title,
|
|
79
|
+
> table > * > tr[data-sd-theme="warning"] > *._after,
|
|
80
|
+
> table > * > tr[data-sd-theme="success"] > *._title,
|
|
81
|
+
> table > * > tr[data-sd-theme="success"] > *._after {
|
|
82
|
+
border-radius: 0;
|
|
83
|
+
box-shadow: inset 0 -1px 0 var(--border-color-lighter);
|
|
84
|
+
background: var(--theme-gray-lightest);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
81
87
|
}
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
$paper: (
|
|
6
6
|
theme: (
|
|
7
7
|
"gray": (
|
|
8
|
-
lightest: colors.get(
|
|
9
|
-
lighter: colors.get(
|
|
10
|
-
light: colors.get(
|
|
11
|
-
default: colors.get(
|
|
12
|
-
dark: colors.get(
|
|
13
|
-
darker: colors.get(
|
|
14
|
-
darkest: colors.get(
|
|
8
|
+
lightest: colors.get(zinc, 50),
|
|
9
|
+
lighter: colors.get(zinc, 100),
|
|
10
|
+
light: colors.get(zinc, 300),
|
|
11
|
+
default: colors.get(zinc, 500),
|
|
12
|
+
dark: colors.get(zinc, 600),
|
|
13
|
+
darker: colors.get(zinc, 700),
|
|
14
|
+
darkest: colors.get(zinc, 800)
|
|
15
15
|
),
|
|
16
16
|
blue-gray: (
|
|
17
17
|
lightest: colors.get(slate, 50),
|
|
@@ -59,9 +59,9 @@ $paper: (
|
|
|
59
59
|
darkest: colors.get(green, 800)
|
|
60
60
|
),
|
|
61
61
|
warning: (
|
|
62
|
-
lightest: colors.get(orange,
|
|
63
|
-
lighter: colors.get(orange,
|
|
64
|
-
light: colors.get(orange,
|
|
62
|
+
lightest: colors.get(orange, 100),
|
|
63
|
+
lighter: colors.get(orange, 200),
|
|
64
|
+
light: colors.get(orange, 300),
|
|
65
65
|
default: colors.get(orange, 400),
|
|
66
66
|
dark: colors.get(orange, 600),
|
|
67
67
|
darker: colors.get(orange, 700),
|
|
@@ -131,33 +131,33 @@ import {
|
|
|
131
131
|
</sd-form>
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
@if (
|
|
134
|
+
@if (canCreate() || canDelete() || toolTplRef()) {
|
|
135
135
|
<div class="flex-row gap-sm p-xs-default">
|
|
136
|
-
@if (
|
|
136
|
+
@if (canCreate()) {
|
|
137
137
|
<sd-button [size]="'sm'" [theme]="'link-primary'" (click)="create.emit()">
|
|
138
138
|
<ng-icon [svg]="tablerCirclePlus" />
|
|
139
139
|
등록
|
|
140
140
|
</sd-button>
|
|
141
|
-
|
|
141
|
+
}
|
|
142
|
+
@if (canDelete() && selectMode() !== "single") {
|
|
143
|
+
<sd-button
|
|
144
|
+
[size]="'sm'"
|
|
145
|
+
[theme]="'link-danger'"
|
|
146
|
+
(click)="delete.emit(currSelectedItems())"
|
|
147
|
+
[disabled]="!hasSelectedNotDeleted()"
|
|
148
|
+
>
|
|
149
|
+
<ng-icon [svg]="tablerEraser" />
|
|
150
|
+
선택 삭제
|
|
151
|
+
</sd-button>
|
|
152
|
+
@if (hasSelectedDeleted()) {
|
|
142
153
|
<sd-button
|
|
143
154
|
[size]="'sm'"
|
|
144
|
-
[theme]="'link-
|
|
145
|
-
(click)="
|
|
146
|
-
[disabled]="!hasSelectedNotDeleted()"
|
|
155
|
+
[theme]="'link-warning'"
|
|
156
|
+
(click)="restore.emit(currSelectedItems())"
|
|
147
157
|
>
|
|
148
|
-
<ng-icon [svg]="
|
|
149
|
-
선택
|
|
158
|
+
<ng-icon [svg]="tablerRestore" />
|
|
159
|
+
선택 복구
|
|
150
160
|
</sd-button>
|
|
151
|
-
@if (hasSelectedDeleted()) {
|
|
152
|
-
<sd-button
|
|
153
|
-
[size]="'sm'"
|
|
154
|
-
[theme]="'link-warning'"
|
|
155
|
-
(click)="restore.emit(currSelectedItems())"
|
|
156
|
-
>
|
|
157
|
-
<ng-icon [svg]="tablerRestore" />
|
|
158
|
-
선택 복구
|
|
159
|
-
</sd-button>
|
|
160
|
-
}
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
163
|
|
|
@@ -190,7 +190,7 @@ import {
|
|
|
190
190
|
[visiblePageCount]="visiblePageCount()"
|
|
191
191
|
[(sorts)]="sorts"
|
|
192
192
|
[useAutoSort]="totalPageCount() === 0"
|
|
193
|
-
[selectMode]="selectMode() ?? (
|
|
193
|
+
[selectMode]="selectMode() ?? (canDelete() ? 'multi' : undefined)"
|
|
194
194
|
[(selectedKeys)]="selectedKeys"
|
|
195
195
|
[getItemSelectableFn]="getItemSelectableFn()"
|
|
196
196
|
[trackByFn]="trackByFn()"
|
|
@@ -199,7 +199,7 @@ import {
|
|
|
199
199
|
[columnControlsInput]="columnControls()"
|
|
200
200
|
(selectedKeysChange)="onSelectedKeysChange()"
|
|
201
201
|
>
|
|
202
|
-
@if (
|
|
202
|
+
@if (canDelete() && inlineEdit()) {
|
|
203
203
|
<sd-sheet-column
|
|
204
204
|
[fixed]="true"
|
|
205
205
|
[key]="'deleteButton'"
|
|
@@ -234,7 +234,9 @@ export class SdCrudList<TItem, TKey> {
|
|
|
234
234
|
initialized = input(false);
|
|
235
235
|
busyCount = model(0);
|
|
236
236
|
restricted = input(false);
|
|
237
|
-
|
|
237
|
+
canCreate = input(true);
|
|
238
|
+
canEdit = input(true);
|
|
239
|
+
canDelete = input(true);
|
|
238
240
|
inlineEdit = input(true);
|
|
239
241
|
viewType = input.required<SdViewType>();
|
|
240
242
|
selectMode = input<"single" | "multi">();
|
|
@@ -277,7 +279,7 @@ export class SdCrudList<TItem, TKey> {
|
|
|
277
279
|
|
|
278
280
|
columnControls = contentChildren(SdSheetColumn);
|
|
279
281
|
|
|
280
|
-
inlineEditEnabled = computed(() =>
|
|
282
|
+
inlineEditEnabled = computed(() => this.canEdit() && this.inlineEdit());
|
|
281
283
|
|
|
282
284
|
hasSelectedDeleted = computed(() => this.currSelectedItems().some((it) => this.isDeleted(it)));
|
|
283
285
|
hasSelectedNotDeleted = computed(() =>
|