@elasticias/ui 1.0.40 → 1.0.42
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/fesm2022/elasticias-ui.mjs +77 -43
- package/fesm2022/elasticias-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/styles/_comptoir.scss +18 -0
- package/styles/_patterns.scss +26 -1
- package/types/elasticias-ui.d.ts +17 -3
package/package.json
CHANGED
package/styles/_comptoir.scss
CHANGED
|
@@ -45,6 +45,24 @@
|
|
|
45
45
|
--m-finance: #0d6e6a;
|
|
46
46
|
--m-admin: #0f1115;
|
|
47
47
|
|
|
48
|
+
/* ── Crescilio brand colours ─────────────────────────────────────
|
|
49
|
+
These are the Crescilio brand colours: one per product, plus a
|
|
50
|
+
critical tone reserved for the system. The Crescilio Brand
|
|
51
|
+
Guidelines will be shared later, when the logo is ready; until
|
|
52
|
+
then these values are the reference.
|
|
53
|
+
Each colour comes as a pair named for the ground it sits on: the
|
|
54
|
+
plain name is for use on ink (dark grounds), `-paper` for use on
|
|
55
|
+
paper (light grounds). They are fixed values, not theme-switched,
|
|
56
|
+
so they are not restated under `.p-dark`. */
|
|
57
|
+
--cr-spring: #00D19A; /* Crescilio ERP, on ink */
|
|
58
|
+
--cr-spring-paper: #007A5A; /* Crescilio ERP, on paper */
|
|
59
|
+
--cr-sun: #FFCE3B; /* Crescilio POS, on ink */
|
|
60
|
+
--cr-sun-paper: #A87800; /* Crescilio POS, on paper */
|
|
61
|
+
--cr-violet: #7C5CFF; /* Crescilio Store, on ink */
|
|
62
|
+
--cr-violet-paper: #5B3FE0; /* Crescilio Store, on paper */
|
|
63
|
+
--cr-critical: #FF5C35; /* Coral, critical, system only, on ink */
|
|
64
|
+
--cr-critical-paper: #C2381A; /* Coral, critical, system only, on paper */
|
|
65
|
+
|
|
48
66
|
/* ── Status pairs (chips only) ───────────────────────────────── */
|
|
49
67
|
--st-pending-fg: #b34a00; --st-pending-bg: #fff1e0;
|
|
50
68
|
--st-processing-fg: #1356a8; --st-processing-bg: #e0ecfc;
|
package/styles/_patterns.scss
CHANGED
|
@@ -841,7 +841,10 @@
|
|
|
841
841
|
}
|
|
842
842
|
|
|
843
843
|
.tbl tbody td {
|
|
844
|
-
|
|
844
|
+
/* Published so a control inside the cell can size a touch slop that
|
|
845
|
+
stays inside its own row (see the toggle switch, pointer: coarse). */
|
|
846
|
+
--tbl-cell-pad-block: 14px;
|
|
847
|
+
padding: var(--tbl-cell-pad-block) 18px;
|
|
845
848
|
border-bottom: 1px solid var(--rule-soft, rgba(15, 17, 21, 0.05));
|
|
846
849
|
vertical-align: middle;
|
|
847
850
|
}
|
|
@@ -4571,6 +4574,28 @@ input.ef-input[type='number'] {
|
|
|
4571
4574
|
/* (48 - 40) / 2 outward on every side */
|
|
4572
4575
|
inset: calc((var(--hit-touch) - var(--hit-base)) / -2);
|
|
4573
4576
|
}
|
|
4577
|
+
|
|
4578
|
+
/* The switch draws at its theme size (Aura: 40x24) and its click
|
|
4579
|
+
target is PrimeNG's invisible input, sized to exactly that box. In a
|
|
4580
|
+
list row a tap that lands just outside it did nothing, because the
|
|
4581
|
+
row wrapper stops propagation. Grow the invisible input towards
|
|
4582
|
+
48x48 around the switch; the visual does not change. The switch
|
|
4583
|
+
root is position: relative with no overflow clip, and a tap on the
|
|
4584
|
+
overhang still reaches PrimeNG's host click handler.
|
|
4585
|
+
|
|
4586
|
+
Vertically, the overhang never exceeds the cell's own block padding
|
|
4587
|
+
(`--tbl-cell-pad-block`, set by the table and its density presets).
|
|
4588
|
+
A compact row is about 33px, so a full 12px overhang reached into the
|
|
4589
|
+
next row and a tap on one client's switch toggled its neighbour's.
|
|
4590
|
+
Outside a table the variable is unset and the full slop applies. */
|
|
4591
|
+
ef-toggleswitch .p-toggleswitch-input {
|
|
4592
|
+
--ef-switch-slop-block: calc((var(--hit-touch) - var(--p-toggleswitch-height, 1.5rem)) / 2);
|
|
4593
|
+
--ef-switch-slop-inline: calc((var(--hit-touch) - var(--p-toggleswitch-width, 2.5rem)) / 2);
|
|
4594
|
+
inset-block: calc(-1 * min(var(--ef-switch-slop-block), var(--tbl-cell-pad-block, var(--ef-switch-slop-block))));
|
|
4595
|
+
inset-inline: calc(-1 * var(--ef-switch-slop-inline));
|
|
4596
|
+
width: auto;
|
|
4597
|
+
height: auto;
|
|
4598
|
+
}
|
|
4574
4599
|
}
|
|
4575
4600
|
|
|
4576
4601
|
|
package/types/elasticias-ui.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { PipeTransform, OnInit, OnChanges, TemplateRef, EventEmitter, AfterContentInit, OnDestroy, SimpleChanges, InjectionToken, AfterViewInit } from '@angular/core';
|
|
3
3
|
import * as _elasticias_screens from '@elasticias/screens';
|
|
4
4
|
import { EfDataCardColumn, ScreenContext, EfDetailToolbarAction, EfSearchToolbarAction, EfDataCardSort, EfDataCardExportRequest, EfDateRange, EfDatePresetKey } from '@elasticias/screens';
|
|
5
|
-
export { EfDataCardColumn, EfDataCardColumnAlign, EfDataCardColumnMobileRole, EfDataCardColumnType, EfDataCardSort, EfDataCardSortDirection, EfDatePresetKey, EfDateRange, EfDetailToolbarAction, EfSearchToolbarAction } from '@elasticias/screens';
|
|
5
|
+
export { EfBoundedDateRange, EfDataCardColumn, EfDataCardColumnAlign, EfDataCardColumnMobileRole, EfDataCardColumnType, EfDataCardSort, EfDataCardSortDirection, EfDatePresetKey, EfDateRange, EfDetailToolbarAction, EfSearchToolbarAction } from '@elasticias/screens';
|
|
6
6
|
import { Menu } from 'primeng/menu';
|
|
7
7
|
import * as _elasticias_core from '@elasticias/core';
|
|
8
8
|
import { EfBuildPackage, EfModule, EfNavSection, EfNavItem, EfModuleId, EfToast, EfToastAction, EfThemeConfigService } from '@elasticias/core';
|
|
@@ -1600,6 +1600,7 @@ declare class EfAppShellComponent {
|
|
|
1600
1600
|
readonly viewport: _angular_core.Signal<_elasticias_core.EfViewport>;
|
|
1601
1601
|
readonly isMobile: _angular_core.Signal<boolean>;
|
|
1602
1602
|
readonly showSide: _angular_core.Signal<boolean>;
|
|
1603
|
+
private readonly prefs;
|
|
1603
1604
|
readonly sideCollapsed: _angular_core.WritableSignal<boolean>;
|
|
1604
1605
|
/** Shown in the toggle's tooltip: the button is far from the content, the shortcut is not. */
|
|
1605
1606
|
readonly shortcutHint: string;
|
|
@@ -4487,6 +4488,7 @@ type EfTableDensity = 'compact' | 'default' | 'comfortable';
|
|
|
4487
4488
|
*/
|
|
4488
4489
|
declare class EfDataCardComponent<TRow = any> implements AfterContentInit {
|
|
4489
4490
|
private readonly viewport;
|
|
4491
|
+
private readonly prefs;
|
|
4490
4492
|
private readonly configuredMobileLayout;
|
|
4491
4493
|
readonly isMobile: _angular_core.Signal<boolean>;
|
|
4492
4494
|
/** Per-screen override of the app-wide default. */
|
|
@@ -5692,7 +5694,9 @@ type EfDateFieldValue = Date | [Date, Date] | null;
|
|
|
5692
5694
|
* Built-in presets (computed from `today` at open time):
|
|
5693
5695
|
* `today`, `this_week`, `this_month`, `last_30_days`, `last_90_days`,
|
|
5694
5696
|
* `this_quarter`, `this_year`. Override with `[presets]="customList"`
|
|
5695
|
-
* if you need a different set.
|
|
5697
|
+
* if you need a different set. `all_time` (no bounds, emitted as null
|
|
5698
|
+
* start and end) is also recognised, and offered first in the default
|
|
5699
|
+
* list with `allowAllTime`.
|
|
5696
5700
|
*/
|
|
5697
5701
|
declare class EfDatepickerAdvancedComponent extends AbstractEfFormControl implements ControlValueAccessor, AfterViewInit {
|
|
5698
5702
|
private readonly host;
|
|
@@ -5739,6 +5743,15 @@ declare class EfDatepickerAdvancedComponent extends AbstractEfFormControl implem
|
|
|
5739
5743
|
readonly end: _angular_core.InputSignal<Date>;
|
|
5740
5744
|
/** Show a `'Personnalisé…'` row that opens the calendar view. */
|
|
5741
5745
|
readonly allowCustomRange: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
5746
|
+
/**
|
|
5747
|
+
* Offer an `all_time` row ("Toute la période") at the top of the
|
|
5748
|
+
* default preset list. Picking it emits `start: null, end: null`.
|
|
5749
|
+
* Off by default because a report screen needs a bounded period;
|
|
5750
|
+
* list screens whose search treats null dates as "no filter" turn
|
|
5751
|
+
* it on so the user can get back to the unfiltered list. Ignored
|
|
5752
|
+
* when `[presets]` is supplied.
|
|
5753
|
+
*/
|
|
5754
|
+
readonly allowAllTime: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
5742
5755
|
/** Component behaviour: smart-bar filter vs. form field. */
|
|
5743
5756
|
readonly mode: _angular_core.InputSignal<"filter" | "field">;
|
|
5744
5757
|
/** Field mode only — pick a single date or a `[start, end]` range. */
|
|
@@ -5915,6 +5928,7 @@ declare class EfDatepickerAdvancedComponent extends AbstractEfFormControl implem
|
|
|
5915
5928
|
/** Assemble an EfDateRange — exposes `labelKey` (for the trigger
|
|
5916
5929
|
* to render via `| translate`) and a literal `label` fallback. */
|
|
5917
5930
|
private buildRange;
|
|
5931
|
+
private static readonly BUILT_IN_KEYS;
|
|
5918
5932
|
private builtInRange;
|
|
5919
5933
|
private builtInHint;
|
|
5920
5934
|
/** 6 weeks × 7 days. Each cell carries its date + flags. */
|
|
@@ -5938,7 +5952,7 @@ declare class EfDatepickerAdvancedComponent extends AbstractEfFormControl implem
|
|
|
5938
5952
|
}) => number;
|
|
5939
5953
|
trackByDow: (_: number, label: string) => string;
|
|
5940
5954
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfDatepickerAdvancedComponent, never>;
|
|
5941
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfDatepickerAdvancedComponent, "ef-datepicker-advanced", never, { "triggerLabelKey": { "alias": "triggerLabelKey"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "activePreset": { "alias": "activePreset"; "required": false; "isSignal": true; }; "start": { "alias": "start"; "required": false; "isSignal": true; }; "end": { "alias": "end"; "required": false; "isSignal": true; }; "allowCustomRange": { "alias": "allowCustomRange"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; }, { "rangeChange": "rangeChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
|
|
5955
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfDatepickerAdvancedComponent, "ef-datepicker-advanced", never, { "triggerLabelKey": { "alias": "triggerLabelKey"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "activePreset": { "alias": "activePreset"; "required": false; "isSignal": true; }; "start": { "alias": "start"; "required": false; "isSignal": true; }; "end": { "alias": "end"; "required": false; "isSignal": true; }; "allowCustomRange": { "alias": "allowCustomRange"; "required": false; "isSignal": true; }; "allowAllTime": { "alias": "allowAllTime"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; }, { "rangeChange": "rangeChange"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
|
|
5942
5956
|
}
|
|
5943
5957
|
|
|
5944
5958
|
/**
|