@saltcorn/markup 1.6.0 → 1.7.0-alpha.0
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/cjs/builder.cjs +10 -0
- package/cjs/layout.cjs +10 -0
- package/cjs/mktag.cjs +10 -0
- package/cjs/table.cjs +10 -0
- package/cjs/tabs.cjs +10 -0
- package/cjs/workflow.cjs +10 -0
- package/dist/builder.d.ts +1 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +13 -3
- package/dist/builder.js.map +1 -1
- package/dist/emergency_layout.d.ts +30 -3
- package/dist/emergency_layout.d.ts.map +1 -1
- package/dist/emergency_layout.js +5 -6
- package/dist/emergency_layout.js.map +1 -1
- package/dist/extra_tags.d.ts +31 -0
- package/dist/extra_tags.d.ts.map +1 -0
- package/dist/extra_tags.js +54 -0
- package/dist/extra_tags.js.map +1 -0
- package/dist/form.d.ts +21 -1
- package/dist/form.d.ts.map +1 -1
- package/dist/form.js +13 -14
- package/dist/form.js.map +1 -1
- package/dist/form.test.js +48 -84
- package/dist/form.test.js.map +1 -1
- package/dist/generated_tags.d.ts +127 -0
- package/dist/generated_tags.d.ts.map +1 -0
- package/dist/generated_tags.js +253 -0
- package/dist/generated_tags.js.map +1 -0
- package/dist/helpers.d.ts +95 -53
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +3 -3
- package/dist/helpers.js.map +1 -1
- package/dist/helpers.test.js +123 -127
- package/dist/helpers.test.js.map +1 -1
- package/dist/index.d.ts +95 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -10
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +29 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +24 -10
- package/dist/internal.js.map +1 -1
- package/dist/layout.d.ts +1 -1
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +125 -98
- package/dist/layout.js.map +1 -1
- package/dist/layout.test.js +130 -167
- package/dist/layout.test.js.map +1 -1
- package/dist/layout_utils.d.ts +142 -2
- package/dist/layout_utils.d.ts.map +1 -1
- package/dist/layout_utils.js +7 -4
- package/dist/layout_utils.js.map +1 -1
- package/dist/layout_utils.test.js +49 -53
- package/dist/layout_utils.test.js.map +1 -1
- package/dist/markup.test.js +227 -264
- package/dist/markup.test.js.map +1 -1
- package/dist/mjml-layout.d.ts +31 -1
- package/dist/mjml-layout.d.ts.map +1 -1
- package/dist/mjml-layout.js +4 -4
- package/dist/mjml-layout.js.map +1 -1
- package/dist/mjml-tags.d.ts +40 -4
- package/dist/mjml-tags.d.ts.map +1 -1
- package/dist/mjml-tags.js +31 -21
- package/dist/mjml-tags.js.map +1 -1
- package/dist/mktag.d.ts +2 -2
- package/dist/mktag.d.ts.map +1 -1
- package/dist/mktag.js +1 -2
- package/dist/mktag.js.map +1 -1
- package/dist/table.d.ts +3 -1
- package/dist/table.d.ts.map +1 -1
- package/dist/table.js +63 -16
- package/dist/table.js.map +1 -1
- package/dist/tabs.d.ts +1 -1
- package/dist/tabs.d.ts.map +1 -1
- package/dist/tabs.js +2 -3
- package/dist/tabs.js.map +1 -1
- package/dist/tags.d.ts +7 -2
- package/dist/tags.d.ts.map +1 -1
- package/dist/tags.js +16 -94
- package/dist/tags.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -2
- package/dist/workflow.d.ts +1 -1
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +2 -3
- package/dist/workflow.js.map +1 -1
- package/package.json +46 -12
- /package/{webpack.config.js → webpack.config.cjs} +0 -0
|
@@ -1,33 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const layout_utils_1 = __importDefault(require("./layout_utils"));
|
|
8
|
-
const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar, innerSections, } = layout_utils_1.default;
|
|
9
|
-
(0, globals_1.describe)("alert", () => {
|
|
10
|
-
(0, globals_1.it)("renders a success alert", () => {
|
|
1
|
+
import { describe, it } from "node:test";
|
|
2
|
+
import { expect } from "@saltcorn/db-common/test_expect";
|
|
3
|
+
import layoutUtils from "./layout_utils.js";
|
|
4
|
+
const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar, innerSections, } = layoutUtils;
|
|
5
|
+
describe("alert", () => {
|
|
6
|
+
it("renders a success alert", () => {
|
|
11
7
|
const result = alert("success", "Operation completed successfully.");
|
|
12
|
-
|
|
8
|
+
expect(result).toBe(`<div class="alert alert-success alert-dismissible fade show" role="alert"><i class="fas fa-check-circle me-1"></i>Operation completed successfully.<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>`);
|
|
13
9
|
});
|
|
14
|
-
|
|
10
|
+
it("renders an error alert", () => {
|
|
15
11
|
const result = alert("error", "An error occurred.");
|
|
16
|
-
|
|
12
|
+
expect(result).toBe(`<div class="alert alert-danger alert-dismissible fade show" role="alert"><i class="fas fa-times-circle me-1"></i>An error occurred.<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>`);
|
|
17
13
|
});
|
|
18
14
|
});
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
describe("toast", () => {
|
|
16
|
+
it("renders a success toast", () => {
|
|
21
17
|
const result = toast("success", "Data saved successfully.");
|
|
22
|
-
|
|
18
|
+
expect(result).toBe(`<div class="toast show" rendered="server-side" type="success" role="alert" ariaLive="assertive" ariaAtomic="true" style="min-width: 350px; max-width: 50vw; width: auto; "><div class="toast-header bg-success text-white py-1"><i class="fas fa-check-circle me-2"></i><strong class="me-auto">success</strong><button type="button" class="btn-close btn-close-white" data-bs-dismiss="toast" aria-label="Close" style="font-size: 12px;"></button></div><div class="toast-body py-2 fs-6 fw-bold"><strong>Data saved successfully.</strong></div></div>`);
|
|
23
19
|
});
|
|
24
|
-
|
|
20
|
+
it("renders an error toast", () => {
|
|
25
21
|
const result = toast("error", "Failed to save data.");
|
|
26
|
-
|
|
22
|
+
expect(result).toBe(`<div class="toast show" rendered="server-side" type="error" role="alert" ariaLive="assertive" ariaAtomic="true" style="min-width: 350px; max-width: 50vw; width: auto; "><div class="toast-header bg-danger text-white py-1"><i class="fas fa-times-circle me-2"></i><strong class="me-auto">error</strong><button type="button" class="btn-close btn-close-white" data-bs-dismiss="toast" aria-label="Close" style="font-size: 12px;"></button></div><div class="toast-body py-2 fs-6 fw-bold"><strong>Failed to save data.</strong></div></div>`);
|
|
27
23
|
});
|
|
28
24
|
});
|
|
29
|
-
|
|
30
|
-
|
|
25
|
+
describe("renderTabs", () => {
|
|
26
|
+
it("renders tabs with content", () => {
|
|
31
27
|
const opts = {
|
|
32
28
|
contents: ["Tab 1 Content", "Tab 2 Content"],
|
|
33
29
|
titles: ["Tab 1", "Tab 2"],
|
|
@@ -35,9 +31,9 @@ const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar,
|
|
|
35
31
|
independent: true,
|
|
36
32
|
};
|
|
37
33
|
const result = renderTabs(opts, (content) => content);
|
|
38
|
-
|
|
34
|
+
expect(result).toMatch(/^<ul role="tablist" id="tab[a-f0-9]+" class="nav nav-tabs"><li class="nav-item" role="presentation"><a class="nav-link active" id="tab[a-f0-9]+link0" data-bs-toggle="tab" href="#Tab1" role="tab" aria-controls="tab[a-f0-9]+tab0" aria-selected="true">Tab 1<\/a><\/li><li class="nav-item" role="presentation"><a class="nav-link" id="tab[a-f0-9]+link1" data-bs-toggle="tab" href="#Tab2" role="tab" aria-controls="tab[a-f0-9]+tab1" aria-selected="false">Tab 2<\/a><\/li><\/ul><div class="tab-content" id="tab[a-f0-9]+content"><div class="tab-pane fade show active" role="tabpanel" id="Tab1" aria-labelledby="tab[a-f0-9]+link0">Tab 1 Content<\/div><div class="tab-pane fade" role="tabpanel" id="Tab2" aria-labelledby="tab[a-f0-9]+link1">Tab 2 Content<\/div><\/div>$/);
|
|
39
35
|
});
|
|
40
|
-
|
|
36
|
+
it("renders accordion-style tabs", () => {
|
|
41
37
|
const opts = {
|
|
42
38
|
contents: ["Accordion 1 Content", "Accordion 2 Content"],
|
|
43
39
|
titles: ["Accordion 1", "Accordion 2"],
|
|
@@ -45,11 +41,11 @@ const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar,
|
|
|
45
41
|
independent: true,
|
|
46
42
|
};
|
|
47
43
|
const result = renderTabs(opts, (content) => content);
|
|
48
|
-
|
|
44
|
+
expect(result).toMatch(/^<div class="accordion" id="tab[a-f0-9]+top"><div class="accordion-item"><h2 class="accordion-header" id="tab[a-f0-9]+head0"><button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#tab[a-f0-9]+tab0" aria-expanded="true" aria-controls="tab[a-f0-9]+tab0">Accordion 1<\/button><\/h2><div class="accordion-collapse collapse show" id="tab[a-f0-9]+tab0" aria-labelledby="tab[a-f0-9]+head0"><div class="accordion-body">Accordion 1 Content<\/div><\/div><\/div><div class="accordion-item"><h2 class="accordion-header" id="tab[a-f0-9]+head1"><button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#tab[a-f0-9]+tab1" aria-expanded="false" aria-controls="tab[a-f0-9]+tab1">Accordion 2<\/button><\/h2><div class="accordion-collapse collapse" id="tab[a-f0-9]+tab1" aria-labelledby="tab[a-f0-9]+head1"><div class="accordion-body">Accordion 2 Content<\/div><\/div><\/div><\/div>$/);
|
|
49
45
|
});
|
|
50
46
|
});
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
describe("navSubItemsIterator", () => {
|
|
48
|
+
it("renders a separator item", () => {
|
|
53
49
|
const item = {
|
|
54
50
|
type: "Separator",
|
|
55
51
|
label: "Separator",
|
|
@@ -58,9 +54,9 @@ const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar,
|
|
|
58
54
|
link: "/",
|
|
59
55
|
};
|
|
60
56
|
const result = navSubItemsIterator(item);
|
|
61
|
-
|
|
57
|
+
expect(result).toBe('<hr class="mx-3 my-1">');
|
|
62
58
|
});
|
|
63
|
-
|
|
59
|
+
it("renders a dropdown with subitems", () => {
|
|
64
60
|
const item = {
|
|
65
61
|
label: "Dropdown",
|
|
66
62
|
subitems: [
|
|
@@ -81,9 +77,9 @@ const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar,
|
|
|
81
77
|
link: "/dropdown",
|
|
82
78
|
};
|
|
83
79
|
const result = navSubItemsIterator(item);
|
|
84
|
-
|
|
80
|
+
expect(result).toBe(`<div class="dropdown-item btn-group dropstart"><a type="button" class="dropdown-item dropdown-toggle p-0" data-bs-toggle="dropdown" aria-expanded="false">Dropdown</a><ul class="dropdown-menu"><li><div class="dropdown-item btn-group dropstart"><a type="button" class="dropdown-item dropdown-toggle p-0" data-bs-toggle="dropdown" aria-expanded="false">Subitem 1</a><ul class="dropdown-menu"></ul></div></li><li><div class="dropdown-item btn-group dropstart"><a type="button" class="dropdown-item dropdown-toggle p-0" data-bs-toggle="dropdown" aria-expanded="false">Subitem 2</a><ul class="dropdown-menu"></ul></div></li></ul></div>`);
|
|
85
81
|
});
|
|
86
|
-
|
|
82
|
+
it("renders a single link item", () => {
|
|
87
83
|
const item = {
|
|
88
84
|
label: "Link",
|
|
89
85
|
link: "/link",
|
|
@@ -91,9 +87,9 @@ const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar,
|
|
|
91
87
|
subitems: [],
|
|
92
88
|
};
|
|
93
89
|
const result = navSubItemsIterator(item);
|
|
94
|
-
|
|
90
|
+
expect(result).toBe('<div class="dropdown-item btn-group dropstart"><a type="button" class="dropdown-item dropdown-toggle p-0" data-bs-toggle="dropdown" aria-expanded="false">Link</a><ul class="dropdown-menu"></ul></div>');
|
|
95
91
|
});
|
|
96
|
-
|
|
92
|
+
it("renders a link item with an icon", () => {
|
|
97
93
|
const item = {
|
|
98
94
|
label: "Link",
|
|
99
95
|
link: "/link",
|
|
@@ -102,9 +98,9 @@ const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar,
|
|
|
102
98
|
subitems: [],
|
|
103
99
|
};
|
|
104
100
|
const result = navSubItemsIterator(item);
|
|
105
|
-
|
|
101
|
+
expect(result).toBe(`<div class="dropdown-item btn-group dropstart"><a type="button" class="dropdown-item dropdown-toggle p-0" data-bs-toggle="dropdown" aria-expanded="false">Link</a><ul class="dropdown-menu"></ul></div>`);
|
|
106
102
|
});
|
|
107
|
-
|
|
103
|
+
it("renders a link item with a tooltip", () => {
|
|
108
104
|
const item = {
|
|
109
105
|
label: "Link",
|
|
110
106
|
link: "/link",
|
|
@@ -113,27 +109,27 @@ const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar,
|
|
|
113
109
|
subitems: [],
|
|
114
110
|
};
|
|
115
111
|
const result = navSubItemsIterator(item);
|
|
116
|
-
|
|
112
|
+
expect(result).toBe(`<div class="dropdown-item btn-group dropstart" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip text"><a type="button" class="dropdown-item dropdown-toggle p-0" data-bs-toggle="dropdown" aria-expanded="false">Link</a><ul class="dropdown-menu"></ul></div>`);
|
|
117
113
|
});
|
|
118
114
|
});
|
|
119
|
-
|
|
120
|
-
|
|
115
|
+
describe("rightNavBar", () => {
|
|
116
|
+
it("renders a right navbar with sections", () => {
|
|
121
117
|
const sections = [
|
|
122
118
|
{ label: "Home", link: "/", location: "Top", subitems: [] },
|
|
123
119
|
{ label: "About", link: "/about", location: "Top", subitems: [] },
|
|
124
120
|
];
|
|
125
121
|
const result = rightNavBar("/", sections);
|
|
126
|
-
|
|
122
|
+
expect(result).toBe(`<div class="collapse navbar-collapse" id="navbarResponsive"><ul class="navbar-nav ms-auto my-2 my-lg-0"></ul></div>`);
|
|
127
123
|
});
|
|
128
|
-
|
|
124
|
+
it("renders a right navbar with active section", () => {
|
|
129
125
|
const sections = [
|
|
130
126
|
{ label: "Home", link: "/", location: "Top", subitems: [] },
|
|
131
127
|
{ label: "About", link: "/about", location: "Top", subitems: [] },
|
|
132
128
|
];
|
|
133
129
|
const result = rightNavBar("/about", sections);
|
|
134
|
-
|
|
130
|
+
expect(result).toBe(`<div class="collapse navbar-collapse" id="navbarResponsive"><ul class="navbar-nav ms-auto my-2 my-lg-0"></ul></div>`);
|
|
135
131
|
});
|
|
136
|
-
|
|
132
|
+
it("skips sections with 'Mobile Bottom' location", () => {
|
|
137
133
|
const sections = [
|
|
138
134
|
{ label: "Home", link: "/", location: "Top", subitems: [] },
|
|
139
135
|
{
|
|
@@ -144,14 +140,14 @@ const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar,
|
|
|
144
140
|
},
|
|
145
141
|
];
|
|
146
142
|
const result = rightNavBar("/", sections);
|
|
147
|
-
|
|
143
|
+
expect(result).not.toContain('<a class="nav-link js-scroll-trigger" href="/mobile">Mobile</a>');
|
|
148
144
|
});
|
|
149
145
|
});
|
|
150
|
-
|
|
151
|
-
|
|
146
|
+
describe("leftNavBar", () => {
|
|
147
|
+
it("renders a left navbar with brand name and logo", () => {
|
|
152
148
|
const brand = { name: "TestApp", logo: "/logo.png" };
|
|
153
149
|
const result = leftNavBar(brand);
|
|
154
|
-
|
|
150
|
+
expect(result).toEqual([
|
|
155
151
|
'<a class="navbar-brand js-scroll-trigger" href="/">' +
|
|
156
152
|
'<img src="/logo.png" width="30" height="30" class="mx-1 d-inline-block align-top" alt="Logo" loading="lazy">' +
|
|
157
153
|
"TestApp</a>",
|
|
@@ -160,27 +156,27 @@ const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar,
|
|
|
160
156
|
'aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>',
|
|
161
157
|
]);
|
|
162
158
|
});
|
|
163
|
-
|
|
159
|
+
it("renders a left navbar without a logo", () => {
|
|
164
160
|
const brand = { name: "TestApp", logo: "" };
|
|
165
161
|
const result = leftNavBar(brand);
|
|
166
|
-
|
|
162
|
+
expect(result).toEqual([
|
|
167
163
|
'<a class="navbar-brand js-scroll-trigger" href="/">TestApp</a>',
|
|
168
164
|
'<button class="navbar-toggler navbar-toggler-right" type="button" data-bs-toggle="collapse" ' +
|
|
169
165
|
'data-bs-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" ' +
|
|
170
166
|
'aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>',
|
|
171
167
|
]);
|
|
172
168
|
});
|
|
173
|
-
|
|
169
|
+
it("returns an empty array when no brand is provided", () => {
|
|
174
170
|
const result = leftNavBar(undefined);
|
|
175
|
-
|
|
171
|
+
expect(result).toEqual([]);
|
|
176
172
|
});
|
|
177
173
|
});
|
|
178
|
-
|
|
179
|
-
|
|
174
|
+
describe("innerSections", () => {
|
|
175
|
+
it("returns an empty array when no sections are provided", () => {
|
|
180
176
|
const result = innerSections([]);
|
|
181
|
-
|
|
177
|
+
expect(result).toEqual([]);
|
|
182
178
|
});
|
|
183
|
-
|
|
179
|
+
it("handles sections without items gracefully", () => {
|
|
184
180
|
const sections = [
|
|
185
181
|
{
|
|
186
182
|
label: "Section 1",
|
|
@@ -198,7 +194,7 @@ const { alert, toast, renderTabs, navSubItemsIterator, rightNavBar, leftNavBar,
|
|
|
198
194
|
},
|
|
199
195
|
];
|
|
200
196
|
const result = innerSections(sections);
|
|
201
|
-
|
|
197
|
+
expect(result).toEqual([]);
|
|
202
198
|
});
|
|
203
199
|
});
|
|
204
200
|
//# sourceMappingURL=layout_utils.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout_utils.test.js","sourceRoot":"","sources":["../layout_utils.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layout_utils.test.js","sourceRoot":"","sources":["../layout_utils.test.ts"],"names":[],"mappings":"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"}
|