@webiny/app-file-manager 6.0.0-rc.4 → 6.0.0-rc.6

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.
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import { FileManager } from "@webiny/app-admin";
3
- import { useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
3
+ import { useFieldEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
4
4
  import { FilePicker } from "@webiny/admin-ui";
5
5
  import { EditFileUsingUrl } from "../../../components/EditFileUsingUrl/index.js";
6
6
  import { getSupportedExtensionsLabelHint } from "./utils.js";
@@ -10,7 +10,7 @@ const FieldRenderer = ({
10
10
  const {
11
11
  field
12
12
  } = useModelField();
13
- const rules = useEffectiveRules(field);
13
+ const rules = useFieldEffectiveRules(field);
14
14
  const disabled = !rules.canEdit || rules.disabled;
15
15
  const Bind = getBind();
16
16
  const imagesOnly = field.settings && field.settings.imagesOnly;
@@ -1 +1 @@
1
- {"version":3,"names":["React","FileManager","useEffectiveRules","useModelField","FilePicker","EditFileUsingUrl","getSupportedExtensionsLabelHint","FieldRenderer","getBind","field","rules","disabled","canEdit","Bind","imagesOnly","settings","createElement","bind","value","onChange","validation","ValidationContainer","onSetFile","file","src","editFile","images","render","showFileManager","Object","assign","label","description","hint","help","note","onSelectItem","onEditItem","onRemoveItem","placeholder","type","singleFile","name","renderer","rendererName","canUse","list","params"],"sources":["fileField.tsx"],"sourcesContent":["import React from \"react\";\nimport type {\n CmsModelFieldRendererPlugin,\n CmsModelFieldRendererProps\n} from \"@webiny/app-headless-cms/types.js\";\nimport { FileManager } from \"@webiny/app-admin\";\nimport { useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\nimport { FilePicker } from \"@webiny/admin-ui\";\nimport { EditFileUsingUrl } from \"~/components/EditFileUsingUrl/index.js\";\nimport { getSupportedExtensionsLabelHint } from \"~/modules/HeadlessCms/fileRenderer/utils.js\";\n\nconst FieldRenderer = ({ getBind }: CmsModelFieldRendererProps) => {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n const Bind = getBind();\n\n const imagesOnly = field.settings && field.settings.imagesOnly;\n\n return (\n <Bind>\n {bind => {\n const { value, onChange, validation } = bind;\n\n return (\n <Bind.ValidationContainer>\n <EditFileUsingUrl onSetFile={file => bind.onChange(file.src)}>\n {({ editFile }) => (\n <FileManager\n images={imagesOnly}\n render={({ showFileManager }) => {\n return (\n <FilePicker\n {...bind}\n disabled={disabled}\n label={field.label}\n validation={validation}\n description={field.description}\n hint={field.help}\n note={getSupportedExtensionsLabelHint(imagesOnly)}\n value={value}\n onSelectItem={() => {\n showFileManager(file => onChange(file.src));\n }}\n onEditItem={() => editFile(value)}\n onRemoveItem={() => onChange(null)}\n placeholder={field.placeholder}\n type={\"compact\"}\n data-testid={`fr.input.filefield.${field.label}`}\n />\n );\n }}\n />\n )}\n </EditFileUsingUrl>\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n};\n\nexport const singleFile: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-file\",\n renderer: {\n rendererName: \"file-input\",\n name: \"File Input\",\n description: \"Enables selecting a single file via File Manager.\",\n canUse({ field }) {\n return field.type === \"file\" && !field.list;\n },\n render(params) {\n return <FieldRenderer {...params} />;\n }\n }\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAKzB,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,iBAAiB,EAAEC,aAAa,QAAQ,iCAAiC;AAClF,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,gBAAgB;AACzB,SAASC,+BAA+B;AAExC,MAAMC,aAAa,GAAGA,CAAC;EAAEC;AAAoC,CAAC,KAAK;EAC/D,MAAM;IAAEC;EAAM,CAAC,GAAGN,aAAa,CAAC,CAAC;EACjC,MAAMO,KAAK,GAAGR,iBAAiB,CAACO,KAAK,CAAC;EACtC,MAAME,QAAQ,GAAG,CAACD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACC,QAAQ;EACjD,MAAME,IAAI,GAAGL,OAAO,CAAC,CAAC;EAEtB,MAAMM,UAAU,GAAGL,KAAK,CAACM,QAAQ,IAAIN,KAAK,CAACM,QAAQ,CAACD,UAAU;EAE9D,oBACId,KAAA,CAAAgB,aAAA,CAACH,IAAI,QACAI,IAAI,IAAI;IACL,MAAM;MAAEC,KAAK;MAAEC,QAAQ;MAAEC;IAAW,CAAC,GAAGH,IAAI;IAE5C,oBACIjB,KAAA,CAAAgB,aAAA,CAACH,IAAI,CAACQ,mBAAmB,qBACrBrB,KAAA,CAAAgB,aAAA,CAACX,gBAAgB;MAACiB,SAAS,EAAEC,IAAI,IAAIN,IAAI,CAACE,QAAQ,CAACI,IAAI,CAACC,GAAG;IAAE,GACxD,CAAC;MAAEC;IAAS,CAAC,kBACVzB,KAAA,CAAAgB,aAAA,CAACf,WAAW;MACRyB,MAAM,EAAEZ,UAAW;MACnBa,MAAM,EAAEA,CAAC;QAAEC;MAAgB,CAAC,KAAK;QAC7B,oBACI5B,KAAA,CAAAgB,aAAA,CAACZ,UAAU,EAAAyB,MAAA,CAAAC,MAAA,KACHb,IAAI;UACRN,QAAQ,EAAEA,QAAS;UACnBoB,KAAK,EAAEtB,KAAK,CAACsB,KAAM;UACnBX,UAAU,EAAEA,UAAW;UACvBY,WAAW,EAAEvB,KAAK,CAACuB,WAAY;UAC/BC,IAAI,EAAExB,KAAK,CAACyB,IAAK;UACjBC,IAAI,EAAE7B,+BAA+B,CAACQ,UAAU,CAAE;UAClDI,KAAK,EAAEA,KAAM;UACbkB,YAAY,EAAEA,CAAA,KAAM;YAChBR,eAAe,CAACL,IAAI,IAAIJ,QAAQ,CAACI,IAAI,CAACC,GAAG,CAAC,CAAC;UAC/C,CAAE;UACFa,UAAU,EAAEA,CAAA,KAAMZ,QAAQ,CAACP,KAAK,CAAE;UAClCoB,YAAY,EAAEA,CAAA,KAAMnB,QAAQ,CAAC,IAAI,CAAE;UACnCoB,WAAW,EAAE9B,KAAK,CAAC8B,WAAY;UAC/BC,IAAI,EAAE,SAAU;UAChB,eAAa,sBAAsB/B,KAAK,CAACsB,KAAK;QAAG,EACpD,CAAC;MAEV;IAAE,CACL,CAES,CACI,CAAC;EAEnC,CACE,CAAC;AAEf,CAAC;AAED,OAAO,MAAMU,UAAuC,GAAG;EACnDD,IAAI,EAAE,2BAA2B;EACjCE,IAAI,EAAE,gCAAgC;EACtCC,QAAQ,EAAE;IACNC,YAAY,EAAE,YAAY;IAC1BF,IAAI,EAAE,YAAY;IAClBV,WAAW,EAAE,mDAAmD;IAChEa,MAAMA,CAAC;MAAEpC;IAAM,CAAC,EAAE;MACd,OAAOA,KAAK,CAAC+B,IAAI,KAAK,MAAM,IAAI,CAAC/B,KAAK,CAACqC,IAAI;IAC/C,CAAC;IACDnB,MAAMA,CAACoB,MAAM,EAAE;MACX,oBAAO/C,KAAA,CAAAgB,aAAA,CAACT,aAAa,EAAKwC,MAAS,CAAC;IACxC;EACJ;AACJ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","FileManager","useFieldEffectiveRules","useModelField","FilePicker","EditFileUsingUrl","getSupportedExtensionsLabelHint","FieldRenderer","getBind","field","rules","disabled","canEdit","Bind","imagesOnly","settings","createElement","bind","value","onChange","validation","ValidationContainer","onSetFile","file","src","editFile","images","render","showFileManager","Object","assign","label","description","hint","help","note","onSelectItem","onEditItem","onRemoveItem","placeholder","type","singleFile","name","renderer","rendererName","canUse","list","params"],"sources":["fileField.tsx"],"sourcesContent":["import React from \"react\";\nimport type {\n CmsModelFieldRendererPlugin,\n CmsModelFieldRendererProps\n} from \"@webiny/app-headless-cms/types.js\";\nimport { FileManager } from \"@webiny/app-admin\";\nimport { useFieldEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\nimport { FilePicker } from \"@webiny/admin-ui\";\nimport { EditFileUsingUrl } from \"~/components/EditFileUsingUrl/index.js\";\nimport { getSupportedExtensionsLabelHint } from \"~/modules/HeadlessCms/fileRenderer/utils.js\";\n\nconst FieldRenderer = ({ getBind }: CmsModelFieldRendererProps) => {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n const Bind = getBind();\n\n const imagesOnly = field.settings && field.settings.imagesOnly;\n\n return (\n <Bind>\n {bind => {\n const { value, onChange, validation } = bind;\n\n return (\n <Bind.ValidationContainer>\n <EditFileUsingUrl onSetFile={file => bind.onChange(file.src)}>\n {({ editFile }) => (\n <FileManager\n images={imagesOnly}\n render={({ showFileManager }) => {\n return (\n <FilePicker\n {...bind}\n disabled={disabled}\n label={field.label}\n validation={validation}\n description={field.description}\n hint={field.help}\n note={getSupportedExtensionsLabelHint(imagesOnly)}\n value={value}\n onSelectItem={() => {\n showFileManager(file => onChange(file.src));\n }}\n onEditItem={() => editFile(value)}\n onRemoveItem={() => onChange(null)}\n placeholder={field.placeholder}\n type={\"compact\"}\n data-testid={`fr.input.filefield.${field.label}`}\n />\n );\n }}\n />\n )}\n </EditFileUsingUrl>\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n};\n\nexport const singleFile: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-file\",\n renderer: {\n rendererName: \"file-input\",\n name: \"File Input\",\n description: \"Enables selecting a single file via File Manager.\",\n canUse({ field }) {\n return field.type === \"file\" && !field.list;\n },\n render(params) {\n return <FieldRenderer {...params} />;\n }\n }\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAKzB,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,iCAAiC;AACvF,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,gBAAgB;AACzB,SAASC,+BAA+B;AAExC,MAAMC,aAAa,GAAGA,CAAC;EAAEC;AAAoC,CAAC,KAAK;EAC/D,MAAM;IAAEC;EAAM,CAAC,GAAGN,aAAa,CAAC,CAAC;EACjC,MAAMO,KAAK,GAAGR,sBAAsB,CAACO,KAAK,CAAC;EAC3C,MAAME,QAAQ,GAAG,CAACD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACC,QAAQ;EACjD,MAAME,IAAI,GAAGL,OAAO,CAAC,CAAC;EAEtB,MAAMM,UAAU,GAAGL,KAAK,CAACM,QAAQ,IAAIN,KAAK,CAACM,QAAQ,CAACD,UAAU;EAE9D,oBACId,KAAA,CAAAgB,aAAA,CAACH,IAAI,QACAI,IAAI,IAAI;IACL,MAAM;MAAEC,KAAK;MAAEC,QAAQ;MAAEC;IAAW,CAAC,GAAGH,IAAI;IAE5C,oBACIjB,KAAA,CAAAgB,aAAA,CAACH,IAAI,CAACQ,mBAAmB,qBACrBrB,KAAA,CAAAgB,aAAA,CAACX,gBAAgB;MAACiB,SAAS,EAAEC,IAAI,IAAIN,IAAI,CAACE,QAAQ,CAACI,IAAI,CAACC,GAAG;IAAE,GACxD,CAAC;MAAEC;IAAS,CAAC,kBACVzB,KAAA,CAAAgB,aAAA,CAACf,WAAW;MACRyB,MAAM,EAAEZ,UAAW;MACnBa,MAAM,EAAEA,CAAC;QAAEC;MAAgB,CAAC,KAAK;QAC7B,oBACI5B,KAAA,CAAAgB,aAAA,CAACZ,UAAU,EAAAyB,MAAA,CAAAC,MAAA,KACHb,IAAI;UACRN,QAAQ,EAAEA,QAAS;UACnBoB,KAAK,EAAEtB,KAAK,CAACsB,KAAM;UACnBX,UAAU,EAAEA,UAAW;UACvBY,WAAW,EAAEvB,KAAK,CAACuB,WAAY;UAC/BC,IAAI,EAAExB,KAAK,CAACyB,IAAK;UACjBC,IAAI,EAAE7B,+BAA+B,CAACQ,UAAU,CAAE;UAClDI,KAAK,EAAEA,KAAM;UACbkB,YAAY,EAAEA,CAAA,KAAM;YAChBR,eAAe,CAACL,IAAI,IAAIJ,QAAQ,CAACI,IAAI,CAACC,GAAG,CAAC,CAAC;UAC/C,CAAE;UACFa,UAAU,EAAEA,CAAA,KAAMZ,QAAQ,CAACP,KAAK,CAAE;UAClCoB,YAAY,EAAEA,CAAA,KAAMnB,QAAQ,CAAC,IAAI,CAAE;UACnCoB,WAAW,EAAE9B,KAAK,CAAC8B,WAAY;UAC/BC,IAAI,EAAE,SAAU;UAChB,eAAa,sBAAsB/B,KAAK,CAACsB,KAAK;QAAG,EACpD,CAAC;MAEV;IAAE,CACL,CAES,CACI,CAAC;EAEnC,CACE,CAAC;AAEf,CAAC;AAED,OAAO,MAAMU,UAAuC,GAAG;EACnDD,IAAI,EAAE,2BAA2B;EACjCE,IAAI,EAAE,gCAAgC;EACtCC,QAAQ,EAAE;IACNC,YAAY,EAAE,YAAY;IAC1BF,IAAI,EAAE,YAAY;IAClBV,WAAW,EAAE,mDAAmD;IAChEa,MAAMA,CAAC;MAAEpC;IAAM,CAAC,EAAE;MACd,OAAOA,KAAK,CAAC+B,IAAI,KAAK,MAAM,IAAI,CAAC/B,KAAK,CAACqC,IAAI;IAC/C,CAAC;IACDnB,MAAMA,CAACoB,MAAM,EAAE;MACX,oBAAO/C,KAAA,CAAAgB,aAAA,CAACT,aAAa,EAAKwC,MAAS,CAAC;IACxC;EACJ;AACJ,CAAC","ignoreList":[]}
@@ -5,7 +5,7 @@ import { FileManager } from "@webiny/app-admin";
5
5
  import { getSupportedExtensionsLabelHint } from "./utils.js";
6
6
  import { EditFileUsingUrl } from "../../../components/EditFileUsingUrl/index.js";
7
7
  import { MultiFilePicker } from "@webiny/admin-ui";
8
- import { useEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
8
+ import { useFieldEffectiveRules, useModelField } from "@webiny/app-headless-cms-common";
9
9
  const t = i18n.ns("app-headless-cms/admin/fields/file");
10
10
  const FieldRenderer = ({
11
11
  getBind
@@ -13,7 +13,7 @@ const FieldRenderer = ({
13
13
  const {
14
14
  field
15
15
  } = useModelField();
16
- const rules = useEffectiveRules(field);
16
+ const rules = useFieldEffectiveRules(field);
17
17
  const disabled = !rules.canEdit || rules.disabled;
18
18
  const Bind = getBind();
19
19
  const editFileRef = useRef(null);
@@ -1 +1 @@
1
- {"version":3,"names":["React","useRef","dotProp","i18n","FileManager","getSupportedExtensionsLabelHint","EditFileUsingUrl","MultiFilePicker","useEffectiveRules","useModelField","t","ns","FieldRenderer","getBind","field","rules","disabled","canEdit","Bind","editFileRef","imagesOnly","settings","onSetFile","bind","file","current","newValue","value","onChange","slice","index","src","createElement","validation","values","Array","isArray","filter","Boolean","ValidationContainer","editFile","multiple","images","render","showFileManager","selectFiles","files","urls","map","f","Object","assign","label","description","note","onSelectItem","onReplaceItem","_","onRemoveItem","delete","onEditItem","url","placeholder","type","multipleFiles","name","renderer","rendererName","canUse","list","props"],"sources":["fileFields.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport dotProp from \"dot-prop-immutable\";\nimport type {\n BindComponentRenderProp,\n CmsModelFieldRendererPlugin,\n CmsModelFieldRendererProps\n} from \"@webiny/app-headless-cms/types.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { FileManager } from \"@webiny/app-admin\";\nimport { getSupportedExtensionsLabelHint } from \"./utils.js\";\nimport { EditFileUsingUrl } from \"~/components/EditFileUsingUrl/index.js\";\nimport type { FileItem } from \"~/types.js\";\nimport { MultiFilePicker } from \"@webiny/admin-ui\";\nimport { useEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/file\");\n\ninterface EditFileRef {\n index: number;\n url: string;\n}\n\nconst FieldRenderer = ({ getBind }: CmsModelFieldRendererProps) => {\n const { field } = useModelField();\n const rules = useEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n const Bind = getBind();\n const editFileRef = useRef<EditFileRef | null>(null);\n\n const imagesOnly = field.settings && field.settings.imagesOnly;\n\n const onSetFile = (bind: BindComponentRenderProp) => {\n return (file: FileItem) => {\n if (!editFileRef.current) {\n return;\n }\n\n const newValue = [...bind.value];\n bind.onChange([\n ...newValue.slice(0, editFileRef.current.index),\n file.src,\n ...newValue.slice(editFileRef.current.index + 1)\n ]);\n\n editFileRef.current = null;\n };\n };\n\n return (\n <Bind>\n {bind => {\n const { onChange, validation } = bind;\n\n // We need to make sure the value is an array, since this is a multi-value component.\n const values: string[] = (\n Array.isArray(bind.value) ? bind.value : [bind.value]\n ).filter(Boolean);\n\n return (\n <Bind.ValidationContainer>\n <EditFileUsingUrl onSetFile={onSetFile(bind)}>\n {({ editFile }) => (\n <FileManager\n multiple\n images={imagesOnly}\n render={({ showFileManager }) => {\n const selectFiles = (index = -1) => {\n showFileManager(files => {\n const urls = files.map(f => f.src);\n if (index === -1) {\n onChange([...values, ...urls]);\n } else {\n onChange([\n ...values.slice(0, index),\n ...urls,\n ...values.slice(index + 1)\n ]);\n }\n });\n };\n return (\n <MultiFilePicker\n {...bind}\n disabled={disabled}\n label={field.label}\n validation={validation}\n description={field.description}\n note={getSupportedExtensionsLabelHint(imagesOnly)}\n values={values}\n onSelectItem={() => selectFiles()}\n onReplaceItem={(_, index) => selectFiles(index)}\n onRemoveItem={(_, index) =>\n onChange(dotProp.delete(values, index))\n }\n onEditItem={(value, index) => {\n if (!value) {\n return;\n }\n\n editFileRef.current = {\n index,\n url: value.url\n };\n\n editFile(value.url);\n }}\n placeholder={field.placeholder}\n type={\"compact\"}\n data-testid={`fr.input.filefields.${field.label}`}\n />\n );\n }}\n />\n )}\n </EditFileUsingUrl>\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n};\n\nexport const multipleFiles: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-files\",\n renderer: {\n rendererName: \"file-inputs\",\n name: t`File Inputs`,\n description: t`Enables selecting multiple files via File Manager.`,\n canUse({ field }) {\n return field.type === \"file\" && !!field.list;\n },\n render(props) {\n return <FieldRenderer {...props} />;\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useRef","dotProp","i18n","FileManager","getSupportedExtensionsLabelHint","EditFileUsingUrl","MultiFilePicker","useFieldEffectiveRules","useModelField","t","ns","FieldRenderer","getBind","field","rules","disabled","canEdit","Bind","editFileRef","imagesOnly","settings","onSetFile","bind","file","current","newValue","value","onChange","slice","index","src","createElement","validation","values","Array","isArray","filter","Boolean","ValidationContainer","editFile","multiple","images","render","showFileManager","selectFiles","files","urls","map","f","Object","assign","label","description","note","onSelectItem","onReplaceItem","_","onRemoveItem","delete","onEditItem","url","placeholder","type","multipleFiles","name","renderer","rendererName","canUse","list","props"],"sources":["fileFields.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport dotProp from \"dot-prop-immutable\";\nimport type {\n BindComponentRenderProp,\n CmsModelFieldRendererPlugin,\n CmsModelFieldRendererProps\n} from \"@webiny/app-headless-cms/types.js\";\nimport { i18n } from \"@webiny/app/i18n/index.js\";\nimport { FileManager } from \"@webiny/app-admin\";\nimport { getSupportedExtensionsLabelHint } from \"./utils.js\";\nimport { EditFileUsingUrl } from \"~/components/EditFileUsingUrl/index.js\";\nimport type { FileItem } from \"~/types.js\";\nimport { MultiFilePicker } from \"@webiny/admin-ui\";\nimport { useFieldEffectiveRules, useModelField } from \"@webiny/app-headless-cms-common\";\n\nconst t = i18n.ns(\"app-headless-cms/admin/fields/file\");\n\ninterface EditFileRef {\n index: number;\n url: string;\n}\n\nconst FieldRenderer = ({ getBind }: CmsModelFieldRendererProps) => {\n const { field } = useModelField();\n const rules = useFieldEffectiveRules(field);\n const disabled = !rules.canEdit || rules.disabled;\n const Bind = getBind();\n const editFileRef = useRef<EditFileRef | null>(null);\n\n const imagesOnly = field.settings && field.settings.imagesOnly;\n\n const onSetFile = (bind: BindComponentRenderProp) => {\n return (file: FileItem) => {\n if (!editFileRef.current) {\n return;\n }\n\n const newValue = [...bind.value];\n bind.onChange([\n ...newValue.slice(0, editFileRef.current.index),\n file.src,\n ...newValue.slice(editFileRef.current.index + 1)\n ]);\n\n editFileRef.current = null;\n };\n };\n\n return (\n <Bind>\n {bind => {\n const { onChange, validation } = bind;\n\n // We need to make sure the value is an array, since this is a multi-value component.\n const values: string[] = (\n Array.isArray(bind.value) ? bind.value : [bind.value]\n ).filter(Boolean);\n\n return (\n <Bind.ValidationContainer>\n <EditFileUsingUrl onSetFile={onSetFile(bind)}>\n {({ editFile }) => (\n <FileManager\n multiple\n images={imagesOnly}\n render={({ showFileManager }) => {\n const selectFiles = (index = -1) => {\n showFileManager(files => {\n const urls = files.map(f => f.src);\n if (index === -1) {\n onChange([...values, ...urls]);\n } else {\n onChange([\n ...values.slice(0, index),\n ...urls,\n ...values.slice(index + 1)\n ]);\n }\n });\n };\n return (\n <MultiFilePicker\n {...bind}\n disabled={disabled}\n label={field.label}\n validation={validation}\n description={field.description}\n note={getSupportedExtensionsLabelHint(imagesOnly)}\n values={values}\n onSelectItem={() => selectFiles()}\n onReplaceItem={(_, index) => selectFiles(index)}\n onRemoveItem={(_, index) =>\n onChange(dotProp.delete(values, index))\n }\n onEditItem={(value, index) => {\n if (!value) {\n return;\n }\n\n editFileRef.current = {\n index,\n url: value.url\n };\n\n editFile(value.url);\n }}\n placeholder={field.placeholder}\n type={\"compact\"}\n data-testid={`fr.input.filefields.${field.label}`}\n />\n );\n }}\n />\n )}\n </EditFileUsingUrl>\n </Bind.ValidationContainer>\n );\n }}\n </Bind>\n );\n};\n\nexport const multipleFiles: CmsModelFieldRendererPlugin = {\n type: \"cms-editor-field-renderer\",\n name: \"cms-editor-field-renderer-files\",\n renderer: {\n rendererName: \"file-inputs\",\n name: t`File Inputs`,\n description: t`Enables selecting multiple files via File Manager.`,\n canUse({ field }) {\n return field.type === \"file\" && !!field.list;\n },\n render(props) {\n return <FieldRenderer {...props} />;\n }\n }\n};\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,MAAM,QAAQ,OAAO;AACrC,OAAOC,OAAO,MAAM,oBAAoB;AAMxC,SAASC,IAAI,QAAQ,2BAA2B;AAChD,SAASC,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,+BAA+B;AACxC,SAASC,gBAAgB;AAEzB,SAASC,eAAe,QAAQ,kBAAkB;AAClD,SAASC,sBAAsB,EAAEC,aAAa,QAAQ,iCAAiC;AAEvF,MAAMC,CAAC,GAAGP,IAAI,CAACQ,EAAE,CAAC,oCAAoC,CAAC;AAOvD,MAAMC,aAAa,GAAGA,CAAC;EAAEC;AAAoC,CAAC,KAAK;EAC/D,MAAM;IAAEC;EAAM,CAAC,GAAGL,aAAa,CAAC,CAAC;EACjC,MAAMM,KAAK,GAAGP,sBAAsB,CAACM,KAAK,CAAC;EAC3C,MAAME,QAAQ,GAAG,CAACD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACC,QAAQ;EACjD,MAAME,IAAI,GAAGL,OAAO,CAAC,CAAC;EACtB,MAAMM,WAAW,GAAGlB,MAAM,CAAqB,IAAI,CAAC;EAEpD,MAAMmB,UAAU,GAAGN,KAAK,CAACO,QAAQ,IAAIP,KAAK,CAACO,QAAQ,CAACD,UAAU;EAE9D,MAAME,SAAS,GAAIC,IAA6B,IAAK;IACjD,OAAQC,IAAc,IAAK;MACvB,IAAI,CAACL,WAAW,CAACM,OAAO,EAAE;QACtB;MACJ;MAEA,MAAMC,QAAQ,GAAG,CAAC,GAAGH,IAAI,CAACI,KAAK,CAAC;MAChCJ,IAAI,CAACK,QAAQ,CAAC,CACV,GAAGF,QAAQ,CAACG,KAAK,CAAC,CAAC,EAAEV,WAAW,CAACM,OAAO,CAACK,KAAK,CAAC,EAC/CN,IAAI,CAACO,GAAG,EACR,GAAGL,QAAQ,CAACG,KAAK,CAACV,WAAW,CAACM,OAAO,CAACK,KAAK,GAAG,CAAC,CAAC,CACnD,CAAC;MAEFX,WAAW,CAACM,OAAO,GAAG,IAAI;IAC9B,CAAC;EACL,CAAC;EAED,oBACIzB,KAAA,CAAAgC,aAAA,CAACd,IAAI,QACAK,IAAI,IAAI;IACL,MAAM;MAAEK,QAAQ;MAAEK;IAAW,CAAC,GAAGV,IAAI;;IAErC;IACA,MAAMW,MAAgB,GAAG,CACrBC,KAAK,CAACC,OAAO,CAACb,IAAI,CAACI,KAAK,CAAC,GAAGJ,IAAI,CAACI,KAAK,GAAG,CAACJ,IAAI,CAACI,KAAK,CAAC,EACvDU,MAAM,CAACC,OAAO,CAAC;IAEjB,oBACItC,KAAA,CAAAgC,aAAA,CAACd,IAAI,CAACqB,mBAAmB,qBACrBvC,KAAA,CAAAgC,aAAA,CAAC1B,gBAAgB;MAACgB,SAAS,EAAEA,SAAS,CAACC,IAAI;IAAE,GACxC,CAAC;MAAEiB;IAAS,CAAC,kBACVxC,KAAA,CAAAgC,aAAA,CAAC5B,WAAW;MACRqC,QAAQ;MACRC,MAAM,EAAEtB,UAAW;MACnBuB,MAAM,EAAEA,CAAC;QAAEC;MAAgB,CAAC,KAAK;QAC7B,MAAMC,WAAW,GAAGA,CAACf,KAAK,GAAG,CAAC,CAAC,KAAK;UAChCc,eAAe,CAACE,KAAK,IAAI;YACrB,MAAMC,IAAI,GAAGD,KAAK,CAACE,GAAG,CAACC,CAAC,IAAIA,CAAC,CAAClB,GAAG,CAAC;YAClC,IAAID,KAAK,KAAK,CAAC,CAAC,EAAE;cACdF,QAAQ,CAAC,CAAC,GAAGM,MAAM,EAAE,GAAGa,IAAI,CAAC,CAAC;YAClC,CAAC,MAAM;cACHnB,QAAQ,CAAC,CACL,GAAGM,MAAM,CAACL,KAAK,CAAC,CAAC,EAAEC,KAAK,CAAC,EACzB,GAAGiB,IAAI,EACP,GAAGb,MAAM,CAACL,KAAK,CAACC,KAAK,GAAG,CAAC,CAAC,CAC7B,CAAC;YACN;UACJ,CAAC,CAAC;QACN,CAAC;QACD,oBACI9B,KAAA,CAAAgC,aAAA,CAACzB,eAAe,EAAA2C,MAAA,CAAAC,MAAA,KACR5B,IAAI;UACRP,QAAQ,EAAEA,QAAS;UACnBoC,KAAK,EAAEtC,KAAK,CAACsC,KAAM;UACnBnB,UAAU,EAAEA,UAAW;UACvBoB,WAAW,EAAEvC,KAAK,CAACuC,WAAY;UAC/BC,IAAI,EAAEjD,+BAA+B,CAACe,UAAU,CAAE;UAClDc,MAAM,EAAEA,MAAO;UACfqB,YAAY,EAAEA,CAAA,KAAMV,WAAW,CAAC,CAAE;UAClCW,aAAa,EAAEA,CAACC,CAAC,EAAE3B,KAAK,KAAKe,WAAW,CAACf,KAAK,CAAE;UAChD4B,YAAY,EAAEA,CAACD,CAAC,EAAE3B,KAAK,KACnBF,QAAQ,CAAC1B,OAAO,CAACyD,MAAM,CAACzB,MAAM,EAAEJ,KAAK,CAAC,CACzC;UACD8B,UAAU,EAAEA,CAACjC,KAAK,EAAEG,KAAK,KAAK;YAC1B,IAAI,CAACH,KAAK,EAAE;cACR;YACJ;YAEAR,WAAW,CAACM,OAAO,GAAG;cAClBK,KAAK;cACL+B,GAAG,EAAElC,KAAK,CAACkC;YACf,CAAC;YAEDrB,QAAQ,CAACb,KAAK,CAACkC,GAAG,CAAC;UACvB,CAAE;UACFC,WAAW,EAAEhD,KAAK,CAACgD,WAAY;UAC/BC,IAAI,EAAE,SAAU;UAChB,eAAa,uBAAuBjD,KAAK,CAACsC,KAAK;QAAG,EACrD,CAAC;MAEV;IAAE,CACL,CAES,CACI,CAAC;EAEnC,CACE,CAAC;AAEf,CAAC;AAED,OAAO,MAAMY,aAA0C,GAAG;EACtDD,IAAI,EAAE,2BAA2B;EACjCE,IAAI,EAAE,iCAAiC;EACvCC,QAAQ,EAAE;IACNC,YAAY,EAAE,aAAa;IAC3BF,IAAI,EAAEvD,CAAC,aAAa;IACpB2C,WAAW,EAAE3C,CAAC,oDAAoD;IAClE0D,MAAMA,CAAC;MAAEtD;IAAM,CAAC,EAAE;MACd,OAAOA,KAAK,CAACiD,IAAI,KAAK,MAAM,IAAI,CAAC,CAACjD,KAAK,CAACuD,IAAI;IAChD,CAAC;IACD1B,MAAMA,CAAC2B,KAAK,EAAE;MACV,oBAAOtE,KAAA,CAAAgC,aAAA,CAACpB,aAAa,EAAK0D,KAAQ,CAAC;IACvC;EACJ;AACJ,CAAC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-file-manager",
3
- "version": "6.0.0-rc.4",
3
+ "version": "6.0.0-rc.6",
4
4
  "type": "module",
5
5
  "main": "index.js",
6
6
  "repository": {
@@ -14,21 +14,21 @@
14
14
  "@apollo/react-components": "3.1.5",
15
15
  "@apollo/react-hooks": "3.1.5",
16
16
  "@types/react": "18.2.79",
17
- "@webiny/admin-ui": "6.0.0-rc.4",
18
- "@webiny/app": "6.0.0-rc.4",
19
- "@webiny/app-aco": "6.0.0-rc.4",
20
- "@webiny/app-admin": "6.0.0-rc.4",
21
- "@webiny/app-headless-cms": "6.0.0-rc.4",
22
- "@webiny/app-headless-cms-common": "6.0.0-rc.4",
23
- "@webiny/app-websockets": "6.0.0-rc.4",
24
- "@webiny/error": "6.0.0-rc.4",
25
- "@webiny/form": "6.0.0-rc.4",
26
- "@webiny/icons": "6.0.0-rc.4",
27
- "@webiny/plugins": "6.0.0-rc.4",
28
- "@webiny/react-composition": "6.0.0-rc.4",
29
- "@webiny/react-properties": "6.0.0-rc.4",
30
- "@webiny/utils": "6.0.0-rc.4",
31
- "@webiny/validation": "6.0.0-rc.4",
17
+ "@webiny/admin-ui": "6.0.0-rc.6",
18
+ "@webiny/app": "6.0.0-rc.6",
19
+ "@webiny/app-aco": "6.0.0-rc.6",
20
+ "@webiny/app-admin": "6.0.0-rc.6",
21
+ "@webiny/app-headless-cms": "6.0.0-rc.6",
22
+ "@webiny/app-headless-cms-common": "6.0.0-rc.6",
23
+ "@webiny/app-websockets": "6.0.0-rc.6",
24
+ "@webiny/error": "6.0.0-rc.6",
25
+ "@webiny/form": "6.0.0-rc.6",
26
+ "@webiny/icons": "6.0.0-rc.6",
27
+ "@webiny/plugins": "6.0.0-rc.6",
28
+ "@webiny/react-composition": "6.0.0-rc.6",
29
+ "@webiny/react-properties": "6.0.0-rc.6",
30
+ "@webiny/utils": "6.0.0-rc.6",
31
+ "@webiny/validation": "6.0.0-rc.6",
32
32
  "apollo-cache": "1.3.5",
33
33
  "apollo-client": "2.6.10",
34
34
  "apollo-link": "1.2.14",
@@ -38,7 +38,7 @@
38
38
  "dataurl-to-blob": "0.0.1",
39
39
  "dayjs": "1.11.19",
40
40
  "dot-prop-immutable": "2.1.1",
41
- "graphql": "16.13.0",
41
+ "graphql": "16.13.1",
42
42
  "graphql-tag": "2.12.6",
43
43
  "load-script": "1.0.0",
44
44
  "lodash": "4.17.23",
@@ -57,7 +57,7 @@
57
57
  },
58
58
  "devDependencies": {
59
59
  "@svgr/webpack": "6.5.1",
60
- "@webiny/build-tools": "6.0.0-rc.4",
60
+ "@webiny/build-tools": "6.0.0-rc.6",
61
61
  "rimraf": "6.1.3",
62
62
  "typescript": "5.9.3",
63
63
  "vitest": "4.0.18"
@@ -66,5 +66,5 @@
66
66
  "access": "public",
67
67
  "directory": "dist"
68
68
  },
69
- "gitHead": "e2758ee1cfa3b9a7152e9bb995a90ccabd33266f"
69
+ "gitHead": "a2a076532809feabf674a6873464f09071d86c72"
70
70
  }