@antelopejs/dms 0.7.20 → 0.8.0
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 +62 -0
- package/dist/implementations/dms-auth/account-emails.d.ts +4 -0
- package/dist/implementations/dms-auth/account-emails.js +62 -0
- package/dist/implementations/dms-auth/account-emails.js.map +1 -0
- package/dist/implementations/dms-auth/index.d.ts +1 -3
- package/dist/implementations/dms-auth/index.js +15 -61
- package/dist/implementations/dms-auth/index.js.map +1 -1
- package/dist/pages/settings/users/email-change.js +3 -4
- package/dist/pages/settings/users/email-change.js.map +1 -1
- package/dist/pages/settings/users/invites.js +1 -1
- package/dist/pages/settings/users/invites.js.map +1 -1
- package/dist/pages/settings/users/members.js +1 -1
- package/dist/pages/settings/users/members.js.map +1 -1
- package/dist/pages/settings/users/notifications.js +1 -0
- package/dist/pages/settings/users/notifications.js.map +1 -1
- package/dist/test/unit/implementations/dms-html-render/built-in-emails.test.d.ts +1 -0
- package/dist/test/unit/implementations/dms-html-render/built-in-emails.test.js +34 -0
- package/dist/test/unit/implementations/dms-html-render/built-in-emails.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms/hook-handler-results.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms/hook-handler-results.test.js +49 -0
- package/dist/test/unit/interfaces/dms/hook-handler-results.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms/page-topics.test.js +17 -0
- package/dist/test/unit/interfaces/dms/page-topics.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/confirm-dialog-secondary-action.test.js +2 -2
- package/dist/test/unit/interfaces/dms-base/confirm-dialog-secondary-action.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/query-response-delta.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms-base/query-response-delta.test.js +29 -0
- package/dist/test/unit/interfaces/dms-base/query-response-delta.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/resource-form.test.js +5 -0
- package/dist/test/unit/interfaces/dms-base/resource-form.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-form-redirect.test.js +12 -2
- package/dist/test/unit/interfaces/dms-base/table-view-form-redirect.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-reduced-chrome.test.js +29 -4
- package/dist/test/unit/interfaces/dms-base/table-view-reduced-chrome.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-row-menu-label.test.d.ts +1 -0
- package/dist/test/unit/interfaces/dms-base/table-view-row-menu-label.test.js +27 -0
- package/dist/test/unit/interfaces/dms-base/table-view-row-menu-label.test.js.map +1 -0
- package/dist/test/unit/interfaces/dms-base/table-view-source-reorder.test.js +18 -4
- package/dist/test/unit/interfaces/dms-base/table-view-source-reorder.test.js.map +1 -1
- package/dist/test/unit/interfaces/dms-base/table-view-views.test.js +8 -5
- package/dist/test/unit/interfaces/dms-base/table-view-views.test.js.map +1 -1
- package/dist/test/unit/utils/email-subjects.test.d.ts +1 -0
- package/dist/test/unit/utils/email-subjects.test.js +27 -0
- package/dist/test/unit/utils/email-subjects.test.js.map +1 -0
- package/dist/utils/admin-invite-email.js +2 -4
- package/dist/utils/admin-invite-email.js.map +1 -1
- package/dist/utils/email-change-mail.d.ts +1 -1
- package/dist/utils/email-change-mail.js +11 -6
- package/dist/utils/email-change-mail.js.map +1 -1
- package/dist/utils/email-subjects.d.ts +3 -0
- package/dist/utils/email-subjects.js +32 -0
- package/dist/utils/email-subjects.js.map +1 -0
- package/dist/utils/export-jobs.js +15 -10
- package/dist/utils/export-jobs.js.map +1 -1
- package/frontend-vue/layers/dms-core/app/utils/url-interpolation.ts +29 -11
- package/frontend-vue/layers/dms-core/shared/types/app-config.ts +17 -0
- package/frontend-vue/layers/dms-layout/app/app.config.ts +5 -0
- package/frontend-vue/layers/dms-layout/app/build/components/layout/DashboardHeader.vue +18 -2
- package/frontend-vue/layers/dms-layout/app/build/components/layout/Footer.vue +16 -1
- package/frontend-vue/layers/dms-layout/app/build/composables/layout/useHeaderActionControls.ts +14 -0
- package/frontend-vue/layers/dms-layout/app/components/layout/HStack.vue +16 -0
- package/frontend-vue/layers/dms-layout/app/components/layout/VStack.vue +2 -0
- package/frontend-vue/layers/dms-layout/app/composables/useFooterLinks.ts +11 -1
- package/frontend-vue/layers/dms-layout/app/custom-pages/settings/roles.vue +1 -1
- package/frontend-vue/layers/dms-layout/app/emails/EmailAdminInvite.vue +1 -1
- package/frontend-vue/layers/dms-layout/app/emails/EmailChangeNotice.vue +13 -7
- package/frontend-vue/layers/dms-layout/app/emails/EmailChangeVerification.vue +18 -7
- package/frontend-vue/layers/dms-layout/app/emails/EmailExportReady.vue +23 -12
- package/frontend-vue/layers/dms-layout/app/emails/EmailResetPassword.vue +18 -7
- package/frontend-vue/layers/dms-layout/app/emails/EmailTwoFactor.vue +23 -4
- package/frontend-vue/layers/dms-layout/app/emails/EmailUserValidation.vue +18 -6
- package/frontend-vue/layers/dms-layout/app/emails/components/EmailOTP.vue +8 -2
- package/frontend-vue/layers/dms-layout/i18n/locales/layout-en-GB.json +40 -0
- package/frontend-vue/layers/dms-layout/i18n/locales/layout-fr-FR.json +40 -0
- package/frontend-vue/layers/dms-ui/app/build/components/form/FormFieldControl.vue +2 -1
- package/frontend-vue/layers/dms-ui/app/build/components/form/FormLoadError.vue +11 -3
- package/frontend-vue/layers/dms-ui/app/build/components/table/Table.vue +13 -3
- package/frontend-vue/layers/dms-ui/app/build/components/table-view/CardsDisplay.vue +1 -1
- package/frontend-vue/layers/dms-ui/app/build/composables/actions/rowNavigation.ts +14 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/actions/useActionTargets.ts +90 -43
- package/frontend-vue/layers/dms-ui/app/build/composables/chart/apexTheme.ts +59 -2
- package/frontend-vue/layers/dms-ui/app/build/composables/confirm/confirmDialogTexts.ts +27 -4
- package/frontend-vue/layers/dms-ui/app/build/composables/confirm/useActionConfirm.ts +10 -2
- package/frontend-vue/layers/dms-ui/app/build/composables/data-types/registerDefaults.ts +0 -5
- package/frontend-vue/layers/dms-ui/app/build/composables/form/formEntryOrder.ts +23 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/form/formFooter.ts +19 -15
- package/frontend-vue/layers/dms-ui/app/build/composables/form/formRecordLoad.ts +26 -2
- package/frontend-vue/layers/dms-ui/app/build/composables/page/pageUrlValues.ts +41 -0
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/registerDefaultFunctions.ts +2 -2
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableRows.ts +3 -5
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableUrlTab.ts +42 -12
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewConfig.ts +7 -11
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/useTableViewRowActions.ts +3 -3
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/recordLink.ts +10 -11
- package/frontend-vue/layers/dms-ui/app/build/composables/table-view/utils/views.ts +29 -0
- package/frontend-vue/layers/dms-ui/app/build/utils/link.ts +7 -3
- package/frontend-vue/layers/dms-ui/app/build/utils/urlVariables.ts +32 -9
- package/frontend-vue/layers/dms-ui/app/components/activity-feed/ActivityFeed.vue +8 -1
- package/frontend-vue/layers/dms-ui/app/components/banner/Banner.vue +9 -4
- package/frontend-vue/layers/dms-ui/app/components/blocks/BannerBlock.vue +5 -11
- package/frontend-vue/layers/dms-ui/app/components/blocks/NavCardGridBlock.vue +2 -1
- package/frontend-vue/layers/dms-ui/app/components/chart/ApexChartHost.vue +32 -1
- package/frontend-vue/layers/dms-ui/app/components/check-list/CheckList.vue +1 -1
- package/frontend-vue/layers/dms-ui/app/components/form/Form.vue +12 -2
- package/frontend-vue/layers/dms-ui/app/components/form/components/Cascader.vue +7 -3
- package/frontend-vue/layers/dms-ui/app/components/form/components/File.vue +7 -0
- package/frontend-vue/layers/dms-ui/app/components/form/components/InputAddress.vue +4 -1
- package/frontend-vue/layers/dms-ui/app/components/form/components/InputCode.vue +4 -2
- package/frontend-vue/layers/dms-ui/app/components/form/components/InputSecret.vue +3 -2
- package/frontend-vue/layers/dms-ui/app/components/form/components/Relation.vue +4 -1
- package/frontend-vue/layers/dms-ui/app/components/grid/columns.ts +15 -3
- package/frontend-vue/layers/dms-ui/app/components/key-value-list/KeyValueList.vue +2 -1
- package/frontend-vue/layers/dms-ui/app/components/list-row/ListRow.vue +9 -2
- package/frontend-vue/layers/dms-ui/app/components/save-bar/InstantSaveBadge.vue +13 -5
- package/frontend-vue/layers/dms-ui/app/components/save-bar/SaveBar.vue +1 -1
- package/frontend-vue/layers/dms-ui/app/components/stat-group/StatGroup.vue +3 -2
- package/frontend-vue/layers/dms-ui/app/components/table-view/CascaderPath.vue +53 -31
- package/frontend-vue/layers/dms-ui/app/components/table-view/TableView.vue +14 -6
- package/frontend-vue/layers/dms-ui/app/composables/chart/apexPlotOptions.ts +15 -4
- package/frontend-vue/layers/dms-ui/app/composables/chart/apexYRange.ts +123 -0
- package/frontend-vue/layers/dms-ui/app/composables/chart/useApexChart.ts +49 -49
- package/frontend-vue/layers/dms-ui/app/composables/chart/useChartTheme.ts +20 -1
- package/frontend-vue/layers/dms-ui/app/composables/confirm/types.ts +1 -1
- 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 +8 -6
- package/frontend-vue/layers/dms-ui/app/composables/table-view/types/action-target.ts +1 -1
- package/frontend-vue/layers/dms-ui/app/composables/table-view/types/config.ts +3 -3
- package/frontend-vue/layers/dms-ui/app/composables/table-view/types/display.ts +6 -0
- package/frontend-vue/layers/dms-ui/app/utils/bannerToneIcons.ts +13 -0
- package/frontend-vue/layers/dms-ui/app/utils/cascader.ts +26 -0
- package/frontend-vue/layers/dms-ui/i18n/locales/ui-en-GB.json +4 -0
- package/frontend-vue/layers/dms-ui/i18n/locales/ui-fr-FR.json +4 -0
- package/frontend-vue/tests/activity-feed-fill-height.test.ts +7 -0
- package/frontend-vue/tests/banner-tone-icon.test.ts +55 -0
- package/frontend-vue/tests/builtin-emails.test.ts +141 -0
- package/frontend-vue/tests/cascader.test.ts +27 -0
- package/frontend-vue/tests/chart-auto-y-range.test.ts +25 -9
- package/frontend-vue/tests/chart-colors.test.ts +8 -0
- package/frontend-vue/tests/chart-resize-after-animation.test.ts +100 -0
- package/frontend-vue/tests/chart-type-defaults.test.ts +128 -0
- package/frontend-vue/tests/check-list-marker.test.ts +58 -0
- package/frontend-vue/tests/confirm-from.test.ts +1 -1
- package/frontend-vue/tests/confirm-secondary-action.test.ts +2 -2
- package/frontend-vue/tests/context-links.test.ts +2 -2
- package/frontend-vue/tests/custom-action-confirm-from.test.ts +2 -2
- package/frontend-vue/tests/download-action-target.test.ts +2 -2
- package/frontend-vue/tests/file-drop-prompt.test.ts +72 -0
- package/frontend-vue/tests/footer-config.test.ts +135 -0
- package/frontend-vue/tests/form-actions.test.ts +7 -0
- package/frontend-vue/tests/form-entry-order.test.ts +45 -0
- package/frontend-vue/tests/form-footer-kind.test.ts +11 -6
- package/frontend-vue/tests/form-load-error.test.ts +38 -1
- package/frontend-vue/tests/grid-responsive-columns.test.ts +9 -0
- package/frontend-vue/tests/header-actions.test.ts +55 -9
- package/frontend-vue/tests/instant-save-badge.test.ts +11 -4
- package/frontend-vue/tests/list-row-truncate.test.ts +46 -0
- package/frontend-vue/tests/roles-name-errors.test.ts +2 -3
- package/frontend-vue/tests/row-side-panel.test.ts +93 -2
- package/frontend-vue/tests/save-bar.test.ts +15 -3
- package/frontend-vue/tests/save-status-error.test.ts +2 -2
- package/frontend-vue/tests/table-row-action-errors.test.ts +5 -5
- package/frontend-vue/tests/table-row-hover.test.ts +2 -2
- package/frontend-vue/tests/table-view-bulk-drawer.test.ts +114 -0
- package/frontend-vue/tests/table-view-cards-reread.test.ts +77 -0
- package/frontend-vue/tests/table-view-sources.test.ts +1 -1
- package/frontend-vue/tests/table-view-url-tab.test.ts +84 -2
- package/frontend-vue/tests/template-tokens.test.ts +235 -0
- package/frontend-vue/tests/url-interpolation.test.ts +6 -6
- package/package.json +2 -2
- package/skills/dms/SKILL.md +2 -1
- package/skills/dms-pages/REFERENCE.md +2 -2
- package/skills/dms-project/SKILL.md +0 -1
|
@@ -244,12 +244,15 @@ describe("[unit] interfaces/dms-base — table view views", () => {
|
|
|
244
244
|
defaultDisplay: "grouped",
|
|
245
245
|
views: { items: [{ id: "a", label: "A", display: "grouped" }] },
|
|
246
246
|
});
|
|
247
|
-
(0, chai_1.expect)(options.displays).to.deep.equal([
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
options: { groupByField: "createdAt", by: "day", count: true },
|
|
251
|
-
},
|
|
247
|
+
(0, chai_1.expect)(options.displays?.map((display) => display.id)).to.deep.equal([
|
|
248
|
+
"table",
|
|
249
|
+
"grouped",
|
|
252
250
|
]);
|
|
251
|
+
(0, chai_1.expect)(options.displays?.[1]?.options).to.deep.equal({
|
|
252
|
+
groupByField: "createdAt",
|
|
253
|
+
by: "day",
|
|
254
|
+
count: true,
|
|
255
|
+
});
|
|
253
256
|
(0, chai_1.expect)(options.defaultDisplay).to.equal("grouped");
|
|
254
257
|
});
|
|
255
258
|
it("refuses to group on an unknown, unsortable or (by day) non-date column", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table-view-views.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-views.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"table-view-views.test.js","sourceRoot":"","sources":["../../../../../src/test/unit/interfaces/dms-base/table-view-views.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const email_subjects_1 = require("../../../utils/email-subjects");
|
|
5
|
+
describe("[unit] utils/email-subjects", () => {
|
|
6
|
+
describe("resolveEmailLanguage", () => {
|
|
7
|
+
it("keeps a supported language, region dropped", () => {
|
|
8
|
+
(0, chai_1.expect)((0, email_subjects_1.resolveEmailLanguage)("fr-FR")).to.equal("fr");
|
|
9
|
+
(0, chai_1.expect)((0, email_subjects_1.resolveEmailLanguage)("EN-gb")).to.equal("en");
|
|
10
|
+
});
|
|
11
|
+
it("falls back to English", () => {
|
|
12
|
+
(0, chai_1.expect)((0, email_subjects_1.resolveEmailLanguage)()).to.equal("en");
|
|
13
|
+
(0, chai_1.expect)((0, email_subjects_1.resolveEmailLanguage)("de")).to.equal("en");
|
|
14
|
+
(0, chai_1.expect)((0, email_subjects_1.resolveEmailLanguage)("constructor")).to.equal("en");
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe("builtInEmailSubject", () => {
|
|
18
|
+
it("writes the subject in the recipient's language", () => {
|
|
19
|
+
(0, chai_1.expect)((0, email_subjects_1.builtInEmailSubject)("resetPassword", "fr")).to.equal("Réinitialisez votre mot de passe");
|
|
20
|
+
(0, chai_1.expect)((0, email_subjects_1.builtInEmailSubject)("resetPassword", "en-GB")).to.equal("Reset Your Password");
|
|
21
|
+
});
|
|
22
|
+
it("writes English for a language without copy", () => {
|
|
23
|
+
(0, chai_1.expect)((0, email_subjects_1.builtInEmailSubject)("exportReady", "de")).to.equal("Your data export is ready");
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=email-subjects.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-subjects.test.js","sourceRoot":"","sources":["../../../../src/test/unit/utils/email-subjects.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,kEAGuC;AAEvC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,IAAA,aAAM,EAAC,IAAA,qCAAoB,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrD,IAAA,aAAM,EAAC,IAAA,qCAAoB,EAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,IAAA,aAAM,EAAC,IAAA,qCAAoB,GAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAA,aAAM,EAAC,IAAA,qCAAoB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClD,IAAA,aAAM,EAAC,IAAA,qCAAoB,EAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,IAAA,aAAM,EAAC,IAAA,oCAAmB,EAAC,eAAe,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACzD,kCAAkC,CACnC,CAAC;YACF,IAAA,aAAM,EAAC,IAAA,oCAAmB,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAC5D,qBAAqB,CACtB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,IAAA,aAAM,EAAC,IAAA,oCAAmB,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACvD,2BAA2B,CAC5B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -3,8 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.resolveAdminInviteLanguage = resolveAdminInviteLanguage;
|
|
4
4
|
exports.buildAdminInviteSubject = buildAdminInviteSubject;
|
|
5
5
|
exports.buildAdminInviteSignupLink = buildAdminInviteSignupLink;
|
|
6
|
-
const
|
|
7
|
-
const LANGUAGE_CODE_LENGTH = 2;
|
|
6
|
+
const email_subjects_1 = require("./email-subjects");
|
|
8
7
|
const SUBJECT_COPY = {
|
|
9
8
|
en: {
|
|
10
9
|
generic: "You're Invited to Join",
|
|
@@ -20,8 +19,7 @@ const SUBJECT_COPY = {
|
|
|
20
19
|
},
|
|
21
20
|
};
|
|
22
21
|
function resolveAdminInviteLanguage(language) {
|
|
23
|
-
|
|
24
|
-
return code && Object.hasOwn(SUBJECT_COPY, code) ? code : DEFAULT_LANGUAGE;
|
|
22
|
+
return (0, email_subjects_1.resolveEmailLanguage)(language);
|
|
25
23
|
}
|
|
26
24
|
function joinTarget(copy, names) {
|
|
27
25
|
const { workspaceName, platformName } = names;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-invite-email.js","sourceRoot":"","sources":["../../src/utils/admin-invite-email.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"admin-invite-email.js","sourceRoot":"","sources":["../../src/utils/admin-invite-email.ts"],"names":[],"mappings":";;AAwCA,gEAEC;AAiBD,0DAYC;AAcD,gEAQC;AA7FD,qDAAwD;AAkBxD,MAAM,YAAY,GAA2C;IAC3D,EAAE,EAAE;QACF,OAAO,EAAE,wBAAwB;QACjC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,0BAA0B,MAAM,EAAE;QACpD,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACnC,GAAG,OAAO,wBAAwB,MAAM,EAAE;QAC5C,mBAAmB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,GAAG,SAAS,OAAO,QAAQ,EAAE;KAC5E;IACD,EAAE,EAAE;QACF,OAAO,EAAE,mCAAmC;QAC5C,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,gCAAgC,MAAM,EAAE;QAC1D,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACnC,GAAG,OAAO,4BAA4B,MAAM,EAAE;QAChD,mBAAmB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAC3C,GAAG,SAAS,QAAQ,QAAQ,EAAE;KACjC;CACF,CAAC;AAMF,SAAgB,0BAA0B,CAAC,QAAiB;IAC1D,OAAO,IAAA,qCAAoB,EAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,UAAU,CACjB,IAA4B,EAC5B,KAA4B;IAE5B,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAC9C,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,aAAa,IAAI,YAAY,CAAC;AACvC,CAAC;AAMD,SAAgB,uBAAuB,CACrC,KAA4B,EAC5B,QAAiB;IAEjB,MAAM,IAAI,GAAG,YAAY,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC,WAAW;QACtB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC;AAcD,SAAgB,0BAA0B,CACxC,aAAqB,EACrB,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAA2B;IAEhE,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,IAAI,WAAW;QAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAChD,IAAI,QAAQ;QAAE,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1C,OAAO,GAAG,aAAa,gBAAgB,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { User } from "@antelopejs/interface-dms/auth/db";
|
|
2
|
-
export declare function sendEmailChangeCode(user: User, newEmail: string, code: string,
|
|
2
|
+
export declare function sendEmailChangeCode(user: User, newEmail: string, code: string, expiresInHours: number): Promise<void>;
|
|
3
3
|
export declare function sendEmailChangeNotice(user: User, newEmail: string): Promise<void>;
|
|
@@ -4,22 +4,27 @@ exports.sendEmailChangeCode = sendEmailChangeCode;
|
|
|
4
4
|
exports.sendEmailChangeNotice = sendEmailChangeNotice;
|
|
5
5
|
const interface_email_1 = require("@antelopejs/interface-email");
|
|
6
6
|
const html_render_1 = require("@antelopejs/interface-dms/html-render");
|
|
7
|
+
const email_subjects_1 = require("./email-subjects");
|
|
7
8
|
const CodeTemplate = (0, html_render_1.RegisterHtmlTemplate)("EmailChangeVerification");
|
|
8
9
|
const NoticeTemplate = (0, html_render_1.RegisterHtmlTemplate)("EmailChangeNotice");
|
|
9
|
-
const CODE_SUBJECT = "Confirm your new sign-in email";
|
|
10
|
-
const NOTICE_SUBJECT = "Your sign-in email is being changed";
|
|
11
10
|
async function sendOrThrow(to, subject, html) {
|
|
12
11
|
const result = await (0, interface_email_1.Send)({ to, subject, html });
|
|
13
12
|
if (!result.success) {
|
|
14
13
|
throw new Error(`Failed to send email: ${result.error?.message}`);
|
|
15
14
|
}
|
|
16
15
|
}
|
|
17
|
-
async function sendEmailChangeCode(user, newEmail, code,
|
|
18
|
-
const html = await (0, html_render_1.GenerateHtml)(CodeTemplate, {
|
|
19
|
-
|
|
16
|
+
async function sendEmailChangeCode(user, newEmail, code, expiresInHours) {
|
|
17
|
+
const html = await (0, html_render_1.GenerateHtml)(CodeTemplate, {
|
|
18
|
+
userName: user.name || user.email,
|
|
19
|
+
newEmail,
|
|
20
|
+
code,
|
|
21
|
+
expiresIn: `${expiresInHours} hours`,
|
|
22
|
+
expiresInHours,
|
|
23
|
+
}, user.language);
|
|
24
|
+
await sendOrThrow(newEmail, (0, email_subjects_1.builtInEmailSubject)("emailChangeVerification", user.language), html);
|
|
20
25
|
}
|
|
21
26
|
async function sendEmailChangeNotice(user, newEmail) {
|
|
22
27
|
const html = await (0, html_render_1.GenerateHtml)(NoticeTemplate, { userName: user.name || user.email, newEmail }, user.language);
|
|
23
|
-
await sendOrThrow(user.email,
|
|
28
|
+
await sendOrThrow(user.email, (0, email_subjects_1.builtInEmailSubject)("emailChangeNotice", user.language), html);
|
|
24
29
|
}
|
|
25
30
|
//# sourceMappingURL=email-change-mail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-change-mail.js","sourceRoot":"","sources":["../../src/utils/email-change-mail.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"email-change-mail.js","sourceRoot":"","sources":["../../src/utils/email-change-mail.ts"],"names":[],"mappings":";;AAuCA,kDAsBC;AAGD,sDAcC;AA9ED,iEAAmD;AAEnD,uEAG+C;AAC/C,qDAAuD;AAevD,MAAM,YAAY,GAAG,IAAA,kCAAoB,EACvC,yBAAyB,CAC1B,CAAC;AACF,MAAM,cAAc,GAClB,IAAA,kCAAoB,EAAwB,mBAAmB,CAAC,CAAC;AAEnE,KAAK,UAAU,WAAW,CAAC,EAAU,EAAE,OAAe,EAAE,IAAY;IAClE,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAI,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAOM,KAAK,UAAU,mBAAmB,CACvC,IAAU,EACV,QAAgB,EAChB,IAAY,EACZ,cAAsB;IAEtB,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAY,EAC7B,YAAY,EACZ;QACE,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;QACjC,QAAQ;QACR,IAAI;QACJ,SAAS,EAAE,GAAG,cAAc,QAAQ;QACpC,cAAc;KACf,EACD,IAAI,CAAC,QAAQ,CACd,CAAC;IACF,MAAM,WAAW,CACf,QAAQ,EACR,IAAA,oCAAmB,EAAC,yBAAyB,EAAE,IAAI,CAAC,QAAQ,CAAC,EAC7D,IAAI,CACL,CAAC;AACJ,CAAC;AAGM,KAAK,UAAU,qBAAqB,CACzC,IAAU,EACV,QAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,IAAA,0BAAY,EAC7B,cAAc,EACd,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAC/C,IAAI,CAAC,QAAQ,CACd,CAAC;IACF,MAAM,WAAW,CACf,IAAI,CAAC,KAAK,EACV,IAAA,oCAAmB,EAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,EACvD,IAAI,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type BuiltInEmailSubject = "userValidation" | "resetPassword" | "twoFactor" | "emailChangeVerification" | "emailChangeNotice" | "exportReady";
|
|
2
|
+
export declare function resolveEmailLanguage(language?: string): string;
|
|
3
|
+
export declare function builtInEmailSubject(email: BuiltInEmailSubject, language?: string): string;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveEmailLanguage = resolveEmailLanguage;
|
|
4
|
+
exports.builtInEmailSubject = builtInEmailSubject;
|
|
5
|
+
const DEFAULT_LANGUAGE = "en";
|
|
6
|
+
const LANGUAGE_CODE_LENGTH = 2;
|
|
7
|
+
const SUBJECTS = {
|
|
8
|
+
en: {
|
|
9
|
+
userValidation: "Verify Your Email",
|
|
10
|
+
resetPassword: "Reset Your Password",
|
|
11
|
+
twoFactor: "Your verification code",
|
|
12
|
+
emailChangeVerification: "Confirm your new sign-in email",
|
|
13
|
+
emailChangeNotice: "Your sign-in email is being changed",
|
|
14
|
+
exportReady: "Your data export is ready",
|
|
15
|
+
},
|
|
16
|
+
fr: {
|
|
17
|
+
userValidation: "Vérifiez votre adresse e-mail",
|
|
18
|
+
resetPassword: "Réinitialisez votre mot de passe",
|
|
19
|
+
twoFactor: "Votre code de vérification",
|
|
20
|
+
emailChangeVerification: "Confirmez votre nouvelle adresse de connexion",
|
|
21
|
+
emailChangeNotice: "Votre adresse de connexion va changer",
|
|
22
|
+
exportReady: "Votre export de données est prêt",
|
|
23
|
+
},
|
|
24
|
+
};
|
|
25
|
+
function resolveEmailLanguage(language) {
|
|
26
|
+
const code = language?.slice(0, LANGUAGE_CODE_LENGTH).toLowerCase();
|
|
27
|
+
return code && Object.hasOwn(SUBJECTS, code) ? code : DEFAULT_LANGUAGE;
|
|
28
|
+
}
|
|
29
|
+
function builtInEmailSubject(email, language) {
|
|
30
|
+
return SUBJECTS[resolveEmailLanguage(language)][email];
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=email-subjects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"email-subjects.js","sourceRoot":"","sources":["../../src/utils/email-subjects.ts"],"names":[],"mappings":";;AAqCA,oDAGC;AAGD,kDAKC;AAhDD,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAa/B,MAAM,QAAQ,GAAwD;IACpE,EAAE,EAAE;QACF,cAAc,EAAE,mBAAmB;QACnC,aAAa,EAAE,qBAAqB;QACpC,SAAS,EAAE,wBAAwB;QACnC,uBAAuB,EAAE,gCAAgC;QACzD,iBAAiB,EAAE,qCAAqC;QACxD,WAAW,EAAE,2BAA2B;KACzC;IACD,EAAE,EAAE;QACF,cAAc,EAAE,+BAA+B;QAC/C,aAAa,EAAE,kCAAkC;QACjD,SAAS,EAAE,4BAA4B;QACvC,uBAAuB,EAAE,+CAA+C;QACxE,iBAAiB,EAAE,uCAAuC;QAC1D,WAAW,EAAE,kCAAkC;KAChD;CACF,CAAC;AAMF,SAAgB,oBAAoB,CAAC,QAAiB;IACpD,MAAM,IAAI,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAC;IACpE,OAAO,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACzE,CAAC;AAGD,SAAgB,mBAAmB,CACjC,KAA0B,EAC1B,QAAiB;IAEjB,OAAO,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -30,6 +30,7 @@ const html_render_1 = require("@antelopejs/interface-dms/html-render");
|
|
|
30
30
|
const sync_1 = require("csv-stringify/sync");
|
|
31
31
|
const config_1 = require("../config");
|
|
32
32
|
const exportJobs_model_1 = require("@antelopejs/interface-dms/db/internal/exportJobs.model");
|
|
33
|
+
const email_subjects_1 = require("./email-subjects");
|
|
33
34
|
const run_in_batches_1 = require("./run-in-batches");
|
|
34
35
|
const export_jobs_1 = require("@antelopejs/interface-dms/base/export-jobs");
|
|
35
36
|
const time_1 = require("@antelopejs/interface-dms/utils/internal/time");
|
|
@@ -92,7 +93,6 @@ const downloadDeliverer = {
|
|
|
92
93
|
async deliver() { },
|
|
93
94
|
};
|
|
94
95
|
const ExportReadyTemplate = (0, html_render_1.RegisterHtmlTemplate)("EmailExportReady");
|
|
95
|
-
const EXPORT_READY_SUBJECT = "Your data export is ready";
|
|
96
96
|
function buildDeliveryLink(exportRecord) {
|
|
97
97
|
const baseUrl = (0, config_1.getClientBaseUrl)();
|
|
98
98
|
(0, interface_api_util_1.assert)(baseUrl, 500, "clientBaseUrl is required to deliver an export link");
|
|
@@ -103,6 +103,18 @@ function readJobResult(exportRecord) {
|
|
|
103
103
|
return undefined;
|
|
104
104
|
return JSON.parse(exportRecord.json_result);
|
|
105
105
|
}
|
|
106
|
+
function exportReadyEmailData(user, exportRecord) {
|
|
107
|
+
const result = readJobResult(exportRecord);
|
|
108
|
+
const expiresInHours = export_jobs_1.EXPORT_TTL_MS / time_1.MILLISECONDS_PER_HOUR;
|
|
109
|
+
return {
|
|
110
|
+
userName: user.name || user.email,
|
|
111
|
+
downloadLink: buildDeliveryLink(exportRecord),
|
|
112
|
+
expiresIn: `${expiresInHours} hours`,
|
|
113
|
+
expiresInHours,
|
|
114
|
+
partial: result?.partial ?? false,
|
|
115
|
+
failedSources: (result?.failures ?? []).map((failure) => failure.source),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
106
118
|
const emailDeliverer = {
|
|
107
119
|
validate(options) {
|
|
108
120
|
(0, interface_api_util_1.assert)(options.deliveryPath, 400, "Email delivery requires a deliveryPath to build the download link");
|
|
@@ -110,17 +122,10 @@ const emailDeliverer = {
|
|
|
110
122
|
async deliver(exportRecord) {
|
|
111
123
|
const user = await (0, interface_database_decorators_1.GetModel)(db_2.UserModel).get(exportRecord.userId);
|
|
112
124
|
(0, interface_api_util_1.assert)(user, 500, "Export recipient not found");
|
|
113
|
-
const
|
|
114
|
-
const html = await (0, html_render_1.GenerateHtml)(ExportReadyTemplate, {
|
|
115
|
-
userName: user.name || user.email,
|
|
116
|
-
downloadLink: buildDeliveryLink(exportRecord),
|
|
117
|
-
expiresIn: `${export_jobs_1.EXPORT_TTL_MS / time_1.MILLISECONDS_PER_HOUR} hours`,
|
|
118
|
-
partial: result?.partial ?? false,
|
|
119
|
-
failedSources: (result?.failures ?? []).map((failure) => failure.source),
|
|
120
|
-
});
|
|
125
|
+
const html = await (0, html_render_1.GenerateHtml)(ExportReadyTemplate, exportReadyEmailData(user, exportRecord), user.language);
|
|
121
126
|
const sent = await (0, interface_email_1.Send)({
|
|
122
127
|
to: user.email,
|
|
123
|
-
subject:
|
|
128
|
+
subject: (0, email_subjects_1.builtInEmailSubject)("exportReady", user.language),
|
|
124
129
|
html,
|
|
125
130
|
});
|
|
126
131
|
(0, interface_api_util_1.assert)(sent.success, 500, `Failed to send export email: ${sent.error?.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-jobs.js","sourceRoot":"","sources":["../../src/utils/export-jobs.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"export-jobs.js","sourceRoot":"","sources":["../../src/utils/export-jobs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { get } from "@nuxt/ui/runtime/utils/index.js";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// A row field is named `{{row.<field>}}` (a dotted path reaching into it), as
|
|
4
|
+
// the page's values are `{{params.X}}` / `{{query.X}}`, filled elsewhere.
|
|
5
|
+
const ROW_TOKEN = /\{\{\s*row\.([^{}\s]+)\s*\}\}/g;
|
|
6
|
+
|
|
7
|
+
/** Whether a template names a field of a row (`{{row.X}}`). */
|
|
8
|
+
export const namesRowField = (template: string): boolean =>
|
|
9
|
+
new RegExp(ROW_TOKEN.source).test(template);
|
|
10
|
+
|
|
11
|
+
const rowValue = (data: Record<string, unknown>, key: string): string => {
|
|
12
|
+
const value: unknown = get(data, key);
|
|
13
|
+
return value === undefined || value === null ? "" : String(value);
|
|
14
|
+
};
|
|
15
|
+
|
|
4
16
|
// A colon is a valid path character (RFC 3986 pchar) and the API router
|
|
5
17
|
// matches path parameters without decoding them: tenant-scoped ids
|
|
6
18
|
// ("default:<uuid>") must reach a `/:id/...` route as they are.
|
|
@@ -11,7 +23,7 @@ const SAFE_SCHEMES: ReadonlySet<string> = new Set(["http", "https", "mailto"]);
|
|
|
11
23
|
const REFUSED_URL = "";
|
|
12
24
|
|
|
13
25
|
// The colon survives the encoding, so a template starting with a field
|
|
14
|
-
// (`{website}`) takes its scheme from row data: `javascript:` must not reach
|
|
26
|
+
// (`{{row.website}}`) takes its scheme from row data: `javascript:` must not reach
|
|
15
27
|
// a link or `location.href`.
|
|
16
28
|
function hasSafeScheme(url: string): boolean {
|
|
17
29
|
const scheme = SCHEME_PATTERN.exec(url)?.[1];
|
|
@@ -19,19 +31,25 @@ function hasSafeScheme(url: string): boolean {
|
|
|
19
31
|
}
|
|
20
32
|
|
|
21
33
|
/**
|
|
22
|
-
* Fills `{field}`
|
|
23
|
-
* result with a scheme other than http,
|
|
34
|
+
* Fills the `{{row.field}}` tokens of a URL template with encoded row values,
|
|
35
|
+
* a field the row lacks left empty. A result with a scheme other than http,
|
|
36
|
+
* https or mailto comes back empty.
|
|
24
37
|
*/
|
|
25
38
|
export const interpolateUrl = (
|
|
26
39
|
url: string,
|
|
27
40
|
data: Record<string, unknown>,
|
|
28
41
|
): string => {
|
|
29
|
-
const interpolated = url.replace(
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
return "";
|
|
33
|
-
}
|
|
34
|
-
return encodeURIComponent(String(value)).replace(ENCODED_COLON, ":");
|
|
35
|
-
});
|
|
42
|
+
const interpolated = url.replace(ROW_TOKEN, (_, key: string) =>
|
|
43
|
+
encodeURIComponent(rowValue(data, key)).replace(ENCODED_COLON, ":"),
|
|
44
|
+
);
|
|
36
45
|
return hasSafeScheme(interpolated) ? interpolated : REFUSED_URL;
|
|
37
46
|
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Fills the `{{row.field}}` tokens of a plain value (a file name) with the
|
|
50
|
+
* row's values as they are, a field the row lacks left empty.
|
|
51
|
+
*/
|
|
52
|
+
export const interpolateRowText = (
|
|
53
|
+
text: string,
|
|
54
|
+
data: Record<string, unknown>,
|
|
55
|
+
): string => text.replace(ROW_TOKEN, (_, key: string) => rowValue(data, key));
|
|
@@ -12,6 +12,22 @@ export interface DmsLogoSources {
|
|
|
12
12
|
dark: string;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* What the footer of the public and auth pages shows besides its links
|
|
17
|
+
* (`registerFooterLink`).
|
|
18
|
+
*/
|
|
19
|
+
export interface DmsFooterConfig {
|
|
20
|
+
/**
|
|
21
|
+
* Name after the `©`, a literal or a `$`-prefixed i18n key; `false` drops
|
|
22
|
+
* the copyright.
|
|
23
|
+
*/
|
|
24
|
+
copyright?: string | false;
|
|
25
|
+
/** The GitHub "Star" button of the DMS repository. */
|
|
26
|
+
githubStar?: boolean;
|
|
27
|
+
/** The language picker. */
|
|
28
|
+
localeSwitcher?: boolean;
|
|
29
|
+
}
|
|
30
|
+
|
|
15
31
|
export interface DmsBrandingConfig {
|
|
16
32
|
/**
|
|
17
33
|
* Absent when an instance ships no logo of its own; the layer's app config
|
|
@@ -21,6 +37,7 @@ export interface DmsBrandingConfig {
|
|
|
21
37
|
default: DmsLogoSources;
|
|
22
38
|
collapsed: DmsLogoSources;
|
|
23
39
|
};
|
|
40
|
+
footer?: DmsFooterConfig;
|
|
24
41
|
}
|
|
25
42
|
|
|
26
43
|
export interface DmsAppConfig {
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import type { BreadcrumbItem, DropdownMenuItem } from "@nuxt/ui";
|
|
3
|
+
import { onMounted, ref } from "vue";
|
|
3
4
|
import NotificationPopover from "../notification/NotificationPopover.vue";
|
|
4
5
|
import QuickActionsPopover from "./QuickActionsPopover.vue";
|
|
5
6
|
import { useSidebarState } from "./sidebarState";
|
|
6
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
isPlainDataHeaderAction,
|
|
9
|
+
useHeaderActionControls,
|
|
10
|
+
} from "../../composables/layout/useHeaderActionControls";
|
|
7
11
|
import { usePageRecordLabel } from "#dms-core/app/composables/page/usePageRecordLabel";
|
|
8
12
|
import type { CategoryInfo } from "../../../types/page";
|
|
9
13
|
import { resolveModuleLandingSlug } from "../../../utils/moduleLanding";
|
|
@@ -30,7 +34,19 @@ const { open: sidebarOpen, collapsed: sidebarCollapsed } = useSidebarState();
|
|
|
30
34
|
|
|
31
35
|
// Modules register their own header buttons through this generic registry, so
|
|
32
36
|
// core has no knowledge of any specific module.
|
|
33
|
-
const { actions:
|
|
37
|
+
const { actions: visibleActions } = useHeaderActions();
|
|
38
|
+
// A `.client` plugin's action is missing from the server markup: drawn while
|
|
39
|
+
// hydrating, its button would be patched onto the next one's node. It joins
|
|
40
|
+
// once the header has mounted.
|
|
41
|
+
const isMounted = ref(false);
|
|
42
|
+
onMounted(() => {
|
|
43
|
+
isMounted.value = true;
|
|
44
|
+
});
|
|
45
|
+
const registeredActions = computed(() =>
|
|
46
|
+
isMounted.value
|
|
47
|
+
? visibleActions.value
|
|
48
|
+
: visibleActions.value.filter(isPlainDataHeaderAction),
|
|
49
|
+
);
|
|
34
50
|
|
|
35
51
|
// The builder button keeps its fixed slot first in the toolbar, and only
|
|
36
52
|
// exists when a module (the Builder) registers the action that drives it.
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
} from "../../utils/github-repository";
|
|
7
7
|
|
|
8
8
|
const EXTERNAL_LINK_PATTERN = /^https?:\/\//;
|
|
9
|
+
const DEFAULT_COPYRIGHT = "Antelope";
|
|
9
10
|
const GITHUB_REPOSITORY_API = `https://api.github.com/repos/${GITHUB_REPOSITORY}`;
|
|
10
11
|
const GITHUB_STARS_CACHE_KEY = "dms-github-stars";
|
|
11
12
|
// GitHub allows 60 anonymous API calls an hour per visitor: the count is
|
|
@@ -15,6 +16,17 @@ const GITHUB_STARS_CACHE_TTL_MS = 60 * 60 * 1000;
|
|
|
15
16
|
const { locale, setLocale, t } = useI18n();
|
|
16
17
|
const { uniqueLocales } = useUniqueLocales();
|
|
17
18
|
const { links } = useFooterLinks();
|
|
19
|
+
const { processI18n } = useTranslation();
|
|
20
|
+
const footer = computed(() => useDmsAppConfig().branding.footer ?? {});
|
|
21
|
+
const copyright = computed(() =>
|
|
22
|
+
footer.value.copyright === false
|
|
23
|
+
? null
|
|
24
|
+
: processI18n(footer.value.copyright ?? DEFAULT_COPYRIGHT),
|
|
25
|
+
);
|
|
26
|
+
const showsGithubStar = computed(() => footer.value.githubStar !== false);
|
|
27
|
+
const showsLocaleSwitcher = computed(
|
|
28
|
+
() => footer.value.localeSwitcher !== false,
|
|
29
|
+
);
|
|
18
30
|
|
|
19
31
|
const localesOptions: SelectItem[] = uniqueLocales.value.map((lang) => ({
|
|
20
32
|
label: lang.name,
|
|
@@ -87,6 +99,7 @@ async function loadGithubStars(): Promise<void> {
|
|
|
87
99
|
}
|
|
88
100
|
|
|
89
101
|
onMounted(async () => {
|
|
102
|
+
if (!showsGithubStar.value) return;
|
|
90
103
|
await loadGithubStars();
|
|
91
104
|
githubStarsSettled.value = true;
|
|
92
105
|
});
|
|
@@ -103,7 +116,7 @@ async function onLocaleChange(code: unknown) {
|
|
|
103
116
|
<footer
|
|
104
117
|
class="border-default text-dimmed flex flex-wrap items-center gap-x-[18px] gap-y-1.5 border-t px-5 py-3 text-[12.5px] max-sm:justify-center"
|
|
105
118
|
>
|
|
106
|
-
<span>©
|
|
119
|
+
<span v-if="copyright">© {{ copyright }}</span>
|
|
107
120
|
<template v-for="link in links" :key="link.id">
|
|
108
121
|
<a
|
|
109
122
|
v-if="isExternal(link.to)"
|
|
@@ -125,6 +138,7 @@ async function onLocaleChange(code: unknown) {
|
|
|
125
138
|
|
|
126
139
|
<!-- GitHub star button: icon + "Star" | live count, opens the repository. -->
|
|
127
140
|
<a
|
|
141
|
+
v-if="showsGithubStar"
|
|
128
142
|
:href="GITHUB_REPOSITORY_URL"
|
|
129
143
|
target="_blank"
|
|
130
144
|
rel="noopener noreferrer"
|
|
@@ -152,6 +166,7 @@ async function onLocaleChange(code: unknown) {
|
|
|
152
166
|
</a>
|
|
153
167
|
|
|
154
168
|
<USelect
|
|
169
|
+
v-if="showsLocaleSwitcher"
|
|
155
170
|
:model-value="locale"
|
|
156
171
|
:items="localesOptions"
|
|
157
172
|
:aria-label="t('empty_layout.footer.language')"
|
package/frontend-vue/layers/dms-layout/app/build/composables/layout/useHeaderActionControls.ts
CHANGED
|
@@ -15,6 +15,20 @@ export interface HeaderActionControls {
|
|
|
15
15
|
select: (action: HeaderAction) => void;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
const ACTION_CALLABLES = ["onSelect", "isVisible", "isActive"] as const;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Whether the action is plain data, which a universal plugin registers on the
|
|
22
|
+
* server and the client alike, so the server markup holds its button. One
|
|
23
|
+
* carrying a callable belongs in a `.client` plugin: the server never drew
|
|
24
|
+
* it, and the header adds it once mounted rather than during hydration.
|
|
25
|
+
*
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
export function isPlainDataHeaderAction(action: HeaderAction): boolean {
|
|
29
|
+
return ACTION_CALLABLES.every((key) => typeof action[key] !== "function");
|
|
30
|
+
}
|
|
31
|
+
|
|
18
32
|
/**
|
|
19
33
|
* How the header reads and runs any {@link HeaderAction}: an action linked to
|
|
20
34
|
* a side panel gets its state and its click from the DMS, any other one from
|
|
@@ -9,6 +9,7 @@ interface HStackProps {
|
|
|
9
9
|
distribution?: StackDistribution;
|
|
10
10
|
spacing?: string;
|
|
11
11
|
wrap?: boolean;
|
|
12
|
+
grow?: number;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
const props = withDefaults(defineProps<HStackProps>(), {
|
|
@@ -28,6 +29,7 @@ const props = withDefaults(defineProps<HStackProps>(), {
|
|
|
28
29
|
justifyContent: distributionMap[props.distribution],
|
|
29
30
|
gap: props.spacing,
|
|
30
31
|
'--dms-stack-gap': props.spacing,
|
|
32
|
+
flexGrow: props.grow,
|
|
31
33
|
flexWrap: props.wrap ? 'wrap' : 'nowrap',
|
|
32
34
|
}"
|
|
33
35
|
class="dms-hstack w-full"
|
|
@@ -35,3 +37,17 @@ const props = withDefaults(defineProps<HStackProps>(), {
|
|
|
35
37
|
<slot />
|
|
36
38
|
</div>
|
|
37
39
|
</template>
|
|
40
|
+
|
|
41
|
+
<style>
|
|
42
|
+
/* A stack fills what holds it, except along a row, where it is one item among
|
|
43
|
+
its siblings: sibling stacks share the row (in their `grow` ratio), and in
|
|
44
|
+
a row with a Spacer they keep their content width so the Spacer can push
|
|
45
|
+
them aside. An inline `grow` wins over both. */
|
|
46
|
+
.dms-hstack > :is(.dms-hstack, .dms-vstack) {
|
|
47
|
+
width: auto;
|
|
48
|
+
flex: 1 1 0%;
|
|
49
|
+
}
|
|
50
|
+
.dms-hstack:has(> .dms-spacer) > :is(.dms-hstack, .dms-vstack) {
|
|
51
|
+
flex: 0 1 auto;
|
|
52
|
+
}
|
|
53
|
+
</style>
|
|
@@ -8,6 +8,7 @@ interface VStackProps {
|
|
|
8
8
|
alignment?: StackAlignment;
|
|
9
9
|
distribution?: StackDistribution;
|
|
10
10
|
spacing?: string;
|
|
11
|
+
grow?: number;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
const props = withDefaults(defineProps<VStackProps>(), {
|
|
@@ -26,6 +27,7 @@ const props = withDefaults(defineProps<VStackProps>(), {
|
|
|
26
27
|
justifyContent: distributionMap[props.distribution],
|
|
27
28
|
gap: props.spacing,
|
|
28
29
|
'--dms-stack-gap': props.spacing,
|
|
30
|
+
flexGrow: props.grow,
|
|
29
31
|
}"
|
|
30
32
|
class="dms-vstack w-full"
|
|
31
33
|
>
|