2 Commits

3 changed files with 35 additions and 2 deletions

View File

@@ -20,8 +20,8 @@ android {
applicationId = "com.docmost.app" applicationId = "com.docmost.app"
minSdk = 26 minSdk = 26
targetSdk = 34 targetSdk = 34
versionCode = 9 versionCode = 11
versionName = "1.0.8" versionName = "1.0.10"
} }
signingConfigs { signingConfigs {

View File

@@ -2200,6 +2200,10 @@ class PageEditorActivity : AppCompatActivity() {
a { a {
color: #64b5f6 !important; color: #64b5f6 !important;
} }
ul[data-type="taskList"] li > label > input[type="checkbox"] {
border-color: #666 !important;
accent-color: #369FFF;
}
""" else "" """ else ""
return """ return """
@@ -2235,6 +2239,12 @@ class PageEditorActivity : AppCompatActivity() {
th, td { border: 1px solid #ddd; padding: 8px; white-space: nowrap; } th, td { border: 1px solid #ddd; padding: 8px; white-space: nowrap; }
th { background: #f4f4f4; } th { background: #f4f4f4; }
a { color: #0066cc; word-wrap: break-word; overflow-wrap: break-word; } a { color: #0066cc; word-wrap: break-word; overflow-wrap: break-word; }
ul[data-type="taskList"] { list-style: none; padding-left: 0; margin: 8px 0; }
ul[data-type="taskList"] li { display: flex; align-items: flex-start; margin: 4px 0; }
ul[data-type="taskList"] li > label { flex-shrink: 0; margin-right: 8px; display: flex; align-items: center; padding-top: 2px; }
ul[data-type="taskList"] li > label > input[type="checkbox"] { width: 16px; height: 16px; cursor: default; }
ul[data-type="taskList"] li > div { flex: 1; }
ul[data-type="taskList"] li > div > p { margin: 0; }
$darkModeCss $darkModeCss
</style> </style>
<script> <script>

View File

@@ -140,6 +140,29 @@ object ContentConverter {
} }
sb.append("</li>") sb.append("</li>")
} }
"taskList" -> {
sb.append("<ul data-type=\"taskList\">")
content?.forEach { child ->
if (child is Map<*, *>) {
@Suppress("UNCHECKED_CAST")
sb.append(nodeToHtml(child as Map<String, Any?>))
}
}
sb.append("</ul>")
}
"taskItem" -> {
val checked = (node["attrs"] as? Map<*, *>)?.get("checked") as? Boolean ?: false
val checkedAttr = if (checked) " checked" else ""
sb.append("<li data-type=\"taskItem\" data-checked=\"$checked\">")
sb.append("<label><input type=\"checkbox\"$checkedAttr></label>")
content?.forEach { child ->
if (child is Map<*, *>) {
@Suppress("UNCHECKED_CAST")
sb.append(nodeToHtml(child as Map<String, Any?>))
}
}
sb.append("</li>")
}
"codeBlock" -> { "codeBlock" -> {
sb.append("<pre><code>") sb.append("<pre><code>")
content?.forEach { child -> content?.forEach { child ->