@webiny/app-aco 0.0.0-unstable.e622468070 → 0.0.0-unstable.e6f0dc8ca7

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 (55) hide show
  1. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js +1 -2
  2. package/components/AdvancedSearch/QueryBuilderDrawer/QueryBuilderDrawer.js.map +1 -1
  3. package/components/AdvancedSearch/domain/Field.d.ts +1 -1
  4. package/components/AdvancedSearch/domain/Field.js.map +1 -1
  5. package/components/AdvancedSearch/domain/Filter.d.ts +14 -69
  6. package/components/AdvancedSearch/domain/Filter.js +1 -2
  7. package/components/AdvancedSearch/domain/Filter.js.map +1 -1
  8. package/components/FolderPicker/FolderPicker.d.ts +8 -0
  9. package/components/FolderPicker/FolderPicker.js +24 -0
  10. package/components/FolderPicker/FolderPicker.js.map +1 -0
  11. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js +3 -0
  12. package/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityPresenter.test.js.map +1 -1
  13. package/components/Table/components/Table/Columns/Column.d.ts +9 -3
  14. package/components/Table/components/Table/Columns/Column.js +2 -0
  15. package/components/Table/components/Table/Columns/Column.js.map +1 -1
  16. package/components/Table/components/Table/Columns/ColumnMapper.d.ts +1 -1
  17. package/components/Table/components/Table/Columns/ColumnMapper.js +6 -0
  18. package/components/Table/components/Table/Columns/ColumnMapper.js.map +1 -1
  19. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js +6 -0
  20. package/components/Table/components/Table/Columns/ColumnsPresenter.test.js.map +1 -1
  21. package/components/Table/components/Table/TableInner.js.map +1 -1
  22. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.d.ts +1 -1
  23. package/components/Table/components/Table/gateways/ColumnsVisibilityLocalStorageGateway.js.map +1 -1
  24. package/components/index.d.ts +1 -0
  25. package/components/index.js +1 -0
  26. package/components/index.js.map +1 -1
  27. package/config/table/Column.d.ts +3 -0
  28. package/config/table/Column.js +10 -0
  29. package/config/table/Column.js.map +1 -1
  30. package/contexts/acoList.d.ts +1 -0
  31. package/contexts/acoList.js +36 -19
  32. package/contexts/acoList.js.map +1 -1
  33. package/contexts/navigateFolder.js +1 -1
  34. package/contexts/navigateFolder.js.map +1 -1
  35. package/dialogs/useCreateDialog.js +1 -1
  36. package/dialogs/useCreateDialog.js.map +1 -1
  37. package/dialogs/useMoveToFolderDialog.d.ts +1 -1
  38. package/dialogs/useMoveToFolderDialog.js.map +1 -1
  39. package/exports/admin/ui.d.ts +2 -0
  40. package/exports/admin/ui.js +4 -0
  41. package/exports/admin/ui.js.map +1 -0
  42. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFields.test.js +4 -4
  43. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFields.test.js.map +1 -1
  44. package/features/folders/getFolderExtensionsFields/GetFolderExtensionsFieldsUseCase.d.ts +6 -3
  45. package/features/folders/getFolderExtensionsFields/useFolderExtensionsFields.d.ts +6 -3
  46. package/features/folders/listFolders/ListFoldersGqlGateway.d.ts +2 -2
  47. package/features/folders/listFolders/ListFoldersGqlGateway.js +2 -2
  48. package/features/folders/listFolders/ListFoldersGqlGateway.js.map +1 -1
  49. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.d.ts +2 -2
  50. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.js +2 -2
  51. package/features/folders/loadFolderHierarchy/LoadFolderHierarchyGqlGateway.js.map +1 -1
  52. package/index.d.ts +3 -1
  53. package/index.js +3 -1
  54. package/index.js.map +1 -1
  55. package/package.json +33 -32
@@ -1,8 +1,7 @@
1
1
  import React, { useEffect, useMemo, useRef } from "react";
2
2
  import { observer } from "mobx-react-lite";
3
3
  import { Button, Drawer } from "@webiny/admin-ui";
4
- // @ts-expect-error
5
- import { useHotkeys } from "react-hotkeyz";
4
+ import { useHotkeys } from "@webiny/app-admin";
6
5
  import { QueryBuilder } from "./QueryBuilder/index.js";
7
6
  import { QueryBuilderDrawerPresenter } from "./QueryBuilderDrawerPresenter.js";
8
7
  export const QueryBuilderDrawer = observer(({
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useMemo","useRef","observer","Button","Drawer","useHotkeys","QueryBuilder","QueryBuilderDrawerPresenter","QueryBuilderDrawer","filter","props","presenter","load","onChange","data","setFilter","onApply","onValidationError","vm","invalidMessage","onSave","zIndex","disabled","isOpen","keys","esc","onClose","ref","createElement","open","modal","width","title","description","info","onClick","text","variant","actions","Fragment","CancelButton","ConfirmButton","current","submit","headerSeparator","footerSeparator","onForm","form","onSubmit","onDeleteGroup","groupIndex","deleteGroup","onSetFilterFieldData","filterIndex","setFilterFieldData","onDeleteFilterFromGroup","deleteFilterFromGroup","onAddNewFilterToGroup","addNewFilterToGroup","onAddGroup","addGroup","fields"],"sources":["QueryBuilderDrawer.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Button, Drawer } from \"@webiny/admin-ui\";\nimport type { FormAPI } from \"@webiny/form\";\n// @ts-expect-error\nimport { useHotkeys } from \"react-hotkeyz\";\nimport { QueryBuilder } from \"./QueryBuilder/index.js\";\n\nimport type { FieldDTOWithElement, FilterDTO } from \"~/components/AdvancedSearch/domain/index.js\";\n\nimport type { QueryBuilderFormData } from \"./QueryBuilderDrawerPresenter.js\";\nimport { QueryBuilderDrawerPresenter } from \"./QueryBuilderDrawerPresenter.js\";\n\ninterface QueryBuilderDrawerProps {\n fields: FieldDTOWithElement[];\n onClose: () => void;\n onSave: (data: FilterDTO) => void;\n onApply: (data: FilterDTO) => void;\n onValidationError: (message: string) => void;\n filter: FilterDTO;\n vm: {\n isOpen: boolean;\n };\n}\n\nexport const QueryBuilderDrawer = observer(({ filter, ...props }: QueryBuilderDrawerProps) => {\n const presenter = useMemo<QueryBuilderDrawerPresenter>(() => {\n return new QueryBuilderDrawerPresenter();\n }, []);\n\n useEffect(() => {\n presenter.load(filter);\n }, [filter]);\n\n const onChange = (data: QueryBuilderFormData) => {\n presenter.setFilter(data);\n };\n\n const onApply = () => {\n presenter.onApply(\n filter => {\n props.onApply(filter);\n },\n () => {\n props.onValidationError(presenter.vm.invalidMessage);\n }\n );\n };\n\n const onSave = () => {\n presenter.onSave(\n filter => {\n props.onSave(filter);\n },\n () => {\n props.onValidationError(presenter.vm.invalidMessage);\n }\n );\n };\n\n useHotkeys({\n zIndex: 55,\n disabled: !props.vm.isOpen,\n keys: {\n esc: props.onClose\n }\n });\n\n const ref = useRef<FormAPI | null>(null);\n\n return (\n <Drawer\n open={props.vm.isOpen}\n onClose={props.onClose}\n modal={true}\n width={1000}\n title={\"Advanced search filter\"}\n description={\"Create a filter to search for specific content.\"}\n info={<Button onClick={onSave} text={\"Save filter\"} variant={\"secondary\"} />}\n actions={\n <>\n <Drawer.CancelButton text={\"Cancel\"} />\n <Drawer.ConfirmButton\n onClick={() => ref.current?.submit()}\n text={\"Apply filter\"}\n />\n </>\n }\n headerSeparator={true}\n footerSeparator={true}\n >\n <QueryBuilder\n onForm={form => (ref.current = form)}\n onSubmit={onApply}\n onChange={data => onChange(data)}\n onDeleteGroup={groupIndex => presenter.deleteGroup(groupIndex)}\n onSetFilterFieldData={(groupIndex, filterIndex, data) =>\n presenter.setFilterFieldData(groupIndex, filterIndex, data)\n }\n onDeleteFilterFromGroup={(groupIndex, filterIndex) =>\n presenter.deleteFilterFromGroup(groupIndex, filterIndex)\n }\n onAddNewFilterToGroup={groupIndex => presenter.addNewFilterToGroup(groupIndex)}\n onAddGroup={() => presenter.addGroup()}\n fields={props.fields}\n vm={presenter.vm}\n />\n </Drawer>\n );\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useMemo","useRef","observer","Button","Drawer","useHotkeys","QueryBuilder","QueryBuilderDrawerPresenter","QueryBuilderDrawer","filter","props","presenter","load","onChange","data","setFilter","onApply","onValidationError","vm","invalidMessage","onSave","zIndex","disabled","isOpen","keys","esc","onClose","ref","createElement","open","modal","width","title","description","info","onClick","text","variant","actions","Fragment","CancelButton","ConfirmButton","current","submit","headerSeparator","footerSeparator","onForm","form","onSubmit","onDeleteGroup","groupIndex","deleteGroup","onSetFilterFieldData","filterIndex","setFilterFieldData","onDeleteFilterFromGroup","deleteFilterFromGroup","onAddNewFilterToGroup","addNewFilterToGroup","onAddGroup","addGroup","fields"],"sources":["QueryBuilderDrawer.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { Button, Drawer } from \"@webiny/admin-ui\";\nimport { useHotkeys } from \"@webiny/app-admin\";\nimport type { FormAPI } from \"@webiny/form\";\nimport { QueryBuilder } from \"./QueryBuilder/index.js\";\n\nimport type { FieldDTOWithElement, FilterDTO } from \"~/components/AdvancedSearch/domain/index.js\";\n\nimport type { QueryBuilderFormData } from \"./QueryBuilderDrawerPresenter.js\";\nimport { QueryBuilderDrawerPresenter } from \"./QueryBuilderDrawerPresenter.js\";\n\ninterface QueryBuilderDrawerProps {\n fields: FieldDTOWithElement[];\n onClose: () => void;\n onSave: (data: FilterDTO) => void;\n onApply: (data: FilterDTO) => void;\n onValidationError: (message: string) => void;\n filter: FilterDTO;\n vm: {\n isOpen: boolean;\n };\n}\n\nexport const QueryBuilderDrawer = observer(({ filter, ...props }: QueryBuilderDrawerProps) => {\n const presenter = useMemo<QueryBuilderDrawerPresenter>(() => {\n return new QueryBuilderDrawerPresenter();\n }, []);\n\n useEffect(() => {\n presenter.load(filter);\n }, [filter]);\n\n const onChange = (data: QueryBuilderFormData) => {\n presenter.setFilter(data);\n };\n\n const onApply = () => {\n presenter.onApply(\n filter => {\n props.onApply(filter);\n },\n () => {\n props.onValidationError(presenter.vm.invalidMessage);\n }\n );\n };\n\n const onSave = () => {\n presenter.onSave(\n filter => {\n props.onSave(filter);\n },\n () => {\n props.onValidationError(presenter.vm.invalidMessage);\n }\n );\n };\n\n useHotkeys({\n zIndex: 55,\n disabled: !props.vm.isOpen,\n keys: {\n esc: props.onClose\n }\n });\n\n const ref = useRef<FormAPI | null>(null);\n\n return (\n <Drawer\n open={props.vm.isOpen}\n onClose={props.onClose}\n modal={true}\n width={1000}\n title={\"Advanced search filter\"}\n description={\"Create a filter to search for specific content.\"}\n info={<Button onClick={onSave} text={\"Save filter\"} variant={\"secondary\"} />}\n actions={\n <>\n <Drawer.CancelButton text={\"Cancel\"} />\n <Drawer.ConfirmButton\n onClick={() => ref.current?.submit()}\n text={\"Apply filter\"}\n />\n </>\n }\n headerSeparator={true}\n footerSeparator={true}\n >\n <QueryBuilder\n onForm={form => (ref.current = form)}\n onSubmit={onApply}\n onChange={data => onChange(data)}\n onDeleteGroup={groupIndex => presenter.deleteGroup(groupIndex)}\n onSetFilterFieldData={(groupIndex, filterIndex, data) =>\n presenter.setFilterFieldData(groupIndex, filterIndex, data)\n }\n onDeleteFilterFromGroup={(groupIndex, filterIndex) =>\n presenter.deleteFilterFromGroup(groupIndex, filterIndex)\n }\n onAddNewFilterToGroup={groupIndex => presenter.addNewFilterToGroup(groupIndex)}\n onAddGroup={() => presenter.addGroup()}\n fields={props.fields}\n vm={presenter.vm}\n />\n </Drawer>\n );\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { CmsModelField } from "@webiny/app-headless-cms-common/types/model.js";
2
- export type FieldRaw = Pick<CmsModelField, "id" | "type" | "label" | "multipleValues" | "predefinedValues" | "settings">;
2
+ export type FieldRaw = Pick<CmsModelField, "id" | "type" | "label" | "list" | "predefinedValues" | "settings">;
3
3
  export declare enum FieldType {
4
4
  TEXT = "text",
5
5
  NUMBER = "number",
@@ -1 +1 @@
1
- {"version":3,"names":["FieldType","Field","createFromRaw","fieldRaw","label","value","Value","createFromField","type","Type","conditions","Condition","predefined","Predefined","settings","Settings","constructor","rawData","REF","id","createFrom","field","createConditions","map","condition","predefinedValues","enabled","rawPredefined","values","DATETIME_WITH_TIMEZONE","DATETIME_WITHOUT_TIMEZONE","PREDEFINED_VALUES","TIME","DATE","BOOLEAN","NUMBER","TEXT","modelIds","models","model","modelId"],"sources":["Field.ts"],"sourcesContent":["import type { CmsModelField } from \"@webiny/app-headless-cms-common/types/model.js\";\n\nexport type FieldRaw = Pick<\n CmsModelField,\n \"id\" | \"type\" | \"label\" | \"multipleValues\" | \"predefinedValues\" | \"settings\"\n>;\n\nexport enum FieldType {\n TEXT = \"text\",\n NUMBER = \"number\",\n BOOLEAN = \"boolean\",\n DATE = \"date\",\n TIME = \"time\",\n DATETIME_WITH_TIMEZONE = \"dateTimeWithTimezone\",\n DATETIME_WITHOUT_TIMEZONE = \"dateTimeWithoutTimezone\",\n PREDEFINED_VALUES = \"predefinedValues\",\n REF = \"ref\"\n}\n\nexport interface ConditionDTO {\n label: string;\n value: string;\n}\n\nexport interface PredefinedDTO {\n label: string;\n value: string;\n}\n\nexport interface SettingsDTO {\n modelIds: string[];\n}\n\nexport interface FieldDTO {\n label: string;\n value: string;\n conditions: ConditionDTO[];\n type: FieldType;\n predefined: PredefinedDTO[];\n settings: SettingsDTO;\n}\n\nexport interface FieldDTOWithElement extends FieldDTO {\n element: React.ReactElement | null;\n}\n\nexport class Field {\n public readonly label: string;\n public readonly value: Value;\n public readonly type: Type;\n public readonly conditions: Condition[];\n public readonly predefined: Predefined[];\n public readonly settings: Settings;\n\n static createFromRaw(fieldRaw: FieldRaw) {\n const label = fieldRaw.label;\n const value = Value.createFromField(fieldRaw);\n const type = Type.createFromField(fieldRaw);\n const conditions = Condition.createFromField(fieldRaw);\n const predefined = Predefined.createFromField(fieldRaw);\n const settings = Settings.createFromField(fieldRaw);\n\n return new Field(label, value, type, conditions, predefined, settings);\n }\n\n private constructor(\n label: string,\n value: Value,\n type: Type,\n conditions: Condition[],\n predefined: Predefined[],\n settings: Settings\n ) {\n this.label = label;\n this.value = value;\n this.type = type;\n this.predefined = predefined;\n this.conditions = conditions;\n this.settings = settings;\n }\n}\n\nexport class Value {\n public readonly value: string;\n\n static createFromField(rawData: FieldRaw) {\n if (rawData.type === FieldType.REF) {\n return new Value(`${rawData.id}.entryId`);\n }\n\n return new Value(rawData.id);\n }\n\n private constructor(value: string) {\n this.value = value;\n }\n}\n\nexport class Condition {\n public readonly label: string;\n public readonly value: string;\n\n static createFrom(rawData: ConditionDTO) {\n return new Condition(rawData.label, rawData.value);\n }\n\n static createFromField(field: FieldRaw) {\n const createConditions = (conditions: { label: string; value: string }[]) => {\n return conditions.map(condition => this.createFrom(condition));\n };\n\n switch (field.type) {\n case \"text\":\n if (field.predefinedValues?.enabled) {\n return createConditions([\n { label: \"is equal to\", value: \" \" },\n { label: \"is not equal to\", value: \"_not\" }\n ]);\n }\n\n return createConditions([\n { label: \"is equal to\", value: \" \" },\n { label: \"contains\", value: \"_contains\" },\n { label: \"starts with\", value: \"_startsWith\" },\n { label: \"is not equal to\", value: \"_not\" },\n { label: \"doesn't contain\", value: \"_not_contains\" },\n { label: \"doesn't start with\", value: \"_not_startsWith\" }\n ]);\n\n case \"long-text\":\n return createConditions([\n { label: \"contains\", value: \"_contains\" },\n { label: \"doesn't contain\", value: \"_not_contains\" }\n ]);\n\n case \"boolean\":\n return createConditions([\n { label: \"is equal to\", value: \" \" },\n { label: \"is not equal to\", value: \"_not\" }\n ]);\n\n case \"number\":\n return createConditions([\n { label: \"is equal to\", value: \" \" },\n { label: \"is not equal to\", value: \"_not\" },\n { label: \"is less than\", value: \"_lt\" },\n { label: \"is less or equal to\", value: \"_lte\" },\n { label: \"is greater than\", value: \"_gt\" },\n { label: \"is greater or equal to\", value: \"_gte\" }\n ]);\n\n case \"datetime\":\n return createConditions([\n { label: \"is equal to\", value: \" \" },\n { label: \"is not equal to\", value: \"_not\" },\n { label: \"is before\", value: \"_lt\" },\n { label: \"is before or equal to\", value: \"_lte\" },\n { label: \"is after\", value: \"_gt\" },\n { label: \"is after or equal to\", value: \"_gte\" }\n ]);\n\n case \"ref\":\n return createConditions([\n { label: \"contains\", value: \" \" },\n { label: \"doesn't contain\", value: \"_not\" }\n ]);\n\n default:\n return [];\n }\n }\n\n private constructor(label: string, value: string) {\n this.label = label;\n this.value = value;\n }\n}\n\nexport class Predefined {\n public readonly label: string;\n public readonly value: string;\n\n static createFrom(rawData: PredefinedDTO) {\n return new Predefined(rawData.label, rawData.value);\n }\n\n static createFromField(field: FieldRaw) {\n const rawPredefined = field.predefinedValues?.values || [];\n return rawPredefined.map(predefined => this.createFrom(predefined));\n }\n\n private constructor(label: string, value: string) {\n this.label = label;\n this.value = value;\n }\n}\n\nexport class Type {\n public readonly value: FieldType;\n\n static createFromField(rawData: FieldRaw) {\n if (rawData.settings?.type === FieldType.DATETIME_WITH_TIMEZONE) {\n return new Type(FieldType.DATETIME_WITH_TIMEZONE);\n }\n\n if (rawData.settings?.type === FieldType.DATETIME_WITHOUT_TIMEZONE) {\n return new Type(FieldType.DATETIME_WITHOUT_TIMEZONE);\n }\n\n if (rawData.predefinedValues?.enabled) {\n return new Type(FieldType.PREDEFINED_VALUES);\n }\n\n if (rawData.type === \"datetime\") {\n const value =\n rawData.settings?.type === FieldType.TIME ? FieldType.TIME : FieldType.DATE;\n return new Type(value);\n }\n\n if (rawData.type === FieldType.BOOLEAN) {\n return new Type(FieldType.BOOLEAN);\n }\n\n if (rawData.type === FieldType.NUMBER) {\n return new Type(FieldType.NUMBER);\n }\n\n if (rawData.type === FieldType.REF) {\n return new Type(FieldType.REF);\n }\n\n return new Type(FieldType.TEXT);\n }\n\n private constructor(value: FieldType) {\n this.value = value;\n }\n}\n\nexport class Settings {\n public readonly modelIds: string[];\n\n static createFromField(rawData: FieldRaw) {\n const modelIds = rawData.settings?.models?.map(model => model.modelId) || [];\n return new Settings(modelIds);\n }\n\n private constructor(modelIds: string[]) {\n this.modelIds = modelIds;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["FieldType","Field","createFromRaw","fieldRaw","label","value","Value","createFromField","type","Type","conditions","Condition","predefined","Predefined","settings","Settings","constructor","rawData","REF","id","createFrom","field","createConditions","map","condition","predefinedValues","enabled","rawPredefined","values","DATETIME_WITH_TIMEZONE","DATETIME_WITHOUT_TIMEZONE","PREDEFINED_VALUES","TIME","DATE","BOOLEAN","NUMBER","TEXT","modelIds","models","model","modelId"],"sources":["Field.ts"],"sourcesContent":["import type { CmsModelField } from \"@webiny/app-headless-cms-common/types/model.js\";\n\nexport type FieldRaw = Pick<\n CmsModelField,\n \"id\" | \"type\" | \"label\" | \"list\" | \"predefinedValues\" | \"settings\"\n>;\n\nexport enum FieldType {\n TEXT = \"text\",\n NUMBER = \"number\",\n BOOLEAN = \"boolean\",\n DATE = \"date\",\n TIME = \"time\",\n DATETIME_WITH_TIMEZONE = \"dateTimeWithTimezone\",\n DATETIME_WITHOUT_TIMEZONE = \"dateTimeWithoutTimezone\",\n PREDEFINED_VALUES = \"predefinedValues\",\n REF = \"ref\"\n}\n\nexport interface ConditionDTO {\n label: string;\n value: string;\n}\n\nexport interface PredefinedDTO {\n label: string;\n value: string;\n}\n\nexport interface SettingsDTO {\n modelIds: string[];\n}\n\nexport interface FieldDTO {\n label: string;\n value: string;\n conditions: ConditionDTO[];\n type: FieldType;\n predefined: PredefinedDTO[];\n settings: SettingsDTO;\n}\n\nexport interface FieldDTOWithElement extends FieldDTO {\n element: React.ReactElement | null;\n}\n\nexport class Field {\n public readonly label: string;\n public readonly value: Value;\n public readonly type: Type;\n public readonly conditions: Condition[];\n public readonly predefined: Predefined[];\n public readonly settings: Settings;\n\n static createFromRaw(fieldRaw: FieldRaw) {\n const label = fieldRaw.label;\n const value = Value.createFromField(fieldRaw);\n const type = Type.createFromField(fieldRaw);\n const conditions = Condition.createFromField(fieldRaw);\n const predefined = Predefined.createFromField(fieldRaw);\n const settings = Settings.createFromField(fieldRaw);\n\n return new Field(label, value, type, conditions, predefined, settings);\n }\n\n private constructor(\n label: string,\n value: Value,\n type: Type,\n conditions: Condition[],\n predefined: Predefined[],\n settings: Settings\n ) {\n this.label = label;\n this.value = value;\n this.type = type;\n this.predefined = predefined;\n this.conditions = conditions;\n this.settings = settings;\n }\n}\n\nexport class Value {\n public readonly value: string;\n\n static createFromField(rawData: FieldRaw) {\n if (rawData.type === FieldType.REF) {\n return new Value(`${rawData.id}.entryId`);\n }\n\n return new Value(rawData.id);\n }\n\n private constructor(value: string) {\n this.value = value;\n }\n}\n\nexport class Condition {\n public readonly label: string;\n public readonly value: string;\n\n static createFrom(rawData: ConditionDTO) {\n return new Condition(rawData.label, rawData.value);\n }\n\n static createFromField(field: FieldRaw) {\n const createConditions = (conditions: { label: string; value: string }[]) => {\n return conditions.map(condition => this.createFrom(condition));\n };\n\n switch (field.type) {\n case \"text\":\n if (field.predefinedValues?.enabled) {\n return createConditions([\n { label: \"is equal to\", value: \" \" },\n { label: \"is not equal to\", value: \"_not\" }\n ]);\n }\n\n return createConditions([\n { label: \"is equal to\", value: \" \" },\n { label: \"contains\", value: \"_contains\" },\n { label: \"starts with\", value: \"_startsWith\" },\n { label: \"is not equal to\", value: \"_not\" },\n { label: \"doesn't contain\", value: \"_not_contains\" },\n { label: \"doesn't start with\", value: \"_not_startsWith\" }\n ]);\n\n case \"long-text\":\n return createConditions([\n { label: \"contains\", value: \"_contains\" },\n { label: \"doesn't contain\", value: \"_not_contains\" }\n ]);\n\n case \"boolean\":\n return createConditions([\n { label: \"is equal to\", value: \" \" },\n { label: \"is not equal to\", value: \"_not\" }\n ]);\n\n case \"number\":\n return createConditions([\n { label: \"is equal to\", value: \" \" },\n { label: \"is not equal to\", value: \"_not\" },\n { label: \"is less than\", value: \"_lt\" },\n { label: \"is less or equal to\", value: \"_lte\" },\n { label: \"is greater than\", value: \"_gt\" },\n { label: \"is greater or equal to\", value: \"_gte\" }\n ]);\n\n case \"datetime\":\n return createConditions([\n { label: \"is equal to\", value: \" \" },\n { label: \"is not equal to\", value: \"_not\" },\n { label: \"is before\", value: \"_lt\" },\n { label: \"is before or equal to\", value: \"_lte\" },\n { label: \"is after\", value: \"_gt\" },\n { label: \"is after or equal to\", value: \"_gte\" }\n ]);\n\n case \"ref\":\n return createConditions([\n { label: \"contains\", value: \" \" },\n { label: \"doesn't contain\", value: \"_not\" }\n ]);\n\n default:\n return [];\n }\n }\n\n private constructor(label: string, value: string) {\n this.label = label;\n this.value = value;\n }\n}\n\nexport class Predefined {\n public readonly label: string;\n public readonly value: string;\n\n static createFrom(rawData: PredefinedDTO) {\n return new Predefined(rawData.label, rawData.value);\n }\n\n static createFromField(field: FieldRaw) {\n const rawPredefined = field.predefinedValues?.values || [];\n return rawPredefined.map(predefined => this.createFrom(predefined));\n }\n\n private constructor(label: string, value: string) {\n this.label = label;\n this.value = value;\n }\n}\n\nexport class Type {\n public readonly value: FieldType;\n\n static createFromField(rawData: FieldRaw) {\n if (rawData.settings?.type === FieldType.DATETIME_WITH_TIMEZONE) {\n return new Type(FieldType.DATETIME_WITH_TIMEZONE);\n }\n\n if (rawData.settings?.type === FieldType.DATETIME_WITHOUT_TIMEZONE) {\n return new Type(FieldType.DATETIME_WITHOUT_TIMEZONE);\n }\n\n if (rawData.predefinedValues?.enabled) {\n return new Type(FieldType.PREDEFINED_VALUES);\n }\n\n if (rawData.type === \"datetime\") {\n const value =\n rawData.settings?.type === FieldType.TIME ? FieldType.TIME : FieldType.DATE;\n return new Type(value);\n }\n\n if (rawData.type === FieldType.BOOLEAN) {\n return new Type(FieldType.BOOLEAN);\n }\n\n if (rawData.type === FieldType.NUMBER) {\n return new Type(FieldType.NUMBER);\n }\n\n if (rawData.type === FieldType.REF) {\n return new Type(FieldType.REF);\n }\n\n return new Type(FieldType.TEXT);\n }\n\n private constructor(value: FieldType) {\n this.value = value;\n }\n}\n\nexport class Settings {\n public readonly modelIds: string[];\n\n static createFromField(rawData: FieldRaw) {\n const modelIds = rawData.settings?.models?.map(model => model.modelId) || [];\n return new Settings(modelIds);\n }\n\n private constructor(modelIds: string[]) {\n this.modelIds = modelIds;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -22,64 +22,22 @@ export declare const filterValidationSchema: zod.ZodObject<{
22
22
  id: zod.ZodOptional<zod.ZodNullable<zod.ZodOptional<zod.ZodString>>>;
23
23
  name: zod.ZodString;
24
24
  description: zod.ZodString;
25
- operation: zod.ZodEnum<[Operation.AND, Operation.OR]>;
25
+ operation: zod.ZodEnum<{
26
+ AND: Operation.AND;
27
+ OR: Operation.OR;
28
+ }>;
26
29
  groups: zod.ZodArray<zod.ZodObject<{
27
- operation: zod.ZodEnum<[Operation.AND, Operation.OR]>;
30
+ operation: zod.ZodEnum<{
31
+ AND: Operation.AND;
32
+ OR: Operation.OR;
33
+ }>;
28
34
  filters: zod.ZodArray<zod.ZodObject<{
29
35
  field: zod.ZodString;
30
36
  condition: zod.ZodString;
31
- value: zod.ZodUnion<[zod.ZodBoolean, zod.ZodNumber, zod.ZodString, zod.ZodArray<zod.ZodUnion<[zod.ZodBoolean, zod.ZodNumber, zod.ZodString]>, "atleastone">]>;
32
- }, "strip", zod.ZodTypeAny, {
33
- field: string;
34
- condition: string;
35
- value: string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]];
36
- }, {
37
- field: string;
38
- condition: string;
39
- value: string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]];
40
- }>, "many">;
41
- }, "strip", zod.ZodTypeAny, {
42
- operation: Operation;
43
- filters: {
44
- field: string;
45
- condition: string;
46
- value: string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]];
47
- }[];
48
- }, {
49
- operation: Operation;
50
- filters: {
51
- field: string;
52
- condition: string;
53
- value: string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]];
54
- }[];
55
- }>, "many">;
56
- }, "strip", zod.ZodTypeAny, {
57
- name: string;
58
- description: string;
59
- operation: Operation;
60
- groups: {
61
- operation: Operation;
62
- filters: {
63
- field: string;
64
- condition: string;
65
- value: string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]];
66
- }[];
67
- }[];
68
- id?: string | null | undefined;
69
- }, {
70
- name: string;
71
- description: string;
72
- operation: Operation;
73
- groups: {
74
- operation: Operation;
75
- filters: {
76
- field: string;
77
- condition: string;
78
- value: string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]];
79
- }[];
80
- }[];
81
- id?: string | null | undefined;
82
- }>;
37
+ value: zod.ZodUnion<readonly [zod.ZodBoolean, zod.ZodNumber, zod.ZodString, zod.ZodArray<zod.ZodUnion<readonly [zod.ZodBoolean, zod.ZodNumber, zod.ZodString]>>]>;
38
+ }, zod.core.$strip>>;
39
+ }, zod.core.$strip>>;
40
+ }, zod.core.$strip>;
83
41
  export declare class Filter {
84
42
  readonly operations: typeof Operation;
85
43
  readonly id: string;
@@ -90,20 +48,7 @@ export declare class Filter {
90
48
  createdOn?: string;
91
49
  static createEmpty(): Filter;
92
50
  static create(data: FilterDTO): Filter;
93
- static validate(data: FilterDTO): zod.SafeParseReturnType<{
94
- name: string;
95
- description: string;
96
- operation: Operation;
97
- groups: {
98
- operation: Operation;
99
- filters: {
100
- field: string;
101
- condition: string;
102
- value: string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]];
103
- }[];
104
- }[];
105
- id?: string | null | undefined;
106
- }, {
51
+ static validate(data: FilterDTO): zod.ZodSafeParseResult<{
107
52
  name: string;
108
53
  description: string;
109
54
  operation: Operation;
@@ -112,7 +57,7 @@ export declare class Filter {
112
57
  filters: {
113
58
  field: string;
114
59
  condition: string;
115
- value: string | number | boolean | [string | number | boolean, ...(string | number | boolean)[]];
60
+ value: string | number | boolean | (string | number | boolean)[];
116
61
  }[];
117
62
  }[];
118
63
  id?: string | null | undefined;
@@ -5,8 +5,7 @@ const filterGroupFilterValidationSchema = zod.object({
5
5
  field: zod.string().trim().nonempty("Field is required."),
6
6
  condition: zod.string().nonempty("Condition is required."),
7
7
  value: zod.union([zod.boolean(), zod.number({
8
- required_error: "Value is required.",
9
- invalid_type_error: "Value must be a number."
8
+ error: "Value is required."
10
9
  }), zod.string().trim().nonempty("Value is required."), zod.array(zod.union([zod.boolean(), zod.number(), zod.string()])).nonempty("At least one value is required.")])
11
10
  });
12
11
  const filterGroupValidationSchema = zod.object({
@@ -1 +1 @@
1
- {"version":3,"names":["zod","Operation","operationValidator","enum","AND","OR","filterGroupFilterValidationSchema","object","field","string","trim","nonempty","condition","value","union","boolean","number","required_error","invalid_type_error","array","filterGroupValidationSchema","operation","filters","min","filterValidationSchema","id","optional","nullish","name","description","groups","Filter","operations","createEmpty","FilterGroup","FilterGroupFilter","create","data","validate","safeParse","constructor","createdOn"],"sources":["Filter.ts"],"sourcesContent":["import zod from \"zod\";\nimport { Operation } from \"./Operation.js\";\n\nexport interface FilterGroupFilterDTO {\n field: string;\n condition: string;\n value: string;\n}\n\nexport interface FilterGroupDTO {\n operation: Operation;\n filters: FilterGroupFilterDTO[];\n}\n\nexport interface FilterDTO {\n id: string;\n name: string;\n description?: string;\n operation: Operation;\n groups: FilterGroupDTO[];\n createdOn?: string;\n}\n\nexport type FilterStorage = Omit<FilterDTO, \"createdOn\">;\n\nconst operationValidator = zod.enum([Operation.AND, Operation.OR]);\n\nconst filterGroupFilterValidationSchema = zod.object({\n field: zod.string().trim().nonempty(\"Field is required.\"),\n condition: zod.string().nonempty(\"Condition is required.\"),\n value: zod.union([\n zod.boolean(),\n zod.number({\n required_error: \"Value is required.\",\n invalid_type_error: \"Value must be a number.\"\n }),\n zod.string().trim().nonempty(\"Value is required.\"),\n zod\n .array(zod.union([zod.boolean(), zod.number(), zod.string()]))\n .nonempty(\"At least one value is required.\")\n ])\n});\n\nconst filterGroupValidationSchema = zod.object({\n operation: operationValidator,\n filters: zod.array(filterGroupFilterValidationSchema).min(1)\n});\n\nexport const filterValidationSchema = zod.object({\n id: zod.string().trim().optional().nullish(),\n name: zod.string().trim().nonempty(\"Name is required.\"),\n description: zod.string().trim(),\n operation: operationValidator,\n groups: zod.array(filterGroupValidationSchema).min(1)\n});\n\nexport class Filter {\n public readonly operations = Operation;\n public readonly id;\n public name;\n public description;\n public operation: Operation;\n public groups: FilterGroup[];\n public createdOn?: string;\n\n static createEmpty() {\n return new Filter({\n operation: Operation.AND,\n groups: [new FilterGroup(Operation.AND, [new FilterGroupFilter()])]\n });\n }\n\n static create(data: FilterDTO) {\n return new Filter(data);\n }\n\n static validate(data: FilterDTO) {\n return filterValidationSchema.safeParse(data);\n }\n\n protected constructor(data: {\n operation: Operation;\n groups: FilterGroup[];\n id?: string;\n name?: string;\n description?: string;\n createdOn?: string;\n }) {\n this.id = data.id ?? \"\";\n this.name = data.name ?? \"Draft filter\";\n this.description = data.description ?? \"\";\n this.operation = data.operation;\n this.groups = data.groups;\n this.createdOn = data.createdOn;\n }\n}\n\nexport class FilterGroup {\n public readonly operation: Operation;\n public readonly filters: FilterGroupFilter[];\n\n constructor(operation: Operation, filters: FilterGroupFilter[]) {\n this.operation = operation;\n this.filters = filters;\n }\n}\n\nexport class FilterGroupFilter {\n public readonly field?: string;\n public readonly condition?: string;\n public readonly value?: string;\n\n constructor(field?: string, condition?: string, value?: string) {\n this.field = field;\n this.condition = condition;\n this.value = value;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["zod","Operation","operationValidator","enum","AND","OR","filterGroupFilterValidationSchema","object","field","string","trim","nonempty","condition","value","union","boolean","number","error","array","filterGroupValidationSchema","operation","filters","min","filterValidationSchema","id","optional","nullish","name","description","groups","Filter","operations","createEmpty","FilterGroup","FilterGroupFilter","create","data","validate","safeParse","constructor","createdOn"],"sources":["Filter.ts"],"sourcesContent":["import zod from \"zod\";\nimport { Operation } from \"./Operation.js\";\n\nexport interface FilterGroupFilterDTO {\n field: string;\n condition: string;\n value: string;\n}\n\nexport interface FilterGroupDTO {\n operation: Operation;\n filters: FilterGroupFilterDTO[];\n}\n\nexport interface FilterDTO {\n id: string;\n name: string;\n description?: string;\n operation: Operation;\n groups: FilterGroupDTO[];\n createdOn?: string;\n}\n\nexport type FilterStorage = Omit<FilterDTO, \"createdOn\">;\n\nconst operationValidator = zod.enum([Operation.AND, Operation.OR]);\n\nconst filterGroupFilterValidationSchema = zod.object({\n field: zod.string().trim().nonempty(\"Field is required.\"),\n condition: zod.string().nonempty(\"Condition is required.\"),\n value: zod.union([\n zod.boolean(),\n zod.number({ error: \"Value is required.\" }),\n zod.string().trim().nonempty(\"Value is required.\"),\n zod\n .array(zod.union([zod.boolean(), zod.number(), zod.string()]))\n .nonempty(\"At least one value is required.\")\n ])\n});\n\nconst filterGroupValidationSchema = zod.object({\n operation: operationValidator,\n filters: zod.array(filterGroupFilterValidationSchema).min(1)\n});\n\nexport const filterValidationSchema = zod.object({\n id: zod.string().trim().optional().nullish(),\n name: zod.string().trim().nonempty(\"Name is required.\"),\n description: zod.string().trim(),\n operation: operationValidator,\n groups: zod.array(filterGroupValidationSchema).min(1)\n});\n\nexport class Filter {\n public readonly operations = Operation;\n public readonly id;\n public name;\n public description;\n public operation: Operation;\n public groups: FilterGroup[];\n public createdOn?: string;\n\n static createEmpty() {\n return new Filter({\n operation: Operation.AND,\n groups: [new FilterGroup(Operation.AND, [new FilterGroupFilter()])]\n });\n }\n\n static create(data: FilterDTO) {\n return new Filter(data);\n }\n\n static validate(data: FilterDTO) {\n return filterValidationSchema.safeParse(data);\n }\n\n protected constructor(data: {\n operation: Operation;\n groups: FilterGroup[];\n id?: string;\n name?: string;\n description?: string;\n createdOn?: string;\n }) {\n this.id = data.id ?? \"\";\n this.name = data.name ?? \"Draft filter\";\n this.description = data.description ?? \"\";\n this.operation = data.operation;\n this.groups = data.groups;\n this.createdOn = data.createdOn;\n }\n}\n\nexport class FilterGroup {\n public readonly operation: Operation;\n public readonly filters: FilterGroupFilter[];\n\n constructor(operation: Operation, filters: FilterGroupFilter[]) {\n this.operation = operation;\n this.filters = filters;\n }\n}\n\nexport class FilterGroupFilter {\n public readonly field?: string;\n public readonly condition?: string;\n public readonly value?: string;\n\n constructor(field?: string, condition?: string, value?: string) {\n this.field = field;\n this.condition = condition;\n this.value = value;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ export interface FolderPickerProps {
3
+ label: string;
4
+ value: string;
5
+ onChange: (id: string) => void;
6
+ enableCreate?: boolean;
7
+ }
8
+ export declare const FolderPicker: ({ label, value, onChange, enableCreate }: FolderPickerProps) => React.JSX.Element;
@@ -0,0 +1,24 @@
1
+ import React, { useCallback } from "react";
2
+ import { cn, FormComponentLabel } from "@webiny/admin-ui";
3
+ import { FolderTree } from "../index.js";
4
+ export const FolderPicker = ({
5
+ label,
6
+ value,
7
+ onChange,
8
+ enableCreate = true
9
+ }) => {
10
+ const onFolderChange = useCallback(folder => {
11
+ onChange(folder.id);
12
+ }, [onChange]);
13
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(FormComponentLabel, {
14
+ text: label
15
+ }), /*#__PURE__*/React.createElement("div", {
16
+ className: cn(["px-sm-extra py-sm-extra", "border-sm border-neutral-muted rounded-md", "bg-neutral-base", "max-h-[280px] overflow-x-hidden overflow-y-scroll"])
17
+ }, /*#__PURE__*/React.createElement(FolderTree, {
18
+ focusedFolderId: value,
19
+ onFolderClick: onFolderChange,
20
+ enableCreate: enableCreate
21
+ })));
22
+ };
23
+
24
+ //# sourceMappingURL=FolderPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","cn","FormComponentLabel","FolderTree","FolderPicker","label","value","onChange","enableCreate","onFolderChange","folder","id","createElement","text","className","focusedFolderId","onFolderClick"],"sources":["FolderPicker.tsx"],"sourcesContent":["import React, { useCallback } from \"react\";\nimport { cn, FormComponentLabel } from \"@webiny/admin-ui\";\nimport { FolderTree } from \"~/components/index.js\";\nimport type { FolderDto } from \"~/domain/folder/FolderDto.js\";\n\nexport interface FolderPickerProps {\n label: string;\n value: string;\n onChange: (id: string) => void;\n enableCreate?: boolean;\n}\n\nexport const FolderPicker = ({\n label,\n value,\n onChange,\n enableCreate = true\n}: FolderPickerProps) => {\n const onFolderChange = useCallback(\n (folder: FolderDto) => {\n onChange(folder.id);\n },\n [onChange]\n );\n\n return (\n <div>\n <FormComponentLabel text={label} />\n <div\n className={cn([\n \"px-sm-extra py-sm-extra\",\n \"border-sm border-neutral-muted rounded-md\",\n \"bg-neutral-base\",\n \"max-h-[280px] overflow-x-hidden overflow-y-scroll\"\n ])}\n >\n <FolderTree\n focusedFolderId={value}\n onFolderClick={onFolderChange}\n enableCreate={enableCreate}\n />\n </div>\n </div>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,EAAE,EAAEC,kBAAkB,QAAQ,kBAAkB;AACzD,SAASC,UAAU;AAUnB,OAAO,MAAMC,YAAY,GAAGA,CAAC;EACzBC,KAAK;EACLC,KAAK;EACLC,QAAQ;EACRC,YAAY,GAAG;AACA,CAAC,KAAK;EACrB,MAAMC,cAAc,GAAGT,WAAW,CAC7BU,MAAiB,IAAK;IACnBH,QAAQ,CAACG,MAAM,CAACC,EAAE,CAAC;EACvB,CAAC,EACD,CAACJ,QAAQ,CACb,CAAC;EAED,oBACIR,KAAA,CAAAa,aAAA,2BACIb,KAAA,CAAAa,aAAA,CAACV,kBAAkB;IAACW,IAAI,EAAER;EAAM,CAAE,CAAC,eACnCN,KAAA,CAAAa,aAAA;IACIE,SAAS,EAAEb,EAAE,CAAC,CACV,yBAAyB,EACzB,2CAA2C,EAC3C,iBAAiB,EACjB,mDAAmD,CACtD;EAAE,gBAEHF,KAAA,CAAAa,aAAA,CAACT,UAAU;IACPY,eAAe,EAAET,KAAM;IACvBU,aAAa,EAAEP,cAAe;IAC9BD,YAAY,EAAEA;EAAa,CAC9B,CACA,CACJ,CAAC;AAEd,CAAC","ignoreList":[]}
@@ -27,6 +27,7 @@ describe("ColumnsVisibilityPresenter", () => {
27
27
  header: "Id",
28
28
  hideable: true,
29
29
  name: "id",
30
+ truncate: true,
30
31
  resizable: true,
31
32
  size: 200,
32
33
  sortable: true,
@@ -37,6 +38,7 @@ describe("ColumnsVisibilityPresenter", () => {
37
38
  header: "Title",
38
39
  hideable: true,
39
40
  name: "title",
41
+ truncate: true,
40
42
  resizable: true,
41
43
  size: 200,
42
44
  sortable: true,
@@ -47,6 +49,7 @@ describe("ColumnsVisibilityPresenter", () => {
47
49
  header: "Date",
48
50
  hideable: true,
49
51
  name: "date",
52
+ truncate: true,
50
53
  resizable: true,
51
54
  size: 200,
52
55
  sortable: true,
@@ -1 +1 @@
1
- {"version":3,"names":["describe","it","expect","beforeEach","vi","ColumnsVisibilityPresenter","Column","ColumnsPresenter","ColumnsRepository","ColumnsVisibilityRepository","ColumnsVisibilityDecorator","ColumnsVisibilityUpdater","defaultGateway","get","fn","set","createMockGateway","columnConfigs","cell","className","header","hideable","name","resizable","size","sortable","visible","clearAllMocks","columnsRepo","map","config","createFromConfig","visibilityRepo","repo","columnsPresenter","columnsVisibilityPresenter","init","toBeCalledTimes","vm","toEqual","columnsVisibility","id","title","date","gateway","mockImplementation","columnsVisibilityUpdater","initial","updater","current","update"],"sources":["ColumnsVisibilityPresenter.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach, vi } from \"vitest\";\nimport { ColumnsVisibilityPresenter } from \"./ColumnsVisibilityPresenter.js\";\nimport { type IColumnsVisibilityGateway } from \"../gateways/index.js\";\nimport { type ColumnConfig } from \"~/config/table/Column.js\";\nimport { Column, ColumnsPresenter, ColumnsRepository } from \"../Columns/index.js\";\nimport { ColumnsVisibilityRepository } from \"./ColumnsVisibilityRepository.js\";\nimport { ColumnsVisibilityDecorator } from \"./ColumnsVisibilityDecorator.js\";\nimport { ColumnsVisibilityUpdater } from \"~/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js\";\n\nconst defaultGateway: IColumnsVisibilityGateway = {\n get: vi.fn<IColumnsVisibilityGateway[\"get\"]>(),\n set: vi.fn<IColumnsVisibilityGateway[\"set\"]>()\n};\n\nconst createMockGateway = ({\n get,\n set\n}: Partial<IColumnsVisibilityGateway>): IColumnsVisibilityGateway => ({\n ...defaultGateway,\n ...(get && { get }),\n ...(set && { set })\n});\n\ndescribe(\"ColumnsVisibilityPresenter\", () => {\n const columnConfigs: ColumnConfig[] = [\n {\n cell: \"Id Cell Content\",\n className: \"id-class\",\n header: \"Id\",\n hideable: true,\n name: \"id\",\n resizable: true,\n size: 200,\n sortable: true,\n visible: true\n },\n {\n cell: \"Title Cell Content\",\n className: \"title-class\",\n header: \"Title\",\n hideable: true,\n name: \"title\",\n resizable: true,\n size: 200,\n sortable: true,\n visible: true\n },\n {\n cell: \"Date Cell Content\",\n className: \"date-class\",\n header: \"Date\",\n hideable: true,\n name: \"date\",\n resizable: true,\n size: 200,\n sortable: true,\n visible: false\n }\n ];\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should return the columns visibility from the column config\", async () => {\n // Let's create repositories and presenters\n const columnsRepo = new ColumnsRepository(\n columnConfigs.map(config => Column.createFromConfig(config))\n );\n const visibilityRepo = new ColumnsVisibilityRepository(defaultGateway);\n const repo = new ColumnsVisibilityDecorator(visibilityRepo, columnsRepo);\n\n const columnsPresenter = new ColumnsPresenter(repo);\n const columnsVisibilityPresenter = new ColumnsVisibilityPresenter(columnsPresenter);\n\n // Let's init the ColumnsPresenter\n await columnsPresenter.init();\n\n expect(defaultGateway.get).toBeCalledTimes(1);\n\n expect(columnsVisibilityPresenter.vm).toEqual({\n columnsVisibility: {\n id: true,\n title: true,\n date: false\n }\n });\n });\n\n it(\"should return the columns visibility from both the column configs and the gateway\", async () => {\n // Let's create a mocked gateway\n const gateway = createMockGateway({\n get: vi\n .fn<IColumnsVisibilityGateway[\"get\"]>()\n .mockImplementation(async () => ({ title: false }))\n });\n\n // Let's create repositories and presenters\n const columnsRepo = new ColumnsRepository(\n columnConfigs.map(config => Column.createFromConfig(config))\n );\n const visibilityRepo = new ColumnsVisibilityRepository(gateway);\n const repo = new ColumnsVisibilityDecorator(visibilityRepo, columnsRepo);\n\n const columnsPresenter = new ColumnsPresenter(repo);\n const columnsVisibilityPresenter = new ColumnsVisibilityPresenter(columnsPresenter);\n\n // Let's init the ColumnsPresenter\n await columnsPresenter.init();\n\n expect(gateway.get).toBeCalledTimes(1);\n\n expect(columnsVisibilityPresenter.vm).toEqual({\n columnsVisibility: {\n id: true,\n title: false, // title is defined true in the config, but defined false in the gateway\n date: false\n }\n });\n });\n\n it(\"should be able to update the visibility via `ColumnsVisibilityUpdater`\", async () => {\n // Let's create repositories and presenters\n const columnsRepo = new ColumnsRepository(\n columnConfigs.map(config => Column.createFromConfig(config))\n );\n const visibilityRepo = new ColumnsVisibilityRepository(defaultGateway);\n const repo = new ColumnsVisibilityDecorator(visibilityRepo, columnsRepo);\n\n const columnsPresenter = new ColumnsPresenter(repo);\n const columnsVisibilityPresenter = new ColumnsVisibilityPresenter(columnsPresenter);\n\n // Let's create ColumnsVisibilityUpdater\n const columnsVisibilityUpdater = new ColumnsVisibilityUpdater(visibilityRepo);\n\n // Let's init the ColumnsPresenter\n await columnsPresenter.init();\n\n // Let's check the initial state\n const initial = columnsVisibilityPresenter.vm.columnsVisibility;\n expect(initial).toEqual({\n id: true,\n title: true,\n date: false\n });\n\n // Let's update the visibility\n const updater = vi\n .fn<any>()\n .mockImplementation((current: any) => ({ ...current, title: false }));\n\n await columnsVisibilityUpdater.update(updater);\n\n expect(columnsVisibilityPresenter.vm).toEqual({\n columnsVisibility: {\n id: true,\n title: false,\n date: false\n }\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["describe","it","expect","beforeEach","vi","ColumnsVisibilityPresenter","Column","ColumnsPresenter","ColumnsRepository","ColumnsVisibilityRepository","ColumnsVisibilityDecorator","ColumnsVisibilityUpdater","defaultGateway","get","fn","set","createMockGateway","columnConfigs","cell","className","header","hideable","name","truncate","resizable","size","sortable","visible","clearAllMocks","columnsRepo","map","config","createFromConfig","visibilityRepo","repo","columnsPresenter","columnsVisibilityPresenter","init","toBeCalledTimes","vm","toEqual","columnsVisibility","id","title","date","gateway","mockImplementation","columnsVisibilityUpdater","initial","updater","current","update"],"sources":["ColumnsVisibilityPresenter.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach, vi } from \"vitest\";\nimport { ColumnsVisibilityPresenter } from \"./ColumnsVisibilityPresenter.js\";\nimport { type IColumnsVisibilityGateway } from \"../gateways/index.js\";\nimport { type ColumnConfig } from \"~/config/table/Column.js\";\nimport { Column, ColumnsPresenter, ColumnsRepository } from \"../Columns/index.js\";\nimport { ColumnsVisibilityRepository } from \"./ColumnsVisibilityRepository.js\";\nimport { ColumnsVisibilityDecorator } from \"./ColumnsVisibilityDecorator.js\";\nimport { ColumnsVisibilityUpdater } from \"~/components/Table/components/Table/ColumnVisibility/ColumnsVisibilityUpdater.js\";\n\nconst defaultGateway: IColumnsVisibilityGateway = {\n get: vi.fn<IColumnsVisibilityGateway[\"get\"]>(),\n set: vi.fn<IColumnsVisibilityGateway[\"set\"]>()\n};\n\nconst createMockGateway = ({\n get,\n set\n}: Partial<IColumnsVisibilityGateway>): IColumnsVisibilityGateway => ({\n ...defaultGateway,\n ...(get && { get }),\n ...(set && { set })\n});\n\ndescribe(\"ColumnsVisibilityPresenter\", () => {\n const columnConfigs: ColumnConfig[] = [\n {\n cell: \"Id Cell Content\",\n className: \"id-class\",\n header: \"Id\",\n hideable: true,\n name: \"id\",\n truncate: true,\n resizable: true,\n size: 200,\n sortable: true,\n visible: true\n },\n {\n cell: \"Title Cell Content\",\n className: \"title-class\",\n header: \"Title\",\n hideable: true,\n name: \"title\",\n truncate: true,\n resizable: true,\n size: 200,\n sortable: true,\n visible: true\n },\n {\n cell: \"Date Cell Content\",\n className: \"date-class\",\n header: \"Date\",\n hideable: true,\n name: \"date\",\n truncate: true,\n resizable: true,\n size: 200,\n sortable: true,\n visible: false\n }\n ];\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should return the columns visibility from the column config\", async () => {\n // Let's create repositories and presenters\n const columnsRepo = new ColumnsRepository(\n columnConfigs.map(config => Column.createFromConfig(config))\n );\n const visibilityRepo = new ColumnsVisibilityRepository(defaultGateway);\n const repo = new ColumnsVisibilityDecorator(visibilityRepo, columnsRepo);\n\n const columnsPresenter = new ColumnsPresenter(repo);\n const columnsVisibilityPresenter = new ColumnsVisibilityPresenter(columnsPresenter);\n\n // Let's init the ColumnsPresenter\n await columnsPresenter.init();\n\n expect(defaultGateway.get).toBeCalledTimes(1);\n\n expect(columnsVisibilityPresenter.vm).toEqual({\n columnsVisibility: {\n id: true,\n title: true,\n date: false\n }\n });\n });\n\n it(\"should return the columns visibility from both the column configs and the gateway\", async () => {\n // Let's create a mocked gateway\n const gateway = createMockGateway({\n get: vi\n .fn<IColumnsVisibilityGateway[\"get\"]>()\n .mockImplementation(async () => ({ title: false }))\n });\n\n // Let's create repositories and presenters\n const columnsRepo = new ColumnsRepository(\n columnConfigs.map(config => Column.createFromConfig(config))\n );\n const visibilityRepo = new ColumnsVisibilityRepository(gateway);\n const repo = new ColumnsVisibilityDecorator(visibilityRepo, columnsRepo);\n\n const columnsPresenter = new ColumnsPresenter(repo);\n const columnsVisibilityPresenter = new ColumnsVisibilityPresenter(columnsPresenter);\n\n // Let's init the ColumnsPresenter\n await columnsPresenter.init();\n\n expect(gateway.get).toBeCalledTimes(1);\n\n expect(columnsVisibilityPresenter.vm).toEqual({\n columnsVisibility: {\n id: true,\n title: false, // title is defined true in the config, but defined false in the gateway\n date: false\n }\n });\n });\n\n it(\"should be able to update the visibility via `ColumnsVisibilityUpdater`\", async () => {\n // Let's create repositories and presenters\n const columnsRepo = new ColumnsRepository(\n columnConfigs.map(config => Column.createFromConfig(config))\n );\n const visibilityRepo = new ColumnsVisibilityRepository(defaultGateway);\n const repo = new ColumnsVisibilityDecorator(visibilityRepo, columnsRepo);\n\n const columnsPresenter = new ColumnsPresenter(repo);\n const columnsVisibilityPresenter = new ColumnsVisibilityPresenter(columnsPresenter);\n\n // Let's create ColumnsVisibilityUpdater\n const columnsVisibilityUpdater = new ColumnsVisibilityUpdater(visibilityRepo);\n\n // Let's init the ColumnsPresenter\n await columnsPresenter.init();\n\n // Let's check the initial state\n const initial = columnsVisibilityPresenter.vm.columnsVisibility;\n expect(initial).toEqual({\n id: true,\n title: true,\n date: false\n });\n\n // Let's update the visibility\n const updater = vi\n .fn<any>()\n .mockImplementation((current: any) => ({ ...current, title: false }));\n\n await columnsVisibilityUpdater.update(updater);\n\n expect(columnsVisibilityPresenter.vm).toEqual({\n columnsVisibility: {\n id: true,\n title: false,\n date: false\n }\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -3,33 +3,39 @@ import type { ColumnConfig } from "../../../../../config/table/Column.js";
3
3
  export interface ColumnDTO {
4
4
  cell: string | ReactElement;
5
5
  className: string;
6
- header: string | number | JSX.Element;
6
+ header: string | number | React.JSX.Element;
7
7
  hideable: boolean;
8
8
  name: string;
9
+ path?: string;
9
10
  resizable: boolean;
10
11
  size: number;
11
12
  sortable: boolean;
13
+ truncate: boolean;
12
14
  visible: boolean;
13
15
  }
14
16
  export declare class Column {
15
17
  cell: string | ReactElement;
16
18
  className: string;
17
- header: string | number | JSX.Element;
19
+ header: string | number | React.JSX.Element;
18
20
  hideable: boolean;
19
21
  name: string;
22
+ path?: string;
20
23
  resizable: boolean;
21
24
  size: number;
22
25
  sortable: boolean;
26
+ truncate: boolean;
23
27
  visible: boolean;
24
28
  static createFromConfig(config: ColumnConfig): Column;
25
29
  protected constructor(data: {
26
30
  name: string;
27
- header: string | number | JSX.Element;
31
+ header: string | number | React.JSX.Element;
28
32
  cell: string | ReactElement;
29
33
  size?: number;
30
34
  className?: string;
31
35
  hideable?: boolean;
36
+ path?: string;
32
37
  sortable?: boolean;
38
+ truncate?: boolean;
33
39
  resizable?: boolean;
34
40
  visible?: boolean;
35
41
  });
@@ -9,7 +9,9 @@ export class Column {
9
9
  this.size = data.size || 100;
10
10
  this.className = data.className || "";
11
11
  this.hideable = data.hideable ?? true;
12
+ this.path = data.path || "";
12
13
  this.sortable = data.sortable ?? false;
14
+ this.truncate = data.truncate ?? true;
13
15
  this.resizable = data.resizable ?? true;
14
16
  this.visible = data.visible ?? true;
15
17
  }
@@ -1 +1 @@
1
- {"version":3,"names":["Column","createFromConfig","config","constructor","data","name","header","cell","size","className","hideable","sortable","resizable","visible"],"sources":["Column.ts"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport type { ColumnConfig } from \"~/config/table/Column.js\";\n\nexport interface ColumnDTO {\n cell: string | ReactElement;\n className: string;\n header: string | number | JSX.Element;\n hideable: boolean;\n name: string;\n resizable: boolean;\n size: number;\n sortable: boolean;\n visible: boolean;\n}\n\nexport class Column {\n public cell: string | ReactElement;\n public className: string;\n public header: string | number | JSX.Element;\n public hideable: boolean;\n public name: string;\n public resizable: boolean;\n public size: number;\n public sortable: boolean;\n public visible: boolean;\n\n static createFromConfig(config: ColumnConfig) {\n return new Column(config);\n }\n\n protected constructor(data: {\n name: string;\n header: string | number | JSX.Element;\n cell: string | ReactElement;\n size?: number;\n className?: string;\n hideable?: boolean;\n sortable?: boolean;\n resizable?: boolean;\n visible?: boolean;\n }) {\n this.name = data.name;\n this.header = data.header;\n this.cell = data.cell;\n this.size = data.size || 100;\n this.className = data.className || \"\";\n this.hideable = data.hideable ?? true;\n this.sortable = data.sortable ?? false;\n this.resizable = data.resizable ?? true;\n this.visible = data.visible ?? true;\n }\n}\n"],"mappings":"AAeA,OAAO,MAAMA,MAAM,CAAC;EAWhB,OAAOC,gBAAgBA,CAACC,MAAoB,EAAE;IAC1C,OAAO,IAAIF,MAAM,CAACE,MAAM,CAAC;EAC7B;EAEUC,WAAWA,CAACC,IAUrB,EAAE;IACC,IAAI,CAACC,IAAI,GAAGD,IAAI,CAACC,IAAI;IACrB,IAAI,CAACC,MAAM,GAAGF,IAAI,CAACE,MAAM;IACzB,IAAI,CAACC,IAAI,GAAGH,IAAI,CAACG,IAAI;IACrB,IAAI,CAACC,IAAI,GAAGJ,IAAI,CAACI,IAAI,IAAI,GAAG;IAC5B,IAAI,CAACC,SAAS,GAAGL,IAAI,CAACK,SAAS,IAAI,EAAE;IACrC,IAAI,CAACC,QAAQ,GAAGN,IAAI,CAACM,QAAQ,IAAI,IAAI;IACrC,IAAI,CAACC,QAAQ,GAAGP,IAAI,CAACO,QAAQ,IAAI,KAAK;IACtC,IAAI,CAACC,SAAS,GAAGR,IAAI,CAACQ,SAAS,IAAI,IAAI;IACvC,IAAI,CAACC,OAAO,GAAGT,IAAI,CAACS,OAAO,IAAI,IAAI;EACvC;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["Column","createFromConfig","config","constructor","data","name","header","cell","size","className","hideable","path","sortable","truncate","resizable","visible"],"sources":["Column.ts"],"sourcesContent":["import type { ReactElement } from \"react\";\nimport type { ColumnConfig } from \"~/config/table/Column.js\";\n\nexport interface ColumnDTO {\n cell: string | ReactElement;\n className: string;\n header: string | number | React.JSX.Element;\n hideable: boolean;\n name: string;\n path?: string;\n resizable: boolean;\n size: number;\n sortable: boolean;\n truncate: boolean;\n visible: boolean;\n}\n\nexport class Column {\n public cell: string | ReactElement;\n public className: string;\n public header: string | number | React.JSX.Element;\n public hideable: boolean;\n public name: string;\n public path?: string;\n public resizable: boolean;\n public size: number;\n public sortable: boolean;\n public truncate: boolean;\n public visible: boolean;\n\n static createFromConfig(config: ColumnConfig) {\n return new Column(config);\n }\n\n protected constructor(data: {\n name: string;\n header: string | number | React.JSX.Element;\n cell: string | ReactElement;\n size?: number;\n className?: string;\n hideable?: boolean;\n path?: string;\n sortable?: boolean;\n truncate?: boolean;\n resizable?: boolean;\n visible?: boolean;\n }) {\n this.name = data.name;\n this.header = data.header;\n this.cell = data.cell;\n this.size = data.size || 100;\n this.className = data.className || \"\";\n this.hideable = data.hideable ?? true;\n this.path = data.path || \"\";\n this.sortable = data.sortable ?? false;\n this.truncate = data.truncate ?? true;\n this.resizable = data.resizable ?? true;\n this.visible = data.visible ?? true;\n }\n}\n"],"mappings":"AAiBA,OAAO,MAAMA,MAAM,CAAC;EAahB,OAAOC,gBAAgBA,CAACC,MAAoB,EAAE;IAC1C,OAAO,IAAIF,MAAM,CAACE,MAAM,CAAC;EAC7B;EAEUC,WAAWA,CAACC,IAYrB,EAAE;IACC,IAAI,CAACC,IAAI,GAAGD,IAAI,CAACC,IAAI;IACrB,IAAI,CAACC,MAAM,GAAGF,IAAI,CAACE,MAAM;IACzB,IAAI,CAACC,IAAI,GAAGH,IAAI,CAACG,IAAI;IACrB,IAAI,CAACC,IAAI,GAAGJ,IAAI,CAACI,IAAI,IAAI,GAAG;IAC5B,IAAI,CAACC,SAAS,GAAGL,IAAI,CAACK,SAAS,IAAI,EAAE;IACrC,IAAI,CAACC,QAAQ,GAAGN,IAAI,CAACM,QAAQ,IAAI,IAAI;IACrC,IAAI,CAACC,IAAI,GAAGP,IAAI,CAACO,IAAI,IAAI,EAAE;IAC3B,IAAI,CAACC,QAAQ,GAAGR,IAAI,CAACQ,QAAQ,IAAI,KAAK;IACtC,IAAI,CAACC,QAAQ,GAAGT,IAAI,CAACS,QAAQ,IAAI,IAAI;IACrC,IAAI,CAACC,SAAS,GAAGV,IAAI,CAACU,SAAS,IAAI,IAAI;IACvC,IAAI,CAACC,OAAO,GAAGX,IAAI,CAACW,OAAO,IAAI,IAAI;EACvC;AACJ","ignoreList":[]}
@@ -3,5 +3,5 @@ import type { DataTableColumn } from "@webiny/admin-ui";
3
3
  import type { Column, ColumnDTO } from "./Column.js";
4
4
  export declare class ColumnMapper {
5
5
  static toDTO(column: Column | ColumnDTO): ColumnDTO;
6
- static toDataTable<T>(column: ColumnDTO, cellRenderer: (row: T, cell: string | React.ReactElement) => string | number | JSX.Element | null): DataTableColumn<T>;
6
+ static toDataTable<T>(column: ColumnDTO, cellRenderer: (row: T, cell: string | React.ReactElement) => string | number | React.JSX.Element | null): DataTableColumn<T>;
7
7
  }
@@ -6,20 +6,26 @@ export class ColumnMapper {
6
6
  header: column.header,
7
7
  hideable: column.hideable,
8
8
  name: column.name,
9
+ path: column.path,
9
10
  resizable: column.resizable,
10
11
  size: column.size,
11
12
  sortable: column.sortable,
13
+ truncate: column.truncate,
12
14
  visible: column.visible
13
15
  };
14
16
  }
15
17
  static toDataTable(column, cellRenderer) {
18
+ // Prefix path with "data." if provided.
19
+ const accessorKey = column.path ? `data.${column.path}` : undefined;
16
20
  return {
21
+ accessorKey,
17
22
  header: column.header,
18
23
  className: column.className,
19
24
  size: column.size,
20
25
  enableHiding: column.hideable,
21
26
  enableResizing: column.resizable,
22
27
  enableSorting: column.sortable,
28
+ truncate: column.truncate,
23
29
  cell: column.cell ? row => cellRenderer(row, column.cell) : undefined
24
30
  };
25
31
  }
@@ -1 +1 @@
1
- {"version":3,"names":["ColumnMapper","toDTO","column","cell","className","header","hideable","name","resizable","size","sortable","visible","toDataTable","cellRenderer","enableHiding","enableResizing","enableSorting","row","undefined"],"sources":["ColumnMapper.ts"],"sourcesContent":["import type React from \"react\";\nimport type { DataTableColumn } from \"@webiny/admin-ui\";\nimport type { Column, ColumnDTO } from \"./Column.js\";\n\nexport class ColumnMapper {\n static toDTO(column: Column | ColumnDTO): ColumnDTO {\n return {\n cell: column.cell,\n className: column.className,\n header: column.header,\n hideable: column.hideable,\n name: column.name,\n resizable: column.resizable,\n size: column.size,\n sortable: column.sortable,\n visible: column.visible\n };\n }\n\n static toDataTable<T>(\n column: ColumnDTO,\n cellRenderer: (\n row: T,\n cell: string | React.ReactElement\n ) => string | number | JSX.Element | null\n ): DataTableColumn<T> {\n return {\n header: column.header,\n className: column.className,\n size: column.size,\n enableHiding: column.hideable,\n enableResizing: column.resizable,\n enableSorting: column.sortable,\n cell: column.cell ? (row: T) => cellRenderer(row, column.cell) : undefined\n };\n }\n}\n"],"mappings":"AAIA,OAAO,MAAMA,YAAY,CAAC;EACtB,OAAOC,KAAKA,CAACC,MAA0B,EAAa;IAChD,OAAO;MACHC,IAAI,EAAED,MAAM,CAACC,IAAI;MACjBC,SAAS,EAAEF,MAAM,CAACE,SAAS;MAC3BC,MAAM,EAAEH,MAAM,CAACG,MAAM;MACrBC,QAAQ,EAAEJ,MAAM,CAACI,QAAQ;MACzBC,IAAI,EAAEL,MAAM,CAACK,IAAI;MACjBC,SAAS,EAAEN,MAAM,CAACM,SAAS;MAC3BC,IAAI,EAAEP,MAAM,CAACO,IAAI;MACjBC,QAAQ,EAAER,MAAM,CAACQ,QAAQ;MACzBC,OAAO,EAAET,MAAM,CAACS;IACpB,CAAC;EACL;EAEA,OAAOC,WAAWA,CACdV,MAAiB,EACjBW,YAGyC,EACvB;IAClB,OAAO;MACHR,MAAM,EAAEH,MAAM,CAACG,MAAM;MACrBD,SAAS,EAAEF,MAAM,CAACE,SAAS;MAC3BK,IAAI,EAAEP,MAAM,CAACO,IAAI;MACjBK,YAAY,EAAEZ,MAAM,CAACI,QAAQ;MAC7BS,cAAc,EAAEb,MAAM,CAACM,SAAS;MAChCQ,aAAa,EAAEd,MAAM,CAACQ,QAAQ;MAC9BP,IAAI,EAAED,MAAM,CAACC,IAAI,GAAIc,GAAM,IAAKJ,YAAY,CAACI,GAAG,EAAEf,MAAM,CAACC,IAAI,CAAC,GAAGe;IACrE,CAAC;EACL;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["ColumnMapper","toDTO","column","cell","className","header","hideable","name","path","resizable","size","sortable","truncate","visible","toDataTable","cellRenderer","accessorKey","undefined","enableHiding","enableResizing","enableSorting","row"],"sources":["ColumnMapper.ts"],"sourcesContent":["import type React from \"react\";\nimport type { DataTableColumn } from \"@webiny/admin-ui\";\nimport type { Column, ColumnDTO } from \"./Column.js\";\n\nexport class ColumnMapper {\n static toDTO(column: Column | ColumnDTO): ColumnDTO {\n return {\n cell: column.cell,\n className: column.className,\n header: column.header,\n hideable: column.hideable,\n name: column.name,\n path: column.path,\n resizable: column.resizable,\n size: column.size,\n sortable: column.sortable,\n truncate: column.truncate,\n visible: column.visible\n };\n }\n\n static toDataTable<T>(\n column: ColumnDTO,\n cellRenderer: (\n row: T,\n cell: string | React.ReactElement\n ) => string | number | React.JSX.Element | null\n ): DataTableColumn<T> {\n // Prefix path with \"data.\" if provided.\n const accessorKey = column.path ? `data.${column.path}` : undefined;\n\n return {\n accessorKey,\n header: column.header,\n className: column.className,\n size: column.size,\n enableHiding: column.hideable,\n enableResizing: column.resizable,\n enableSorting: column.sortable,\n truncate: column.truncate,\n cell: column.cell ? (row: T) => cellRenderer(row, column.cell) : undefined\n };\n }\n}\n"],"mappings":"AAIA,OAAO,MAAMA,YAAY,CAAC;EACtB,OAAOC,KAAKA,CAACC,MAA0B,EAAa;IAChD,OAAO;MACHC,IAAI,EAAED,MAAM,CAACC,IAAI;MACjBC,SAAS,EAAEF,MAAM,CAACE,SAAS;MAC3BC,MAAM,EAAEH,MAAM,CAACG,MAAM;MACrBC,QAAQ,EAAEJ,MAAM,CAACI,QAAQ;MACzBC,IAAI,EAAEL,MAAM,CAACK,IAAI;MACjBC,IAAI,EAAEN,MAAM,CAACM,IAAI;MACjBC,SAAS,EAAEP,MAAM,CAACO,SAAS;MAC3BC,IAAI,EAAER,MAAM,CAACQ,IAAI;MACjBC,QAAQ,EAAET,MAAM,CAACS,QAAQ;MACzBC,QAAQ,EAAEV,MAAM,CAACU,QAAQ;MACzBC,OAAO,EAAEX,MAAM,CAACW;IACpB,CAAC;EACL;EAEA,OAAOC,WAAWA,CACdZ,MAAiB,EACjBa,YAG+C,EAC7B;IAClB;IACA,MAAMC,WAAW,GAAGd,MAAM,CAACM,IAAI,GAAG,QAAQN,MAAM,CAACM,IAAI,EAAE,GAAGS,SAAS;IAEnE,OAAO;MACHD,WAAW;MACXX,MAAM,EAAEH,MAAM,CAACG,MAAM;MACrBD,SAAS,EAAEF,MAAM,CAACE,SAAS;MAC3BM,IAAI,EAAER,MAAM,CAACQ,IAAI;MACjBQ,YAAY,EAAEhB,MAAM,CAACI,QAAQ;MAC7Ba,cAAc,EAAEjB,MAAM,CAACO,SAAS;MAChCW,aAAa,EAAElB,MAAM,CAACS,QAAQ;MAC9BC,QAAQ,EAAEV,MAAM,CAACU,QAAQ;MACzBT,IAAI,EAAED,MAAM,CAACC,IAAI,GAAIkB,GAAM,IAAKN,YAAY,CAACM,GAAG,EAAEnB,MAAM,CAACC,IAAI,CAAC,GAAGc;IACrE,CAAC;EACL;AACJ","ignoreList":[]}
@@ -10,6 +10,7 @@ describe("ColumnsPresenter", () => {
10
10
  hideable: true,
11
11
  name: "id",
12
12
  resizable: true,
13
+ truncate: true,
13
14
  size: 200,
14
15
  sortable: true,
15
16
  visible: true
@@ -20,6 +21,7 @@ describe("ColumnsPresenter", () => {
20
21
  hideable: false,
21
22
  name: "title",
22
23
  resizable: false,
24
+ truncate: true,
23
25
  size: 100,
24
26
  sortable: false,
25
27
  visible: false
@@ -39,9 +41,11 @@ describe("ColumnsPresenter", () => {
39
41
  header: "Id",
40
42
  hideable: true,
41
43
  name: "id",
44
+ path: "",
42
45
  resizable: true,
43
46
  size: 200,
44
47
  sortable: true,
48
+ truncate: true,
45
49
  visible: true
46
50
  }, {
47
51
  cell: "Title Cell Content",
@@ -49,9 +53,11 @@ describe("ColumnsPresenter", () => {
49
53
  header: "Title",
50
54
  hideable: false,
51
55
  name: "title",
56
+ path: "",
52
57
  resizable: false,
53
58
  size: 100,
54
59
  sortable: false,
60
+ truncate: true,
55
61
  visible: false
56
62
  }]
57
63
  });
@@ -1 +1 @@
1
- {"version":3,"names":["describe","it","expect","beforeEach","vi","ColumnsPresenter","Column","ColumnsRepository","columnConfigs","cell","className","header","hideable","name","resizable","size","sortable","visible","presenter","clearAllMocks","repository","map","config","createFromConfig","init","vm","toEqual","columns"],"sources":["ColumnsPresenter.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach, vi } from \"vitest\";\nimport { ColumnsPresenter } from \"./ColumnsPresenter.js\";\nimport { Column } from \"./Column.js\";\nimport type { ColumnConfig } from \"~/config/table/Column.js\";\nimport { ColumnsRepository } from \"./ColumnsRepository.js\";\n\ndescribe(\"ColumnsPresenter\", () => {\n const columnConfigs: ColumnConfig[] = [\n {\n cell: \"Id Cell Content\",\n className: \"id-class\",\n header: \"Id\",\n hideable: true,\n name: \"id\",\n resizable: true,\n size: 200,\n sortable: true,\n visible: true\n },\n {\n cell: \"Title Cell Content\",\n className: \"title-class\",\n header: \"Title\",\n hideable: false,\n name: \"title\",\n resizable: false,\n size: 100,\n sortable: false,\n visible: false\n }\n ];\n\n let presenter: ColumnsPresenter;\n\n beforeEach(() => {\n vi.clearAllMocks();\n const repository = new ColumnsRepository(\n columnConfigs.map(config => Column.createFromConfig(config))\n );\n presenter = new ColumnsPresenter(repository);\n });\n\n it(\"should `init` and return the columns via `vm`\", () => {\n presenter.init();\n\n expect(presenter.vm).toEqual({\n columns: [\n {\n cell: \"Id Cell Content\",\n className: \"id-class\",\n header: \"Id\",\n hideable: true,\n name: \"id\",\n resizable: true,\n size: 200,\n sortable: true,\n visible: true\n },\n {\n cell: \"Title Cell Content\",\n className: \"title-class\",\n header: \"Title\",\n hideable: false,\n name: \"title\",\n resizable: false,\n size: 100,\n sortable: false,\n visible: false\n }\n ]\n });\n });\n});\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,EAAEC,MAAM,EAAEC,UAAU,EAAEC,EAAE,QAAQ,QAAQ;AAC7D,SAASC,gBAAgB;AACzB,SAASC,MAAM;AAEf,SAASC,iBAAiB;AAE1BP,QAAQ,CAAC,kBAAkB,EAAE,MAAM;EAC/B,MAAMQ,aAA6B,GAAG,CAClC;IACIC,IAAI,EAAE,iBAAiB;IACvBC,SAAS,EAAE,UAAU;IACrBC,MAAM,EAAE,IAAI;IACZC,QAAQ,EAAE,IAAI;IACdC,IAAI,EAAE,IAAI;IACVC,SAAS,EAAE,IAAI;IACfC,IAAI,EAAE,GAAG;IACTC,QAAQ,EAAE,IAAI;IACdC,OAAO,EAAE;EACb,CAAC,EACD;IACIR,IAAI,EAAE,oBAAoB;IAC1BC,SAAS,EAAE,aAAa;IACxBC,MAAM,EAAE,OAAO;IACfC,QAAQ,EAAE,KAAK;IACfC,IAAI,EAAE,OAAO;IACbC,SAAS,EAAE,KAAK;IAChBC,IAAI,EAAE,GAAG;IACTC,QAAQ,EAAE,KAAK;IACfC,OAAO,EAAE;EACb,CAAC,CACJ;EAED,IAAIC,SAA2B;EAE/Bf,UAAU,CAAC,MAAM;IACbC,EAAE,CAACe,aAAa,CAAC,CAAC;IAClB,MAAMC,UAAU,GAAG,IAAIb,iBAAiB,CACpCC,aAAa,CAACa,GAAG,CAACC,MAAM,IAAIhB,MAAM,CAACiB,gBAAgB,CAACD,MAAM,CAAC,CAC/D,CAAC;IACDJ,SAAS,GAAG,IAAIb,gBAAgB,CAACe,UAAU,CAAC;EAChD,CAAC,CAAC;EAEFnB,EAAE,CAAC,+CAA+C,EAAE,MAAM;IACtDiB,SAAS,CAACM,IAAI,CAAC,CAAC;IAEhBtB,MAAM,CAACgB,SAAS,CAACO,EAAE,CAAC,CAACC,OAAO,CAAC;MACzBC,OAAO,EAAE,CACL;QACIlB,IAAI,EAAE,iBAAiB;QACvBC,SAAS,EAAE,UAAU;QACrBC,MAAM,EAAE,IAAI;QACZC,QAAQ,EAAE,IAAI;QACdC,IAAI,EAAE,IAAI;QACVC,SAAS,EAAE,IAAI;QACfC,IAAI,EAAE,GAAG;QACTC,QAAQ,EAAE,IAAI;QACdC,OAAO,EAAE;MACb,CAAC,EACD;QACIR,IAAI,EAAE,oBAAoB;QAC1BC,SAAS,EAAE,aAAa;QACxBC,MAAM,EAAE,OAAO;QACfC,QAAQ,EAAE,KAAK;QACfC,IAAI,EAAE,OAAO;QACbC,SAAS,EAAE,KAAK;QAChBC,IAAI,EAAE,GAAG;QACTC,QAAQ,EAAE,KAAK;QACfC,OAAO,EAAE;MACb,CAAC;IAET,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["describe","it","expect","beforeEach","vi","ColumnsPresenter","Column","ColumnsRepository","columnConfigs","cell","className","header","hideable","name","resizable","truncate","size","sortable","visible","presenter","clearAllMocks","repository","map","config","createFromConfig","init","vm","toEqual","columns","path"],"sources":["ColumnsPresenter.test.ts"],"sourcesContent":["import { describe, it, expect, beforeEach, vi } from \"vitest\";\nimport { ColumnsPresenter } from \"./ColumnsPresenter.js\";\nimport { Column } from \"./Column.js\";\nimport type { ColumnConfig } from \"~/config/table/Column.js\";\nimport { ColumnsRepository } from \"./ColumnsRepository.js\";\n\ndescribe(\"ColumnsPresenter\", () => {\n const columnConfigs: ColumnConfig[] = [\n {\n cell: \"Id Cell Content\",\n className: \"id-class\",\n header: \"Id\",\n hideable: true,\n name: \"id\",\n resizable: true,\n truncate: true,\n size: 200,\n sortable: true,\n visible: true\n },\n {\n cell: \"Title Cell Content\",\n className: \"title-class\",\n header: \"Title\",\n hideable: false,\n name: \"title\",\n resizable: false,\n truncate: true,\n size: 100,\n sortable: false,\n visible: false\n }\n ];\n\n let presenter: ColumnsPresenter;\n\n beforeEach(() => {\n vi.clearAllMocks();\n const repository = new ColumnsRepository(\n columnConfigs.map(config => Column.createFromConfig(config))\n );\n presenter = new ColumnsPresenter(repository);\n });\n\n it(\"should `init` and return the columns via `vm`\", () => {\n presenter.init();\n\n expect(presenter.vm).toEqual({\n columns: [\n {\n cell: \"Id Cell Content\",\n className: \"id-class\",\n header: \"Id\",\n hideable: true,\n name: \"id\",\n path: \"\",\n resizable: true,\n size: 200,\n sortable: true,\n truncate: true,\n visible: true\n },\n {\n cell: \"Title Cell Content\",\n className: \"title-class\",\n header: \"Title\",\n hideable: false,\n name: \"title\",\n path: \"\",\n resizable: false,\n size: 100,\n sortable: false,\n truncate: true,\n visible: false\n }\n ]\n });\n });\n});\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,EAAE,EAAEC,MAAM,EAAEC,UAAU,EAAEC,EAAE,QAAQ,QAAQ;AAC7D,SAASC,gBAAgB;AACzB,SAASC,MAAM;AAEf,SAASC,iBAAiB;AAE1BP,QAAQ,CAAC,kBAAkB,EAAE,MAAM;EAC/B,MAAMQ,aAA6B,GAAG,CAClC;IACIC,IAAI,EAAE,iBAAiB;IACvBC,SAAS,EAAE,UAAU;IACrBC,MAAM,EAAE,IAAI;IACZC,QAAQ,EAAE,IAAI;IACdC,IAAI,EAAE,IAAI;IACVC,SAAS,EAAE,IAAI;IACfC,QAAQ,EAAE,IAAI;IACdC,IAAI,EAAE,GAAG;IACTC,QAAQ,EAAE,IAAI;IACdC,OAAO,EAAE;EACb,CAAC,EACD;IACIT,IAAI,EAAE,oBAAoB;IAC1BC,SAAS,EAAE,aAAa;IACxBC,MAAM,EAAE,OAAO;IACfC,QAAQ,EAAE,KAAK;IACfC,IAAI,EAAE,OAAO;IACbC,SAAS,EAAE,KAAK;IAChBC,QAAQ,EAAE,IAAI;IACdC,IAAI,EAAE,GAAG;IACTC,QAAQ,EAAE,KAAK;IACfC,OAAO,EAAE;EACb,CAAC,CACJ;EAED,IAAIC,SAA2B;EAE/BhB,UAAU,CAAC,MAAM;IACbC,EAAE,CAACgB,aAAa,CAAC,CAAC;IAClB,MAAMC,UAAU,GAAG,IAAId,iBAAiB,CACpCC,aAAa,CAACc,GAAG,CAACC,MAAM,IAAIjB,MAAM,CAACkB,gBAAgB,CAACD,MAAM,CAAC,CAC/D,CAAC;IACDJ,SAAS,GAAG,IAAId,gBAAgB,CAACgB,UAAU,CAAC;EAChD,CAAC,CAAC;EAEFpB,EAAE,CAAC,+CAA+C,EAAE,MAAM;IACtDkB,SAAS,CAACM,IAAI,CAAC,CAAC;IAEhBvB,MAAM,CAACiB,SAAS,CAACO,EAAE,CAAC,CAACC,OAAO,CAAC;MACzBC,OAAO,EAAE,CACL;QACInB,IAAI,EAAE,iBAAiB;QACvBC,SAAS,EAAE,UAAU;QACrBC,MAAM,EAAE,IAAI;QACZC,QAAQ,EAAE,IAAI;QACdC,IAAI,EAAE,IAAI;QACVgB,IAAI,EAAE,EAAE;QACRf,SAAS,EAAE,IAAI;QACfE,IAAI,EAAE,GAAG;QACTC,QAAQ,EAAE,IAAI;QACdF,QAAQ,EAAE,IAAI;QACdG,OAAO,EAAE;MACb,CAAC,EACD;QACIT,IAAI,EAAE,oBAAoB;QAC1BC,SAAS,EAAE,aAAa;QACxBC,MAAM,EAAE,OAAO;QACfC,QAAQ,EAAE,KAAK;QACfC,IAAI,EAAE,OAAO;QACbgB,IAAI,EAAE,EAAE;QACRf,SAAS,EAAE,KAAK;QAChBE,IAAI,EAAE,GAAG;QACTC,QAAQ,EAAE,KAAK;QACfF,QAAQ,EAAE,IAAI;QACdG,OAAO,EAAE;MACb,CAAC;IAET,CAAC,CAAC;EACN,CAAC,CAAC;AACN,CAAC,CAAC","ignoreList":[]}