@wix/bex-core 2.64.0 → 2.66.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 (46) hide show
  1. package/dist/cjs/hooks/paginationModeConfig.js.map +1 -1
  2. package/dist/cjs/model/dataResultRaw/dataResultRaw.js.map +1 -1
  3. package/dist/cjs/services/dataExtensionService.js +5 -1
  4. package/dist/cjs/services/dataExtensionService.js.map +1 -1
  5. package/dist/cjs/state/CollectionOptimisticActionsState.js +1 -1
  6. package/dist/cjs/state/CollectionOptimisticActionsState.js.map +1 -1
  7. package/dist/cjs/state/CollectionState.js +42 -33
  8. package/dist/cjs/state/CollectionState.js.map +1 -1
  9. package/dist/cjs/state/CustomFieldModalState.js +2 -1
  10. package/dist/cjs/state/CustomFieldModalState.js.map +1 -1
  11. package/dist/cjs/state/DataExtensionState.js +6 -4
  12. package/dist/cjs/state/DataExtensionState.js.map +1 -1
  13. package/dist/cjs/state/FetchTotalState.js +82 -0
  14. package/dist/cjs/state/FetchTotalState.js.map +1 -0
  15. package/dist/cjs/state/QueryResultState.js +15 -2
  16. package/dist/cjs/state/QueryResultState.js.map +1 -1
  17. package/dist/esm/services/dataExtensionService.js +2 -0
  18. package/dist/esm/services/dataExtensionService.js.map +1 -1
  19. package/dist/esm/state/CollectionOptimisticActionsState.js +1 -1
  20. package/dist/esm/state/CollectionOptimisticActionsState.js.map +1 -1
  21. package/dist/esm/state/CollectionState.js +43 -31
  22. package/dist/esm/state/CollectionState.js.map +1 -1
  23. package/dist/esm/state/CustomFieldModalState.js +1 -0
  24. package/dist/esm/state/CustomFieldModalState.js.map +1 -1
  25. package/dist/esm/state/DataExtensionState.js +4 -3
  26. package/dist/esm/state/DataExtensionState.js.map +1 -1
  27. package/dist/esm/state/FetchTotalState.js +59 -0
  28. package/dist/esm/state/FetchTotalState.js.map +1 -0
  29. package/dist/esm/state/QueryResultState.js +15 -2
  30. package/dist/esm/state/QueryResultState.js.map +1 -1
  31. package/dist/types/hooks/paginationModeConfig.d.ts +2 -0
  32. package/dist/types/hooks/paginationModeConfig.d.ts.map +1 -1
  33. package/dist/types/model/dataResultRaw/dataResultRaw.d.ts +1 -0
  34. package/dist/types/model/dataResultRaw/dataResultRaw.d.ts.map +1 -1
  35. package/dist/types/services/dataExtensionService.d.ts +2 -0
  36. package/dist/types/services/dataExtensionService.d.ts.map +1 -1
  37. package/dist/types/state/CollectionState.d.ts +2 -0
  38. package/dist/types/state/CollectionState.d.ts.map +1 -1
  39. package/dist/types/state/CustomFieldModalState.d.ts.map +1 -1
  40. package/dist/types/state/DataExtensionState.d.ts +3 -1
  41. package/dist/types/state/DataExtensionState.d.ts.map +1 -1
  42. package/dist/types/state/FetchTotalState.d.ts +17 -0
  43. package/dist/types/state/FetchTotalState.d.ts.map +1 -0
  44. package/dist/types/state/QueryResultState.d.ts +5 -0
  45. package/dist/types/state/QueryResultState.d.ts.map +1 -1
  46. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../src/hooks/paginationModeConfig.ts"],"sourcesContent":["import {\n ComputedQuery,\n DataResultRaw,\n FiltersMap,\n OptionalFiltersMap,\n} from '../model';\n\nexport type OffsetQuery<F extends FiltersMap = OptionalFiltersMap> = Omit<\n ComputedQuery<F>,\n 'cursor'\n>;\n\nexport type OffsetQueryResult<T> = Omit<DataResultRaw<T>, 'cursor'>;\n\nexport type OffsetFetchDataFn<T, F extends FiltersMap> = (\n query: OffsetQuery<F>,\n) => Promise<OffsetQueryResult<T>>;\n\nexport type CursorQueryResult<T> = Omit<DataResultRaw<T>, 'cursor'> & {\n cursor: string | undefined | null;\n};\n\nexport type CursorQuery<F extends FiltersMap = OptionalFiltersMap> = Omit<\n ComputedQuery<F>,\n 'offset'\n>;\n\nexport type CursorFetchDataFn<T, F extends FiltersMap> = (\n query: CursorQuery<F>,\n) => Promise<CursorQueryResult<T>>;\n\nexport type PaginationModeConfig<T, F extends FiltersMap> =\n | {\n paginationMode?: 'offset';\n fetchData: OffsetFetchDataFn<T, F>;\n }\n | {\n paginationMode: 'cursor';\n fetchData: CursorFetchDataFn<T, F>;\n };\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../src/hooks/paginationModeConfig.ts"],"sourcesContent":["import {\n ComputedQuery,\n DataResultRaw,\n FiltersMap,\n OptionalFiltersMap,\n} from '../model';\n\nexport type OffsetQuery<F extends FiltersMap = OptionalFiltersMap> = Omit<\n ComputedQuery<F>,\n 'cursor'\n>;\n\nexport type OffsetQueryResult<T> = Omit<DataResultRaw<T>, 'cursor'>;\n\nexport type OffsetFetchDataFn<T, F extends FiltersMap> = (\n query: OffsetQuery<F>,\n) => Promise<OffsetQueryResult<T>>;\n\nexport type CursorQueryResult<T> = Omit<DataResultRaw<T>, 'cursor'> & {\n cursor: string | undefined | null;\n};\n\nexport type CursorQuery<F extends FiltersMap = OptionalFiltersMap> = Omit<\n ComputedQuery<F>,\n 'offset'\n>;\n\nexport type CursorFetchDataFn<T, F extends FiltersMap> = (\n query: CursorQuery<F>,\n) => Promise<CursorQueryResult<T>>;\n\nexport type FetchTotalFn = (query: CursorQuery) => Promise<number>;\n\nexport type PaginationModeConfig<T, F extends FiltersMap> =\n | {\n paginationMode?: 'offset';\n fetchData: OffsetFetchDataFn<T, F>;\n }\n | {\n paginationMode: 'cursor';\n fetchTotal?: FetchTotalFn;\n fetchData: CursorFetchDataFn<T, F>;\n };\n"],"mappings":"","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../../../src/model/dataResultRaw/dataResultRaw.ts"],"sourcesContent":["export interface DataResultRaw<T> {\n /**\n * Array of items returned from the server.\n * @external\n */\n items: T[];\n /**\n * Total items available in the server, *after* applying filters. If not provided, offset pagination will not work correctly.\n * @default `items.length`\n * @external\n */\n total?: number | null;\n /**\n * Total items available in the server, *before* applying filters.\n * @external\n */\n available?: number;\n /**\n * In case of cursor pagination, this will be the value that will be sent in the query on the next page request.\n * @external\n */\n cursor?: string | undefined | null;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["../../../../src/model/dataResultRaw/dataResultRaw.ts"],"sourcesContent":["export interface DataResultRaw<T> {\n /**\n * Array of items returned from the server.\n * @external\n */\n items: T[];\n /**\n * Total items available in the server, *after* applying filters. If not provided, offset pagination will not work correctly.\n * If you are using a cursor and did not include `total` in your query request, you can use the `fetchTotal` function to extract it asynchronously.\n * @default `items.length`\n * @external\n */\n total?: number | null;\n /**\n * Total items available in the server, *before* applying filters.\n * @external\n */\n available?: number;\n /**\n * In case of cursor pagination, this will be the value that will be sent in the query on the next page request.\n * @external\n */\n cursor?: string | undefined | null;\n}\n"],"mappings":"","ignoreList":[]}
@@ -126,6 +126,9 @@ class DataExtensionSchemaService {
126
126
  read: ['users', ...(readUsers ? ['users-of-users'] : []), ...(readApps ? ['apps'] : [])],
127
127
  write: ['users', ...(writeUsers ? ['users-of-users'] : []), ...(writeApps ? ['apps'] : [])]
128
128
  };
129
+ const filterable = params.filterable ? {
130
+ 'x-wix-filterable': true
131
+ } : {};
129
132
  const schema = {
130
133
  fqdn,
131
134
  namespace: userFieldsNamespace,
@@ -137,7 +140,8 @@ class DataExtensionSchemaService {
137
140
  ...((_params$schema2 = params.schema) == null || (_params$schema2 = _params$schema2.jsonSchema) == null ? void 0 : _params$schema2.properties[key]),
138
141
  title: name,
139
142
  ...type,
140
- 'x-wix-permissions': permissions
143
+ 'x-wix-permissions': permissions,
144
+ ...filterable
141
145
  }
142
146
  }
143
147
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_http","DataExtensionSchemaService","toSchemaType","type","format","maxLength","items","Error","toCustomType","field","hasOwnProperty","toCustomField","schema","key","_schema$jsonSchema","property","jsonSchema","properties","title","id","constructor","params","_defineProperty2","default","httpClient","addCustomField","_params$schema","_params$schema2","_params$schema3","userFieldsNamespace","form","name","readApps","readUsers","writeApps","writeUsers","fqdn","permissions","read","write","namespace","request","updateDataExtensionSchema","dataExtensionSchema","createDataExtensionSchema","then","res","data","archiveCustomField","_params$schema4","_params$schema5","fetchSchemas","listDataExtensionSchemas","namespaces","fields","RequestedField","ARCHIVED","exports"],"sources":["../../../src/services/dataExtensionService.ts"],"sourcesContent":["import {\n DataExtensionSchema,\n RequestedField,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport {\n createDataExtensionSchema,\n listDataExtensionSchemas,\n updateDataExtensionSchema,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/http';\nimport { CustomFieldForm } from '../state';\nimport { WixPatternsEssentials } from '../model';\n\nexport interface DataExtensionSchemaServiceParams {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n}\n\n// server types\nexport type DataExtensionType =\n | 'string'\n | 'number'\n | 'integer'\n | 'boolean'\n | 'array';\n\nexport type DataExtensionPermission =\n | 'apps'\n | 'owning-app'\n | 'users'\n | 'users-of-users';\n\nexport interface DataExtensionField {\n id: string;\n type?: DataExtensionType;\n format?: 'date-time' | 'date' | 'single-line' | string;\n title?: string;\n maxLength?: number;\n enum?: string[];\n 'x-wix-archived'?: boolean;\n 'x-wix-created-date': string;\n 'x-wix-permissions': {\n read: DataExtensionPermission[];\n write: DataExtensionPermission[];\n };\n}\n\n// client types\nexport type CustomFieldType =\n | 'shortText'\n | 'longText'\n | 'date'\n | 'dateTime'\n | 'integer'\n | 'decimal'\n | 'checkbox'\n | 'dropdown';\n\nexport type CustomFieldOrigin =\n | 'Custom columns panel'\n | 'Custom fields panel'\n | 'Custom fields widget'\n | 'external';\n\nexport interface ExtendedFields {\n /**\n * Data Extensions extended fields\n * Key: Namespace\n * Value: extended fields data in Struct format\n */\n namespaces?: {\n _user_fields?: Record<string, any>;\n };\n}\n\nexport type CustomFieldOwner = 'user' | 'app';\n\nexport interface CustomField {\n id: string;\n type: CustomFieldType;\n label?: string;\n maxLength?: number;\n options?: string[];\n editable: boolean;\n owner: CustomFieldOwner;\n}\n\nexport interface AddFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n form: CustomFieldForm;\n}\n\nexport interface ArchiveFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n id: string;\n}\n\nexport class DataExtensionSchemaService {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n\n readonly userFieldsNamespace = '_user_fields';\n\n static toSchemaType(type?: CustomFieldType) {\n switch (type) {\n case 'shortText':\n return {\n type: 'string',\n format: 'single-line',\n maxLength: 120,\n };\n case 'longText':\n return {\n type: 'string',\n maxLength: 200,\n };\n case 'date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'dateTime':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'integer':\n return {\n type: 'integer',\n };\n case 'decimal':\n return {\n type: 'number',\n };\n case 'checkbox':\n return {\n type: 'boolean',\n };\n case 'dropdown':\n return {\n type: 'array',\n items: {\n type: 'string',\n },\n };\n default:\n throw new Error(`Unexpected type: ${type}`);\n }\n }\n\n static toCustomType(field: DataExtensionField): CustomFieldType {\n switch (field.type) {\n case 'string':\n if (field.hasOwnProperty('enum')) {\n return 'dropdown';\n }\n\n switch (field.format) {\n case 'date-time':\n return 'dateTime';\n case 'date':\n return 'date';\n case 'single-line':\n return 'shortText';\n default:\n return 'longText';\n }\n case 'number':\n return 'decimal';\n case 'integer':\n return 'integer';\n case 'boolean':\n return 'checkbox';\n case 'array':\n return 'dropdown';\n default:\n return 'shortText';\n }\n }\n\n static toCustomField(\n schema: DataExtensionSchema,\n key: string,\n ): DataExtensionField | undefined {\n const property: DataExtensionField = schema.jsonSchema?.properties?.[key];\n\n if (!property || typeof property !== 'object') {\n return;\n }\n\n if (\n typeof property.title !== 'string' ||\n typeof property.type !== 'string' ||\n typeof property['x-wix-permissions'] !== 'object'\n ) {\n return;\n }\n\n return { ...property, id: key };\n }\n\n constructor(params: DataExtensionSchemaServiceParams) {\n this.httpClient = params.httpClient;\n }\n\n addCustomField(params: AddFieldParams) {\n const { httpClient, userFieldsNamespace } = this;\n const {\n form: { key, name, readApps, readUsers, writeApps, writeUsers },\n fqdn,\n } = params;\n const type = DataExtensionSchemaService.toSchemaType(params.form.type);\n\n const permissions = {\n read: [\n 'users',\n ...(readUsers ? ['users-of-users'] : []),\n ...(readApps ? ['apps'] : []),\n ],\n write: [\n 'users',\n ...(writeUsers ? ['users-of-users'] : []),\n ...(writeApps ? ['apps'] : []),\n ],\n };\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [key]: {\n ...params.schema?.jsonSchema?.properties[key],\n title: name,\n ...type,\n 'x-wix-permissions': permissions,\n },\n },\n },\n };\n\n const request = params.schema?.id\n ? updateDataExtensionSchema({ dataExtensionSchema: schema })\n : createDataExtensionSchema({ dataExtensionSchema: schema });\n\n return httpClient.request(request).then((res) => res.data);\n }\n\n archiveCustomField(params: ArchiveFieldParams) {\n const { httpClient, userFieldsNamespace } = this;\n const { id, fqdn } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...params.schema?.jsonSchema?.properties[id],\n 'x-wix-archived': true,\n },\n },\n },\n };\n\n return httpClient\n .request(updateDataExtensionSchema({ dataExtensionSchema: schema }))\n .then((res) => res.data);\n }\n\n fetchSchemas(fqdn: string) {\n const { httpClient } = this;\n\n return httpClient\n .request(\n listDataExtensionSchemas({\n fqdn,\n namespaces: [],\n fields: [RequestedField.ARCHIVED],\n }),\n )\n .then((res) => res.data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_http","DataExtensionSchemaService","toSchemaType","type","format","maxLength","items","Error","toCustomType","field","hasOwnProperty","toCustomField","schema","key","_schema$jsonSchema","property","jsonSchema","properties","title","id","constructor","params","_defineProperty2","default","httpClient","addCustomField","_params$schema","_params$schema2","_params$schema3","userFieldsNamespace","form","name","readApps","readUsers","writeApps","writeUsers","fqdn","permissions","read","write","filterable","namespace","request","updateDataExtensionSchema","dataExtensionSchema","createDataExtensionSchema","then","res","data","archiveCustomField","_params$schema4","_params$schema5","fetchSchemas","listDataExtensionSchemas","namespaces","fields","RequestedField","ARCHIVED","exports"],"sources":["../../../src/services/dataExtensionService.ts"],"sourcesContent":["import {\n DataExtensionSchema,\n RequestedField,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/types';\nimport {\n createDataExtensionSchema,\n listDataExtensionSchemas,\n updateDataExtensionSchema,\n} from '@wix/bex-utils/@wix/ambassador-data-extensions-v1-data-extension-schema/http';\nimport { CustomFieldForm } from '../state';\nimport { WixPatternsEssentials } from '../model';\n\nexport interface DataExtensionSchemaServiceParams {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n}\n\n// server types\nexport type DataExtensionType =\n | 'string'\n | 'number'\n | 'integer'\n | 'boolean'\n | 'array';\n\nexport type DataExtensionPermission =\n | 'apps'\n | 'owning-app'\n | 'users'\n | 'users-of-users';\n\nexport interface DataExtensionField {\n id: string;\n type?: DataExtensionType;\n format?: 'date-time' | 'date' | 'single-line' | string;\n title?: string;\n maxLength?: number;\n enum?: string[];\n 'x-wix-archived'?: boolean;\n 'x-wix-filterable'?: boolean;\n 'x-wix-created-date': string;\n 'x-wix-permissions': {\n read: DataExtensionPermission[];\n write: DataExtensionPermission[];\n };\n}\n\n// client types\nexport type CustomFieldType =\n | 'shortText'\n | 'longText'\n | 'date'\n | 'dateTime'\n | 'integer'\n | 'decimal'\n | 'checkbox'\n | 'dropdown';\n\nexport type CustomFieldOrigin =\n | 'Custom columns panel'\n | 'Custom fields panel'\n | 'Custom fields widget'\n | 'external';\n\nexport interface ExtendedFields {\n /**\n * Data Extensions extended fields\n * Key: Namespace\n * Value: extended fields data in Struct format\n */\n namespaces?: {\n _user_fields?: Record<string, any>;\n };\n}\n\nexport type CustomFieldOwner = 'user' | 'app';\n\nexport interface CustomField {\n id: string;\n type: CustomFieldType;\n label?: string;\n maxLength?: number;\n options?: string[];\n editable: boolean;\n owner: CustomFieldOwner;\n}\n\nexport interface AddFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n form: CustomFieldForm;\n filterable?: boolean;\n}\n\nexport interface ArchiveFieldParams {\n schema?: DataExtensionSchema;\n fqdn: string;\n id: string;\n}\n\nexport class DataExtensionSchemaService {\n readonly httpClient: WixPatternsEssentials['httpClient'];\n\n readonly userFieldsNamespace = '_user_fields';\n\n static toSchemaType(type?: CustomFieldType) {\n switch (type) {\n case 'shortText':\n return {\n type: 'string',\n format: 'single-line',\n maxLength: 120,\n };\n case 'longText':\n return {\n type: 'string',\n maxLength: 200,\n };\n case 'date':\n return {\n type: 'string',\n format: 'date',\n };\n case 'dateTime':\n return {\n type: 'string',\n format: 'date-time',\n };\n case 'integer':\n return {\n type: 'integer',\n };\n case 'decimal':\n return {\n type: 'number',\n };\n case 'checkbox':\n return {\n type: 'boolean',\n };\n case 'dropdown':\n return {\n type: 'array',\n items: {\n type: 'string',\n },\n };\n default:\n throw new Error(`Unexpected type: ${type}`);\n }\n }\n\n static toCustomType(field: DataExtensionField): CustomFieldType {\n switch (field.type) {\n case 'string':\n if (field.hasOwnProperty('enum')) {\n return 'dropdown';\n }\n\n switch (field.format) {\n case 'date-time':\n return 'dateTime';\n case 'date':\n return 'date';\n case 'single-line':\n return 'shortText';\n default:\n return 'longText';\n }\n case 'number':\n return 'decimal';\n case 'integer':\n return 'integer';\n case 'boolean':\n return 'checkbox';\n case 'array':\n return 'dropdown';\n default:\n return 'shortText';\n }\n }\n\n static toCustomField(\n schema: DataExtensionSchema,\n key: string,\n ): DataExtensionField | undefined {\n const property: DataExtensionField = schema.jsonSchema?.properties?.[key];\n\n if (!property || typeof property !== 'object') {\n return;\n }\n\n if (\n typeof property.title !== 'string' ||\n typeof property.type !== 'string' ||\n typeof property['x-wix-permissions'] !== 'object'\n ) {\n return;\n }\n\n return { ...property, id: key };\n }\n\n constructor(params: DataExtensionSchemaServiceParams) {\n this.httpClient = params.httpClient;\n }\n\n addCustomField(params: AddFieldParams) {\n const { httpClient, userFieldsNamespace } = this;\n const {\n form: { key, name, readApps, readUsers, writeApps, writeUsers },\n fqdn,\n } = params;\n const type = DataExtensionSchemaService.toSchemaType(params.form.type);\n\n const permissions = {\n read: [\n 'users',\n ...(readUsers ? ['users-of-users'] : []),\n ...(readApps ? ['apps'] : []),\n ],\n write: [\n 'users',\n ...(writeUsers ? ['users-of-users'] : []),\n ...(writeApps ? ['apps'] : []),\n ],\n };\n\n const filterable = params.filterable ? { 'x-wix-filterable': true } : {};\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [key]: {\n ...params.schema?.jsonSchema?.properties[key],\n title: name,\n ...type,\n 'x-wix-permissions': permissions,\n ...filterable,\n },\n },\n },\n };\n\n const request = params.schema?.id\n ? updateDataExtensionSchema({ dataExtensionSchema: schema })\n : createDataExtensionSchema({ dataExtensionSchema: schema });\n\n return httpClient.request(request).then((res) => res.data);\n }\n\n archiveCustomField(params: ArchiveFieldParams) {\n const { httpClient, userFieldsNamespace } = this;\n const { id, fqdn } = params;\n\n const schema: DataExtensionSchema = {\n fqdn,\n namespace: userFieldsNamespace,\n ...params.schema,\n jsonSchema: {\n properties: {\n ...params.schema?.jsonSchema?.properties,\n [id]: {\n ...params.schema?.jsonSchema?.properties[id],\n 'x-wix-archived': true,\n },\n },\n },\n };\n\n return httpClient\n .request(updateDataExtensionSchema({ dataExtensionSchema: schema }))\n .then((res) => res.data);\n }\n\n fetchSchemas(fqdn: string) {\n const { httpClient } = this;\n\n return httpClient\n .request(\n listDataExtensionSchemas({\n fqdn,\n namespaces: [],\n fields: [RequestedField.ARCHIVED],\n }),\n )\n .then((res) => res.data);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -22,7 +22,7 @@ class CollectionOptimisticActionsState {
22
22
  patches = _mobx.observable.array([], {
23
23
  deep: false
24
24
  });
25
- patchesCache.set(queryName, patches);
25
+ patchesCache.set(cacheKey, patches);
26
26
  }
27
27
  this.patches = patches;
28
28
  (0, _mobx.makeObservable)(this, {
@@ -1 +1 @@
1
- {"version":3,"names":["_mobx","require","CollectionOptimisticActionsState","constructor","params","_defineProperty2","default","source","queryName","patchesCache","cacheNamespace","cacheKey","filter","Boolean","join","patches","get","observable","array","deep","set","makeObservable","latestMap","computed","reduce","map","optimisticPatch","patchedItemsEntries","originalItems","key","item","originalItem","Map","exports"],"sources":["../../../src/state/CollectionOptimisticActionsState.ts"],"sourcesContent":["import { computed, IObservableArray, makeObservable, observable } from 'mobx';\nimport { OptimisticPatch } from './CollectionOptimisticPatch';\n\nexport interface CollectionOptimisticActionsStateParams<T> {\n readonly patchesCache: Map<string, IObservableArray<OptimisticPatch<T>>>;\n readonly source: { queryName: string };\n readonly cacheNamespace?: string;\n}\n\nexport class CollectionOptimisticActionsState<T> {\n readonly patches;\n\n _patchesBeforeUnmount: OptimisticPatch<T>[] | null = null;\n\n constructor(params: CollectionOptimisticActionsStateParams<T>) {\n const {\n source: { queryName },\n patchesCache,\n cacheNamespace,\n } = params;\n\n const cacheKey = [cacheNamespace, queryName].filter(Boolean).join(':');\n let patches = patchesCache.get(cacheKey);\n\n if (patches == null) {\n patches = observable.array<OptimisticPatch<T>>([], {\n deep: false,\n });\n patchesCache.set(queryName, patches);\n }\n\n this.patches = patches;\n\n makeObservable(this, {\n latestMap: computed,\n });\n }\n\n get latestMap() {\n return this.patches.reduce((map, optimisticPatch) => {\n const { patchedItemsEntries, originalItems } = optimisticPatch;\n for (const [key, item] of patchedItemsEntries) {\n const originalItem = originalItems.get(key);\n if (originalItem) {\n map.set(key, { optimisticPatch, item, originalItem });\n }\n }\n return map;\n }, new Map<string, { item: T; originalItem: T; optimisticPatch: OptimisticPatch<T> }>());\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AASO,MAAMC,gCAAgC,CAAI;EAK/CC,WAAWA,CAACC,MAAiD,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,iCAFV,IAAI;IAGvD,MAAM;MACJC,MAAM,EAAE;QAAEC;MAAU,CAAC;MACrBC,YAAY;MACZC;IACF,CAAC,GAAGN,MAAM;IAEV,MAAMO,QAAQ,GAAG,CAACD,cAAc,EAAEF,SAAS,CAAC,CAACI,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;IACtE,IAAIC,OAAO,GAAGN,YAAY,CAACO,GAAG,CAACL,QAAQ,CAAC;IAExC,IAAII,OAAO,IAAI,IAAI,EAAE;MACnBA,OAAO,GAAGE,gBAAU,CAACC,KAAK,CAAqB,EAAE,EAAE;QACjDC,IAAI,EAAE;MACR,CAAC,CAAC;MACFV,YAAY,CAACW,GAAG,CAACZ,SAAS,EAAEO,OAAO,CAAC;IACtC;IAEA,IAAI,CAACA,OAAO,GAAGA,OAAO;IAEtB,IAAAM,oBAAc,EAAC,IAAI,EAAE;MACnBC,SAAS,EAAEC;IACb,CAAC,CAAC;EACJ;EAEA,IAAID,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACP,OAAO,CAACS,MAAM,CAAC,CAACC,GAAG,EAAEC,eAAe,KAAK;MACnD,MAAM;QAAEC,mBAAmB;QAAEC;MAAc,CAAC,GAAGF,eAAe;MAC9D,KAAK,MAAM,CAACG,GAAG,EAAEC,IAAI,CAAC,IAAIH,mBAAmB,EAAE;QAC7C,MAAMI,YAAY,GAAGH,aAAa,CAACZ,GAAG,CAACa,GAAG,CAAC;QAC3C,IAAIE,YAAY,EAAE;UAChBN,GAAG,CAACL,GAAG,CAACS,GAAG,EAAE;YAAEH,eAAe;YAAEI,IAAI;YAAEC;UAAa,CAAC,CAAC;QACvD;MACF;MACA,OAAON,GAAG;IACZ,CAAC,EAAE,IAAIO,GAAG,CAA4E,CAAC,CAAC;EAC1F;AACF;AAACC,OAAA,CAAA/B,gCAAA,GAAAA,gCAAA","ignoreList":[]}
1
+ {"version":3,"names":["_mobx","require","CollectionOptimisticActionsState","constructor","params","_defineProperty2","default","source","queryName","patchesCache","cacheNamespace","cacheKey","filter","Boolean","join","patches","get","observable","array","deep","set","makeObservable","latestMap","computed","reduce","map","optimisticPatch","patchedItemsEntries","originalItems","key","item","originalItem","Map","exports"],"sources":["../../../src/state/CollectionOptimisticActionsState.ts"],"sourcesContent":["import { computed, IObservableArray, makeObservable, observable } from 'mobx';\nimport { OptimisticPatch } from './CollectionOptimisticPatch';\n\nexport interface CollectionOptimisticActionsStateParams<T> {\n readonly patchesCache: Map<string, IObservableArray<OptimisticPatch<T>>>;\n readonly source: { queryName: string };\n readonly cacheNamespace?: string;\n}\n\nexport class CollectionOptimisticActionsState<T> {\n readonly patches;\n\n _patchesBeforeUnmount: OptimisticPatch<T>[] | null = null;\n\n constructor(params: CollectionOptimisticActionsStateParams<T>) {\n const {\n source: { queryName },\n patchesCache,\n cacheNamespace,\n } = params;\n\n const cacheKey = [cacheNamespace, queryName].filter(Boolean).join(':');\n let patches = patchesCache.get(cacheKey);\n\n if (patches == null) {\n patches = observable.array<OptimisticPatch<T>>([], {\n deep: false,\n });\n patchesCache.set(cacheKey, patches);\n }\n\n this.patches = patches;\n\n makeObservable(this, {\n latestMap: computed,\n });\n }\n\n get latestMap() {\n return this.patches.reduce((map, optimisticPatch) => {\n const { patchedItemsEntries, originalItems } = optimisticPatch;\n for (const [key, item] of patchedItemsEntries) {\n const originalItem = originalItems.get(key);\n if (originalItem) {\n map.set(key, { optimisticPatch, item, originalItem });\n }\n }\n return map;\n }, new Map<string, { item: T; originalItem: T; optimisticPatch: OptimisticPatch<T> }>());\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AASO,MAAMC,gCAAgC,CAAI;EAK/CC,WAAWA,CAACC,MAAiD,EAAE;IAAA,IAAAC,gBAAA,CAAAC,OAAA;IAAA,IAAAD,gBAAA,CAAAC,OAAA,iCAFV,IAAI;IAGvD,MAAM;MACJC,MAAM,EAAE;QAAEC;MAAU,CAAC;MACrBC,YAAY;MACZC;IACF,CAAC,GAAGN,MAAM;IAEV,MAAMO,QAAQ,GAAG,CAACD,cAAc,EAAEF,SAAS,CAAC,CAACI,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC;IACtE,IAAIC,OAAO,GAAGN,YAAY,CAACO,GAAG,CAACL,QAAQ,CAAC;IAExC,IAAII,OAAO,IAAI,IAAI,EAAE;MACnBA,OAAO,GAAGE,gBAAU,CAACC,KAAK,CAAqB,EAAE,EAAE;QACjDC,IAAI,EAAE;MACR,CAAC,CAAC;MACFV,YAAY,CAACW,GAAG,CAACT,QAAQ,EAAEI,OAAO,CAAC;IACrC;IAEA,IAAI,CAACA,OAAO,GAAGA,OAAO;IAEtB,IAAAM,oBAAc,EAAC,IAAI,EAAE;MACnBC,SAAS,EAAEC;IACb,CAAC,CAAC;EACJ;EAEA,IAAID,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAACP,OAAO,CAACS,MAAM,CAAC,CAACC,GAAG,EAAEC,eAAe,KAAK;MACnD,MAAM;QAAEC,mBAAmB;QAAEC;MAAc,CAAC,GAAGF,eAAe;MAC9D,KAAK,MAAM,CAACG,GAAG,EAAEC,IAAI,CAAC,IAAIH,mBAAmB,EAAE;QAC7C,MAAMI,YAAY,GAAGH,aAAa,CAACZ,GAAG,CAACa,GAAG,CAAC;QAC3C,IAAIE,YAAY,EAAE;UAChBN,GAAG,CAACL,GAAG,CAACS,GAAG,EAAE;YAAEH,eAAe;YAAEI,IAAI;YAAEC;UAAa,CAAC,CAAC;QACvD;MACF;MACA,OAAON,GAAG;IACZ,CAAC,EAAE,IAAIO,GAAG,CAA4E,CAAC,CAAC;EAC1F;AACF;AAACC,OAAA,CAAA/B,gCAAA,GAAAA,gCAAA","ignoreList":[]}
@@ -17,6 +17,7 @@ var _PaginationMode = require("./PaginationMode");
17
17
  var _TaskState = require("./TaskState");
18
18
  var _util = require("../util");
19
19
  var _TransitionState = require("./TransitionState");
20
+ var _FetchTotalState = require("./FetchTotalState");
20
21
  class CollectionState {
21
22
  get queryKeyOptions() {
22
23
  const {
@@ -285,6 +286,9 @@ class CollectionState {
285
286
  this.fqdn = params.fqdn;
286
287
  this.deferInitialLoading = params.deferInitialLoading;
287
288
  this.queryCache = params.queryCache;
289
+ this.errorMonitor = params.errorMonitor;
290
+ this.onlineState = params.onlineState;
291
+ this.history = params.history;
288
292
  this.fetchErrorMessage = params.fetchErrorMessage;
289
293
  this.itemKey = params.itemKey;
290
294
  this.itemName = params.itemName;
@@ -295,38 +299,6 @@ class CollectionState {
295
299
  this.showToast = params.showToast ?? (() => ({
296
300
  remove: () => {}
297
301
  }));
298
- this.query = new _QueryState.QueryState({
299
- filters: params.filters,
300
- search: params.search,
301
- limit: params.limit,
302
- history: params.persistQueryToUrl ? params.history : undefined,
303
- refreshOnColumnsChange: params.refreshOnColumnsChange
304
- });
305
- this._paginationModeRef = params.paginationModeRef ?? {
306
- current: params.paginationMode
307
- };
308
- this._paginationMode = new _PaginationMode.PaginationMode(this);
309
- this.selectionConsistencyMode = params.selectionConsistencyMode ?? 'preserve';
310
- this.result = new _QueryResultState.QueryResultState({
311
- itemKey: params.itemKey,
312
- originQuery: this.query.toComputed()
313
- });
314
- this.fetchesHistory = [];
315
- this.bulkSelect = new _BulkSelectState.BulkSelectState({
316
- disableAutoSelectAllCount: params.disableAutoSelectAllCount,
317
- useNewSelectAllLogic: params.useNewSelectAllLogic,
318
- collection: this,
319
- scrollToTop: () => {
320
- var _this$scrollableConte;
321
- (_this$scrollableConte = this.scrollableContent) == null || _this$scrollableConte.scrollTo({
322
- top: 0,
323
- left: 0
324
- });
325
- }
326
- });
327
- this.errorMonitor = params.errorMonitor;
328
- this.onlineState = params.onlineState;
329
- this.history = params.history;
330
302
  const defaultQueryOptions = {
331
303
  queryFn: (0, _mobx.action)(() => this._queryFn(this.query.asComputed)),
332
304
  keepPreviousData: true,
@@ -354,7 +326,41 @@ class CollectionState {
354
326
  },
355
327
  ...defaultQueryOptions
356
328
  });
329
+ this.query = new _QueryState.QueryState({
330
+ filters: params.filters,
331
+ search: params.search,
332
+ limit: params.limit,
333
+ history: params.persistQueryToUrl ? params.history : undefined,
334
+ refreshOnColumnsChange: params.refreshOnColumnsChange
335
+ });
357
336
  this._resetReactQuery();
337
+ this._paginationModeRef = params.paginationModeRef ?? {
338
+ current: params.paginationMode
339
+ };
340
+ this._paginationMode = new _PaginationMode.PaginationMode(this);
341
+ this.selectionConsistencyMode = params.selectionConsistencyMode ?? 'preserve';
342
+ this.result = new _QueryResultState.QueryResultState({
343
+ itemKey: params.itemKey,
344
+ originQuery: this.query.toComputed(),
345
+ fetchTotal: params.fetchTotal ? new _FetchTotalState.FetchTotalState({
346
+ collection: this,
347
+ queryCache: this.queryCache,
348
+ fetchTotal: params.fetchTotal
349
+ }) : undefined
350
+ });
351
+ this.fetchesHistory = [];
352
+ this.bulkSelect = new _BulkSelectState.BulkSelectState({
353
+ disableAutoSelectAllCount: params.disableAutoSelectAllCount,
354
+ useNewSelectAllLogic: params.useNewSelectAllLogic,
355
+ collection: this,
356
+ scrollToTop: () => {
357
+ var _this$scrollableConte;
358
+ (_this$scrollableConte = this.scrollableContent) == null || _this$scrollableConte.scrollTo({
359
+ top: 0,
360
+ left: 0
361
+ });
362
+ }
363
+ });
358
364
  if (params.initialPage) {
359
365
  this.setInitialPage(params.initialPage);
360
366
  }
@@ -619,6 +625,9 @@ class CollectionState {
619
625
  get total() {
620
626
  return this.result.total;
621
627
  }
628
+ get totalStatus() {
629
+ return this.result.totalStatus;
630
+ }
622
631
  get fetchedLastPage() {
623
632
  const {
624
633
  paginationMode: {
@@ -1028,7 +1037,7 @@ class CollectionState {
1028
1037
  } = onlineState;
1029
1038
  result.originQuery = query.asComputed;
1030
1039
  onlineState.events.on('change', this.onOnlineStateChange);
1031
- const disposers = [query.init(), this._registerQueryEvents(), bulkSelect.init(),
1040
+ const disposers = [query.init(), this._registerQueryEvents(), result.init(), bulkSelect.init(),
1032
1041
  // react-query considers "mounted" only if listeners are subscribed
1033
1042
  this.queryObserver.subscribe(() => {}), focusManager.subscribe(this._recoverIfError)];
1034
1043
  initTask.runOnce(async () => {