kelt-ui-kit-react 2.1.7 → 2.1.9

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 (50) hide show
  1. package/dist/badge/Badge.d.ts +2 -1
  2. package/dist/damier/damierCell/damierCell.interface.d.ts +3 -0
  3. package/dist/damier/damierEditor/DamierEditor.d.ts +33 -0
  4. package/dist/damier/damierEditor/damierEditorCell/DamierEditorCell.d.ts +16 -0
  5. package/dist/damier/damierEditor/damierEditorToolbar/DamierEditorToolbar.d.ts +10 -0
  6. package/dist/damier/damierEditor/damierEditorTree/DamierEditorTree.d.ts +13 -0
  7. package/dist/damier/damierEditor/damierEditorTree/damierEditorTreeNode/DamierEditorTreeNode.d.ts +11 -0
  8. package/dist/damier/damierEditor/damierEditorTree/damierTreeNode.interface.d.ts +5 -0
  9. package/dist/damier/damierEditor/maybePromise.interface.d.ts +1 -0
  10. package/dist/damier/damierPage/damierPage.interface.d.ts +8 -0
  11. package/dist/damier/utils/buildDamierTree.d.ts +3 -0
  12. package/dist/damier/utils/createDefaultDamierPage.d.ts +2 -0
  13. package/dist/damier/utils/damierDefaultSize.d.ts +1 -0
  14. package/dist/damier/utils/findDamierTreePath.d.ts +2 -0
  15. package/dist/damier/utils/getFirstFreePosition.d.ts +2 -0
  16. package/dist/damier/utils/moveDamierCell.d.ts +2 -0
  17. package/dist/form/form.interface.d.ts +2 -0
  18. package/dist/form/getFieldError.d.ts +2 -0
  19. package/dist/index.js +889 -858
  20. package/dist/style.css +1 -1
  21. package/package.json +1 -1
  22. package/src/badge/Badge.tsx +3 -0
  23. package/src/badge/Badge.view.tsx +1 -0
  24. package/src/damier/Damier.tsx +1 -1
  25. package/src/damier/Damier.view.tsx +46 -0
  26. package/src/damier/damierCell/DamierCell.tsx +1 -1
  27. package/src/damier/damierCell/damierCell.interface.tsx +3 -0
  28. package/src/damier/damierEditor/DamierEditor.tsx +346 -0
  29. package/src/damier/damierEditor/damierEditor.css +255 -0
  30. package/src/damier/damierEditor/damierEditorCell/DamierEditorCell.tsx +91 -0
  31. package/src/damier/damierEditor/damierEditorToolbar/DamierEditorToolbar.tsx +71 -0
  32. package/src/damier/damierEditor/damierEditorTree/DamierEditorTree.tsx +134 -0
  33. package/src/damier/damierEditor/damierEditorTree/damierEditorTreeNode/DamierEditorTreeNode.tsx +78 -0
  34. package/src/damier/damierEditor/damierEditorTree/damierTreeNode.interface.ts +6 -0
  35. package/src/damier/damierEditor/maybePromise.interface.ts +1 -0
  36. package/src/damier/damierPage/damierPage.interface.tsx +9 -0
  37. package/src/damier/utils/buildDamierTree.ts +31 -0
  38. package/src/damier/utils/createDefaultDamierPage.ts +10 -0
  39. package/src/damier/utils/damierDefaultSize.ts +1 -0
  40. package/src/damier/utils/findDamierTreePath.ts +14 -0
  41. package/src/damier/utils/getFirstFreePosition.ts +12 -0
  42. package/src/damier/utils/moveDamierCell.ts +13 -0
  43. package/src/dataTable/DataTable.tsx +2 -2
  44. package/src/docs/catalog.ts +1 -1
  45. package/src/form/Form.tsx +68 -8
  46. package/src/form/form.css +9 -0
  47. package/src/form/form.interface.tsx +2 -0
  48. package/src/form/getFieldError.ts +14 -0
  49. package/src/select/select.css +11 -1
  50. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,14 @@
1
+ import { DamierTreeNodeInterface } from "../damierEditor/damierEditorTree/damierTreeNode.interface";
2
+
3
+ // Ids des pages ancêtres (incluse) menant à `pageId`, vide si absente de l'arbre
4
+ export const findDamierTreePath = (
5
+ nodes: DamierTreeNodeInterface[],
6
+ pageId: number,
7
+ ): number[] => {
8
+ for (const node of nodes) {
9
+ if (node.page.id === pageId) return [node.page.id];
10
+ const path = findDamierTreePath(node.children, pageId);
11
+ if (path.length) return [node.page.id, ...path];
12
+ }
13
+ return [];
14
+ };
@@ -0,0 +1,12 @@
1
+ import { DamierPageInterface } from "../damierPage/damierPage.interface";
2
+
3
+ // Première position libre (base 1) de la page, undefined si la page est pleine
4
+ export const getFirstFreePosition = (
5
+ page: DamierPageInterface,
6
+ ): number | undefined => {
7
+ const taken = new Set(page.cells.map((cell) => cell.position));
8
+ for (let position = 1; position <= page.cols * page.rows; position++) {
9
+ if (!taken.has(position)) return position;
10
+ }
11
+ return undefined;
12
+ };
@@ -0,0 +1,13 @@
1
+ import { DamierCellInterface } from "../damierCell/damierCell.interface";
2
+
3
+ // Déplace la case de `from` vers `to` ; si `to` est occupée, les deux cases sont échangées.
4
+ export const moveDamierCell = (
5
+ cells: DamierCellInterface[],
6
+ from: number,
7
+ to: number,
8
+ ): DamierCellInterface[] =>
9
+ cells.map((cell) => {
10
+ if (cell.position === from) return { ...cell, position: to };
11
+ if (cell.position === to) return { ...cell, position: from };
12
+ return cell;
13
+ });
@@ -521,9 +521,9 @@ export function DataTable<T>(props: DataTableProps<T>) {
521
521
  {name && <h2 className="mb-2">{name}</h2>}
522
522
  {element}
523
523
  <DataTableFilters currentFilters={tableState.filters} setCurrentFilters={tableState.setFilters} />
524
- {showMobileCardView && columns.some((column) => column.filterable || column.sortable) && (
524
+ {showMobileCardView && columns.some((column) => column.filterable) && (
525
525
  <div className="data-table-mobile-controls">
526
- {columns.filter((column) => column.filterable || column.sortable).map((column, idx) => (
526
+ {columns.filter((column) => column.filterable).map((column, idx) => (
527
527
  <div key={column.id}>
528
528
  <table><thead><tr><DataTableColumn column={column} idx={idx}
529
529
  isFilterVisible={tableState.visibleFilters.has(column.name ?? column.id)}
@@ -23,7 +23,7 @@ export const catalog: Record<string, { category: Category; description: string;
23
23
  "/expands": { category: "Affichage", icon: "arrows-expand", description: "Deplier des sections et organiser des contenus denses." },
24
24
  "/grid": { category: "Affichage", icon: "grid-3x3", description: "Construire une mise en page avec des colonnes responsives." },
25
25
  "/card": { category: "Affichage", icon: "card-heading", description: "Regrouper contenu, informations et actions dans une carte." },
26
- "/damier": { category: "Affichage", icon: "grid", description: "Presenter des elements dans une grille de cellules." },
26
+ "/damier": { category: "Affichage", icon: "grid", description: "Presenter des elements dans une grille de cellules, et l'editer (pages, cases, glisser-deposer)." },
27
27
  "/carousel": { category: "Affichage", icon: "images", description: "Parcourir une collection de contenus." },
28
28
  "/badge": { category: "Affichage", icon: "patch-check", description: "Mettre en valeur un statut ou une information courte." },
29
29
  "/data-table": { category: "Affichage", icon: "table", description: "Afficher des donnees, selections, colonnes et actions." },
package/src/form/Form.tsx CHANGED
@@ -23,6 +23,7 @@ import { Row } from "../grid/row/Row";
23
23
  import { GridBreakpoints, GridResponsive } from "../grid/grid.interface";
24
24
  import { TypeInputEnum } from "./form.enum";
25
25
  import { AddressSearch } from "../addressSearch/AddressSearch";
26
+ import { getFieldError } from "./getFieldError";
26
27
 
27
28
  const euroFormatter = new Intl.NumberFormat("fr-FR", {
28
29
  style: "currency",
@@ -107,8 +108,34 @@ export const DynamicForm = forwardRef(
107
108
  return initialValues;
108
109
  });
109
110
 
111
+ const [errors, setErrors] = useState<Record<string, string | undefined>>(
112
+ {}
113
+ );
114
+
110
115
  const inputRefs = useRef<{ [key: string]: HTMLInputElement | null }>({});
111
116
 
117
+ /** Revalide le champ pendant la saisie uniquement s'il est déjà en erreur */
118
+ const revalidateField = useCallback(
119
+ (field: FormInterface, value: unknown) => {
120
+ setErrors((prevErrors) =>
121
+ prevErrors[field.name]
122
+ ? { ...prevErrors, [field.name]: getFieldError(field, value) }
123
+ : prevErrors
124
+ );
125
+ },
126
+ []
127
+ );
128
+
129
+ const validateField = useCallback(
130
+ (field: FormInterface, value: unknown) => {
131
+ setErrors((prevErrors) => ({
132
+ ...prevErrors,
133
+ [field.name]: getFieldError(field, value),
134
+ }));
135
+ },
136
+ []
137
+ );
138
+
112
139
  /** Gestion des <input> */
113
140
  const handleChangeInput = useCallback(
114
141
  (
@@ -116,11 +143,15 @@ export const DynamicForm = forwardRef(
116
143
  forminterface: FormInterface
117
144
  ) => {
118
145
  const { name, type, checked, value } = event.target;
119
- const newValue = type === "checkbox" ? checked : value;
146
+ const newValue =
147
+ type === "checkbox"
148
+ ? checked
149
+ : (forminterface.formatOnChange?.(value) ?? value);
120
150
 
121
151
  if (forminterface.onChange) {
122
152
  forminterface.onChange(newValue, name);
123
153
  }
154
+ revalidateField(forminterface, newValue);
124
155
 
125
156
  setValues((prevValues) => {
126
157
  const updatedValues = { ...prevValues, [name]: newValue };
@@ -130,13 +161,14 @@ export const DynamicForm = forwardRef(
130
161
  return updatedValues;
131
162
  });
132
163
  },
133
- [onChange]
164
+ [onChange, revalidateField]
134
165
  );
135
166
  const handleChangeTextArea = useCallback(
136
167
  (name: string, value: string, forminterface: FormInterface) => {
137
168
  if (forminterface.onChange) {
138
169
  forminterface.onChange(value, name);
139
170
  }
171
+ revalidateField(forminterface, value);
140
172
 
141
173
  setValues((prevValues) => {
142
174
  const updatedValues = { ...prevValues, [name]: value };
@@ -146,7 +178,7 @@ export const DynamicForm = forwardRef(
146
178
  return updatedValues;
147
179
  });
148
180
  },
149
- [onChange]
181
+ [onChange, revalidateField]
150
182
  );
151
183
  /** Gestion des <select> */
152
184
  const handleChangeSelect = useCallback(
@@ -171,14 +203,31 @@ export const DynamicForm = forwardRef(
171
203
  const handleSubmit = useCallback(
172
204
  (e: React.FormEvent<HTMLFormElement>) => {
173
205
  e.preventDefault();
206
+ const submitErrors = formFields.reduce<
207
+ Record<string, string | undefined>
208
+ >((fieldErrors, field) => {
209
+ fieldErrors[field.name] = getFieldError(field, values[field.name]);
210
+ return fieldErrors;
211
+ }, {});
212
+ setErrors(submitErrors);
213
+ if (Object.values(submitErrors).some(Boolean)) {
214
+ const firstErrorField = formFields.find(
215
+ (field) => submitErrors[field.name]
216
+ );
217
+ if (firstErrorField) {
218
+ inputRefs.current[firstErrorField.name]?.focus();
219
+ }
220
+ return;
221
+ }
174
222
  if (onSubmit) {
175
223
  onSubmit(values);
176
224
  }
177
225
  },
178
- [onSubmit, values]
226
+ [onSubmit, values, formFields]
179
227
  );
180
228
 
181
229
  const resetForm = () => {
230
+ setErrors({});
182
231
  setValues(() => {
183
232
  const resetValues: FormValuesInterface<T> =
184
233
  {} as FormValuesInterface<T>;
@@ -320,7 +369,8 @@ export const DynamicForm = forwardRef(
320
369
  >
321
370
  <div
322
371
  className={`d-flex flex-column ${v.className ?? ""
323
- } form-group form-group-${v.type}`}
372
+ } form-group form-group-${v.type} ${errors[v.name] ? "form-group--error" : ""
373
+ }`}
324
374
  >
325
375
  {v.label && <label>{v.label}</label>}
326
376
  {v.icon && <Icon classIcon={v.icon} />}
@@ -351,12 +401,16 @@ export const DynamicForm = forwardRef(
351
401
  required={required}
352
402
  allowManualEntry
353
403
  manualEntryLabel={v.addressSearch?.manualEntryLabel}
354
- onChange={(value) =>
355
- updateValues({ [v.name]: value } as FormValuesInterface<T>)
356
- }
404
+ onChange={(value) => {
405
+ revalidateField(v, value);
406
+ updateValues({ [v.name]: value } as FormValuesInterface<T>);
407
+ }}
357
408
  onSelect={(address) => {
358
409
  const mappedValues =
359
410
  v.addressSearch?.mapAddress?.(address) ?? {};
411
+ if (v.name in mappedValues) {
412
+ revalidateField(v, mappedValues[v.name]);
413
+ }
360
414
  updateValues(mappedValues as FormValuesInterface<T>);
361
415
  v.addressSearch?.onSelect?.(address);
362
416
  }}
@@ -431,9 +485,15 @@ export const DynamicForm = forwardRef(
431
485
  onChange={(e: React.ChangeEvent<HTMLInputElement>) =>
432
486
  handleChangeInput(e, v)
433
487
  }
488
+ onBlur={(e: React.FocusEvent<HTMLInputElement>) =>
489
+ validateField(v, e.target.value)
490
+ }
434
491
  onInvalid={v.onInvalid ? v.onInvalid : undefined}
435
492
  />
436
493
  )}
494
+ {mode !== "read" && errors[v.name] && (
495
+ <small className="form-error">{errors[v.name]}</small>
496
+ )}
437
497
  </div>
438
498
  </FormFieldContainer>
439
499
  );
package/src/form/form.css CHANGED
@@ -60,6 +60,15 @@ form {
60
60
  padding-bottom: 0.15rem;
61
61
  }
62
62
 
63
+ .form-group--error input {
64
+ border-color: var(--danger-color);
65
+ }
66
+
67
+ .form-error {
68
+ color: var(--danger-color);
69
+ font-size: 0.8rem;
70
+ }
71
+
63
72
  .form-group-checkbox {
64
73
  display: flex;
65
74
  flex-direction: row;
@@ -60,6 +60,8 @@ export interface FormInterface {
60
60
  value: string | number | boolean | Date | string[]
61
61
  ) => React.ReactNode;
62
62
  autoComplete?: string;
63
+ /** Transforme la valeur saisie avant de la stocker (ex : formatage d'un téléphone) */
64
+ formatOnChange?: (value: string) => string;
63
65
  step?: string;
64
66
  onChange?: (
65
67
  value: string | number | boolean | Date | string[],
@@ -0,0 +1,14 @@
1
+ import { FormInterface } from "./form.interface";
2
+
3
+ // Retourne le message d'erreur du champ si sa valeur ne respecte pas sa condition (un champ vide est ignoré, c'est le rôle de required)
4
+ export const getFieldError = (
5
+ field: FormInterface,
6
+ value: unknown,
7
+ ): string | undefined => {
8
+ if (!field.condition || typeof value !== "string" || value.trim() === "") {
9
+ return undefined;
10
+ }
11
+ return new RegExp(field.condition.regex).test(value.trim())
12
+ ? undefined
13
+ : field.condition.errorMessage;
14
+ };
@@ -129,8 +129,18 @@
129
129
  }
130
130
  }
131
131
 
132
+ /* Overlay "bare" : la recherche porte son propre fond et fait l'en-tête de la liste */
132
133
  .select-overlay-search {
133
- padding-bottom: 0.5rem;
134
+ padding: 0.5rem;
135
+ background-color: #fff;
136
+ border: 1px solid #b2a1a1;
137
+ border-bottom: none;
138
+ border-radius: 0.25rem 0.25rem 0 0;
139
+
140
+ & + .select-overlay-options {
141
+ border-top-left-radius: 0;
142
+ border-top-right-radius: 0;
143
+ }
134
144
 
135
145
  input {
136
146
  width: 100%;
@@ -1 +1 @@
1
- {"root":["./src/App.menu.tsx","./src/App.routes.tsx","./src/App.tsx","./src/index.ts","./src/main.tsx","./src/_core/hooks/HistoryProvider.tsx","./src/_core/hooks/ImageChecker.tsx","./src/_core/hooks/imageExist.tsx","./src/_core/hooks/isEAN13.tsx","./src/_core/hooks/objectToQueryParams.tsx","./src/_core/hooks/useCurrency.tsx","./src/_core/hooks/useDateutils.ts","./src/_core/hooks/useIsMobile.ts","./src/_core/hooks/useToken.tsx","./src/_core/hooks/useValidate.tsx","./src/_core/hooks/widgetSupport.tsx","./src/_core/type/generiqueType.tsx","./src/action/Action.view.tsx","./src/action/ButtonAction.tsx","./src/addressSearch/AddressSearch.tsx","./src/addressSearch/AddressSearch.view.tsx","./src/badge/Badge.tsx","./src/badge/Badge.view.tsx","./src/button/Button.tsx","./src/button/Button.view.tsx","./src/button/button.interface.tsx","./src/button/buttonActions/ButtonActions.tsx","./src/button/buttonFile/ButtonFile.tsx","./src/button/buttonFile/ButtonFile.view.tsx","./src/button/buttonFilters/ButtonFilters.tsx","./src/button/buttonImport/ButtonImport.tsx","./src/button/buttonImport/ButtonImport.view.tsx","./src/card/Card.tsx","./src/card/Card.view.tsx","./src/card/card.interface.tsx","./src/card/cardAction.interface.tsx","./src/card/cardAction/CardAction.tsx","./src/card/hook/useCardInteractions.tsx","./src/carousel/Carousel.tsx","./src/carousel/Carousel.view.tsx","./src/damier/Damier.tsx","./src/damier/Damier.view.tsx","./src/damier/damierCell/DamierCell.tsx","./src/damier/damierCell/damierCell.interface.tsx","./src/dataTable/DataTable.tsx","./src/dataTable/DataTable.view.tsx","./src/dataTable/dataTable.interface.ts","./src/dataTable/dataTable.utils.ts","./src/dataTable/useDataTableState.tsx","./src/dataTable/dataTableActions/DataTableAction.tsx","./src/dataTable/dataTableActions/DataTableActionMenu.tsx","./src/dataTable/dataTableColumn/DataTableColumn.tsx","./src/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.tsx","./src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.tsx","./src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.tsx","./src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.tsx","./src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.tsx","./src/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.tsx","./src/dataTable/dataTableFilters/DataTableFilters.tsx","./src/dataTable/dataTableLoading/DataTableLoading.tsx","./src/dataTable/dataTableRow/DataTableRow.tsx","./src/datePicker/DatePicker.tsx","./src/datePicker/DatePicker.view.tsx","./src/docs/ComponentDocs.tsx","./src/docs/catalog.ts","./src/docs/documentation.types.ts","./src/docs/virtual.d.ts","./src/expands/Expands.tsx","./src/expands/Expands.view.tsx","./src/expands/expand/expand.interface.tsx","./src/expands/expand/expand.tsx","./src/filAriane/FilAriane.tsx","./src/filAriane/FilAriane.view.tsx","./src/filAriane/filAriane.interface.tsx","./src/form/Form.tsx","./src/form/Form.view.tsx","./src/form/form.enum.ts","./src/form/form.interface.tsx","./src/form/input/Input.tsx","./src/form/inputNumber/InputNumber.tsx","./src/form/inputNumber/InputNumber.view.tsx","./src/form/inputPrice/InputPrice.tsx","./src/form/inputPrice/InputPrice.view.tsx","./src/form/textArea/TextArea.tsx","./src/form/textArea/TextArea.view.tsx","./src/geocoding/CityGeocodingService.ts","./src/geocoding/GeocodingService.ts","./src/geocoding/geocoding.interface.ts","./src/grid/Grid.tsx","./src/grid/Grid.view.tsx","./src/grid/grid.interface.tsx","./src/grid/col/Col.tsx","./src/grid/col/colStyled/ColStyled.tsx","./src/grid/container/Container.tsx","./src/grid/row/Row.tsx","./src/header/Header.tsx","./src/header/Header.view.tsx","./src/header/header.interface.tsx","./src/home/Home.tsx","./src/icon/Icon.tsx","./src/icon/Icons.view.tsx","./src/icon/icon.interface.tsx","./src/icon/iconSize.enum.ts","./src/loader/Loader.tsx","./src/loader/Loader.view.tsx","./src/menus/Menus.tsx","./src/menus/Menus.view.tsx","./src/menus/menu/Menu.tsx","./src/menus/menu/menu.interface.tsx","./src/message/Message.tsx","./src/message/Message.view.tsx","./src/modal/Modal.tsx","./src/modal/Modal.view.tsx","./src/notFound/NotFound.tsx","./src/overlayPanel/OverlayPanel.tsx","./src/overlayPanel/OverlayPanel.view.tsx","./src/overlayPanel/overlay.context.tsx","./src/overlayPanel/overlayPanelStyled/OverlayPanelStyled.tsx","./src/pdfViewer/PdfViewer.tsx","./src/pdfViewer/PdfViewer.view.tsx","./src/quantity/Quantity.tsx","./src/quantity/Quantity.view.tsx","./src/search/Search.tsx","./src/search/Search.view.tsx","./src/select/Select.tsx","./src/select/Select.view.tsx","./src/select/selectOption.interface.ts","./src/sidebar/Sidebar.tsx","./src/sidebar/Sidebar.view.tsx","./src/sidebarData/SidebarData.tsx","./src/sidebarData/SidebarData.view.tsx","./src/tabs/Tabs.tsx","./src/tabs/Tabs.view.tsx","./src/toaster/Toaster.tsx","./src/toaster/Toaster.view.tsx","./src/toaster/store/useToasterStore.tsx"],"version":"5.9.3"}
1
+ {"root":["./src/App.menu.tsx","./src/App.routes.tsx","./src/App.tsx","./src/index.ts","./src/main.tsx","./src/_core/hooks/HistoryProvider.tsx","./src/_core/hooks/ImageChecker.tsx","./src/_core/hooks/imageExist.tsx","./src/_core/hooks/isEAN13.tsx","./src/_core/hooks/objectToQueryParams.tsx","./src/_core/hooks/useCurrency.tsx","./src/_core/hooks/useDateutils.ts","./src/_core/hooks/useIsMobile.ts","./src/_core/hooks/useToken.tsx","./src/_core/hooks/useValidate.tsx","./src/_core/hooks/widgetSupport.tsx","./src/_core/type/generiqueType.tsx","./src/action/Action.view.tsx","./src/action/ButtonAction.tsx","./src/addressSearch/AddressSearch.tsx","./src/addressSearch/AddressSearch.view.tsx","./src/badge/Badge.tsx","./src/badge/Badge.view.tsx","./src/button/Button.tsx","./src/button/Button.view.tsx","./src/button/button.interface.tsx","./src/button/buttonActions/ButtonActions.tsx","./src/button/buttonFile/ButtonFile.tsx","./src/button/buttonFile/ButtonFile.view.tsx","./src/button/buttonFilters/ButtonFilters.tsx","./src/button/buttonImport/ButtonImport.tsx","./src/button/buttonImport/ButtonImport.view.tsx","./src/card/Card.tsx","./src/card/Card.view.tsx","./src/card/card.interface.tsx","./src/card/cardAction.interface.tsx","./src/card/cardAction/CardAction.tsx","./src/card/hook/useCardInteractions.tsx","./src/carousel/Carousel.tsx","./src/carousel/Carousel.view.tsx","./src/damier/Damier.tsx","./src/damier/Damier.view.tsx","./src/damier/damierCell/DamierCell.tsx","./src/damier/damierCell/damierCell.interface.tsx","./src/damier/damierEditor/DamierEditor.tsx","./src/damier/damierEditor/maybePromise.interface.ts","./src/damier/damierEditor/damierEditorCell/DamierEditorCell.tsx","./src/damier/damierEditor/damierEditorToolbar/DamierEditorToolbar.tsx","./src/damier/damierEditor/damierEditorTree/DamierEditorTree.tsx","./src/damier/damierEditor/damierEditorTree/damierTreeNode.interface.ts","./src/damier/damierEditor/damierEditorTree/damierEditorTreeNode/DamierEditorTreeNode.tsx","./src/damier/damierPage/damierPage.interface.tsx","./src/damier/utils/buildDamierTree.ts","./src/damier/utils/createDefaultDamierPage.ts","./src/damier/utils/damierDefaultSize.ts","./src/damier/utils/findDamierTreePath.ts","./src/damier/utils/getFirstFreePosition.ts","./src/damier/utils/moveDamierCell.ts","./src/dataTable/DataTable.tsx","./src/dataTable/DataTable.view.tsx","./src/dataTable/dataTable.interface.ts","./src/dataTable/dataTable.utils.ts","./src/dataTable/useDataTableState.tsx","./src/dataTable/dataTableActions/DataTableAction.tsx","./src/dataTable/dataTableActions/DataTableActionMenu.tsx","./src/dataTable/dataTableColumn/DataTableColumn.tsx","./src/dataTable/dataTableColumn/dataTableColumnFilter/DataTableColumnFilter.tsx","./src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDate/DataTableColumnFilterDate.tsx","./src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterDateRange/dataTableColumnFilterDateRange.tsx","./src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterEnum/DataTableColumnFilterEnum.tsx","./src/dataTable/dataTableColumn/dataTableColumnFilter/dataTableColumnFilterString/DataTableColumnFilterString.tsx","./src/dataTable/dataTableColumn/dataTableColumnSort/DataTableColumnSort.tsx","./src/dataTable/dataTableFilters/DataTableFilters.tsx","./src/dataTable/dataTableLoading/DataTableLoading.tsx","./src/dataTable/dataTableRow/DataTableRow.tsx","./src/datePicker/DatePicker.tsx","./src/datePicker/DatePicker.view.tsx","./src/docs/ComponentDocs.tsx","./src/docs/catalog.ts","./src/docs/documentation.types.ts","./src/docs/virtual.d.ts","./src/expands/Expands.tsx","./src/expands/Expands.view.tsx","./src/expands/expand/expand.interface.tsx","./src/expands/expand/expand.tsx","./src/filAriane/FilAriane.tsx","./src/filAriane/FilAriane.view.tsx","./src/filAriane/filAriane.interface.tsx","./src/form/Form.tsx","./src/form/Form.view.tsx","./src/form/form.enum.ts","./src/form/form.interface.tsx","./src/form/getFieldError.ts","./src/form/input/Input.tsx","./src/form/inputNumber/InputNumber.tsx","./src/form/inputNumber/InputNumber.view.tsx","./src/form/inputPrice/InputPrice.tsx","./src/form/inputPrice/InputPrice.view.tsx","./src/form/textArea/TextArea.tsx","./src/form/textArea/TextArea.view.tsx","./src/geocoding/CityGeocodingService.ts","./src/geocoding/GeocodingService.ts","./src/geocoding/geocoding.interface.ts","./src/grid/Grid.tsx","./src/grid/Grid.view.tsx","./src/grid/grid.interface.tsx","./src/grid/col/Col.tsx","./src/grid/col/colStyled/ColStyled.tsx","./src/grid/container/Container.tsx","./src/grid/row/Row.tsx","./src/header/Header.tsx","./src/header/Header.view.tsx","./src/header/header.interface.tsx","./src/home/Home.tsx","./src/icon/Icon.tsx","./src/icon/Icons.view.tsx","./src/icon/icon.interface.tsx","./src/icon/iconSize.enum.ts","./src/loader/Loader.tsx","./src/loader/Loader.view.tsx","./src/menus/Menus.tsx","./src/menus/Menus.view.tsx","./src/menus/menu/Menu.tsx","./src/menus/menu/menu.interface.tsx","./src/message/Message.tsx","./src/message/Message.view.tsx","./src/modal/Modal.tsx","./src/modal/Modal.view.tsx","./src/notFound/NotFound.tsx","./src/overlayPanel/OverlayPanel.tsx","./src/overlayPanel/OverlayPanel.view.tsx","./src/overlayPanel/overlay.context.tsx","./src/overlayPanel/overlayPanelStyled/OverlayPanelStyled.tsx","./src/pdfViewer/PdfViewer.tsx","./src/pdfViewer/PdfViewer.view.tsx","./src/quantity/Quantity.tsx","./src/quantity/Quantity.view.tsx","./src/search/Search.tsx","./src/search/Search.view.tsx","./src/select/Select.tsx","./src/select/Select.view.tsx","./src/select/selectOption.interface.ts","./src/sidebar/Sidebar.tsx","./src/sidebar/Sidebar.view.tsx","./src/sidebarData/SidebarData.tsx","./src/sidebarData/SidebarData.view.tsx","./src/tabs/Tabs.tsx","./src/tabs/Tabs.view.tsx","./src/toaster/Toaster.tsx","./src/toaster/Toaster.view.tsx","./src/toaster/store/useToasterStore.tsx"],"version":"5.9.3"}