@payloadcms/ui 3.0.0-beta.77 → 3.0.0-beta.79
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/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +5 -2
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/AppHeader/index.scss +5 -3
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +1 -1
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/Card/index.scss +3 -3
- package/dist/elements/Collapsible/index.scss +4 -1
- package/dist/elements/ColumnSelector/index.d.ts +1 -1
- package/dist/elements/ColumnSelector/index.d.ts.map +1 -1
- package/dist/elements/ColumnSelector/index.js +2 -2
- package/dist/elements/ColumnSelector/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +1 -1
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.scss +1 -0
- package/dist/elements/DeleteMany/index.d.ts.map +1 -1
- package/dist/elements/DeleteMany/index.js +1 -1
- package/dist/elements/DeleteMany/index.js.map +1 -1
- package/dist/elements/DeleteMany/index.scss +1 -0
- package/dist/elements/DocumentControls/index.d.ts +10 -10
- package/dist/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/elements/DocumentControls/index.js +11 -13
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.scss +18 -7
- package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/DrawerContent.js +6 -5
- package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +10 -10
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentFields/index.d.ts +9 -9
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +6 -5
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/DraggableSortable/useDraggableSortable/types.d.ts +6 -6
- package/dist/elements/DraggableSortable/useDraggableSortable/types.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/useDraggableSortable/types.js.map +1 -1
- package/dist/elements/Drawer/types.d.ts +7 -7
- package/dist/elements/Drawer/types.d.ts.map +1 -1
- package/dist/elements/Drawer/types.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
- package/dist/elements/DuplicateDocument/index.js +1 -2
- package/dist/elements/DuplicateDocument/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/index.scss +1 -0
- package/dist/elements/EditMany/index.d.ts +3 -3
- package/dist/elements/EditMany/index.d.ts.map +1 -1
- package/dist/elements/EditMany/index.js +4 -4
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditMany/index.scss +4 -10
- package/dist/elements/FieldSelect/index.d.ts +4 -4
- package/dist/elements/FieldSelect/index.d.ts.map +1 -1
- package/dist/elements/FieldSelect/index.js +32 -21
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/GenerateConfirmation/index.scss +1 -0
- package/dist/elements/ListControls/getTextFieldsToBeSearched.d.ts +2 -2
- package/dist/elements/ListControls/getTextFieldsToBeSearched.d.ts.map +1 -1
- package/dist/elements/ListControls/getTextFieldsToBeSearched.js +4 -3
- package/dist/elements/ListControls/getTextFieldsToBeSearched.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts +2 -2
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +8 -8
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListControls/index.scss +14 -5
- package/dist/elements/ListDrawer/DrawerContent.js +6 -5
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/index.d.ts.map +1 -1
- package/dist/elements/ListDrawer/index.js +1 -1
- package/dist/elements/ListDrawer/index.js.map +1 -1
- package/dist/elements/ListDrawer/index.scss +4 -4
- package/dist/elements/ListDrawer/types.d.ts +6 -6
- package/dist/elements/ListDrawer/types.d.ts.map +1 -1
- package/dist/elements/ListDrawer/types.js.map +1 -1
- package/dist/elements/Localizer/LocalizerLabel/index.d.ts.map +1 -1
- package/dist/elements/Localizer/LocalizerLabel/index.js +5 -4
- package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
- package/dist/elements/Localizer/LocalizerLabel/index.scss +6 -0
- package/dist/elements/Localizer/index.js +1 -1
- package/dist/elements/Localizer/index.js.map +1 -1
- package/dist/elements/Logout/index.d.ts.map +1 -1
- package/dist/elements/Logout/index.js +6 -6
- package/dist/elements/Logout/index.js.map +1 -1
- package/dist/elements/Popup/index.d.ts +1 -1
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/PreviewButton/index.d.ts +2 -1
- package/dist/elements/PreviewButton/index.d.ts.map +1 -1
- package/dist/elements/PreviewButton/index.js +6 -1
- package/dist/elements/PreviewButton/index.js.map +1 -1
- package/dist/elements/PreviewButton/usePreviewURL.d.ts.map +1 -1
- package/dist/elements/PreviewButton/usePreviewURL.js +1 -1
- package/dist/elements/PreviewButton/usePreviewURL.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts +2 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +4 -1
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishMany/index.d.ts.map +1 -1
- package/dist/elements/PublishMany/index.js +1 -1
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/PublishMany/index.scss +1 -0
- package/dist/elements/ReactSelect/Control/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/Control/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValue/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
- package/dist/elements/ReactSelect/SingleValue/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/SingleValue/index.js.map +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
- package/dist/elements/SaveButton/index.d.ts +2 -1
- package/dist/elements/SaveButton/index.d.ts.map +1 -1
- package/dist/elements/SaveButton/index.js +4 -1
- package/dist/elements/SaveButton/index.js.map +1 -1
- package/dist/elements/SaveDraftButton/index.d.ts +2 -1
- package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
- package/dist/elements/SaveDraftButton/index.js +5 -2
- package/dist/elements/SaveDraftButton/index.js.map +1 -1
- package/dist/elements/Status/index.d.ts.map +1 -1
- package/dist/elements/Status/index.js +1 -1
- package/dist/elements/Status/index.js.map +1 -1
- package/dist/elements/Status/index.scss +1 -0
- package/dist/elements/StayLoggedIn/index.js +1 -1
- package/dist/elements/StayLoggedIn/index.js.map +1 -1
- package/dist/elements/StayLoggedIn/index.scss +1 -0
- package/dist/elements/StepNav/index.d.ts +2 -2
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +11 -8
- package/dist/elements/StepNav/index.js.map +1 -1
- package/dist/elements/StepNav/index.scss +1 -1
- package/dist/elements/StepNav/types.d.ts +2 -2
- package/dist/elements/StepNav/types.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Array/index.d.ts +2 -3
- package/dist/elements/Table/DefaultCell/fields/Array/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Array/index.js +2 -2
- package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts +2 -4
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +1 -1
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Checkbox/index.d.ts +2 -2
- package/dist/elements/Table/DefaultCell/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Code/index.d.ts +3 -3
- package/dist/elements/Table/DefaultCell/fields/Code/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Code/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Date/index.d.ts +2 -2
- package/dist/elements/Table/DefaultCell/fields/Date/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Date/index.js +4 -4
- package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.d.ts +2 -2
- package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/JSON/index.d.ts +2 -2
- package/dist/elements/Table/DefaultCell/fields/JSON/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts +2 -4
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +6 -8
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Select/index.d.ts +2 -3
- package/dist/elements/Table/DefaultCell/fields/Select/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Select/index.js +1 -1
- package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Textarea/index.d.ts +2 -2
- package/dist/elements/Table/DefaultCell/fields/Textarea/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Textarea/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/index.d.ts +4 -4
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +16 -12
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.d.ts +1 -1
- package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js +1 -2
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/elements/Table/TableCellProvider/index.d.ts +6 -6
- package/dist/elements/Table/TableCellProvider/index.d.ts.map +1 -1
- package/dist/elements/Table/TableCellProvider/index.js.map +1 -1
- package/dist/elements/Table/index.d.ts +11 -14
- package/dist/elements/Table/index.d.ts.map +1 -1
- package/dist/elements/Table/index.js +7 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.d.ts +2 -2
- package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
- package/dist/elements/TableColumns/buildColumnState.js +30 -32
- package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
- package/dist/elements/TableColumns/filterFields.d.ts +2 -2
- package/dist/elements/TableColumns/filterFields.d.ts.map +1 -1
- package/dist/elements/TableColumns/filterFields.js +8 -11
- package/dist/elements/TableColumns/filterFields.js.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.d.ts +2 -3
- package/dist/elements/TableColumns/getInitialColumns.d.ts.map +1 -1
- package/dist/elements/TableColumns/getInitialColumns.js +9 -11
- package/dist/elements/TableColumns/getInitialColumns.js.map +1 -1
- package/dist/elements/TableColumns/index.d.ts +6 -6
- package/dist/elements/TableColumns/index.d.ts.map +1 -1
- package/dist/elements/TableColumns/index.js +8 -11
- package/dist/elements/TableColumns/index.js.map +1 -1
- package/dist/elements/ThumbnailCard/index.d.ts +2 -2
- package/dist/elements/ThumbnailCard/index.d.ts.map +1 -1
- package/dist/elements/ThumbnailCard/index.js +1 -1
- package/dist/elements/ThumbnailCard/index.js.map +1 -1
- package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
- package/dist/elements/UnpublishMany/index.js +2 -2
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/elements/UnpublishMany/index.scss +1 -0
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +5 -5
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/types.d.ts +3 -3
- package/dist/elements/WhereBuilder/Condition/Relationship/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/types.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.d.ts +1 -2
- package/dist/elements/WhereBuilder/Condition/Text/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.js +1 -2
- package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts +9 -9
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js +25 -20
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/elements/WhereBuilder/index.js +9 -8
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/elements/WhereBuilder/reduceClientFields.d.ts +15 -0
- package/dist/elements/WhereBuilder/reduceClientFields.d.ts.map +1 -0
- package/dist/elements/WhereBuilder/{reduceFieldMap.js → reduceClientFields.js} +28 -26
- package/dist/elements/WhereBuilder/reduceClientFields.js.map +1 -0
- package/dist/elements/WhereBuilder/types.d.ts +6 -5
- package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/types.js.map +1 -1
- package/dist/exports/client/{CodeEditor-UPOVAXRP.js → CodeEditor-MODTAQNB.js} +1 -1
- package/dist/exports/client/{CodeEditor-UPOVAXRP.js.map → CodeEditor-MODTAQNB.js.map} +1 -1
- package/dist/exports/client/{DatePicker-XJHHMZP7.js → DatePicker-QKRYICNS.js} +2 -2
- package/dist/exports/client/chunk-HR5HEGNB.js +30 -0
- package/dist/exports/client/{chunk-TIH7OFW3.js.map → chunk-HR5HEGNB.js.map} +4 -4
- package/dist/exports/client/index.d.ts +9 -2
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +27 -27
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.d.ts +4 -1
- package/dist/exports/shared/index.d.ts.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Array/ArrayRow.d.ts +21 -21
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +3 -3
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +11 -9
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts +3 -3
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +9 -6
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts +6 -6
- package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +13 -13
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/SectionTitle/index.scss +12 -2
- package/dist/fields/Blocks/index.d.ts +2 -2
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +10 -6
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Blocks/index.scss +1 -0
- package/dist/fields/Checkbox/Input.d.ts +15 -15
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +9 -4
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/fields/Checkbox/index.js +9 -6
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Code/index.d.ts.map +1 -1
- package/dist/fields/Code/index.js +14 -6
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/fields/Collapsible/index.js +7 -5
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/ConfirmPassword/index.d.ts +2 -2
- package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
- package/dist/fields/ConfirmPassword/index.js.map +1 -1
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js +14 -6
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js +15 -6
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/FieldDescription/index.d.ts.map +1 -1
- package/dist/fields/FieldDescription/index.js +8 -4
- package/dist/fields/FieldDescription/index.js.map +1 -1
- package/dist/fields/FieldError/index.d.ts.map +1 -1
- package/dist/fields/FieldError/index.js +8 -4
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/FieldLabel/index.d.ts.map +1 -1
- package/dist/fields/FieldLabel/index.js +8 -4
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Group/index.d.ts.map +1 -1
- package/dist/fields/Group/index.js +63 -56
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/Hidden/index.d.ts.map +1 -1
- package/dist/fields/Hidden/index.js +1 -1
- package/dist/fields/Hidden/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +14 -6
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Number/Input.d.ts +2 -0
- package/dist/fields/Number/Input.d.ts.map +1 -0
- package/dist/fields/Number/Input.js +2 -0
- package/dist/fields/Number/Input.js.map +1 -0
- package/dist/fields/Number/index.d.ts.map +1 -1
- package/dist/fields/Number/index.js +14 -6
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Password/index.d.ts +1 -24
- package/dist/fields/Password/index.d.ts.map +1 -1
- package/dist/fields/Password/index.js +8 -7
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Password/input.d.ts.map +1 -1
- package/dist/fields/Password/input.js +18 -8
- package/dist/fields/Password/input.js.map +1 -1
- package/dist/fields/Password/types.d.ts +32 -23
- package/dist/fields/Password/types.d.ts.map +1 -1
- package/dist/fields/Password/types.js.map +1 -1
- package/dist/fields/Point/index.d.ts.map +1 -1
- package/dist/fields/Point/index.js +23 -9
- package/dist/fields/Point/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/index.js +7 -4
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/Relationship/AddNew/useRelatedCollections.js +1 -1
- package/dist/fields/Relationship/AddNew/useRelatedCollections.js.map +1 -1
- package/dist/fields/Relationship/index.d.ts.map +1 -1
- package/dist/fields/Relationship/index.js +8 -5
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.d.ts.map +1 -1
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/SingleValue/index.d.ts.map +1 -1
- package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
- package/dist/fields/RichText/index.d.ts +2 -2
- 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.map +1 -1
- package/dist/fields/Row/index.js +6 -8
- package/dist/fields/Row/index.js.map +1 -1
- package/dist/fields/Select/Input.d.ts +26 -6
- package/dist/fields/Select/Input.d.ts.map +1 -1
- package/dist/fields/Select/Input.js +13 -6
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +8 -9
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.d.ts +5 -5
- package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/fields/Tabs/Tab/index.js +4 -5
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +10 -9
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Text/Input.d.ts.map +1 -1
- package/dist/fields/Text/Input.js +13 -6
- package/dist/fields/Text/Input.js.map +1 -1
- package/dist/fields/Text/index.js +9 -10
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Text/types.d.ts +32 -13
- package/dist/fields/Text/types.d.ts.map +1 -1
- package/dist/fields/Text/types.js.map +1 -1
- package/dist/fields/Textarea/Input.d.ts.map +1 -1
- package/dist/fields/Textarea/Input.js +13 -6
- package/dist/fields/Textarea/Input.js.map +1 -1
- package/dist/fields/Textarea/index.js +9 -10
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Textarea/types.d.ts +28 -6
- 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 +25 -12
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +5 -4
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/index.d.ts.map +1 -1
- package/dist/fields/Upload/index.js +7 -10
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/fields/index.d.ts +5 -1
- package/dist/fields/index.d.ts.map +1 -1
- package/dist/fields/index.js.map +1 -1
- package/dist/forms/FieldPropsProvider/index.d.ts +11 -11
- package/dist/forms/FieldPropsProvider/index.d.ts.map +1 -1
- package/dist/forms/FieldPropsProvider/index.js.map +1 -1
- package/dist/forms/Form/createNestedClientFieldPath.d.ts +3 -0
- package/dist/forms/Form/createNestedClientFieldPath.d.ts.map +1 -0
- package/dist/forms/Form/{createNestedFieldPath.js → createNestedClientFieldPath.js} +2 -13
- package/dist/forms/Form/createNestedClientFieldPath.js.map +1 -0
- package/dist/forms/Form/index.js +1 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +3 -3
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/NullifyField/index.d.ts +3 -3
- package/dist/forms/NullifyField/index.d.ts.map +1 -1
- package/dist/forms/NullifyField/index.js +5 -15
- package/dist/forms/NullifyField/index.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.d.ts +12 -15
- package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
- package/dist/forms/RenderFields/RenderField.js +35 -16
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/RenderFields/index.d.ts.map +1 -1
- package/dist/forms/RenderFields/index.js +7 -14
- package/dist/forms/RenderFields/index.js.map +1 -1
- package/dist/forms/RenderFields/types.d.ts +11 -11
- package/dist/forms/RenderFields/types.d.ts.map +1 -1
- package/dist/forms/RenderFields/types.js.map +1 -1
- package/dist/forms/RowLabel/Context/index.d.ts +4 -4
- package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
- package/dist/forms/RowLabel/Context/index.js.map +1 -1
- package/dist/forms/RowLabel/index.d.ts.map +1 -1
- package/dist/forms/RowLabel/index.js +8 -2
- package/dist/forms/RowLabel/index.js.map +1 -1
- package/dist/forms/RowLabel/types.d.ts +7 -8
- package/dist/forms/RowLabel/types.d.ts.map +1 -1
- package/dist/forms/RowLabel/types.js.map +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.d.ts +2 -2
- package/dist/forms/WatchChildErrors/buildPathSegments.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/buildPathSegments.js +11 -10
- package/dist/forms/WatchChildErrors/buildPathSegments.js.map +1 -1
- package/dist/forms/WatchChildErrors/index.d.ts +2 -2
- package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/index.js +3 -3
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/forms/useField/index.js +1 -1
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/forms/withCondition/WatchCondition.d.ts +1 -1
- package/dist/forms/withCondition/WatchCondition.d.ts.map +1 -1
- package/dist/forms/withCondition/WatchCondition.js.map +1 -1
- package/dist/graphics/Account/index.d.ts.map +1 -1
- package/dist/graphics/Account/index.js +14 -8
- package/dist/graphics/Account/index.js.map +1 -1
- package/dist/hooks/useDelayedRender.d.ts.map +1 -1
- package/dist/hooks/useDelayedRender.js.map +1 -1
- package/dist/hooks/useUseAsTitle.d.ts +2 -2
- package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
- package/dist/hooks/useUseAsTitle.js +3 -3
- package/dist/hooks/useUseAsTitle.js.map +1 -1
- package/dist/providers/Actions/SetViewActions/index.d.ts +3 -3
- package/dist/providers/Actions/SetViewActions/index.d.ts.map +1 -1
- package/dist/providers/Actions/SetViewActions/index.js +1 -1
- package/dist/providers/Actions/SetViewActions/index.js.map +1 -1
- package/dist/providers/Actions/index.d.ts +3 -3
- package/dist/providers/Actions/index.d.ts.map +1 -1
- package/dist/providers/Actions/index.js +2 -2
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Auth/index.js +1 -1
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/Config/RenderComponent.d.ts +12 -0
- package/dist/providers/Config/RenderComponent.d.ts.map +1 -0
- package/dist/providers/Config/RenderComponent.js +69 -0
- package/dist/providers/Config/RenderComponent.js.map +1 -0
- package/dist/providers/Config/createClientConfig/collections.d.ts +24 -0
- package/dist/providers/Config/createClientConfig/collections.d.ts.map +1 -0
- package/dist/providers/Config/createClientConfig/collections.js +173 -0
- package/dist/providers/Config/createClientConfig/collections.js.map +1 -0
- package/dist/providers/Config/createClientConfig/fields.d.ts +22 -0
- package/dist/providers/Config/createClientConfig/fields.d.ts.map +1 -0
- package/dist/providers/Config/createClientConfig/fields.js +299 -0
- package/dist/providers/Config/createClientConfig/fields.js.map +1 -0
- package/dist/providers/Config/createClientConfig/getComponent.d.ts +11 -0
- package/dist/providers/Config/createClientConfig/getComponent.d.ts.map +1 -0
- package/dist/providers/Config/createClientConfig/getComponent.js +29 -0
- package/dist/providers/Config/createClientConfig/getComponent.js.map +1 -0
- package/dist/providers/Config/createClientConfig/getCreateMappedComponent.d.ts +11 -0
- package/dist/providers/Config/createClientConfig/getCreateMappedComponent.d.ts.map +1 -0
- package/dist/providers/Config/createClientConfig/getCreateMappedComponent.js +86 -0
- package/dist/providers/Config/createClientConfig/getCreateMappedComponent.js.map +1 -0
- package/dist/providers/Config/createClientConfig/globals.d.ts +22 -0
- package/dist/providers/Config/createClientConfig/globals.d.ts.map +1 -0
- package/dist/providers/Config/createClientConfig/globals.js +103 -0
- package/dist/providers/Config/createClientConfig/globals.js.map +1 -0
- package/dist/providers/Config/createClientConfig/index.d.ts +21 -0
- package/dist/providers/Config/createClientConfig/index.d.ts.map +1 -0
- package/dist/providers/Config/createClientConfig/index.js +98 -0
- package/dist/providers/Config/createClientConfig/index.js.map +1 -0
- package/dist/providers/Config/index.d.ts +10 -3
- package/dist/providers/Config/index.d.ts.map +1 -1
- package/dist/providers/Config/index.js +17 -3
- package/dist/providers/Config/index.js.map +1 -1
- package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
- package/dist/providers/DocumentInfo/index.js +16 -16
- package/dist/providers/DocumentInfo/index.js.map +1 -1
- package/dist/providers/FieldComponents/index.d.ts +4 -3
- package/dist/providers/FieldComponents/index.d.ts.map +1 -1
- package/dist/providers/FieldComponents/index.js +2 -3
- package/dist/providers/FieldComponents/index.js.map +1 -1
- package/dist/providers/ListInfo/index.d.ts +12 -12
- package/dist/providers/ListInfo/index.d.ts.map +1 -1
- package/dist/providers/ListInfo/index.js.map +1 -1
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +1 -1
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Preferences/index.js +1 -1
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/Root/index.d.ts +0 -2
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +46 -48
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/scss/app.scss +4 -4
- package/dist/scss/type.scss +1 -0
- package/dist/scss/vars.scss +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js +1 -0
- package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +2 -4
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/flattenFieldMap.d.ts +2 -2
- package/dist/utilities/flattenFieldMap.d.ts.map +1 -1
- package/dist/utilities/flattenFieldMap.js +8 -8
- package/dist/utilities/flattenFieldMap.js.map +1 -1
- package/dist/utilities/groupNavItems.d.ts +3 -3
- package/dist/utilities/groupNavItems.d.ts.map +1 -1
- package/dist/utilities/groupNavItems.js.map +1 -1
- package/package.json +10 -4
- package/dist/elements/RenderCustomClientComponent/index.d.ts +0 -8
- package/dist/elements/RenderCustomClientComponent/index.d.ts.map +0 -1
- package/dist/elements/RenderCustomClientComponent/index.js +0 -19
- package/dist/elements/RenderCustomClientComponent/index.js.map +0 -1
- package/dist/elements/RenderCustomComponent/index.d.ts +0 -17
- package/dist/elements/RenderCustomComponent/index.d.ts.map +0 -1
- package/dist/elements/RenderCustomComponent/index.js +0 -26
- package/dist/elements/RenderCustomComponent/index.js.map +0 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.d.ts +0 -14
- package/dist/elements/WhereBuilder/reduceFieldMap.d.ts.map +0 -1
- package/dist/elements/WhereBuilder/reduceFieldMap.js.map +0 -1
- package/dist/exports/client/chunk-TIH7OFW3.js +0 -30
- package/dist/forms/Form/createNestedFieldPath.d.ts +0 -4
- package/dist/forms/Form/createNestedFieldPath.d.ts.map +0 -1
- package/dist/forms/Form/createNestedFieldPath.js.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/actions.d.ts +0 -9
- package/dist/providers/ComponentMap/buildComponentMap/actions.d.ts.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/actions.js +0 -45
- package/dist/providers/ComponentMap/buildComponentMap/actions.js.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts +0 -18
- package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/collections.js +0 -118
- package/dist/providers/ComponentMap/buildComponentMap/collections.js.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts +0 -18
- package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/fields.js +0 -703
- package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts +0 -19
- package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/globals.js +0 -81
- package/dist/providers/ComponentMap/buildComponentMap/globals.js.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/index.d.ts +0 -16
- package/dist/providers/ComponentMap/buildComponentMap/index.d.ts.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/index.js +0 -79
- package/dist/providers/ComponentMap/buildComponentMap/index.js.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/types.d.ts +0 -39
- package/dist/providers/ComponentMap/buildComponentMap/types.d.ts.map +0 -1
- package/dist/providers/ComponentMap/buildComponentMap/types.js +0 -3
- package/dist/providers/ComponentMap/buildComponentMap/types.js.map +0 -1
- package/dist/providers/ComponentMap/index.d.ts +0 -25
- package/dist/providers/ComponentMap/index.d.ts.map +0 -1
- package/dist/providers/ComponentMap/index.js +0 -53
- package/dist/providers/ComponentMap/index.js.map +0 -1
- package/dist/utilities/buildComponentMap.d.ts +0 -4
- package/dist/utilities/buildComponentMap.d.ts.map +0 -1
- package/dist/utilities/buildComponentMap.js +0 -4
- package/dist/utilities/buildComponentMap.js.map +0 -1
- /package/dist/exports/client/{DatePicker-XJHHMZP7.js.map → DatePicker-QKRYICNS.js.map} +0 -0
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import React, { useEffect, useState } from 'react';
|
|
4
|
-
import { RenderCustomClientComponent } from '../../../elements/RenderCustomClientComponent/index.js';
|
|
5
4
|
import { useDebounce } from '../../../hooks/useDebounce.js';
|
|
5
|
+
import { RenderComponent } from '../../../providers/Config/RenderComponent.js';
|
|
6
6
|
import { useTranslation } from '../../../providers/Translation/index.js';
|
|
7
7
|
import { Button } from '../../Button/index.js';
|
|
8
8
|
import { ReactSelect } from '../../ReactSelect/index.js';
|
|
@@ -10,15 +10,8 @@ import { DateField } from './Date/index.js';
|
|
|
10
10
|
import { NumberField } from './Number/index.js';
|
|
11
11
|
import { RelationshipField } from './Relationship/index.js';
|
|
12
12
|
import { Select } from './Select/index.js';
|
|
13
|
-
import Text from './Text/index.js';
|
|
13
|
+
import { Text } from './Text/index.js';
|
|
14
14
|
import './index.scss';
|
|
15
|
-
const valueFields = {
|
|
16
|
-
Date: DateField,
|
|
17
|
-
Number: NumberField,
|
|
18
|
-
Relationship: RelationshipField,
|
|
19
|
-
Select,
|
|
20
|
-
Text
|
|
21
|
-
};
|
|
22
15
|
const baseClass = 'condition';
|
|
23
16
|
export const Condition = (props)=>{
|
|
24
17
|
const { addCondition, andIndex, fieldName, fields, initialValue, operator, orIndex, removeCondition, updateCondition } = props;
|
|
@@ -52,8 +45,21 @@ export const Condition = (props)=>{
|
|
|
52
45
|
]);
|
|
53
46
|
const booleanSelect = [
|
|
54
47
|
'exists'
|
|
55
|
-
].includes(internalOperatorOption) || internalField?.
|
|
56
|
-
const
|
|
48
|
+
].includes(internalOperatorOption) || internalField?.field?.type === 'checkbox';
|
|
49
|
+
const valueFields = {
|
|
50
|
+
date: DateField,
|
|
51
|
+
number: NumberField,
|
|
52
|
+
relationship: RelationshipField,
|
|
53
|
+
select: Select,
|
|
54
|
+
text: Text
|
|
55
|
+
};
|
|
56
|
+
const ValueComponent = booleanSelect ? {
|
|
57
|
+
type: 'client',
|
|
58
|
+
Component: Select
|
|
59
|
+
} : internalField.Filter || {
|
|
60
|
+
type: 'client',
|
|
61
|
+
Component: valueFields?.[internalField?.field?.type] || Text
|
|
62
|
+
};
|
|
57
63
|
let valueOptions;
|
|
58
64
|
if (booleanSelect) {
|
|
59
65
|
valueOptions = [
|
|
@@ -66,8 +72,8 @@ export const Condition = (props)=>{
|
|
|
66
72
|
value: 'false'
|
|
67
73
|
}
|
|
68
74
|
];
|
|
69
|
-
} else if (internalField?.
|
|
70
|
-
valueOptions = internalField.
|
|
75
|
+
} else if (internalField?.field && 'options' in internalField.field) {
|
|
76
|
+
valueOptions = internalField.field.options;
|
|
71
77
|
}
|
|
72
78
|
return /*#__PURE__*/ _jsx("div", {
|
|
73
79
|
className: baseClass,
|
|
@@ -104,18 +110,17 @@ export const Condition = (props)=>{
|
|
|
104
110
|
}),
|
|
105
111
|
/*#__PURE__*/ _jsx("div", {
|
|
106
112
|
className: `${baseClass}__value`,
|
|
107
|
-
children: /*#__PURE__*/ _jsx(
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
componentProps: {
|
|
111
|
-
...internalField?.props,
|
|
113
|
+
children: /*#__PURE__*/ _jsx(RenderComponent, {
|
|
114
|
+
clientProps: {
|
|
115
|
+
...internalField?.field,
|
|
112
116
|
disabled: !internalOperatorOption,
|
|
113
117
|
onChange: setInternalQueryValue,
|
|
114
118
|
operator: internalOperatorOption,
|
|
115
119
|
options: valueOptions,
|
|
116
|
-
relationTo: internalField?.
|
|
120
|
+
relationTo: internalField?.field?.type === 'relationship' ? internalField?.field?.relationTo : undefined,
|
|
117
121
|
value: internalQueryValue ?? ''
|
|
118
|
-
}
|
|
122
|
+
},
|
|
123
|
+
mappedComponent: ValueComponent
|
|
119
124
|
})
|
|
120
125
|
})
|
|
121
126
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useState } from 'react'\n\nimport type { FieldCondition } from '../types.js'\n\nexport type Props = {\n addCondition: ({\n andIndex,\n fieldName,\n orIndex,\n relation,\n }: {\n andIndex: number\n fieldName: string\n orIndex: number\n relation: 'and' | 'or'\n }) => void\n andIndex: number\n fieldName: string\n fields: FieldCondition[]\n initialValue: string\n operator: Operator\n orIndex: number\n removeCondition: ({ andIndex, orIndex }: { andIndex: number; orIndex: number }) => void\n updateCondition: ({\n andIndex,\n fieldName,\n operator,\n orIndex,\n value,\n }: {\n andIndex: number\n fieldName: string\n operator: string\n orIndex: number\n value: string\n }) => void\n}\n\nimport type { Operator } from 'payload'\n\nimport type { Option } from '../../ReactSelect/index.js'\n\nimport { RenderCustomClientComponent } from '../../../elements/RenderCustomClientComponent/index.js'\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { DateField } from './Date/index.js'\nimport { NumberField } from './Number/index.js'\nimport { RelationshipField } from './Relationship/index.js'\nimport { Select } from './Select/index.js'\nimport Text from './Text/index.js'\nimport './index.scss'\n\ntype ComponentType = 'Date' | 'Number' | 'Relationship' | 'Select' | 'Text'\nconst valueFields: Record<ComponentType, React.FC> = {\n Date: DateField,\n Number: NumberField,\n Relationship: RelationshipField,\n Select,\n Text,\n}\n\nconst baseClass = 'condition'\n\nexport const Condition: React.FC<Props> = (props) => {\n const {\n addCondition,\n andIndex,\n fieldName,\n fields,\n initialValue,\n operator,\n orIndex,\n removeCondition,\n updateCondition,\n } = props\n const [internalField, setInternalField] = useState<FieldCondition>(() =>\n fields.find((field) => fieldName === field.value),\n )\n const { t } = useTranslation()\n const [internalOperatorOption, setInternalOperatorOption] = useState<Operator>(operator)\n const [internalQueryValue, setInternalQueryValue] = useState<string>(initialValue)\n\n const debouncedValue = useDebounce(internalQueryValue, 300)\n\n useEffect(() => {\n // This is to trigger changes when the debounced value changes\n if (\n (internalField?.value || typeof internalField?.value === 'number') &&\n internalOperatorOption &&\n ![null, undefined].includes(debouncedValue)\n ) {\n updateCondition({\n andIndex,\n fieldName: internalField.value,\n operator: internalOperatorOption,\n orIndex,\n value: debouncedValue,\n })\n }\n }, [\n debouncedValue,\n andIndex,\n internalField?.value,\n internalOperatorOption,\n orIndex,\n updateCondition,\n operator,\n ])\n\n const booleanSelect =\n ['exists'].includes(internalOperatorOption) || internalField?.props?.type === 'checkbox'\n const ValueComponent = booleanSelect\n ? Select\n : valueFields[internalField?.component] || valueFields.Text\n\n let valueOptions\n if (booleanSelect) {\n valueOptions = [\n { label: t('general:true'), value: 'true' },\n { label: t('general:false'), value: 'false' },\n ]\n } else if (internalField?.props && 'options' in internalField.props) {\n valueOptions = internalField.props.options\n }\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__inputs`}>\n <div className={`${baseClass}__field`}>\n <ReactSelect\n isClearable={false}\n onChange={(field: Option) => {\n setInternalField(fields.find((f) => f.value === field.value))\n setInternalOperatorOption(undefined)\n setInternalQueryValue(undefined)\n }}\n options={fields}\n value={fields.find((field) => internalField?.value === field.value) || fields[0]}\n />\n </div>\n <div className={`${baseClass}__operator`}>\n <ReactSelect\n disabled={!internalField?.value && typeof internalField?.value !== 'number'}\n isClearable={false}\n onChange={(operator: Option<Operator>) => {\n setInternalOperatorOption(operator.value)\n }}\n options={internalField?.operators}\n value={\n internalField?.operators.find(\n (operator) => internalOperatorOption === operator.value,\n ) || null\n }\n />\n </div>\n <div className={`${baseClass}__value`}>\n <RenderCustomClientComponent\n CustomComponent={internalField?.props?.admin?.components?.Filter}\n DefaultComponent={ValueComponent}\n componentProps={{\n ...internalField?.props,\n disabled: !internalOperatorOption,\n onChange: setInternalQueryValue,\n operator: internalOperatorOption,\n options: valueOptions,\n relationTo:\n internalField?.props?.type === 'relationship' &&\n 'cellComponentProps' in internalField.props &&\n typeof internalField.props.cellComponentProps === 'object' &&\n 'relationTo' in internalField.props.cellComponentProps\n ? internalField.props.cellComponentProps?.relationTo\n : undefined,\n value: internalQueryValue ?? '',\n }}\n />\n </div>\n </div>\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() =>\n removeCondition({\n andIndex,\n orIndex,\n })\n }\n round\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-add`}\n icon=\"plus\"\n iconStyle=\"with-border\"\n onClick={() =>\n addCondition({\n andIndex: andIndex + 1,\n fieldName: fields[0].value,\n orIndex,\n relation: 'and',\n })\n }\n round\n />\n </div>\n </div>\n </div>\n )\n}\n"],"names":["React","useEffect","useState","RenderCustomClientComponent","useDebounce","useTranslation","Button","ReactSelect","DateField","NumberField","RelationshipField","Select","Text","valueFields","Date","Number","Relationship","baseClass","Condition","props","addCondition","andIndex","fieldName","fields","initialValue","operator","orIndex","removeCondition","updateCondition","internalField","setInternalField","find","field","value","t","internalOperatorOption","setInternalOperatorOption","internalQueryValue","setInternalQueryValue","debouncedValue","undefined","includes","booleanSelect","type","ValueComponent","component","valueOptions","label","options","div","className","isClearable","onChange","f","disabled","operators","CustomComponent","admin","components","Filter","DefaultComponent","componentProps","relationTo","cellComponentProps","buttonStyle","icon","iconStyle","onClick","round","relation"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/elements/WhereBuilder/Condition/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useState } from 'react'\n\nimport type { FieldCondition } from '../types.js'\n\nexport type Props = {\n readonly addCondition: ({\n andIndex,\n fieldName,\n orIndex,\n relation,\n }: {\n andIndex: number\n fieldName: string\n orIndex: number\n relation: 'and' | 'or'\n }) => void\n readonly andIndex: number\n readonly fieldName: string\n readonly fields: FieldCondition[]\n readonly initialValue: string\n readonly operator: Operator\n readonly orIndex: number\n readonly removeCondition: ({ andIndex, orIndex }: { andIndex: number; orIndex: number }) => void\n readonly updateCondition: ({\n andIndex,\n fieldName,\n operator,\n orIndex,\n value,\n }: {\n andIndex: number\n fieldName: string\n operator: string\n orIndex: number\n value: string\n }) => void\n}\n\nimport type { FieldTypes, MappedComponent, Operator } from 'payload'\n\nimport type { Option } from '../../ReactSelect/index.js'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { RenderComponent } from '../../../providers/Config/RenderComponent.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Button } from '../../Button/index.js'\nimport { ReactSelect } from '../../ReactSelect/index.js'\nimport { DateField } from './Date/index.js'\nimport { NumberField } from './Number/index.js'\nimport { RelationshipField } from './Relationship/index.js'\nimport { Select } from './Select/index.js'\nimport { Text } from './Text/index.js'\nimport './index.scss'\n\nconst baseClass = 'condition'\n\nexport const Condition: React.FC<Props> = (props) => {\n const {\n addCondition,\n andIndex,\n fieldName,\n fields,\n initialValue,\n operator,\n orIndex,\n removeCondition,\n updateCondition,\n } = props\n const [internalField, setInternalField] = useState<FieldCondition>(() =>\n fields.find((field) => fieldName === field.value),\n )\n const { t } = useTranslation()\n const [internalOperatorOption, setInternalOperatorOption] = useState<Operator>(operator)\n const [internalQueryValue, setInternalQueryValue] = useState<string>(initialValue)\n\n const debouncedValue = useDebounce(internalQueryValue, 300)\n\n useEffect(() => {\n // This is to trigger changes when the debounced value changes\n if (\n (internalField?.value || typeof internalField?.value === 'number') &&\n internalOperatorOption &&\n ![null, undefined].includes(debouncedValue)\n ) {\n updateCondition({\n andIndex,\n fieldName: internalField.value,\n operator: internalOperatorOption,\n orIndex,\n value: debouncedValue,\n })\n }\n }, [\n debouncedValue,\n andIndex,\n internalField?.value,\n internalOperatorOption,\n orIndex,\n updateCondition,\n operator,\n ])\n\n const booleanSelect =\n ['exists'].includes(internalOperatorOption) || internalField?.field?.type === 'checkbox'\n\n const valueFields: Partial<{\n [key in FieldTypes]: React.FC\n }> = {\n date: DateField,\n number: NumberField,\n relationship: RelationshipField,\n select: Select,\n text: Text,\n }\n\n const ValueComponent: MappedComponent = booleanSelect\n ? {\n type: 'client',\n Component: Select,\n }\n : internalField.Filter || {\n type: 'client',\n Component: valueFields?.[internalField?.field?.type] || Text,\n }\n\n let valueOptions\n if (booleanSelect) {\n valueOptions = [\n { label: t('general:true'), value: 'true' },\n { label: t('general:false'), value: 'false' },\n ]\n } else if (internalField?.field && 'options' in internalField.field) {\n valueOptions = internalField.field.options\n }\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__inputs`}>\n <div className={`${baseClass}__field`}>\n <ReactSelect\n isClearable={false}\n onChange={(field: Option) => {\n setInternalField(fields.find((f) => f.value === field.value))\n setInternalOperatorOption(undefined)\n setInternalQueryValue(undefined)\n }}\n options={fields}\n value={fields.find((field) => internalField?.value === field.value) || fields[0]}\n />\n </div>\n <div className={`${baseClass}__operator`}>\n <ReactSelect\n disabled={!internalField?.value && typeof internalField?.value !== 'number'}\n isClearable={false}\n onChange={(operator: Option<Operator>) => {\n setInternalOperatorOption(operator.value)\n }}\n options={internalField?.operators}\n value={\n internalField?.operators.find(\n (operator) => internalOperatorOption === operator.value,\n ) || null\n }\n />\n </div>\n <div className={`${baseClass}__value`}>\n <RenderComponent\n clientProps={{\n ...internalField?.field,\n disabled: !internalOperatorOption,\n onChange: setInternalQueryValue,\n operator: internalOperatorOption,\n options: valueOptions,\n relationTo:\n internalField?.field?.type === 'relationship'\n ? internalField?.field?.relationTo\n : undefined,\n value: internalQueryValue ?? '',\n }}\n mappedComponent={ValueComponent}\n />\n </div>\n </div>\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() =>\n removeCondition({\n andIndex,\n orIndex,\n })\n }\n round\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__actions-add`}\n icon=\"plus\"\n iconStyle=\"with-border\"\n onClick={() =>\n addCondition({\n andIndex: andIndex + 1,\n fieldName: fields[0].value,\n orIndex,\n relation: 'and',\n })\n }\n round\n />\n </div>\n </div>\n </div>\n )\n}\n"],"names":["React","useEffect","useState","useDebounce","RenderComponent","useTranslation","Button","ReactSelect","DateField","NumberField","RelationshipField","Select","Text","baseClass","Condition","props","addCondition","andIndex","fieldName","fields","initialValue","operator","orIndex","removeCondition","updateCondition","internalField","setInternalField","find","field","value","t","internalOperatorOption","setInternalOperatorOption","internalQueryValue","setInternalQueryValue","debouncedValue","undefined","includes","booleanSelect","type","valueFields","date","number","relationship","select","text","ValueComponent","Component","Filter","valueOptions","label","options","div","className","isClearable","onChange","f","disabled","operators","clientProps","relationTo","mappedComponent","buttonStyle","icon","iconStyle","onClick","round","relation"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ import { useTranslation } from '../../providers/Translation/index.js';
|
|
|
9
9
|
import { Button } from '../Button/index.js';
|
|
10
10
|
import { Condition } from './Condition/index.js';
|
|
11
11
|
import './index.scss';
|
|
12
|
-
import {
|
|
12
|
+
import { reduceClientFields } from './reduceClientFields.js';
|
|
13
13
|
import { transformWhereQuery } from './transformWhereQuery.js';
|
|
14
14
|
import validateWhereQuery from './validateWhereQuery.js';
|
|
15
15
|
const baseClass = 'where-builder';
|
|
@@ -17,20 +17,20 @@ const baseClass = 'where-builder';
|
|
|
17
17
|
* The WhereBuilder component is used to render the filter controls for a collection's list view.
|
|
18
18
|
* It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).
|
|
19
19
|
*/ export const WhereBuilder = (props)=>{
|
|
20
|
-
const { collectionPluralLabel,
|
|
20
|
+
const { collectionPluralLabel, fields } = props;
|
|
21
21
|
const { i18n, t } = useTranslation();
|
|
22
22
|
const { code: currentLocale } = useLocale();
|
|
23
|
-
const [reducedFields, setReducedColumns] = useState(()=>
|
|
24
|
-
|
|
23
|
+
const [reducedFields, setReducedColumns] = useState(()=>reduceClientFields({
|
|
24
|
+
fields,
|
|
25
25
|
i18n
|
|
26
26
|
}));
|
|
27
27
|
useEffect(()=>{
|
|
28
|
-
setReducedColumns(
|
|
29
|
-
|
|
28
|
+
setReducedColumns(reduceClientFields({
|
|
29
|
+
fields,
|
|
30
30
|
i18n
|
|
31
31
|
}));
|
|
32
32
|
}, [
|
|
33
|
-
|
|
33
|
+
fields,
|
|
34
34
|
i18n
|
|
35
35
|
]);
|
|
36
36
|
const { searchParams } = useSearchParams();
|
|
@@ -73,7 +73,8 @@ const baseClass = 'where-builder';
|
|
|
73
73
|
if (validateWhereQuery(transformedWhere)) {
|
|
74
74
|
return transformedWhere.or;
|
|
75
75
|
}
|
|
76
|
-
console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`)
|
|
76
|
+
console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console
|
|
77
|
+
;
|
|
77
78
|
}
|
|
78
79
|
return [];
|
|
79
80
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useState } from 'react'\n\nimport type { WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport './index.scss'\nimport { reduceFieldMap } from './reduceFieldMap.js'\nimport { transformWhereQuery } from './transformWhereQuery.js'\nimport validateWhereQuery from './validateWhereQuery.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fieldMap } = props\n const { i18n, t } = useTranslation()\n const { code: currentLocale } = useLocale()\n\n const [reducedFields, setReducedColumns] = useState(() => reduceFieldMap({ fieldMap, i18n }))\n\n useEffect(() => {\n setReducedColumns(reduceFieldMap({ fieldMap, i18n }))\n }, [fieldMap, i18n])\n\n const { searchParams } = useSearchParams()\n const { handleWhereChange } = useListQuery()\n const [shouldUpdateQuery, setShouldUpdateQuery] = React.useState(false)\n\n // This handles initializing the where conditions from the search query (URL). That way, if you pass in\n // query params to the URL, the where conditions will be initialized from those and displayed in the UI.\n // Example: /admin/collections/posts?where[or][0][and][0][text][equals]=example%20post\n /*\n stored conditions look like this:\n [\n _or_ & _and_ queries have the same shape:\n {\n and: [{\n category: {\n equals: 'category-a'\n }\n }]\n },\n\n {\n and:[{\n category: {\n equals: 'category-b'\n },\n text: {\n not_equals: 'oranges'\n },\n }]\n }\n ]\n */\n\n const [conditions, setConditions] = React.useState(() => {\n const whereFromSearch = searchParams.where\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`)\n }\n\n return []\n })\n\n const addCondition = React.useCallback(\n ({ andIndex, fieldName, orIndex, relation }) => {\n const newConditions = [...conditions]\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, { [fieldName]: {} })\n } else {\n newConditions.push({\n and: [\n {\n [fieldName]: {},\n },\n ],\n })\n }\n setConditions(newConditions)\n },\n [conditions],\n )\n\n const updateCondition = React.useCallback(\n ({ andIndex, fieldName, operator, orIndex, value: valueArg }) => {\n const existingRowCondition = conditions[orIndex].and[andIndex]\n if (typeof existingRowCondition === 'object' && fieldName && operator) {\n const value = valueArg ?? (operator ? existingRowCondition[operator] : '')\n const newRowCondition = {\n [fieldName]: operator ? { [operator]: value } : {},\n }\n\n if (JSON.stringify(existingRowCondition) !== JSON.stringify(newRowCondition)) {\n conditions[orIndex].and[andIndex] = newRowCondition\n setConditions(conditions)\n if (![null, undefined].includes(value)) {\n // only update query when field/operator/value are filled out\n setShouldUpdateQuery(true)\n }\n }\n }\n },\n [conditions],\n )\n\n const removeCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n setConditions(newConditions)\n setShouldUpdateQuery(true)\n },\n [conditions],\n )\n\n React.useEffect(() => {\n if (shouldUpdateQuery) {\n async function handleChange() {\n await handleWhereChange({ or: conditions })\n setShouldUpdateQuery(false)\n }\n void handleChange()\n }\n }, [conditions, handleWhereChange, shouldUpdateQuery])\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const initialFieldName = Object.keys(conditions[orIndex].and[andIndex])[0]\n const initialOperator =\n (Object.keys(\n conditions[orIndex].and[andIndex]?.[initialFieldName] || {},\n )?.[0] as Operator) || undefined\n const initialValue =\n conditions[orIndex].and[andIndex]?.[initialFieldName]?.[\n initialOperator\n ] || ''\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={initialFieldName}\n fields={reducedFields}\n initialValue={initialValue}\n operator={initialOperator}\n orIndex={orIndex}\n removeCondition={removeCondition}\n updateCondition={updateCondition}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n addCondition({\n andIndex: 0,\n fieldName: reducedFields[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n if (reducedFields.length > 0) {\n addCondition({\n andIndex: 0,\n fieldName: reducedFields[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"names":["getTranslation","React","useEffect","useState","useListQuery","useLocale","useSearchParams","useTranslation","Button","Condition","reduceFieldMap","transformWhereQuery","validateWhereQuery","baseClass","WhereBuilder","props","collectionPluralLabel","fieldMap","i18n","t","code","currentLocale","reducedFields","setReducedColumns","searchParams","handleWhereChange","shouldUpdateQuery","setShouldUpdateQuery","conditions","setConditions","whereFromSearch","where","or","transformedWhere","console","warn","JSON","stringify","addCondition","useCallback","andIndex","fieldName","orIndex","relation","newConditions","and","splice","push","updateCondition","operator","value","valueArg","existingRowCondition","newRowCondition","undefined","includes","removeCondition","length","handleChange","div","className","Fragment","label","ul","map","compoundOrKey","Array","isArray","li","_","initialFieldName","Object","keys","initialOperator","initialValue","fields","buttonStyle","icon","iconPosition","iconStyle","onClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useState } from 'react'\n\nimport type { WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport './index.scss'\nimport { reduceClientFields } from './reduceClientFields.js'\nimport { transformWhereQuery } from './transformWhereQuery.js'\nimport validateWhereQuery from './validateWhereQuery.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields } = props\n const { i18n, t } = useTranslation()\n const { code: currentLocale } = useLocale()\n\n const [reducedFields, setReducedColumns] = useState(() => reduceClientFields({ fields, i18n }))\n\n useEffect(() => {\n setReducedColumns(reduceClientFields({ fields, i18n }))\n }, [fields, i18n])\n\n const { searchParams } = useSearchParams()\n const { handleWhereChange } = useListQuery()\n const [shouldUpdateQuery, setShouldUpdateQuery] = React.useState(false)\n\n // This handles initializing the where conditions from the search query (URL). That way, if you pass in\n // query params to the URL, the where conditions will be initialized from those and displayed in the UI.\n // Example: /admin/collections/posts?where[or][0][and][0][text][equals]=example%20post\n /*\n stored conditions look like this:\n [\n _or_ & _and_ queries have the same shape:\n {\n and: [{\n category: {\n equals: 'category-a'\n }\n }]\n },\n\n {\n and:[{\n category: {\n equals: 'category-b'\n },\n text: {\n not_equals: 'oranges'\n },\n }]\n }\n ]\n */\n\n const [conditions, setConditions] = React.useState(() => {\n const whereFromSearch = searchParams.where\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n })\n\n const addCondition = React.useCallback(\n ({ andIndex, fieldName, orIndex, relation }) => {\n const newConditions = [...conditions]\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, { [fieldName]: {} })\n } else {\n newConditions.push({\n and: [\n {\n [fieldName]: {},\n },\n ],\n })\n }\n setConditions(newConditions)\n },\n [conditions],\n )\n\n const updateCondition = React.useCallback(\n ({ andIndex, fieldName, operator, orIndex, value: valueArg }) => {\n const existingRowCondition = conditions[orIndex].and[andIndex]\n if (typeof existingRowCondition === 'object' && fieldName && operator) {\n const value = valueArg ?? (operator ? existingRowCondition[operator] : '')\n const newRowCondition = {\n [fieldName]: operator ? { [operator]: value } : {},\n }\n\n if (JSON.stringify(existingRowCondition) !== JSON.stringify(newRowCondition)) {\n conditions[orIndex].and[andIndex] = newRowCondition\n setConditions(conditions)\n if (![null, undefined].includes(value)) {\n // only update query when field/operator/value are filled out\n setShouldUpdateQuery(true)\n }\n }\n }\n },\n [conditions],\n )\n\n const removeCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n setConditions(newConditions)\n setShouldUpdateQuery(true)\n },\n [conditions],\n )\n\n React.useEffect(() => {\n if (shouldUpdateQuery) {\n async function handleChange() {\n await handleWhereChange({ or: conditions })\n setShouldUpdateQuery(false)\n }\n void handleChange()\n }\n }, [conditions, handleWhereChange, shouldUpdateQuery])\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const initialFieldName = Object.keys(conditions[orIndex].and[andIndex])[0]\n const initialOperator =\n (Object.keys(\n conditions[orIndex].and[andIndex]?.[initialFieldName] || {},\n )?.[0] as Operator) || undefined\n const initialValue =\n conditions[orIndex].and[andIndex]?.[initialFieldName]?.[\n initialOperator\n ] || ''\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={initialFieldName}\n fields={reducedFields}\n initialValue={initialValue}\n operator={initialOperator}\n orIndex={orIndex}\n removeCondition={removeCondition}\n updateCondition={updateCondition}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n addCondition({\n andIndex: 0,\n fieldName: reducedFields[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n if (reducedFields.length > 0) {\n addCondition({\n andIndex: 0,\n fieldName: reducedFields[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"names":["getTranslation","React","useEffect","useState","useListQuery","useLocale","useSearchParams","useTranslation","Button","Condition","reduceClientFields","transformWhereQuery","validateWhereQuery","baseClass","WhereBuilder","props","collectionPluralLabel","fields","i18n","t","code","currentLocale","reducedFields","setReducedColumns","searchParams","handleWhereChange","shouldUpdateQuery","setShouldUpdateQuery","conditions","setConditions","whereFromSearch","where","or","transformedWhere","console","warn","JSON","stringify","addCondition","useCallback","andIndex","fieldName","orIndex","relation","newConditions","and","splice","push","updateCondition","operator","value","valueArg","existingRowCondition","newRowCondition","undefined","includes","removeCondition","length","handleChange","div","className","Fragment","label","ul","map","compoundOrKey","Array","isArray","li","_","initialFieldName","Object","keys","initialOperator","initialValue","buttonStyle","icon","iconPosition","iconStyle","onClick"],"mappings":"AAAA;;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAIlD,SAASC,YAAY,QAAQ,qCAAoC;AACjE,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,MAAM,QAAQ,qBAAoB;AAC3C,SAASC,SAAS,QAAQ,uBAAsB;AAChD,OAAO,eAAc;AACrB,SAASC,kBAAkB,QAAQ,0BAAyB;AAC5D,SAASC,mBAAmB,QAAQ,2BAA0B;AAC9D,OAAOC,wBAAwB,0BAAyB;AAExD,MAAMC,YAAY;AAIlB;;;CAGC,GACD,OAAO,MAAMC,eAA4C,CAACC;IACxD,MAAM,EAAEC,qBAAqB,EAAEC,MAAM,EAAE,GAAGF;IAC1C,MAAM,EAAEG,IAAI,EAAEC,CAAC,EAAE,GAAGZ;IACpB,MAAM,EAAEa,MAAMC,aAAa,EAAE,GAAGhB;IAEhC,MAAM,CAACiB,eAAeC,kBAAkB,GAAGpB,SAAS,IAAMO,mBAAmB;YAAEO;YAAQC;QAAK;IAE5FhB,UAAU;QACRqB,kBAAkBb,mBAAmB;YAAEO;YAAQC;QAAK;IACtD,GAAG;QAACD;QAAQC;KAAK;IAEjB,MAAM,EAAEM,YAAY,EAAE,GAAGlB;IACzB,MAAM,EAAEmB,iBAAiB,EAAE,GAAGrB;IAC9B,MAAM,CAACsB,mBAAmBC,qBAAqB,GAAG1B,MAAME,QAAQ,CAAC;IAEjE,uGAAuG;IACvG,wGAAwG;IACxG,sFAAsF;IACtF;;;;;;;;;;;;;;;;;;;;;;;EAuBA,GAEA,MAAM,CAACyB,YAAYC,cAAc,GAAG5B,MAAME,QAAQ,CAAC;QACjD,MAAM2B,kBAAkBN,aAAaO,KAAK;QAC1C,IAAID,iBAAiB;YACnB,IAAIlB,mBAAmBkB,kBAAkB;gBACvC,OAAOA,gBAAgBE,EAAE;YAC3B;YACA,mJAAmJ;YACnJ,MAAMC,mBAAmBtB,oBAAoBmB;YAE7C,IAAIlB,mBAAmBqB,mBAAmB;gBACxC,OAAOA,iBAAiBD,EAAE;YAC5B;YAEAE,QAAQC,IAAI,CAAC,CAAC,4BAA4B,EAAEC,KAAKC,SAAS,CAACP,iBAAiB,CAAC,EAAE,iCAAiC;;QAClH;QAEA,OAAO,EAAE;IACX;IAEA,MAAMQ,eAAerC,MAAMsC,WAAW,CACpC,CAAC,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAE;QACzC,MAAMC,gBAAgB;eAAIhB;SAAW;QACrC,IAAIe,aAAa,OAAO;YACtBC,aAAa,CAACF,QAAQ,CAACG,GAAG,CAACC,MAAM,CAACN,UAAU,GAAG;gBAAE,CAACC,UAAU,EAAE,CAAC;YAAE;QACnE,OAAO;YACLG,cAAcG,IAAI,CAAC;gBACjBF,KAAK;oBACH;wBACE,CAACJ,UAAU,EAAE,CAAC;oBAChB;iBACD;YACH;QACF;QACAZ,cAAce;IAChB,GACA;QAAChB;KAAW;IAGd,MAAMoB,kBAAkB/C,MAAMsC,WAAW,CACvC,CAAC,EAAEC,QAAQ,EAAEC,SAAS,EAAEQ,QAAQ,EAAEP,OAAO,EAAEQ,OAAOC,QAAQ,EAAE;QAC1D,MAAMC,uBAAuBxB,UAAU,CAACc,QAAQ,CAACG,GAAG,CAACL,SAAS;QAC9D,IAAI,OAAOY,yBAAyB,YAAYX,aAAaQ,UAAU;YACrE,MAAMC,QAAQC,YAAaF,CAAAA,WAAWG,oBAAoB,CAACH,SAAS,GAAG,EAAC;YACxE,MAAMI,kBAAkB;gBACtB,CAACZ,UAAU,EAAEQ,WAAW;oBAAE,CAACA,SAAS,EAAEC;gBAAM,IAAI,CAAC;YACnD;YAEA,IAAId,KAAKC,SAAS,CAACe,0BAA0BhB,KAAKC,SAAS,CAACgB,kBAAkB;gBAC5EzB,UAAU,CAACc,QAAQ,CAACG,GAAG,CAACL,SAAS,GAAGa;gBACpCxB,cAAcD;gBACd,IAAI,CAAC;oBAAC;oBAAM0B;iBAAU,CAACC,QAAQ,CAACL,QAAQ;oBACtC,6DAA6D;oBAC7DvB,qBAAqB;gBACvB;YACF;QACF;IACF,GACA;QAACC;KAAW;IAGd,MAAM4B,kBAAkBvD,MAAMsC,WAAW,CACvC,CAAC,EAAEC,QAAQ,EAAEE,OAAO,EAAE;QACpB,MAAME,gBAAgB;eAAIhB;SAAW;QACrCgB,aAAa,CAACF,QAAQ,CAACG,GAAG,CAACC,MAAM,CAACN,UAAU;QAC5C,IAAII,aAAa,CAACF,QAAQ,CAACG,GAAG,CAACY,MAAM,KAAK,GAAG;YAC3Cb,cAAcE,MAAM,CAACJ,SAAS;QAChC;QACAb,cAAce;QACdjB,qBAAqB;IACvB,GACA;QAACC;KAAW;IAGd3B,MAAMC,SAAS,CAAC;QACd,IAAIwB,mBAAmB;YACrB,eAAegC;gBACb,MAAMjC,kBAAkB;oBAAEO,IAAIJ;gBAAW;gBACzCD,qBAAqB;YACvB;YACA,KAAK+B;QACP;IACF,GAAG;QAAC9B;QAAYH;QAAmBC;KAAkB;IAErD,qBACE,MAACiC;QAAIC,WAAW/C;;YACbe,WAAW6B,MAAM,GAAG,mBACnB,MAACxD,MAAM4D,QAAQ;;kCACb,KAACF;wBAAIC,WAAW,CAAC,EAAE/C,UAAU,OAAO,CAAC;kCAClCM,EAAE,uBAAuB;4BAAE2C,OAAO9D,eAAegB,uBAAuBE;wBAAM;;kCAEjF,KAAC6C;wBAAGH,WAAW,CAAC,EAAE/C,UAAU,YAAY,CAAC;kCACtCe,WAAWoC,GAAG,CAAC,CAAChC,IAAIU;4BACnB,MAAMuB,gBAAgB,CAAC,EAAEvB,QAAQ,CAAC,EAAEwB,MAAMC,OAAO,CAACnC,IAAIa,OAAOb,GAAGa,GAAG,CAACY,MAAM,GAAG,GAAG,CAAC;4BAEjF,qBACE,MAACW;;oCACE1B,YAAY,mBAAK,KAACiB;wCAAIC,WAAW,CAAC,EAAE/C,UAAU,OAAO,CAAC;kDAAGM,EAAE;;kDAC5D,KAAC4C;wCAAGH,WAAW,CAAC,EAAE/C,UAAU,aAAa,CAAC;kDACvCqD,MAAMC,OAAO,CAACnC,IAAIa,QACjBb,GAAGa,GAAG,CAACmB,GAAG,CAAC,CAACK,GAAG7B;4CACb,MAAM8B,mBAAmBC,OAAOC,IAAI,CAAC5C,UAAU,CAACc,QAAQ,CAACG,GAAG,CAACL,SAAS,CAAC,CAAC,EAAE;4CAC1E,MAAMiC,kBACJ,AAACF,OAAOC,IAAI,CACV5C,UAAU,CAACc,QAAQ,CAACG,GAAG,CAACL,SAAS,EAAE,CAAC8B,iBAAiB,IAAI,CAAC,IACzD,CAAC,EAAE,IAAiBhB;4CACzB,MAAMoB,eACJ9C,UAAU,CAACc,QAAQ,CAACG,GAAG,CAACL,SAAS,EAAE,CAAC8B,iBAAiB,EAAE,CACrDG,gBACD,IAAI;4CAEP,qBACE,MAACL;;oDACE5B,aAAa,mBACZ,KAACmB;wDAAIC,WAAW,CAAC,EAAE/C,UAAU,OAAO,CAAC;kEAAGM,EAAE;;kEAE5C,KAACV;wDACC6B,cAAcA;wDACdE,UAAUA;wDACVC,WAAW6B;wDACXrD,QAAQK;wDACRoD,cAAcA;wDACdzB,UAAUwB;wDACV/B,SAASA;wDACTc,iBAAiBA;wDACjBR,iBAAiBA;;;+CAbZR;wCAiBb;;;+BAjCGyB;wBAqCb;;kCAEF,KAACzD;wBACCmE,aAAY;wBACZf,WAAW,CAAC,EAAE/C,UAAU,QAAQ,CAAC;wBACjC+D,MAAK;wBACLC,cAAa;wBACbC,WAAU;wBACVC,SAAS;4BACPzC,aAAa;gCACXE,UAAU;gCACVC,WAAWnB,aAAa,CAAC,EAAE,CAAC4B,KAAK;gCACjCR,SAASd,WAAW6B,MAAM;gCAC1Bd,UAAU;4BACZ;wBACF;kCAECxB,EAAE;;;;YAIRS,WAAW6B,MAAM,KAAK,mBACrB,MAACE;gBAAIC,WAAW,CAAC,EAAE/C,UAAU,YAAY,CAAC;;kCACxC,KAAC8C;wBAAIC,WAAW,CAAC,EAAE/C,UAAU,OAAO,CAAC;kCAAGM,EAAE;;kCAC1C,KAACX;wBACCmE,aAAY;wBACZf,WAAW,CAAC,EAAE/C,UAAU,kBAAkB,CAAC;wBAC3C+D,MAAK;wBACLC,cAAa;wBACbC,WAAU;wBACVC,SAAS;4BACP,IAAIzD,cAAcmC,MAAM,GAAG,GAAG;gCAC5BnB,aAAa;oCACXE,UAAU;oCACVC,WAAWnB,aAAa,CAAC,EAAE,CAAC4B,KAAK;oCACjCR,SAASd,WAAW6B,MAAM;oCAC1Bd,UAAU;gCACZ;4BACF;wBACF;kCAECxB,EAAE;;;;;;AAMf,EAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { I18nClient } from '@payloadcms/translations';
|
|
2
|
+
import type { ClientField } from 'payload';
|
|
3
|
+
import type { FieldCondition } from './types.js';
|
|
4
|
+
export type ReduceClientFieldsArgs = {
|
|
5
|
+
fields: ClientField[];
|
|
6
|
+
i18n: I18nClient;
|
|
7
|
+
labelPrefix?: string;
|
|
8
|
+
pathPrefix?: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Reduces a field map to a flat array of fields with labels and values.
|
|
12
|
+
* Used in the WhereBuilder component to render the fields in the dropdown.
|
|
13
|
+
*/
|
|
14
|
+
export declare const reduceClientFields: ({ fields, i18n, labelPrefix, pathPrefix, }: ReduceClientFieldsArgs) => FieldCondition[];
|
|
15
|
+
//# sourceMappingURL=reduceClientFields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reduceClientFields.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/reduceClientFields.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,+CAK5B,sBAAsB,KAAG,cAAc,EA6IzC,CAAA"}
|
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { getTranslation } from '@payloadcms/translations';
|
|
3
|
-
import {
|
|
3
|
+
import { tabHasName } from 'payload/shared';
|
|
4
|
+
import { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js';
|
|
4
5
|
import { combineLabel } from '../FieldSelect/index.js';
|
|
5
6
|
import fieldTypes from './field-types.js';
|
|
6
7
|
/**
|
|
7
8
|
* Reduces a field map to a flat array of fields with labels and values.
|
|
8
9
|
* Used in the WhereBuilder component to render the fields in the dropdown.
|
|
9
|
-
*/ export const
|
|
10
|
-
return
|
|
11
|
-
if (field.disableListFilter) return reduced;
|
|
12
|
-
if (field.type === 'tabs' && 'tabs' in field
|
|
13
|
-
const tabs = field.
|
|
10
|
+
*/ export const reduceClientFields = ({ fields, i18n, labelPrefix, pathPrefix })=>{
|
|
11
|
+
return fields.reduce((reduced, field)=>{
|
|
12
|
+
if (field.admin?.disableListFilter) return reduced;
|
|
13
|
+
if (field.type === 'tabs' && 'tabs' in field) {
|
|
14
|
+
const tabs = field.tabs;
|
|
14
15
|
tabs.forEach((tab)=>{
|
|
15
16
|
if (typeof tab.label !== 'boolean') {
|
|
16
17
|
const localizedTabLabel = getTranslation(tab.label, i18n);
|
|
17
18
|
const labelWithPrefix = labelPrefix ? labelPrefix + ' > ' + localizedTabLabel : localizedTabLabel;
|
|
18
19
|
// Make sure we handle nested tabs
|
|
19
|
-
const tabPathPrefix = tab.name ? pathPrefix ? pathPrefix + '.' + tab.name : tab.name : pathPrefix;
|
|
20
|
+
const tabPathPrefix = tabHasName(tab) && tab.name ? pathPrefix ? pathPrefix + '.' + tab.name : tab.name : pathPrefix;
|
|
20
21
|
if (typeof localizedTabLabel === 'string') {
|
|
21
|
-
reduced.push(...
|
|
22
|
-
|
|
22
|
+
reduced.push(...reduceClientFields({
|
|
23
|
+
fields: tab.fields,
|
|
23
24
|
i18n,
|
|
24
25
|
labelPrefix: labelWithPrefix,
|
|
25
26
|
pathPrefix: tabPathPrefix
|
|
@@ -30,33 +31,33 @@ import fieldTypes from './field-types.js';
|
|
|
30
31
|
return reduced;
|
|
31
32
|
}
|
|
32
33
|
// Rows cant have labels, so we need to handle them differently
|
|
33
|
-
if (field.type === 'row' && '
|
|
34
|
-
reduced.push(...
|
|
35
|
-
|
|
34
|
+
if (field.type === 'row' && 'fields' in field) {
|
|
35
|
+
reduced.push(...reduceClientFields({
|
|
36
|
+
fields: field.fields,
|
|
36
37
|
i18n,
|
|
37
38
|
labelPrefix,
|
|
38
39
|
pathPrefix
|
|
39
40
|
}));
|
|
40
41
|
return reduced;
|
|
41
42
|
}
|
|
42
|
-
if (field.type === 'collapsible' && '
|
|
43
|
-
const localizedTabLabel = getTranslation(field.
|
|
43
|
+
if (field.type === 'collapsible' && 'fields' in field) {
|
|
44
|
+
const localizedTabLabel = getTranslation(field.label || '', i18n);
|
|
44
45
|
const labelWithPrefix = labelPrefix ? labelPrefix + ' > ' + localizedTabLabel : localizedTabLabel;
|
|
45
|
-
reduced.push(...
|
|
46
|
-
|
|
46
|
+
reduced.push(...reduceClientFields({
|
|
47
|
+
fields: field.fields,
|
|
47
48
|
i18n,
|
|
48
49
|
labelPrefix: labelWithPrefix,
|
|
49
50
|
pathPrefix
|
|
50
51
|
}));
|
|
51
52
|
return reduced;
|
|
52
53
|
}
|
|
53
|
-
if (field.type === 'group' && '
|
|
54
|
-
const translatedLabel = getTranslation(field.
|
|
54
|
+
if (field.type === 'group' && 'fields' in field) {
|
|
55
|
+
const translatedLabel = getTranslation(field.label || '', i18n);
|
|
55
56
|
const labelWithPrefix = labelPrefix ? translatedLabel ? labelPrefix + ' > ' + translatedLabel : labelPrefix : translatedLabel;
|
|
56
57
|
// Make sure we handle deeply nested groups
|
|
57
58
|
const pathWithPrefix = field.name ? pathPrefix ? pathPrefix + '.' + field.name : field.name : pathPrefix;
|
|
58
|
-
reduced.push(...
|
|
59
|
-
|
|
59
|
+
reduced.push(...reduceClientFields({
|
|
60
|
+
fields: field.fields,
|
|
60
61
|
i18n,
|
|
61
62
|
labelPrefix: labelWithPrefix,
|
|
62
63
|
pathPrefix: pathWithPrefix
|
|
@@ -76,21 +77,22 @@ import fieldTypes from './field-types.js';
|
|
|
76
77
|
}
|
|
77
78
|
return acc;
|
|
78
79
|
}, []);
|
|
79
|
-
const localizedLabel = getTranslation(field.
|
|
80
|
+
const localizedLabel = getTranslation(field.label || '', i18n);
|
|
80
81
|
const formattedLabel = labelPrefix ? combineLabel({
|
|
81
82
|
field,
|
|
82
83
|
prefix: labelPrefix
|
|
83
84
|
}) : localizedLabel;
|
|
84
85
|
const formattedValue = pathPrefix ? createNestedClientFieldPath(pathPrefix, field) : field.name;
|
|
85
86
|
const formattedField = {
|
|
87
|
+
Filter: field.admin?.components?.Filter,
|
|
86
88
|
label: formattedLabel,
|
|
87
89
|
value: formattedValue,
|
|
88
90
|
...fieldTypes[field.type],
|
|
89
|
-
|
|
90
|
-
props: {
|
|
91
|
+
field: {
|
|
91
92
|
...field,
|
|
92
|
-
...field?.
|
|
93
|
-
}
|
|
93
|
+
...field?.admin?.components?.Cell || {}
|
|
94
|
+
},
|
|
95
|
+
operators
|
|
94
96
|
};
|
|
95
97
|
reduced.push(formattedField);
|
|
96
98
|
return reduced;
|
|
@@ -99,4 +101,4 @@ import fieldTypes from './field-types.js';
|
|
|
99
101
|
}, []);
|
|
100
102
|
};
|
|
101
103
|
|
|
102
|
-
//# sourceMappingURL=
|
|
104
|
+
//# sourceMappingURL=reduceClientFields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/WhereBuilder/reduceClientFields.tsx"],"sourcesContent":["'use client'\nimport type { ClientTranslationKeys, I18nClient } from '@payloadcms/translations'\nimport type { ClientField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { tabHasName } from 'payload/shared'\n\nimport type { FieldCondition } from './types.js'\n\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { combineLabel } from '../FieldSelect/index.js'\nimport fieldTypes from './field-types.js'\n\nexport type ReduceClientFieldsArgs = {\n fields: ClientField[]\n i18n: I18nClient\n labelPrefix?: string\n pathPrefix?: string\n}\n\n/**\n * Reduces a field map to a flat array of fields with labels and values.\n * Used in the WhereBuilder component to render the fields in the dropdown.\n */\nexport const reduceClientFields = ({\n fields,\n i18n,\n labelPrefix,\n pathPrefix,\n}: ReduceClientFieldsArgs): FieldCondition[] => {\n return fields.reduce((reduced, field) => {\n if (field.admin?.disableListFilter) return reduced\n\n if (field.type === 'tabs' && 'tabs' in field) {\n const tabs = field.tabs\n\n tabs.forEach((tab) => {\n if (typeof tab.label !== 'boolean') {\n const localizedTabLabel = getTranslation(tab.label, i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n // Make sure we handle nested tabs\n const tabPathPrefix =\n tabHasName(tab) && tab.name\n ? pathPrefix\n ? pathPrefix + '.' + tab.name\n : tab.name\n : pathPrefix\n\n if (typeof localizedTabLabel === 'string') {\n reduced.push(\n ...reduceClientFields({\n fields: tab.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: tabPathPrefix,\n }),\n )\n }\n }\n })\n return reduced\n }\n\n // Rows cant have labels, so we need to handle them differently\n if (field.type === 'row' && 'fields' in field) {\n reduced.push(\n ...reduceClientFields({\n fields: field.fields,\n i18n,\n labelPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'collapsible' && 'fields' in field) {\n const localizedTabLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n reduced.push(\n ...reduceClientFields({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'group' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceClientFields({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n return reduced\n }\n\n if (typeof fieldTypes[field.type] === 'object') {\n const operatorKeys = new Set()\n const operators = fieldTypes[field.type].operators.reduce((acc, operator) => {\n if (!operatorKeys.has(operator.value)) {\n operatorKeys.add(operator.value)\n const operatorKey = `operators:${operator.label}` as ClientTranslationKeys\n acc.push({\n ...operator,\n label: i18n.t(operatorKey),\n })\n }\n return acc\n }, [])\n\n const localizedLabel = getTranslation(field.label || '', i18n)\n\n const formattedLabel = labelPrefix\n ? combineLabel({\n field,\n prefix: labelPrefix,\n })\n : localizedLabel\n\n const formattedValue = pathPrefix\n ? createNestedClientFieldPath(pathPrefix, field)\n : field.name\n\n const formattedField: FieldCondition = {\n Filter: field.admin?.components?.Filter,\n label: formattedLabel,\n value: formattedValue,\n ...fieldTypes[field.type],\n field: {\n ...field,\n ...(field?.admin?.components?.Cell || {}),\n },\n operators,\n }\n\n reduced.push(formattedField)\n return reduced\n }\n\n return reduced\n }, [])\n}\n"],"names":["getTranslation","tabHasName","createNestedClientFieldPath","combineLabel","fieldTypes","reduceClientFields","fields","i18n","labelPrefix","pathPrefix","reduce","reduced","field","admin","disableListFilter","type","tabs","forEach","tab","label","localizedTabLabel","labelWithPrefix","tabPathPrefix","name","push","translatedLabel","pathWithPrefix","operatorKeys","Set","operators","acc","operator","has","value","add","operatorKey","t","localizedLabel","formattedLabel","prefix","formattedValue","formattedField","Filter","components","Cell"],"mappings":"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"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ClientField, MappedComponent, Operator, SanitizedCollectionConfig, Where } from 'payload';
|
|
2
2
|
export type WhereBuilderProps = {
|
|
3
|
-
collectionPluralLabel: SanitizedCollectionConfig['labels']['plural'];
|
|
4
|
-
collectionSlug: SanitizedCollectionConfig['slug'];
|
|
5
|
-
|
|
3
|
+
readonly collectionPluralLabel: SanitizedCollectionConfig['labels']['plural'];
|
|
4
|
+
readonly collectionSlug: SanitizedCollectionConfig['slug'];
|
|
5
|
+
readonly fields?: ClientField[];
|
|
6
6
|
};
|
|
7
7
|
export type FieldCondition = {
|
|
8
|
+
Filter: MappedComponent;
|
|
8
9
|
component?: string;
|
|
10
|
+
field: ClientField;
|
|
9
11
|
label: string;
|
|
10
12
|
operators: {
|
|
11
13
|
label: string;
|
|
12
14
|
value: Operator;
|
|
13
15
|
}[];
|
|
14
|
-
props: Field;
|
|
15
16
|
value: string;
|
|
16
17
|
};
|
|
17
18
|
export type Relation = 'and' | 'or';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,QAAQ,EACR,yBAAyB,EACzB,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAA;IAC7E,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,eAAe,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,WAAW,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE;QACT,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,QAAQ,CAAA;KAChB,EAAE,CAAA;IACH,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAA;AAEnC,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,IAAI,EAAE,KAAK,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAA;AAE1C,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,KAAK,EAAE,CAAA;CACZ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/elements/WhereBuilder/types.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"sources":["../../../src/elements/WhereBuilder/types.ts"],"sourcesContent":["import type {\n ClientField,\n MappedComponent,\n Operator,\n SanitizedCollectionConfig,\n Where,\n} from 'payload'\n\nexport type WhereBuilderProps = {\n readonly collectionPluralLabel: SanitizedCollectionConfig['labels']['plural']\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly fields?: ClientField[]\n}\n\nexport type FieldCondition = {\n Filter: MappedComponent\n component?: string\n field: ClientField\n label: string\n operators: {\n label: string\n value: Operator\n }[]\n value: string\n}\n\nexport type Relation = 'and' | 'or'\n\nexport type ADD = {\n andIndex?: number\n field: string\n orIndex?: number\n relation?: Relation\n type: 'add'\n}\n\nexport type REMOVE = {\n andIndex: number\n orIndex: number\n type: 'remove'\n}\n\nexport type UPDATE = {\n andIndex: number\n field?: string\n operator?: string\n orIndex: number\n type: 'update'\n value?: unknown\n}\n\nexport type Action = ADD | REMOVE | UPDATE\n\nexport type State = {\n or: Where[]\n}\n"],"names":[],"mappings":"AAqDA,WAEC"}
|
|
@@ -21,4 +21,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
21
21
|
|
|
22
22
|
For more please check the link https://github.com/suren-atoyan/monaco-loader#config
|
|
23
23
|
`},ye=ve(ut)(we),lt={config:at},Oe=lt;var st=function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return function(o){return r.reduceRight(function(i,a){return a(i)},o)}},je=st;function Me(e,t){return Object.keys(t).forEach(function(r){t[r]instanceof Object&&e[r]&&Object.assign(t[r],Me(e[r],t[r]))}),ee(ee({},e),t)}var Pe=Me;var ft={type:"cancelation",msg:"operation is manually canceled"};function dt(e){var t=!1,r=new Promise(function(n,o){e.then(function(i){return t?o(ft):n(i)}),e.catch(o)});return r.cancel=function(){return t=!0},r}var F=dt;var pt=ge.create({config:he,isInitialized:!1,resolve:null,reject:null,monaco:null}),Se=de(pt,2),V=Se[0],$=Se[1];function mt(e){var t=Oe.config(e),r=t.monaco,n=fe(t,["monaco"]);$(function(o){return{config:Pe(o.config,n),monaco:r}})}function gt(){var e=V(function(t){var r=t.monaco,n=t.isInitialized,o=t.resolve;return{monaco:r,isInitialized:n,resolve:o}});if(!e.isInitialized){if($({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),F(te);if(window.monaco&&window.monaco.editor)return Ee(window.monaco),e.resolve(window.monaco),F(te);je(ht,bt)(yt)}return F(te)}function ht(e){return document.body.appendChild(e)}function vt(e){var t=document.createElement("script");return e&&(t.src=e),t}function bt(e){var t=V(function(n){var o=n.config,i=n.reject;return{config:o,reject:i}}),r=vt("".concat(t.config.paths.vs,"/loader.js"));return r.onload=function(){return e()},r.onerror=t.reject,r}function yt(){var e=V(function(r){var n=r.config,o=r.resolve,i=r.reject;return{config:n,resolve:o,reject:i}}),t=window.require;t.config(e.config),t(["vs/editor/editor.main"],function(r){Ee(r),e.resolve(r)},function(r){e.reject(r)})}function Ee(e){V().monaco||$({monaco:e})}function wt(){return V(function(e){var t=e.monaco;return t})}var te=new Promise(function(e,t){return $({resolve:e,reject:t})}),Ot={config:mt,init:gt,__getMonacoInstance:wt},P=Ot;import{memo as jt}from"react";import Mt,{useState as Ie,useRef as I,useCallback as Te,useEffect as Ce}from"react";import{memo as Pt}from"react";import re from"react";import Et from"react";import{useEffect as Dt}from"react";import{useEffect as Wt,useRef as Nt}from"react";import{useState as Nr}from"react";import{memo as Ht}from"react";import _t,{useState as Le,useEffect as H,useRef as O,useCallback as kt}from"react";import{useEffect as Bt,useRef as Kt}from"react";var St={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},ne=St,It={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},Tt=It;function Ct({children:e}){return Et.createElement("div",{style:Tt.container},e)}var Lt=Ct,xt=Lt;function At({width:e,height:t,isEditorReady:r,loading:n,_ref:o,className:i,wrapperProps:a}){return re.createElement("section",{style:{...ne.wrapper,width:e,height:t},...a},!r&&re.createElement(xt,null,n),re.createElement("div",{ref:o,style:{...ne.fullWidth,...!r&&ne.hide},className:i}))}var Rt=At,xe=Pt(Rt);function Vt(e){Dt(e,[])}var Ae=Vt;function zt(e,t,r=!0){let n=Nt(!0);Wt(n.current||!r?()=>{n.current=!1}:e,t)}var y=zt;function W(){}function T(e,t,r,n){return Ut(e,n)||qt(e,t,r,n)}function Ut(e,t){return e.editor.getModel(Re(e,t))}function qt(e,t,r,n){return e.editor.createModel(t,r,n?Re(e,n):void 0)}function Re(e,t){return e.Uri.parse(t)}function Ft({original:e,modified:t,language:r,originalLanguage:n,modifiedLanguage:o,originalModelPath:i,modifiedModelPath:a,keepCurrentOriginalModel:s=!1,keepCurrentModifiedModel:f=!1,theme:v="light",loading:S="Loading...",options:w={},height:k="100%",width:B="100%",className:K,wrapperProps:G={},beforeMount:Y=W,onMount:J=W}){let[b,C]=Ie(!1),[L,d]=Ie(!0),p=I(null),l=I(null),x=I(null),g=I(J),c=I(Y),E=I(!1);Ae(()=>{let u=P.init();return u.then(m=>(l.current=m)&&d(!1)).catch(m=>m?.type!=="cancelation"&&console.error("Monaco initialization: error:",m)),()=>p.current?A():u.cancel()}),y(()=>{let u=p.current.getModifiedEditor();u.getOption(l.current.editor.EditorOption.readOnly)?u.setValue(t||""):t!==u.getValue()&&(u.executeEdits("",[{range:u.getModel().getFullModelRange(),text:t||"",forceMoveMarkers:!0}]),u.pushUndoStop())},[t],b),y(()=>{p.current?.getModel()?.original.setValue(e||"")},[e],b),y(()=>{let{original:u,modified:m}=p.current.getModel();l.current.editor.setModelLanguage(u,n||r||"text"),l.current.editor.setModelLanguage(m,o||r||"text")},[r,n,o],b),y(()=>{l.current?.editor.setTheme(v)},[v],b),y(()=>{p.current?.updateOptions(w)},[w],b);let N=Te(()=>{if(!l.current)return;c.current(l.current);let u=T(l.current,e||"",n||r||"text",i||""),m=T(l.current,t||"",o||r||"text",a||"");p.current?.setModel({original:u,modified:m})},[r,t,o,e,n,i,a]),z=Te(()=>{!E.current&&x.current&&(p.current=l.current.editor.createDiffEditor(x.current,{automaticLayout:!0,...w}),N(),l.current?.editor.setTheme(v),C(!0),E.current=!0)},[w,v,N]);Ce(()=>{b&&g.current(p.current,l.current)},[b]),Ce(()=>{!L&&!b&&z()},[L,b,z]),y(()=>{if(p.current&&l.current){let u=p.current.getOriginalEditor(),m=T(l.current,e||"",n||r||"text",i||"");m!==u.getModel()&&u.setModel(m)}},[i],b),y(()=>{if(p.current&&l.current){let u=p.current.getModifiedEditor(),m=T(l.current,t||"",o||r||"text",a||"");m!==u.getModel()&&u.setModel(m)}},[a],b);function A(){let u=p.current?.getModel();s||u?.original?.dispose(),f||u?.modified?.dispose(),p.current?.dispose()}return Mt.createElement(xe,{width:B,height:k,isEditorReady:b,loading:S,_ref:x,className:K,wrapperProps:G})}var $t=Ft,Vr=jt($t);function Gt(e){let t=Kt();return Bt(()=>{t.current=e},[e]),t.current}var Yt=Gt,_=new Map;function Jt({defaultValue:e,defaultLanguage:t,defaultPath:r,value:n,language:o,path:i,theme:a="light",line:s,loading:f="Loading...",options:v={},overrideServices:S={},saveViewState:w=!0,keepCurrentModel:k=!1,width:B="100%",height:K="100%",className:G,wrapperProps:Y={},beforeMount:J=W,onMount:b=W,onChange:C,onValidate:L=W}){let[d,p]=Le(!1),[l,x]=Le(!0),g=O(null),c=O(null),E=O(null),N=O(b),z=O(J),A=O(),u=O(n),m=Yt(i),ie=O(!1),Q=O(!1);Ae(()=>{let h=P.init();return h.then(j=>(g.current=j)&&x(!1)).catch(j=>j?.type!=="cancelation"&&console.error("Monaco initialization: error:",j)),()=>c.current?Ve():h.cancel()}),y(()=>{let h=T(g.current,e||n||"",t||o||"",i||r||"");h!==c.current?.getModel()&&(w&&_.set(m,c.current?.saveViewState()),c.current?.setModel(h),w&&c.current?.restoreViewState(_.get(i)))},[i],d),y(()=>{c.current?.updateOptions(v)},[v],d),y(()=>{!c.current||n===void 0||(c.current.getOption(g.current.editor.EditorOption.readOnly)?c.current.setValue(n):n!==c.current.getValue()&&(Q.current=!0,c.current.executeEdits("",[{range:c.current.getModel().getFullModelRange(),text:n,forceMoveMarkers:!0}]),c.current.pushUndoStop(),Q.current=!1))},[n],d),y(()=>{let h=c.current?.getModel();h&&o&&g.current?.editor.setModelLanguage(h,o)},[o],d),y(()=>{s!==void 0&&c.current?.revealLine(s)},[s],d),y(()=>{g.current?.editor.setTheme(a)},[a],d);let ae=kt(()=>{if(!(!E.current||!g.current)&&!ie.current){z.current(g.current);let h=i||r,j=T(g.current,n||e||"",t||o||"",h||"");c.current=g.current?.editor.create(E.current,{model:j,automaticLayout:!0,...v},S),w&&c.current.restoreViewState(_.get(h)),g.current.editor.setTheme(a),p(!0),ie.current=!0}},[e,t,r,n,o,i,v,S,w,a]);H(()=>{d&&N.current(c.current,g.current)},[d]),H(()=>{!l&&!d&&ae()},[l,d,ae]),u.current=n,H(()=>{d&&C&&(A.current?.dispose(),A.current=c.current?.onDidChangeModelContent(h=>{Q.current||C(c.current.getValue(),h)}))},[d,C]),H(()=>{if(d){let h=g.current.editor.onDidChangeMarkers(j=>{let X=c.current.getModel()?.uri;if(X&&j.find(Z=>Z.path===X.path)){let Z=g.current.editor.getModelMarkers({resource:X});L?.(Z)}});return()=>{h?.dispose()}}return()=>{}},[d,L]);function Ve(){A.current?.dispose(),k?w&&_.set(i,c.current.saveViewState()):c.current.getModel()?.dispose(),c.current.dispose()}return _t.createElement(xe,{width:B,height:K,isEditorReady:d,loading:f,_ref:E,className:G,wrapperProps:Y})}var Qt=Jt,Xt=Ht(Qt),oe=Xt;import De from"react";var Zt=oe.default||oe,er="code-editor",tr=e=>{let{className:t,height:r,options:n,readOnly:o,...i}=e,{theme:a}=ue(),s=[er,t,i?.defaultLanguage?`language--${i.defaultLanguage}`:"",o&&"read-only"].filter(Boolean).join(" ");return De.createElement(Zt,{className:s,height:r,loading:De.createElement(ce,{height:r}),options:{detectIndentation:!0,minimap:{enabled:!1},readOnly:!!o,scrollBeyondLastLine:!1,tabSize:2,wordWrap:"on",...n},theme:a==="dark"?"vs-dark":"vs",...i})},Gr=tr;export{Gr as default};
|
|
24
|
-
//# sourceMappingURL=CodeEditor-
|
|
24
|
+
//# sourceMappingURL=CodeEditor-MODTAQNB.js.map
|