@mittwald/flow-react-components 1.5.0-next.47 → 1.5.0-next.49

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 (136) hide show
  1. package/AGENTS.md +37 -0
  2. package/dist/assets/component-index.json +1 -1
  3. package/dist/assets/doc-properties.json +1 -1
  4. package/dist/js/node_modules/.pnpm/@lezer_lr@1.4.10/node_modules/@lezer/lr/dist/index.mjs.map +1 -1
  5. package/dist/js/packages/components/src/components/Action/models/ActionState.mjs +8 -70
  6. package/dist/js/packages/components/src/components/Action/models/ActionState.mjs.map +1 -1
  7. package/dist/js/packages/components/src/components/Calendar/components/RangeCalendar/helpers/useCalendarDateRangePresets.mjs +1 -1
  8. package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs +1 -1
  9. package/dist/js/packages/components/src/components/List/components/Header/components/ActiveFilters/ActiveFilters.mjs.map +1 -1
  10. package/dist/js/packages/components/src/components/List/model/List.mjs +15 -4
  11. package/dist/js/packages/components/src/components/List/model/List.mjs.map +1 -1
  12. package/dist/js/packages/components/src/components/List/model/ListSettingsStore.mjs.map +1 -1
  13. package/dist/js/packages/components/src/components/List/model/ListViewMode.mjs +35 -23
  14. package/dist/js/packages/components/src/components/List/model/ListViewMode.mjs.map +1 -1
  15. package/dist/js/packages/components/src/components/List/model/ReactTable.mjs +16 -10
  16. package/dist/js/packages/components/src/components/List/model/ReactTable.mjs.map +1 -1
  17. package/dist/js/packages/components/src/components/List/model/filter/DateRangeFilter.mjs +25 -13
  18. package/dist/js/packages/components/src/components/List/model/filter/DateRangeFilter.mjs.map +1 -1
  19. package/dist/js/packages/components/src/components/List/model/filter/Filter.mjs +20 -181
  20. package/dist/js/packages/components/src/components/List/model/filter/Filter.mjs.map +1 -1
  21. package/dist/js/packages/components/src/components/List/model/item/ItemCollection.mjs +11 -7
  22. package/dist/js/packages/components/src/components/List/model/item/ItemCollection.mjs.map +1 -1
  23. package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoader.mjs +10 -13
  24. package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoader.mjs.map +1 -1
  25. package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoaderState.mjs +13 -61
  26. package/dist/js/packages/components/src/components/List/model/loading/IncrementalLoaderState.mjs.map +1 -1
  27. package/dist/js/packages/components/src/components/List/model/search/Search.mjs +19 -47
  28. package/dist/js/packages/components/src/components/List/model/search/Search.mjs.map +1 -1
  29. package/dist/js/packages/components/src/components/List/model/sorting/Sorting.mjs +15 -54
  30. package/dist/js/packages/components/src/components/List/model/sorting/Sorting.mjs.map +1 -1
  31. package/dist/js/packages/components/src/components/List/model/sorting/SortingFunctions.mjs.map +1 -1
  32. package/dist/js/packages/components/src/lib/remote/eventHandlerContext.mjs +3 -1
  33. package/dist/js/packages/components/src/lib/remote/eventHandlerContext.mjs.map +1 -1
  34. package/dist/js/packages/components-base/src/action/ActionState.mjs +87 -0
  35. package/dist/js/packages/components-base/src/action/ActionState.mjs.map +1 -0
  36. package/dist/js/packages/components-base/src/index.mjs +18 -0
  37. package/dist/js/packages/components-base/src/lib/array.mjs +9 -0
  38. package/dist/js/packages/components-base/src/lib/array.mjs.map +1 -0
  39. package/dist/js/packages/components-base/src/list/ListModelContext.mjs +19 -0
  40. package/dist/js/packages/components-base/src/list/ListModelContext.mjs.map +1 -0
  41. package/dist/js/packages/components-base/src/list/filter/ListDateRangeFilter.mjs +29 -0
  42. package/dist/js/packages/components-base/src/list/filter/ListDateRangeFilter.mjs.map +1 -0
  43. package/dist/js/packages/components-base/src/list/filter/ListFilter.mjs +229 -0
  44. package/dist/js/packages/components-base/src/list/filter/ListFilter.mjs.map +1 -0
  45. package/dist/js/packages/components-base/src/list/filter/ListFilterValue.mjs +51 -0
  46. package/dist/js/packages/components-base/src/list/filter/ListFilterValue.mjs.map +1 -0
  47. package/dist/js/packages/components-base/src/list/filter/dateRange.mjs +51 -0
  48. package/dist/js/packages/components-base/src/list/filter/dateRange.mjs.map +1 -0
  49. package/dist/js/packages/components-base/src/list/item/ListItem.mjs +21 -0
  50. package/dist/js/packages/components-base/src/list/item/ListItem.mjs.map +1 -0
  51. package/dist/js/packages/components-base/src/list/item/ListItemCollection.mjs +24 -0
  52. package/dist/js/packages/components-base/src/list/item/ListItemCollection.mjs.map +1 -0
  53. package/dist/js/packages/components-base/src/list/loading/ListLoaderState.mjs +86 -0
  54. package/dist/js/packages/components-base/src/list/loading/ListLoaderState.mjs.map +1 -0
  55. package/dist/js/packages/components-base/src/list/loading/types.mjs +29 -0
  56. package/dist/js/packages/components-base/src/list/loading/types.mjs.map +1 -0
  57. package/dist/js/packages/components-base/src/list/pagination/ListBatchesController.mjs +64 -0
  58. package/dist/js/packages/components-base/src/list/pagination/ListBatchesController.mjs.map +1 -0
  59. package/dist/js/packages/components-base/src/list/search/ListSearch.mjs +62 -0
  60. package/dist/js/packages/components-base/src/list/search/ListSearch.mjs.map +1 -0
  61. package/dist/js/packages/components-base/src/list/sorting/ListSorting.mjs +81 -0
  62. package/dist/js/packages/components-base/src/list/sorting/ListSorting.mjs.map +1 -0
  63. package/dist/js/packages/components-base/src/list/table/ListTable.mjs +80 -0
  64. package/dist/js/packages/components-base/src/list/table/ListTable.mjs.map +1 -0
  65. package/dist/js/packages/components-base/src/list/viewMode/ListViewMode.mjs +53 -0
  66. package/dist/js/packages/components-base/src/list/viewMode/ListViewMode.mjs.map +1 -0
  67. package/dist/types/_bundled/flow-components-base/action/ActionState.d.ts +36 -0
  68. package/dist/types/_bundled/flow-components-base/index.d.ts +23 -0
  69. package/dist/types/_bundled/flow-components-base/lib/array.d.ts +4 -0
  70. package/dist/types/_bundled/flow-components-base/list/ListModelContext.d.ts +30 -0
  71. package/dist/types/_bundled/flow-components-base/list/filter/ListDateRangeFilter.d.ts +18 -0
  72. package/dist/types/_bundled/flow-components-base/list/filter/ListFilter.d.ts +104 -0
  73. package/dist/types/_bundled/flow-components-base/list/filter/ListFilterValue.d.ts +21 -0
  74. package/dist/types/_bundled/flow-components-base/list/filter/dateRange.d.ts +23 -0
  75. package/dist/types/_bundled/flow-components-base/list/filter/types.d.ts +18 -0
  76. package/dist/types/_bundled/flow-components-base/list/item/ListItem.d.ts +10 -0
  77. package/dist/types/_bundled/flow-components-base/list/item/ListItemCollection.d.ts +14 -0
  78. package/dist/types/_bundled/flow-components-base/list/loading/ListLoaderState.d.ts +44 -0
  79. package/dist/types/_bundled/flow-components-base/list/loading/types.d.ts +69 -0
  80. package/dist/types/_bundled/flow-components-base/list/pagination/ListBatchesController.d.ts +32 -0
  81. package/dist/types/_bundled/flow-components-base/list/pagination/types.d.ts +17 -0
  82. package/dist/types/_bundled/flow-components-base/list/search/ListSearch.d.ts +27 -0
  83. package/dist/types/_bundled/flow-components-base/list/search/types.d.ts +5 -0
  84. package/dist/types/_bundled/flow-components-base/list/settings/types.d.ts +52 -0
  85. package/dist/types/_bundled/flow-components-base/list/sorting/ListSorting.d.ts +40 -0
  86. package/dist/types/_bundled/flow-components-base/list/sorting/types.d.ts +14 -0
  87. package/dist/types/_bundled/flow-components-base/list/table/ListTable.d.ts +34 -0
  88. package/dist/types/_bundled/flow-components-base/list/types.d.ts +18 -0
  89. package/dist/types/_bundled/flow-components-base/list/viewMode/ListViewMode.d.ts +25 -0
  90. package/dist/types/_bundled/flow-components-base/list/viewMode/types.d.ts +10 -0
  91. package/dist/types/components/Action/models/ActionState.d.ts +8 -21
  92. package/dist/types/components/List/components/Header/lib.d.ts +1 -2
  93. package/dist/types/components/List/model/List.d.ts +6 -1
  94. package/dist/types/components/List/model/ListSettingsStore.d.ts +2 -4
  95. package/dist/types/components/List/model/ListViewMode.d.ts +17 -10
  96. package/dist/types/components/List/model/ReactTable.d.ts +1 -1
  97. package/dist/types/components/List/model/filter/DateRangeFilter.d.ts +21 -9
  98. package/dist/types/components/List/model/filter/Filter.d.ts +18 -52
  99. package/dist/types/components/List/model/filter/FilterValue.d.ts +10 -11
  100. package/dist/types/components/List/model/filter/types.d.ts +6 -18
  101. package/dist/types/components/List/model/item/Item.d.ts +8 -7
  102. package/dist/types/components/List/model/item/ItemCollection.d.ts +9 -4
  103. package/dist/types/components/List/model/loading/IncrementalLoaderState.d.ts +11 -21
  104. package/dist/types/components/List/model/loading/types.d.ts +5 -26
  105. package/dist/types/components/List/model/pagination/BatchesController.d.ts +1 -15
  106. package/dist/types/components/List/model/pagination/types.d.ts +1 -3
  107. package/dist/types/components/List/model/search/Search.d.ts +16 -19
  108. package/dist/types/components/List/model/search/types.d.ts +6 -8
  109. package/dist/types/components/List/model/sorting/Sorting.d.ts +14 -22
  110. package/dist/types/components/List/model/sorting/SortingFunctions.d.ts +1 -1
  111. package/dist/types/components/List/model/sorting/types.d.ts +1 -13
  112. package/dist/types/components/List/model/types.d.ts +7 -24
  113. package/dist/types/components/List/typedList.d.ts +2 -2
  114. package/dist/types/lib/remote/eventHandlerContext.d.ts +2 -1
  115. package/package.json +11 -10
  116. package/dist/js/packages/components/src/components/List/model/filter/FilterValue.mjs +0 -43
  117. package/dist/js/packages/components/src/components/List/model/filter/FilterValue.mjs.map +0 -1
  118. package/dist/js/packages/components/src/components/List/model/filter/dateRangeFilterFn.mjs +0 -23
  119. package/dist/js/packages/components/src/components/List/model/filter/dateRangeFilterFn.mjs.map +0 -1
  120. package/dist/js/packages/components/src/components/List/model/item/Item.mjs +0 -20
  121. package/dist/js/packages/components/src/components/List/model/item/Item.mjs.map +0 -1
  122. package/dist/js/packages/components/src/components/List/model/pagination/BatchesController.mjs +0 -58
  123. package/dist/js/packages/components/src/components/List/model/pagination/BatchesController.mjs.map +0 -1
  124. package/dist/js/packages/components/src/lib/array/toArray.mjs +0 -8
  125. package/dist/js/packages/components/src/lib/array/toArray.mjs.map +0 -1
  126. package/dist/js/packages/components/src/lib/date/transformDateValueToDateTime.mjs +0 -15
  127. package/dist/js/packages/components/src/lib/date/transformDateValueToDateTime.mjs.map +0 -1
  128. package/dist/js/packages/components/src/lib/promises/sleep.mjs +0 -8
  129. package/dist/js/packages/components/src/lib/promises/sleep.mjs.map +0 -1
  130. package/dist/types/components/CartesianChart/typedCartesianChart.test-types.d.ts +0 -1
  131. package/dist/types/components/List/model/filter/dateRangeFilterFn.d.ts +0 -6
  132. package/dist/types/components/List/typedList.test-types.d.ts +0 -1
  133. package/dist/types/integrations/@mittwald/password-tools-js/passwordCreationFieldExport.test-types.d.ts +0 -1
  134. package/dist/types/lib/array/toArray.d.ts +0 -1
  135. package/dist/types/lib/types/array.d.ts +0 -1
  136. package/dist/types/lib/types/props.test-types.d.ts +0 -1
@@ -1,18 +1,16 @@
1
- import { ComponentType } from 'react';
2
1
  import { SearchFieldProps } from '../../../SearchField';
2
+ import { ListSearchShape } from '../../../../_bundled/flow-components-base/index';
3
+ import { ComponentType } from 'react';
4
+ export type { SearchValue } from '../../../../_bundled/flow-components-base/index';
3
5
  type SupportedSearchFieldProps = Pick<SearchFieldProps, "autoFocus">;
4
6
  interface SearchFieldRenderProps extends SupportedSearchFieldProps {
5
- onChange: (value: SearchValue) => unknown;
6
- value: SearchValue;
7
+ onChange: (value: string | undefined) => unknown;
8
+ value: string | undefined;
7
9
  autoSubmit?: boolean;
8
10
  isDisabled?: boolean;
9
11
  }
10
12
  export type SearchFieldRenderComponent = ComponentType<SearchFieldRenderProps>;
11
- export type SearchValue = string | undefined;
12
- export interface SearchShape<IgnoredT> {
13
+ export interface SearchShape<IgnoredT> extends ListSearchShape {
13
14
  render?: SearchFieldRenderComponent;
14
15
  textFieldProps: SupportedSearchFieldProps;
15
- defaultValue?: string;
16
- autosave?: boolean;
17
16
  }
18
- export {};
@@ -1,23 +1,15 @@
1
- import { default as List } from '../List';
2
- import { SortingDefaultMode, SortingShape } from './types';
3
- import { PropertyName } from '../types';
4
- import { Column, ColumnDef, ColumnSort, SortDirection, SortingFn } from '@tanstack/react-table';
5
- export declare class Sorting<T> {
6
- readonly list: List<T>;
7
- readonly property: PropertyName<T>;
8
- readonly name?: string;
9
- readonly directionName?: string;
10
- readonly direction: SortDirection;
11
- readonly initialEnabled: SortingDefaultMode;
12
- readonly customSortingFn?: SortingFn<T>;
13
- readonly autosave: boolean;
14
- constructor(list: List<T>, shape: SortingShape<T>);
15
- private getInitialEnabled;
16
- updateTableColumnDef(def: ColumnDef<T>): void;
17
- getReactTableColumnSort(): ColumnSort;
18
- isSorted(): boolean;
19
- getTableColumn(): Column<T>;
20
- enable(): void;
21
- clear(): void;
22
- get id(): string;
1
+ import { ListSorting } from '../../../../_bundled/flow-components-base/index';
2
+ import { List } from '../List';
3
+ /**
4
+ * React's sorting: the shared one, plus the list it belongs to.
5
+ *
6
+ * A sorting only translates between the TanStack table and the settings store,
7
+ * and both are frameworkless, so everything it does is `ListSorting` in
8
+ * `@mittwald/flow-components-base`. What is left here is `list` — the shared
9
+ * class calls its list `context` and types it as the model's port, while
10
+ * React's API has always handed out the `List` itself.
11
+ */
12
+ export declare class Sorting<T> extends ListSorting<T> {
13
+ get list(): List<T>;
23
14
  }
15
+ export default Sorting;
@@ -1,4 +1,4 @@
1
- import { SortingFn } from '@tanstack/react-table';
1
+ import { SortingFn } from '@tanstack/table-core';
2
2
  export declare const SortingFunctions: {
3
3
  bigInt: SortingFn<unknown>;
4
4
  alphanumeric: "alphanumeric";
@@ -1,13 +1 @@
1
- import { PropertyName } from '../types';
2
- import { SortDirection, SortingFn as SortingFunction } from '@tanstack/react-table';
3
- export type SortingDefaultMode = boolean | "hidden";
4
- export type SortingFn<T> = SortingFunction<T>;
5
- export interface SortingShape<T> {
6
- property: PropertyName<T>;
7
- name?: string;
8
- directionName?: string;
9
- direction?: SortDirection;
10
- defaultEnabled?: SortingDefaultMode;
11
- customSortingFn?: SortingFn<T>;
12
- autosave?: boolean;
13
- }
1
+ export type { ListSortingShape as SortingShape, SortingDefaultMode, SortingFn, } from '../../../../_bundled/flow-components-base/index';
@@ -6,15 +6,13 @@ import { BatchesControllerShape } from './pagination/types';
6
6
  import { SearchShape } from './search/types';
7
7
  import { SortingShape } from './sorting/types';
8
8
  import { TableShape } from './table/types';
9
- import { ItemType } from '../../../lib/types/array';
10
9
  import { MultipleSelection, SelectionBehavior } from '@react-types/shared';
11
- import { DeepKeys, DeepValue } from '@tanstack/react-table';
10
+ import { customPropertyPrefix, CustomPropertyName, ListSettingsDefaults, PropertyName, PropertyValue, PropertyValueRenderMethod as ListPropertyValueRenderMethod, ListViewModeValue } from '../../../_bundled/flow-components-base/index';
12
11
  import { ReactNode } from 'react';
13
- export declare const customPropertyPrefix: "$";
14
- export type CustomPropertyName = `${typeof customPropertyPrefix}${string}`;
15
- export type PropertyName<T> = DeepKeys<T> | CustomPropertyName;
16
- export type PropertyValue<T, TProp> = TProp extends CustomPropertyName ? T : DeepValue<T, TProp>;
17
- export type PropertyValueRenderMethod<TMatcherValue> = (prop: NonNullable<ItemType<TMatcherValue>>) => ReactNode;
12
+ export { customPropertyPrefix };
13
+ export type { CustomPropertyName, PropertyName, PropertyValue };
14
+ /** React's rendering of a filter value. */
15
+ export type PropertyValueRenderMethod<TMatcherValue> = ListPropertyValueRenderMethod<TMatcherValue, ReactNode>;
18
16
  export type OnListChanged<T, TMeta = unknown> = (list: List<T, TMeta>) => void;
19
17
  export interface ListSupportedComponentProps extends MultipleSelection {
20
18
  /** The ID of the element labelling the list. */
@@ -27,21 +25,7 @@ export interface ListSupportedComponentProps extends MultipleSelection {
27
25
  */
28
26
  selectionBehavior?: SelectionBehavior;
29
27
  }
30
- export interface ListSettingsStorageDefaults {
31
- filters?: {
32
- autosave?: boolean;
33
- manualSave?: boolean;
34
- };
35
- sorting?: {
36
- autosave?: boolean;
37
- };
38
- viewMode?: {
39
- autosave?: boolean;
40
- };
41
- search?: {
42
- autosave?: boolean;
43
- };
44
- }
28
+ export type ListSettingsStorageDefaults = ListSettingsDefaults;
45
29
  export interface ListShape<T, TMeta = unknown> extends ListSupportedComponentProps {
46
30
  /**
47
31
  * The key the lists settings (view mode, search, filters, sorting) are
@@ -91,11 +75,10 @@ export interface ListShape<T, TMeta = unknown> extends ListSupportedComponentPro
91
75
  /** The view rendered when the list contains no items. */
92
76
  emptyView?: ReactNode;
93
77
  }
94
- export type PropertyRecord<T, TValue> = Partial<Record<PropertyName<T>, TValue>>;
95
78
  export interface ListSettingsStorageShape {
96
79
  storageKey: string;
97
80
  }
98
- export type ListViewMode = "table" | "list" | "tiles";
81
+ export type ListViewMode = ListViewModeValue;
99
82
  export type ItemActionFn<T> = (data: T) => void;
100
83
  export type GetItemId<T> = (data: T) => string;
101
84
  export type EmptyViewType = "search" | "list";
@@ -3,7 +3,7 @@ import { ComponentType } from 'react';
3
3
  export declare const TypedList: <T, TMeta = unknown>() => ComponentType<ListProps<T, TMeta>>;
4
4
  export declare const typedList: <T, TMeta = unknown>() => {
5
5
  List: ComponentType<ListProps<T, TMeta>>;
6
- Filter: <const TProp extends import('./model/types').PropertyName<T>, TMatcherValue = import('./model/types').PropertyValue<T, TProp>>(props: Omit<import('./model/filter/types').FilterShape<T, TProp, TMatcherValue>, "type" | "renderItem"> & {
6
+ Filter: <const TProp extends import('../../_bundled/flow-components-base/index').PropertyName<T>, TMatcherValue = import('../../_bundled/flow-components-base/index').PropertyValue<T, TProp>>(props: Omit<import('./model/filter/types').FilterShape<T, TProp, TMatcherValue>, "type" | "renderItem"> & {
7
7
  children?: import('./model/types').PropertyValueRenderMethod<TMatcherValue> | undefined;
8
8
  }) => import('react').ReactNode;
9
9
  Search: ComponentType<Omit<import('./model/search/types').SearchShape<T>, "render" | "textFieldProps"> & {
@@ -12,7 +12,7 @@ export declare const typedList: <T, TMeta = unknown>() => {
12
12
  } & {
13
13
  autoFocus?: boolean | undefined;
14
14
  }>;
15
- Sorting: ComponentType<import('./model/sorting/types').SortingShape<T>>;
15
+ Sorting: ComponentType<import('../../_bundled/flow-components-base/index').ListSortingShape<T>>;
16
16
  Item: ComponentType<Omit<import('./model/item/ItemView').ItemViewShape<T>, "renderFn"> & {
17
17
  children: import('.').RenderItemFn<T>;
18
18
  }>;
@@ -1,10 +1,11 @@
1
+ import { CtxCascadeApi } from 'context';
1
2
  export interface EventHandlerContext {
2
3
  remoteEvent?: {
3
4
  type: string;
4
5
  };
5
6
  [key: string]: unknown;
6
7
  }
7
- export declare const eventHandlerContext: import('context').CtxCascadeApi<EventHandlerContext>;
8
+ export declare const eventHandlerContext: CtxCascadeApi<EventHandlerContext>;
8
9
  export declare const getRemoteEvent: () => {
9
10
  type: string;
10
11
  } | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mittwald/flow-react-components",
3
- "version": "1.5.0-next.47",
3
+ "version": "1.5.0-next.49",
4
4
  "type": "module",
5
5
  "description": "A React implementation of Flow, mittwald’s design system",
6
6
  "homepage": "https://flow.mittwald.de",
@@ -84,9 +84,9 @@
84
84
  "@internationalized/string-compiler": "^3.4.1",
85
85
  "@lezer/common": "^1.5.2",
86
86
  "@lezer/highlight": "^1.2.3",
87
- "@mittwald/flow-icons": "^1.5.0-next.47",
87
+ "@mittwald/flow-icons": "^1.5.0-next.49",
88
88
  "@mittwald/password-tools-js": "^3.0.0",
89
- "@mittwald/react-tunnel": "^1.5.0-next.47",
89
+ "@mittwald/react-tunnel": "^1.5.0-next.49",
90
90
  "@mittwald/react-use-promise": "^4.2.2",
91
91
  "@react-aria/form": "^3.2.1",
92
92
  "@react-aria/i18n": "^3.13.1",
@@ -95,7 +95,7 @@
95
95
  "@react-stately/form": "^3.3.1",
96
96
  "@react-types/shared": "^3.36.1",
97
97
  "@replit/codemirror-indentation-markers": "^6.5.3",
98
- "@tanstack/react-table": "^8.21.3",
98
+ "@tanstack/table-core": "^8.21.3",
99
99
  "@types/invariant": "^2.2.37",
100
100
  "@types/luxon": "^3.7.5",
101
101
  "@types/prop-types": "^15.7.15",
@@ -139,12 +139,13 @@
139
139
  "@internationalized/date": "^3.12.3",
140
140
  "@lezer/generator": "^1.8.0",
141
141
  "@lezer/lr": "^1.4.10",
142
- "@mittwald/flow-core": "1.5.0-next.47",
143
- "@mittwald/flow-design-tokens": "1.5.0-next.47",
144
- "@mittwald/flow-icons-base": "1.5.0-next.47",
142
+ "@mittwald/flow-components-base": "1.5.0-next.49",
143
+ "@mittwald/flow-core": "1.5.0-next.49",
144
+ "@mittwald/flow-design-tokens": "1.5.0-next.49",
145
+ "@mittwald/flow-icons-base": "1.5.0-next.49",
145
146
  "@mittwald/react-use-promise": "^4.2.2",
146
147
  "@mittwald/remote-dom-react": "1.2.2-mittwald.10",
147
- "@mittwald/typescript-config": "1.5.0-next.47",
148
+ "@mittwald/typescript-config": "1.5.0-next.49",
148
149
  "@nx/storybook": "^22.7.6",
149
150
  "@storybook/addon-a11y": "^10.5.10",
150
151
  "@storybook/addon-actions": "^9.0.8",
@@ -198,7 +199,7 @@
198
199
  },
199
200
  "peerDependencies": {
200
201
  "@internationalized/date": "^3.12.2",
201
- "@mittwald/flow-icons-pro": "1.5.0-next.47",
202
+ "@mittwald/flow-icons-pro": "1.5.0-next.49",
202
203
  "@mittwald/react-use-promise": "^4.2.2",
203
204
  "next": "^16.2.3",
204
205
  "react": "^19.2.0",
@@ -222,5 +223,5 @@
222
223
  "browserslist": [
223
224
  "baseline widely available"
224
225
  ],
225
- "gitHead": "4e2913c0bf752feb0df4660e39b6c12bf974f59e"
226
+ "gitHead": "5af9457a3e3dc275a9032ffec18e03fd87dba7d8"
226
227
  }
@@ -1,43 +0,0 @@
1
- "use client"
2
- /* */
3
- import { isShallowEqual } from "remeda";
4
- import { hash } from "object-code";
5
- //#region src/components/List/model/filter/FilterValue.ts
6
- var FilterValue = class FilterValue {
7
- filter;
8
- value;
9
- id;
10
- constructor(filter, value) {
11
- this.filter = filter;
12
- if (typeof value === "string" && value.startsWith("FilterValueId@@")) {
13
- this.value = filter.values.find((v) => v.id === value)?.value;
14
- this.id = value;
15
- } else {
16
- this.value = value;
17
- this.id = `FilterValueId@@${this.filter.property}@@${hash(this.value)}`;
18
- }
19
- }
20
- static create(filter, value) {
21
- if (value instanceof FilterValue) return value;
22
- return new FilterValue(filter, value);
23
- }
24
- equals(otherValue) {
25
- return isShallowEqual(this.value, otherValue.value);
26
- }
27
- get isActive() {
28
- return this.filter.isValueActive(this);
29
- }
30
- render() {
31
- return this.filter.renderItem(this.value);
32
- }
33
- toggle() {
34
- this.filter.toggleValue(this);
35
- }
36
- deactivate() {
37
- this.filter.deactivateValue(this);
38
- }
39
- };
40
- //#endregion
41
- export { FilterValue };
42
-
43
- //# sourceMappingURL=FilterValue.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FilterValue.mjs","names":[],"sources":["../../../../../../../../../src/components/List/model/filter/FilterValue.ts"],"sourcesContent":["import type { Filter } from \"@/components/List/model/filter/Filter\";\nimport { isShallowEqual } from \"remeda\";\nimport { hash } from \"object-code\";\n\nexport class FilterValue {\n public readonly filter: Filter<unknown, string, unknown>;\n public readonly value: unknown;\n public readonly id: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private constructor(filter: Filter<any, any, any>, value: unknown) {\n this.filter = filter;\n\n if (typeof value === \"string\" && value.startsWith(\"FilterValueId@@\")) {\n this.value = filter.values.find((v) => v.id === value)?.value;\n this.id = value;\n } else {\n this.value = value;\n this.id = `FilterValueId@@${this.filter.property}@@${hash(this.value)}`;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static create(filter: Filter<any, any, any>, value: unknown) {\n if (value instanceof FilterValue) {\n return value;\n }\n return new FilterValue(filter, value);\n }\n\n public equals(otherValue: FilterValue) {\n return isShallowEqual(this.value, otherValue.value);\n }\n\n public get isActive() {\n return this.filter.isValueActive(this);\n }\n\n public render() {\n return this.filter.renderItem(this.value as never);\n }\n\n public toggle() {\n this.filter.toggleValue(this);\n }\n\n public deactivate() {\n this.filter.deactivateValue(this);\n }\n}\n"],"mappings":";;;;;AAIA,IAAa,cAAb,MAAa,YAAY;CACvB;CACA;CACA;CAGA,YAAoB,QAA+B,OAAgB;EACjE,KAAK,SAAS;EAEd,IAAI,OAAO,UAAU,YAAY,MAAM,WAAW,iBAAiB,GAAG;GACpE,KAAK,QAAQ,OAAO,OAAO,MAAM,MAAM,EAAE,OAAO,KAAK,CAAC,EAAE;GACxD,KAAK,KAAK;EACZ,OAAO;GACL,KAAK,QAAQ;GACb,KAAK,KAAK,kBAAkB,KAAK,OAAO,SAAS,IAAI,KAAK,KAAK,KAAK;EACtE;CACF;CAGA,OAAc,OAAO,QAA+B,OAAgB;EAClE,IAAI,iBAAiB,aACnB,OAAO;EAET,OAAO,IAAI,YAAY,QAAQ,KAAK;CACtC;CAEA,OAAc,YAAyB;EACrC,OAAO,eAAe,KAAK,OAAO,WAAW,KAAK;CACpD;CAEA,IAAW,WAAW;EACpB,OAAO,KAAK,OAAO,cAAc,IAAI;CACvC;CAEA,SAAgB;EACd,OAAO,KAAK,OAAO,WAAW,KAAK,KAAc;CACnD;CAEA,SAAgB;EACd,KAAK,OAAO,YAAY,IAAI;CAC9B;CAEA,aAAoB;EAClB,KAAK,OAAO,gBAAgB,IAAI;CAClC;AACF"}
@@ -1,23 +0,0 @@
1
- "use client"
2
- /* */
3
- import { transformDateValueToDateTime } from "../../../../lib/date/transformDateValueToDateTime.mjs";
4
- import { DateTime } from "luxon";
5
- import { CalendarDate } from "@internationalized/date";
6
- //#region src/components/List/model/filter/dateRangeFilterFn.ts
7
- function dateRangeFilterFn(row, columnId, range) {
8
- if (!range) return true;
9
- const value = row.getValue(columnId);
10
- let dateValue;
11
- if (value instanceof DateTime) dateValue = value;
12
- else if (value instanceof CalendarDate) dateValue = transformDateValueToDateTime(value);
13
- else if (typeof value === "string") dateValue = DateTime.fromISO(value);
14
- if (!dateValue) return true;
15
- const startDate = range.start ? transformDateValueToDateTime(range.start) : void 0;
16
- const endDate = range.end ? transformDateValueToDateTime(range.end).endOf("day") : void 0;
17
- if (startDate && dateValue < startDate) return false;
18
- return !(endDate && dateValue > endDate);
19
- }
20
- //#endregion
21
- export { dateRangeFilterFn };
22
-
23
- //# sourceMappingURL=dateRangeFilterFn.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dateRangeFilterFn.mjs","names":[],"sources":["../../../../../../../../../src/components/List/model/filter/dateRangeFilterFn.ts"],"sourcesContent":["import { DateTime } from \"luxon\";\nimport { CalendarDate } from \"@internationalized/date\";\nimport type { Row } from \"@tanstack/react-table\";\nimport { transformDateValueToDateTime } from \"@/lib/date/transformDateValueToDateTime\";\n\nexport function dateRangeFilterFn<T>(\n row: Row<T>,\n columnId: string,\n range?: { start?: CalendarDate; end?: CalendarDate },\n): boolean {\n if (!range) {\n return true;\n }\n\n const value = row.getValue(columnId);\n\n let dateValue;\n\n if (value instanceof DateTime) {\n dateValue = value;\n } else if (value instanceof CalendarDate) {\n dateValue = transformDateValueToDateTime(value);\n } else if (typeof value === \"string\") {\n dateValue = DateTime.fromISO(value);\n }\n\n if (!dateValue) {\n return true;\n }\n\n const startDate = range.start\n ? transformDateValueToDateTime(range.start)\n : undefined;\n\n const endDate = range.end\n ? transformDateValueToDateTime(range.end).endOf(\"day\")\n : undefined;\n\n if (startDate && dateValue < startDate) {\n return false;\n }\n\n return !(endDate && dateValue > endDate);\n}\n"],"mappings":";;;;;;AAKA,SAAgB,kBACd,KACA,UACA,OACS;CACT,IAAI,CAAC,OACH,OAAO;CAGT,MAAM,QAAQ,IAAI,SAAS,QAAQ;CAEnC,IAAI;CAEJ,IAAI,iBAAiB,UACnB,YAAY;MACP,IAAI,iBAAiB,cAC1B,YAAY,6BAA6B,KAAK;MACzC,IAAI,OAAO,UAAU,UAC1B,YAAY,SAAS,QAAQ,KAAK;CAGpC,IAAI,CAAC,WACH,OAAO;CAGT,MAAM,YAAY,MAAM,QACpB,6BAA6B,MAAM,KAAK,IACxC,KAAA;CAEJ,MAAM,UAAU,MAAM,MAClB,6BAA6B,MAAM,GAAG,CAAC,CAAC,MAAM,KAAK,IACnD,KAAA;CAEJ,IAAI,aAAa,YAAY,WAC3B,OAAO;CAGT,OAAO,EAAE,WAAW,YAAY;AAClC"}
@@ -1,20 +0,0 @@
1
- "use client"
2
- /* */
3
- //#region src/components/List/model/item/Item.ts
4
- var Item = class Item {
5
- id;
6
- data;
7
- collection;
8
- constructor(collection, id, data) {
9
- this.collection = collection;
10
- this.id = id;
11
- this.data = data;
12
- }
13
- static fromRow(collection, row) {
14
- return new Item(collection, row.id, row.original);
15
- }
16
- };
17
- //#endregion
18
- export { Item };
19
-
20
- //# sourceMappingURL=Item.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Item.mjs","names":[],"sources":["../../../../../../../../../src/components/List/model/item/Item.ts"],"sourcesContent":["import type { ItemCollection } from \"@/components/List/model/item/ItemCollection\";\nimport type { Row } from \"@tanstack/react-table\";\n\nexport class Item<T> {\n public readonly id: string;\n public readonly data: T;\n public readonly collection: ItemCollection<T>;\n\n public constructor(collection: ItemCollection<T>, id: string, data: T) {\n this.collection = collection;\n this.id = id;\n this.data = data;\n }\n\n public static fromRow<T>(\n collection: ItemCollection<T>,\n row: Row<T>,\n ): Item<T> {\n return new Item(collection, row.id, row.original);\n }\n}\n"],"mappings":";;;AAGA,IAAa,OAAb,MAAa,KAAQ;CACnB;CACA;CACA;CAEA,YAAmB,YAA+B,IAAY,MAAS;EACrE,KAAK,aAAa;EAClB,KAAK,KAAK;EACV,KAAK,OAAO;CACd;CAEA,OAAc,QACZ,YACA,KACS;EACT,OAAO,IAAI,KAAK,YAAY,IAAI,IAAI,IAAI,QAAQ;CAClD;AACF"}
@@ -1,58 +0,0 @@
1
- "use client"
2
- /* */
3
- //#region src/components/List/model/pagination/BatchesController.ts
4
- var BatchesController = class {
5
- batchSize;
6
- list;
7
- constructor(list, shape = {}) {
8
- const { batchSize = 20 } = shape;
9
- this.list = list;
10
- this.batchSize = batchSize;
11
- list.filters.forEach((f) => f.onFilterUpdated(() => this.reset()));
12
- list.search?.onUpdated(() => this.reset());
13
- }
14
- get reactTable() {
15
- return this.list.reactTable.table;
16
- }
17
- getBatchIndex() {
18
- return this.reactTable.getState().pagination.pageIndex;
19
- }
20
- hasNextBatch() {
21
- if (this.list.loader.manualPagination) return this.reactTable.getCanNextPage();
22
- return this.reactTable.getState().pagination.pageSize < this.getTotalItemsCount();
23
- }
24
- getTotalItemsCount() {
25
- if (this.list.loader.manualPagination) return this.reactTable.getRowCount();
26
- return this.reactTable.getFilteredRowModel().rows.length;
27
- }
28
- getVisibleItemsCount() {
29
- return this.reactTable.getRowModel().rows.length ?? 0;
30
- }
31
- updateItemTotalCount(value) {
32
- this.reactTable.setOptions((s) => ({
33
- ...s,
34
- rowCount: value
35
- }));
36
- }
37
- reset() {
38
- if (this.list.loader.manualFiltering) this.updateItemTotalCount(0);
39
- this.reactTable.setPagination(() => ({
40
- pageIndex: 0,
41
- pageSize: this.batchSize
42
- }));
43
- }
44
- nextBatch() {
45
- if (this.list.loader.manualPagination) this.reactTable.nextPage();
46
- else {
47
- const newSize = this.reactTable.getState().pagination.pageSize + this.batchSize;
48
- this.reactTable.setPagination((prev) => ({
49
- ...prev,
50
- pageSize: newSize
51
- }));
52
- }
53
- }
54
- };
55
- //#endregion
56
- export { BatchesController };
57
-
58
- //# sourceMappingURL=BatchesController.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BatchesController.mjs","names":[],"sources":["../../../../../../../../../src/components/List/model/pagination/BatchesController.ts"],"sourcesContent":["import type List from \"@/components/List/model/List\";\nimport type { BatchesControllerShape } from \"@/components/List/model/pagination/types\";\nimport type { Table } from \"@tanstack/react-table\";\n\nexport class BatchesController<T> {\n public readonly batchSize: number;\n private readonly list: List<T>;\n\n public constructor(list: List<T>, shape: BatchesControllerShape = {}) {\n const { batchSize = 20 } = shape;\n\n this.list = list;\n this.batchSize = batchSize;\n list.filters.forEach((f) => f.onFilterUpdated(() => this.reset()));\n list.search?.onUpdated(() => this.reset());\n }\n\n private get reactTable(): Table<T> {\n return this.list.reactTable.table;\n }\n\n public getBatchIndex(): number {\n return this.reactTable.getState().pagination.pageIndex;\n }\n\n public hasNextBatch(): boolean {\n if (this.list.loader.manualPagination) {\n return this.reactTable.getCanNextPage();\n }\n return (\n this.reactTable.getState().pagination.pageSize < this.getTotalItemsCount()\n );\n }\n\n public getTotalItemsCount(): number {\n if (this.list.loader.manualPagination) {\n return this.reactTable.getRowCount();\n }\n return this.reactTable.getFilteredRowModel().rows.length;\n }\n\n public getVisibleItemsCount(): number {\n return this.reactTable.getRowModel().rows.length ?? 0;\n }\n\n public updateItemTotalCount(value: number): void {\n this.reactTable.setOptions((s) => ({\n ...s,\n rowCount: value,\n }));\n }\n\n public reset(): void {\n if (this.list.loader.manualFiltering) {\n this.updateItemTotalCount(0);\n }\n this.reactTable.setPagination(() => ({\n pageIndex: 0,\n pageSize: this.batchSize,\n }));\n }\n\n public nextBatch(): void {\n if (this.list.loader.manualPagination) {\n this.reactTable.nextPage();\n } else {\n const newSize =\n this.reactTable.getState().pagination.pageSize + this.batchSize;\n\n this.reactTable.setPagination((prev) => ({\n ...prev,\n pageSize: newSize,\n }));\n }\n }\n}\n"],"mappings":";;;AAIA,IAAa,oBAAb,MAAkC;CAChC;CACA;CAEA,YAAmB,MAAe,QAAgC,CAAC,GAAG;EACpE,MAAM,EAAE,YAAY,OAAO;EAE3B,KAAK,OAAO;EACZ,KAAK,YAAY;EACjB,KAAK,QAAQ,SAAS,MAAM,EAAE,sBAAsB,KAAK,MAAM,CAAC,CAAC;EACjE,KAAK,QAAQ,gBAAgB,KAAK,MAAM,CAAC;CAC3C;CAEA,IAAY,aAAuB;EACjC,OAAO,KAAK,KAAK,WAAW;CAC9B;CAEA,gBAA+B;EAC7B,OAAO,KAAK,WAAW,SAAS,CAAC,CAAC,WAAW;CAC/C;CAEA,eAA+B;EAC7B,IAAI,KAAK,KAAK,OAAO,kBACnB,OAAO,KAAK,WAAW,eAAe;EAExC,OACE,KAAK,WAAW,SAAS,CAAC,CAAC,WAAW,WAAW,KAAK,mBAAmB;CAE7E;CAEA,qBAAoC;EAClC,IAAI,KAAK,KAAK,OAAO,kBACnB,OAAO,KAAK,WAAW,YAAY;EAErC,OAAO,KAAK,WAAW,oBAAoB,CAAC,CAAC,KAAK;CACpD;CAEA,uBAAsC;EACpC,OAAO,KAAK,WAAW,YAAY,CAAC,CAAC,KAAK,UAAU;CACtD;CAEA,qBAA4B,OAAqB;EAC/C,KAAK,WAAW,YAAY,OAAO;GACjC,GAAG;GACH,UAAU;EACZ,EAAE;CACJ;CAEA,QAAqB;EACnB,IAAI,KAAK,KAAK,OAAO,iBACnB,KAAK,qBAAqB,CAAC;EAE7B,KAAK,WAAW,qBAAqB;GACnC,WAAW;GACX,UAAU,KAAK;EACjB,EAAE;CACJ;CAEA,YAAyB;EACvB,IAAI,KAAK,KAAK,OAAO,kBACnB,KAAK,WAAW,SAAS;OACpB;GACL,MAAM,UACJ,KAAK,WAAW,SAAS,CAAC,CAAC,WAAW,WAAW,KAAK;GAExD,KAAK,WAAW,eAAe,UAAU;IACvC,GAAG;IACH,UAAU;GACZ,EAAE;EACJ;CACF;AACF"}
@@ -1,8 +0,0 @@
1
- "use client"
2
- /* */
3
- //#region src/lib/array/toArray.ts
4
- var toArray = (val) => Array.isArray(val) ? val : [val];
5
- //#endregion
6
- export { toArray };
7
-
8
- //# sourceMappingURL=toArray.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toArray.mjs","names":[],"sources":["../../../../../../../src/lib/array/toArray.ts"],"sourcesContent":["export const toArray = <T>(val: T | T[]): T[] =>\n Array.isArray(val) ? val : [val];\n"],"mappings":";;;AAAA,IAAa,WAAc,QACzB,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG"}
@@ -1,15 +0,0 @@
1
- "use client"
2
- /* */
3
- import { DateTime } from "luxon";
4
- //#region src/lib/date/transformDateValueToDateTime.tsx
5
- var transformDateValueToDateTime = (date) => {
6
- return DateTime.fromObject({
7
- year: date.year,
8
- month: date.month,
9
- day: date.day
10
- });
11
- };
12
- //#endregion
13
- export { transformDateValueToDateTime };
14
-
15
- //# sourceMappingURL=transformDateValueToDateTime.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transformDateValueToDateTime.mjs","names":[],"sources":["../../../../../../../src/lib/date/transformDateValueToDateTime.tsx"],"sourcesContent":["import type { DateValue } from \"@internationalized/date\";\nimport { DateTime } from \"luxon\";\n\nexport const transformDateValueToDateTime = (date: DateValue) => {\n return DateTime.fromObject({\n year: date.year,\n month: date.month,\n day: date.day,\n });\n};\n"],"mappings":";;;;AAGA,IAAa,gCAAgC,SAAoB;CAC/D,OAAO,SAAS,WAAW;EACzB,MAAM,KAAK;EACX,OAAO,KAAK;EACZ,KAAK,KAAK;CACZ,CAAC;AACH"}
@@ -1,8 +0,0 @@
1
- "use client"
2
- /* */
3
- //#region src/lib/promises/sleep.ts
4
- var sleep = (ms) => new Promise((res) => setTimeout(res, ms));
5
- //#endregion
6
- export { sleep };
7
-
8
- //# sourceMappingURL=sleep.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sleep.mjs","names":[],"sources":["../../../../../../../src/lib/promises/sleep.ts"],"sourcesContent":["export const sleep = (ms: number): Promise<void> =>\n new Promise((res) => setTimeout(res, ms));\n"],"mappings":";;;AAAA,IAAa,SAAS,OACpB,IAAI,SAAS,QAAQ,WAAW,KAAK,EAAE,CAAC"}
@@ -1,6 +0,0 @@
1
- import { CalendarDate } from '@internationalized/date';
2
- import { Row } from '@tanstack/react-table';
3
- export declare function dateRangeFilterFn<T>(row: Row<T>, columnId: string, range?: {
4
- start?: CalendarDate;
5
- end?: CalendarDate;
6
- }): boolean;
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export declare const toArray: <T>(val: T | T[]) => T[];
@@ -1 +0,0 @@
1
- export type ItemType<T> = T extends (infer TItem)[] ? TItem : T;
@@ -1 +0,0 @@
1
- export {};