@simplysm/angular 14.0.102 → 14.1.2
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/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 +21 -20
- package/scss/themes/_blueprint-surfaces.scss +26 -28
- package/scss/themes/_variables-blueprint.scss +3 -3
- package/src/controls/checkbox/sd-checkbox.ts +1 -0
- package/src/features/editor/sd-markdown-editor.ts +278 -0
- package/src/index.ts +1 -0
- package/styles.css +26 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-checkbox.d.ts","sourceRoot":"","sources":["../../../src/controls/checkbox/sd-checkbox.ts"],"names":[],"mappings":";AAaA,
|
|
1
|
+
{"version":3,"file":"sd-checkbox.d.ts","sourceRoot":"","sources":["../../../src/controls/checkbox/sd-checkbox.ts"],"names":[],"mappings":";AAaA,qBAoPa,UAAU;IACrB,KAAK,+CAAgB;IACrB,WAAW,6CAAgB,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,EAAc;IAE/E,IAAI,8CAAsB;IAC1B,KAAK,qEAAiD;IACtD,QAAQ,qEAAiD;IAEzD,IAAI,+DAAwB;IAC5B,MAAM,qEAAiD;IACvD,KAAK,qEAAiD;IACtD,KAAK,wJAUD;IAEJ,YAAY,0DAAmB;;IAO/B,OAAO,CAAC,KAAK,EAAE,KAAK;IAYpB,SAAS,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;yCA1C1B,UAAU;2CAAV,UAAU;CAsDtB"}
|
|
@@ -73,7 +73,7 @@ export class SdCheckbox {
|
|
|
73
73
|
i0.ɵɵconditional(!ctx.radio() ? 2 : 3);
|
|
74
74
|
i0.ɵɵadvance(2);
|
|
75
75
|
i0.ɵɵstyleMap(ctx.contentStyle());
|
|
76
|
-
} }, dependencies: [NgIcon], styles: ["/*@function to-rgb($oklch-color) {\n @return color.to-space($oklch-color, rgb);\n}*/\n/*$colors: (\n red: to-rgb(oklch(0.704 0.191 22.216)),\n orange: to-rgb(oklch(0.75 0.183 55.934)),\n amber: to-rgb(oklch(0.828 0.189 84.429)),\n yellow: to-rgb(oklch(0.852 0.199 91.936)),\n lime: to-rgb(oklch(0.841 0.238 128.85)),\n green: to-rgb(oklch(0.792 0.209 151.711)),\n emerald: to-rgb(oklch(0.765 0.177 163.223)),\n teal: to-rgb(oklch(0.777 0.152 181.912)),\n cyan: to-rgb(oklch(0.789 0.154 211.53)),\n sky: to-rgb(oklch(0.746 0.16 232.661)),\n blue: to-rgb(oklch(0.707 0.165 254.624)),\n indigo: to-rgb(oklch(0.673 0.182 276.935)),\n violet: to-rgb(oklch(0.702 0.183 293.541)),\n purple: to-rgb(oklch(0.714 0.203 305.504)),\n fuchsia: to-rgb(oklch(0.74 0.238 322.16)),\n pink: to-rgb(oklch(0.718 0.202 349.761)),\n rose: to-rgb(oklch(0.712 0.194 13.428)),\n slate: to-rgb(oklch(0.704 0.04 256.788)),\n gray: to-rgb(oklch(0.707 0.022 261.325)),\n zinc: to-rgb(oklch(0.705 0.015 286.067)),\n neutral: to-rgb(oklch(0.708 0 0)),\n stone: to-rgb(oklch(0.709 0.01 56.259)),\n);*/\nsd-checkbox {\n display: block;\n padding: var(--gap-sm) var(--gap-default);\n border: 1px solid transparent;\n font-size: var(--font-size-default);\n font-family: var(--font-family);\n font-variant-numeric: tabular-nums;\n line-height: var(--line-height);\n color: var(--text-trans-default);\n color: inherit;\n cursor: pointer;\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2 + 2px);\n gap: var(--gap-sm);\n}\n@supports not (appearance: auto) {\n sd-checkbox {\n gap: 0;\n }\n sd-checkbox > * + * {\n margin-left: var(--gap-sm);\n }\n}\nsd-checkbox > ._indicator_rect {\n display: inline-block;\n vertical-align: -0.125em;\n user-select: none;\n width: calc(var(--font-size-default) + 2px);\n height: calc(var(--font-size-default) + 2px);\n border: 1px solid var(--border-color-light);\n background: var(--theme-secondary-lightest);\n}\nsd-checkbox > ._indicator_rect > ._indicator {\n margin: -1px -2px;\n text-align: center;\n opacity: 0;\n color: var(--text-trans-rev-default);\n}\nsd-checkbox > ._indicator_rect > ._indicator > ng-icon > svg {\n vertical-align: top;\n stroke-width: 2.5px !important;\n}\nsd-checkbox ._contents {\n display: inline-block;\n vertical-align: top;\n padding-left: var(--gap-sm);\n}\nsd-checkbox > ._indicator_rect + ._contents:empty {\n display: none;\n}\nsd-checkbox:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-checked=true] > ._indicator_rect {\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-checked=true] > ._indicator_rect > ._indicator {\n opacity: 1;\n}\nsd-checkbox[data-sd-theme=gray] > ._indicator_rect {\n background: var(--theme-gray-lightest);\n}\nsd-checkbox[data-sd-theme=gray] > ._indicator_rect > ._indicator {\n color: var(--theme-gray-default);\n}\nsd-checkbox[data-sd-theme=gray][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-gray-default);\n background: var(--theme-gray-default);\n}\nsd-checkbox[data-sd-theme=gray][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=gray]:focus > ._indicator_rect {\n border-color: var(--theme-gray-dark);\n}\nsd-checkbox[data-sd-theme=blue-gray] > ._indicator_rect {\n background: var(--theme-blue-gray-lightest);\n}\nsd-checkbox[data-sd-theme=blue-gray] > ._indicator_rect > ._indicator {\n color: var(--theme-blue-gray-default);\n}\nsd-checkbox[data-sd-theme=blue-gray][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-blue-gray-default);\n background: var(--theme-blue-gray-default);\n}\nsd-checkbox[data-sd-theme=blue-gray][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=blue-gray]:focus > ._indicator_rect {\n border-color: var(--theme-blue-gray-dark);\n}\nsd-checkbox[data-sd-theme=primary] > ._indicator_rect {\n background: var(--theme-primary-lightest);\n}\nsd-checkbox[data-sd-theme=primary] > ._indicator_rect > ._indicator {\n color: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=primary][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-primary-default);\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=primary][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=primary]:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-theme=secondary] > ._indicator_rect {\n background: var(--theme-secondary-lightest);\n}\nsd-checkbox[data-sd-theme=secondary] > ._indicator_rect > ._indicator {\n color: var(--theme-secondary-default);\n}\nsd-checkbox[data-sd-theme=secondary][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-secondary-default);\n background: var(--theme-secondary-default);\n}\nsd-checkbox[data-sd-theme=secondary][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=secondary]:focus > ._indicator_rect {\n border-color: var(--theme-secondary-dark);\n}\nsd-checkbox[data-sd-theme=info] > ._indicator_rect {\n background: var(--theme-info-lightest);\n}\nsd-checkbox[data-sd-theme=info] > ._indicator_rect > ._indicator {\n color: var(--theme-info-default);\n}\nsd-checkbox[data-sd-theme=info][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-info-default);\n background: var(--theme-info-default);\n}\nsd-checkbox[data-sd-theme=info][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=info]:focus > ._indicator_rect {\n border-color: var(--theme-info-dark);\n}\nsd-checkbox[data-sd-theme=success] > ._indicator_rect {\n background: var(--theme-success-lightest);\n}\nsd-checkbox[data-sd-theme=success] > ._indicator_rect > ._indicator {\n color: var(--theme-success-default);\n}\nsd-checkbox[data-sd-theme=success][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-success-default);\n background: var(--theme-success-default);\n}\nsd-checkbox[data-sd-theme=success][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=success]:focus > ._indicator_rect {\n border-color: var(--theme-success-dark);\n}\nsd-checkbox[data-sd-theme=warning] > ._indicator_rect {\n background: var(--theme-warning-lightest);\n}\nsd-checkbox[data-sd-theme=warning] > ._indicator_rect > ._indicator {\n color: var(--theme-warning-default);\n}\nsd-checkbox[data-sd-theme=warning][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-warning-default);\n background: var(--theme-warning-default);\n}\nsd-checkbox[data-sd-theme=warning][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=warning]:focus > ._indicator_rect {\n border-color: var(--theme-warning-dark);\n}\nsd-checkbox[data-sd-theme=danger] > ._indicator_rect {\n background: var(--theme-danger-lightest);\n}\nsd-checkbox[data-sd-theme=danger] > ._indicator_rect > ._indicator {\n color: var(--theme-danger-default);\n}\nsd-checkbox[data-sd-theme=danger][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-danger-default);\n background: var(--theme-danger-default);\n}\nsd-checkbox[data-sd-theme=danger][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=danger]:focus > ._indicator_rect {\n border-color: var(--theme-danger-dark);\n}\nsd-checkbox[data-sd-theme=white] > ._indicator_rect {\n background: var(--control-color);\n border-color: var(--text-trans-lightest);\n}\nsd-checkbox[data-sd-theme=white][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-primary-default);\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=white]:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-radio=true] > ._indicator_rect {\n border-radius: 100%;\n padding: var(--gap-xs);\n}\nsd-checkbox[data-sd-radio=true] > ._indicator_rect > ._indicator {\n border-radius: 100%;\n width: 100%;\n height: 100%;\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-radio=true][data-sd-checked=true] > ._indicator_rect {\n background: var(--theme-secondary-lightest);\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-size=sm] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2 + 2px);\n padding: var(--gap-xs) var(--gap-sm);\n gap: var(--gap-xs);\n}\n@supports not (appearance: auto) {\n sd-checkbox[data-sd-size=sm] {\n gap: 0;\n }\n sd-checkbox[data-sd-size=sm] > * + * {\n margin-left: var(--gap-xs);\n }\n}\nsd-checkbox[data-sd-size=lg] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2 + 2px);\n padding: var(--gap-default) var(--gap-lg);\n gap: var(--gap-default);\n}\n@supports not (appearance: auto) {\n sd-checkbox[data-sd-size=lg] {\n gap: 0;\n }\n sd-checkbox[data-sd-size=lg] > * + * {\n margin-left: var(--gap-default);\n }\n}\nsd-checkbox[data-sd-inset=true] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2);\n border: none;\n justify-content: center;\n text-align: center;\n}\nsd-checkbox[data-sd-inset=true][data-sd-size=sm] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2);\n}\nsd-checkbox[data-sd-inset=true][data-sd-size=lg] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2);\n}\nsd-checkbox[data-sd-inline=true] {\n display: inline-block;\n vertical-align: top;\n padding: 0;\n border: none;\n height: calc(var(--font-size-default) * var(--line-height-strip-unit));\n width: auto;\n}\nsd-checkbox[data-sd-disabled=true] {\n opacity: 0.3;\n pointer-events: none;\n}"], encapsulation: 2, changeDetection: 0 });
|
|
76
|
+
} }, dependencies: [NgIcon], styles: ["/*@function to-rgb($oklch-color) {\n @return color.to-space($oklch-color, rgb);\n}*/\n/*$colors: (\n red: to-rgb(oklch(0.704 0.191 22.216)),\n orange: to-rgb(oklch(0.75 0.183 55.934)),\n amber: to-rgb(oklch(0.828 0.189 84.429)),\n yellow: to-rgb(oklch(0.852 0.199 91.936)),\n lime: to-rgb(oklch(0.841 0.238 128.85)),\n green: to-rgb(oklch(0.792 0.209 151.711)),\n emerald: to-rgb(oklch(0.765 0.177 163.223)),\n teal: to-rgb(oklch(0.777 0.152 181.912)),\n cyan: to-rgb(oklch(0.789 0.154 211.53)),\n sky: to-rgb(oklch(0.746 0.16 232.661)),\n blue: to-rgb(oklch(0.707 0.165 254.624)),\n indigo: to-rgb(oklch(0.673 0.182 276.935)),\n violet: to-rgb(oklch(0.702 0.183 293.541)),\n purple: to-rgb(oklch(0.714 0.203 305.504)),\n fuchsia: to-rgb(oklch(0.74 0.238 322.16)),\n pink: to-rgb(oklch(0.718 0.202 349.761)),\n rose: to-rgb(oklch(0.712 0.194 13.428)),\n slate: to-rgb(oklch(0.704 0.04 256.788)),\n gray: to-rgb(oklch(0.707 0.022 261.325)),\n zinc: to-rgb(oklch(0.705 0.015 286.067)),\n neutral: to-rgb(oklch(0.708 0 0)),\n stone: to-rgb(oklch(0.709 0.01 56.259)),\n);*/\nsd-checkbox {\n display: block;\n padding: var(--gap-sm) var(--gap-default);\n border: 1px solid transparent;\n font-size: var(--font-size-default);\n font-family: var(--font-family);\n font-variant-numeric: tabular-nums;\n line-height: var(--line-height);\n color: var(--text-trans-default);\n color: inherit;\n cursor: pointer;\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2 + 2px);\n gap: var(--gap-sm);\n}\n@supports not (appearance: auto) {\n sd-checkbox {\n gap: 0;\n }\n sd-checkbox > * + * {\n margin-left: var(--gap-sm);\n }\n}\nsd-checkbox > ._indicator_rect {\n display: inline-block;\n vertical-align: -0.125em;\n user-select: none;\n width: calc(var(--font-size-default) + 2px);\n height: calc(var(--font-size-default) + 2px);\n border: 1px solid var(--border-color-light);\n background: var(--theme-secondary-lightest);\n}\nsd-checkbox > ._indicator_rect > ._indicator {\n margin: -1px -2px;\n text-align: center;\n opacity: 0;\n color: var(--text-trans-rev-default);\n}\nsd-checkbox > ._indicator_rect > ._indicator > ng-icon > svg {\n vertical-align: top;\n stroke-width: 2.5px !important;\n}\nsd-checkbox ._contents {\n display: inline-block;\n vertical-align: top;\n padding-left: var(--gap-sm);\n}\nsd-checkbox > ._indicator_rect + ._contents:empty {\n display: none;\n}\nsd-checkbox:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-primary-default);\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-checked=true] > ._indicator_rect > ._indicator {\n opacity: 1;\n}\nsd-checkbox[data-sd-theme=gray] > ._indicator_rect {\n background: var(--theme-gray-lightest);\n}\nsd-checkbox[data-sd-theme=gray] > ._indicator_rect > ._indicator {\n color: var(--theme-gray-default);\n}\nsd-checkbox[data-sd-theme=gray][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-gray-default);\n background: var(--theme-gray-default);\n}\nsd-checkbox[data-sd-theme=gray][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=gray]:focus > ._indicator_rect {\n border-color: var(--theme-gray-dark);\n}\nsd-checkbox[data-sd-theme=blue-gray] > ._indicator_rect {\n background: var(--theme-blue-gray-lightest);\n}\nsd-checkbox[data-sd-theme=blue-gray] > ._indicator_rect > ._indicator {\n color: var(--theme-blue-gray-default);\n}\nsd-checkbox[data-sd-theme=blue-gray][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-blue-gray-default);\n background: var(--theme-blue-gray-default);\n}\nsd-checkbox[data-sd-theme=blue-gray][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=blue-gray]:focus > ._indicator_rect {\n border-color: var(--theme-blue-gray-dark);\n}\nsd-checkbox[data-sd-theme=primary] > ._indicator_rect {\n background: var(--theme-primary-lightest);\n}\nsd-checkbox[data-sd-theme=primary] > ._indicator_rect > ._indicator {\n color: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=primary][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-primary-default);\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=primary][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=primary]:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-theme=secondary] > ._indicator_rect {\n background: var(--theme-secondary-lightest);\n}\nsd-checkbox[data-sd-theme=secondary] > ._indicator_rect > ._indicator {\n color: var(--theme-secondary-default);\n}\nsd-checkbox[data-sd-theme=secondary][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-secondary-default);\n background: var(--theme-secondary-default);\n}\nsd-checkbox[data-sd-theme=secondary][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=secondary]:focus > ._indicator_rect {\n border-color: var(--theme-secondary-dark);\n}\nsd-checkbox[data-sd-theme=info] > ._indicator_rect {\n background: var(--theme-info-lightest);\n}\nsd-checkbox[data-sd-theme=info] > ._indicator_rect > ._indicator {\n color: var(--theme-info-default);\n}\nsd-checkbox[data-sd-theme=info][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-info-default);\n background: var(--theme-info-default);\n}\nsd-checkbox[data-sd-theme=info][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=info]:focus > ._indicator_rect {\n border-color: var(--theme-info-dark);\n}\nsd-checkbox[data-sd-theme=success] > ._indicator_rect {\n background: var(--theme-success-lightest);\n}\nsd-checkbox[data-sd-theme=success] > ._indicator_rect > ._indicator {\n color: var(--theme-success-default);\n}\nsd-checkbox[data-sd-theme=success][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-success-default);\n background: var(--theme-success-default);\n}\nsd-checkbox[data-sd-theme=success][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=success]:focus > ._indicator_rect {\n border-color: var(--theme-success-dark);\n}\nsd-checkbox[data-sd-theme=warning] > ._indicator_rect {\n background: var(--theme-warning-lightest);\n}\nsd-checkbox[data-sd-theme=warning] > ._indicator_rect > ._indicator {\n color: var(--theme-warning-default);\n}\nsd-checkbox[data-sd-theme=warning][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-warning-default);\n background: var(--theme-warning-default);\n}\nsd-checkbox[data-sd-theme=warning][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=warning]:focus > ._indicator_rect {\n border-color: var(--theme-warning-dark);\n}\nsd-checkbox[data-sd-theme=danger] > ._indicator_rect {\n background: var(--theme-danger-lightest);\n}\nsd-checkbox[data-sd-theme=danger] > ._indicator_rect > ._indicator {\n color: var(--theme-danger-default);\n}\nsd-checkbox[data-sd-theme=danger][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-danger-default);\n background: var(--theme-danger-default);\n}\nsd-checkbox[data-sd-theme=danger][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=danger]:focus > ._indicator_rect {\n border-color: var(--theme-danger-dark);\n}\nsd-checkbox[data-sd-theme=white] > ._indicator_rect {\n background: var(--control-color);\n border-color: var(--text-trans-lightest);\n}\nsd-checkbox[data-sd-theme=white][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-primary-default);\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=white]:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-radio=true] > ._indicator_rect {\n border-radius: 100%;\n padding: var(--gap-xs);\n}\nsd-checkbox[data-sd-radio=true] > ._indicator_rect > ._indicator {\n border-radius: 100%;\n width: 100%;\n height: 100%;\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-radio=true][data-sd-checked=true] > ._indicator_rect {\n background: var(--theme-secondary-lightest);\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-size=sm] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2 + 2px);\n padding: var(--gap-xs) var(--gap-sm);\n gap: var(--gap-xs);\n}\n@supports not (appearance: auto) {\n sd-checkbox[data-sd-size=sm] {\n gap: 0;\n }\n sd-checkbox[data-sd-size=sm] > * + * {\n margin-left: var(--gap-xs);\n }\n}\nsd-checkbox[data-sd-size=lg] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2 + 2px);\n padding: var(--gap-default) var(--gap-lg);\n gap: var(--gap-default);\n}\n@supports not (appearance: auto) {\n sd-checkbox[data-sd-size=lg] {\n gap: 0;\n }\n sd-checkbox[data-sd-size=lg] > * + * {\n margin-left: var(--gap-default);\n }\n}\nsd-checkbox[data-sd-inset=true] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2);\n border: none;\n justify-content: center;\n text-align: center;\n}\nsd-checkbox[data-sd-inset=true][data-sd-size=sm] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2);\n}\nsd-checkbox[data-sd-inset=true][data-sd-size=lg] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2);\n}\nsd-checkbox[data-sd-inline=true] {\n display: inline-block;\n vertical-align: top;\n padding: 0;\n border: none;\n height: calc(var(--font-size-default) * var(--line-height-strip-unit));\n width: auto;\n}\nsd-checkbox[data-sd-disabled=true] {\n opacity: 0.3;\n pointer-events: none;\n}"], encapsulation: 2, changeDetection: 0 });
|
|
77
77
|
}
|
|
78
78
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SdCheckbox, [{
|
|
79
79
|
type: Component,
|
|
@@ -101,6 +101,6 @@ export class SdCheckbox {
|
|
|
101
101
|
"[attr.tabindex]": "'0'",
|
|
102
102
|
"(click)": "onClick($event)",
|
|
103
103
|
"(keydown)": "onKeydown($event)",
|
|
104
|
-
}, styles: ["/*@function to-rgb($oklch-color) {\n @return color.to-space($oklch-color, rgb);\n}*/\n/*$colors: (\n red: to-rgb(oklch(0.704 0.191 22.216)),\n orange: to-rgb(oklch(0.75 0.183 55.934)),\n amber: to-rgb(oklch(0.828 0.189 84.429)),\n yellow: to-rgb(oklch(0.852 0.199 91.936)),\n lime: to-rgb(oklch(0.841 0.238 128.85)),\n green: to-rgb(oklch(0.792 0.209 151.711)),\n emerald: to-rgb(oklch(0.765 0.177 163.223)),\n teal: to-rgb(oklch(0.777 0.152 181.912)),\n cyan: to-rgb(oklch(0.789 0.154 211.53)),\n sky: to-rgb(oklch(0.746 0.16 232.661)),\n blue: to-rgb(oklch(0.707 0.165 254.624)),\n indigo: to-rgb(oklch(0.673 0.182 276.935)),\n violet: to-rgb(oklch(0.702 0.183 293.541)),\n purple: to-rgb(oklch(0.714 0.203 305.504)),\n fuchsia: to-rgb(oklch(0.74 0.238 322.16)),\n pink: to-rgb(oklch(0.718 0.202 349.761)),\n rose: to-rgb(oklch(0.712 0.194 13.428)),\n slate: to-rgb(oklch(0.704 0.04 256.788)),\n gray: to-rgb(oklch(0.707 0.022 261.325)),\n zinc: to-rgb(oklch(0.705 0.015 286.067)),\n neutral: to-rgb(oklch(0.708 0 0)),\n stone: to-rgb(oklch(0.709 0.01 56.259)),\n);*/\nsd-checkbox {\n display: block;\n padding: var(--gap-sm) var(--gap-default);\n border: 1px solid transparent;\n font-size: var(--font-size-default);\n font-family: var(--font-family);\n font-variant-numeric: tabular-nums;\n line-height: var(--line-height);\n color: var(--text-trans-default);\n color: inherit;\n cursor: pointer;\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2 + 2px);\n gap: var(--gap-sm);\n}\n@supports not (appearance: auto) {\n sd-checkbox {\n gap: 0;\n }\n sd-checkbox > * + * {\n margin-left: var(--gap-sm);\n }\n}\nsd-checkbox > ._indicator_rect {\n display: inline-block;\n vertical-align: -0.125em;\n user-select: none;\n width: calc(var(--font-size-default) + 2px);\n height: calc(var(--font-size-default) + 2px);\n border: 1px solid var(--border-color-light);\n background: var(--theme-secondary-lightest);\n}\nsd-checkbox > ._indicator_rect > ._indicator {\n margin: -1px -2px;\n text-align: center;\n opacity: 0;\n color: var(--text-trans-rev-default);\n}\nsd-checkbox > ._indicator_rect > ._indicator > ng-icon > svg {\n vertical-align: top;\n stroke-width: 2.5px !important;\n}\nsd-checkbox ._contents {\n display: inline-block;\n vertical-align: top;\n padding-left: var(--gap-sm);\n}\nsd-checkbox > ._indicator_rect + ._contents:empty {\n display: none;\n}\nsd-checkbox:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-checked=true] > ._indicator_rect {\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-checked=true] > ._indicator_rect > ._indicator {\n opacity: 1;\n}\nsd-checkbox[data-sd-theme=gray] > ._indicator_rect {\n background: var(--theme-gray-lightest);\n}\nsd-checkbox[data-sd-theme=gray] > ._indicator_rect > ._indicator {\n color: var(--theme-gray-default);\n}\nsd-checkbox[data-sd-theme=gray][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-gray-default);\n background: var(--theme-gray-default);\n}\nsd-checkbox[data-sd-theme=gray][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=gray]:focus > ._indicator_rect {\n border-color: var(--theme-gray-dark);\n}\nsd-checkbox[data-sd-theme=blue-gray] > ._indicator_rect {\n background: var(--theme-blue-gray-lightest);\n}\nsd-checkbox[data-sd-theme=blue-gray] > ._indicator_rect > ._indicator {\n color: var(--theme-blue-gray-default);\n}\nsd-checkbox[data-sd-theme=blue-gray][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-blue-gray-default);\n background: var(--theme-blue-gray-default);\n}\nsd-checkbox[data-sd-theme=blue-gray][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=blue-gray]:focus > ._indicator_rect {\n border-color: var(--theme-blue-gray-dark);\n}\nsd-checkbox[data-sd-theme=primary] > ._indicator_rect {\n background: var(--theme-primary-lightest);\n}\nsd-checkbox[data-sd-theme=primary] > ._indicator_rect > ._indicator {\n color: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=primary][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-primary-default);\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=primary][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=primary]:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-theme=secondary] > ._indicator_rect {\n background: var(--theme-secondary-lightest);\n}\nsd-checkbox[data-sd-theme=secondary] > ._indicator_rect > ._indicator {\n color: var(--theme-secondary-default);\n}\nsd-checkbox[data-sd-theme=secondary][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-secondary-default);\n background: var(--theme-secondary-default);\n}\nsd-checkbox[data-sd-theme=secondary][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=secondary]:focus > ._indicator_rect {\n border-color: var(--theme-secondary-dark);\n}\nsd-checkbox[data-sd-theme=info] > ._indicator_rect {\n background: var(--theme-info-lightest);\n}\nsd-checkbox[data-sd-theme=info] > ._indicator_rect > ._indicator {\n color: var(--theme-info-default);\n}\nsd-checkbox[data-sd-theme=info][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-info-default);\n background: var(--theme-info-default);\n}\nsd-checkbox[data-sd-theme=info][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=info]:focus > ._indicator_rect {\n border-color: var(--theme-info-dark);\n}\nsd-checkbox[data-sd-theme=success] > ._indicator_rect {\n background: var(--theme-success-lightest);\n}\nsd-checkbox[data-sd-theme=success] > ._indicator_rect > ._indicator {\n color: var(--theme-success-default);\n}\nsd-checkbox[data-sd-theme=success][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-success-default);\n background: var(--theme-success-default);\n}\nsd-checkbox[data-sd-theme=success][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=success]:focus > ._indicator_rect {\n border-color: var(--theme-success-dark);\n}\nsd-checkbox[data-sd-theme=warning] > ._indicator_rect {\n background: var(--theme-warning-lightest);\n}\nsd-checkbox[data-sd-theme=warning] > ._indicator_rect > ._indicator {\n color: var(--theme-warning-default);\n}\nsd-checkbox[data-sd-theme=warning][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-warning-default);\n background: var(--theme-warning-default);\n}\nsd-checkbox[data-sd-theme=warning][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=warning]:focus > ._indicator_rect {\n border-color: var(--theme-warning-dark);\n}\nsd-checkbox[data-sd-theme=danger] > ._indicator_rect {\n background: var(--theme-danger-lightest);\n}\nsd-checkbox[data-sd-theme=danger] > ._indicator_rect > ._indicator {\n color: var(--theme-danger-default);\n}\nsd-checkbox[data-sd-theme=danger][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-danger-default);\n background: var(--theme-danger-default);\n}\nsd-checkbox[data-sd-theme=danger][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=danger]:focus > ._indicator_rect {\n border-color: var(--theme-danger-dark);\n}\nsd-checkbox[data-sd-theme=white] > ._indicator_rect {\n background: var(--control-color);\n border-color: var(--text-trans-lightest);\n}\nsd-checkbox[data-sd-theme=white][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-primary-default);\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=white]:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-radio=true] > ._indicator_rect {\n border-radius: 100%;\n padding: var(--gap-xs);\n}\nsd-checkbox[data-sd-radio=true] > ._indicator_rect > ._indicator {\n border-radius: 100%;\n width: 100%;\n height: 100%;\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-radio=true][data-sd-checked=true] > ._indicator_rect {\n background: var(--theme-secondary-lightest);\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-size=sm] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2 + 2px);\n padding: var(--gap-xs) var(--gap-sm);\n gap: var(--gap-xs);\n}\n@supports not (appearance: auto) {\n sd-checkbox[data-sd-size=sm] {\n gap: 0;\n }\n sd-checkbox[data-sd-size=sm] > * + * {\n margin-left: var(--gap-xs);\n }\n}\nsd-checkbox[data-sd-size=lg] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2 + 2px);\n padding: var(--gap-default) var(--gap-lg);\n gap: var(--gap-default);\n}\n@supports not (appearance: auto) {\n sd-checkbox[data-sd-size=lg] {\n gap: 0;\n }\n sd-checkbox[data-sd-size=lg] > * + * {\n margin-left: var(--gap-default);\n }\n}\nsd-checkbox[data-sd-inset=true] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2);\n border: none;\n justify-content: center;\n text-align: center;\n}\nsd-checkbox[data-sd-inset=true][data-sd-size=sm] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2);\n}\nsd-checkbox[data-sd-inset=true][data-sd-size=lg] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2);\n}\nsd-checkbox[data-sd-inline=true] {\n display: inline-block;\n vertical-align: top;\n padding: 0;\n border: none;\n height: calc(var(--font-size-default) * var(--line-height-strip-unit));\n width: auto;\n}\nsd-checkbox[data-sd-disabled=true] {\n opacity: 0.3;\n pointer-events: none;\n}"] }]
|
|
104
|
+
}, styles: ["/*@function to-rgb($oklch-color) {\n @return color.to-space($oklch-color, rgb);\n}*/\n/*$colors: (\n red: to-rgb(oklch(0.704 0.191 22.216)),\n orange: to-rgb(oklch(0.75 0.183 55.934)),\n amber: to-rgb(oklch(0.828 0.189 84.429)),\n yellow: to-rgb(oklch(0.852 0.199 91.936)),\n lime: to-rgb(oklch(0.841 0.238 128.85)),\n green: to-rgb(oklch(0.792 0.209 151.711)),\n emerald: to-rgb(oklch(0.765 0.177 163.223)),\n teal: to-rgb(oklch(0.777 0.152 181.912)),\n cyan: to-rgb(oklch(0.789 0.154 211.53)),\n sky: to-rgb(oklch(0.746 0.16 232.661)),\n blue: to-rgb(oklch(0.707 0.165 254.624)),\n indigo: to-rgb(oklch(0.673 0.182 276.935)),\n violet: to-rgb(oklch(0.702 0.183 293.541)),\n purple: to-rgb(oklch(0.714 0.203 305.504)),\n fuchsia: to-rgb(oklch(0.74 0.238 322.16)),\n pink: to-rgb(oklch(0.718 0.202 349.761)),\n rose: to-rgb(oklch(0.712 0.194 13.428)),\n slate: to-rgb(oklch(0.704 0.04 256.788)),\n gray: to-rgb(oklch(0.707 0.022 261.325)),\n zinc: to-rgb(oklch(0.705 0.015 286.067)),\n neutral: to-rgb(oklch(0.708 0 0)),\n stone: to-rgb(oklch(0.709 0.01 56.259)),\n);*/\nsd-checkbox {\n display: block;\n padding: var(--gap-sm) var(--gap-default);\n border: 1px solid transparent;\n font-size: var(--font-size-default);\n font-family: var(--font-family);\n font-variant-numeric: tabular-nums;\n line-height: var(--line-height);\n color: var(--text-trans-default);\n color: inherit;\n cursor: pointer;\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2 + 2px);\n gap: var(--gap-sm);\n}\n@supports not (appearance: auto) {\n sd-checkbox {\n gap: 0;\n }\n sd-checkbox > * + * {\n margin-left: var(--gap-sm);\n }\n}\nsd-checkbox > ._indicator_rect {\n display: inline-block;\n vertical-align: -0.125em;\n user-select: none;\n width: calc(var(--font-size-default) + 2px);\n height: calc(var(--font-size-default) + 2px);\n border: 1px solid var(--border-color-light);\n background: var(--theme-secondary-lightest);\n}\nsd-checkbox > ._indicator_rect > ._indicator {\n margin: -1px -2px;\n text-align: center;\n opacity: 0;\n color: var(--text-trans-rev-default);\n}\nsd-checkbox > ._indicator_rect > ._indicator > ng-icon > svg {\n vertical-align: top;\n stroke-width: 2.5px !important;\n}\nsd-checkbox ._contents {\n display: inline-block;\n vertical-align: top;\n padding-left: var(--gap-sm);\n}\nsd-checkbox > ._indicator_rect + ._contents:empty {\n display: none;\n}\nsd-checkbox:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-primary-default);\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-checked=true] > ._indicator_rect > ._indicator {\n opacity: 1;\n}\nsd-checkbox[data-sd-theme=gray] > ._indicator_rect {\n background: var(--theme-gray-lightest);\n}\nsd-checkbox[data-sd-theme=gray] > ._indicator_rect > ._indicator {\n color: var(--theme-gray-default);\n}\nsd-checkbox[data-sd-theme=gray][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-gray-default);\n background: var(--theme-gray-default);\n}\nsd-checkbox[data-sd-theme=gray][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=gray]:focus > ._indicator_rect {\n border-color: var(--theme-gray-dark);\n}\nsd-checkbox[data-sd-theme=blue-gray] > ._indicator_rect {\n background: var(--theme-blue-gray-lightest);\n}\nsd-checkbox[data-sd-theme=blue-gray] > ._indicator_rect > ._indicator {\n color: var(--theme-blue-gray-default);\n}\nsd-checkbox[data-sd-theme=blue-gray][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-blue-gray-default);\n background: var(--theme-blue-gray-default);\n}\nsd-checkbox[data-sd-theme=blue-gray][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=blue-gray]:focus > ._indicator_rect {\n border-color: var(--theme-blue-gray-dark);\n}\nsd-checkbox[data-sd-theme=primary] > ._indicator_rect {\n background: var(--theme-primary-lightest);\n}\nsd-checkbox[data-sd-theme=primary] > ._indicator_rect > ._indicator {\n color: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=primary][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-primary-default);\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=primary][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=primary]:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-theme=secondary] > ._indicator_rect {\n background: var(--theme-secondary-lightest);\n}\nsd-checkbox[data-sd-theme=secondary] > ._indicator_rect > ._indicator {\n color: var(--theme-secondary-default);\n}\nsd-checkbox[data-sd-theme=secondary][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-secondary-default);\n background: var(--theme-secondary-default);\n}\nsd-checkbox[data-sd-theme=secondary][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=secondary]:focus > ._indicator_rect {\n border-color: var(--theme-secondary-dark);\n}\nsd-checkbox[data-sd-theme=info] > ._indicator_rect {\n background: var(--theme-info-lightest);\n}\nsd-checkbox[data-sd-theme=info] > ._indicator_rect > ._indicator {\n color: var(--theme-info-default);\n}\nsd-checkbox[data-sd-theme=info][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-info-default);\n background: var(--theme-info-default);\n}\nsd-checkbox[data-sd-theme=info][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=info]:focus > ._indicator_rect {\n border-color: var(--theme-info-dark);\n}\nsd-checkbox[data-sd-theme=success] > ._indicator_rect {\n background: var(--theme-success-lightest);\n}\nsd-checkbox[data-sd-theme=success] > ._indicator_rect > ._indicator {\n color: var(--theme-success-default);\n}\nsd-checkbox[data-sd-theme=success][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-success-default);\n background: var(--theme-success-default);\n}\nsd-checkbox[data-sd-theme=success][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=success]:focus > ._indicator_rect {\n border-color: var(--theme-success-dark);\n}\nsd-checkbox[data-sd-theme=warning] > ._indicator_rect {\n background: var(--theme-warning-lightest);\n}\nsd-checkbox[data-sd-theme=warning] > ._indicator_rect > ._indicator {\n color: var(--theme-warning-default);\n}\nsd-checkbox[data-sd-theme=warning][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-warning-default);\n background: var(--theme-warning-default);\n}\nsd-checkbox[data-sd-theme=warning][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=warning]:focus > ._indicator_rect {\n border-color: var(--theme-warning-dark);\n}\nsd-checkbox[data-sd-theme=danger] > ._indicator_rect {\n background: var(--theme-danger-lightest);\n}\nsd-checkbox[data-sd-theme=danger] > ._indicator_rect > ._indicator {\n color: var(--theme-danger-default);\n}\nsd-checkbox[data-sd-theme=danger][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-danger-default);\n background: var(--theme-danger-default);\n}\nsd-checkbox[data-sd-theme=danger][data-sd-checked=true] > ._indicator_rect > ._indicator {\n color: var(--text-trans-rev-default);\n}\nsd-checkbox[data-sd-theme=danger]:focus > ._indicator_rect {\n border-color: var(--theme-danger-dark);\n}\nsd-checkbox[data-sd-theme=white] > ._indicator_rect {\n background: var(--control-color);\n border-color: var(--text-trans-lightest);\n}\nsd-checkbox[data-sd-theme=white][data-sd-checked=true] > ._indicator_rect {\n border-color: var(--theme-primary-default);\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-theme=white]:focus > ._indicator_rect {\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-radio=true] > ._indicator_rect {\n border-radius: 100%;\n padding: var(--gap-xs);\n}\nsd-checkbox[data-sd-radio=true] > ._indicator_rect > ._indicator {\n border-radius: 100%;\n width: 100%;\n height: 100%;\n background: var(--theme-primary-default);\n}\nsd-checkbox[data-sd-radio=true][data-sd-checked=true] > ._indicator_rect {\n background: var(--theme-secondary-lightest);\n border-color: var(--theme-primary-dark);\n}\nsd-checkbox[data-sd-size=sm] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2 + 2px);\n padding: var(--gap-xs) var(--gap-sm);\n gap: var(--gap-xs);\n}\n@supports not (appearance: auto) {\n sd-checkbox[data-sd-size=sm] {\n gap: 0;\n }\n sd-checkbox[data-sd-size=sm] > * + * {\n margin-left: var(--gap-xs);\n }\n}\nsd-checkbox[data-sd-size=lg] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2 + 2px);\n padding: var(--gap-default) var(--gap-lg);\n gap: var(--gap-default);\n}\n@supports not (appearance: auto) {\n sd-checkbox[data-sd-size=lg] {\n gap: 0;\n }\n sd-checkbox[data-sd-size=lg] > * + * {\n margin-left: var(--gap-default);\n }\n}\nsd-checkbox[data-sd-inset=true] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-sm) * 2);\n border: none;\n justify-content: center;\n text-align: center;\n}\nsd-checkbox[data-sd-inset=true][data-sd-size=sm] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-xs) * 2);\n}\nsd-checkbox[data-sd-inset=true][data-sd-size=lg] {\n height: calc(var(--font-size-default) * var(--line-height-strip-unit) + var(--gap-default) * 2);\n}\nsd-checkbox[data-sd-inline=true] {\n display: inline-block;\n vertical-align: top;\n padding: 0;\n border: none;\n height: calc(var(--font-size-default) * var(--line-height-strip-unit));\n width: auto;\n}\nsd-checkbox[data-sd-disabled=true] {\n opacity: 0.3;\n pointer-events: none;\n}"] }]
|
|
105
105
|
}], () => [], { value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], canChangeFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "canChangeFn", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], radio: [{ type: i0.Input, args: [{ isSignal: true, alias: "radio", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], inline: [{ type: i0.Input, args: [{ isSignal: true, alias: "inline", required: false }] }], inset: [{ type: i0.Input, args: [{ isSignal: true, alias: "inset", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], contentStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "contentStyle", required: false }] }] }); })();
|
|
106
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdCheckbox, { className: "SdCheckbox", filePath: "packages/angular/src/controls/checkbox/sd-checkbox.ts", lineNumber:
|
|
106
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SdCheckbox, { className: "SdCheckbox", filePath: "packages/angular/src/controls/checkbox/sd-checkbox.ts", lineNumber: 258 }); })();
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type WritableSignal } from "@angular/core";
|
|
2
|
+
import { Editor } from "@tiptap/core";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class SdMarkdownEditor {
|
|
5
|
+
value: import("@angular/core").ModelSignal<string | undefined>;
|
|
6
|
+
disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
7
|
+
readonly: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
8
|
+
required: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
9
|
+
placeholder: import("@angular/core").InputSignal<string | undefined>;
|
|
10
|
+
validatorFn: import("@angular/core").InputSignal<((value: string | undefined) => string | undefined) | undefined>;
|
|
11
|
+
private readonly _elRef;
|
|
12
|
+
private readonly _destroyRef;
|
|
13
|
+
/** @internal -- TipTap Editor 인스턴스. 테스트 및 고급 사용자용 */
|
|
14
|
+
editor: WritableSignal<Editor | undefined>;
|
|
15
|
+
private readonly _toolbar;
|
|
16
|
+
activeStates: WritableSignal<import("./useTiptapToolbar").TiptapActiveStates>;
|
|
17
|
+
private _lastEditorMarkdown;
|
|
18
|
+
private _lastExtensions;
|
|
19
|
+
private readonly _resolvedExtensions;
|
|
20
|
+
constructor();
|
|
21
|
+
execCmd(cmd: string): void;
|
|
22
|
+
private _createEditor;
|
|
23
|
+
private _destroyEditor;
|
|
24
|
+
private _getEditorMarkdownFrom;
|
|
25
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SdMarkdownEditor, never>;
|
|
26
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SdMarkdownEditor, "sd-markdown-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "validatorFn": { "alias": "validatorFn"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=sd-markdown-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sd-markdown-editor.d.ts","sourceRoot":"","sources":["../../../src/features/editor/sd-markdown-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,MAAM,EAAqB,MAAM,cAAc,CAAC;;AAWzD,qBA6Ha,gBAAgB;IAC3B,KAAK,0DAAmB;IACxB,QAAQ,qEAAiD;IACzD,QAAQ,qEAAiD;IACzD,QAAQ,qEAAiD;IACzD,WAAW,0DAAmB;IAC9B,WAAW,+CAAiB,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,SAAS,eAAI;IAEzE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAElD,qDAAqD;IACrD,MAAM,EAAE,cAAc,CAAC,MAAM,GAAG,SAAS,CAAC,CAAqB;IAE/D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IACtE,YAAY,kEAA8B;IAE1C,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,eAAe,CAA6B;IAEpD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAMjC;;IA2DH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAK1B,OAAO,CAAC,aAAa;IAqBrB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,sBAAsB;yCAxHnB,gBAAgB;2CAAhB,gBAAgB;CA4H5B"}
|
|
@@ -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":"AAAA,OAAO,wBAAwB,CAAC;AAGhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,YAAY,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACjF,YAAY,EACV,qBAAqB,EACrB,eAAe,EACf,YAAY,GACb,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EACL,uBAAuB,EACvB,KAAK,mBAAmB,GACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGhE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qDAAqD,CAAC;AAGjG,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,GAC7B,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,KAAK,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAGvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0CAA0C,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAG1F,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,YAAY,EACV,MAAM,EACN,UAAU,EACV,YAAY,GACb,MAAM,6CAA6C,CAAC;AAGrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAGlF,OAAO,EAAE,8BAA8B,EAAE,MAAM,0DAA0D,CAAC;AAG1G,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAGxF,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,cAAc,GACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,YAAY,GAClB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,cAAc,EACd,KAAK,UAAU,GAChB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EACL,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,YAAY,GAClB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EACL,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4CAA4C,CAAC;AAGjF,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGpE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGtE,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG1D,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EACL,aAAa,EACb,KAAK,iBAAiB,GACvB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,GACtB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,+CAA+C,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAGzE,OAAO,EACL,aAAa,EACb,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6CAA6C,CAAC;AAGhF,OAAO,EACL,aAAa,EACb,KAAK,gBAAgB,GACtB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAGrE,OAAO,EACL,oBAAoB,EACpB,KAAK,OAAO,GACb,MAAM,4CAA4C,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAGxE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC"}
|
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.2",
|
|
4
4
|
"description": "심플리즘 패키지 - Angular",
|
|
5
5
|
"author": "심플리즘",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,30 +31,31 @@
|
|
|
31
31
|
"@angular/platform-browser": "^21.2.17",
|
|
32
32
|
"@angular/router": "^21.2.17",
|
|
33
33
|
"@angular/service-worker": "^21.2.17",
|
|
34
|
-
"@ng-icons/core": "^33.
|
|
35
|
-
"@ng-icons/tabler-icons": "^33.
|
|
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/
|
|
34
|
+
"@ng-icons/core": "^33.3.0",
|
|
35
|
+
"@ng-icons/tabler-icons": "^33.3.0",
|
|
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
|
-
"tabbable": "^6.
|
|
54
|
-
"@simplysm/core-
|
|
55
|
-
"@simplysm/
|
|
56
|
-
"@simplysm/service-
|
|
57
|
-
"@simplysm/
|
|
54
|
+
"tabbable": "^6.5.0",
|
|
55
|
+
"@simplysm/core-browser": "14.1.2",
|
|
56
|
+
"@simplysm/service-client": "14.1.2",
|
|
57
|
+
"@simplysm/service-common": "14.1.2",
|
|
58
|
+
"@simplysm/core-common": "14.1.2"
|
|
58
59
|
},
|
|
59
60
|
"devDependencies": {
|
|
60
61
|
"@angular/compiler": "^21.2.17",
|
|
@@ -41,34 +41,6 @@ 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);
|
|
@@ -86,4 +58,30 @@ body.sd-theme-blueprint,
|
|
|
86
58
|
sd-crud-detail > sd-base-container > sd-busy-container > .bg-control > .main-align-end {
|
|
87
59
|
background: var(--theme-gray-lightest);
|
|
88
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
|
+
}
|
|
89
87
|
}
|
|
@@ -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),
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
import {
|
|
2
|
+
booleanAttribute,
|
|
3
|
+
ChangeDetectionStrategy,
|
|
4
|
+
Component,
|
|
5
|
+
computed,
|
|
6
|
+
DestroyRef,
|
|
7
|
+
effect,
|
|
8
|
+
ElementRef,
|
|
9
|
+
inject,
|
|
10
|
+
input,
|
|
11
|
+
model,
|
|
12
|
+
signal,
|
|
13
|
+
untracked,
|
|
14
|
+
ViewEncapsulation,
|
|
15
|
+
type WritableSignal,
|
|
16
|
+
} from "@angular/core";
|
|
17
|
+
import { setupInvalid } from "../../core/validation/setupInvalid";
|
|
18
|
+
import { Editor, type AnyExtension } from "@tiptap/core";
|
|
19
|
+
import StarterKit from "@tiptap/starter-kit";
|
|
20
|
+
import Placeholder from "@tiptap/extension-placeholder";
|
|
21
|
+
import { Markdown } from "@tiptap/markdown";
|
|
22
|
+
import { useTiptapToolbar } from "./useTiptapToolbar";
|
|
23
|
+
|
|
24
|
+
const DEFAULT_EXTENSIONS: AnyExtension[] = [
|
|
25
|
+
StarterKit,
|
|
26
|
+
Markdown,
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
@Component({
|
|
30
|
+
selector: "sd-markdown-editor",
|
|
31
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
32
|
+
encapsulation: ViewEncapsulation.None,
|
|
33
|
+
standalone: true,
|
|
34
|
+
imports: [],
|
|
35
|
+
template: `
|
|
36
|
+
@if (!disabled() && !readonly()) {
|
|
37
|
+
<div class="_toolbar">
|
|
38
|
+
<div class="_btn-group">
|
|
39
|
+
<button type="button" data-cmd="h1" [class._active]="activeStates().h1"
|
|
40
|
+
(click)="execCmd('h1')">H1</button>
|
|
41
|
+
<button type="button" data-cmd="h2" [class._active]="activeStates().h2"
|
|
42
|
+
(click)="execCmd('h2')">H2</button>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="_btn-group">
|
|
45
|
+
<button type="button" data-cmd="bold" [class._active]="activeStates().bold"
|
|
46
|
+
(click)="execCmd('bold')">B</button>
|
|
47
|
+
<button type="button" data-cmd="italic" [class._active]="activeStates().italic"
|
|
48
|
+
(click)="execCmd('italic')">I</button>
|
|
49
|
+
<button type="button" data-cmd="strike" [class._active]="activeStates().strike"
|
|
50
|
+
(click)="execCmd('strike')">S</button>
|
|
51
|
+
</div>
|
|
52
|
+
<div class="_btn-group">
|
|
53
|
+
<button type="button" data-cmd="bulletList" [class._active]="activeStates().bulletList"
|
|
54
|
+
(click)="execCmd('bulletList')">UL</button>
|
|
55
|
+
<button type="button" data-cmd="orderedList" [class._active]="activeStates().orderedList"
|
|
56
|
+
(click)="execCmd('orderedList')">OL</button>
|
|
57
|
+
<button type="button" data-cmd="indent" (click)="execCmd('indent')">→</button>
|
|
58
|
+
<button type="button" data-cmd="outdent" (click)="execCmd('outdent')">←</button>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="_btn-group">
|
|
61
|
+
<button type="button" data-cmd="blockquote" [class._active]="activeStates().blockquote"
|
|
62
|
+
(click)="execCmd('blockquote')">❝</button>
|
|
63
|
+
<button type="button" data-cmd="codeBlock" [class._active]="activeStates().codeBlock"
|
|
64
|
+
(click)="execCmd('codeBlock')"></></button>
|
|
65
|
+
</div>
|
|
66
|
+
<div class="_btn-group">
|
|
67
|
+
<button type="button" data-cmd="clean" (click)="execCmd('clean')">Tx</button>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
}
|
|
71
|
+
<div class="_editor-container"></div>
|
|
72
|
+
`,
|
|
73
|
+
styles: [
|
|
74
|
+
/* language=SCSS */ `
|
|
75
|
+
sd-markdown-editor {
|
|
76
|
+
display: block;
|
|
77
|
+
position: relative;
|
|
78
|
+
border: 1px solid var(--trans-lighter);
|
|
79
|
+
border-radius: var(--border-radius-default);
|
|
80
|
+
background: var(--theme-secondary-lightest);
|
|
81
|
+
|
|
82
|
+
> ._toolbar {
|
|
83
|
+
display: flex;
|
|
84
|
+
flex-wrap: wrap;
|
|
85
|
+
gap: var(--gap-xs);
|
|
86
|
+
padding: var(--gap-xs);
|
|
87
|
+
border-bottom: 1px solid var(--trans-lighter);
|
|
88
|
+
|
|
89
|
+
> ._btn-group {
|
|
90
|
+
display: flex;
|
|
91
|
+
gap: 1px;
|
|
92
|
+
|
|
93
|
+
> button {
|
|
94
|
+
padding: var(--gap-xs) var(--gap-sm);
|
|
95
|
+
border: 1px solid var(--trans-lighter);
|
|
96
|
+
border-radius: var(--border-radius-default);
|
|
97
|
+
background: transparent;
|
|
98
|
+
cursor: pointer;
|
|
99
|
+
font-size: var(--font-size-default);
|
|
100
|
+
line-height: 1;
|
|
101
|
+
|
|
102
|
+
&._active {
|
|
103
|
+
background: var(--theme-primary-default);
|
|
104
|
+
color: var(--text-trans-rev-default);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
&:hover {
|
|
108
|
+
background: var(--trans-lighter);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
&._active:hover {
|
|
112
|
+
background: var(--theme-primary-default);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
> ._editor-container {
|
|
119
|
+
padding: var(--gap-sm);
|
|
120
|
+
min-height: 6.25rem;
|
|
121
|
+
font-family: var(--font-family-field);
|
|
122
|
+
|
|
123
|
+
> .tiptap {
|
|
124
|
+
outline: none;
|
|
125
|
+
|
|
126
|
+
&:focus {
|
|
127
|
+
outline: none;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
&[data-sd-disabled="true"] {
|
|
133
|
+
background: var(--theme-gray-lightest);
|
|
134
|
+
color: var(--text-trans-light);
|
|
135
|
+
|
|
136
|
+
> ._editor-container > .tiptap {
|
|
137
|
+
cursor: not-allowed;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
&[data-sd-readonly="true"] {
|
|
142
|
+
> ._editor-container > .tiptap {
|
|
143
|
+
cursor: default;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
`,
|
|
148
|
+
],
|
|
149
|
+
host: {
|
|
150
|
+
"[attr.data-sd-disabled]": "disabled()",
|
|
151
|
+
"[attr.data-sd-readonly]": "readonly()",
|
|
152
|
+
},
|
|
153
|
+
})
|
|
154
|
+
export class SdMarkdownEditor {
|
|
155
|
+
value = model<string>();
|
|
156
|
+
disabled = input(false, { transform: booleanAttribute });
|
|
157
|
+
readonly = input(false, { transform: booleanAttribute });
|
|
158
|
+
required = input(false, { transform: booleanAttribute });
|
|
159
|
+
placeholder = input<string>();
|
|
160
|
+
validatorFn = input<(value: string | undefined) => string | undefined>();
|
|
161
|
+
|
|
162
|
+
private readonly _elRef = inject<ElementRef<HTMLElement>>(ElementRef);
|
|
163
|
+
private readonly _destroyRef = inject(DestroyRef);
|
|
164
|
+
|
|
165
|
+
/** @internal -- TipTap Editor 인스턴스. 테스트 및 고급 사용자용 */
|
|
166
|
+
editor: WritableSignal<Editor | undefined> = signal(undefined);
|
|
167
|
+
|
|
168
|
+
private readonly _toolbar = useTiptapToolbar({ editor: this.editor });
|
|
169
|
+
activeStates = this._toolbar.activeStates;
|
|
170
|
+
|
|
171
|
+
private _lastEditorMarkdown: string | undefined;
|
|
172
|
+
private _lastExtensions: AnyExtension[] | undefined;
|
|
173
|
+
|
|
174
|
+
private readonly _resolvedExtensions = computed(() => {
|
|
175
|
+
const ph = this.placeholder();
|
|
176
|
+
if (ph != null) {
|
|
177
|
+
return [...DEFAULT_EXTENSIONS, Placeholder.configure({ placeholder: ph })];
|
|
178
|
+
}
|
|
179
|
+
return DEFAULT_EXTENSIONS;
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
constructor() {
|
|
183
|
+
effect(() => {
|
|
184
|
+
const extensions = this._resolvedExtensions();
|
|
185
|
+
const value = this.value();
|
|
186
|
+
const val = value === "" ? undefined : value;
|
|
187
|
+
if (value === "") {
|
|
188
|
+
untracked(() => this.value.set(undefined));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (this._lastExtensions !== extensions) {
|
|
192
|
+
this._lastExtensions = extensions;
|
|
193
|
+
this._destroyEditor();
|
|
194
|
+
this._createEditor(extensions, val);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (val === this._lastEditorMarkdown) return;
|
|
199
|
+
|
|
200
|
+
const currentEditor = untracked(() => this.editor());
|
|
201
|
+
if (currentEditor == null) return;
|
|
202
|
+
const currentMarkdown = this._getEditorMarkdownFrom(currentEditor);
|
|
203
|
+
if (currentMarkdown === val) return;
|
|
204
|
+
currentEditor.commands.setContent(val ?? "", { contentType: "markdown", emitUpdate: false });
|
|
205
|
+
this._lastEditorMarkdown = undefined;
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
effect(() => {
|
|
209
|
+
const ed = this.editor();
|
|
210
|
+
if (ed == null) return;
|
|
211
|
+
const editable = !this.disabled() && !this.readonly();
|
|
212
|
+
ed.setEditable(editable);
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
setupInvalid(() => {
|
|
216
|
+
const errorMessages: string[] = [];
|
|
217
|
+
if (this.value() == null) {
|
|
218
|
+
if (this.required()) {
|
|
219
|
+
errorMessages.push("값을 입력하세요.");
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
const validatorFn = this.validatorFn();
|
|
224
|
+
if (validatorFn != null) {
|
|
225
|
+
const message = validatorFn(this.value());
|
|
226
|
+
if (message != null) {
|
|
227
|
+
errorMessages.push(message);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
return errorMessages.join("\r\n");
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
this._destroyRef.onDestroy(() => {
|
|
235
|
+
this._destroyEditor();
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
execCmd(cmd: string): void {
|
|
240
|
+
if (this.disabled() || this.readonly()) return;
|
|
241
|
+
this._toolbar.execCmd(cmd);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
private _createEditor(extensions: AnyExtension[], initialContent: string | undefined): void {
|
|
245
|
+
const container = this._elRef.nativeElement.querySelector("._editor-container");
|
|
246
|
+
if (container == null) return;
|
|
247
|
+
|
|
248
|
+
this.editor.set(new Editor({
|
|
249
|
+
element: container,
|
|
250
|
+
extensions,
|
|
251
|
+
content: initialContent ?? "",
|
|
252
|
+
contentType: "markdown",
|
|
253
|
+
editable: untracked(() => !this.disabled() && !this.readonly()),
|
|
254
|
+
onUpdate: ({ editor }) => {
|
|
255
|
+
const markdown = this._getEditorMarkdownFrom(editor);
|
|
256
|
+
this._lastEditorMarkdown = markdown;
|
|
257
|
+
this.value.set(markdown);
|
|
258
|
+
},
|
|
259
|
+
onTransaction: () => {
|
|
260
|
+
this._toolbar.refreshActiveStates();
|
|
261
|
+
},
|
|
262
|
+
}));
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
private _destroyEditor(): void {
|
|
266
|
+
const ed = untracked(() => this.editor());
|
|
267
|
+
if (ed != null) {
|
|
268
|
+
ed.destroy();
|
|
269
|
+
this.editor.set(undefined);
|
|
270
|
+
}
|
|
271
|
+
this._lastEditorMarkdown = undefined;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
private _getEditorMarkdownFrom(editor: Editor): string | undefined {
|
|
275
|
+
if (editor.isEmpty) return undefined;
|
|
276
|
+
return editor.getMarkdown();
|
|
277
|
+
}
|
|
278
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -264,6 +264,7 @@ export {
|
|
|
264
264
|
|
|
265
265
|
// features/editor
|
|
266
266
|
export { SdTiptapEditor } from "./features/editor/sd-tiptap-editor";
|
|
267
|
+
export { SdMarkdownEditor } from "./features/editor/sd-markdown-editor";
|
|
267
268
|
|
|
268
269
|
// features/visual
|
|
269
270
|
export { SdLabel } from "./features/visual/sd-label";
|
package/styles.css
CHANGED
|
@@ -534,9 +534,9 @@
|
|
|
534
534
|
--theme-success-dark: hsl(149.9515480441, 168.4093941383%, 24.2652557495%);
|
|
535
535
|
--theme-success-darker: hsl(150.0005284119, 143.0825359597%, 20.9804319787%);
|
|
536
536
|
--theme-success-darkest: rgb(1.4779812192, 102.3765397158, 48.0900438304);
|
|
537
|
-
--theme-warning-lightest: hsl(
|
|
538
|
-
--theme-warning-lighter: hsl(
|
|
539
|
-
--theme-warning-light: hsl(
|
|
537
|
+
--theme-warning-lightest: hsl(34.2903094524, 101.2893750504%, 91.682860556%);
|
|
538
|
+
--theme-warning-lighter: hsl(32.1783475455, 100.2607268985%, 82.8640062583%);
|
|
539
|
+
--theme-warning-light: hsl(30.9781472306, 103.8794214342%, 71.2539413381%);
|
|
540
540
|
--theme-warning-default: hsl(31.4330872217, 102.5675912326%, 51.3170331393%);
|
|
541
541
|
--theme-warning-dark: hsl(23.8136653657, 138.2924575772%, 40.3162356329%);
|
|
542
542
|
--theme-warning-darker: hsl(20.5064222619, 127.6827158995%, 34.7800557535%);
|
|
@@ -3728,34 +3728,6 @@ body.sd-theme-blueprint,
|
|
|
3728
3728
|
box-shadow: 5px 5px 0 rgba(28, 62, 156, 0.14);
|
|
3729
3729
|
}
|
|
3730
3730
|
|
|
3731
|
-
.sd-theme-blueprint sd-permission-table table > * > tr > * {
|
|
3732
|
-
border-bottom: 1px solid var(--border-color-lighter);
|
|
3733
|
-
}
|
|
3734
|
-
|
|
3735
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=first] > *._before,
|
|
3736
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=first] > *._title,
|
|
3737
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=first] > *._after {
|
|
3738
|
-
background: var(--trans-lighter);
|
|
3739
|
-
border-top: 1px solid var(--border-color-default);
|
|
3740
|
-
border-bottom: 1px solid var(--border-color-default);
|
|
3741
|
-
color: var(--text-trans-default);
|
|
3742
|
-
font-weight: 700;
|
|
3743
|
-
}
|
|
3744
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=first] > *._before > *,
|
|
3745
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=first] > *._title > *,
|
|
3746
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=first] > *._after > * {
|
|
3747
|
-
color: var(--text-trans-default) !important;
|
|
3748
|
-
}
|
|
3749
|
-
|
|
3750
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=info] > *._title,
|
|
3751
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=info] > *._after,
|
|
3752
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=warning] > *._title,
|
|
3753
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=warning] > *._after,
|
|
3754
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=success] > *._title,
|
|
3755
|
-
.sd-theme-blueprint sd-permission-table table > * > tr[data-sd-theme=success] > *._after {
|
|
3756
|
-
background: transparent;
|
|
3757
|
-
}
|
|
3758
|
-
|
|
3759
3731
|
.sd-theme-blueprint sd-modal > ._dialog > ._header {
|
|
3760
3732
|
background: var(--theme-primary-default);
|
|
3761
3733
|
color: var(--text-trans-rev-default);
|
|
@@ -3769,6 +3741,29 @@ body.sd-theme-blueprint,
|
|
|
3769
3741
|
.sd-theme-blueprint sd-crud-detail > sd-base-container > sd-busy-container > .bg-control > .main-align-end {
|
|
3770
3742
|
background: var(--theme-gray-lightest);
|
|
3771
3743
|
}
|
|
3744
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=first] > *._before,
|
|
3745
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=first] > *._title,
|
|
3746
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=first] > *._after {
|
|
3747
|
+
border-radius: 0;
|
|
3748
|
+
box-shadow: inset 0 -1px 0 var(--border-color-lighter);
|
|
3749
|
+
background: var(--theme-gray-lighter);
|
|
3750
|
+
font-weight: bold;
|
|
3751
|
+
}
|
|
3752
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=first] > *._before > *,
|
|
3753
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=first] > *._title > *,
|
|
3754
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=first] > *._after > * {
|
|
3755
|
+
color: var(--text-trans-default) !important;
|
|
3756
|
+
}
|
|
3757
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=info] > *._title,
|
|
3758
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=info] > *._after,
|
|
3759
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=warning] > *._title,
|
|
3760
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=warning] > *._after,
|
|
3761
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=success] > *._title,
|
|
3762
|
+
.sd-theme-blueprint sd-permission-table > table > * > tr[data-sd-theme=success] > *._after {
|
|
3763
|
+
border-radius: 0;
|
|
3764
|
+
box-shadow: inset 0 -1px 0 var(--border-color-lighter);
|
|
3765
|
+
background: var(--theme-gray-lightest);
|
|
3766
|
+
}
|
|
3772
3767
|
|
|
3773
3768
|
.flex-row {
|
|
3774
3769
|
display: flex !important;
|