@club-employes/utopia 4.134.0 → 4.136.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.
@@ -0,0 +1,19 @@
1
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ export interface CalendarDay {
3
+ date: Date;
4
+ isCurrentMonth: boolean;
5
+ }
6
+ type __VLS_Props = {
7
+ weekDays: string[];
8
+ calendarDays: CalendarDay[];
9
+ draftSelectedDate: Date | null;
10
+ minDate?: Date | string;
11
+ maxDate?: Date | string;
12
+ dday?: boolean;
13
+ };
14
+ declare const _default: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
15
+ "select-date": (date: Date) => any;
16
+ }, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
17
+ "onSelect-date"?: ((date: Date) => any) | undefined;
18
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
19
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ type __VLS_Props = {
3
+ currentMonthName: string;
4
+ canGoPrev: boolean;
5
+ };
6
+ declare const _default: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
7
+ next: () => any;
8
+ prev: () => any;
9
+ }, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ onNext?: (() => any) | undefined;
11
+ onPrev?: (() => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
13
+ export default _default;
@@ -1,8 +1,9 @@
1
1
  import { DatePickerProps } from './types';
2
2
  import { DefineComponent, ComputedRef, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare function getDefaultDate(): Date;
3
4
  declare const _default: DefineComponent<DatePickerProps, {
4
5
  minDate: ComputedRef<Date>;
5
- getDefaultDate: () => Date;
6
+ getDefaultDate: typeof getDefaultDate;
6
7
  }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
7
8
  change: (value: string | Date | null) => any;
8
9
  "update:modelValue": (value: string | Date | null) => any;
@@ -15,15 +16,17 @@ declare const _default: DefineComponent<DatePickerProps, {
15
16
  size: "small" | "medium" | "large";
16
17
  disabled: boolean;
17
18
  modelValue: string | Date | null;
18
- placeholder: string;
19
19
  state: "default" | "valid" | "error";
20
20
  readonly: boolean;
21
+ language: "fr" | "en";
21
22
  format: string;
22
23
  clearable: boolean;
23
- enableTime: boolean;
24
- use24HourFormat: boolean;
24
+ teleport: boolean;
25
25
  dday: boolean;
26
+ use24HourFormat: boolean;
26
27
  enableMinutes: boolean;
28
+ enableTime: boolean;
29
+ allowKeyboardInput: boolean;
27
30
  activationType: string;
28
31
  defaultDateOffsetHours: number;
29
32
  }, {}, {}, {}, string, ComponentProvideOptions, false, {
@@ -0,0 +1,13 @@
1
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ type __VLS_Props = {
3
+ formattedDraftDateDisplay: string;
4
+ enableTime: boolean;
5
+ };
6
+ declare const _default: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
7
+ clear: () => any;
8
+ confirm: () => any;
9
+ }, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
10
+ onClear?: (() => any) | undefined;
11
+ onConfirm?: (() => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
13
+ export default _default;
@@ -0,0 +1,22 @@
1
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
2
+ type __VLS_Props = {
3
+ hour: number;
4
+ minute: number;
5
+ selectedPeriod: 'am' | 'pm';
6
+ use24HourFormat: boolean;
7
+ enableMinutes: boolean;
8
+ };
9
+ declare const _default: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
10
+ "increment-hour": () => any;
11
+ "decrement-hour": () => any;
12
+ "increment-minute": () => any;
13
+ "decrement-minute": () => any;
14
+ "toggle-period": () => any;
15
+ }, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
16
+ "onIncrement-hour"?: (() => any) | undefined;
17
+ "onDecrement-hour"?: (() => any) | undefined;
18
+ "onIncrement-minute"?: (() => any) | undefined;
19
+ "onDecrement-minute"?: (() => any) | undefined;
20
+ "onToggle-period"?: (() => any) | undefined;
21
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
22
+ export default _default;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Utilitaires date pour DatePicker : parsing, formatage, masque DD/MM/YYYY.
3
+ */
4
+ /**
5
+ * Parse une chaîne ou Date. Les chaînes au format DD/MM/YYYY sont toujours interprétées
6
+ * en jour/mois/année (pas en MM/DD comme new Date() selon la locale).
7
+ */
8
+ export declare function parseDate(value: string | Date | null): Date | null;
9
+ /** Format date pour la saisie clavier (DD/MM/YYYY). */
10
+ export declare function formatForInput(date: Date | null): string;
11
+ /** Masque DD/MM/YYYY : uniquement chiffres (max 8), insertion auto des /. */
12
+ export declare function applyDateMask(raw: string): string;
13
+ /**
14
+ * Calcule la position du curseur après application du masque, en préservant
15
+ * la position "logique" (nombre de chiffres avant le curseur).
16
+ */
17
+ export declare function getCursorPositionAfterMask(oldValue: string, oldStart: number, oldEnd: number, newValue: string): {
18
+ start: number;
19
+ end: number;
20
+ };
21
+ export declare function isSameDay(d1: Date, d2: Date): boolean;
22
+ export declare function formatDateDisplay(date: Date, options: {
23
+ enableTime?: boolean;
24
+ use24HourFormat?: boolean;
25
+ }): string;
26
+ /** Jours du calendrier pour un mois donné (grille 6×7, jours précédant/suivant inclus). */
27
+ export interface CalendarDay {
28
+ date: Date;
29
+ isCurrentMonth: boolean;
30
+ }
31
+ export declare function buildCalendarDays(year: number, month: number): CalendarDay[];
32
+ export interface MinMaxTimeOptions {
33
+ dday?: boolean;
34
+ minDate?: Date | string;
35
+ maxDate?: Date | string;
36
+ }
37
+ /** Contraintes min/max d'heure pour une date donnée (dday, minDate, maxDate). */
38
+ export declare function getMinMaxTimeForDate(date: Date, options: MinMaxTimeOptions): {
39
+ minTime: Date | null;
40
+ maxTime: Date | null;
41
+ };
@@ -9,6 +9,8 @@ export interface DatePickerProps {
9
9
  message?: string;
10
10
  size?: 'small' | 'medium' | 'large';
11
11
  format?: string;
12
+ /** Autoriser la saisie au clavier dans l'input (format selon format, contrôle de saisie) */
13
+ allowKeyboardInput?: boolean;
12
14
  minDate?: Date | string;
13
15
  maxDate?: Date | string;
14
16
  enableTime?: boolean;
@@ -17,4 +19,8 @@ export interface DatePickerProps {
17
19
  enableMinutes?: boolean;
18
20
  activationType?: string;
19
21
  defaultDateOffsetHours?: number;
22
+ /** Téléporter le calendrier dans body (à utiliser dans un modal/overlay pour éviter overflow ou z-index) */
23
+ teleport?: boolean;
24
+ language?: 'fr' | 'en';
25
+ minuteStep?: number;
20
26
  }
@@ -1,5 +1,5 @@
1
1
  export interface DropDownOption {
2
- value: string | number | boolean;
2
+ value: string | number | boolean | null;
3
3
  label: string;
4
4
  secondaryLabel?: string;
5
5
  disabled?: boolean;
@@ -233,6 +233,7 @@ declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, Comp
233
233
  modelValue: File | File[] | null;
234
234
  id: string;
235
235
  multiple: boolean;
236
+ editorOptions: Record<string, unknown>;
236
237
  accept: string[];
237
238
  maxSize: number;
238
239
  maxFiles: number;
@@ -246,7 +247,6 @@ declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, Comp
246
247
  spinnerProps: Record<string, unknown>;
247
248
  allowAnyFileType: boolean;
248
249
  enableImageEditor: boolean;
249
- editorOptions: Record<string, unknown>;
250
250
  }, {}, {}, {}, string, ComponentProvideOptions, false, {
251
251
  fileNameInputRef: CreateComponentPublicInstanceWithMixins<Readonly< InputTextProps> & Readonly<{
252
252
  onInput?: ((event: Event) => any) | undefined;
@@ -0,0 +1,23 @@
1
+ import { ImageEditorProps, ImageEditorOptions } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare const _default: DefineComponent<ImageEditorProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
4
+ cancel: () => any;
5
+ close: () => any;
6
+ "update:open": (value: boolean) => any;
7
+ save: (dataURL: string) => any;
8
+ }, string, PublicProps, Readonly<ImageEditorProps> & Readonly<{
9
+ onCancel?: (() => any) | undefined;
10
+ onClose?: (() => any) | undefined;
11
+ "onUpdate:open"?: ((value: boolean) => any) | undefined;
12
+ onSave?: ((dataURL: string) => any) | undefined;
13
+ }>, {
14
+ title: string;
15
+ open: boolean;
16
+ imageSrc: string | File | null;
17
+ editorOptions: Partial< ImageEditorOptions>;
18
+ cancelText: string;
19
+ saveText: string;
20
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {
21
+ editorContainerRef: HTMLDivElement;
22
+ }, any>;
23
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as ImageEditor } from './ImageEditor';
2
+ export type { ImageEditorProps, ImageEditorEmits } from './types';
@@ -0,0 +1,47 @@
1
+ export type ImageEditorMenuType = 'crop' | 'flip' | 'rotate' | 'draw' | 'shape' | 'icon' | 'text' | 'mask' | 'filter';
2
+ export type ImageEditorMenuBarPosition = 'top' | 'bottom';
3
+ export type ImageEditorTheme = Record<string, string>;
4
+ export type ImageEditorUISize = Record<string, string | number>;
5
+ export interface ImageEditorLoadImage {
6
+ path: string;
7
+ name: string;
8
+ }
9
+ export interface ImageEditorIncludeUI {
10
+ loadImage?: ImageEditorLoadImage;
11
+ theme?: ImageEditorTheme;
12
+ menu?: ImageEditorMenuType[];
13
+ initMenu?: ImageEditorMenuType;
14
+ uiSize?: ImageEditorUISize;
15
+ menuBarPosition?: ImageEditorMenuBarPosition;
16
+ }
17
+ export type ImageEditorSelectionStyle = Record<string, unknown>;
18
+ export type ImageEditorFreeDrawing = Record<string, unknown>;
19
+ export type ImageEditorText = Record<string, unknown>;
20
+ export type ImageEditorFilters = Record<string, unknown>;
21
+ export interface ImageEditorOptions {
22
+ includeUI?: ImageEditorIncludeUI;
23
+ cssMaxWidth?: number;
24
+ cssMaxHeight?: number;
25
+ selectionStyle?: ImageEditorSelectionStyle;
26
+ freeDrawing?: ImageEditorFreeDrawing;
27
+ text?: ImageEditorText;
28
+ filters?: ImageEditorFilters;
29
+ usageStatistics?: boolean;
30
+ }
31
+ /**
32
+ * Props du composant ImageEditor
33
+ */
34
+ export interface ImageEditorProps {
35
+ open?: boolean;
36
+ imageSrc?: string | File | null;
37
+ editorOptions?: Partial<ImageEditorOptions>;
38
+ title?: string;
39
+ cancelText?: string;
40
+ saveText?: string;
41
+ }
42
+ export interface ImageEditorEmits {
43
+ (e: 'update:open', value: boolean): void;
44
+ (e: 'save', dataURL: string): void;
45
+ (e: 'cancel'): void;
46
+ (e: 'close'): void;
47
+ }
@@ -6,6 +6,9 @@ declare function __VLS_template(): {
6
6
  attrs: Partial<{}>;
7
7
  slots: {
8
8
  empty?(_: {}): any;
9
+ 'header-tooltip'?(_: {
10
+ columnConfig: ColumnType;
11
+ }): any;
9
12
  'custom-cell'?(_: {
10
13
  data: any;
11
14
  columnConfig: any;
@@ -0,0 +1,15 @@
1
+ import { ColumnType } from '../../types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ type __VLS_Props = {
4
+ column: ColumnType;
5
+ modelValue?: [number, number] | null;
6
+ language?: 'fr' | 'en';
7
+ };
8
+ declare const _default: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
9
+ "update:modelValue": (val: [number, number]) => any;
10
+ }, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ "onUpdate:modelValue"?: ((val: [number, number]) => any) | undefined;
12
+ }>, {
13
+ modelValue: [number, number] | null;
14
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
15
+ export default _default;
@@ -0,0 +1,13 @@
1
+ import { ColumnType } from '../../types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ type __VLS_Props = {
4
+ column: ColumnType;
5
+ modelValue: string | null;
6
+ filters?: Record<string, any>;
7
+ };
8
+ declare const _default: DefineComponent<__VLS_Props, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {} & {
9
+ "update:modelValue": (value: string | null) => any;
10
+ }, string, PublicProps, Readonly<__VLS_Props> & Readonly<{
11
+ "onUpdate:modelValue"?: ((value: string | null) => any) | undefined;
12
+ }>, {}, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
13
+ export default _default;
@@ -11,7 +11,9 @@ export declare enum CellFilterType {
11
11
  DATE_RANGE = "dateRange",
12
12
  SELECT = "select",
13
13
  EMAIL = "email",
14
- NUMBER = "number"
14
+ NUMBER = "number",
15
+ BUDGET = "budget",
16
+ HOUR = "hour"
15
17
  }
16
18
  export declare enum CellContentType {
17
19
  TEXT_IMAGE = "textImage",
@@ -25,7 +27,8 @@ export declare enum CellContentType {
25
27
  TOGGLE = "toggle",
26
28
  PROGRESS_BAR = "progressBar",
27
29
  ACTIONS = "actions",
28
- CUSTOM = "custom"
30
+ CUSTOM = "custom",
31
+ BUDGET = "budget"
29
32
  }
30
33
  export type CellContent = TextImageContentType | DateContentType | DateRangeContentType | PriceContentType | TagContentType | DropdownContentType | ProgressBarContentType | ActionsContentType | ToggleContentType;
31
34
  export interface ColumnType {
@@ -79,6 +82,7 @@ export interface ColumnType {
79
82
  minWidth?: string;
80
83
  /** Alignement du contenu dans les cellules */
81
84
  align?: 'left' | 'center' | 'right';
85
+ hasHeaderTooltip?: boolean;
82
86
  /**
83
87
  * Colonne "gelée" (fixe lors du défilement horizontal).
84
88
  * ⚠️ **IMPORTANT** : Pour que cette propriété fonctionne, la prop `scrollable` du tableau doit être `true`.
@@ -334,7 +338,21 @@ export interface TableProps<T = Record<string, any>> {
334
338
  editable?: boolean;
335
339
  editMode?: 'cell' | 'row';
336
340
  editingRows?: object | undefined;
341
+ /**
342
+ * Classe CSS appliquée à chaque ligne en fonction de ses données.
343
+ * Utilisez `'utopia-table-row-error'` pour une ligne en fond rouge (ex: ligne erronée).
344
+ * @example
345
+ * ```vue
346
+ * <Table
347
+ * :rowClass="(data) => data.errors?.length ? 'utopia-table-row-error' : ''"
348
+ * :rowStyle="(data) => data.priority === 'high' ? { fontWeight: 'bold' } : {}"
349
+ * />
350
+ * ```
351
+ */
337
352
  rowClass?: (data: TableRowData<T>) => string | object;
353
+ /**
354
+ * Style inline appliqué à chaque ligne en fonction de ses données.
355
+ */
338
356
  rowStyle?: (data: TableRowData<T>) => object | object[];
339
357
  /**
340
358
  * Active le défilement vertical/horizontal du tableau.
@@ -435,11 +453,19 @@ export interface TextImageContentType {
435
453
  export interface TagContentType {
436
454
  key: string;
437
455
  size?: 'extra-small' | 'small' | 'medium' | 'large';
438
- variant?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
439
456
  ghost?: boolean;
440
- options?: DropDownOption[];
457
+ options?: TagOption[];
441
458
  format?: (value: string) => string | number | boolean | null | undefined;
442
459
  }
460
+ export interface TagOption {
461
+ value: string | number | boolean | null;
462
+ label: string;
463
+ disabled?: boolean;
464
+ color?: string;
465
+ backgroundColor?: string;
466
+ borderColor?: string;
467
+ textColor?: string;
468
+ }
443
469
  export interface PriceContentType {
444
470
  key: string;
445
471
  price?: number;
@@ -520,6 +546,7 @@ export interface ActionContentType {
520
546
  disabled?: boolean;
521
547
  loading?: boolean;
522
548
  actionName?: string;
549
+ label?: string;
523
550
  }
524
551
  export interface ToggleContentType {
525
552
  key: string;
@@ -21,3 +21,5 @@ export { Transaction } from './Transaction';
21
21
  export type { TransactionProps } from './Transaction';
22
22
  export { MenuSection } from './MenuSection';
23
23
  export type { MenuSectionItem } from './MenuSection/types';
24
+ export { ImageEditor } from './ImageEditor';
25
+ export type { ImageEditorProps, ImageEditorEmits } from './ImageEditor';
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-02-04T18:15:13.196Z",
2
+ "generated": "2026-02-05T10:13:33.317Z",
3
3
  "count": 1239,
4
4
  "icons": [
5
5
  "Accessibility",