@club-employes/utopia 4.96.0 → 4.98.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.
Files changed (49) hide show
  1. package/README.md +3 -3
  2. package/dist/components/atoms/Checkbox/Checkbox.d.ts +1 -0
  3. package/dist/components/atoms/Checkbox/index.d.ts +1 -0
  4. package/dist/components/atoms/Checkbox/types.d.ts +1 -0
  5. package/dist/components/atoms/FilterButton/FilterButton.d.ts +13 -0
  6. package/dist/components/atoms/FilterButton/index.d.ts +2 -0
  7. package/dist/components/atoms/FilterButton/types.d.ts +8 -0
  8. package/dist/components/atoms/InputText/index.d.ts +1 -0
  9. package/dist/components/atoms/ProgressBar/index.d.ts +1 -0
  10. package/dist/components/atoms/RadioBox/index.d.ts +1 -0
  11. package/dist/components/atoms/index.d.ts +9 -13
  12. package/dist/components/molecules/DropDown/DropDown.d.ts +1 -1
  13. package/dist/components/molecules/FilterLocation/FilterLocation.d.ts +1 -3
  14. package/dist/components/molecules/FilterLocation/types.d.ts +3 -3
  15. package/dist/components/molecules/FilterSelect/types.d.ts +2 -4
  16. package/dist/components/molecules/InputPhone/InputPhone.d.ts +1 -1
  17. package/dist/components/molecules/Modal/Modal.d.ts +1 -0
  18. package/dist/components/molecules/PriceSummary/PriceSummary.d.ts +9 -0
  19. package/dist/components/molecules/PriceSummary/index.d.ts +2 -0
  20. package/dist/components/molecules/PriceSummary/types.d.ts +9 -0
  21. package/dist/components/molecules/RadioCard/index.d.ts +1 -0
  22. package/dist/components/molecules/index.d.ts +2 -2
  23. package/dist/components/organisms/DropFile/DropFile.d.ts +2 -1
  24. package/dist/components/organisms/FilterGroup/FilterGroup.d.ts +1 -1
  25. package/dist/components/organisms/FilterGroup/types.d.ts +1 -0
  26. package/dist/components/organisms/Table/Table.d.ts +1 -0
  27. package/dist/components/organisms/Table/types.d.ts +29 -2
  28. package/dist/composables/useTablePagination.d.ts +0 -1
  29. package/dist/dark-BaXwRrGN.js +4 -0
  30. package/dist/dark-Cs0vKpZt.js +4 -0
  31. package/dist/icons-list.json +1 -1
  32. package/dist/index.d.ts +2 -0
  33. package/dist/index.js +6876 -6596
  34. package/dist/light-BgwEUqT3.js +4 -0
  35. package/dist/light-DGbVygBu.js +4 -0
  36. package/dist/tokens/club-employes/dark.css +42 -0
  37. package/dist/tokens/club-employes/dark.js +42 -0
  38. package/dist/tokens/club-employes/light.css +42 -0
  39. package/dist/tokens/club-employes/light.js +42 -0
  40. package/dist/tokens/gifteo/dark.css +42 -0
  41. package/dist/tokens/gifteo/dark.js +42 -0
  42. package/dist/tokens/gifteo/light.css +42 -0
  43. package/dist/tokens/gifteo/light.js +42 -0
  44. package/dist/utopia.css +1 -1
  45. package/package.json +1 -1
  46. package/dist/dark-C-1-7iB8.js +0 -4
  47. package/dist/dark-CeTSRV8L.js +0 -4
  48. package/dist/light-AtV3A0SQ.js +0 -4
  49. package/dist/light-CNMWfMek.js +0 -4
package/README.md CHANGED
@@ -274,9 +274,9 @@ Components are mobile-first and responsive by default:
274
274
  ```vue
275
275
  <template>
276
276
  <Button
277
- size="small" <!-- Mobile -->
278
- :size-md="'medium'" <!-- Tablet -->
279
- :size-lg="'large'" <!-- Desktop -->
277
+ size="small" <!-- Mobile -->
278
+ size-md="medium" <!-- Tablet -->
279
+ size-lg="large" <!-- Desktop -->
280
280
  >
281
281
  Responsive Button
282
282
  </Button>
@@ -17,6 +17,7 @@ declare const __VLS_component: DefineComponent<CheckboxProps, {}, {}, {}, {}, Co
17
17
  size: "small" | "medium" | "large";
18
18
  disabled: boolean;
19
19
  modelValue: boolean;
20
+ partial: boolean;
20
21
  focusable: boolean;
21
22
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLLabelElement>;
22
23
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
@@ -1 +1,2 @@
1
1
  export { default as Checkbox } from './Checkbox';
2
+ export type { CheckboxProps } from './types';
@@ -1,5 +1,6 @@
1
1
  export interface CheckboxProps {
2
2
  modelValue?: boolean;
3
+ partial?: boolean;
3
4
  disabled?: boolean;
4
5
  focusable?: boolean;
5
6
  size?: 'small' | 'medium' | 'large';
@@ -0,0 +1,13 @@
1
+ import { FilterButtonProps } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare const _default: DefineComponent<FilterButtonProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
4
+ toggle: (args_0: boolean) => any;
5
+ }, string, PublicProps, Readonly<FilterButtonProps> & Readonly<{
6
+ onToggle?: ((args_0: boolean) => any) | undefined;
7
+ }>, {
8
+ active: boolean;
9
+ count: number;
10
+ opened: boolean;
11
+ fullWidth: boolean;
12
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
13
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as FilterButton } from './FilterButton';
2
+ export type { FilterButtonProps } from './types';
@@ -0,0 +1,8 @@
1
+ export interface FilterButtonProps {
2
+ label?: string;
3
+ count?: number;
4
+ active?: boolean;
5
+ opened?: boolean;
6
+ icon?: string;
7
+ fullWidth?: boolean;
8
+ }
@@ -1 +1,2 @@
1
1
  export { default as InputText } from './InputText';
2
+ export type { InputTextProps } from './types';
@@ -1 +1,2 @@
1
1
  export { default as ProgressBar } from './ProgressBar';
2
+ export type { ProgressBarProps } from './types';
@@ -1 +1,2 @@
1
1
  export { default as RadioBox } from './RadioBox';
2
+ export type { RadioBoxProps } from './types';
@@ -1,18 +1,18 @@
1
1
  export { Button } from './Button';
2
- export { Card } from './Card';
3
- export type { CardProps } from './Card';
4
- export { Checkbox } from './Checkbox';
5
- export { Chip } from './Chip';
6
- export type { ChipProps } from './Chip';
7
- export { Icon } from './Icon';
8
- export { InputText } from './InputText';
9
- export { Logo } from './Logo';
10
- export type { LogoBrand, LogoSize, LogoVariant } from './Logo';
2
+ export { Card, type CardProps } from './Card';
3
+ export { Checkbox, type CheckboxProps } from './Checkbox';
4
+ export { Chip, type ChipProps } from './Chip';
5
+ export { Icon, type IconProps } from './Icon';
6
+ export { InputText, type InputTextProps } from './InputText';
7
+ export { Logo, type LogoBrand, type LogoSize, type LogoVariant } from './Logo';
11
8
  export { Skeleton, SkeletonAvatar, SkeletonText } from './Skeleton';
12
9
  export { Switch } from './Switch';
13
10
  export { Link } from './Link';
14
11
  export { Text } from './Text';
15
12
  export { RangeSlider } from './RangeSlider';
13
+ export { ProgressBar, type ProgressBarProps } from './ProgressBar';
14
+ export { RadioBox, type RadioBoxProps } from './RadioBox';
15
+ export { FilterButton, type FilterButtonProps } from './FilterButton';
16
16
  export type BadgeVariant = 'default' | 'success' | 'warning' | 'danger';
17
17
  export type BadgeSize = 'small' | 'medium';
18
18
  export type ButtonVariant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';
@@ -21,7 +21,3 @@ export type IconName = string;
21
21
  export type IconSize = 'extra-small' | 'small' | 'medium' | 'large';
22
22
  export type IconColor = 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'neutral' | 'current';
23
23
  export type Currency = '€' | '£';
24
- export { ProgressBar } from './ProgressBar';
25
- export type { ProgressBarProps } from './ProgressBar';
26
- export { RadioBox } from './RadioBox';
27
- export type { RadioBoxProps } from './RadioBox';
@@ -1,6 +1,6 @@
1
1
  import { DropDownOption, DropDownProps } from './types';
2
2
  import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions, CreateComponentPublicInstanceWithMixins, GlobalComponents, GlobalDirectives } from 'vue';
3
- import { InputTextProps } from '../../..';
3
+ import { InputTextProps } from '../..';
4
4
  declare const _default: DefineComponent<DropDownProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
5
5
  blur: (event: FocusEvent) => any;
6
6
  change: (value: string | number | boolean | (string | number)[] | undefined) => any;
@@ -1,16 +1,14 @@
1
1
  import { FilterLocationProps, FilterLocationValue } from './types';
2
2
  import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
- import { DropDownOption } from '../DropDown/types';
4
3
  declare const _default: DefineComponent<FilterLocationProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
5
4
  "update:modelValue": (value: FilterLocationValue) => any;
6
5
  }, string, PublicProps, Readonly<FilterLocationProps> & Readonly<{
7
6
  "onUpdate:modelValue"?: ((value: FilterLocationValue) => any) | undefined;
8
7
  }>, {
9
- regionLabel: string;
8
+ departmentsLabel: string;
10
9
  orLabel: string;
11
10
  nearMeLabel: string;
12
11
  geolocDisabledLabel: string;
13
- regions: DropDownOption[];
14
12
  maxDistance: number;
15
13
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
16
14
  export default _default;
@@ -1,6 +1,6 @@
1
1
  import { DropDownOption } from '../DropDown/types';
2
2
  export interface FilterLocationValue {
3
- region?: string;
3
+ departments: string[];
4
4
  location: {
5
5
  active: boolean;
6
6
  distance?: number;
@@ -9,11 +9,11 @@ export interface FilterLocationValue {
9
9
  };
10
10
  }
11
11
  export interface FilterLocationProps {
12
- regionLabel?: string;
12
+ departmentsLabel?: string;
13
13
  orLabel?: string;
14
14
  nearMeLabel?: string;
15
15
  geolocDisabledLabel?: string;
16
16
  modelValue: FilterLocationValue;
17
- regions?: DropDownOption[];
17
+ departments: DropDownOption[];
18
18
  maxDistance?: number;
19
19
  }
@@ -3,11 +3,9 @@ export interface FilterSelectOption {
3
3
  label: string;
4
4
  count?: number;
5
5
  active: boolean;
6
+ partial?: boolean;
6
7
  imageUrl?: string;
7
- children?: {
8
- open: boolean;
9
- value: FilterSelectOption[];
10
- };
8
+ children?: FilterSelectOption[];
11
9
  }
12
10
  export interface FilterSelectProps {
13
11
  modelValue: FilterSelectOption[];
@@ -1,7 +1,7 @@
1
1
  import { DropDownOption, DropDownProps } from '../DropDown/types';
2
2
  import { InputPhoneProps } from './types';
3
3
  import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions, CreateComponentPublicInstanceWithMixins, GlobalComponents, GlobalDirectives } from 'vue';
4
- import { InputTextProps } from '../../..';
4
+ import { InputTextProps } from '../..';
5
5
  declare const _default: DefineComponent<InputPhoneProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
6
6
  blur: () => any;
7
7
  change: (value: string | null) => any;
@@ -7,6 +7,7 @@ declare function __VLS_template(): {
7
7
  attrs: Partial<{}>;
8
8
  slots: {
9
9
  header?(_: {}): any;
10
+ sticky?(_: {}): any;
10
11
  default?(_: {}): any;
11
12
  footer?(_: {}): any;
12
13
  };
@@ -0,0 +1,9 @@
1
+ import { PriceSummaryProps } from './types';
2
+ import { DefineComponent, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
3
+ declare const _default: DefineComponent<PriceSummaryProps, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<PriceSummaryProps> & Readonly<{}>, {
4
+ currency: string;
5
+ totalLabel: string;
6
+ showSavingInfo: boolean;
7
+ savingInfoLabel: string;
8
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
9
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as PriceSummary } from './PriceSummary';
2
+ export type { PriceSummaryProps } from './types';
@@ -0,0 +1,9 @@
1
+ export interface PriceSummaryProps {
2
+ totalLabel: string;
3
+ originalPrice?: number;
4
+ finalPrice: number;
5
+ currency?: string;
6
+ showSavingInfo?: boolean;
7
+ savingInfoLabel?: string;
8
+ savingInfoTooltip?: string;
9
+ }
@@ -1 +1,2 @@
1
1
  export { default as RadioCard } from './RadioCard';
2
+ export type { RadioCardProps } from './types';
@@ -23,5 +23,5 @@ export { Tab, Tabs } from './Tabs';
23
23
  export type { TabProps, TabsProps } from './Tabs/types';
24
24
  export { Tooltip } from './Tooltip';
25
25
  export { FilterLocation, type FilterLocationProps } from './FilterLocation';
26
- export { RadioCard } from './RadioCard';
27
- export type { RadioCardProps } from './RadioCard';
26
+ export { RadioCard, type RadioCardProps } from './RadioCard';
27
+ export { PriceSummary, type PriceSummaryProps } from './PriceSummary';
@@ -1,6 +1,7 @@
1
1
  import { DropFileProps, DropFileVariant } from './types';
2
2
  import { CreateComponentPublicInstanceWithMixins, ComponentOptionsMixin, PublicProps, GlobalComponents, GlobalDirectives, ComponentProvideOptions, DefineComponent } from 'vue';
3
- import { InputTextProps, ButtonProps } from '../../..';
3
+ import { InputTextProps } from '../..';
4
+ import { ButtonProps } from '../../..';
4
5
  type __VLS_Props = DropFileProps & {
5
6
  enableImageEditor?: boolean;
6
7
  editorOptions?: Record<string, unknown>;
@@ -9,5 +9,5 @@ declare const _default: DefineComponent<FilterGroupProps, {}, {}, {}, {}, Compon
9
9
  }>, {
10
10
  label: string;
11
11
  resetFiltersLabel: string;
12
- }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
12
+ }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
13
13
  export default _default;
@@ -15,4 +15,5 @@ export interface FilterGroupProps {
15
15
  filters: Filter[];
16
16
  sort?: Sort;
17
17
  resetFiltersLabel?: string;
18
+ resultsCountLabel?: string;
18
19
  }
@@ -36,6 +36,7 @@ declare const __VLS_component: DefineComponent<__VLS_Props, {}, {}, {}, {}, Comp
36
36
  searchable: boolean;
37
37
  filterable: boolean;
38
38
  editable: boolean;
39
+ lazy: boolean;
39
40
  isCsvDataCheckMode: boolean;
40
41
  filters: DataTableFilterMeta;
41
42
  filterDisplay: "menu" | "row";
@@ -252,14 +252,41 @@ export interface TableProps<T = Record<string, any>> {
252
252
  loading?: boolean;
253
253
  showPaginator?: boolean;
254
254
  rowsPerPageOptions?: number[];
255
+ /**
256
+ * Active la pagination côté serveur (lazy loading).
257
+ * Quand `true`, les données passées en props doivent déjà être les données de la page actuelle.
258
+ * Le composant n'effectuera pas de slice sur les données.
259
+ * @default true (pagination côté serveur par défaut pour usage avec API/backend)
260
+ */
261
+ lazy?: boolean;
255
262
  columns: ColumnType[];
256
263
  activatedColumns?: string[];
257
264
  rows?: number;
258
265
  language?: string;
266
+ /**
267
+ * Nombre total d'enregistrements (requis pour la pagination côté serveur).
268
+ * Utilisé pour calculer le nombre total de pages et afficher les informations de pagination.
269
+ * @default 0
270
+ */
259
271
  totalRecords?: number;
260
- currentPage?: number;
272
+ /**
273
+ * Page actuelle (commence à 1).
274
+ * En mode lazy (par défaut), cette valeur doit être synchronisée avec le backend.
275
+ * @default 1
276
+ */
277
+ currentPage: number;
278
+ /**
279
+ * Nombre total de pages (optionnel, calculé automatiquement si non fourni).
280
+ * Si fourni, cette valeur est utilisée au lieu du calcul basé sur totalRecords / pageSize.
281
+ * @default 0 (calculé automatiquement)
282
+ */
261
283
  totalPages?: number;
262
- pageSize?: number;
284
+ /**
285
+ * Nombre d'éléments par page.
286
+ * En mode lazy (par défaut), cette valeur doit être synchronisée avec le backend.
287
+ * @default 10
288
+ */
289
+ pageSize: number;
263
290
  /**
264
291
  * Détermine l'ordre de tri des valeurs nulles.
265
292
  * - `1` : Les valeurs nulles sont placées en premier (comportement ASC)
@@ -4,7 +4,6 @@ export interface UseTablePaginationOptions {
4
4
  pageSize?: number;
5
5
  totalRecords: number;
6
6
  totalPages?: number;
7
- dataLength: number;
8
7
  }
9
8
  export interface UseTablePaginationReturn {
10
9
  internalCurrentPage: Ref<number>;