@sealcode/sealgen 0.7.0 → 0.7.1

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.
@@ -0,0 +1 @@
1
+ export * from "./tabs";
@@ -0,0 +1,2 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+ export declare function tabs(tabs: Record<string, string>, selected_tab_style?: string, selected_index?: number): FlatTemplatable;
@@ -10,3 +10,4 @@ export { FormParagraph } from "./form-paragraph";
10
10
  export { HTML } from "./html";
11
11
  export { HiddenInput } from "./hidden-input";
12
12
  export { Textarea } from "./textarea";
13
+ export { FieldGroup } from "./field-group";
package/@types/index.d.ts CHANGED
@@ -18,3 +18,4 @@ export * from "./page/list";
18
18
  export * from "./utils/translate";
19
19
  export * as sanitize from "./sanitize";
20
20
  export * from "./forms/multiform";
21
+ export * as Components from "./components/components";
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./tabs"), exports);
14
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../../src/components/components.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuB"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tabs = void 0;
4
+ function name_to_id(str) {
5
+ return str.replace(/\W/g, "-");
6
+ }
7
+ const style = /* HTML */ `<style>
8
+ .tab-label {
9
+ height: 45px;
10
+ line-height: 45px;
11
+ padding: 0 45px;
12
+ display: block;
13
+ float: left;
14
+ box-sizing: border-box;
15
+ border-bottom: 3px solid transparent;
16
+ cursor: pointer;
17
+ font-size: 18px;
18
+ user-select: none;
19
+ }
20
+
21
+ @media screen and (max-width: 869px) {
22
+ .tab-label {
23
+ display: none;
24
+ }
25
+ }
26
+
27
+ .tab-label--mobile {
28
+ line-height: unset;
29
+ padding-top: 30px;
30
+ padding-left: 0;
31
+ pointer-events: none;
32
+ padding-bottom: 30px;
33
+ color: $font-graphite;
34
+ border-bottom: 2px solid $font-primary;
35
+ display: none;
36
+ @media screen and (max-width: 869px) {
37
+ display: block;
38
+ }
39
+ }
40
+
41
+ .tab-content {
42
+ padding-top: 30px;
43
+ clear: both;
44
+ }
45
+
46
+ @media screen and (max-width: 869px) {
47
+ .tab-content {
48
+ display: block !important;
49
+ }
50
+ }
51
+ </style>`;
52
+ function tabs(tabs, selected_tab_style = "font-weight: bold;", selected_index = 0) {
53
+ return /* HTML */ `${style}
54
+ ${Object.keys(tabs)
55
+ .map((tab_title, index) => {
56
+ const id = name_to_id(tab_title);
57
+ return /* HTML */ `<input
58
+ type="radio"
59
+ name="tabs"
60
+ id="${id}"
61
+ class="tab-radio--${id}"
62
+ style="display: none"
63
+ ${selected_index == index ? "checked" : ""}
64
+ />
65
+ <label class="tab-label tab-label--${id}" for="${id}">
66
+ ${tab_title}
67
+ </label>`;
68
+ })
69
+ .join("\n")}
70
+ ${Object.entries(tabs)
71
+ .map(([title, content]) => {
72
+ const id = name_to_id(title);
73
+ return /* HTML */ ` <div class="tab-label tab-label--mobile">
74
+ ${title}
75
+ </div>
76
+ <div class="tab-content tab-content--${id}">${content}</div>
77
+ <style>
78
+ .tab-radio--${id} ~ .tab-content--${id} {
79
+ display:none;
80
+ }
81
+ .tab-radio--${id}:checked ~ .tab-content--${id} {
82
+ display:block;
83
+ }
84
+ .tab-radio--${id}:checked ~ label.tab-label--${id} {
85
+ ${selected_tab_style}
86
+ }
87
+ </style>`;
88
+ })
89
+ .join("\n")}`;
90
+ }
91
+ exports.tabs = tabs;
92
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../src/components/tabs.ts"],"names":[],"mappings":";;;AAEA,SAAS,UAAU,CAAC,GAAW;IAC9B,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,KAAK,GAAG,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA4ChB,CAAC;AAEV,SAAgB,IAAI,CACnB,IAA4B,EAC5B,kBAAkB,GAAG,oBAAoB,EACzC,cAAc,GAAG,CAAC;IAElB,OAAO,UAAU,CAAC,GAAG,KAAK;GACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;SACjB,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,UAAU,CAAC;;;WAGV,EAAE;yBACY,EAAE;;OAEpB,cAAc,IAAI,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;yCAEN,EAAE,UAAU,EAAE;OAChD,SAAS;aACH,CAAC;IACZ,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC;GACV,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACpB,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE;QACzB,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,UAAU,CAAC;OACd,KAAK;;2CAE+B,EAAE,KAAK,OAAO;;mBAEtC,EAAE,oBAAoB,EAAE;;;mBAGxB,EAAE,4BAA4B,EAAE;;;mBAGhC,EAAE,+BAA+B,EAAE;QAC9C,kBAAkB;;aAEb,CAAC;IACZ,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAChB,CAAC;AA1CD,oBA0CC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Textarea = exports.HiddenInput = exports.HTML = exports.FormParagraph = exports.FormHeader = exports.SimpleInput = exports.Dropdown = exports.CheckboxedListInput = exports.Frame = exports.EditableCollectionSubset = exports.FormFieldControl = exports.FormControl = void 0;
3
+ exports.FieldGroup = exports.Textarea = exports.HiddenInput = exports.HTML = exports.FormParagraph = exports.FormHeader = exports.SimpleInput = exports.Dropdown = exports.CheckboxedListInput = exports.Frame = exports.EditableCollectionSubset = exports.FormFieldControl = exports.FormControl = void 0;
4
4
  var form_control_1 = require("./form-control");
5
5
  Object.defineProperty(exports, "FormControl", { enumerable: true, get: function () { return form_control_1.FormControl; } });
6
6
  var form_field_control_1 = require("./form-field-control");
@@ -25,4 +25,6 @@ var hidden_input_1 = require("./hidden-input");
25
25
  Object.defineProperty(exports, "HiddenInput", { enumerable: true, get: function () { return hidden_input_1.HiddenInput; } });
26
26
  var textarea_1 = require("./textarea");
27
27
  Object.defineProperty(exports, "Textarea", { enumerable: true, get: function () { return textarea_1.Textarea; } });
28
+ var field_group_1 = require("./field-group");
29
+ Object.defineProperty(exports, "FieldGroup", { enumerable: true, get: function () { return field_group_1.FieldGroup; } });
28
30
  //# sourceMappingURL=controls.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../../src/forms/controls/controls.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,2EAAwE;AAA/D,sIAAA,wBAAwB,OAAA;AACjC,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA"}
1
+ {"version":3,"file":"controls.js","sourceRoot":"","sources":["../../../src/forms/controls/controls.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,2DAAwD;AAA/C,sHAAA,gBAAgB,OAAA;AACzB,2EAAwE;AAA/D,sIAAA,wBAAwB,OAAA;AACjC,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AACd,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AACb,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,uCAAsC;AAA7B,oGAAA,QAAQ,OAAA;AACjB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA"}
@@ -16,7 +16,7 @@ class FieldGroup extends form_control_1.FormControl {
16
16
  <div class="field-group ${classes || ""}">
17
17
  ${label ? `<label>${label}</label>` : ""}
18
18
  <div class="field-group__fields">
19
- ${this.controls.map((control) => control.render(ctx, data, []))}
19
+ ${this.controls.map((control) => control.render(ctx, data, [], "", ""))}
20
20
  </div>
21
21
  </div>
22
22
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"field-group.js","sourceRoot":"","sources":["../../../src/forms/controls/field-group.ts"],"names":[],"mappings":";;;AACA,2CAAyD;AAEzD,iDAA6C;AAE7C,MAAa,UAAW,SAAQ,0BAAW;IAC1C,YACQ,QAAuB,EACvB,UAAgD,EAAE;QAEzD,KAAK,EAAE,CAAC;QAHD,aAAQ,GAAR,QAAQ,CAAe;QACvB,YAAO,GAAP,OAAO,CAA2C;QAsB1D,SAAI,GAAU,YAAY,CAAC;IAnB3B,CAAC;IAED,KAAK,CAAC,MAAM,CACX,GAAY,EACZ,IAAmC;QAEnC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAExC,OAAO,uBAAU,CAAA,UAAU,CAAC;6BACD,OAAO,IAAI,EAAE;MACpC,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE;;OAErC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/B,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAC7B;;;GAGH,CAAC;IACH,CAAC;CAED;AA1BD,gCA0BC"}
1
+ {"version":3,"file":"field-group.js","sourceRoot":"","sources":["../../../src/forms/controls/field-group.ts"],"names":[],"mappings":";;;AACA,2CAAyD;AAEzD,iDAA6C;AAE7C,MAAa,UAAW,SAAQ,0BAAW;IAC1C,YACQ,QAAuB,EACvB,UAAgD,EAAE;QAEzD,KAAK,EAAE,CAAC;QAHD,aAAQ,GAAR,QAAQ,CAAe;QACvB,YAAO,GAAP,OAAO,CAA2C;QAsB1D,SAAI,GAAU,YAAY,CAAC;IAnB3B,CAAC;IAED,KAAK,CAAC,MAAM,CACX,GAAY,EACZ,IAAmC;QAEnC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAExC,OAAO,uBAAU,CAAA,UAAU,CAAC;6BACD,OAAO,IAAI,EAAE;MACpC,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE;;OAErC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/B,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CACrC;;;GAGH,CAAC;IACH,CAAC;CAED;AA1BD,gCA0BC"}
package/lib/index.js CHANGED
@@ -22,7 +22,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
22
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
- exports.sanitize = exports.Fields = exports.Controls = void 0;
25
+ exports.Components = exports.sanitize = exports.Fields = exports.Controls = void 0;
26
26
  exports.Controls = __importStar(require("./forms/controls/controls"));
27
27
  exports.Fields = __importStar(require("./forms/fields/field"));
28
28
  __exportStar(require("./page/mountable"), exports);
@@ -34,4 +34,5 @@ __exportStar(require("./page/list"), exports);
34
34
  __exportStar(require("./utils/translate"), exports);
35
35
  exports.sanitize = __importStar(require("./sanitize"));
36
36
  __exportStar(require("./forms/multiform"), exports);
37
+ exports.Components = __importStar(require("./components/components"));
37
38
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAWA,sEAAsD;AACtD,+DAA+C;AAC/C,mDAAiC;AACjC,8CAA4B;AAC5B,+CAA6B;AAC7B,sDAAoC;AACpC,gDAA8B;AAC9B,8CAA4B;AAC5B,oDAAkC;AAClC,uDAAuC;AACvC,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAWA,sEAAsD;AACtD,+DAA+C;AAC/C,mDAAiC;AACjC,8CAA4B;AAC5B,+CAA6B;AAC7B,sDAAoC;AACpC,gDAA8B;AAC9B,8CAA4B;AAC5B,oDAAkC;AAClC,uDAAuC;AACvC,oDAAkC;AAClC,sEAAsD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sealcode/sealgen",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Module to automate adding routes and collections to a sealious application",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -0,0 +1 @@
1
+ export * from "./tabs";
@@ -0,0 +1,95 @@
1
+ import { FlatTemplatable } from "tempstream";
2
+
3
+ function name_to_id(str: string) {
4
+ return str.replace(/\W/g, "-");
5
+ }
6
+
7
+ const style = /* HTML */ `<style>
8
+ .tab-label {
9
+ height: 45px;
10
+ line-height: 45px;
11
+ padding: 0 45px;
12
+ display: block;
13
+ float: left;
14
+ box-sizing: border-box;
15
+ border-bottom: 3px solid transparent;
16
+ cursor: pointer;
17
+ font-size: 18px;
18
+ user-select: none;
19
+ }
20
+
21
+ @media screen and (max-width: 869px) {
22
+ .tab-label {
23
+ display: none;
24
+ }
25
+ }
26
+
27
+ .tab-label--mobile {
28
+ line-height: unset;
29
+ padding-top: 30px;
30
+ padding-left: 0;
31
+ pointer-events: none;
32
+ padding-bottom: 30px;
33
+ color: $font-graphite;
34
+ border-bottom: 2px solid $font-primary;
35
+ display: none;
36
+ @media screen and (max-width: 869px) {
37
+ display: block;
38
+ }
39
+ }
40
+
41
+ .tab-content {
42
+ padding-top: 30px;
43
+ clear: both;
44
+ }
45
+
46
+ @media screen and (max-width: 869px) {
47
+ .tab-content {
48
+ display: block !important;
49
+ }
50
+ }
51
+ </style>`;
52
+
53
+ export function tabs(
54
+ tabs: Record<string, string>,
55
+ selected_tab_style = "font-weight: bold;",
56
+ selected_index = 0
57
+ ): FlatTemplatable {
58
+ return /* HTML */ `${style}
59
+ ${Object.keys(tabs)
60
+ .map((tab_title, index) => {
61
+ const id = name_to_id(tab_title);
62
+ return /* HTML */ `<input
63
+ type="radio"
64
+ name="tabs"
65
+ id="${id}"
66
+ class="tab-radio--${id}"
67
+ style="display: none"
68
+ ${selected_index == index ? "checked" : ""}
69
+ />
70
+ <label class="tab-label tab-label--${id}" for="${id}">
71
+ ${tab_title}
72
+ </label>`;
73
+ })
74
+ .join("\n")}
75
+ ${Object.entries(tabs)
76
+ .map(([title, content]) => {
77
+ const id = name_to_id(title);
78
+ return /* HTML */ ` <div class="tab-label tab-label--mobile">
79
+ ${title}
80
+ </div>
81
+ <div class="tab-content tab-content--${id}">${content}</div>
82
+ <style>
83
+ .tab-radio--${id} ~ .tab-content--${id} {
84
+ display:none;
85
+ }
86
+ .tab-radio--${id}:checked ~ .tab-content--${id} {
87
+ display:block;
88
+ }
89
+ .tab-radio--${id}:checked ~ label.tab-label--${id} {
90
+ ${selected_tab_style}
91
+ }
92
+ </style>`;
93
+ })
94
+ .join("\n")}`;
95
+ }
@@ -10,3 +10,4 @@ export { FormParagraph } from "./form-paragraph";
10
10
  export { HTML } from "./html";
11
11
  export { HiddenInput } from "./hidden-input";
12
12
  export { Textarea } from "./textarea";
13
+ export { FieldGroup } from "./field-group";
@@ -0,0 +1,32 @@
1
+ import { Context } from "koa";
2
+ import { FlatTemplatable, tempstream } from "tempstream";
3
+ import { FormDataValue } from "../form";
4
+ import { FormControl } from "./form-control";
5
+
6
+ export class FieldGroup extends FormControl {
7
+ constructor(
8
+ public controls: FormControl[],
9
+ public options: { label?: string; classes?: string } = {}
10
+ ) {
11
+ super();
12
+ }
13
+
14
+ async render(
15
+ ctx: Context,
16
+ data: Record<string, FormDataValue>
17
+ ): Promise<FlatTemplatable> {
18
+ const { label, classes } = this.options;
19
+
20
+ return tempstream/* HTML */ `
21
+ <div class="field-group ${classes || ""}">
22
+ ${label ? `<label>${label}</label>` : ""}
23
+ <div class="field-group__fields">
24
+ ${this.controls.map((control) =>
25
+ control.render(ctx, data, [], "", "")
26
+ )}
27
+ </div>
28
+ </div>
29
+ `;
30
+ }
31
+ role = <const>"decoration";
32
+ }
package/src/index.ts CHANGED
@@ -20,3 +20,4 @@ export * from "./page/list";
20
20
  export * from "./utils/translate";
21
21
  export * as sanitize from "./sanitize";
22
22
  export * from "./forms/multiform";
23
+ export * as Components from "./components/components";