Skip to content
This repository was archived by the owner on Nov 8, 2022. It is now read-only.

Commit 52e3481

Browse files
committed
refactor(editor): order_list done
1 parent 461b30f commit 52e3481

File tree

6 files changed

+79
-5
lines changed

6 files changed

+79
-5
lines changed

lib/helper/converter/editor_to_html/class.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ defmodule Helper.Converter.EditorToHTML.Class do
3030
"label__green" => "list-label__green",
3131
"label__warn" => "list-label__warn",
3232
"unorder_list_prefix" => "list__item-unorder-prefix",
33+
"order_list_prefix" => "list__item-order-prefix",
3334
"list_item" => "list-item",
3435
"checklist_item" => "list-checklist__item",
3536
"checklist_checkbox" => "checklist__item-checkbox",

lib/helper/converter/editor_to_html/frags/list.ex

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ defmodule Helper.Converter.EditorToHTML.Frags.List do
99

1010
@class get_in(Class.article(), ["list"])
1111

12+
@spec get_item(:checklist | :unorder_list | :order_list, map) :: T.html()
1213
def get_item(:unorder_list, %{
1314
"hideLabel" => hide_label,
1415
"indent" => indent,
@@ -30,6 +31,28 @@ defmodule Helper.Converter.EditorToHTML.Frags.List do
3031
</div>)
3132
end
3233

34+
def get_item(:order_list, %{
35+
"hideLabel" => hide_label,
36+
"indent" => indent,
37+
"label" => label,
38+
"labelType" => label_type,
39+
"prefixIndex" => prefix_index,
40+
"text" => text
41+
}) do
42+
prefix_frag = frag(:order_list_prefix, prefix_index)
43+
label_frag = if hide_label, do: "", else: frag(:label, label_type, indent, label)
44+
text_frag = frag(:text, text)
45+
46+
item_class = @class["list_item"]
47+
indent_class = @class["indent_#{indent}"]
48+
49+
~s(<div class="#{item_class} #{indent_class}">
50+
#{prefix_frag}
51+
#{label_frag}
52+
#{text_frag}
53+
</div>)
54+
end
55+
3356
def get_item(:checklist, %{
3457
"checked" => checked,
3558
"hideLabel" => hide_label,
@@ -53,12 +76,20 @@ defmodule Helper.Converter.EditorToHTML.Frags.List do
5376
</div>)
5477
end
5578

79+
@spec frag(:unorder_list_prefix) :: T.html()
5680
def frag(:unorder_list_prefix) do
5781
unorder_list_prefix_class = @class["unorder_list_prefix"]
5882

5983
~s(<div class="#{unorder_list_prefix_class}"></div>)
6084
end
6185

86+
@spec frag(:order_list_prefix, String.t()) :: T.html()
87+
def frag(:order_list_prefix, prefix_index) when is_binary(prefix_index) do
88+
order_list_prefix_class = @class["order_list_prefix"]
89+
90+
~s(<div class="#{order_list_prefix_class}">#{prefix_index}</div>)
91+
end
92+
6293
def frag(:label, label_type, indent, label) do
6394
label_class = @class["label"]
6495
label_type_class = @class["label__#{label_type}"]

lib/helper/converter/editor_to_html/frontend_test/script.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/helper/converter/editor_to_html/frontend_test/styles.css

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@ body {
3535
width: 100%;
3636
}
3737

38-
.article-viewer-wrapper .list-wrapper .list-item .list__item-unorder-prefix {
38+
.article-viewer-wrapper .list-wrapper .list-item .list__item-order-prefix,
39+
.list__item-unorder-prefix {
3940
position: relative;
4041
margin-right: 26px;
42+
color: #09aac1;
4143
}
4244

4345
.article-viewer-wrapper

lib/helper/converter/editor_to_html/validator/editor_schema.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ defmodule Helper.Converter.EditorToHTML.Validator.EditorSchema do
3636
"hideLabel" => [:boolean],
3737
"label" => [:string],
3838
"labelType" => [enum: @valid_list_label_type],
39+
"prefixIndex" => [:string, required: false],
3940
"indent" => [enum: @valid_list_indent],
4041
"text" => [:string]
4142
}

test/helper/converter/editor_to_html_test/list_test.exs

Lines changed: 42 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,49 @@ defmodule GroupherServer.Test.Helper.Converter.EditorToHTML.List do
6161
{:ok, editor_string} = Jason.encode(editor_json)
6262
{:ok, converted} = Parser.to_html(editor_string)
6363

64-
IO.inspect(converted, label: ">> ")
64+
unorder_list_prefix_class = @class["unorder_list_prefix"]
65+
assert Utils.str_occurence(converted, unorder_list_prefix_class) == 3
66+
end
67+
68+
@tag :wip2
69+
test "basic order list parse should work" do
70+
editor_json =
71+
set_items("order_list", [
72+
%{
73+
"checked" => true,
74+
"hideLabel" => false,
75+
"indent" => 0,
76+
"label" => "label",
77+
"labelType" => "default",
78+
"prefixIndex" => "1.",
79+
"text" =>
80+
"一个带着中文的很长的句子。一个带着中文的很长的句子。一个带着中文的很长的句子。一个带着中文的很长的句子。一个带着中文的很长的句子。一个带着中文的很长的句子。一个带着中文的很长的句子。一个带着中文的很长的句子。一个带着中文的很长的句子。"
81+
},
82+
%{
83+
"checked" => false,
84+
"hideLabel" => false,
85+
"indent" => 0,
86+
"label" => "label",
87+
"labelType" => "default",
88+
"prefixIndex" => "2.",
89+
"text" => "list item"
90+
},
91+
%{
92+
"checked" => false,
93+
"hideLabel" => false,
94+
"indent" => 1,
95+
"label" => "green",
96+
"labelType" => "green",
97+
"prefixIndex" => "2.1",
98+
"text" => "list item"
99+
}
100+
])
101+
102+
{:ok, editor_string} = Jason.encode(editor_json)
103+
{:ok, converted} = Parser.to_html(editor_string)
65104

66-
# checked_class = @class["checklist_checkbox_checked"]
67-
# assert Utils.str_occurence(converted, checked_class) == 1
105+
order_list_prefix_class = @class["order_list_prefix"]
106+
assert Utils.str_occurence(converted, order_list_prefix_class) == 3
68107
end
69108

70109
@tag :wip

0 commit comments

Comments
 (0)