@hotstaq/admin-panel 0.4.0 → 0.4.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.
- package/build/components/admin-add-panel.d.ts +26 -32
- package/build/components/admin-add-panel.d.ts.map +1 -1
- package/build/components/admin-add-panel.js +55 -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 +60 -82
|
@@ -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,13 @@ export declare class AdminAddPanel extends HotComponent {
|
|
|
42
43
|
protected formId: string;
|
|
43
44
|
constructor(copy: HotComponent | HotStaq, api: HotAPI);
|
|
44
45
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* on the toggle button — we don't need to manage that ourselves.
|
|
46
|
+
* Wire submit + cancel handlers after the DOM is in place.
|
|
47
|
+
* Bootstrap's data-bs-toggle handles open/close automatically.
|
|
48
48
|
*/
|
|
49
49
|
onPostPlace(parentHtmlElement: HTMLElement, htmlElement: HTMLElement): HTMLElement;
|
|
50
|
-
|
|
51
|
-
protected
|
|
52
|
-
protected resetFields(panel: HTMLElement): void;
|
|
50
|
+
protected collectFieldValues(root: HTMLElement): any;
|
|
51
|
+
protected resetFields(root: HTMLElement): void;
|
|
53
52
|
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
53
|
protected refreshAttachedList(): void;
|
|
60
54
|
output(): string | HotComponentOutput[];
|
|
61
55
|
}
|
|
@@ -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;;;OAGG;IACH,WAAW,CAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,WAAW;IAsDnF,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,32 @@ 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
|
-
* on the toggle button — we don't need to manage that ourselves.
|
|
52
|
+
* Wire submit + cancel handlers after the DOM is in place.
|
|
53
|
+
* Bootstrap's data-bs-toggle handles open/close automatically.
|
|
53
54
|
*/
|
|
54
55
|
onPostPlace(parentHtmlElement, htmlElement) {
|
|
55
56
|
const self = this;
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
57
|
+
const root = document.getElementById(this.name);
|
|
58
|
+
if (root == null)
|
|
58
59
|
return (null);
|
|
59
|
-
const submitBtn =
|
|
60
|
-
const cancelBtn =
|
|
60
|
+
const submitBtn = root.querySelector(".fl-add-panel-submit");
|
|
61
|
+
const cancelBtn = root.querySelector(".fl-add-panel-cancel");
|
|
61
62
|
if (submitBtn != null) {
|
|
62
63
|
submitBtn.addEventListener("click", (e) => __awaiter(this, void 0, void 0, function* () {
|
|
63
64
|
e.preventDefault();
|
|
64
|
-
const values = self.collectFieldValues(
|
|
65
|
+
const values = self.collectFieldValues(root);
|
|
65
66
|
submitBtn.disabled = true;
|
|
66
67
|
try {
|
|
67
68
|
let keepOpen = false;
|
|
68
69
|
if (typeof self.onsave === "function")
|
|
69
70
|
keepOpen = yield self.onsave(values);
|
|
70
71
|
if (keepOpen === false || keepOpen == null) {
|
|
71
|
-
self.resetFields(
|
|
72
|
+
self.resetFields(root);
|
|
72
73
|
self.collapsePanel();
|
|
73
74
|
self.refreshAttachedList();
|
|
74
75
|
}
|
|
@@ -84,16 +85,15 @@ class AdminAddPanel extends hotstaq_1.HotComponent {
|
|
|
84
85
|
if (cancelBtn != null) {
|
|
85
86
|
cancelBtn.addEventListener("click", (e) => {
|
|
86
87
|
e.preventDefault();
|
|
87
|
-
self.resetFields(
|
|
88
|
+
self.resetFields(root);
|
|
88
89
|
self.collapsePanel();
|
|
89
90
|
});
|
|
90
91
|
}
|
|
91
92
|
return (null);
|
|
92
93
|
}
|
|
93
|
-
|
|
94
|
-
collectFieldValues(panel) {
|
|
94
|
+
collectFieldValues(root) {
|
|
95
95
|
const out = {};
|
|
96
|
-
const nodes =
|
|
96
|
+
const nodes = root.querySelectorAll("[hot-field]");
|
|
97
97
|
for (let i = 0; i < nodes.length; i++) {
|
|
98
98
|
const el = nodes[i];
|
|
99
99
|
const field = el.getAttribute("hot-field");
|
|
@@ -108,8 +108,8 @@ class AdminAddPanel extends hotstaq_1.HotComponent {
|
|
|
108
108
|
}
|
|
109
109
|
return (out);
|
|
110
110
|
}
|
|
111
|
-
resetFields(
|
|
112
|
-
const nodes =
|
|
111
|
+
resetFields(root) {
|
|
112
|
+
const nodes = root.querySelectorAll("[hot-field]");
|
|
113
113
|
for (let i = 0; i < nodes.length; i++) {
|
|
114
114
|
const el = nodes[i];
|
|
115
115
|
if (el instanceof HTMLInputElement && el.type === "checkbox")
|
|
@@ -124,18 +124,10 @@ class AdminAddPanel extends hotstaq_1.HotComponent {
|
|
|
124
124
|
const panel = document.getElementById(this.panelId);
|
|
125
125
|
if (panel == null)
|
|
126
126
|
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
127
|
panel.classList.remove("show");
|
|
131
128
|
const triggers = document.querySelectorAll(`[data-bs-target="#${this.panelId}"]`);
|
|
132
129
|
triggers.forEach(t => t.setAttribute("aria-expanded", "false"));
|
|
133
130
|
}
|
|
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
131
|
refreshAttachedList() {
|
|
140
132
|
if (this.attached_list === "")
|
|
141
133
|
return;
|
|
@@ -149,42 +141,36 @@ class AdminAddPanel extends hotstaq_1.HotComponent {
|
|
|
149
141
|
this.panelId = `${this.name}Panel`;
|
|
150
142
|
this.formId = `${this.name}Form`;
|
|
151
143
|
const showClass = (this.start_open === "1" || this.start_open === "true") ? " show" : "";
|
|
152
|
-
const
|
|
144
|
+
const ariaExp = showClass ? "true" : "false";
|
|
145
|
+
const titleHtml = this.title ? `<strong class="fl-add-panel-title">${this.title}</strong>` : `<span></span>`;
|
|
153
146
|
const cancelHtml = this.cancel_text
|
|
154
147
|
? `<button type="button" class="btn btn-sm btn-link text-muted fl-add-panel-cancel">${this.cancel_text}</button>`
|
|
155
148
|
: "";
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
149
|
+
// Single self-contained card. Header has the toggle, body is the
|
|
150
|
+
// collapse panel containing the form. Bootstrap's data-bs-toggle
|
|
151
|
+
// drives the open/close — no JS wiring needed for that.
|
|
152
|
+
return (`
|
|
153
|
+
<div id="${this.name}" class="card fl-add-panel mb-3">
|
|
154
|
+
<div class="card-header d-flex justify-content-between align-items-center">
|
|
159
155
|
${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>
|
|
156
|
+
<button type="button" class="btn btn-sm btn-primary fl-add-panel-toggle"
|
|
157
|
+
data-bs-toggle="collapse" data-bs-target="#${this.panelId}"
|
|
158
|
+
aria-expanded="${ariaExp}" aria-controls="${this.panelId}">${this.add_text}</button>
|
|
169
159
|
</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);
|
|
160
|
+
<div id="${this.panelId}" class="collapse fl-add-panel-body${showClass}">
|
|
161
|
+
<div class="card-body border-top">
|
|
162
|
+
<form id="${this.formId}" class="fl-add-panel-form">
|
|
163
|
+
<div class="row g-2 align-items-end">
|
|
164
|
+
<hot-place-here name="panelBody"></hot-place-here>
|
|
165
|
+
</div>
|
|
166
|
+
<div class="d-flex justify-content-end gap-2 mt-3">
|
|
167
|
+
${cancelHtml}
|
|
168
|
+
<button type="submit" class="btn btn-sm btn-success fl-add-panel-submit">${this.button_title}</button>
|
|
169
|
+
</div>
|
|
170
|
+
</form>
|
|
171
|
+
</div>
|
|
172
|
+
</div>
|
|
173
|
+
</div>`);
|
|
188
174
|
}
|
|
189
175
|
}
|
|
190
176
|
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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"}
|