@elasticias/ui 1.0.41 → 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elasticias/ui",
3
- "version": "1.0.41",
3
+ "version": "1.0.42",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.0",
6
6
  "@angular/core": "^21.0.0",
@@ -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;
@@ -841,7 +841,10 @@
841
841
  }
842
842
 
843
843
  .tbl tbody td {
844
- padding: 14px 18px;
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
 
@@ -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';
@@ -5694,7 +5694,9 @@ type EfDateFieldValue = Date | [Date, Date] | null;
5694
5694
  * Built-in presets (computed from `today` at open time):
5695
5695
  * `today`, `this_week`, `this_month`, `last_30_days`, `last_90_days`,
5696
5696
  * `this_quarter`, `this_year`. Override with `[presets]="customList"`
5697
- * 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`.
5698
5700
  */
5699
5701
  declare class EfDatepickerAdvancedComponent extends AbstractEfFormControl implements ControlValueAccessor, AfterViewInit {
5700
5702
  private readonly host;
@@ -5741,6 +5743,15 @@ declare class EfDatepickerAdvancedComponent extends AbstractEfFormControl implem
5741
5743
  readonly end: _angular_core.InputSignal<Date>;
5742
5744
  /** Show a `'Personnalisé…'` row that opens the calendar view. */
5743
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>;
5744
5755
  /** Component behaviour: smart-bar filter vs. form field. */
5745
5756
  readonly mode: _angular_core.InputSignal<"filter" | "field">;
5746
5757
  /** Field mode only — pick a single date or a `[start, end]` range. */
@@ -5917,6 +5928,7 @@ declare class EfDatepickerAdvancedComponent extends AbstractEfFormControl implem
5917
5928
  /** Assemble an EfDateRange — exposes `labelKey` (for the trigger
5918
5929
  * to render via `| translate`) and a literal `label` fallback. */
5919
5930
  private buildRange;
5931
+ private static readonly BUILT_IN_KEYS;
5920
5932
  private builtInRange;
5921
5933
  private builtInHint;
5922
5934
  /** 6 weeks × 7 days. Each cell carries its date + flags. */
@@ -5940,7 +5952,7 @@ declare class EfDatepickerAdvancedComponent extends AbstractEfFormControl implem
5940
5952
  }) => number;
5941
5953
  trackByDow: (_: number, label: string) => string;
5942
5954
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfDatepickerAdvancedComponent, never>;
5943
- 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>;
5944
5956
  }
5945
5957
 
5946
5958
  /**