@payloadcms/ui 3.0.0-beta.70 → 3.0.0-beta.71
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.
- package/dist/elements/ArrayAction/index.d.ts +1 -1
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +1 -1
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +7 -1
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/Collapsible/index.d.ts +1 -1
- package/dist/elements/Collapsible/index.d.ts.map +1 -1
- package/dist/elements/Collapsible/index.js +1 -1
- package/dist/elements/Collapsible/index.js.map +1 -1
- package/dist/elements/DocumentFields/index.d.ts +1 -2
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/Drawer/index.d.ts.map +1 -1
- package/dist/elements/Drawer/index.js +3 -0
- package/dist/elements/Drawer/index.js.map +1 -1
- package/dist/elements/Drawer/index.scss +2 -1
- package/dist/elements/EditMany/index.d.ts +1 -2
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/FieldSelect/index.d.ts +1 -2
- package/dist/elements/FieldSelect/index.d.ts.map +1 -1
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.d.ts +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.d.ts.map +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts +1 -2
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/SortColumn/index.d.ts +2 -2
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/StepNav/types.d.ts +2 -2
- package/dist/elements/StepNav/types.d.ts.map +1 -1
- package/dist/elements/StepNav/types.js.map +1 -1
- package/dist/elements/Table/index.d.ts +1 -2
- package/dist/elements/Table/index.d.ts.map +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.d.ts +1 -2
- package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
- package/dist/elements/TableColumns/filterFields.d.ts +1 -1
- package/dist/elements/TableColumns/filterFields.d.ts.map +1 -1
- package/dist/elements/TableColumns/filterFields.js.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.d.ts +1 -1
- package/dist/elements/TableColumns/getInitialColumns.d.ts.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +7 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.d.ts +1 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.js +3 -3
- package/dist/elements/WhereBuilder/reduceFieldMap.js.map +1 -1
- package/dist/elements/WhereBuilder/types.d.ts +1 -2
- package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/types.js.map +1 -1
- package/dist/exports/client/index.d.ts +5 -6
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +18 -18
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Array/ArrayRow.d.ts +2 -3
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts +1 -14
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +3 -1
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts +2 -3
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts +2 -3
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +2 -3
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +1 -1
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts +1 -14
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +2 -2
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts +1 -1
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.d.ts +1 -1
- package/dist/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/fields/Checkbox/index.js +2 -2
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Code/index.d.ts +1 -9
- package/dist/fields/Code/index.d.ts.map +1 -1
- package/dist/fields/Code/index.js +2 -2
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.d.ts +1 -7
- package/dist/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/fields/Collapsible/index.js +2 -2
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/DateTime/index.d.ts +1 -9
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js +2 -2
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts +1 -9
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js +2 -2
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/FieldDescription/index.d.ts +2 -2
- package/dist/fields/FieldDescription/index.d.ts.map +1 -1
- package/dist/fields/FieldDescription/index.js.map +1 -1
- package/dist/fields/FieldError/index.d.ts +2 -2
- package/dist/fields/FieldError/index.d.ts.map +1 -1
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/FieldLabel/index.d.ts +2 -2
- package/dist/fields/FieldLabel/index.d.ts.map +1 -1
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Group/index.d.ts +2 -10
- package/dist/fields/Group/index.d.ts.map +1 -1
- package/dist/fields/Group/index.js +2 -2
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/Hidden/index.d.ts +2 -9
- package/dist/fields/Hidden/index.d.ts.map +1 -1
- package/dist/fields/Hidden/index.js +2 -2
- package/dist/fields/Hidden/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts +1 -9
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +2 -2
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Number/index.d.ts +1 -14
- package/dist/fields/Number/index.d.ts.map +1 -1
- package/dist/fields/Number/index.js +2 -2
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Password/index.d.ts +1 -2
- package/dist/fields/Password/index.d.ts.map +1 -1
- package/dist/fields/Password/index.js +2 -2
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Point/index.d.ts +2 -9
- package/dist/fields/Point/index.d.ts.map +1 -1
- package/dist/fields/Point/index.js +2 -2
- package/dist/fields/Point/index.js.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.d.ts +2 -3
- package/dist/fields/RadioGroup/Radio/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.d.ts +1 -12
- package/dist/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/index.js +2 -2
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/Relationship/index.d.ts +1 -2
- package/dist/fields/Relationship/index.d.ts.map +1 -1
- package/dist/fields/Relationship/index.js +2 -2
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Relationship/types.d.ts +1 -11
- package/dist/fields/Relationship/types.d.ts.map +1 -1
- package/dist/fields/Relationship/types.js.map +1 -1
- package/dist/fields/RichText/index.d.ts +2 -8
- package/dist/fields/RichText/index.d.ts.map +1 -1
- package/dist/fields/RichText/index.js.map +1 -1
- package/dist/fields/Row/index.d.ts +1 -2
- package/dist/fields/Row/index.d.ts.map +1 -1
- package/dist/fields/Row/index.js +2 -2
- package/dist/fields/Row/index.js.map +1 -1
- package/dist/fields/Row/index.scss +1 -5
- package/dist/fields/Select/Input.d.ts +1 -2
- package/dist/fields/Select/Input.d.ts.map +1 -1
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Select/index.d.ts +1 -13
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +2 -2
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.d.ts +1 -1
- package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/index.d.ts +1 -9
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +24 -24
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Text/index.d.ts +3 -2
- package/dist/fields/Text/index.d.ts.map +1 -1
- package/dist/fields/Text/index.js +2 -2
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Text/types.d.ts +1 -15
- package/dist/fields/Text/types.d.ts.map +1 -1
- package/dist/fields/Text/types.js.map +1 -1
- package/dist/fields/Textarea/index.d.ts +3 -2
- package/dist/fields/Textarea/index.d.ts.map +1 -1
- package/dist/fields/Textarea/index.js +2 -2
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Textarea/types.d.ts +1 -11
- package/dist/fields/Textarea/types.d.ts.map +1 -1
- package/dist/fields/Textarea/types.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts +1 -2
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/index.d.ts +1 -1
- package/dist/fields/Upload/index.d.ts.map +1 -1
- package/dist/fields/Upload/index.js +2 -2
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/fields/shared/index.d.ts +1 -25
- package/dist/fields/shared/index.d.ts.map +1 -1
- package/dist/fields/shared/index.js.map +1 -1
- package/dist/forms/Form/createNestedFieldPath.d.ts +1 -2
- package/dist/forms/Form/createNestedFieldPath.d.ts.map +1 -1
- package/dist/forms/Form/createNestedFieldPath.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.d.ts +4 -3
- package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/RenderFields/types.d.ts +1 -2
- package/dist/forms/RenderFields/types.d.ts.map +1 -1
- package/dist/forms/RenderFields/types.js.map +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.d.ts +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.js.map +1 -1
- package/dist/forms/WatchChildErrors/index.d.ts +1 -1
- package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
- package/dist/hooks/usePayloadAPI.js +5 -1
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/hooks/useUseAsTitle.d.ts +1 -2
- package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
- package/dist/hooks/useUseAsTitle.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts +1 -2
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.js +126 -95
- package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/types.d.ts +1 -56
- package/dist/providers/ComponentMap/buildComponentMap/types.d.ts.map +1 -1
- package/dist/providers/ComponentMap/buildComponentMap/types.js.map +1 -1
- package/dist/providers/ComponentMap/index.d.ts +2 -1
- package/dist/providers/ComponentMap/index.d.ts.map +1 -1
- package/dist/providers/ComponentMap/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +5 -1
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/flattenFieldMap.d.ts +1 -1
- package/dist/utilities/flattenFieldMap.d.ts.map +1 -1
- package/dist/utilities/flattenFieldMap.js.map +1 -1
- package/package.json +4 -4
- package/dist/fields/Checkbox/types.d.ts +0 -12
- package/dist/fields/Checkbox/types.d.ts.map +0 -1
- package/dist/fields/Checkbox/types.js +0 -3
- package/dist/fields/Checkbox/types.js.map +0 -1
- package/dist/fields/Row/types.d.ts +0 -12
- package/dist/fields/Row/types.d.ts.map +0 -1
- package/dist/fields/Row/types.js +0 -3
- package/dist/fields/Row/types.js.map +0 -1
- package/dist/fields/Upload/types.d.ts +0 -10
- package/dist/fields/Upload/types.d.ts.map +0 -1
- package/dist/fields/Upload/types.js +0 -3
- package/dist/fields/Upload/types.js.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import './index.scss';
|
|
3
3
|
export type Props = {
|
|
4
|
-
addRow: (current: number, blockType?: string) => void;
|
|
4
|
+
addRow: (current: number, blockType?: string) => Promise<void> | void;
|
|
5
5
|
duplicateRow: (current: number) => void;
|
|
6
6
|
hasMaxRows: boolean;
|
|
7
7
|
index: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ArrayAction/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ArrayAction/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACrE,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3C,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAyFvC,CAAA"}
|
|
@@ -56,7 +56,7 @@ export const ArrayAction = ({ addRow, duplicateRow, hasMaxRows, index, isSortabl
|
|
|
56
56
|
/*#__PURE__*/ _jsxs(PopupList.Button, {
|
|
57
57
|
className: `${baseClass}__action ${baseClass}__add`,
|
|
58
58
|
onClick: ()=>{
|
|
59
|
-
addRow(index + 1);
|
|
59
|
+
void addRow(index + 1);
|
|
60
60
|
close();
|
|
61
61
|
},
|
|
62
62
|
children: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/ArrayAction/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { CopyIcon } from '../../icons/Copy/index.js'\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'array-actions'\n\nexport type Props = {\n addRow: (current: number, blockType?: string) => void\n duplicateRow: (current: number) => void\n hasMaxRows: boolean\n index: number\n isSortable?: boolean\n moveRow: (from: number, to: number) => void\n removeRow: (index: number) => void\n rowCount: number\n}\n\nexport const ArrayAction: React.FC<Props> = ({\n addRow,\n duplicateRow,\n hasMaxRows,\n index,\n isSortable,\n moveRow,\n removeRow,\n rowCount,\n}) => {\n const { t } = useTranslation()\n\n return (\n <Popup\n button={<MoreIcon />}\n buttonClassName={`${baseClass}__button`}\n className={baseClass}\n horizontalAlign=\"center\"\n render={({ close }) => {\n return (\n <PopupList.ButtonGroup buttonSize=\"small\">\n {isSortable && index !== 0 && (\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__move-up`}\n onClick={() => {\n moveRow(index, index - 1)\n close()\n }}\n >\n <div className={`${baseClass}__action-chevron`}>\n <ChevronIcon direction=\"up\" />\n </div>\n {t('general:moveUp')}\n </PopupList.Button>\n )}\n {isSortable && index < rowCount - 1 && (\n <PopupList.Button\n className={`${baseClass}__action`}\n onClick={() => {\n moveRow(index, index + 1)\n close()\n }}\n >\n <div className={`${baseClass}__action-chevron`}>\n <ChevronIcon />\n </div>\n {t('general:moveDown')}\n </PopupList.Button>\n )}\n {!hasMaxRows && (\n <React.Fragment>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__add`}\n onClick={() => {\n addRow(index + 1)\n close()\n }}\n >\n <PlusIcon />\n {t('general:addBelow')}\n </PopupList.Button>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__duplicate`}\n onClick={() => {\n duplicateRow(index)\n close()\n }}\n >\n <CopyIcon />\n {t('general:duplicate')}\n </PopupList.Button>\n </React.Fragment>\n )}\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__remove`}\n onClick={() => {\n removeRow(index)\n close()\n }}\n >\n <XIcon />\n {t('general:remove')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )\n }}\n size=\"medium\"\n />\n )\n}\n"],"names":["React","ChevronIcon","CopyIcon","MoreIcon","PlusIcon","XIcon","useTranslation","Popup","PopupList","baseClass","ArrayAction","addRow","duplicateRow","hasMaxRows","index","isSortable","moveRow","removeRow","rowCount","t","button","buttonClassName","className","horizontalAlign","render","close","ButtonGroup","buttonSize","Button","onClick","div","direction","Fragment","size"],"mappings":"AAAA;;AACA,OAAOA,WAAW,QAAO;AAEzB,SAASC,WAAW,QAAQ,+BAA8B;AAC1D,SAASC,QAAQ,QAAQ,4BAA2B;AACpD,SAASC,QAAQ,QAAQ,4BAA2B;AACpD,SAASC,QAAQ,QAAQ,4BAA2B;AACpD,SAASC,KAAK,QAAQ,yBAAwB;AAC9C,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,KAAK,EAAEC,SAAS,QAAQ,oBAAmB;AACpD,OAAO,eAAc;AAErB,MAAMC,YAAY;AAalB,OAAO,MAAMC,cAA+B,CAAC,EAC3CC,MAAM,EACNC,YAAY,EACZC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,QAAQ,EACT;IACC,MAAM,EAAEC,CAAC,EAAE,GAAGb;IAEd,qBACE,KAACC;QACCa,sBAAQ,KAACjB;QACTkB,iBAAiB,CAAC,EAAEZ,UAAU,QAAQ,CAAC;QACvCa,WAAWb;QACXc,iBAAgB;QAChBC,QAAQ,CAAC,EAAEC,KAAK,EAAE;YAChB,qBACE,MAACjB,UAAUkB,WAAW;gBAACC,YAAW;;oBAC/BZ,cAAcD,UAAU,mBACvB,MAACN,UAAUoB,MAAM;wBACfN,WAAW,CAAC,EAAEb,UAAU,SAAS,EAAEA,UAAU,SAAS,CAAC;wBACvDoB,SAAS;4BACPb,QAAQF,OAAOA,QAAQ;4BACvBW;wBACF;;0CAEA,KAACK;gCAAIR,WAAW,CAAC,EAAEb,UAAU,gBAAgB,CAAC;0CAC5C,cAAA,KAACR;oCAAY8B,WAAU;;;4BAExBZ,EAAE;;;oBAGNJ,cAAcD,QAAQI,WAAW,mBAChC,MAACV,UAAUoB,MAAM;wBACfN,WAAW,CAAC,EAAEb,UAAU,QAAQ,CAAC;wBACjCoB,SAAS;4BACPb,QAAQF,OAAOA,QAAQ;4BACvBW;wBACF;;0CAEA,KAACK;gCAAIR,WAAW,CAAC,EAAEb,UAAU,gBAAgB,CAAC;0CAC5C,cAAA,KAACR;;4BAEFkB,EAAE;;;oBAGN,CAACN,4BACA,MAACb,MAAMgC,QAAQ;;0CACb,MAACxB,UAAUoB,MAAM;gCACfN,WAAW,CAAC,EAAEb,UAAU,SAAS,EAAEA,UAAU,KAAK,CAAC;gCACnDoB,SAAS;
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/ArrayAction/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { CopyIcon } from '../../icons/Copy/index.js'\nimport { MoreIcon } from '../../icons/More/index.js'\nimport { PlusIcon } from '../../icons/Plus/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.scss'\n\nconst baseClass = 'array-actions'\n\nexport type Props = {\n addRow: (current: number, blockType?: string) => Promise<void> | void\n duplicateRow: (current: number) => void\n hasMaxRows: boolean\n index: number\n isSortable?: boolean\n moveRow: (from: number, to: number) => void\n removeRow: (index: number) => void\n rowCount: number\n}\n\nexport const ArrayAction: React.FC<Props> = ({\n addRow,\n duplicateRow,\n hasMaxRows,\n index,\n isSortable,\n moveRow,\n removeRow,\n rowCount,\n}) => {\n const { t } = useTranslation()\n\n return (\n <Popup\n button={<MoreIcon />}\n buttonClassName={`${baseClass}__button`}\n className={baseClass}\n horizontalAlign=\"center\"\n render={({ close }) => {\n return (\n <PopupList.ButtonGroup buttonSize=\"small\">\n {isSortable && index !== 0 && (\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__move-up`}\n onClick={() => {\n moveRow(index, index - 1)\n close()\n }}\n >\n <div className={`${baseClass}__action-chevron`}>\n <ChevronIcon direction=\"up\" />\n </div>\n {t('general:moveUp')}\n </PopupList.Button>\n )}\n {isSortable && index < rowCount - 1 && (\n <PopupList.Button\n className={`${baseClass}__action`}\n onClick={() => {\n moveRow(index, index + 1)\n close()\n }}\n >\n <div className={`${baseClass}__action-chevron`}>\n <ChevronIcon />\n </div>\n {t('general:moveDown')}\n </PopupList.Button>\n )}\n {!hasMaxRows && (\n <React.Fragment>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__add`}\n onClick={() => {\n void addRow(index + 1)\n close()\n }}\n >\n <PlusIcon />\n {t('general:addBelow')}\n </PopupList.Button>\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__duplicate`}\n onClick={() => {\n duplicateRow(index)\n close()\n }}\n >\n <CopyIcon />\n {t('general:duplicate')}\n </PopupList.Button>\n </React.Fragment>\n )}\n <PopupList.Button\n className={`${baseClass}__action ${baseClass}__remove`}\n onClick={() => {\n removeRow(index)\n close()\n }}\n >\n <XIcon />\n {t('general:remove')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )\n }}\n size=\"medium\"\n />\n )\n}\n"],"names":["React","ChevronIcon","CopyIcon","MoreIcon","PlusIcon","XIcon","useTranslation","Popup","PopupList","baseClass","ArrayAction","addRow","duplicateRow","hasMaxRows","index","isSortable","moveRow","removeRow","rowCount","t","button","buttonClassName","className","horizontalAlign","render","close","ButtonGroup","buttonSize","Button","onClick","div","direction","Fragment","size"],"mappings":"AAAA;;AACA,OAAOA,WAAW,QAAO;AAEzB,SAASC,WAAW,QAAQ,+BAA8B;AAC1D,SAASC,QAAQ,QAAQ,4BAA2B;AACpD,SAASC,QAAQ,QAAQ,4BAA2B;AACpD,SAASC,QAAQ,QAAQ,4BAA2B;AACpD,SAASC,KAAK,QAAQ,yBAAwB;AAC9C,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,KAAK,EAAEC,SAAS,QAAQ,oBAAmB;AACpD,OAAO,eAAc;AAErB,MAAMC,YAAY;AAalB,OAAO,MAAMC,cAA+B,CAAC,EAC3CC,MAAM,EACNC,YAAY,EACZC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,OAAO,EACPC,SAAS,EACTC,QAAQ,EACT;IACC,MAAM,EAAEC,CAAC,EAAE,GAAGb;IAEd,qBACE,KAACC;QACCa,sBAAQ,KAACjB;QACTkB,iBAAiB,CAAC,EAAEZ,UAAU,QAAQ,CAAC;QACvCa,WAAWb;QACXc,iBAAgB;QAChBC,QAAQ,CAAC,EAAEC,KAAK,EAAE;YAChB,qBACE,MAACjB,UAAUkB,WAAW;gBAACC,YAAW;;oBAC/BZ,cAAcD,UAAU,mBACvB,MAACN,UAAUoB,MAAM;wBACfN,WAAW,CAAC,EAAEb,UAAU,SAAS,EAAEA,UAAU,SAAS,CAAC;wBACvDoB,SAAS;4BACPb,QAAQF,OAAOA,QAAQ;4BACvBW;wBACF;;0CAEA,KAACK;gCAAIR,WAAW,CAAC,EAAEb,UAAU,gBAAgB,CAAC;0CAC5C,cAAA,KAACR;oCAAY8B,WAAU;;;4BAExBZ,EAAE;;;oBAGNJ,cAAcD,QAAQI,WAAW,mBAChC,MAACV,UAAUoB,MAAM;wBACfN,WAAW,CAAC,EAAEb,UAAU,QAAQ,CAAC;wBACjCoB,SAAS;4BACPb,QAAQF,OAAOA,QAAQ;4BACvBW;wBACF;;0CAEA,KAACK;gCAAIR,WAAW,CAAC,EAAEb,UAAU,gBAAgB,CAAC;0CAC5C,cAAA,KAACR;;4BAEFkB,EAAE;;;oBAGN,CAACN,4BACA,MAACb,MAAMgC,QAAQ;;0CACb,MAACxB,UAAUoB,MAAM;gCACfN,WAAW,CAAC,EAAEb,UAAU,SAAS,EAAEA,UAAU,KAAK,CAAC;gCACnDoB,SAAS;oCACP,KAAKlB,OAAOG,QAAQ;oCACpBW;gCACF;;kDAEA,KAACrB;oCACAe,EAAE;;;0CAEL,MAACX,UAAUoB,MAAM;gCACfN,WAAW,CAAC,EAAEb,UAAU,SAAS,EAAEA,UAAU,WAAW,CAAC;gCACzDoB,SAAS;oCACPjB,aAAaE;oCACbW;gCACF;;kDAEA,KAACvB;oCACAiB,EAAE;;;;;kCAIT,MAACX,UAAUoB,MAAM;wBACfN,WAAW,CAAC,EAAEb,UAAU,SAAS,EAAEA,UAAU,QAAQ,CAAC;wBACtDoB,SAAS;4BACPZ,UAAUH;4BACVW;wBACF;;0CAEA,KAACpB;4BACAc,EAAE;;;;;QAIX;QACAc,MAAK;;AAGX,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Autosave/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAGzE,OAAO,KAAsC,MAAM,OAAO,CAAA;AAiB1D,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Autosave/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAGzE,OAAO,KAAsC,MAAM,OAAO,CAAA;AAiB1D,OAAO,cAAc,CAAA;AAMrB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA2OpC,CAAA"}
|
|
@@ -168,7 +168,13 @@ export const Autosave = ({ id, collection, global: globalDoc, publishedDocUpdate
|
|
|
168
168
|
void autosave();
|
|
169
169
|
return ()=>{
|
|
170
170
|
if (autosaveTimeout) clearTimeout(autosaveTimeout);
|
|
171
|
-
if (abortController.signal)
|
|
171
|
+
if (abortController.signal) {
|
|
172
|
+
try {
|
|
173
|
+
abortController.abort();
|
|
174
|
+
} catch (error) {
|
|
175
|
+
// swallow error
|
|
176
|
+
}
|
|
177
|
+
}
|
|
172
178
|
setSaving(false);
|
|
173
179
|
};
|
|
174
180
|
}, [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { versionDefaults } from 'payload/shared'\nimport React, { useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDate.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport './index.scss'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({\n id,\n collection,\n global: globalDoc,\n publishedDocUpdatedAt,\n}) => {\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const { docConfig, getVersions, versions } = useDocumentInfo()\n const { reportUpdate } = useDocumentEvents()\n const { dispatchFields, setModified, setSubmitted } = useForm()\n const submitted = useFormSubmitted()\n const versionsConfig = docConfig?.versions\n\n const [fields] = useAllFormFields()\n const formModified = useFormModified()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n let interval = versionDefaults.autosaveInterval\n if (versionsConfig.drafts && versionsConfig.drafts.autosave)\n interval = versionsConfig.drafts.autosave.interval\n\n const [saving, setSaving] = useState(false)\n const [lastSaved, setLastSaved] = useState<number>()\n const debouncedFields = useDebounce(fields, interval)\n const modified = useDebounce(formModified, interval)\n const fieldRef = useRef(fields)\n const modifiedRef = useRef(modified)\n const localeRef = useRef(locale)\n const debouncedRef = useRef(debouncedFields)\n\n debouncedRef.current = debouncedFields\n\n // Store fields in ref so the autosave func\n // can always retrieve the most to date copies\n // after the timeout has executed\n fieldRef.current = fields\n\n // Store modified in ref so the autosave func\n // can bail out if modified becomes false while\n // timing out during autosave\n modifiedRef.current = modified\n\n // Store locale in ref so the autosave func\n // can always retrieve the most to date locale\n localeRef.current = locale\n\n // When debounced fields change, autosave\n useEffect(() => {\n const abortController = new AbortController()\n let autosaveTimeout = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const autosave = () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n\n if (collection && id) {\n entitySlug = collection.slug\n url = `${serverURL}${api}/${entitySlug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'POST'\n }\n\n if (url) {\n if (modifiedRef.current) {\n const { data, valid } = {\n ...reduceFieldsToValuesWithValidation(fieldRef.current, true),\n }\n data._status = 'draft'\n const skipSubmission =\n submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate\n\n if (!skipSubmission) {\n void fetch(url, {\n body: JSON.stringify(data),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method,\n signal: abortController.signal,\n })\n .then((res) => {\n const newDate = new Date()\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n if (res.status === 200) {\n setLastSaved(newDate.getTime())\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: newDate.toISOString(),\n })\n setModified(false)\n void getVersions()\n } else {\n return res.json()\n }\n })\n .then((json) => {\n if (versionsConfig?.drafts && versionsConfig?.drafts?.validate && json.errors) {\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || i18n.t('error:unknown'))\n })\n\n setSubmitted(true)\n setSaving(false)\n return\n }\n }\n })\n .then(() => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeout = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n setSaving(false)\n }\n })\n }\n }\n }\n }\n }\n\n void autosave()\n\n return () => {\n if (autosaveTimeout) clearTimeout(autosaveTimeout)\n if (abortController.signal) abortController.abort()\n setSaving(false)\n }\n }, [\n api,\n collection,\n dispatchFields,\n getVersions,\n globalDoc,\n i18n,\n id,\n interval,\n modified,\n reportUpdate,\n serverURL,\n setSubmitted,\n setModified,\n versionsConfig?.drafts,\n debouncedFields,\n submitted,\n ])\n\n useEffect(() => {\n if (versions?.docs?.[0]) {\n setLastSaved(new Date(versions.docs[0].updatedAt).getTime())\n } else if (publishedDocUpdatedAt) {\n setLastSaved(new Date(publishedDocUpdatedAt).getTime())\n }\n }, [publishedDocUpdatedAt, versions])\n\n return (\n <div className={baseClass}>\n {saving && t('general:saving')}\n {!saving && Boolean(lastSaved) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastSaved, i18n }),\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n"],"names":["versionDefaults","React","useEffect","useRef","useState","toast","useAllFormFields","useForm","useFormModified","useFormSubmitted","useDebounce","useConfig","useDocumentEvents","useDocumentInfo","useLocale","useTranslation","formatTimeToNow","reduceFieldsToValuesWithValidation","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","publishedDocUpdatedAt","routes","api","serverURL","docConfig","getVersions","versions","reportUpdate","dispatchFields","setModified","setSubmitted","submitted","versionsConfig","fields","formModified","code","locale","i18n","t","interval","autosaveInterval","drafts","autosave","saving","setSaving","lastSaved","setLastSaved","debouncedFields","modified","fieldRef","modifiedRef","localeRef","debouncedRef","current","abortController","AbortController","autosaveTimeout","undefined","startTimestamp","endTimestamp","Date","getTime","url","method","entitySlug","slug","data","valid","_status","skipSubmission","validate","fetch","body","JSON","stringify","credentials","headers","language","signal","then","res","newDate","status","updatedAt","toISOString","json","errors","Array","isArray","fieldErrors","nonFieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","push","forEach","dataError","field","type","error","setTimeout","clearTimeout","abort","docs","div","className","Boolean","Fragment","distance","date"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\n// TODO: abstract the `next/navigation` dependency out from this component\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { versionDefaults } from 'payload/shared'\nimport React, { useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { formatTimeToNow } from '../../utilities/formatDate.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport './index.scss'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({\n id,\n collection,\n global: globalDoc,\n publishedDocUpdatedAt,\n}) => {\n const {\n routes: { api },\n serverURL,\n } = useConfig()\n const { docConfig, getVersions, versions } = useDocumentInfo()\n const { reportUpdate } = useDocumentEvents()\n const { dispatchFields, setModified, setSubmitted } = useForm()\n const submitted = useFormSubmitted()\n const versionsConfig = docConfig?.versions\n\n const [fields] = useAllFormFields()\n const formModified = useFormModified()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n let interval = versionDefaults.autosaveInterval\n if (versionsConfig.drafts && versionsConfig.drafts.autosave)\n interval = versionsConfig.drafts.autosave.interval\n\n const [saving, setSaving] = useState(false)\n const [lastSaved, setLastSaved] = useState<number>()\n const debouncedFields = useDebounce(fields, interval)\n const modified = useDebounce(formModified, interval)\n const fieldRef = useRef(fields)\n const modifiedRef = useRef(modified)\n const localeRef = useRef(locale)\n const debouncedRef = useRef(debouncedFields)\n\n debouncedRef.current = debouncedFields\n\n // Store fields in ref so the autosave func\n // can always retrieve the most to date copies\n // after the timeout has executed\n fieldRef.current = fields\n\n // Store modified in ref so the autosave func\n // can bail out if modified becomes false while\n // timing out during autosave\n modifiedRef.current = modified\n\n // Store locale in ref so the autosave func\n // can always retrieve the most to date locale\n localeRef.current = locale\n\n // When debounced fields change, autosave\n useEffect(() => {\n const abortController = new AbortController()\n let autosaveTimeout = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const autosave = () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n\n if (collection && id) {\n entitySlug = collection.slug\n url = `${serverURL}${api}/${entitySlug}/${id}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = `${serverURL}${api}/globals/${entitySlug}?draft=true&autosave=true&locale=${localeRef.current}`\n method = 'POST'\n }\n\n if (url) {\n if (modifiedRef.current) {\n const { data, valid } = {\n ...reduceFieldsToValuesWithValidation(fieldRef.current, true),\n }\n data._status = 'draft'\n const skipSubmission =\n submitted && !valid && versionsConfig?.drafts && versionsConfig?.drafts?.validate\n\n if (!skipSubmission) {\n void fetch(url, {\n body: JSON.stringify(data),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method,\n signal: abortController.signal,\n })\n .then((res) => {\n const newDate = new Date()\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n if (res.status === 200) {\n setLastSaved(newDate.getTime())\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: newDate.toISOString(),\n })\n setModified(false)\n void getVersions()\n } else {\n return res.json()\n }\n })\n .then((json) => {\n if (versionsConfig?.drafts && versionsConfig?.drafts?.validate && json.errors) {\n if (Array.isArray(json.errors)) {\n const [fieldErrors, nonFieldErrors] = json.errors.reduce(\n ([fieldErrs, nonFieldErrs], err) => {\n const newFieldErrs = []\n const newNonFieldErrs = []\n\n if (err?.message) {\n newNonFieldErrs.push(err)\n }\n\n if (Array.isArray(err?.data)) {\n err.data.forEach((dataError) => {\n if (dataError?.field) {\n newFieldErrs.push(dataError)\n } else {\n newNonFieldErrs.push(dataError)\n }\n })\n }\n\n return [\n [...fieldErrs, ...newFieldErrs],\n [...nonFieldErrs, ...newNonFieldErrs],\n ]\n },\n [[], []],\n )\n\n dispatchFields({\n type: 'ADD_SERVER_ERRORS',\n errors: fieldErrors,\n })\n\n nonFieldErrors.forEach((err) => {\n toast.error(err.message || i18n.t('error:unknown'))\n })\n\n setSubmitted(true)\n setSaving(false)\n return\n }\n }\n })\n .then(() => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeout = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n setSaving(false)\n }\n })\n }\n }\n }\n }\n }\n\n void autosave()\n\n return () => {\n if (autosaveTimeout) clearTimeout(autosaveTimeout)\n if (abortController.signal) {\n try {\n abortController.abort()\n } catch (error) {\n // swallow error\n }\n }\n setSaving(false)\n }\n }, [\n api,\n collection,\n dispatchFields,\n getVersions,\n globalDoc,\n i18n,\n id,\n interval,\n modified,\n reportUpdate,\n serverURL,\n setSubmitted,\n setModified,\n versionsConfig?.drafts,\n debouncedFields,\n submitted,\n ])\n\n useEffect(() => {\n if (versions?.docs?.[0]) {\n setLastSaved(new Date(versions.docs[0].updatedAt).getTime())\n } else if (publishedDocUpdatedAt) {\n setLastSaved(new Date(publishedDocUpdatedAt).getTime())\n }\n }, [publishedDocUpdatedAt, versions])\n\n return (\n <div className={baseClass}>\n {saving && t('general:saving')}\n {!saving && Boolean(lastSaved) && (\n <React.Fragment>\n {t('version:lastSavedAgo', {\n distance: formatTimeToNow({ date: lastSaved, i18n }),\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n"],"names":["versionDefaults","React","useEffect","useRef","useState","toast","useAllFormFields","useForm","useFormModified","useFormSubmitted","useDebounce","useConfig","useDocumentEvents","useDocumentInfo","useLocale","useTranslation","formatTimeToNow","reduceFieldsToValuesWithValidation","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","publishedDocUpdatedAt","routes","api","serverURL","docConfig","getVersions","versions","reportUpdate","dispatchFields","setModified","setSubmitted","submitted","versionsConfig","fields","formModified","code","locale","i18n","t","interval","autosaveInterval","drafts","autosave","saving","setSaving","lastSaved","setLastSaved","debouncedFields","modified","fieldRef","modifiedRef","localeRef","debouncedRef","current","abortController","AbortController","autosaveTimeout","undefined","startTimestamp","endTimestamp","Date","getTime","url","method","entitySlug","slug","data","valid","_status","skipSubmission","validate","fetch","body","JSON","stringify","credentials","headers","language","signal","then","res","newDate","status","updatedAt","toISOString","json","errors","Array","isArray","fieldErrors","nonFieldErrors","reduce","fieldErrs","nonFieldErrs","err","newFieldErrs","newNonFieldErrs","message","push","forEach","dataError","field","type","error","setTimeout","clearTimeout","abort","docs","div","className","Boolean","Fragment","distance","date"],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export type Props = {
|
|
|
12
12
|
header?: React.ReactNode;
|
|
13
13
|
initCollapsed?: boolean;
|
|
14
14
|
isCollapsed?: boolean;
|
|
15
|
-
onToggle?: (collapsed: boolean) => void;
|
|
15
|
+
onToggle?: (collapsed: boolean) => Promise<void> | void;
|
|
16
16
|
};
|
|
17
17
|
export declare const Collapsible: React.FC<Props>;
|
|
18
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Collapsible/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qDAAqD,CAAA;AAQ1F,OAAO,cAAc,CAAA;AACrB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAInE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAA;AAE9C,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IACtC,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Collapsible/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qDAAqD,CAAA;AAQ1F,OAAO,cAAc,CAAA;AACrB,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAInE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,CAAA;AAE9C,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,SAAS,GAAG,OAAO,CAAA;IACtC,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;CACxD,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAyFvC,CAAA"}
|
|
@@ -17,7 +17,7 @@ export const Collapsible = ({ actions, children, className, collapsibleStyle = '
|
|
|
17
17
|
const { t } = useTranslation();
|
|
18
18
|
const isCollapsed = typeof collapsedFromProps === 'boolean' ? collapsedFromProps : collapsedLocal;
|
|
19
19
|
const toggleCollapsible = React.useCallback(()=>{
|
|
20
|
-
if (typeof onToggle === 'function') onToggle(!isCollapsed);
|
|
20
|
+
if (typeof onToggle === 'function') void onToggle(!isCollapsed);
|
|
21
21
|
setCollapsedLocal(!isCollapsed);
|
|
22
22
|
}, [
|
|
23
23
|
onToggle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Collapsible/index.tsx"],"sourcesContent":["'use client'\nimport React, { useState } from 'react'\nimport AnimateHeightImport from 'react-animate-height'\n\nimport type { DragHandleProps } from '../DraggableSortable/DraggableSortableItem/types.js'\n\nconst AnimateHeight = (AnimateHeightImport.default ||\n AnimateHeightImport) as typeof AnimateHeightImport.default\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { DragHandleIcon } from '../../icons/DragHandle/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\nimport { CollapsibleProvider, useCollapsible } from './provider.js'\n\nconst baseClass = 'collapsible'\n\nexport { CollapsibleProvider, useCollapsible }\n\nexport type Props = {\n actions?: React.ReactNode\n children: React.ReactNode\n className?: string\n collapsibleStyle?: 'default' | 'error'\n dragHandleProps?: DragHandleProps\n header?: React.ReactNode\n initCollapsed?: boolean\n isCollapsed?: boolean\n onToggle?: (collapsed: boolean) => void\n}\n\nexport const Collapsible: React.FC<Props> = ({\n actions,\n children,\n className,\n collapsibleStyle = 'default',\n dragHandleProps,\n header,\n initCollapsed,\n isCollapsed: collapsedFromProps,\n onToggle,\n}) => {\n const [collapsedLocal, setCollapsedLocal] = useState(Boolean(initCollapsed))\n const [hoveringToggle, setHoveringToggle] = useState(false)\n const { isWithinCollapsible } = useCollapsible()\n const { t } = useTranslation()\n\n const isCollapsed = typeof collapsedFromProps === 'boolean' ? collapsedFromProps : collapsedLocal\n\n const toggleCollapsible = React.useCallback(() => {\n if (typeof onToggle === 'function') onToggle(!isCollapsed)\n setCollapsedLocal(!isCollapsed)\n }, [onToggle, isCollapsed])\n\n return (\n <div\n className={[\n baseClass,\n className,\n dragHandleProps && `${baseClass}--has-drag-handle`,\n isCollapsed && `${baseClass}--collapsed`,\n isWithinCollapsible && `${baseClass}--nested`,\n hoveringToggle && `${baseClass}--hovered`,\n `${baseClass}--style-${collapsibleStyle}`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <CollapsibleProvider isCollapsed={isCollapsed} toggle={toggleCollapsible}>\n <div\n className={`${baseClass}__toggle-wrap`}\n onMouseEnter={() => setHoveringToggle(true)}\n onMouseLeave={() => setHoveringToggle(false)}\n >\n {dragHandleProps && (\n <div\n className={`${baseClass}__drag`}\n {...dragHandleProps.attributes}\n {...dragHandleProps.listeners}\n >\n <DragHandleIcon />\n </div>\n )}\n <button\n className={[\n `${baseClass}__toggle`,\n `${baseClass}__toggle--${isCollapsed ? 'collapsed' : 'open'}`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={toggleCollapsible}\n type=\"button\"\n >\n <span>{t('fields:toggleBlock')}</span>\n </button>\n {header && (\n <div\n className={[\n `${baseClass}__header-wrap`,\n dragHandleProps && `${baseClass}__header-wrap--has-drag-handle`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {header && header}\n </div>\n )}\n <div className={`${baseClass}__actions-wrap`}>\n {actions && <div className={`${baseClass}__actions`}>{actions}</div>}\n <div className={`${baseClass}__indicator`}>\n <ChevronIcon direction={!isCollapsed ? 'up' : undefined} />\n </div>\n </div>\n </div>\n <AnimateHeight duration={200} height={isCollapsed ? 0 : 'auto'}>\n <div className={`${baseClass}__content`}>{children}</div>\n </AnimateHeight>\n </CollapsibleProvider>\n </div>\n )\n}\n"],"names":["React","useState","AnimateHeightImport","AnimateHeight","default","ChevronIcon","DragHandleIcon","useTranslation","CollapsibleProvider","useCollapsible","baseClass","Collapsible","actions","children","className","collapsibleStyle","dragHandleProps","header","initCollapsed","isCollapsed","collapsedFromProps","onToggle","collapsedLocal","setCollapsedLocal","Boolean","hoveringToggle","setHoveringToggle","isWithinCollapsible","t","toggleCollapsible","useCallback","div","filter","join","toggle","onMouseEnter","onMouseLeave","attributes","listeners","button","onClick","type","span","direction","undefined","duration","height"],"mappings":"AAAA;;AACA,OAAOA,SAASC,QAAQ,QAAQ,QAAO;AACvC,OAAOC,yBAAyB,uBAAsB;AAItD,MAAMC,gBAAiBD,oBAAoBE,OAAO,IAChDF;AAEF,SAASG,WAAW,QAAQ,+BAA8B;AAC1D,SAASC,cAAc,QAAQ,kCAAiC;AAChE,SAASC,cAAc,QAAQ,uCAAsC;AACrE,OAAO,eAAc;AACrB,SAASC,mBAAmB,EAAEC,cAAc,QAAQ,gBAAe;AAEnE,MAAMC,YAAY;AAElB,SAASF,mBAAmB,EAAEC,cAAc,GAAE;AAc9C,OAAO,MAAME,cAA+B,CAAC,EAC3CC,OAAO,EACPC,QAAQ,EACRC,SAAS,EACTC,mBAAmB,SAAS,EAC5BC,eAAe,EACfC,MAAM,EACNC,aAAa,EACbC,aAAaC,kBAAkB,EAC/BC,QAAQ,EACT;IACC,MAAM,CAACC,gBAAgBC,kBAAkB,GAAGtB,SAASuB,QAAQN;IAC7D,MAAM,CAACO,gBAAgBC,kBAAkB,GAAGzB,SAAS;IACrD,MAAM,EAAE0B,mBAAmB,EAAE,GAAGlB;IAChC,MAAM,EAAEmB,CAAC,EAAE,GAAGrB;IAEd,MAAMY,cAAc,OAAOC,uBAAuB,YAAYA,qBAAqBE;IAEnF,MAAMO,oBAAoB7B,MAAM8B,WAAW,CAAC;QAC1C,IAAI,OAAOT,aAAa,
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Collapsible/index.tsx"],"sourcesContent":["'use client'\nimport React, { useState } from 'react'\nimport AnimateHeightImport from 'react-animate-height'\n\nimport type { DragHandleProps } from '../DraggableSortable/DraggableSortableItem/types.js'\n\nconst AnimateHeight = (AnimateHeightImport.default ||\n AnimateHeightImport) as typeof AnimateHeightImport.default\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { DragHandleIcon } from '../../icons/DragHandle/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport './index.scss'\nimport { CollapsibleProvider, useCollapsible } from './provider.js'\n\nconst baseClass = 'collapsible'\n\nexport { CollapsibleProvider, useCollapsible }\n\nexport type Props = {\n actions?: React.ReactNode\n children: React.ReactNode\n className?: string\n collapsibleStyle?: 'default' | 'error'\n dragHandleProps?: DragHandleProps\n header?: React.ReactNode\n initCollapsed?: boolean\n isCollapsed?: boolean\n onToggle?: (collapsed: boolean) => Promise<void> | void\n}\n\nexport const Collapsible: React.FC<Props> = ({\n actions,\n children,\n className,\n collapsibleStyle = 'default',\n dragHandleProps,\n header,\n initCollapsed,\n isCollapsed: collapsedFromProps,\n onToggle,\n}) => {\n const [collapsedLocal, setCollapsedLocal] = useState(Boolean(initCollapsed))\n const [hoveringToggle, setHoveringToggle] = useState(false)\n const { isWithinCollapsible } = useCollapsible()\n const { t } = useTranslation()\n\n const isCollapsed = typeof collapsedFromProps === 'boolean' ? collapsedFromProps : collapsedLocal\n\n const toggleCollapsible = React.useCallback(() => {\n if (typeof onToggle === 'function') void onToggle(!isCollapsed)\n setCollapsedLocal(!isCollapsed)\n }, [onToggle, isCollapsed])\n\n return (\n <div\n className={[\n baseClass,\n className,\n dragHandleProps && `${baseClass}--has-drag-handle`,\n isCollapsed && `${baseClass}--collapsed`,\n isWithinCollapsible && `${baseClass}--nested`,\n hoveringToggle && `${baseClass}--hovered`,\n `${baseClass}--style-${collapsibleStyle}`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <CollapsibleProvider isCollapsed={isCollapsed} toggle={toggleCollapsible}>\n <div\n className={`${baseClass}__toggle-wrap`}\n onMouseEnter={() => setHoveringToggle(true)}\n onMouseLeave={() => setHoveringToggle(false)}\n >\n {dragHandleProps && (\n <div\n className={`${baseClass}__drag`}\n {...dragHandleProps.attributes}\n {...dragHandleProps.listeners}\n >\n <DragHandleIcon />\n </div>\n )}\n <button\n className={[\n `${baseClass}__toggle`,\n `${baseClass}__toggle--${isCollapsed ? 'collapsed' : 'open'}`,\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={toggleCollapsible}\n type=\"button\"\n >\n <span>{t('fields:toggleBlock')}</span>\n </button>\n {header && (\n <div\n className={[\n `${baseClass}__header-wrap`,\n dragHandleProps && `${baseClass}__header-wrap--has-drag-handle`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n {header && header}\n </div>\n )}\n <div className={`${baseClass}__actions-wrap`}>\n {actions && <div className={`${baseClass}__actions`}>{actions}</div>}\n <div className={`${baseClass}__indicator`}>\n <ChevronIcon direction={!isCollapsed ? 'up' : undefined} />\n </div>\n </div>\n </div>\n <AnimateHeight duration={200} height={isCollapsed ? 0 : 'auto'}>\n <div className={`${baseClass}__content`}>{children}</div>\n </AnimateHeight>\n </CollapsibleProvider>\n </div>\n )\n}\n"],"names":["React","useState","AnimateHeightImport","AnimateHeight","default","ChevronIcon","DragHandleIcon","useTranslation","CollapsibleProvider","useCollapsible","baseClass","Collapsible","actions","children","className","collapsibleStyle","dragHandleProps","header","initCollapsed","isCollapsed","collapsedFromProps","onToggle","collapsedLocal","setCollapsedLocal","Boolean","hoveringToggle","setHoveringToggle","isWithinCollapsible","t","toggleCollapsible","useCallback","div","filter","join","toggle","onMouseEnter","onMouseLeave","attributes","listeners","button","onClick","type","span","direction","undefined","duration","height"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { Description, DocumentPermissions } from 'payload';
|
|
1
|
+
import type { Description, DocumentPermissions, FieldMap } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import type { FieldMap } from '../../providers/ComponentMap/buildComponentMap/types.js';
|
|
4
3
|
import './index.scss';
|
|
5
4
|
type Args = {
|
|
6
5
|
AfterFields?: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentFields/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentFields/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAEzE,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,cAAc,CAAA;AAIrB,KAAK,IAAI,GAAG;IACV,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,cAAc,EAAE,mBAAmB,CAAA;IACnC,QAAQ,EAAE,QAAQ,CAAA;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,EAAE,OAAO,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAkEzC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/DocumentFields/index.tsx"],"sourcesContent":["'use client'\nimport type { Description, DocumentPermissions } from 'payload'\n\nimport React from 'react'\n\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/DocumentFields/index.tsx"],"sourcesContent":["'use client'\nimport type { Description, DocumentPermissions, FieldMap } from 'payload'\n\nimport React from 'react'\n\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport './index.scss'\n\nconst baseClass = 'document-fields'\n\ntype Args = {\n AfterFields?: React.ReactNode\n BeforeFields?: React.ReactNode\n description?: Description\n docPermissions: DocumentPermissions\n fieldMap: FieldMap\n forceSidebarWrap?: boolean\n readOnly: boolean\n schemaPath: string\n}\n\nexport const DocumentFields: React.FC<Args> = ({\n AfterFields,\n BeforeFields,\n description,\n docPermissions,\n fieldMap,\n forceSidebarWrap,\n readOnly,\n schemaPath,\n}) => {\n const mainFields = fieldMap.filter(({ isSidebar }) => !isSidebar)\n\n const sidebarFields = fieldMap.filter(({ isSidebar }) => isSidebar)\n\n const hasSidebarFields = sidebarFields && sidebarFields.length > 0\n\n return (\n <div\n className={[\n baseClass,\n hasSidebarFields ? `${baseClass}--has-sidebar` : `${baseClass}--no-sidebar`,\n forceSidebarWrap && `${baseClass}--force-sidebar-wrap`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div className={`${baseClass}__main`}>\n <Gutter className={`${baseClass}__edit`}>\n <header className={`${baseClass}__header`}>\n {description && (\n <div className={`${baseClass}__sub-header`}>\n {/* <ViewDescription description={description} /> */}\n </div>\n )}\n </header>\n {BeforeFields}\n <RenderFields\n className={`${baseClass}__fields`}\n fieldMap={mainFields}\n forceRender={10}\n path=\"\"\n permissions={docPermissions?.fields}\n readOnly={readOnly}\n schemaPath={schemaPath}\n />\n {AfterFields}\n </Gutter>\n </div>\n {hasSidebarFields && (\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-fields`}>\n <RenderFields\n fieldMap={sidebarFields}\n forceRender={10}\n path=\"\"\n permissions={docPermissions?.fields}\n readOnly={readOnly}\n schemaPath={schemaPath}\n />\n </div>\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["React","RenderFields","Gutter","baseClass","DocumentFields","AfterFields","BeforeFields","description","docPermissions","fieldMap","forceSidebarWrap","readOnly","schemaPath","mainFields","filter","isSidebar","sidebarFields","hasSidebarFields","length","div","className","Boolean","join","header","forceRender","path","permissions","fields"],"mappings":"AAAA;;AAGA,OAAOA,WAAW,QAAO;AAEzB,SAASC,YAAY,QAAQ,oCAAmC;AAChE,SAASC,MAAM,QAAQ,qBAAoB;AAC3C,OAAO,eAAc;AAErB,MAAMC,YAAY;AAalB,OAAO,MAAMC,iBAAiC,CAAC,EAC7CC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,cAAc,EACdC,QAAQ,EACRC,gBAAgB,EAChBC,QAAQ,EACRC,UAAU,EACX;IACC,MAAMC,aAAaJ,SAASK,MAAM,CAAC,CAAC,EAAEC,SAAS,EAAE,GAAK,CAACA;IAEvD,MAAMC,gBAAgBP,SAASK,MAAM,CAAC,CAAC,EAAEC,SAAS,EAAE,GAAKA;IAEzD,MAAME,mBAAmBD,iBAAiBA,cAAcE,MAAM,GAAG;IAEjE,qBACE,MAACC;QACCC,WAAW;YACTjB;YACAc,mBAAmB,CAAC,EAAEd,UAAU,aAAa,CAAC,GAAG,CAAC,EAAEA,UAAU,YAAY,CAAC;YAC3EO,oBAAoB,CAAC,EAAEP,UAAU,oBAAoB,CAAC;SACvD,CACEW,MAAM,CAACO,SACPC,IAAI,CAAC;;0BAER,KAACH;gBAAIC,WAAW,CAAC,EAAEjB,UAAU,MAAM,CAAC;0BAClC,cAAA,MAACD;oBAAOkB,WAAW,CAAC,EAAEjB,UAAU,MAAM,CAAC;;sCACrC,KAACoB;4BAAOH,WAAW,CAAC,EAAEjB,UAAU,QAAQ,CAAC;sCACtCI,6BACC,KAACY;gCAAIC,WAAW,CAAC,EAAEjB,UAAU,YAAY,CAAC;;;wBAK7CG;sCACD,KAACL;4BACCmB,WAAW,CAAC,EAAEjB,UAAU,QAAQ,CAAC;4BACjCM,UAAUI;4BACVW,aAAa;4BACbC,MAAK;4BACLC,aAAalB,gBAAgBmB;4BAC7BhB,UAAUA;4BACVC,YAAYA;;wBAEbP;;;;YAGJY,kCACC,KAACE;gBAAIC,WAAW,CAAC,EAAEjB,UAAU,cAAc,CAAC;0BAC1C,cAAA,KAACgB;oBAAIC,WAAW,CAAC,EAAEjB,UAAU,SAAS,CAAC;8BACrC,cAAA,KAACgB;wBAAIC,WAAW,CAAC,EAAEjB,UAAU,gBAAgB,CAAC;kCAC5C,cAAA,KAACF;4BACCQ,UAAUO;4BACVQ,aAAa;4BACbC,MAAK;4BACLC,aAAalB,gBAAgBmB;4BAC7BhB,UAAUA;4BACVC,YAAYA;;;;;;;AAQ5B,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Drawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAMrD,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,gBAAgB,oBAAqB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,MACzD,CAAA;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAuBhD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Drawer/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAMrD,OAAO,cAAc,CAAA;AAKrB,eAAO,MAAM,gBAAgB,oBAAqB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,MACzD,CAAA;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAuBhD,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAuFlC,CAAA"}
|
|
@@ -73,6 +73,9 @@ export const Drawer = ({ slug, Header, children, className, gutter = true, hover
|
|
|
73
73
|
}),
|
|
74
74
|
/*#__PURE__*/ _jsxs("div", {
|
|
75
75
|
className: `${baseClass}__content`,
|
|
76
|
+
style: {
|
|
77
|
+
width: `calc(100% - (${drawerDepth} * var(--gutter-h))`
|
|
78
|
+
},
|
|
76
79
|
children: [
|
|
77
80
|
/*#__PURE__*/ _jsx("div", {
|
|
78
81
|
className: `${baseClass}__blur-bg-content`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/Drawer/index.tsx"],"sourcesContent":["'use client'\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Props, TogglerProps } from './types.js'\n\nimport { XIcon } from '../../icons/X/index.js'\nimport { EditDepthContext, useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport './index.scss'\n\nconst baseClass = 'drawer'\nconst zBase = 100\n\nexport const formatDrawerSlug = ({ slug, depth }: { depth: number; slug: string }): string =>\n `drawer_${depth}_${slug}`\n\nexport { useDrawerSlug } from './useDrawerSlug.js'\n\nexport const DrawerToggler: React.FC<TogglerProps> = ({\n slug,\n children,\n className,\n disabled,\n onClick,\n ...rest\n}) => {\n const { openModal } = useModal()\n\n const handleClick = useCallback(\n (e) => {\n openModal(slug)\n if (typeof onClick === 'function') onClick(e)\n },\n [openModal, slug, onClick],\n )\n\n return (\n <button className={className} disabled={disabled} onClick={handleClick} type=\"button\" {...rest}>\n {children}\n </button>\n )\n}\n\nexport const Drawer: React.FC<Props> = ({\n slug,\n Header,\n children,\n className,\n gutter = true,\n hoverTitle,\n title,\n}) => {\n const { t } = useTranslation()\n const { closeModal, modalState } = useModal()\n const drawerDepth = useEditDepth()\n const [isOpen, setIsOpen] = useState(false)\n const [animateIn, setAnimateIn] = useState(false)\n\n useEffect(() => {\n setIsOpen(modalState[slug]?.isOpen)\n }, [slug, modalState])\n\n useEffect(() => {\n setAnimateIn(isOpen)\n }, [isOpen])\n\n if (isOpen) {\n // IMPORTANT: do not render the drawer until it is explicitly open, this is to avoid large html trees especially when nesting drawers\n return (\n <Modal\n className={[\n className,\n baseClass,\n animateIn && `${baseClass}--is-open`,\n drawerDepth > 1 && `${baseClass}--nested`,\n ]\n .filter(Boolean)\n .join(' ')}\n slug={slug}\n style={{\n zIndex: zBase + drawerDepth,\n }}\n >\n {(!drawerDepth || drawerDepth === 1) && <div className={`${baseClass}__blur-bg`} />}\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__close`}\n id={`close-drawer__${slug}`}\n onClick={() => closeModal(slug)}\n type=\"button\"\n />\n <div
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/Drawer/index.tsx"],"sourcesContent":["'use client'\nimport { Modal, useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Props, TogglerProps } from './types.js'\n\nimport { XIcon } from '../../icons/X/index.js'\nimport { EditDepthContext, useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Gutter } from '../Gutter/index.js'\nimport './index.scss'\n\nconst baseClass = 'drawer'\nconst zBase = 100\n\nexport const formatDrawerSlug = ({ slug, depth }: { depth: number; slug: string }): string =>\n `drawer_${depth}_${slug}`\n\nexport { useDrawerSlug } from './useDrawerSlug.js'\n\nexport const DrawerToggler: React.FC<TogglerProps> = ({\n slug,\n children,\n className,\n disabled,\n onClick,\n ...rest\n}) => {\n const { openModal } = useModal()\n\n const handleClick = useCallback(\n (e) => {\n openModal(slug)\n if (typeof onClick === 'function') onClick(e)\n },\n [openModal, slug, onClick],\n )\n\n return (\n <button className={className} disabled={disabled} onClick={handleClick} type=\"button\" {...rest}>\n {children}\n </button>\n )\n}\n\nexport const Drawer: React.FC<Props> = ({\n slug,\n Header,\n children,\n className,\n gutter = true,\n hoverTitle,\n title,\n}) => {\n const { t } = useTranslation()\n const { closeModal, modalState } = useModal()\n const drawerDepth = useEditDepth()\n\n const [isOpen, setIsOpen] = useState(false)\n const [animateIn, setAnimateIn] = useState(false)\n\n useEffect(() => {\n setIsOpen(modalState[slug]?.isOpen)\n }, [slug, modalState])\n\n useEffect(() => {\n setAnimateIn(isOpen)\n }, [isOpen])\n\n if (isOpen) {\n // IMPORTANT: do not render the drawer until it is explicitly open, this is to avoid large html trees especially when nesting drawers\n return (\n <Modal\n className={[\n className,\n baseClass,\n animateIn && `${baseClass}--is-open`,\n drawerDepth > 1 && `${baseClass}--nested`,\n ]\n .filter(Boolean)\n .join(' ')}\n slug={slug}\n style={{\n zIndex: zBase + drawerDepth,\n }}\n >\n {(!drawerDepth || drawerDepth === 1) && <div className={`${baseClass}__blur-bg`} />}\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__close`}\n id={`close-drawer__${slug}`}\n onClick={() => closeModal(slug)}\n type=\"button\"\n />\n <div\n className={`${baseClass}__content`}\n style={{\n width: `calc(100% - (${drawerDepth} * var(--gutter-h))`,\n }}\n >\n <div className={`${baseClass}__blur-bg-content`} />\n <Gutter className={`${baseClass}__content-children`} left={gutter} right={gutter}>\n <EditDepthContext.Provider value={drawerDepth + 1}>\n {Header}\n {Header === undefined && (\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`} title={hoverTitle ? title : null}>\n {title}\n </h2>\n {/* TODO: the `button` HTML element breaks CSS transitions on the drawer for some reason...\n i.e. changing to a `div` element will fix the animation issue but will break accessibility\n */}\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${slug}`}\n onClick={() => closeModal(slug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n )}\n {children}\n </EditDepthContext.Provider>\n </Gutter>\n </div>\n </Modal>\n )\n }\n\n return null\n}\n"],"names":["Modal","useModal","React","useCallback","useEffect","useState","XIcon","EditDepthContext","useEditDepth","useTranslation","Gutter","baseClass","zBase","formatDrawerSlug","slug","depth","useDrawerSlug","DrawerToggler","children","className","disabled","onClick","rest","openModal","handleClick","e","button","type","Drawer","Header","gutter","hoverTitle","title","t","closeModal","modalState","drawerDepth","isOpen","setIsOpen","animateIn","setAnimateIn","filter","Boolean","join","style","zIndex","div","aria-label","id","width","left","right","Provider","value","undefined","h2"],"mappings":"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"}
|
|
@@ -25,7 +25,8 @@ $transTime: 200;
|
|
|
25
25
|
transform: translateX(calc(var(--base) * 4));
|
|
26
26
|
position: relative;
|
|
27
27
|
z-index: 2;
|
|
28
|
-
|
|
28
|
+
// NOTE: width is controlled by js
|
|
29
|
+
// width: calc(100% - var(--gutter-h));
|
|
29
30
|
overflow: hidden;
|
|
30
31
|
transition: all #{$transTime}ms linear;
|
|
31
32
|
background-color: var(--theme-bg);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type { ClientCollectionConfig } from 'payload';
|
|
1
|
+
import type { ClientCollectionConfig, FieldMap } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import './index.scss';
|
|
4
|
-
import type { FieldMap } from '../../providers/ComponentMap/buildComponentMap/types.js';
|
|
5
4
|
export type EditManyProps = {
|
|
6
5
|
collection: ClientCollectionConfig;
|
|
7
6
|
fieldMap: FieldMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/EditMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAa,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/EditMany/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAa,MAAM,SAAS,CAAA;AAK1E,OAAO,KAAgC,MAAM,OAAO,CAAA;AAoBpD,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,aAAa,GAAG;IAC1B,UAAU,EAAE,sBAAsB,CAAA;IAClC,QAAQ,EAAE,QAAQ,CAAA;CACnB,CAAA;AAgED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAkJ5C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, FormState } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-many'\n\nimport type { FieldMap } from '../../providers/ComponentMap/buildComponentMap/types.js'\n\nexport type EditManyProps = {\n collection: ClientCollectionConfig\n fieldMap: FieldMap\n}\n\nconst Submit: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\n\nconst PublishButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'published',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\n\nconst SaveDraftButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__draft`} disabled={disabled} onClick={save}>\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { collection: { slug, labels: { plural } } = {}, collection, fieldMap } = props\n\n const { permissions } = useAuth()\n const { closeModal } = useModal()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = useConfig()\n const { count, getQueryParams, selectAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [selected, setSelected] = useState([])\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const [initialState, setInitialState] = useState<FormState>()\n const hasInitializedState = React.useRef(false)\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update?.permission\n\n const drawerSlug = `edit-${slug}`\n\n React.useEffect(() => {\n if (!hasInitializedState.current) {\n const getInitialState = async () => {\n const result = await getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n data: {},\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n }, [apiRoute, hasInitializedState, serverURL, slug])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n ({ formState: prevFormState }) =>\n getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n formState: prevFormState,\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n }),\n [serverURL, apiRoute, slug],\n )\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission) {\n return null\n }\n\n const onSuccess = () => {\n router.replace(\n stringifyParams({\n params: { page: selectAll === SelectAllStatus.AllAvailable ? '1' : undefined },\n }),\n )\n clearRouteCache()\n closeModal(drawerSlug)\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:edit')}\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSelected([])\n }}\n slug={drawerSlug}\n >\n {t('general:edit')}\n </DrawerToggler>\n <Drawer Header={null} slug={drawerSlug}>\n <DocumentInfoProvider collectionSlug={slug} id={null}>\n <OperationContext.Provider value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', { count, label: getTranslation(plural, i18n) })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n initialState={initialState}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect fieldMap={fieldMap} setSelected={setSelected} />\n {selected.length === 0 ? null : (\n <RenderFields fieldMap={selected} path=\"\" readOnly={false} schemaPath={slug} />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <PublishButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n <SaveDraftButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}`}\n disabled={selected.length === 0}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext.Provider>\n </DocumentInfoProvider>\n </Drawer>\n </div>\n )\n}\n"],"names":["useModal","getTranslation","useRouter","React","useCallback","useState","useForm","Form","RenderFields","FormSubmit","XIcon","useAuth","useConfig","DocumentInfoProvider","OperationContext","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","getFormState","Drawer","DrawerToggler","FieldSelect","baseClass","Submit","action","disabled","submit","t","save","method","skipValidation","className","onClick","PublishButton","overrides","_status","SaveDraftButton","EditMany","props","collection","slug","labels","plural","fieldMap","permissions","closeModal","routes","api","apiRoute","serverURL","count","getQueryParams","selectAll","i18n","selected","setSelected","stringifyParams","router","initialState","setInitialState","hasInitializedState","useRef","clearRouteCache","collectionPermissions","collections","hasUpdatePermission","update","permission","drawerSlug","useEffect","current","getInitialState","result","body","collectionSlug","data","operation","schemaPath","onChange","formState","prevFormState","None","onSuccess","replace","params","page","AllAvailable","undefined","div","aria-label","Header","id","Provider","value","h2","label","button","type","length","path","readOnly","versions","drafts","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/EditMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, FieldMap, FormState } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport React, { useCallback, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { getFormState } from '../../utilities/getFormState.js'\nimport { Drawer, DrawerToggler } from '../Drawer/index.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'edit-many'\n\nexport type EditManyProps = {\n collection: ClientCollectionConfig\n fieldMap: FieldMap\n}\n\nconst Submit: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\n\nconst PublishButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'published',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\n\nconst SaveDraftButton: React.FC<{ action: string; disabled: boolean }> = ({ action, disabled }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n }, [action, submit])\n\n return (\n <FormSubmit className={`${baseClass}__draft`} disabled={disabled} onClick={save}>\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\nexport const EditMany: React.FC<EditManyProps> = (props) => {\n const { collection: { slug, labels: { plural } } = {}, collection, fieldMap } = props\n\n const { permissions } = useAuth()\n const { closeModal } = useModal()\n const {\n routes: { api: apiRoute },\n serverURL,\n } = useConfig()\n const { count, getQueryParams, selectAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [selected, setSelected] = useState([])\n const { stringifyParams } = useSearchParams()\n const router = useRouter()\n const [initialState, setInitialState] = useState<FormState>()\n const hasInitializedState = React.useRef(false)\n const { clearRouteCache } = useRouteCache()\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update?.permission\n\n const drawerSlug = `edit-${slug}`\n\n React.useEffect(() => {\n if (!hasInitializedState.current) {\n const getInitialState = async () => {\n const result = await getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n data: {},\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n }, [apiRoute, hasInitializedState, serverURL, slug])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n ({ formState: prevFormState }) =>\n getFormState({\n apiRoute,\n body: {\n collectionSlug: slug,\n formState: prevFormState,\n operation: 'update',\n schemaPath: slug,\n },\n serverURL,\n }),\n [serverURL, apiRoute, slug],\n )\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission) {\n return null\n }\n\n const onSuccess = () => {\n router.replace(\n stringifyParams({\n params: { page: selectAll === SelectAllStatus.AllAvailable ? '1' : undefined },\n }),\n )\n clearRouteCache()\n closeModal(drawerSlug)\n }\n\n return (\n <div className={baseClass}>\n <DrawerToggler\n aria-label={t('general:edit')}\n className={`${baseClass}__toggle`}\n onClick={() => {\n setSelected([])\n }}\n slug={drawerSlug}\n >\n {t('general:edit')}\n </DrawerToggler>\n <Drawer Header={null} slug={drawerSlug}>\n <DocumentInfoProvider collectionSlug={slug} id={null}>\n <OperationContext.Provider value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', { count, label: getTranslation(plural, i18n) })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n initialState={initialState}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect fieldMap={fieldMap} setSelected={setSelected} />\n {selected.length === 0 ? null : (\n <RenderFields fieldMap={selected} path=\"\" readOnly={false} schemaPath={slug} />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <PublishButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n <SaveDraftButton\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}&draft=true`}\n disabled={selected.length === 0}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={`${serverURL}${apiRoute}/${slug}${getQueryParams()}`}\n disabled={selected.length === 0}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext.Provider>\n </DocumentInfoProvider>\n </Drawer>\n </div>\n )\n}\n"],"names":["useModal","getTranslation","useRouter","React","useCallback","useState","useForm","Form","RenderFields","FormSubmit","XIcon","useAuth","useConfig","DocumentInfoProvider","OperationContext","useRouteCache","useSearchParams","SelectAllStatus","useSelection","useTranslation","getFormState","Drawer","DrawerToggler","FieldSelect","baseClass","Submit","action","disabled","submit","t","save","method","skipValidation","className","onClick","PublishButton","overrides","_status","SaveDraftButton","EditMany","props","collection","slug","labels","plural","fieldMap","permissions","closeModal","routes","api","apiRoute","serverURL","count","getQueryParams","selectAll","i18n","selected","setSelected","stringifyParams","router","initialState","setInitialState","hasInitializedState","useRef","clearRouteCache","collectionPermissions","collections","hasUpdatePermission","update","permission","drawerSlug","useEffect","current","getInitialState","result","body","collectionSlug","data","operation","schemaPath","onChange","formState","prevFormState","None","onSuccess","replace","params","page","AllAvailable","undefined","div","aria-label","Header","id","Provider","value","h2","label","button","type","length","path","readOnly","versions","drafts","Fragment"],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { FieldWithPath } from 'payload';
|
|
1
|
+
import type { FieldMap, FieldWithPath, MappedField } from 'payload';
|
|
2
2
|
import React, { type JSX } from 'react';
|
|
3
|
-
import type { FieldMap, MappedField } from '../../providers/ComponentMap/buildComponentMap/types.js';
|
|
4
3
|
import './index.scss';
|
|
5
4
|
export type FieldSelectProps = {
|
|
6
5
|
fieldMap: FieldMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/FieldSelect/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/FieldSelect/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAEnE,OAAO,KAAK,EAAE,EAAY,KAAK,GAAG,EAAY,MAAM,OAAO,CAAA;AAO3D,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,QAAQ,CAAA;IAClB,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,IAAI,CAAA;CAC/C,CAAA;AAED,eAAO,MAAM,YAAY,oCAItB;IACD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,MAAM,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,MAAM,CAAA;CAC9B,KAAG,GAAG,CAAC,OA8BP,CAAA;AAyED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAgDlD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/FieldSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { FieldWithPath } from 'payload'\n\nimport React, { Fragment, type JSX, useState } from 'react'\n\nimport
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/FieldSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { FieldMap, FieldWithPath, MappedField } from 'payload'\n\nimport React, { Fragment, type JSX, useState } from 'react'\n\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedFieldPath.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'field-select'\n\nexport type FieldSelectProps = {\n fieldMap: FieldMap\n setSelected: (fields: FieldWithPath[]) => void\n}\n\nexport const combineLabel = ({\n customLabel,\n field,\n prefix,\n}: {\n customLabel?: string\n field?: MappedField\n prefix?: JSX.Element | string\n}): JSX.Element => {\n const CustomLabelToRender =\n field &&\n 'CustomLabel' in field.fieldComponentProps &&\n field.fieldComponentProps.CustomLabel !== undefined\n ? field.fieldComponentProps.CustomLabel\n : null\n const DefaultLabelToRender =\n field && 'label' in field.fieldComponentProps && field.fieldComponentProps.label ? (\n <FieldLabel\n label={field.fieldComponentProps.label}\n {...(field.fieldComponentProps.labelProps || {})}\n />\n ) : null\n\n const LabelToRender = CustomLabelToRender || DefaultLabelToRender || customLabel\n\n if (!LabelToRender) return null\n\n return (\n <Fragment>\n {prefix && (\n <Fragment>\n <span style={{ display: 'inline-block' }}>{prefix}</span>\n {' > '}\n </Fragment>\n )}\n <span style={{ display: 'inline-block' }}>{LabelToRender}</span>\n </Fragment>\n )\n}\n\nconst reduceFields = ({\n fieldMap,\n labelPrefix = null,\n path = '',\n}: {\n fieldMap: FieldMap\n labelPrefix?: JSX.Element | string\n path?: string\n}): { Label: JSX.Element; value: FieldWithPath }[] => {\n if (!fieldMap) {\n return []\n }\n\n return fieldMap?.reduce((fieldsToUse, field) => {\n const { isFieldAffectingData } = field\n // escape for a variety of reasons\n if (\n isFieldAffectingData &&\n (field.disableBulkEdit ||\n field.unique ||\n field.isHidden ||\n ('readOnly' in field.fieldComponentProps && field.fieldComponentProps.readOnly))\n ) {\n return fieldsToUse\n }\n\n if (\n !(field.type === 'array' || field.type === 'blocks') &&\n 'fieldMap' in field.fieldComponentProps\n ) {\n return [\n ...fieldsToUse,\n ...reduceFields({\n fieldMap: field.fieldComponentProps.fieldMap,\n labelPrefix: combineLabel({ field, prefix: labelPrefix }),\n path: createNestedClientFieldPath(path, field),\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field.fieldComponentProps) {\n return [\n ...fieldsToUse,\n ...field.fieldComponentProps.tabs.reduce((tabFields, tab) => {\n if ('fieldMap' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n return [\n ...tabFields,\n ...reduceFields({\n fieldMap: tab.fieldMap,\n labelPrefix,\n path: isNamedTab ? createNestedClientFieldPath(path, field) : path,\n }),\n ]\n }\n }, []),\n ]\n }\n\n const formattedField = {\n label: combineLabel({ field, prefix: labelPrefix }),\n value: {\n ...field,\n path: createNestedClientFieldPath(path, field),\n },\n }\n\n return [...fieldsToUse, formattedField]\n }, [])\n}\n\nexport const FieldSelect: React.FC<FieldSelectProps> = ({ fieldMap, setSelected }) => {\n const { t } = useTranslation()\n const [options] = useState(() => reduceFields({ fieldMap }))\n\n const { dispatchFields, getFields } = useForm()\n\n const handleChange = (selected) => {\n const activeFields = getFields()\n if (selected === null) {\n setSelected([])\n } else {\n setSelected(selected.map(({ value }) => value))\n }\n\n // remove deselected values from form state\n if (selected === null || Object.keys(activeFields || []).length > selected.length) {\n Object.keys(activeFields).forEach((path) => {\n if (\n selected === null ||\n !selected.find((field) => {\n return field.value.path === path\n })\n ) {\n dispatchFields({\n type: 'REMOVE',\n path,\n })\n }\n })\n }\n }\n\n return (\n <div className={baseClass}>\n <FieldLabel label={t('fields:selectFieldsToEdit')} />\n <ReactSelect\n getOptionValue={(option) => {\n if (typeof option.value === 'object' && 'path' in option.value) {\n return String(option.value.path)\n }\n return String(option.value)\n }}\n isMulti\n onChange={handleChange}\n options={options}\n />\n </div>\n )\n}\n"],"names":["React","Fragment","useState","FieldLabel","useForm","createNestedClientFieldPath","useTranslation","ReactSelect","baseClass","combineLabel","customLabel","field","prefix","CustomLabelToRender","fieldComponentProps","CustomLabel","undefined","DefaultLabelToRender","label","labelProps","LabelToRender","span","style","display","reduceFields","fieldMap","labelPrefix","path","reduce","fieldsToUse","isFieldAffectingData","disableBulkEdit","unique","isHidden","readOnly","type","tabs","tabFields","tab","isNamedTab","name","formattedField","value","FieldSelect","setSelected","t","options","dispatchFields","getFields","handleChange","selected","activeFields","map","Object","keys","length","forEach","find","div","className","getOptionValue","option","String","isMulti","onChange"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { FieldMap, MappedField } from '
|
|
1
|
+
import type { FieldMap, MappedField } from 'payload';
|
|
2
2
|
export declare const getTextFieldsToBeSearched: (listSearchableFields: string[], fieldMap: FieldMap) => MappedField[];
|
|
3
3
|
//# sourceMappingURL=getTextFieldsToBeSearched.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTextFieldsToBeSearched.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/getTextFieldsToBeSearched.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"getTextFieldsToBeSearched.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/getTextFieldsToBeSearched.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIpD,eAAO,MAAM,yBAAyB,yBACd,MAAM,EAAE,YACpB,QAAQ,KACjB,WAAW,EASb,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/ListControls/getTextFieldsToBeSearched.ts"],"sourcesContent":["import type { FieldMap, MappedField } from '
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/ListControls/getTextFieldsToBeSearched.ts"],"sourcesContent":["import type { FieldMap, MappedField } from 'payload'\n\nimport { flattenFieldMap } from '../../utilities/flattenFieldMap.js'\n\nexport const getTextFieldsToBeSearched = (\n listSearchableFields: string[],\n fieldMap: FieldMap,\n): MappedField[] => {\n if (listSearchableFields) {\n const flattenedFields = flattenFieldMap(fieldMap)\n return flattenedFields.filter(\n (field) => field.isFieldAffectingData && listSearchableFields.includes(field.name),\n )\n }\n\n return null\n}\n"],"names":["flattenFieldMap","getTextFieldsToBeSearched","listSearchableFields","fieldMap","flattenedFields","filter","field","isFieldAffectingData","includes","name"],"mappings":"AAEA,SAASA,eAAe,QAAQ,qCAAoC;AAEpE,OAAO,MAAMC,4BAA4B,CACvCC,sBACAC;IAEA,IAAID,sBAAsB;QACxB,MAAME,kBAAkBJ,gBAAgBG;QACxC,OAAOC,gBAAgBC,MAAM,CAC3B,CAACC,QAAUA,MAAMC,oBAAoB,IAAIL,qBAAqBM,QAAQ,CAACF,MAAMG,IAAI;IAErF;IAEA,OAAO;AACT,EAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type { ClientCollectionConfig, Where } from 'payload';
|
|
1
|
+
import type { ClientCollectionConfig, FieldMap, Where } from 'payload';
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import type { FieldMap } from '../../providers/ComponentMap/buildComponentMap/types.js';
|
|
4
3
|
import './index.scss';
|
|
5
4
|
export type ListControlsProps = {
|
|
6
5
|
collectionConfig: ClientCollectionConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAItE,OAAO,KAAsC,MAAM,OAAO,CAAA;AAuB1D,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CAC3C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyLpD,CAAA"}
|