@saltcorn/markup 0.6.2-beta.2 → 0.6.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.
Files changed (60) hide show
  1. package/dist/builder.d.ts +18 -0
  2. package/dist/builder.d.ts.map +1 -0
  3. package/dist/builder.js +57 -0
  4. package/dist/builder.js.map +1 -0
  5. package/dist/emergency_layout.d.ts +6 -0
  6. package/dist/emergency_layout.d.ts.map +1 -0
  7. package/dist/emergency_layout.js +38 -0
  8. package/dist/emergency_layout.js.map +1 -0
  9. package/dist/form.d.ts +12 -0
  10. package/dist/form.d.ts.map +1 -0
  11. package/dist/form.js +372 -0
  12. package/dist/form.js.map +1 -0
  13. package/dist/helpers.d.ts +58 -0
  14. package/dist/helpers.d.ts.map +1 -0
  15. package/dist/helpers.js +169 -0
  16. package/dist/helpers.js.map +1 -0
  17. package/dist/index.d.ts +21 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +158 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/layout.d.ts +22 -0
  22. package/dist/layout.d.ts.map +1 -0
  23. package/dist/layout.js +338 -0
  24. package/dist/layout.js.map +1 -0
  25. package/dist/layout_utils.d.ts +21 -0
  26. package/dist/layout_utils.d.ts.map +1 -0
  27. package/dist/layout_utils.js +272 -0
  28. package/dist/layout_utils.js.map +1 -0
  29. package/dist/mktag.d.ts +12 -0
  30. package/dist/mktag.d.ts.map +1 -0
  31. package/dist/mktag.js +100 -0
  32. package/dist/mktag.js.map +1 -0
  33. package/dist/table.d.ts +22 -0
  34. package/dist/table.d.ts.map +1 -0
  35. package/dist/table.js +51 -0
  36. package/dist/table.js.map +1 -0
  37. package/dist/tabs.d.ts +7 -0
  38. package/dist/tabs.d.ts.map +1 -0
  39. package/dist/tabs.js +34 -0
  40. package/dist/tabs.js.map +1 -0
  41. package/dist/tags.d.ts +17 -0
  42. package/dist/tags.d.ts.map +1 -0
  43. package/dist/tags.js +71 -0
  44. package/dist/tags.js.map +1 -0
  45. package/dist/tsconfig.ref.tsbuildinfo +1 -0
  46. package/package.json +25 -6
  47. package/builder.js +0 -101
  48. package/emergency_layout.js +0 -54
  49. package/form.js +0 -603
  50. package/form.test.js +0 -98
  51. package/helpers.js +0 -268
  52. package/index.js +0 -226
  53. package/layout.js +0 -590
  54. package/layout.test.js +0 -39
  55. package/layout_utils.js +0 -394
  56. package/markup.test.js +0 -104
  57. package/mktag.js +0 -105
  58. package/table.js +0 -115
  59. package/tabs.js +0 -54
  60. package/tags.js +0 -56
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * @category saltcorn-markup
4
+ * @module helpers
5
+ */
6
+ const tags = require("./tags");
7
+ const { a, text, div, input, text_attr, ul, li, span, label } = tags;
8
+ /**
9
+ * checks if x is defined
10
+ * @param {any} x
11
+ * @returns {boolean}
12
+ */
13
+ const isdef = (x) => typeof x !== "undefined";
14
+ /**
15
+ * @param {object|string} v
16
+ * @param {object} hdr
17
+ * @param {boolean} force_required
18
+ * @param {string} neutral_label
19
+ * @returns {string}
20
+ */
21
+ const select_options = (v, hdr, force_required, neutral_label = "") => {
22
+ const options0 = hdr.options || [];
23
+ const options1 = force_required
24
+ ? options0.filter((o) => (typeof o === "string" ? o : o.value))
25
+ : options0;
26
+ const options = options1.map((o) => o.value === "" ? { ...o, label: neutral_label } : o);
27
+ const selected = typeof v === "object" ? (v ? v[hdr.name] : undefined) : v;
28
+ const isSelected = (value) => !selected
29
+ ? false
30
+ : selected.length
31
+ ? selected.includes(value)
32
+ : value === selected;
33
+ return options
34
+ .map((o) => {
35
+ const label = typeof o === "string" ? o : o.label;
36
+ const value = typeof o === "string" ? o : o.value;
37
+ return `<option value="${text_attr(value)}"${isSelected(value) ? " selected" : ""}>${text(label)}</option>`;
38
+ })
39
+ .join("");
40
+ };
41
+ /**
42
+ *
43
+ * @param {object} opts
44
+ * @param {string} opts.name
45
+ * @param {object} [opts.options]
46
+ * @param {string} opts.value
47
+ * @param {object} opts.inline
48
+ * @param {string} opts.form_name
49
+ * @param {...*} opts.rest
50
+ * @returns {string}
51
+ */
52
+ const radio_group = ({ name, options, value, inline, form_name, onChange, ...rest }) => div((options || [])
53
+ .filter((o) => (typeof o === "string" ? o : o.value))
54
+ .map((o, ix) => {
55
+ const myvalue = typeof o === "string" ? o : o.value;
56
+ const id = `input${text_attr(name)}${ix}`;
57
+ return div({ class: ["form-check", inline && "form-check-inline"] }, input({
58
+ class: ["form-check-input", rest.class],
59
+ type: "radio",
60
+ name,
61
+ onChange,
62
+ "data-fieldname": form_name,
63
+ id,
64
+ value: text_attr(myvalue),
65
+ checked: myvalue === value,
66
+ }), label({ class: "form-check-label", for: id }, typeof o === "string" ? o : o.label));
67
+ })
68
+ .join(""));
69
+ const checkbox_group = ({ name, options, value, inline, form_name, onChange, ...rest }) => div((options || [])
70
+ .filter((o) => (typeof o === "string" ? o : o.value))
71
+ .map((o, ix) => {
72
+ const myvalue = typeof o === "string" ? o : o.value;
73
+ const id = `input${text_attr(name)}${ix}`;
74
+ return div({ class: ["form-check", inline && "form-check-inline"] }, input({
75
+ class: ["form-check-input", rest.class],
76
+ type: "checkbox",
77
+ name,
78
+ onChange: `check_state_field(this)`,
79
+ "data-fieldname": form_name,
80
+ id,
81
+ value: text_attr(myvalue),
82
+ checked: Array.isArray(value)
83
+ ? value.includes(myvalue)
84
+ : myvalue === value,
85
+ }), label({ class: "form-check-label", for: id }, typeof o === "string" ? o : o.label));
86
+ })
87
+ .join(""));
88
+ /**
89
+ * @param {object} opts
90
+ * @param {number} opts.current_page
91
+ * @param {number} opts.pages
92
+ * @param {function} opts.get_page_link
93
+ * @param {boolean} opts.trailing_ellipsis
94
+ * @returns {string}
95
+ */
96
+ const pagination = ({ current_page, pages, get_page_link, trailing_ellipsis, }) => {
97
+ const from = Math.max(1, current_page - 3);
98
+ const to = Math.min(pages, current_page + 3);
99
+ var lis = [];
100
+ if (from > 1) {
101
+ lis.push(li({ class: `page-item` }, a({ class: "page-link", href: get_page_link(1) }, 1)));
102
+ lis.push(li({ class: `page-item` }, span({ class: "page-link" }, "...")));
103
+ }
104
+ for (let index = from; index <= to; index++) {
105
+ lis.push(li({ class: ["page-item", index === current_page && "active"] }, a({ class: "page-link", href: get_page_link(index) }, index)));
106
+ }
107
+ if (to < pages) {
108
+ lis.push(li({ class: `page-item` }, span({ class: "page-link" }, "...")));
109
+ lis.push(li({ class: `page-item` }, a({ class: "page-link", href: get_page_link(pages) }, pages)));
110
+ }
111
+ if (trailing_ellipsis)
112
+ lis.push(li({ class: `page-item` }, span({ class: "page-link" }, "...")));
113
+ return ul({ class: "pagination" }, lis);
114
+ };
115
+ /**
116
+ * @param {string} name
117
+ * @param {object} v
118
+ * @param {object} param2
119
+ * @returns {string}
120
+ */
121
+ const search_bar = (name, v, { placeHolder, has_dropdown, contents, badges, stateField, onClick, } = {}) => {
122
+ const rndid = Math.floor(Math.random() * 16777215).toString(16);
123
+ const clickHandler = stateField
124
+ ? `(function(v){v ? set_state_field('${stateField}', v):unset_state_field('${stateField}');})($('input.search-bar').val())`
125
+ : onClick || "";
126
+ return `<div class="input-group search-bar">
127
+ <div class="input-group-prepend">
128
+ <button class="btn btn-outline-secondary search-bar" ${clickHandler ? `onClick="${clickHandler}"` : ""} type="submit" id="button-search-submit">
129
+ <i class="fas fa-search"></i>
130
+ </button>
131
+ </div>
132
+ <input type="search" class="form-control search-bar ${(badges && badges.length > 0) || has_dropdown ? "br-none" : ""}" placeholder="${placeHolder || "Search for..."}"
133
+ }"
134
+ }"
135
+ id="input${text_attr(name)}" name="${name}"
136
+ ${clickHandler
137
+ ? `onsearch="${clickHandler}" onChange="${clickHandler}"`
138
+ : ""}
139
+ aria-label="Search" aria-describedby="button-search-submit" ${v ? `value="${text_attr(v)}"` : ""}>
140
+ <div class="input-group-append">
141
+ ${badges && badges.length > 0
142
+ ? `<div class="input-group-text">${badges
143
+ .map((b) => `<span class="badge badge-primary">${b.text}${b.onclick
144
+ ? `<a href="javascript:${b.onclick}"><i class="ml-1 fas fa-lg fa-times"></i></a> `
145
+ : ""}</span>`)
146
+ .join("&nbsp;")}
147
+ </div>`
148
+ : ""}
149
+ ${has_dropdown
150
+ ? `<button class="btn btn-outline-secondary dropdown-toggle search-bar" id="dd${rndid}" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" onclick="align_dropdown('${rndid}')"></button>`
151
+ : ""}
152
+ ${has_dropdown
153
+ ? `<div class="dropdown-menu search-bar p-2" id="dm${rndid}" aria-labelledby="dd${rndid}">
154
+ ${contents}
155
+ </div>`
156
+ : ""}
157
+ </div>
158
+ </div>`;
159
+ };
160
+ const HelpersExports = {
161
+ isdef,
162
+ select_options,
163
+ search_bar,
164
+ pagination,
165
+ radio_group,
166
+ checkbox_group,
167
+ };
168
+ module.exports = HelpersExports;
169
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @category saltcorn-markup
3
+ * @module saltcorn-markup/index
4
+ */
5
+ import mkTable = require("./table");
6
+ declare const _default: {
7
+ mkTable: (hdrs: mkTable.HeadersParams[], vs: any[], opts?: any) => string;
8
+ renderForm: (form: any, csrfToken0: string | boolean) => string;
9
+ settingsDropdown: (id: string, elems: any) => string;
10
+ renderBuilder: ({ options, context, action, stepName, layout, mode, version_tag, }: any, csrfToken: any) => string;
11
+ link: (href: string, s: string) => string;
12
+ post_btn: (href: string, s: string, csrfToken: string, { btnClass, onClick, small, style, ajax, reload_on_done, reload_delay, klass, formClass, spinner, req, confirm, icon, }?: any) => string;
13
+ post_delete_btn: (href: string, req: any, what?: string | undefined) => string;
14
+ post_dropdown_item: (href: string, s: string, req: any, confirm: boolean, what?: string | undefined) => string;
15
+ tabs: (obj: any) => any;
16
+ localeTime: (date: Date, options?: any) => string;
17
+ localeDate: (date: Date, options?: any) => string;
18
+ localeDateTime: (date: Date, options?: any) => string;
19
+ };
20
+ export = _default;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,OAAO,OAAO,GAAG,QAAQ,SAAS,CAAC,CAAC;;;;;;;;;;;;;;;AAyNpC,kBAaE"}
package/dist/index.js ADDED
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ /**
3
+ * @category saltcorn-markup
4
+ * @module saltcorn-markup/index
5
+ */
6
+ /**
7
+ * All files in the saltcorn-markup package.
8
+ * @namespace saltcorn-markup_overview
9
+ * @property {module:builder} builder
10
+ * @property {module:emergency_layout} emergency_layout
11
+ * @property {module:form} from
12
+ * @property {module:helpers} helpers
13
+ * @property {module:layout_utils} layout_utils
14
+ * @property {module:layout} layout
15
+ * @property {module:mktag} mktag
16
+ * @property {module:table} table
17
+ * @property {module:tabs} tabs
18
+ * @category saltcorn-markup
19
+ */
20
+ const renderForm = require("./form");
21
+ const renderBuilder = require("./builder");
22
+ const mkTable = require("./table");
23
+ const tabs = require("./tabs");
24
+ const tags = require("./tags");
25
+ const { a, text, div, button, time } = tags;
26
+ /**
27
+ * @param {string} href
28
+ * @param {string} s
29
+ * @returns {string}
30
+ */
31
+ const link = (href, s) => a({ href: text(href) }, text(s));
32
+ /**
33
+ * @param {string} href
34
+ * @param {string} s
35
+ * @param {string} csrfToken
36
+ * @param {object} opts
37
+ * @param {string} [opts.btnClass = "btn-primary"]
38
+ * @param {string} [opts.onClick]
39
+ * @param {string} [opts.small]
40
+ * @param {string} [opts.style]
41
+ * @param {*} opts.ajax
42
+ * @param {string} opts.reload_on_done
43
+ * @param {string} opts.reload_delay
44
+ * @param {string} [opts.klass = "btn-primary"]
45
+ * @param {string} [opts.formClass]
46
+ * @param {string} opts.spinner
47
+ * @param {object} opts.req
48
+ * @param {boolean} opts.confirm
49
+ * @param {string} opts.icon
50
+ * @returns {string}
51
+ */
52
+ const post_btn = (href, s, csrfToken, { btnClass = "btn-primary", onClick, small, style, ajax, reload_on_done, reload_delay, klass = "", formClass, spinner, req, confirm, icon, } = {}) => `<form action="${text(href)}" method="post"${formClass ? `class="${formClass}"` : ""}>
53
+ <input type="hidden" name="_csrf" value="${csrfToken}">
54
+ <button ${ajax ? 'type="button"' : 'type="submit"'} ${onClick
55
+ ? `onclick="${spinner ? "press_store_button(this);" : ""}${onClick}"`
56
+ : ajax && confirm
57
+ ? `onclick="if(confirm('${req.__("Are you sure?")}')) {${spinner ? "press_store_button(this);" : ""}ajax_post_btn(this, ${reload_on_done}, ${reload_delay})}"`
58
+ : ajax
59
+ ? `onclick="${spinner ? "press_store_button(this);" : ""}ajax_post_btn(this, ${reload_on_done}, ${reload_delay})"`
60
+ : confirm
61
+ ? `onclick="return confirm('${req.__("Are you sure?")}')"`
62
+ : ""} class="${klass} btn ${small ? "btn-sm" : ""} ${btnClass}"${style ? ` style="${style}"` : ""}>${icon ? `<i class="${icon}"></i>&nbsp;` : ""}${s}</button></form>`;
63
+ /**
64
+ * UI Form for Delete Item confirmation
65
+ * @param {string} href - href
66
+ * @param {string} req - Request
67
+ * @param {string} [what] - Item
68
+ * @returns {string} return html form
69
+ */
70
+ const post_delete_btn = (href, req, what) => `<form action="${text(href)}" method="post" >
71
+ <input type="hidden" name="_csrf" value="${req.csrfToken()}">
72
+ <button type="submit" class="btn btn-danger btn-sm"
73
+ onclick="return confirm('${what
74
+ ? req.__("Are you sure you want to delete %s?", what)
75
+ : req.__("Are you sure?")}')" />
76
+ <i class="fas fa-trash-alt"></i>
77
+ </button>
78
+ </form>`;
79
+ /**
80
+ * @param {string} href
81
+ * @param {string} s
82
+ * @param {object} req
83
+ * @param {boolean} confirm
84
+ * @param {string} [what]
85
+ * @returns {string}
86
+ */
87
+ const post_dropdown_item = (href, s, req, confirm, what) => {
88
+ const id = href.split("/").join("");
89
+ return `<a class="dropdown-item" onclick="${confirm
90
+ ? `if(confirm('${what
91
+ ? req.__("Are you sure you want to delete %s?", what)
92
+ : req.__("Are you sure?")}')) `
93
+ : ""}$('#${id}').submit()">${s}</a>
94
+ <form id="${id}" action="${text(href)}" method="post">
95
+ <input type="hidden" name="_csrf" value="${req.csrfToken()}">
96
+ </form>`;
97
+ };
98
+ /**
99
+ * @param {string} id
100
+ * @param {*} elems
101
+ * @returns {div}
102
+ */
103
+ const settingsDropdown = (id, elems) => div({ class: "dropdown" }, button({
104
+ class: "btn btn-sm btn-outline-secondary",
105
+ "data-boundary": "viewport",
106
+ type: "button",
107
+ id,
108
+ "data-toggle": "dropdown",
109
+ "aria-haspopup": "true",
110
+ "aria-expanded": "false",
111
+ }, '<i class="fas fa-ellipsis-h"></i>'), div({
112
+ class: "dropdown-menu dropdown-menu-right",
113
+ "aria-labelledby": id,
114
+ }, elems));
115
+ /**
116
+ * @param {Date} date
117
+ * @param {object} opts
118
+ * @param {string} [opts.hour = "2-digit"]
119
+ * @param {string} [opts.minute = "2-digit"]
120
+ * @returns {string}
121
+ */
122
+ const localeTime = (date, options = { hour: "2-digit", minute: "2-digit" }) => time({
123
+ datetime: date.toISOString(),
124
+ "locale-time-options": encodeURIComponent(JSON.stringify(options)),
125
+ }, date.toLocaleTimeString("en", options));
126
+ /**
127
+ * @param {Date} date
128
+ * @param {object} [options = {}]
129
+ * @returns {string}
130
+ */
131
+ const localeDateTime = (date, options = {}) => time({
132
+ datetime: date.toISOString(),
133
+ "locale-options": encodeURIComponent(JSON.stringify(options)),
134
+ }, date.toLocaleString("en", options));
135
+ /**
136
+ * @param {Date} date
137
+ * @param {object} [options = {}]
138
+ * @returns {string}
139
+ */
140
+ const localeDate = (date, options = {}) => time({
141
+ datetime: date.toISOString(),
142
+ "locale-date-options": encodeURIComponent(JSON.stringify(options)),
143
+ }, date.toLocaleDateString("en", options));
144
+ module.exports = {
145
+ mkTable,
146
+ renderForm,
147
+ settingsDropdown,
148
+ renderBuilder,
149
+ link,
150
+ post_btn,
151
+ post_delete_btn,
152
+ post_dropdown_item,
153
+ tabs,
154
+ localeTime,
155
+ localeDate,
156
+ localeDateTime,
157
+ };
158
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ declare namespace LayoutExports {
2
+ type RenderTabsOpts = {
3
+ contents: any[];
4
+ titles: string[];
5
+ tabsStyle: string;
6
+ ntabs?: any;
7
+ independent: boolean;
8
+ };
9
+ }
10
+ declare namespace LayoutExports {
11
+ type RenderOpts = {
12
+ blockDispatch: any;
13
+ layout: any;
14
+ role?: any;
15
+ alerts?: any;
16
+ is_owner?: boolean;
17
+ };
18
+ }
19
+ declare type RenderOpts = LayoutExports.RenderOpts;
20
+ declare const LayoutExports: ({ blockDispatch, layout, role, alerts, is_owner, }: RenderOpts) => string;
21
+ export = LayoutExports;
22
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../layout.ts"],"names":[],"mappings":"AA6FA,kBAAU,aAAa,CAAC;IACtB,KAAY,cAAc,GAAG;QAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;CACH;AAiGD,kBAAU,aAAa,CAAC;IACtB,KAAY,UAAU,GAAG;QACvB,aAAa,EAAE,GAAG,CAAC;QACnB,MAAM,EAAE,GAAG,CAAC;QACZ,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AACD,aAAK,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;AA0Z3C,QAAA,MAAM,aAAa,uDAzYhB,UAAU,KAAG,MAyYY,CAAC;AAC7B,SAAS,aAAa,CAAC"}