create-procode 1.0.0 → 1.1.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/README.md +28 -2
- package/package.json +1 -1
- package/src/args.mjs +6 -0
- package/src/cli.mjs +123 -1
- package/src/deps.mjs +208 -195
- package/src/multiLanguage.mjs +409 -0
- package/templates/base/README.md.tmpl +5 -3
- package/templates/base/src/assets/styles/index.scss.tmpl +149 -146
- package/templates/base/vite.config.ts.tmpl +83 -54
- package/templates/multi-language/locales/fr/core.json +76 -0
- package/templates/multi-language/locales/fr/kendo.json +181 -0
- package/templates/multi-language/locales/fr/template.json +169 -0
- package/templates/multi-language/locales/fr/widget.json +65 -0
- package/templates/multi-language/locales/hi/core.json +76 -0
- package/templates/multi-language/locales/hi/kendo.json +181 -0
- package/templates/multi-language/locales/hi/template.json +169 -0
- package/templates/multi-language/locales/hi/widget.json +65 -0
- package/templates/multi-language/sample/fr.json +55 -0
- package/templates/multi-language/sample/hi.json +55 -0
- package/templates/tests/src/Module/schemas.test.ts +50 -0
- package/templates/tests-multi-language/src/multiLanguage/enText.ts +68 -0
- package/templates/tests-multi-language/src/multiLanguage/translations.test.ts +92 -0
|
@@ -1,146 +1,149 @@
|
|
|
1
|
-
// ---------------------------------------------------------------------------
|
|
2
|
-
// The import order below IS the cascade. Each layer expects the ones above it
|
|
3
|
-
// to have been declared, and the whole stack is one Sass compilation:
|
|
4
|
-
//
|
|
5
|
-
// 1. vs-theme design tokens ($space-*, $text-*, colour ramps) — nothing
|
|
6
|
-
// above it can reference a token, so it goes first.
|
|
7
|
-
// 2. kendo-widget the _kendo-bridge that binds Kendo's variables to those
|
|
8
|
-
// tokens; must be declared before Kendo's own theme reads
|
|
9
|
-
// them.
|
|
10
|
-
// 3. kendo-theme-default Kendo's compiled theme. NOT declared as a peer by
|
|
11
|
-
// anything, but the widget library imports it BY NAME — so
|
|
12
|
-
// it is a hard build failure when missing, not an extra.
|
|
13
|
-
// 4. core runtime layout (prc-cl-N columns, skeletons).
|
|
14
|
-
// 5. vs-template toolbar, grid chrome, saved views.
|
|
15
|
-
//
|
|
16
|
-
// Reordering these produces "Undefined variable" at build time, or a screen
|
|
17
|
-
// that renders with the wrong spacing and no error at all.
|
|
18
|
-
// ---------------------------------------------------------------------------
|
|
19
|
-
@import "procode-vs-theme/scss";
|
|
20
|
-
@import "procode-lowcode-kendo-widget/styles";
|
|
21
|
-
@import "@progress/kendo-theme-default/dist/all.scss";
|
|
22
|
-
@import "procode-lowcode-core/styles";
|
|
23
|
-
@import "procode-vs-template/styles";
|
|
24
|
-
|
|
25
|
-
// ---------------------------------------------------------------------------
|
|
26
|
-
// App styles go BELOW this line.
|
|
27
|
-
//
|
|
28
|
-
// Reach for a theme token or a utility class before writing a rule, and never a
|
|
29
|
-
// literal hex value — the theme ships 200+ utilities that already exist.
|
|
30
|
-
// Do not redeclare a `.prc-*` or `.qo-*` class: those belong to the
|
|
31
|
-
// libraries, and newer versions guard them with a doubled class, so a host rule
|
|
32
|
-
// silently loses anyway.
|
|
33
|
-
// ---------------------------------------------------------------------------
|
|
34
|
-
|
|
35
|
-
// ---------------------------------------------------------------------------
|
|
36
|
-
// THE FONT FAMILY IS SET ONCE, HERE.
|
|
37
|
-
//
|
|
38
|
-
// The theme's reset sets no `font-family` on `body`, and several of its own
|
|
39
|
-
// component classes (`.qo-page-title`, `.qo-page-subtitle`) style size, weight
|
|
40
|
-
// and colour only. Anything not carrying `qo-font-family-primary` therefore
|
|
41
|
-
// inherits the browser default, which is a SERIF. One line here is the single
|
|
42
|
-
// point that makes every screen agree; do not repeat the class per widget.
|
|
43
|
-
// ---------------------------------------------------------------------------
|
|
44
|
-
body {
|
|
45
|
-
font-family: var(--qo-font-family-primary);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// ---------------------------------------------------------------------------
|
|
49
|
-
// LOADING PLACEHOLDERS — one height, one sweep, visible on a white card.
|
|
50
|
-
//
|
|
51
|
-
// Core ships `--skeleton-field-height: 32px`; every control on this stack is
|
|
52
|
-
// 40px (`--qo-control-height`), so the form re-flowed 8px a row as data landed.
|
|
53
|
-
// Core's `#eee` base with a sheen whose brightest stop is LIGHTER than the base
|
|
54
|
-
// reads as "a white background animating" on a `qo-card`; both are restated as
|
|
55
|
-
// theme tokens. The two `.prc-loading-container` rules: core nests
|
|
56
|
-
// that element inside itself, so two rgba(0,0,0,.1) backdrops stacked, and the
|
|
57
|
-
// dim landed on the skeleton base but not its z-index:2000 shimmer.
|
|
58
|
-
// ---------------------------------------------------------------------------
|
|
59
|
-
:root {
|
|
60
|
-
--skeleton-field-height: var(--qo-control-height);
|
|
61
|
-
--skeleton-background-color: var(--qo-bg-disabled);
|
|
62
|
-
--skeleton-background-linear-gradient: linear-gradient(
|
|
63
|
-
110deg,
|
|
64
|
-
var(--qo-bg-disabled) 8%,
|
|
65
|
-
var(--qo-bg-light) 18%,
|
|
66
|
-
var(--qo-bg-disabled) 33%
|
|
67
|
-
);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
.prc-loading-container .prc-loading-container {
|
|
71
|
-
background-color: transparent;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
body:has(.prc-skeleton) .prc-loading-container {
|
|
75
|
-
background-color: transparent;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
// ---------------------------------------------------------------------------
|
|
79
|
-
// Kendo controls that a schema put on the 40px ramp — make the ramp stick.
|
|
80
|
-
//
|
|
81
|
-
// `qo-h-control` is (0,1,0). kendo-widget's `.k-dropdownlist, .k-picker
|
|
82
|
-
// { height: 32px }` ties it and loads later, so DROPDOWNs drew 8px shorter than
|
|
83
|
-
// the TEXTBOXes beside them. Doubling the class is (0,2,0) and re-states the
|
|
84
|
-
// theme's own token — no `!important`.
|
|
85
|
-
// ---------------------------------------------------------------------------
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
//
|
|
102
|
-
//
|
|
103
|
-
//
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
//
|
|
109
|
-
//
|
|
110
|
-
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
//
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
//
|
|
135
|
-
//
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// The import order below IS the cascade. Each layer expects the ones above it
|
|
3
|
+
// to have been declared, and the whole stack is one Sass compilation:
|
|
4
|
+
//
|
|
5
|
+
// 1. vs-theme design tokens ($space-*, $text-*, colour ramps) — nothing
|
|
6
|
+
// above it can reference a token, so it goes first.
|
|
7
|
+
// 2. kendo-widget the _kendo-bridge that binds Kendo's variables to those
|
|
8
|
+
// tokens; must be declared before Kendo's own theme reads
|
|
9
|
+
// them.
|
|
10
|
+
// 3. kendo-theme-default Kendo's compiled theme. NOT declared as a peer by
|
|
11
|
+
// anything, but the widget library imports it BY NAME — so
|
|
12
|
+
// it is a hard build failure when missing, not an extra.
|
|
13
|
+
// 4. core runtime layout (prc-cl-N columns, skeletons).
|
|
14
|
+
// 5. vs-template toolbar, grid chrome, saved views.
|
|
15
|
+
//
|
|
16
|
+
// Reordering these produces "Undefined variable" at build time, or a screen
|
|
17
|
+
// that renders with the wrong spacing and no error at all.
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
@import "procode-vs-theme/scss";
|
|
20
|
+
@import "procode-lowcode-kendo-widget/styles";
|
|
21
|
+
@import "@progress/kendo-theme-default/dist/all.scss";
|
|
22
|
+
@import "procode-lowcode-core/styles";
|
|
23
|
+
@import "procode-vs-template/styles";
|
|
24
|
+
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// App styles go BELOW this line.
|
|
27
|
+
//
|
|
28
|
+
// Reach for a theme token or a utility class before writing a rule, and never a
|
|
29
|
+
// literal hex value — the theme ships 200+ utilities that already exist.
|
|
30
|
+
// Do not redeclare a `.prc-*` or `.qo-*` class: those belong to the
|
|
31
|
+
// libraries, and newer versions guard them with a doubled class, so a host rule
|
|
32
|
+
// silently loses anyway.
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
// THE FONT FAMILY IS SET ONCE, HERE.
|
|
37
|
+
//
|
|
38
|
+
// The theme's reset sets no `font-family` on `body`, and several of its own
|
|
39
|
+
// component classes (`.qo-page-title`, `.qo-page-subtitle`) style size, weight
|
|
40
|
+
// and colour only. Anything not carrying `qo-font-family-primary` therefore
|
|
41
|
+
// inherits the browser default, which is a SERIF. One line here is the single
|
|
42
|
+
// point that makes every screen agree; do not repeat the class per widget.
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
body {
|
|
45
|
+
font-family: var(--qo-font-family-primary);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
// LOADING PLACEHOLDERS — one height, one sweep, visible on a white card.
|
|
50
|
+
//
|
|
51
|
+
// Core ships `--skeleton-field-height: 32px`; every control on this stack is
|
|
52
|
+
// 40px (`--qo-control-height`), so the form re-flowed 8px a row as data landed.
|
|
53
|
+
// Core's `#eee` base with a sheen whose brightest stop is LIGHTER than the base
|
|
54
|
+
// reads as "a white background animating" on a `qo-card`; both are restated as
|
|
55
|
+
// theme tokens. The two `.prc-loading-container` rules: core nests
|
|
56
|
+
// that element inside itself, so two rgba(0,0,0,.1) backdrops stacked, and the
|
|
57
|
+
// dim landed on the skeleton base but not its z-index:2000 shimmer.
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
:root {
|
|
60
|
+
--skeleton-field-height: var(--qo-control-height);
|
|
61
|
+
--skeleton-background-color: var(--qo-bg-disabled);
|
|
62
|
+
--skeleton-background-linear-gradient: linear-gradient(
|
|
63
|
+
110deg,
|
|
64
|
+
var(--qo-bg-disabled) 8%,
|
|
65
|
+
var(--qo-bg-light) 18%,
|
|
66
|
+
var(--qo-bg-disabled) 33%
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.prc-loading-container .prc-loading-container {
|
|
71
|
+
background-color: transparent;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
body:has(.prc-skeleton) .prc-loading-container {
|
|
75
|
+
background-color: transparent;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
// Kendo controls that a schema put on the 40px ramp — make the ramp stick.
|
|
80
|
+
//
|
|
81
|
+
// `qo-h-control` is (0,1,0). kendo-widget's `.k-dropdownlist, .k-picker`
|
|
82
|
+
// `{ height: 32px }` ties it and loads later, so DROPDOWNs drew 8px shorter than
|
|
83
|
+
// the TEXTBOXes beside them. Doubling the class is (0,2,0) and re-states the
|
|
84
|
+
// theme's own token — no `!important`.
|
|
85
|
+
// ---------------------------------------------------------------------------
|
|
86
|
+
// KendoReact 13+ emits no fill-mode class (`k-picker-solid`, `k-input-solid`) when
|
|
87
|
+
// the theme decides the fill, so the solid default is the bare base class; the
|
|
88
|
+
// `:where()` keeps "not flat / not outline" at the old (0,2,0) specificity.
|
|
89
|
+
.qo-h-control.k-picker:where(:not(.k-picker-flat, .k-picker-outline)),
|
|
90
|
+
.qo-h-control.k-input:where(:not(.k-input-flat, .k-input-outline)) {
|
|
91
|
+
height: var(--qo-control-height);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// A MultiSelect grows with its chips, so it takes a floor and not a height.
|
|
95
|
+
.qo-min-h-control.k-input:where(:not(.k-input-flat, .k-input-outline)),
|
|
96
|
+
.qo-min-h-control.k-picker:where(:not(.k-picker-flat, .k-picker-outline)) {
|
|
97
|
+
height: auto;
|
|
98
|
+
min-height: var(--qo-control-height);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
// Control text — NO RULE HERE, on purpose. 12px label / 13px value.
|
|
103
|
+
//
|
|
104
|
+
// Add, Edit and View read in one pair of sizes, and all of it comes from the
|
|
105
|
+
// libraries: a field label is vs-theme's `qo-label` (12px / 600), and every
|
|
106
|
+
// control's text is 13px from kendo-widget 2.8.1 — as are a BLOCK's value and
|
|
107
|
+
// the grid toolbar's search from vs-template 2.12.1. Do not put a size on
|
|
108
|
+
// `.k-input-inner`: a declaration on the element beats every class on the
|
|
109
|
+
// wrapper, and globally it would also pin the toolbar search and filter cells.
|
|
110
|
+
// (Apps generated before 1.0.1 carried an 11px rule here; delete it when they
|
|
111
|
+
// adopt kendo-widget 2.8.1.)
|
|
112
|
+
// ---------------------------------------------------------------------------
|
|
113
|
+
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
// Two fields in one row, one label wraps — keep the controls on one line.
|
|
116
|
+
//
|
|
117
|
+
// The label HOC stacks label over control in `.prc-label-field`; a row of two
|
|
118
|
+
// aligns them by their TOP, so a wrapped label pushes its control down a line.
|
|
119
|
+
// Aligning the controls by their BOTTOM fixes it at every width. Both
|
|
120
|
+
// restrictions are load-bearing: `[class*="prc-cl-"]` keeps it on a column
|
|
121
|
+
// SLOT (`:has()` is a descendant test), and `:not(.prc-flx-container)` excludes
|
|
122
|
+
// a slot that is itself a layout — a scroll pane carrying `prc-cl-fl` otherwise
|
|
123
|
+
// gets bottom-packed and its first section is pushed above the fold, measured.
|
|
124
|
+
// Durable home: core's ContainerRenderer styles.
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
.prc-flx-container:not(.prc-verticle):not(.prc-verticle-reverse)
|
|
127
|
+
> [class*="prc-cl-"]:not(.prc-flx-container):has(.prc-label-field) {
|
|
128
|
+
align-self: stretch;
|
|
129
|
+
display: flex;
|
|
130
|
+
flex-direction: column;
|
|
131
|
+
justify-content: flex-end;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// ---------------------------------------------------------------------------
|
|
135
|
+
// App screens (src/Screens) — the loader, error and 404 elements main.tsx
|
|
136
|
+
// hands to <Core>. They reuse the core classes; only the colour and the
|
|
137
|
+
// missing height are restated here, as theme tokens.
|
|
138
|
+
// ---------------------------------------------------------------------------
|
|
139
|
+
.prc-spinner-arc.prc-spinner-arc {
|
|
140
|
+
border-top-color: var(--qo-border-primary);
|
|
141
|
+
border-right-color: var(--qo-border-primary);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.prc-404-container.app-screen-message {
|
|
145
|
+
min-height: 100dvh;
|
|
146
|
+
padding: var(--qo-space-lg);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
@import "../../Factory/Widgets/SectionNav/style.scss";
|
|
@@ -1,61 +1,90 @@
|
|
|
1
|
+
/// <reference types="vitest" /> // @tests
|
|
1
2
|
import { fileURLToPath } from "node:url";
|
|
2
|
-
import { defineConfig } from "vite";
|
|
3
|
+
import { defineConfig, loadEnv } from "vite";
|
|
3
4
|
import react from "@vitejs/plugin-react";
|
|
4
5
|
|
|
5
6
|
// https://vitejs.dev/config/
|
|
6
|
-
export default defineConfig({
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
7
|
+
export default defineConfig(({ command, mode }) => {
|
|
8
|
+
// A personal dev token must never ship. `vite build` reads .env.local like
|
|
9
|
+
// `vite dev` does, so a VITE_HARDCODED_TOKEN left there would be compiled into
|
|
10
|
+
// dist/ and every user of the build would act as that developer. Refuse
|
|
11
|
+
// instead. (ALLOW_TOKEN_IN_BUILD=1 overrides it for a throwaway local build.)
|
|
12
|
+
const env = loadEnv(mode, process.cwd(), "");
|
|
13
|
+
if (command === "build" && env.VITE_HARDCODED_TOKEN && process.env.ALLOW_TOKEN_IN_BUILD !== "1") {
|
|
14
|
+
throw new Error(
|
|
15
|
+
"VITE_HARDCODED_TOKEN is set (usually in .env.local). Remove it before building — " +
|
|
16
|
+
"a built app authenticates from the AuthToken cookie. For a throwaway local build only: ALLOW_TOKEN_IN_BUILD=1.",
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return {
|
|
21
|
+
// Must match VITE_HOMEPAGE in .env. The app is served from this segment, so a
|
|
22
|
+
// screen lives at <base>/<slug> — e.g. __BASE_PATH_SLASH__sample.
|
|
23
|
+
base: "__BASE_PATH_SLASH__",
|
|
24
|
+
|
|
25
|
+
plugins: [react()],
|
|
26
|
+
|
|
27
|
+
resolve: {
|
|
28
|
+
alias: [
|
|
29
|
+
{
|
|
30
|
+
// procode-lowcode-core exports "./styles" as src/Assets/styles/index.scss,
|
|
31
|
+
// but the package ships the folder as src/assets/. Windows and macOS
|
|
32
|
+
// ignore the case and build; Linux (CI, Docker) fails the @import. This
|
|
33
|
+
// points the import at the real path on every OS.
|
|
34
|
+
find: /^procode-lowcode-core\/styles$/,
|
|
35
|
+
replacement: fileURLToPath(
|
|
36
|
+
new URL("./node_modules/procode-lowcode-core/src/assets/styles/index.scss", import.meta.url),
|
|
37
|
+
),
|
|
38
|
+
},
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
build: {
|
|
43
|
+
// Must stay >= es2018. Object rest/spread is an ES2018 feature, and the
|
|
44
|
+
// es2015 downlevel transform miscompiles a `const` that declares two rest
|
|
45
|
+
// patterns at once — it drops bindings and emits a bare `{} = null`, which
|
|
46
|
+
// throws "Cannot destructure 'null' as it is null" at runtime. Kendo's
|
|
47
|
+
// CalendarCell.shouldComponentUpdate is written that way, so the date picker
|
|
48
|
+
// crashes on open in built bundles only — never in dev, which skips this
|
|
49
|
+
// transform. Do not lower this to chase bundle size.
|
|
50
|
+
target: "es2020",
|
|
51
|
+
minify: false,
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
esbuild: {
|
|
55
|
+
target: "es2020",
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
// The two runtime libraries ship CommonJS-interop shapes that Vite's dep
|
|
59
|
+
// scanner does not find on its own; pre-bundling them keeps dev reloads fast
|
|
60
|
+
// and avoids "outdated optimize dep" full-page reloads on every save.
|
|
61
|
+
optimizeDeps: {
|
|
62
|
+
include: ["procode-lowcode-kendo-widget", "procode-lowcode-core"],
|
|
63
|
+
},
|
|
64
|
+
|
|
65
|
+
// Some transitive dependencies still reference the Node `global`.
|
|
66
|
+
define: {
|
|
67
|
+
global: "globalThis",
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
server: {
|
|
71
|
+
fs: {
|
|
72
|
+
allow: ["..", "."],
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
// @tests-start
|
|
77
|
+
// `npm test` (vitest). The ProCode packages ship sources that import SCSS and
|
|
78
|
+
// JSON; inlining them lets Vite transform them in the test run as it does in
|
|
79
|
+
// the app — without this every test importing a package fails to load.
|
|
80
|
+
test: {
|
|
81
|
+
include: ["src/**/*.test.ts"],
|
|
82
|
+
server: {
|
|
83
|
+
deps: {
|
|
84
|
+
inline: [/procode-/],
|
|
85
|
+
},
|
|
24
86
|
},
|
|
25
|
-
],
|
|
26
|
-
},
|
|
27
|
-
|
|
28
|
-
build: {
|
|
29
|
-
// Must stay >= es2018. Object rest/spread is an ES2018 feature, and the
|
|
30
|
-
// es2015 downlevel transform miscompiles a `const` that declares two rest
|
|
31
|
-
// patterns at once — it drops bindings and emits a bare `{} = null`, which
|
|
32
|
-
// throws "Cannot destructure 'null' as it is null" at runtime. Kendo's
|
|
33
|
-
// CalendarCell.shouldComponentUpdate is written that way, so the date picker
|
|
34
|
-
// crashes on open in built bundles only — never in dev, which skips this
|
|
35
|
-
// transform. Do not lower this to chase bundle size.
|
|
36
|
-
target: "es2020",
|
|
37
|
-
minify: false,
|
|
38
|
-
},
|
|
39
|
-
|
|
40
|
-
esbuild: {
|
|
41
|
-
target: "es2020",
|
|
42
|
-
},
|
|
43
|
-
|
|
44
|
-
// The two runtime libraries ship CommonJS-interop shapes that Vite's dep
|
|
45
|
-
// scanner does not find on its own; pre-bundling them keeps dev reloads fast
|
|
46
|
-
// and avoids "outdated optimize dep" full-page reloads on every save.
|
|
47
|
-
optimizeDeps: {
|
|
48
|
-
include: ["procode-lowcode-kendo-widget", "procode-lowcode-core"],
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
// Some transitive dependencies still reference the Node `global`.
|
|
52
|
-
define: {
|
|
53
|
-
global: "globalThis",
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
server: {
|
|
57
|
-
fs: {
|
|
58
|
-
allow: ["..", "."],
|
|
59
87
|
},
|
|
60
|
-
|
|
88
|
+
// @tests-end
|
|
89
|
+
};
|
|
61
90
|
});
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"validation.required": "Ce champ est obligatoire",
|
|
3
|
+
"validation.email": "L'adresse e-mail est invalide",
|
|
4
|
+
"validation.bulkEmail": "Une ou plusieurs adresses e-mail sont invalides",
|
|
5
|
+
"validation.alphanumericSpace": "Seuls les lettres, les chiffres et les espaces sont autorisés",
|
|
6
|
+
"validation.maxChars": "{maxCharCount} caractères maximum",
|
|
7
|
+
"validation.minChars": "{minCharCount} caractères minimum",
|
|
8
|
+
"validation.greaterThan": "La valeur doit être supérieure à {value}",
|
|
9
|
+
"validation.greaterThanEqual": "La valeur doit être supérieure ou égale à {value}",
|
|
10
|
+
"validation.lessThan": "La valeur doit être inférieure à {value}",
|
|
11
|
+
"validation.lessThanEqual": "La valeur doit être inférieure ou égale à {value}",
|
|
12
|
+
"validation.between": "La valeur doit être comprise entre {min} et {max}",
|
|
13
|
+
"validation.notBetween": "La valeur ne doit pas être comprise entre {min} et {max}",
|
|
14
|
+
"validation.invalidNumber": "Valeur numérique invalide",
|
|
15
|
+
"validation.invalidDate": "Valeur de date invalide",
|
|
16
|
+
"validation.invalidList": "Valeur de liste invalide",
|
|
17
|
+
"validation.invalidValue": "Valeur {dataType} invalide",
|
|
18
|
+
"validation.itemCount_one": "{count} élément",
|
|
19
|
+
"validation.itemCount_other": "{count} éléments",
|
|
20
|
+
"validation.misconfigured.comparisonValueMissing": "Validation mal configurée : la valeur de comparaison est absente",
|
|
21
|
+
"validation.misconfigured.minBoundaryMissing": "Validation mal configurée : la borne minimale est absente",
|
|
22
|
+
"validation.misconfigured.maxBoundaryMissing": "Validation mal configurée : la borne maximale est absente",
|
|
23
|
+
"validation.misconfigured.maxCharCountMissing": "Validation mal configurée : le paramètre maxCharCount est absent",
|
|
24
|
+
"validation.misconfigured.minCharCountMissing": "Validation mal configurée : le paramètre minCharCount est absent",
|
|
25
|
+
"action.notAvailable": "Cette action n'est pas disponible. Veuillez contacter le support.",
|
|
26
|
+
"action.denied": "Vous n'avez pas l'autorisation d'effectuer cette action.",
|
|
27
|
+
"action.permissionsLoading": "Les autorisations sont encore en cours de chargement. Veuillez réessayer.",
|
|
28
|
+
"screen.denied": "Vous n'avez pas l'autorisation de consulter cet écran.",
|
|
29
|
+
"screen.loadError": "Une erreur s'est produite lors du chargement de cet écran.",
|
|
30
|
+
"screen.oops": "Oups !",
|
|
31
|
+
"screen.notFoundTitle": "404 - PAGE INTROUVABLE",
|
|
32
|
+
"screen.notFoundDescription": "La page que vous recherchez a peut-être été supprimée, renommée ou est temporairement indisponible.",
|
|
33
|
+
"screen.unexpectedError": "Une erreur inattendue s'est produite.",
|
|
34
|
+
"locale.label": "Langue",
|
|
35
|
+
"http.GET.200": "Récupération réussie",
|
|
36
|
+
"http.GET.204": "Aucun contenu",
|
|
37
|
+
"http.GET.400": "Requête incorrecte",
|
|
38
|
+
"http.GET.401": "Non autorisé",
|
|
39
|
+
"http.GET.404": "Entité introuvable",
|
|
40
|
+
"http.GET.415": "Type de média non pris en charge",
|
|
41
|
+
"http.GET.500": "Erreur",
|
|
42
|
+
"http.POST.201": "Création réussie",
|
|
43
|
+
"http.POST.204": "Aucun contenu",
|
|
44
|
+
"http.POST.400": "Requête incorrecte",
|
|
45
|
+
"http.POST.401": "Non autorisé",
|
|
46
|
+
"http.POST.409": "Entrée en double",
|
|
47
|
+
"http.POST.415": "Type de média non pris en charge",
|
|
48
|
+
"http.POST.422": "Erreur de validation",
|
|
49
|
+
"http.POST.500": "Erreur",
|
|
50
|
+
"http.PUT.201": "Mise à jour réussie",
|
|
51
|
+
"http.PUT.204": "Aucun contenu",
|
|
52
|
+
"http.PUT.400": "Requête incorrecte",
|
|
53
|
+
"http.PUT.401": "Non autorisé",
|
|
54
|
+
"http.PUT.404": "Entité introuvable",
|
|
55
|
+
"http.PUT.409": "Entrée en double",
|
|
56
|
+
"http.PUT.415": "Type de média non pris en charge",
|
|
57
|
+
"http.PUT.422": "Erreur de validation",
|
|
58
|
+
"http.PUT.500": "Erreur",
|
|
59
|
+
"http.PATCH.201": "Mise à jour réussie",
|
|
60
|
+
"http.PATCH.204": "Aucun contenu",
|
|
61
|
+
"http.PATCH.400": "Requête incorrecte",
|
|
62
|
+
"http.PATCH.401": "Non autorisé",
|
|
63
|
+
"http.PATCH.404": "Entité introuvable",
|
|
64
|
+
"http.PATCH.409": "Entrée en double",
|
|
65
|
+
"http.PATCH.415": "Type de média non pris en charge",
|
|
66
|
+
"http.PATCH.422": "Erreur de validation",
|
|
67
|
+
"http.PATCH.500": "Erreur",
|
|
68
|
+
"http.DELETE.200": "Suppression réussie",
|
|
69
|
+
"http.DELETE.204": "Aucun contenu",
|
|
70
|
+
"http.DELETE.401": "Non autorisé",
|
|
71
|
+
"http.DELETE.404": "Entité introuvable",
|
|
72
|
+
"http.DELETE.409": "Entrée en double",
|
|
73
|
+
"http.DELETE.415": "Type de média non pris en charge",
|
|
74
|
+
"http.DELETE.422": "Erreur de validation",
|
|
75
|
+
"http.DELETE.500": "Erreur"
|
|
76
|
+
}
|