@antelopejs/dms 0.4.2 → 0.4.4
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/CHANGELOG.md +43 -0
- package/dist/pages/settings/users/invites.js +6 -5
- package/dist/pages/settings/users/invites.js.map +1 -1
- package/dist/pages/settings/users/members.d.ts +1 -0
- package/dist/pages/settings/users/members.js +12 -3
- package/dist/pages/settings/users/members.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/form-catalog.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms-base/form-catalog.test.js +62 -0
- package/dist/test/unit/interfaces/dms-base/form-catalog.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/period-selector-catalog.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms-base/period-selector-catalog.test.js +36 -0
- package/dist/test/unit/interfaces/dms-base/period-selector-catalog.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/resource-form.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms-base/resource-form.test.js +117 -0
- package/dist/test/unit/interfaces/dms-base/resource-form.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/table-and-card-catalog.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms-base/table-and-card-catalog.test.js +62 -0
- package/dist/test/unit/interfaces/dms-base/table-and-card-catalog.test.js.map +1 -0
- package/frontend-vue/dms.frontend.ts +2 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardHeader.vue +4 -2
- package/frontend-vue/layers/dms-layout/app/composables/general/types/index.ts +7 -0
- package/frontend-vue/layers/dms-layout/app/composables/general/useColorModePreference.ts +17 -0
- package/frontend-vue/layers/dms-layout/app/custom-pages/settings/appearance.vue +6 -6
- package/frontend-vue/layers/dms-layout/app/plugins/color-mode.ts +100 -0
- package/frontend-vue/layers/dms-ui/app/components/Placeholder.vue +17 -5
- package/frontend-vue/layers/dms-ui/app/components/chart/ChartCard.vue +14 -9
- package/frontend-vue/layers/dms-ui/app/components/form/Form.vue +49 -6
- package/frontend-vue/layers/dms-ui/app/components/form/components/Calendar.vue +49 -26
- package/frontend-vue/layers/dms-ui/app/components/form/components/DatePicker.vue +77 -32
- package/frontend-vue/layers/dms-ui/app/components/grid/Grid.vue +15 -5
- package/frontend-vue/layers/dms-ui/app/components/grid/GridRow.vue +7 -4
- package/frontend-vue/layers/dms-ui/app/components/grid/constants.ts +8 -1
- package/frontend-vue/layers/dms-ui/app/components/kpi/KpiCard.vue +14 -9
- package/frontend-vue/layers/dms-ui/app/composables/chart/formatValue.ts +15 -0
- package/frontend-vue/layers/dms-ui/app/composables/chart/types.ts +4 -2
- package/frontend-vue/layers/dms-ui/app/composables/chart/useThemeRevision.ts +0 -22
- package/frontend-vue/layers/dms-ui/app/composables/form/types/props.ts +2 -0
- package/frontend-vue/layers/dms-ui/app/composables/form/useForm.ts +76 -4
- package/frontend-vue/layers/dms-ui/app/composables/tree/useTree.ts +5 -7
- package/frontend-vue/layers/dms-ui/i18n/locales/ui-en-GB.json +2 -0
- package/frontend-vue/layers/dms-ui/i18n/locales/ui-fr-FR.json +2 -0
- package/frontend-vue/package.json +2 -2
- package/frontend-vue/pnpm-lock.yaml +7 -33
- package/frontend-vue/tests/chart-absent-value.test.ts +78 -0
- package/frontend-vue/tests/color-mode-server-render.test.ts +84 -0
- package/frontend-vue/tests/color-mode-sync.test.ts +320 -0
- package/frontend-vue/tests/form-actions.test.ts +27 -0
- package/frontend-vue/tests/form-required-fields.test.ts +44 -0
- package/frontend-vue/tests/form-submit-target.test.ts +28 -0
- package/frontend-vue/tests/tree-without-source.test.ts +79 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,48 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v0.4.4
|
|
4
|
+
|
|
5
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.4.3...v0.4.4)
|
|
6
|
+
|
|
7
|
+
### 🚀 Enhancements
|
|
8
|
+
|
|
9
|
+
- **base:** Declare where a block's data comes from, and arrange the answer ([#15](https://github.com/AntelopeJS/dms/pull/15))
|
|
10
|
+
|
|
11
|
+
### 🏡 Chore
|
|
12
|
+
|
|
13
|
+
- **release:** @antelopejs/interface-dms v0.2.3 ([726ddbb](https://github.com/AntelopeJS/dms/commit/726ddbb))
|
|
14
|
+
|
|
15
|
+
### ❤️ Contributors
|
|
16
|
+
|
|
17
|
+
- Fabrice Cst <fabrice@altab.be>
|
|
18
|
+
|
|
19
|
+
## v0.4.3
|
|
20
|
+
|
|
21
|
+
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.4.2...v0.4.3)
|
|
22
|
+
|
|
23
|
+
### 🚀 Enhancements
|
|
24
|
+
|
|
25
|
+
- **form:** Mark required fields and add a required legend ([#46](https://github.com/AntelopeJS/dms/pull/46))
|
|
26
|
+
- **settings:** Reach pending invites from the members page ([#47](https://github.com/AntelopeJS/dms/pull/47))
|
|
27
|
+
|
|
28
|
+
### 🩹 Fixes
|
|
29
|
+
|
|
30
|
+
- **playground:** Build the dms and the playground before starting ([ce1e7bd](https://github.com/AntelopeJS/dms/commit/ce1e7bd))
|
|
31
|
+
- **form:** Handle partial ranges and show range and multiple dates in the date picker ([b12efcf](https://github.com/AntelopeJS/dms/commit/b12efcf))
|
|
32
|
+
- **form:** Emit ISO strings for multiple dates in the calendar and date picker ([327ebc2](https://github.com/AntelopeJS/dms/commit/327ebc2))
|
|
33
|
+
- **layout:** Keep the current page in the breadcrumb when the URL has a query ([#53](https://github.com/AntelopeJS/dms/pull/53))
|
|
34
|
+
- **layout:** Keep the color-mode preference in a dms-color-mode cookie ([#56](https://github.com/AntelopeJS/dms/pull/56))
|
|
35
|
+
|
|
36
|
+
### 🏡 Chore
|
|
37
|
+
|
|
38
|
+
- **release:** @antelopejs/interface-dms v0.2.2 ([2be2aba](https://github.com/AntelopeJS/dms/commit/2be2aba))
|
|
39
|
+
- **playground:** Add sibling pages whose slugs share a prefix ([#49](https://github.com/AntelopeJS/dms/pull/49))
|
|
40
|
+
|
|
41
|
+
### ❤️ Contributors
|
|
42
|
+
|
|
43
|
+
- Alessandro Aloisio ([@alessaloisio](http://github.com/alessaloisio))
|
|
44
|
+
- Antony Rizzitelli <rizzitelli.antony@pm.me>
|
|
45
|
+
|
|
3
46
|
## v0.4.2
|
|
4
47
|
|
|
5
48
|
[compare changes](https://github.com/AntelopeJS/dms/compare/v0.4.1...v0.4.2)
|
|
@@ -30,9 +30,9 @@ const default_types_1 = require("@antelopejs/interface-dms/base/data-types/defau
|
|
|
30
30
|
const status_type_1 = require("@antelopejs/interface-dms/base/data-types/status-type");
|
|
31
31
|
const types_1 = require("@antelopejs/interface-dms/base/types");
|
|
32
32
|
const fire_and_forget_1 = require("@antelopejs/interface-dms/utils/fire-and-forget");
|
|
33
|
-
const category_1 = require("./category");
|
|
34
33
|
const member_invite_form_1 = require("./member-invite-form");
|
|
35
34
|
const members_1 = require("./members");
|
|
35
|
+
const INVITES_PERMISSION_ID = "settings.user.invites";
|
|
36
36
|
let inviteSettingDataAPI = class inviteSettingDataAPI extends (0, interface_data_api_1.DataController)(db_1.UserInvite, {
|
|
37
37
|
list: base_1.TableViewRoutes.List,
|
|
38
38
|
get: base_1.TableViewRoutes.Get,
|
|
@@ -188,9 +188,10 @@ exports.inviteSettingDataAPI = inviteSettingDataAPI = __decorate([
|
|
|
188
188
|
], inviteSettingDataAPI);
|
|
189
189
|
let InvitesSettingsController = class InvitesSettingsController extends (0, page_1.PageController)("invites", {
|
|
190
190
|
displayName: "$menu.invites",
|
|
191
|
-
category:
|
|
191
|
+
category: members_1.MembersSettingsController,
|
|
192
|
+
permission: { id: INVITES_PERMISSION_ID },
|
|
193
|
+
hidden: true,
|
|
192
194
|
icon: "i-ph-envelope-simple",
|
|
193
|
-
order: 5,
|
|
194
195
|
description: "$page.settings.description.invites",
|
|
195
196
|
}) {
|
|
196
197
|
static table = (0, base_1.TableView)(inviteSettingDataAPI, {
|
|
@@ -225,7 +226,7 @@ let InvitesSettingsController = class InvitesSettingsController extends (0, page
|
|
|
225
226
|
icon: "i-ph-arrow-clockwise",
|
|
226
227
|
target: {
|
|
227
228
|
type: "api",
|
|
228
|
-
url:
|
|
229
|
+
url: `${members_1.INVITES_PAGE_PATH}/{_id}/resend`,
|
|
229
230
|
method: "POST",
|
|
230
231
|
successMessage: "$page.settings.invites.action.resend_success",
|
|
231
232
|
confirm: {
|
|
@@ -240,7 +241,7 @@ let InvitesSettingsController = class InvitesSettingsController extends (0, page
|
|
|
240
241
|
icon: "i-ph-trash",
|
|
241
242
|
target: {
|
|
242
243
|
type: "api",
|
|
243
|
-
url:
|
|
244
|
+
url: `${members_1.INVITES_PAGE_PATH}/{_id}/cancel`,
|
|
244
245
|
method: "DELETE",
|
|
245
246
|
successMessage: "$page.settings.invites.action.cancel_success",
|
|
246
247
|
confirm: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/invites.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAOmC;AACnC,uEAAwD;AACxD,uEAGwC;AACxC,sEAMiD;AACjD,4EAAsF;AACtF,qDAA2E;AAC3E,mFAIqD;AACrD,+DAG2C;AAC3C,yDAA8E;AAC9E,6EAA8E;AAC9E,uFAAkF;AAClF,yDAAsE;AACtE,yDAMwC;AACxC,2FAA2F;AAC3F,uFAAmF;AACnF,gEAA4E;AAC5E,qFAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"invites.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/invites.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type RequestContext } from "@antelopejs/interface-api";
|
|
2
2
|
import type { Action } from "@antelopejs/interface-dms/component";
|
|
3
3
|
import { type User, UserModel } from "@antelopejs/interface-dms/auth/db";
|
|
4
|
+
export declare const INVITES_PAGE_PATH = "/settings/user/members/invites";
|
|
4
5
|
export declare const membersTable: import("@antelopejs/interface-dms").ComponentBuilder<import("@antelopejs/interface-dms/base").TableViewOptionsSerialized>;
|
|
5
6
|
export declare const membersTableAddAction: Action;
|
|
6
7
|
declare const MembersSettingsController_base: {
|
|
@@ -12,7 +12,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.MembersSettingsController = exports.membersTableAddAction = exports.membersTable = void 0;
|
|
15
|
+
exports.MembersSettingsController = exports.membersTableAddAction = exports.membersTable = exports.INVITES_PAGE_PATH = void 0;
|
|
16
16
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
17
17
|
const interface_api_util_1 = require("@antelopejs/interface-api-util");
|
|
18
18
|
const interface_data_api_1 = require("@antelopejs/interface-data-api");
|
|
@@ -28,13 +28,14 @@ const request_tenant_1 = require("@antelopejs/interface-dms/request-tenant");
|
|
|
28
28
|
const tenant_ownership_1 = require("@antelopejs/interface-dms/tenant-ownership");
|
|
29
29
|
const db_2 = require("@antelopejs/interface-dms/auth/db");
|
|
30
30
|
const base_1 = require("@antelopejs/interface-dms/base");
|
|
31
|
+
const types_1 = require("@antelopejs/interface-dms/base/types");
|
|
31
32
|
const saas_mode_1 = require("@antelopejs/interface-dms/utils/saas-mode");
|
|
32
33
|
const member_invite_schema_1 = require("../../../validation/member-invite.schema");
|
|
33
34
|
const category_1 = require("./category");
|
|
34
35
|
const member_invite_form_1 = require("./member-invite-form");
|
|
35
36
|
(0, interface_data_api_1.RegisterDataController)()(data_controllers_1.memberSettingDataAPI);
|
|
36
37
|
const MEMBERS_PAGE_PATH = "/settings/user/members";
|
|
37
|
-
|
|
38
|
+
exports.INVITES_PAGE_PATH = `${MEMBERS_PAGE_PATH}/invites`;
|
|
38
39
|
function detectOwnerChange(current, body) {
|
|
39
40
|
if (body.isTenantOwner === undefined)
|
|
40
41
|
return null;
|
|
@@ -93,6 +94,14 @@ exports.membersTable = (0, base_1.TableView)(data_controllers_1.memberSettingDat
|
|
|
93
94
|
],
|
|
94
95
|
},
|
|
95
96
|
customButtons: [
|
|
97
|
+
{
|
|
98
|
+
label: "$menu.invites",
|
|
99
|
+
icon: "i-ph-envelope-simple",
|
|
100
|
+
color: "neutral",
|
|
101
|
+
variant: types_1.ButtonVariant.outline,
|
|
102
|
+
permission: "add",
|
|
103
|
+
target: { type: "page", url: exports.INVITES_PAGE_PATH },
|
|
104
|
+
},
|
|
96
105
|
{
|
|
97
106
|
label: "$page.settings.members.invite.button",
|
|
98
107
|
icon: "i-ph-user-plus",
|
|
@@ -180,7 +189,7 @@ let MembersSettingsController = class MembersSettingsController extends (0, page
|
|
|
180
189
|
extensions,
|
|
181
190
|
});
|
|
182
191
|
return {
|
|
183
|
-
redirectPath: result.kind === "added" ? MEMBERS_PAGE_PATH : INVITES_PAGE_PATH,
|
|
192
|
+
redirectPath: result.kind === "added" ? MEMBERS_PAGE_PATH : exports.INVITES_PAGE_PATH,
|
|
184
193
|
};
|
|
185
194
|
}
|
|
186
195
|
async validateMemberEmail(ctx, memberId, userModel) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/members.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,6DAMmC;AACnC,uEAA0E;AAC1E,uEAAwE;AACxE,6FAA4E;AAE5E,iFAAkF;AAClF,qDAGsC;AACtC,6DAA0E;AAC1E,2DAAqE;AACrE,mFAA6F;AAC7F,+DAAuE;AACvE,yDAA8E;AAC9E,6EAA8E;AAC9E,iFAGoD;AACpD,0DAAyE;AACzE,yDAA2D;AAC3D,yEAAuE;AACvE,mFAA8E;AAC9E,yCAA0C;AAC1C,6DAAwD;AAExD,IAAA,2CAAsB,GAAE,CAAC,uCAAoB,CAAC,CAAC;AAI/C,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"members.js","sourceRoot":"","sources":["../../../../src/pages/settings/users/members.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const block_types_1 = require("@antelopejs/interface-dms/base/block-types");
|
|
5
|
+
describe("[unit] interfaces/dms-base/form — its catalog entry", () => {
|
|
6
|
+
function entryBranches() {
|
|
7
|
+
const declared = (0, block_types_1.ListBlockTypes)().find((block) => block.type === "Form");
|
|
8
|
+
return declared?.config.fields?.items?.oneOf ?? [];
|
|
9
|
+
}
|
|
10
|
+
it("names both kinds of entry a form's fields can hold", () => {
|
|
11
|
+
(0, chai_1.expect)(entryBranches().map((branch) => branch.ui?.label)).to.deep.equal([
|
|
12
|
+
"Group",
|
|
13
|
+
"Field",
|
|
14
|
+
]);
|
|
15
|
+
});
|
|
16
|
+
it("says a field's key and a group's can be derived from their label", () => {
|
|
17
|
+
const [group, field] = entryBranches();
|
|
18
|
+
(0, chai_1.expect)(field?.properties?.id?.ui?.derivedFrom).to.equal("label");
|
|
19
|
+
(0, chai_1.expect)(group?.properties?.id?.ui?.derivedFrom).to.equal("label");
|
|
20
|
+
});
|
|
21
|
+
it("says a field's default takes the field's own type", () => {
|
|
22
|
+
const [, field] = entryBranches();
|
|
23
|
+
(0, chai_1.expect)(field?.properties?.defaultValue?.ui?.typedBy).to.equal("type");
|
|
24
|
+
});
|
|
25
|
+
it("is placed showing its buttons, a setting of the advanced view", () => {
|
|
26
|
+
const config = (0, block_types_1.ListBlockTypes)().find((block) => block.type === "Form")?.config;
|
|
27
|
+
(0, chai_1.expect)(config?.showActions?.ui).to.include({
|
|
28
|
+
initial: true,
|
|
29
|
+
advanced: true,
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
it("leaves its addresses and methods to the advanced view", () => {
|
|
33
|
+
const config = (0, block_types_1.ListBlockTypes)().find((block) => block.type === "Form")?.config;
|
|
34
|
+
for (const key of [
|
|
35
|
+
"fetchUrl",
|
|
36
|
+
"fetchUrlMethod",
|
|
37
|
+
"submitUrl",
|
|
38
|
+
"submitUrlMethod",
|
|
39
|
+
]) {
|
|
40
|
+
(0, chai_1.expect)(config?.[key]?.ui?.advanced, key).to.equal(true);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
it("names what a group of fields is set up with", () => {
|
|
44
|
+
const [group] = entryBranches();
|
|
45
|
+
(0, chai_1.expect)(group?.properties?.label?.ui?.label).to.equal("Title");
|
|
46
|
+
(0, chai_1.expect)(group?.properties?.fields?.ui?.label).to.equal("Fields");
|
|
47
|
+
});
|
|
48
|
+
for (const type of ["Form", "ResourceForm"]) {
|
|
49
|
+
it(`puts the submit messages of a ${type} behind one switch`, () => {
|
|
50
|
+
const config = (0, block_types_1.ListBlockTypes)().find((block) => block.type === type)?.config;
|
|
51
|
+
(0, chai_1.expect)(config?.successMessage?.ui).to.include({
|
|
52
|
+
optIn: "Custom submit messages",
|
|
53
|
+
placeholder: "Data has been successfully saved",
|
|
54
|
+
});
|
|
55
|
+
(0, chai_1.expect)(config?.errorMessage?.ui).to.include({
|
|
56
|
+
optIn: "Custom submit messages",
|
|
57
|
+
placeholder: "An unknown error occurred",
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=form-catalog.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-catalog.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/form-catalog.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const block_types_1 = require("@antelopejs/interface-dms/base/block-types");
|
|
5
|
+
function periodSelectorConfig() {
|
|
6
|
+
const declared = (0, block_types_1.ListBlockTypes)().find((block) => block.type === "PeriodSelector");
|
|
7
|
+
(0, chai_1.expect)(declared, "PeriodSelector is declared").to.not.equal(undefined);
|
|
8
|
+
return declared.config;
|
|
9
|
+
}
|
|
10
|
+
describe("[unit] interfaces/dms-base/period-selector — its catalog entry", () => {
|
|
11
|
+
it("names the ranges a range label can be given for", () => {
|
|
12
|
+
const labels = periodSelectorConfig().presetLabels;
|
|
13
|
+
(0, chai_1.expect)(labels?.type).to.equal("record");
|
|
14
|
+
(0, chai_1.expect)(labels?.ui?.widget, "no longer a JSON box").to.equal(undefined);
|
|
15
|
+
(0, chai_1.expect)(labels?.keys?.enum).to.include("last-30-days");
|
|
16
|
+
(0, chai_1.expect)(labels?.keys?.ui?.valueLabels?.["ytd"]).to.equal("Year to date");
|
|
17
|
+
(0, chai_1.expect)(labels?.values?.type).to.equal("string");
|
|
18
|
+
});
|
|
19
|
+
it("names the comparisons a comparison label can be given for", () => {
|
|
20
|
+
const labels = periodSelectorConfig().comparisonLabels;
|
|
21
|
+
(0, chai_1.expect)(labels?.keys?.enum).to.deep.equal([
|
|
22
|
+
"none",
|
|
23
|
+
"previous-period",
|
|
24
|
+
"previous-year",
|
|
25
|
+
"custom",
|
|
26
|
+
]);
|
|
27
|
+
(0, chai_1.expect)(labels?.keys?.ui?.valueLabels?.["previous-period"]).to.equal("vs previous period");
|
|
28
|
+
});
|
|
29
|
+
it("names the values of the pickers that choose a range", () => {
|
|
30
|
+
const config = periodSelectorConfig();
|
|
31
|
+
(0, chai_1.expect)(config.defaultPreset?.ui?.label, "its own hints still apply").to.equal("Default range");
|
|
32
|
+
(0, chai_1.expect)(config.defaultPreset?.ui?.valueLabels?.["last-7-days"]).to.equal("Last 7 days");
|
|
33
|
+
(0, chai_1.expect)(config.presets?.items?.ui?.valueLabels?.["today"]).to.equal("Today");
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=period-selector-catalog.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"period-selector-catalog.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/period-selector-catalog.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,4EAA4E;AAE5E,SAAS,oBAAoB;IAC3B,MAAM,QAAQ,GAAG,IAAA,4BAAc,GAAE,CAAC,IAAI,CACpC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAC3C,CAAC;IACF,IAAA,aAAM,EAAC,QAAQ,EAAE,4BAA4B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvE,OAAO,QAAS,CAAC,MAAM,CAAC;AAC1B,CAAC;AAOD,QAAQ,CAAC,gEAAgE,EAAE,GAAG,EAAE;IAC9E,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC,YAAY,CAAC;QAEnD,IAAA,aAAM,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAA,aAAM,EAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvE,IAAA,aAAM,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACtD,IAAA,aAAM,EAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACxE,IAAA,aAAM,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC,gBAAgB,CAAC;QAEvD,IAAA,aAAM,EAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YACvC,MAAM;YACN,iBAAiB;YACjB,eAAe;YACf,QAAQ;SACT,CAAC,CAAC;QACH,IAAA,aAAM,EAAC,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACjE,oBAAoB,CACrB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;QAEtC,IAAA,aAAM,EACJ,MAAM,CAAC,aAAa,EAAE,EAAE,EAAE,KAAK,EAC/B,2BAA2B,CAC5B,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC5B,IAAA,aAAM,EAAC,MAAM,CAAC,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACrE,aAAa,CACd,CAAC;QACF,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
13
|
+
const interface_data_api_1 = require("@antelopejs/interface-data-api");
|
|
14
|
+
const metadata_1 = require("@antelopejs/interface-data-api/metadata");
|
|
15
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
16
|
+
const chai_1 = require("chai");
|
|
17
|
+
const block_types_1 = require("@antelopejs/interface-dms/base/block-types");
|
|
18
|
+
const default_types_1 = require("@antelopejs/interface-dms/base/data-types/default-types");
|
|
19
|
+
const factory_1 = require("@antelopejs/interface-dms/base/table-view/factory");
|
|
20
|
+
const meta_1 = require("@antelopejs/interface-dms/base/table-view/meta");
|
|
21
|
+
const resource_form_1 = require("@antelopejs/interface-dms/base/table-view/resource-form");
|
|
22
|
+
const routes_1 = require("@antelopejs/interface-dms/base/table-view/routes");
|
|
23
|
+
const http_1 = require("@antelopejs/interface-dms/base/types/http");
|
|
24
|
+
const SCHEMA = "resource-form-test";
|
|
25
|
+
const TABLE = "tickets";
|
|
26
|
+
const LOCATION = "/resource-form-test";
|
|
27
|
+
let Ticket = class Ticket extends interface_database_decorators_1.Table {
|
|
28
|
+
};
|
|
29
|
+
__decorate([
|
|
30
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], Ticket.prototype, "title", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
35
|
+
__metadata("design:type", String)
|
|
36
|
+
], Ticket.prototype, "reference", void 0);
|
|
37
|
+
Ticket = __decorate([
|
|
38
|
+
(0, interface_database_decorators_1.RegisterTable)(TABLE, SCHEMA)
|
|
39
|
+
], Ticket);
|
|
40
|
+
class TicketModel extends (0, interface_database_decorators_1.BasicDataModel)(Ticket, TABLE) {
|
|
41
|
+
}
|
|
42
|
+
let TicketAPI = class TicketAPI extends (0, interface_data_api_1.DataController)(Ticket, routes_1.TableViewRoutes.All, (0, interface_api_1.Controller)(LOCATION)) {
|
|
43
|
+
};
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, metadata_1.ModelReference)(),
|
|
46
|
+
(0, interface_database_decorators_1.Model)(TicketModel),
|
|
47
|
+
__metadata("design:type", TicketModel)
|
|
48
|
+
], TicketAPI.prototype, "model", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, meta_1.Column)({ name: "Title", type: new default_types_1.DefaultDataTypes.StringType() }),
|
|
51
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
52
|
+
__metadata("design:type", String)
|
|
53
|
+
], TicketAPI.prototype, "title", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
(0, meta_1.Column)({ name: "Reference", type: new default_types_1.DefaultDataTypes.StringType() }),
|
|
56
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
57
|
+
__metadata("design:type", String)
|
|
58
|
+
], TicketAPI.prototype, "reference", void 0);
|
|
59
|
+
TicketAPI = __decorate([
|
|
60
|
+
(0, interface_data_api_1.RegisterDataController)()
|
|
61
|
+
], TicketAPI);
|
|
62
|
+
function optionsOf(builder) {
|
|
63
|
+
return builder.serializeSync().options;
|
|
64
|
+
}
|
|
65
|
+
function fieldIds(options) {
|
|
66
|
+
return options.fields.map((field) => field.id);
|
|
67
|
+
}
|
|
68
|
+
describe("[unit] interfaces/dms-base/resource-form — a form derived from its table", () => {
|
|
69
|
+
it("is the form a TableView opens for the mode", () => {
|
|
70
|
+
const table = (0, factory_1.TableView)(TicketAPI).serializeSync()
|
|
71
|
+
.options;
|
|
72
|
+
const created = optionsOf((0, resource_form_1.ResourceForm)(TicketAPI, { mode: "new" }));
|
|
73
|
+
(0, chai_1.expect)(created.submitUrl).to.equal(`${LOCATION}/new`);
|
|
74
|
+
(0, chai_1.expect)(created.submitUrlMethod).to.equal(http_1.HttpMethod.post);
|
|
75
|
+
const opened = table.formComponents.new?.options;
|
|
76
|
+
(0, chai_1.expect)(created.fetchUrl).to.equal(opened.fetchUrl);
|
|
77
|
+
(0, chai_1.expect)(fieldIds(created)).to.deep.equal(fieldIds(opened));
|
|
78
|
+
});
|
|
79
|
+
it("opens the row the page's query string names, in edit and view", () => {
|
|
80
|
+
const edited = optionsOf((0, resource_form_1.ResourceForm)(TicketAPI, { mode: "edit" }));
|
|
81
|
+
const shown = optionsOf((0, resource_form_1.ResourceForm)(TicketAPI, { mode: "view" }));
|
|
82
|
+
(0, chai_1.expect)(edited.fetchUrl).to.match(new RegExp(`^${LOCATION}/get\\?id=\\{\\{query\\.id\\}\\}&`));
|
|
83
|
+
(0, chai_1.expect)(edited.submitUrl).to.equal(`${LOCATION}/edit?id={{query.id}}`);
|
|
84
|
+
(0, chai_1.expect)(edited.submitUrlMethod).to.equal(http_1.HttpMethod.put);
|
|
85
|
+
(0, chai_1.expect)(shown.fetchUrl).to.equal(`${LOCATION}/get?id={{query.id}}`);
|
|
86
|
+
});
|
|
87
|
+
it("keeps the TableView's own pages on their :id segment", () => {
|
|
88
|
+
const table = (0, factory_1.TableView)(TicketAPI).serializeSync()
|
|
89
|
+
.options;
|
|
90
|
+
const opened = table.formComponents.edit?.options;
|
|
91
|
+
(0, chai_1.expect)(opened.submitUrl).to.equal(`${LOCATION}/edit?id={{params.id}}`);
|
|
92
|
+
});
|
|
93
|
+
it("reads a row without offering anywhere to send it", () => {
|
|
94
|
+
const shown = optionsOf((0, resource_form_1.ResourceForm)(TicketAPI, { mode: "view" }));
|
|
95
|
+
(0, chai_1.expect)(shown.submitUrl).to.equal(undefined);
|
|
96
|
+
(0, chai_1.expect)(shown.fields.every((field) => field.disabled)).to.equal(true);
|
|
97
|
+
});
|
|
98
|
+
it("carries its own wording and the row it was pointed at", () => {
|
|
99
|
+
const edited = optionsOf((0, resource_form_1.ResourceForm)(TicketAPI, {
|
|
100
|
+
mode: "edit",
|
|
101
|
+
title: "Edit the ticket",
|
|
102
|
+
submitLabel: "Save the ticket",
|
|
103
|
+
rowId: "{{params.ticket}}",
|
|
104
|
+
}));
|
|
105
|
+
(0, chai_1.expect)(edited.title).to.equal("Edit the ticket");
|
|
106
|
+
(0, chai_1.expect)(edited.submitLabel).to.equal("Save the ticket");
|
|
107
|
+
(0, chai_1.expect)(edited.submitUrl).to.equal(`${LOCATION}/edit?id={{params.ticket}}`);
|
|
108
|
+
(0, chai_1.expect)(edited, "the row token is the form's to resolve, not an option").to.not.have.property("rowId");
|
|
109
|
+
});
|
|
110
|
+
it("is declared as a block over a table, picked by mode", () => {
|
|
111
|
+
const declared = (0, block_types_1.ListBlockTypes)().find((block) => block.type === "ResourceForm");
|
|
112
|
+
(0, chai_1.expect)(declared?.controllerArg).to.equal(true);
|
|
113
|
+
(0, chai_1.expect)(declared?.config.mode?.enum).to.deep.equal(["new", "edit", "view"]);
|
|
114
|
+
(0, chai_1.expect)(declared?.config.fields, "fields come from the table").to.equal(undefined);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
//# sourceMappingURL=resource-form.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource-form.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/resource-form.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const block_types_1 = require("@antelopejs/interface-dms/base/block-types");
|
|
5
|
+
function configOf(type) {
|
|
6
|
+
const declared = (0, block_types_1.ListBlockTypes)().find((block) => block.type === type);
|
|
7
|
+
(0, chai_1.expect)(declared, `${type} is declared`).to.not.equal(undefined);
|
|
8
|
+
return declared.config;
|
|
9
|
+
}
|
|
10
|
+
describe("[unit] interfaces/dms-base/table-view — its row actions in the catalog", () => {
|
|
11
|
+
const actions = () => configOf("TableView").rowActions?.properties ?? {};
|
|
12
|
+
it("says the actions a table offers by itself are on", () => {
|
|
13
|
+
for (const action of ["add", "edit", "delete", "duplicate", "copyLink"]) {
|
|
14
|
+
(0, chai_1.expect)(actions()[action]?.default, action).to.equal(true);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
it("says when an action depends on another one", () => {
|
|
18
|
+
(0, chai_1.expect)(actions().details?.default).to.equal(undefined);
|
|
19
|
+
(0, chai_1.expect)(actions().details?.description).to.match(/editing is off/);
|
|
20
|
+
(0, chai_1.expect)(actions().archive?.default).to.equal(true);
|
|
21
|
+
(0, chai_1.expect)(actions().archive?.description).to.match(/ghost delete/);
|
|
22
|
+
});
|
|
23
|
+
it("leaves row selection off until it is turned on", () => {
|
|
24
|
+
(0, chai_1.expect)(actions().hasSelection?.default).to.equal(undefined);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
describe("[unit] interfaces/dms-base/chart-card — the chart it wraps, in the catalog", () => {
|
|
28
|
+
it("names the options of its chart it supplies itself", () => {
|
|
29
|
+
const supplied = configOf("ChartCard").chart?.ui?.supplies;
|
|
30
|
+
(0, chai_1.expect)(supplied).to.include.members([
|
|
31
|
+
"fetchUrl",
|
|
32
|
+
"fetchUrlMethod",
|
|
33
|
+
"periodScope",
|
|
34
|
+
"title",
|
|
35
|
+
]);
|
|
36
|
+
});
|
|
37
|
+
it("keeps a chart's backend-only settings for the advanced view", () => {
|
|
38
|
+
const chart = configOf("ChartLine");
|
|
39
|
+
(0, chai_1.expect)(chart.realtimeTopic?.ui?.advanced).to.equal(true);
|
|
40
|
+
(0, chai_1.expect)(chart.syncGroup?.ui?.advanced).to.equal(true);
|
|
41
|
+
(0, chai_1.expect)(chart.annotations?.ui?.advanced).to.equal(true);
|
|
42
|
+
(0, chai_1.expect)(chart.showGrid?.ui?.advanced, "a setting anyone reads").to.equal(undefined);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe("[unit] interfaces/dms-base/chart-card — the switches it draws on", () => {
|
|
46
|
+
it("says a card shows its variation and its legend", () => {
|
|
47
|
+
const card = configOf("ChartCard");
|
|
48
|
+
(0, chai_1.expect)(card.showDelta?.default).to.equal(true);
|
|
49
|
+
(0, chai_1.expect)(card.showLegend?.default).to.equal(true);
|
|
50
|
+
});
|
|
51
|
+
it("says a chart shows what it draws unless told not to", () => {
|
|
52
|
+
const chart = configOf("ChartColumn");
|
|
53
|
+
for (const option of ["showTooltip", "showGrid", "roundedCorners"]) {
|
|
54
|
+
(0, chai_1.expect)(chart[option]?.default, option).to.equal(true);
|
|
55
|
+
}
|
|
56
|
+
(0, chai_1.expect)(configOf("ChartLine").smooth?.default).to.equal(true);
|
|
57
|
+
});
|
|
58
|
+
it("leaves what it only does when asked unset", () => {
|
|
59
|
+
(0, chai_1.expect)(configOf("ChartColumn").stacked?.default).to.equal(undefined);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=table-and-card-catalog.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table-and-card-catalog.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-and-card-catalog.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import authMiddleware from "./layers/dms-auth/app/middleware/auth";
|
|
|
9
9
|
import homepageRedirectMiddleware from "./layers/dms-layout/app/middleware/homepage-redirect.global";
|
|
10
10
|
import moduleRoutingMiddleware from "./layers/dms-layout/app/middleware/module-routing.global";
|
|
11
11
|
import pageLeaveGuardMiddleware from "./layers/dms-layout/app/middleware/page-leave-guard.global";
|
|
12
|
+
import colorModePlugin from "./layers/dms-layout/app/plugins/color-mode";
|
|
12
13
|
import interfaceScalePlugin from "./layers/dms-layout/app/plugins/interface-scale";
|
|
13
14
|
import languageSyncPlugin from "./layers/dms-layout/app/plugins/language-sync";
|
|
14
15
|
import seoPlugin from "./layers/dms-layout/app/plugins/seo";
|
|
@@ -143,6 +144,7 @@ function registerPlugins(sdk: Parameters<DmsFrontendModule["setup"]>[0]): void {
|
|
|
143
144
|
await plugin.default(context);
|
|
144
145
|
}, clientOnly);
|
|
145
146
|
}
|
|
147
|
+
sdk.registerPlugin(colorModePlugin);
|
|
146
148
|
sdk.registerPlugin(interfaceScalePlugin);
|
|
147
149
|
sdk.registerPlugin(languageSyncPlugin);
|
|
148
150
|
sdk.registerPlugin(seoPlugin);
|
|
@@ -93,11 +93,13 @@ const toggleCurrentPageFavorite = () => {
|
|
|
93
93
|
const breadcrumb = computed((): BreadcrumbItem[] => {
|
|
94
94
|
const base: BreadcrumbItem[] = [{ label: "home", to: homepage || "/" }];
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
// The path only: with the query, the last segment ("data?table=x") matched
|
|
97
|
+
// no route and the current page dropped out of the breadcrumb.
|
|
98
|
+
if (route.path === (homepage || "/")) {
|
|
97
99
|
return base;
|
|
98
100
|
}
|
|
99
101
|
|
|
100
|
-
const paths = route.
|
|
102
|
+
const paths = route.path.split("/").filter((path) => path);
|
|
101
103
|
|
|
102
104
|
return base.concat(
|
|
103
105
|
paths
|
|
@@ -6,6 +6,13 @@ export interface ScaleOption {
|
|
|
6
6
|
hint: string;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
+
export type ColorModePreference = "light" | "dark" | "system";
|
|
10
|
+
|
|
11
|
+
export interface ColorModeOption {
|
|
12
|
+
value: ColorModePreference;
|
|
13
|
+
label: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
9
16
|
export interface SystemStateMeta {
|
|
10
17
|
title: string;
|
|
11
18
|
description: string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ColorModePreference } from "./types";
|
|
2
|
+
|
|
3
|
+
export const COLOR_MODE_COOKIE = "dms-color-mode";
|
|
4
|
+
const COLOR_MODE_COOKIE_MAX_AGE = 60 * 60 * 24 * 365;
|
|
5
|
+
const DEFAULT_COLOR_MODE_PREFERENCE: ColorModePreference = "system";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The user's color mode as a cookie ref shared by every caller: assign it to
|
|
9
|
+
* change the theme. The server reads the same cookie, so an explicit `light`
|
|
10
|
+
* or `dark` is already in the rendered HTML; `system` resolves in the browser.
|
|
11
|
+
*/
|
|
12
|
+
export const useColorModePreference = () => {
|
|
13
|
+
return useDmsCookie<ColorModePreference>(COLOR_MODE_COOKIE, {
|
|
14
|
+
default: () => DEFAULT_COLOR_MODE_PREFERENCE,
|
|
15
|
+
maxAge: COLOR_MODE_COOKIE_MAX_AGE,
|
|
16
|
+
});
|
|
17
|
+
};
|