@hotstaq/admin-panel 0.4.0 → 0.4.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.
- package/assets/css/freelight-panel.css +18 -3
- package/build/components/admin-add-panel.d.ts +32 -32
- package/build/components/admin-add-panel.d.ts.map +1 -1
- package/build/components/admin-add-panel.js +74 -69
- package/build/components/admin-add-panel.js.map +1 -1
- package/build-web/AdminPanelComponents.js +2 -2
- package/package.json +1 -1
- package/src/components/admin-add-panel.ts +81 -82
|
@@ -32,10 +32,12 @@
|
|
|
32
32
|
|
|
33
33
|
/* ---- admin-card-table ---- */
|
|
34
34
|
.fl-card-table {
|
|
35
|
+
background: var(--flap-surface);
|
|
35
36
|
border-color: var(--flap-border);
|
|
37
|
+
color: var(--flap-text);
|
|
36
38
|
}
|
|
37
39
|
|
|
38
|
-
.fl-card-table .card-header {
|
|
40
|
+
.fl-card-table > .card-header {
|
|
39
41
|
background: var(--flap-surface-2);
|
|
40
42
|
border-bottom: 1px solid var(--flap-border);
|
|
41
43
|
font-weight: 600;
|
|
@@ -99,9 +101,22 @@
|
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
/* ---- admin-add-panel ---- */
|
|
102
|
-
.fl-add-panel
|
|
103
|
-
|
|
104
|
+
.fl-add-panel {
|
|
105
|
+
background: var(--flap-surface);
|
|
106
|
+
border-color: var(--flap-border);
|
|
107
|
+
color: var(--flap-text);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.fl-add-panel > .card-header {
|
|
104
111
|
background: var(--flap-surface-2);
|
|
112
|
+
border-bottom: 1px solid var(--flap-border);
|
|
113
|
+
color: var(--flap-text);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.fl-add-panel-body .card-body {
|
|
117
|
+
background: var(--flap-surface);
|
|
118
|
+
color: var(--flap-text);
|
|
119
|
+
border-top: 1px solid var(--flap-border);
|
|
105
120
|
}
|
|
106
121
|
|
|
107
122
|
.fl-add-panel-title {
|
|
@@ -1,40 +1,41 @@
|
|
|
1
1
|
import { HotStaq, HotAPI, HotComponent, HotComponentOutput } from "hotstaq";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
* <admin-edit hot-type="add"
|
|
5
|
-
*
|
|
3
|
+
* Self-contained inline add form. Replaces the modal opened by
|
|
4
|
+
* <admin-edit hot-type="add"> with a Bootstrap-collapse card that
|
|
5
|
+
* lives directly on the page — header carries the "+ Add" toggle,
|
|
6
|
+
* body holds the form fields. No cross-component DOM injection.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
8
|
+
* Place this above an <admin-card-table>; when the user clicks the
|
|
9
|
+
* header toggle, the form panel slides down. On Save, the paired
|
|
10
|
+
* table is asked to refresh via `attached_list`.
|
|
10
11
|
*
|
|
11
12
|
* Usage:
|
|
12
|
-
* <admin-add-panel name="bankAccountsAdd"
|
|
13
|
-
* hot-
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* }Ra>"
|
|
18
|
-
* hot-attached_list="bankAccountsList">
|
|
13
|
+
* <admin-add-panel name="bankAccountsAdd"
|
|
14
|
+
* hot-title="Add a bank account"
|
|
15
|
+
* hot-attached_list="bankAccountsList"
|
|
16
|
+
* hot-add_text="+ Add bank account"
|
|
17
|
+
* hot-button_title="Create"
|
|
18
|
+
* hot-onsave="<(values) => {...}Ra>">
|
|
19
19
|
* <admin-form-field hot-field="name" hot-label="Name" hot-required="1"
|
|
20
20
|
* hot-col="col-md-6"></admin-form-field>
|
|
21
|
-
*
|
|
21
|
+
* <admin-form-field hot-field="bankSyncAPIType" hot-label="Sync type"
|
|
22
|
+
* hot-control="select"
|
|
23
|
+
* hot-options="paypal_webhooks:PayPal Webhooks"
|
|
24
|
+
* hot-col="col-md-6"></admin-form-field>
|
|
22
25
|
* </admin-add-panel>
|
|
23
26
|
*/
|
|
24
27
|
export declare class AdminAddPanel extends HotComponent {
|
|
25
|
-
/** Title shown
|
|
28
|
+
/** Title shown in the card header (next to the toggle button). */
|
|
26
29
|
title: string;
|
|
27
30
|
/** Submit button label. */
|
|
28
31
|
button_title: string;
|
|
29
|
-
/** Cancel button label. Empty
|
|
32
|
+
/** Cancel button label. Empty hides the cancel button. */
|
|
30
33
|
cancel_text: string;
|
|
31
|
-
/** Optional id of the
|
|
34
|
+
/** Optional id of the partner <admin-card-table>; refreshList() is called after a successful save. */
|
|
32
35
|
attached_list: string;
|
|
33
|
-
/**
|
|
34
|
-
add_place_here: string;
|
|
35
|
-
/** Text shown on the toggle button. */
|
|
36
|
+
/** Text shown on the header toggle button. */
|
|
36
37
|
add_text: string;
|
|
37
|
-
/**
|
|
38
|
+
/** "1" / "true" → panel starts expanded. */
|
|
38
39
|
start_open: string;
|
|
39
40
|
/** What to run when the user clicks Save. Receives a values object built from hot-field inputs. Return false to keep the panel open. */
|
|
40
41
|
onsave: (values: any) => Promise<boolean | void>;
|
|
@@ -42,20 +43,19 @@ export declare class AdminAddPanel extends HotComponent {
|
|
|
42
43
|
protected formId: string;
|
|
43
44
|
constructor(copy: HotComponent | HotStaq, api: HotAPI);
|
|
44
45
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
46
|
+
* Wire submit + cancel handlers after the DOM is in place.
|
|
47
|
+
* Bootstrap's data-bs-toggle handles open/close automatically.
|
|
48
|
+
*
|
|
49
|
+
* Also relocates any child elements (admin-form-fields, etc.) that
|
|
50
|
+
* the framework appended to the card root into the collapse panel's
|
|
51
|
+
* form-row. Without this, children would render OUTSIDE the
|
|
52
|
+
* collapsible body (siblings of the card-header and the collapse
|
|
53
|
+
* div), visible on the page even when the panel is collapsed.
|
|
48
54
|
*/
|
|
49
55
|
onPostPlace(parentHtmlElement: HTMLElement, htmlElement: HTMLElement): HTMLElement;
|
|
50
|
-
|
|
51
|
-
protected
|
|
52
|
-
protected resetFields(panel: HTMLElement): void;
|
|
56
|
+
protected collectFieldValues(root: HTMLElement): any;
|
|
57
|
+
protected resetFields(root: HTMLElement): void;
|
|
53
58
|
protected collapsePanel(): void;
|
|
54
|
-
/**
|
|
55
|
-
* Best-effort refresh of the paired <admin-card-table>. The table
|
|
56
|
-
* exposes a `refreshList` method on the rendered element when its
|
|
57
|
-
* data is loaded; calling it re-fetches without a page reload.
|
|
58
|
-
*/
|
|
59
59
|
protected refreshAttachedList(): void;
|
|
60
60
|
output(): string | HotComponentOutput[];
|
|
61
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-add-panel.d.ts","sourceRoot":"","sources":["../../src/components/admin-add-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAO,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEjF
|
|
1
|
+
{"version":3,"file":"admin-add-panel.d.ts","sourceRoot":"","sources":["../../src/components/admin-add-panel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAO,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEjF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAE9C,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,sGAAsG;IACtG,aAAa,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,wIAAwI;IACxI,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAEjD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,IAAI,EAAE,YAAY,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM;IActD;;;;;;;;;OASG;IACH,WAAW,CAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,WAAW;IAqEnF,SAAS,CAAC,kBAAkB,CAAE,IAAI,EAAE,WAAW,GAAG,GAAG;IAoBrD,SAAS,CAAC,WAAW,CAAE,IAAI,EAAE,WAAW,GAAG,IAAI;IAY/C,SAAS,CAAC,aAAa,IAAK,IAAI;IAShC,SAAS,CAAC,mBAAmB,IAAK,IAAI;IAQtC,MAAM,IAAK,MAAM,GAAG,kBAAkB,EAAE;CAyCxC"}
|
|
@@ -12,25 +12,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.AdminAddPanel = void 0;
|
|
13
13
|
const hotstaq_1 = require("hotstaq");
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
16
|
-
* <admin-edit hot-type="add"
|
|
17
|
-
*
|
|
15
|
+
* Self-contained inline add form. Replaces the modal opened by
|
|
16
|
+
* <admin-edit hot-type="add"> with a Bootstrap-collapse card that
|
|
17
|
+
* lives directly on the page — header carries the "+ Add" toggle,
|
|
18
|
+
* body holds the form fields. No cross-component DOM injection.
|
|
18
19
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
20
|
+
* Place this above an <admin-card-table>; when the user clicks the
|
|
21
|
+
* header toggle, the form panel slides down. On Save, the paired
|
|
22
|
+
* table is asked to refresh via `attached_list`.
|
|
22
23
|
*
|
|
23
24
|
* Usage:
|
|
24
|
-
* <admin-add-panel name="bankAccountsAdd"
|
|
25
|
-
* hot-
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* }Ra>"
|
|
30
|
-
* hot-attached_list="bankAccountsList">
|
|
25
|
+
* <admin-add-panel name="bankAccountsAdd"
|
|
26
|
+
* hot-title="Add a bank account"
|
|
27
|
+
* hot-attached_list="bankAccountsList"
|
|
28
|
+
* hot-add_text="+ Add bank account"
|
|
29
|
+
* hot-button_title="Create"
|
|
30
|
+
* hot-onsave="<(values) => {...}Ra>">
|
|
31
31
|
* <admin-form-field hot-field="name" hot-label="Name" hot-required="1"
|
|
32
32
|
* hot-col="col-md-6"></admin-form-field>
|
|
33
|
-
*
|
|
33
|
+
* <admin-form-field hot-field="bankSyncAPIType" hot-label="Sync type"
|
|
34
|
+
* hot-control="select"
|
|
35
|
+
* hot-options="paypal_webhooks:PayPal Webhooks"
|
|
36
|
+
* hot-col="col-md-6"></admin-form-field>
|
|
34
37
|
* </admin-add-panel>
|
|
35
38
|
*/
|
|
36
39
|
class AdminAddPanel extends hotstaq_1.HotComponent {
|
|
@@ -41,34 +44,51 @@ class AdminAddPanel extends hotstaq_1.HotComponent {
|
|
|
41
44
|
this.button_title = "Save";
|
|
42
45
|
this.cancel_text = "Cancel";
|
|
43
46
|
this.attached_list = "";
|
|
44
|
-
this.add_place_here = "";
|
|
45
47
|
this.add_text = "+ Add";
|
|
46
48
|
this.start_open = "0";
|
|
47
49
|
this.onsave = null;
|
|
48
50
|
}
|
|
49
51
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
52
|
+
* Wire submit + cancel handlers after the DOM is in place.
|
|
53
|
+
* Bootstrap's data-bs-toggle handles open/close automatically.
|
|
54
|
+
*
|
|
55
|
+
* Also relocates any child elements (admin-form-fields, etc.) that
|
|
56
|
+
* the framework appended to the card root into the collapse panel's
|
|
57
|
+
* form-row. Without this, children would render OUTSIDE the
|
|
58
|
+
* collapsible body (siblings of the card-header and the collapse
|
|
59
|
+
* div), visible on the page even when the panel is collapsed.
|
|
53
60
|
*/
|
|
54
61
|
onPostPlace(parentHtmlElement, htmlElement) {
|
|
55
62
|
const self = this;
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
63
|
+
const root = document.getElementById(this.name);
|
|
64
|
+
if (root == null)
|
|
58
65
|
return (null);
|
|
59
|
-
const submitBtn =
|
|
60
|
-
const cancelBtn =
|
|
66
|
+
const submitBtn = root.querySelector(".fl-add-panel-submit");
|
|
67
|
+
const cancelBtn = root.querySelector(".fl-add-panel-cancel");
|
|
68
|
+
// Auto-relocate stray children into the form-row. The framework
|
|
69
|
+
// appends children that lack `hot-place-parent` directly under
|
|
70
|
+
// compHtmlElement2 (the card root). Move them inside the form.
|
|
71
|
+
const row = root.querySelector(".fl-add-panel-form .row");
|
|
72
|
+
const collapse = document.getElementById(this.panelId);
|
|
73
|
+
const header = root.querySelector(":scope > .card-header");
|
|
74
|
+
if (row != null) {
|
|
75
|
+
Array.from(root.children).forEach((child) => {
|
|
76
|
+
if (child === header || child === collapse)
|
|
77
|
+
return;
|
|
78
|
+
row.appendChild(child);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
61
81
|
if (submitBtn != null) {
|
|
62
82
|
submitBtn.addEventListener("click", (e) => __awaiter(this, void 0, void 0, function* () {
|
|
63
83
|
e.preventDefault();
|
|
64
|
-
const values = self.collectFieldValues(
|
|
84
|
+
const values = self.collectFieldValues(root);
|
|
65
85
|
submitBtn.disabled = true;
|
|
66
86
|
try {
|
|
67
87
|
let keepOpen = false;
|
|
68
88
|
if (typeof self.onsave === "function")
|
|
69
89
|
keepOpen = yield self.onsave(values);
|
|
70
90
|
if (keepOpen === false || keepOpen == null) {
|
|
71
|
-
self.resetFields(
|
|
91
|
+
self.resetFields(root);
|
|
72
92
|
self.collapsePanel();
|
|
73
93
|
self.refreshAttachedList();
|
|
74
94
|
}
|
|
@@ -84,16 +104,15 @@ class AdminAddPanel extends hotstaq_1.HotComponent {
|
|
|
84
104
|
if (cancelBtn != null) {
|
|
85
105
|
cancelBtn.addEventListener("click", (e) => {
|
|
86
106
|
e.preventDefault();
|
|
87
|
-
self.resetFields(
|
|
107
|
+
self.resetFields(root);
|
|
88
108
|
self.collapsePanel();
|
|
89
109
|
});
|
|
90
110
|
}
|
|
91
111
|
return (null);
|
|
92
112
|
}
|
|
93
|
-
|
|
94
|
-
collectFieldValues(panel) {
|
|
113
|
+
collectFieldValues(root) {
|
|
95
114
|
const out = {};
|
|
96
|
-
const nodes =
|
|
115
|
+
const nodes = root.querySelectorAll("[hot-field]");
|
|
97
116
|
for (let i = 0; i < nodes.length; i++) {
|
|
98
117
|
const el = nodes[i];
|
|
99
118
|
const field = el.getAttribute("hot-field");
|
|
@@ -108,8 +127,8 @@ class AdminAddPanel extends hotstaq_1.HotComponent {
|
|
|
108
127
|
}
|
|
109
128
|
return (out);
|
|
110
129
|
}
|
|
111
|
-
resetFields(
|
|
112
|
-
const nodes =
|
|
130
|
+
resetFields(root) {
|
|
131
|
+
const nodes = root.querySelectorAll("[hot-field]");
|
|
113
132
|
for (let i = 0; i < nodes.length; i++) {
|
|
114
133
|
const el = nodes[i];
|
|
115
134
|
if (el instanceof HTMLInputElement && el.type === "checkbox")
|
|
@@ -124,18 +143,10 @@ class AdminAddPanel extends hotstaq_1.HotComponent {
|
|
|
124
143
|
const panel = document.getElementById(this.panelId);
|
|
125
144
|
if (panel == null)
|
|
126
145
|
return;
|
|
127
|
-
// Bootstrap collapse hide — works without importing Bootstrap JS
|
|
128
|
-
// directly by toggling the .show class and aria-expanded on any
|
|
129
|
-
// trigger pointed at us.
|
|
130
146
|
panel.classList.remove("show");
|
|
131
147
|
const triggers = document.querySelectorAll(`[data-bs-target="#${this.panelId}"]`);
|
|
132
148
|
triggers.forEach(t => t.setAttribute("aria-expanded", "false"));
|
|
133
149
|
}
|
|
134
|
-
/**
|
|
135
|
-
* Best-effort refresh of the paired <admin-card-table>. The table
|
|
136
|
-
* exposes a `refreshList` method on the rendered element when its
|
|
137
|
-
* data is loaded; calling it re-fetches without a page reload.
|
|
138
|
-
*/
|
|
139
150
|
refreshAttachedList() {
|
|
140
151
|
if (this.attached_list === "")
|
|
141
152
|
return;
|
|
@@ -149,42 +160,36 @@ class AdminAddPanel extends hotstaq_1.HotComponent {
|
|
|
149
160
|
this.panelId = `${this.name}Panel`;
|
|
150
161
|
this.formId = `${this.name}Form`;
|
|
151
162
|
const showClass = (this.start_open === "1" || this.start_open === "true") ? " show" : "";
|
|
152
|
-
const
|
|
163
|
+
const ariaExp = showClass ? "true" : "false";
|
|
164
|
+
const titleHtml = this.title ? `<strong class="fl-add-panel-title">${this.title}</strong>` : `<span></span>`;
|
|
153
165
|
const cancelHtml = this.cancel_text
|
|
154
166
|
? `<button type="button" class="btn btn-sm btn-link text-muted fl-add-panel-cancel">${this.cancel_text}</button>`
|
|
155
167
|
: "";
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
168
|
+
// Single self-contained card. Header has the toggle, body is the
|
|
169
|
+
// collapse panel containing the form. Bootstrap's data-bs-toggle
|
|
170
|
+
// drives the open/close — no JS wiring needed for that.
|
|
171
|
+
return (`
|
|
172
|
+
<div id="${this.name}" class="card fl-add-panel mb-3">
|
|
173
|
+
<div class="card-header d-flex justify-content-between align-items-center">
|
|
159
174
|
${titleHtml}
|
|
160
|
-
<
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
</div>
|
|
164
|
-
<div class="d-flex justify-content-end gap-2 mt-3">
|
|
165
|
-
${cancelHtml}
|
|
166
|
-
<button type="submit" class="btn btn-sm btn-success fl-add-panel-submit">${this.button_title}</button>
|
|
167
|
-
</div>
|
|
168
|
-
</form>
|
|
175
|
+
<button type="button" class="btn btn-sm btn-primary fl-add-panel-toggle"
|
|
176
|
+
data-bs-toggle="collapse" data-bs-target="#${this.panelId}"
|
|
177
|
+
aria-expanded="${ariaExp}" aria-controls="${this.panelId}">${this.add_text}</button>
|
|
169
178
|
</div>
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
documentSelector: `hot-place-here[name="${this.add_place_here}"]`
|
|
185
|
-
});
|
|
186
|
-
}
|
|
187
|
-
return (outputs);
|
|
179
|
+
<div id="${this.panelId}" class="collapse fl-add-panel-body${showClass}">
|
|
180
|
+
<div class="card-body border-top">
|
|
181
|
+
<form id="${this.formId}" class="fl-add-panel-form">
|
|
182
|
+
<div class="row g-2 align-items-end">
|
|
183
|
+
<hot-place-here name="panelBody"></hot-place-here>
|
|
184
|
+
</div>
|
|
185
|
+
<div class="d-flex justify-content-end gap-2 mt-3">
|
|
186
|
+
${cancelHtml}
|
|
187
|
+
<button type="submit" class="btn btn-sm btn-success fl-add-panel-submit">${this.button_title}</button>
|
|
188
|
+
</div>
|
|
189
|
+
</form>
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
</div>`);
|
|
188
193
|
}
|
|
189
194
|
}
|
|
190
195
|
exports.AdminAddPanel = AdminAddPanel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-add-panel.js","sourceRoot":"","sources":["../../src/components/admin-add-panel.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAiF;AAEjF
|
|
1
|
+
{"version":3,"file":"admin-add-panel.js","sourceRoot":"","sources":["../../src/components/admin-add-panel.ts"],"names":[],"mappings":"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"}
|