@guillotinaweb/react-gmi 0.29.2 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +2 -1
  2. package/dist/actions/copy_item.d.ts +2 -2
  3. package/dist/actions/move_item.d.ts +2 -2
  4. package/dist/actions/remove_item.d.ts +2 -2
  5. package/dist/components/behaviors/iattachment.d.ts +4 -2
  6. package/dist/components/behaviors/imultiimageorderedattachment.d.ts +3 -1
  7. package/dist/components/behaviors/iworkflow.d.ts +1 -1
  8. package/dist/components/context_toolbar.d.ts +1 -1
  9. package/dist/components/fields/editComponent.d.ts +5 -4
  10. package/dist/components/fields/editableField.d.ts +4 -2
  11. package/dist/components/fields/renderField.d.ts +8 -5
  12. package/dist/components/flash.d.ts +1 -1
  13. package/dist/components/input/email.d.ts +1 -1
  14. package/dist/components/input/form_builder.d.ts +2 -2
  15. package/dist/components/input/input.d.ts +1 -1
  16. package/dist/components/input/search_input.d.ts +1 -1
  17. package/dist/components/input/search_input_list.d.ts +2 -2
  18. package/dist/components/input/select_vocabulary.d.ts +2 -2
  19. package/dist/components/input/upload.d.ts +1 -2
  20. package/dist/components/pagination.d.ts +1 -1
  21. package/dist/components/panel/permissions.d.ts +1 -1
  22. package/dist/components/panel/permissions_prinperm.d.ts +2 -2
  23. package/dist/components/panel/permissions_prinrole.d.ts +1 -1
  24. package/dist/components/panel/permissions_roleperm.d.ts +1 -1
  25. package/dist/components/path.d.ts +1 -1
  26. package/dist/components/properties_view.d.ts +2 -2
  27. package/dist/components/search_labels.d.ts +1 -1
  28. package/dist/components/search_options_labels.d.ts +1 -1
  29. package/dist/components/search_vocabulary_labels.d.ts +2 -2
  30. package/dist/components/selected_items_actions.d.ts +14 -0
  31. package/dist/components/tabs.d.ts +4 -2
  32. package/dist/components/widgets/tags.d.ts +4 -1
  33. package/dist/contexts/index.d.ts +21 -19
  34. package/dist/forms/required_fields.d.ts +2 -3
  35. package/dist/forms/users.d.ts +1 -1
  36. package/dist/hooks/useClickAway.d.ts +2 -1
  37. package/dist/hooks/useConfig.d.ts +4 -2
  38. package/dist/hooks/useCrudContext.d.ts +11 -10
  39. package/dist/hooks/useInput.d.ts +4 -3
  40. package/dist/hooks/useRegistry.d.ts +29 -29
  41. package/dist/hooks/useSetState.d.ts +6 -1
  42. package/dist/hooks/useVocabulary.d.ts +1 -1
  43. package/dist/lib/auth.d.ts +14 -19
  44. package/dist/lib/client.d.ts +49 -36
  45. package/dist/lib/helpers.d.ts +10 -18
  46. package/dist/lib/processResponse.d.ts +9 -0
  47. package/dist/lib/rest.d.ts +9 -16
  48. package/dist/lib/utils.d.ts +3 -2
  49. package/dist/lib/validators.d.ts +1 -1
  50. package/dist/locales/generic_messages.d.ts +248 -370
  51. package/dist/models/index.d.ts +5 -5
  52. package/dist/models/sharing.d.ts +5 -5
  53. package/dist/react-gmi.esm.js +1181 -904
  54. package/dist/react-gmi.esm.js.map +1 -1
  55. package/dist/react-gmi.js +1180 -904
  56. package/dist/react-gmi.js.map +1 -1
  57. package/dist/react-gmi.modern.js +1154 -851
  58. package/dist/react-gmi.modern.js.map +1 -1
  59. package/dist/react-gmi.umd.js +1180 -904
  60. package/dist/react-gmi.umd.js.map +1 -1
  61. package/dist/reducers/guillotina.d.ts +22 -8
  62. package/dist/types/global.d.ts +9 -0
  63. package/dist/types/guillotina.d.ts +192 -44
  64. package/dist/views/folder.d.ts +1 -1
  65. package/dist/views/groups.d.ts +1 -1
  66. package/dist/views/item.d.ts +1 -1
  67. package/dist/views/users.d.ts +1 -1
  68. package/package.json +3 -2
  69. package/dist/lib/search.test.d.ts +0 -1
  70. package/dist/setupTests.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"react-gmi.modern.js","sources":["../src/guillo-gmi/contexts/index.tsx","../src/guillo-gmi/locales/generic_messages.js","../src/guillo-gmi/lib/helpers.ts","../src/guillo-gmi/components/input/button.tsx","../src/guillo-gmi/components/modal.tsx","../src/guillo-gmi/hooks/useSetState.tsx","../src/guillo-gmi/hooks/useCrudContext.tsx","../src/guillo-gmi/actions/add_item.tsx","../src/guillo-gmi/hooks/useConfig.tsx","../src/guillo-gmi/actions/remove_items.tsx","../src/guillo-gmi/components/input/checkbox.tsx","../src/guillo-gmi/components/error_zone.tsx","../src/guillo-gmi/hooks/useInput.tsx","../src/guillo-gmi/lib/validators.ts","../src/guillo-gmi/components/input/input.tsx","../src/guillo-gmi/components/ui/icon.tsx","../src/guillo-gmi/components/input/email.tsx","../src/guillo-gmi/components/input/form.tsx","../src/guillo-gmi/components/input/password.tsx","../src/guillo-gmi/components/input/form_builder.tsx","../src/guillo-gmi/components/input/select.tsx","../src/guillo-gmi/lib/utils.ts","../src/guillo-gmi/hooks/useVocabulary.tsx","../src/guillo-gmi/components/input/select_vocabulary.tsx","../src/guillo-gmi/hooks/useLocation.tsx","../src/guillo-gmi/components/Link.tsx","../src/guillo-gmi/components/TdLink.tsx","../src/guillo-gmi/components/ui/loading.tsx","../src/guillo-gmi/components/ui/tag.tsx","../src/guillo-gmi/components/ui/delete.tsx","../src/guillo-gmi/components/ui/table.tsx","../src/guillo-gmi/components/ui/notification.tsx","../src/guillo-gmi/lib/rest.ts","../src/guillo-gmi/lib/search.ts","../src/guillo-gmi/lib/client.tsx","../src/guillo-gmi/components/input/upload.tsx","../src/guillo-gmi/components/input/textarea.tsx","../src/guillo-gmi/hooks/useClickAway.tsx","../src/guillo-gmi/components/input/search_input.tsx","../src/guillo-gmi/components/input/search_input_list.tsx","../src/guillo-gmi/components/input/input_list.tsx","../src/guillo-gmi/components/input/dropdown.tsx","../src/guillo-gmi/components/fields/editableField.tsx","../src/guillo-gmi/components/fields/downloadField.tsx","../src/guillo-gmi/components/fields/renderField.tsx","../src/guillo-gmi/components/fields/editComponent.tsx","../src/guillo-gmi/components/behaviors/iattachment.tsx","../src/guillo-gmi/components/behaviors/imultiattachment.tsx","../src/guillo-gmi/components/behaviors/iimageattachment.tsx","../src/guillo-gmi/components/behaviors/imultiimageattachment.tsx","../src/guillo-gmi/components/behaviors/imultiimageorderedattachment.tsx","../src/guillo-gmi/models/sharing.ts","../src/guillo-gmi/models/index.ts","../src/guillo-gmi/components/behaviors/iworkflow.tsx","../src/guillo-gmi/components/panel/actions.tsx","../src/guillo-gmi/components/panel/addons.tsx","../src/guillo-gmi/components/panel/behaviors.tsx","../src/guillo-gmi/components/selected_items_actions.tsx","../src/guillo-gmi/components/pagination.tsx","../src/guillo-gmi/components/item.tsx","../src/guillo-gmi/components/search_labels.tsx","../src/guillo-gmi/components/search_options_labels.tsx","../src/guillo-gmi/components/search_vocabulary_labels.tsx","../src/guillo-gmi/components/panel/items.tsx","../src/guillo-gmi/components/behavior_view.tsx","../src/guillo-gmi/components/properties_view.tsx","../src/guillo-gmi/components/panel/properties.tsx","../src/guillo-gmi/components/panel/permissions_prinperm.tsx","../src/guillo-gmi/components/panel/permissions_prinrole.tsx","../src/guillo-gmi/components/panel/permissions_roleperm.tsx","../src/guillo-gmi/components/panel/permissions.tsx","../src/guillo-gmi/components/widgets/tags.tsx","../src/guillo-gmi/components/context_toolbar.tsx","../src/guillo-gmi/components/flash.tsx","../src/guillo-gmi/components/tabs.tsx","../src/guillo-gmi/views/folder.tsx","../src/guillo-gmi/views/item.tsx","../src/guillo-gmi/views/application.tsx","../src/guillo-gmi/views/base.tsx","../src/guillo-gmi/views/container.tsx","../src/guillo-gmi/forms/users.tsx","../src/guillo-gmi/hooks/useRemoteField.tsx","../src/guillo-gmi/views/users.tsx","../src/guillo-gmi/actions/copy_items.tsx","../src/guillo-gmi/actions/copy_item.tsx","../src/guillo-gmi/actions/move_items.tsx","../src/guillo-gmi/actions/move_item.tsx","../src/guillo-gmi/actions/remove_item.tsx","../src/guillo-gmi/actions/change_pass.tsx","../src/guillo-gmi/forms/base.tsx","../src/guillo-gmi/components/behaviors/idublincore.tsx","../src/guillo-gmi/views/groups.tsx","../src/guillo-gmi/components/error_boundary.tsx","../src/guillo-gmi/components/notallowed.tsx","../src/guillo-gmi/components/notfound.tsx","../src/guillo-gmi/components/path.tsx","../src/guillo-gmi/hooks/useRegistry.tsx","../src/guillo-gmi/reducers/guillotina.ts","../src/guillo-gmi/components/guillotina.tsx","../src/guillo-gmi/components/layout.tsx","../src/guillo-gmi/components/login.tsx","../src/guillo-gmi/forms/required_fields.tsx","../src/guillo-gmi/lib/auth.ts"],"sourcesContent":["import { Dispatch, useContext } from 'react'\nimport { createContext } from 'react'\nimport { GuillotinaClient } from '../lib/client.js'\nimport { Auth } from '../lib/auth.js'\nimport { IndexSignature } from '../types/global'\nimport { GuillotinaGlobalState } from '../reducers/guillotina'\n\nexport const AuthContext = createContext({})\n\nexport const ClientContext = createContext<GuillotinaClient>(null)\n\ninterface PropsTraversal {\n client: GuillotinaClient\n auth: Auth\n state: GuillotinaGlobalState\n dispatch: Dispatch<{ type: string; payload: IndexSignature }>\n registry: IndexSignature\n flash: (action: string, result: string) => void\n url: string\n}\n\nexport class Traversal {\n private dispatch\n public state\n public client\n public registry\n public url\n public auth\n\n constructor({ flash, ...props }: PropsTraversal) {\n this.dispatch = props.dispatch\n this.state = props.state\n this.client = props.client\n this.registry = props.registry\n this.auth = props.auth\n this.url = props.url\n if (typeof flash === 'function') this.flash = flash\n }\n\n refresh({ transparent = false } = {}) {\n this.dispatch({ type: 'REFRESH', payload: { transparent } })\n }\n\n get path() {\n return this.state.path\n }\n\n get pathPrefix() {\n return this.state.path.slice(1)\n }\n\n get context() {\n return this.state.context\n }\n\n get containerPath() {\n return this.client.getContainerFromPath(this.path)\n }\n\n apply(data) {\n // apply a optimistic update to context\n this.dispatch({ type: 'APPLY', payload: data })\n }\n\n flash(message, type) {\n this.dispatch({ type: 'SET_FLASH', payload: { flash: { message, type } } })\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' })\n }\n\n clearFlash() {\n this.dispatch({ type: 'CLEAR_FLASH' })\n }\n\n doAction(action, params = {}) {\n this.dispatch({ type: 'SET_ACTION', payload: { action, params } })\n }\n\n cancelAction() {\n this.dispatch({ type: 'CLEAR_ACTION' })\n }\n\n hasPerm(permission) {\n return this.state.permissions[permission] === true\n }\n\n filterTabs(tabs, tabsPermissions) {\n const result = {}\n Object.keys(tabs).forEach((item) => {\n const perm = tabsPermissions[item]\n if (perm && this.hasPerm(perm)) {\n result[item] = tabs[item]\n } else if (!perm) {\n result[item] = tabs[item]\n }\n })\n return result\n }\n}\n\nexport const TraversalContext = createContext<Traversal>(null)\nexport function TraversalProvider({\n children,\n ...props\n}: PropsTraversal & { children: React.ReactNode }) {\n return (\n <TraversalContext.Provider value={new Traversal(props)}>\n {children}\n </TraversalContext.Provider>\n )\n}\n\nexport function useTraversal() {\n return useContext(TraversalContext)\n}\n\ninterface PropsClient {\n children: React.ReactNode\n client: GuillotinaClient\n}\nexport function ClientProvider({ children, client }: PropsClient) {\n return (\n <ClientContext.Provider value={client}>{children}</ClientContext.Provider>\n )\n}\n\nexport function useGuillotinaClient() {\n return useContext(ClientContext)\n}\n","import { defineMessages } from 'react-intl'\n\nexport const genericMessages = defineMessages({\n loading: {\n id: 'loading',\n defaultMessage: 'Loading',\n },\n remove: {\n id: 'remove',\n defaultMessage: 'Remove',\n },\n install: {\n id: 'install',\n defaultMessage: 'Install',\n },\n delete: {\n id: 'delete',\n defaultMessage: 'Delete',\n },\n move_to: {\n id: 'move_to',\n defaultMessage: 'Move to...',\n },\n copy_to: {\n id: 'copy_to',\n defaultMessage: 'Copy to...',\n },\n behaviors: {\n id: 'behaviors',\n defaultMessage: 'Behaviors',\n },\n static: {\n id: 'static',\n defaultMessage: 'Static',\n },\n disable: {\n id: 'disable',\n defaultMessage: 'Disable',\n },\n enable: {\n id: 'enable',\n defaultMessage: 'Enable',\n },\n enabled: {\n id: 'enabled',\n defaultMessage: 'Enabled',\n },\n available: {\n id: 'available',\n defaultMessage: 'Available',\n },\n invalid_form_data: {\n id: 'invalid_form_data',\n defaultMessage: 'Invalid form data',\n },\n invalid_form: {\n id: 'invalid_form',\n defaultMessage: 'Invalid form',\n },\n select_principal: {\n id: 'select_principal',\n defaultMessage: 'Select a Principal',\n },\n select_role: {\n id: 'select_role',\n defaultMessage: 'Select a Role',\n },\n select_permissions: {\n id: 'select_permissions',\n defaultMessage: 'Select permissions',\n },\n operation: {\n id: 'operation',\n defaultMessage: 'Operation',\n },\n save: {\n id: 'save',\n defaultMessage: 'Save',\n },\n choose: {\n id: 'choose',\n defaultMessage: 'Choose...',\n },\n property: {\n id: 'property',\n defaultMessage: 'Property',\n },\n value: {\n id: 'value',\n defaultMessage: 'Value',\n },\n create: {\n id: 'create',\n defaultMessage: 'Create',\n },\n upload: {\n id: 'upload',\n defaultMessage: 'Upload',\n },\n image: {\n id: 'image',\n defaultMessage: 'Image',\n },\n error_provide_key_name: {\n id: 'error_provide_key_name',\n defaultMessage: 'Provide a key name',\n },\n mandatory_field: {\n id: 'mandatory_field',\n defaultMessage: '{field} is mandatory!',\n },\n error_in_field: {\n id: 'error_in_field',\n defaultMessage: 'Error in field {field}!',\n },\n field_updated: {\n id: 'field_updated',\n defaultMessage: 'Field {field}, updated!',\n },\n field_deleted: {\n id: 'field_deleted',\n defaultMessage: 'Field {field}, deleted!',\n },\n can_not_delete_field: {\n id: 'can_not_delete_field',\n defaultMessage: 'You can not delete {field}!',\n },\n cancel: {\n id: 'cancel',\n defaultMessage: 'Cancel',\n },\n open: {\n id: 'open',\n defaultMessage: 'Open',\n },\n download: {\n id: 'download',\n defaultMessage: 'Download',\n },\n search: {\n id: 'search',\n defaultMessage: 'Search',\n },\n no_results: {\n id: 'no_results',\n defaultMessage: 'No results',\n },\n load_more: {\n id: 'load_more',\n defaultMessage: 'Load more',\n },\n add_type: {\n id: 'add_type',\n defaultMessage: 'Add {type}',\n },\n confirm: {\n id: 'confirm',\n defaultMessage: 'Confirm',\n },\n field_is_required: {\n id: 'field_is_required',\n defaultMessage: 'This field is required',\n },\n title: {\n id: 'title',\n defaultMessage: 'Title',\n },\n add: {\n id: 'add',\n defaultMessage: 'Add',\n },\n not_implemented: {\n id: 'not_implemented',\n defaultMessage: 'Not implemented',\n },\n failed_to_update: {\n id: 'failed_to_update',\n defaultMessage: 'Failed to update: {error}',\n },\n add_user: {\n id: 'add_user',\n defaultMessage: 'Add a User',\n },\n role: {\n id: 'role',\n defaultMessage: 'Role',\n },\n setting: {\n id: 'setting',\n defaultMessage: 'Setting',\n },\n permission: {\n id: 'permission',\n defaultMessage: 'Permission',\n },\n})\n\nexport const genericFileMessages = defineMessages({\n error_file_key_name: {\n id: 'error_file_key_name',\n defaultMessage: 'Provide a file and a key name',\n },\n error_upload_file: {\n id: 'error_upload_file',\n defaultMessage: 'Failed to upload file',\n },\n error_upload_file_size: {\n id: 'error_upload_file_size',\n defaultMessage: 'Failed to upload file {size}',\n },\n image_uploaded: {\n id: 'image_uploaded',\n defaultMessage: 'Image uploaded!',\n },\n file_uploaded: {\n id: 'file_uploaded',\n defaultMessage: 'File uploaded!',\n },\n failed_delete_file: {\n id: 'failed_delete_file',\n defaultMessage: 'Failed to delete file',\n },\n image_deleted: {\n id: 'image_deleted',\n defaultMessage: 'Image deleted!',\n },\n confirm_message_delete_file: {\n id: 'confirm_message_delete_file',\n defaultMessage: 'Are you sure to remove: {fileKeyToDelete}?',\n },\n confirm_message_delete_image: {\n id: 'confirm_message_delete_image',\n defaultMessage: 'Are you sure to remove the image?',\n },\n no_images_uploaded: {\n id: 'no_images_uploaded',\n defaultMessage: 'No images uploaded',\n },\n no_files_uploaded: {\n id: 'no_files_uploaded',\n defaultMessage: 'No files uploaded',\n },\n upload_an_image: {\n id: 'upload_an_image',\n defaultMessage: 'Upload an image',\n },\n upload_a_file: {\n id: 'upload_a_file',\n defaultMessage: 'Upload a file',\n },\n})\n","import { genericMessages } from '../locales/generic_messages'\n\nexport const classnames = (classNames) => {\n return classNames.filter(Boolean).join(' ').trim()\n}\n\nexport const noop = () => {}\n\nlet current = 0\n\nexport const generateUID = (prefix = '') => `${prefix || 'id'}-${current++}`\n\nexport const toQueryString = (params: string[][]) => {\n return Object.keys(params)\n .map((key) => {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key])\n })\n .join('&')\n}\n\nexport function base64ToArrayBuffer(base64) {\n const binaryString = window.atob(base64)\n const binaryLen = binaryString.length\n const bytes = new Uint8Array(binaryLen)\n for (let i = 0; i < binaryLen; i++) {\n const ascii = binaryString.charCodeAt(i)\n bytes[i] = ascii\n }\n return bytes\n}\n\nexport function stringToSlug(str) {\n str = str.replace(/^\\s+|\\s+$/g, '') // trim\n str = str.toLowerCase()\n\n // remove accents, swap ñ for n, etc\n const from = 'àáäâèéëêìíïîòóöôùúüûñç·/_,:;'\n const to = 'aaaaeeeeiiiioooouuuunc------'\n for (let i = 0, l = from.length; i < l; i++) {\n str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i))\n }\n\n str = str\n .replace(/[^a-z0-9 -]/g, '') // remove invalid chars\n .replace(/\\s+/g, '-') // collapse whitespace and replace by -\n .replace(/-+/g, '-') // collapse dashes\n\n return str\n}\n\nexport function sleep(ms): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(function () {\n resolve(null)\n }, ms)\n })\n}\n\nexport const getActionsObject = (intl, multiple = false) => ({\n DELETE: {\n text: intl.formatMessage(genericMessages.delete),\n perms: ['guillotina.DeleteContent'],\n action: multiple ? 'removeItems' : 'removeItem',\n },\n MOVE: {\n text: intl.formatMessage(genericMessages.move_to),\n perms: ['guillotina.MoveContent'],\n action: multiple ? 'moveItems' : 'moveItem',\n },\n COPY: {\n text: intl.formatMessage(genericMessages.copy_to),\n perms: ['guillotina.DuplicateContent'],\n action: multiple ? 'copyItems' : 'copyItem',\n },\n})\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n className?: string\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n type?: 'submit' | 'reset' | 'button'\n loading?: boolean\n disabled?: boolean\n dataTest?: string\n}\nexport const Button = ({\n children,\n className = 'is-primary',\n onClick,\n type = 'submit',\n loading = false,\n disabled = false,\n dataTest,\n}: Props) => {\n let css = [].concat('button', ...className.split(' '))\n if (loading) css = css.concat('is-loading')\n\n return (\n <p className=\"control\">\n <button\n type={type}\n className={classnames(css)}\n onClick={onClick}\n disabled={disabled}\n data-test={dataTest}\n >\n {children}\n </button>\n </p>\n )\n}\n","import usePortal from 'react-useportal'\nimport { Button } from './input/button'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\ninterface ModalProps {\n isActive: boolean\n setActive: (value: boolean) => void\n children: React.ReactNode\n className?: string\n}\n\nexport function Modal(props: ModalProps) {\n const { isActive, setActive, children } = props\n const { Portal } = usePortal()\n\n const css = 'modal ' + (isActive ? 'is-active ' : '') + props.className\n return (\n <Portal>\n <div className={css}>\n <div className=\"modal-background\" onClick={() => setActive(false)} />\n <div className=\"modal-content\">\n <div className=\"box\">{children}</div>\n </div>\n <button\n className=\"modal-close is-large\"\n aria-label=\"close\"\n onClick={() => setActive(false)}\n />\n </div>\n </Portal>\n )\n}\n\ninterface ConfirmProps {\n message?: string\n onCancel: () => void\n onConfirm: () => void\n loading?: boolean\n}\nexport function Confirm({\n message,\n onCancel,\n onConfirm,\n loading,\n}: ConfirmProps) {\n const intl = useIntl()\n const setActive = () => onCancel()\n return (\n <Modal isActive setActive={setActive} className=\"confirm\">\n <h1 className=\"title is-size-5\">{message || 'Are you Sure?'}</h1>\n <div className=\"level\" style={{ marginTop: 50 }}>\n <div className=\"level-left\"></div>\n <div className=\"level-right\">\n <button\n className=\"button is-danger\"\n onClick={() => onCancel()}\n data-test=\"btnCancelModalTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </button>\n &nbsp;&nbsp;\n <Button\n loading={loading}\n className=\"is-success\"\n onClick={() => onConfirm()}\n dataTest=\"btnConfirmModalTest\"\n >\n {intl.formatMessage(genericMessages.confirm)}\n </Button>\n </div>\n </div>\n </Modal>\n )\n}\n\ninterface PathTreeProps {\n title: string\n defaultPath?: string\n children?: React.ReactNode\n onConfirm: (path: string, target: EventTarget) => void\n onCancel: () => void\n}\n// @todo Improve it... Replacing the inputText to a tree\nexport function PathTree({\n title,\n defaultPath,\n children,\n onConfirm,\n onCancel,\n}: PathTreeProps) {\n const intl = useIntl()\n return (\n <Modal isActive setActive={onCancel}>\n <h1>{title}</h1>\n <form\n onSubmit={(e) => {\n e.preventDefault()\n onConfirm(e.target[0].value, e.target)\n }}\n >\n <small style={{ display: 'block', marginTop: 20 }}>\n {`Example: /folder (without /db/container on front)`}\n </small>\n <input\n className=\"input mb-3\"\n defaultValue={defaultPath}\n type=\"text\"\n data-test=\"inputPathTreeTest\"\n />\n {children}\n <div className=\"level-right mt-3\">\n <button\n type=\"button\"\n className=\"button is-danger\"\n onClick={onCancel}\n data-test=\"btnCancelModalTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </button>\n &nbsp;&nbsp;\n <button\n type=\"submit\"\n className=\"button is-success\"\n data-test=\"btnConfirmModalTest\"\n >\n {intl.formatMessage(genericMessages.confirm)}\n </button>\n </div>\n </form>\n </Modal>\n )\n}\n","import { useCallback, useState } from 'react'\n\nexport default function useSetState<T>(\n initialState\n): [T, (value: Partial<T>) => void] {\n const [state, set] = useState<T>(initialState)\n const setState = useCallback(\n (patch) => {\n set((prevState) =>\n Object.assign(\n {},\n prevState,\n patch instanceof Function ? patch(prevState) : patch\n )\n )\n },\n [set]\n )\n\n return [state, setState]\n}\n","import { useTraversal } from '../contexts'\nimport useSetState from './useSetState'\n\ninterface State<T = unknown> {\n loading?: boolean\n isError?: boolean\n errorMessage?: string\n result?: T\n response?: unknown\n}\nconst initial: State = {\n loading: undefined,\n isError: false,\n errorMessage: undefined,\n result: undefined,\n response: undefined,\n}\n\nconst getErrorMessage = (dataError, defaultValue) => {\n if (dataError && dataError.details) {\n return dataError.details\n } else if (dataError && dataError.reason) {\n return dataError.reason\n }\n return defaultValue\n}\n\nconst processResponse = async (res, ready_body = true) => {\n if (res.status < 400)\n return {\n isError: false,\n loading: false,\n result: ready_body ? await res.json() : res.status,\n response: res,\n }\n else\n return {\n isError: true,\n loading: false,\n errorMessage: getErrorMessage(await res.json(), res.status),\n response: res,\n }\n}\n\nconst patch = (setState, Ctx) => async (\n data,\n endpoint = undefined,\n body = false\n): Promise<State> => {\n setState({ loading: true })\n let newState: State = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.patch(path, data)\n newState = await processResponse(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n}\n\nconst del = (setState, Ctx) => async (\n data = {},\n endpoint = undefined,\n body = false\n): Promise<State> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.delete(path, data)\n newState = await processResponse(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n}\n\nconst post = (setState, Ctx) => async (\n data,\n endpoint = undefined,\n body = true\n): Promise<State> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.post(path, data)\n newState = await processResponse(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n}\n\nconst get = (setState, Ctx) => async (endpoint = undefined): Promise<State> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.get(path)\n newState = await processResponse(res, true)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n\n setState(newState)\n return newState\n}\n\nexport function useCrudContext<T>() {\n const Ctx = useTraversal()\n const [state, setState] = useSetState<State<T>>(initial)\n\n return {\n ...state,\n Ctx,\n patch: patch(setState, Ctx),\n del: del(setState, Ctx),\n post: post(setState, Ctx),\n get: get(setState, Ctx),\n }\n}\n","import { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { useCrudContext } from '../hooks/useCrudContext'\n\ninterface Props {\n type: string\n}\n\nexport function AddItem(props: Props) {\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const { type } = props\n const { getForm } = Ctx.registry\n\n const Form = getForm(type)\n\n const setActive = () => {\n Ctx.cancelAction()\n }\n\n async function doSubmit(data) {\n const form = Object.assign(\n {},\n { '@type': type },\n data.formData ? data.formData : data\n )\n\n const { isError, errorMessage } = await post(form)\n if (!isError) {\n Ctx.flash('Content created!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n Ctx.refresh()\n }\n\n return (\n <Modal isActive={true} setActive={setActive}>\n <Form\n loading={loading}\n onSubmit={doSubmit}\n onError={(err) => console.log(err)}\n actionName={'Add ' + type}\n title={'Add ' + type}\n type={type}\n dataTest={`formAdd${type}Test`}\n />\n </Modal>\n )\n}\n","import { useRef } from 'react'\nimport { GuillotinaSchemaProperty } from '../types/guillotina'\n\nexport const Permissions: string[] = [\n 'guillotina.AddContent',\n 'guillotina.ModifyContent',\n 'guillotina.ViewContent',\n 'guillotina.DeleteContent',\n 'guillotina.AccessContent',\n 'guillotina.SeePermissions',\n 'guillotina.ChangePermissions',\n 'guillotina.MoveContent',\n 'guillotina.DuplicateContent',\n 'guillotina.ReadConfiguration',\n 'guillotina.RegisterConfigurations',\n 'guillotina.WriteConfiguration',\n 'guillotina.ManageAddons',\n 'guillotina.swagger.View',\n]\n\ninterface IConfig {\n DisabledTypes: string[]\n PageSize: number\n DelayActions: number\n Permissions: string[]\n SearchEngine: string\n SizeImages?: string[]\n icons?: string[]\n properties_default?: string[]\n properties_ignore_fields?: string[]\n fieldHaveDeleteButton: (schema: GuillotinaSchemaProperty) => boolean\n}\nexport const Config: IConfig = {\n DisabledTypes: ['UserManager', 'GroupManager'],\n PageSize: 10,\n DelayActions: 200,\n Permissions: Permissions,\n SearchEngine: 'PostreSQL', // Elasticsearch\n fieldHaveDeleteButton: (schema) => {\n return (\n schema?.widget === 'file' ||\n schema?.widget === 'select' ||\n schema?.type === 'array'\n )\n },\n}\n\nlet calculated = Object.assign({}, Config)\n\nconst addConfig = (additional: Partial<IConfig>, original: IConfig) => {\n const rest = Object.assign({}, original)\n Object.keys(additional).forEach((item) => {\n if (typeof Config[item] === 'object' && Array.isArray(Config[item])) {\n rest[item] = [].concat(Config[item], additional[item])\n } else if (typeof Config[item] === 'object') {\n rest[item] = Object.assign({}, Config[item], additional[item])\n } else {\n rest[item] = additional[item]\n }\n })\n return rest\n}\n\nexport function useConfig(cfg = {}) {\n const ref = useRef<unknown>()\n if (cfg && !ref.current) {\n calculated = addConfig(cfg, calculated)\n ref.current = calculated\n }\n return calculated\n}\n","import { Confirm } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { sleep } from '../lib/helpers'\nimport { useConfig } from '../hooks/useConfig'\nimport { ItemModel } from '../models'\nimport { useState } from 'react'\n\ninterface Props {\n items: ItemModel[]\n}\nexport function RemoveItems(props: Props) {\n const Ctx = useTraversal()\n const cfg = useConfig()\n const [loading, setLoading] = useState(false)\n const { items = [] } = props\n const last = items[items.length - 1]['@name']\n const itemsNames = items\n .map((item) => item['@name'])\n .join(', ')\n .replace(`, ${last}`, ` and ${last}`)\n\n async function removeItems() {\n const errors = []\n setLoading(true)\n\n const actions = items.map(async (item) => {\n const res = await Ctx.client.delete(`${Ctx.path}${item['@name']}`)\n if (!res.ok) {\n const err = await res.json()\n errors.push(err)\n }\n })\n // this sleep is here, to let elasticsearch, wait for\n // index our operations... (will work 99% of use cases)\n actions.push(sleep(cfg.DelayActions))\n\n await Promise.all(actions)\n\n if (errors.length === 0) {\n Ctx.flash(`Items removed!`, 'success')\n Ctx.refresh()\n } else {\n const errorstr = errors.map((err) => JSON.stringify(err)).join('\\n')\n Ctx.flash(`Something went wrong!! ${errorstr}`, 'danger')\n }\n setLoading(false)\n Ctx.cancelAction()\n }\n\n return (\n <Confirm\n loading={loading}\n onCancel={() => Ctx.cancelAction()}\n onConfirm={removeItems}\n message={`Are you sure to remove: ${itemsNames}?`}\n />\n )\n}\n","import { ChangeEvent, useEffect, useRef, useState } from 'react'\nimport { classnames } from '../../lib/helpers'\n\ninterface Props {\n className?: string\n classNameInput?: string\n loading?: boolean\n indeterminate?: boolean\n backgroundColor?: string\n borderColor?: string\n dataTest?: string\n onChange: (value: boolean) => void\n id?: string\n disabled?: boolean\n checked?: boolean\n children?: React.ReactNode\n placeholder?: string\n}\n\nexport const Checkbox = ({\n id,\n className,\n classNameInput,\n loading,\n disabled,\n indeterminate = false,\n checked,\n children,\n placeholder,\n onChange,\n dataTest,\n}: Props) => {\n const inputRef = useRef(null)\n const [state, setState] = useState<boolean>(checked)\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate\n }\n }, [indeterminate])\n\n const updateState = (ev: ChangeEvent<HTMLInputElement>) => {\n setState(ev.target.checked)\n onChange(ev.target.checked)\n }\n\n return (\n <div className=\"field\">\n <label htmlFor={id} className={classnames(['checkbox', className])}>\n <input\n ref={inputRef}\n disabled={disabled || loading}\n id={id}\n type=\"checkbox\"\n className={classnames(['checkbox', classNameInput])}\n checked={state}\n onChange={updateState}\n data-test={dataTest}\n />\n {children || placeholder}\n </label>\n </div>\n )\n}\n","import PropTypes from 'prop-types'\nimport { classnames } from '../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n id?: string\n className?: string\n}\n\nconst ErrorZone = ({ children, id, className = '' }: Props) => {\n return (\n <p className={classnames(['help is-danger', className])} id={id}>\n {children}\n </p>\n )\n}\n\nErrorZone.propTypes = {\n children: PropTypes.node,\n id: PropTypes.string,\n className: PropTypes.string,\n}\n\nexport default ErrorZone\n","import { useEffect, useState } from 'react'\n\nconst applyValidators = (value, validators) => {\n const validation = Array.isArray(validators) ? validators : [validators]\n let result = true\n validation.forEach((func) => {\n if (func && func(value) === false) {\n result = false\n }\n })\n return result\n}\n\nconst useInput = (onChange, value, validator) => {\n const [state, setState] = useState({ hasError: false, value: value })\n\n const onUpdate = (ev) => {\n const value = ev && ev.target ? ev.target.value : ev ? ev : ''\n setState({ value, hasError: false })\n if (onChange) onChange(value)\n }\n\n const onBlur = () => {\n const hasError = applyValidators(state.value, validator) === false\n if (hasError) setState({ value: state.value, hasError })\n }\n\n const onFocus = () => {\n if (state.hasError) {\n setState({ value: state.value, hasError: false })\n }\n }\n\n useEffect(() => {\n setState({ value, hasError: false })\n }, [value])\n\n return {\n onChange: onUpdate,\n onFocus,\n onBlur,\n state,\n }\n}\n\nexport default useInput\n","// From github.com/protonmail/proton-shared\n\n/* eslint-disable no-useless-escape */\nexport const REGEX_EMAIL = /(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/i\nexport const REGEX_URL = /((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)/\nexport const REGEX_HEX_COLOR = /^#([a-f0-9]{3,4}|[a-f0-9]{4}(?:[a-f0-9]{2}){1,2})\\b$/i\nexport const REGEX_NUMBER = /^\\d+$/\n\nexport const isEmpty = (value = '') => !value.length\nexport const maxLength = (value = '', limit = 0) => value.length <= limit\nexport const minLength = (value = '', limit = 0) => value.length >= limit\nexport const isEmail = (value = '') => REGEX_EMAIL.test(value)\nexport const isURL = (value = '') => REGEX_URL.test(value)\nexport const isHexColor = (value = '') => REGEX_HEX_COLOR.test(value)\nexport const isNumber = (value = '') => REGEX_NUMBER.test(value)\nexport const notEmpty = (value) => !!value.length\n","import { forwardRef, useRef, useState } from 'react'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport ErrorZone from '../error_zone'\nimport useInput from '../../hooks/useInput'\nimport { notEmpty } from '../../lib/validators'\nimport { useEffect } from 'react'\n\nconst noop = () => true\ninterface Props {\n name?: string\n icon?: JSX.Element\n iconPosition?: 'has-icons-left' | 'has-icons-right'\n error?: string\n errorZoneClassName?: string\n autoComplete?: string\n className?: string\n widget?: string\n loading?: boolean\n validator?: ((value: string) => boolean) | ((value: string) => boolean)[]\n errorMessage?: string\n dataTest?: string\n autofocus?: boolean\n onChange?: (value: string) => void\n type?: string\n value?: string\n required?: boolean\n id?: string\n placeholder?: string\n disabled?: boolean\n onKeyUp?: (event: React.KeyboardEvent<HTMLInputElement>) => void\n}\n\nexport const Input = forwardRef<HTMLInputElement, Props>(\n (\n {\n icon,\n iconPosition = 'has-icons-right',\n error,\n errorZoneClassName,\n autoComplete = 'off',\n className = '',\n widget = 'input',\n type = 'text',\n loading = false,\n required = false,\n id,\n placeholder,\n value,\n autofocus = false,\n onChange,\n validator = noop,\n errorMessage,\n dataTest = 'testInput',\n disabled,\n onKeyUp,\n },\n ref\n ) => {\n let validatorFn = null\n if (required) {\n validatorFn = Array.isArray(validator)\n ? validator.push(notEmpty)\n : [validator, notEmpty]\n }\n\n const { state, ...handlers } = useInput(onChange, value ?? '', validatorFn)\n const [uid] = useState(generateUID('input'))\n const [mounted, setMounted] = useState(false)\n // eslint-disable-next-line\n ref = ref || useRef()\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n useEffect(() => {\n if (autofocus && !error && ref != null && typeof ref !== 'function') {\n ref.current.focus()\n }\n }, [mounted, autofocus, ref, error])\n\n const theError = state.hasError ? errorMessage || 'invalid field' : ''\n const statusClasses = state.hasError ? 'is-danger' : ''\n\n const cssControl = () => (icon ? ['control', iconPosition] : ['control'])\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classnames(cssControl())}>\n <input\n className={classnames([widget, className, statusClasses])}\n aria-describedby={uid}\n id={id}\n ref={ref}\n type={type}\n value={state.value}\n placeholder={placeholder}\n autoComplete={autoComplete}\n disabled={loading || disabled}\n required={required}\n data-test={dataTest}\n onKeyUp={onKeyUp}\n {...handlers}\n />\n {icon && icon}\n </div>\n <ErrorZone className={errorZoneClassName} id={uid}>\n {state.hasError ? theError : ''}\n </ErrorZone>\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\nexport default Input\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n icon: string\n className?: string\n align?: string\n}\n\nexport const Icon = ({ icon, className, align }: Props) => {\n const addClass = className ? className.split(' ') : [className]\n\n align = align || 'is-right'\n\n return (\n <span className={classnames(['icon', align, ...addClass])}>\n <i className={icon}></i>\n </span>\n )\n}\n","import { Input } from './input'\nimport { isEmail } from '../../lib/validators'\nimport { Icon } from '../ui/icon'\nimport { useIntl } from 'react-intl'\n\ninterface Props {\n value?: string\n dataTest?: string\n onChange?: (value: string) => void\n placeholder?: string\n id?: string\n}\nexport const EmailInput = ({\n value = '',\n dataTest,\n placeholder,\n id,\n onChange,\n}: Props) => {\n const intl = useIntl()\n return (\n <Input\n type=\"email\"\n validator={isEmail}\n errorMessage={intl.formatMessage({\n id: 'invalid_email',\n defaultMessage: 'Invalid email',\n })}\n value={value}\n dataTest={dataTest}\n icon={<Icon icon=\"fas fa-envelope\" />}\n id={id}\n placeholder={placeholder}\n onChange={onChange}\n />\n )\n}\n","import { noop } from '../../lib/helpers'\nimport { classnames } from '../../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n className?: string\n onSubmit?: (event: React.FormEvent<HTMLFormElement>) => void\n onReset?: (event: React.FormEvent<HTMLFormElement>) => void\n autoComplete?: string\n title?: string\n error?: string\n dataTest?: string\n}\nexport const Form = ({\n children,\n className = '',\n onSubmit = noop,\n onReset = noop,\n autoComplete = 'off',\n title,\n error,\n dataTest,\n}: Props) => {\n const handleSubmit = (event) => {\n event.preventDefault()\n onSubmit(event)\n }\n return (\n <div data-test={dataTest}>\n {title && (\n <div className=\"level\">\n <h1 className=\"title is-size-4\">{title}</h1>\n </div>\n )}\n {error && <div className=\"notification is-danger\">{error}</div>}\n <form\n onSubmit={handleSubmit}\n onReset={onReset}\n autoComplete={autoComplete}\n className={classnames(['form', className])}\n >\n {children}\n </form>\n </div>\n )\n}\n","import { InputHTMLAttributes } from 'react'\nimport { Input } from './input'\n\ninterface Props {\n value: string\n dataTest: string\n onChange: (value: string) => void\n}\n\nexport const PasswordInput = ({\n value,\n dataTest,\n onChange,\n}: Props & InputHTMLAttributes<HTMLInputElement>) => {\n return (\n <Input\n value={value}\n type=\"password\"\n dataTest={dataTest}\n onChange={onChange}\n />\n )\n}\n","import { Form } from './form'\nimport { Input } from './input'\nimport { EmailInput } from './email'\nimport { PasswordInput } from './password'\nimport { Button } from './button'\nimport { Checkbox } from './checkbox'\nimport { generateUID } from '../../lib/helpers'\nimport { Children, cloneElement, isValidElement, useRef } from 'react'\nimport { IndexSignature } from '../../types/global'\nimport {\n GuillotinaSchema,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\n\nconst formComponents = {\n string: Input,\n password: PasswordInput,\n boolean: Checkbox,\n email: EmailInput,\n}\n\ninterface Props {\n schema: GuillotinaSchema\n formData?: any\n onSubmit: (formData: any, initialData: any) => void\n actionName: string\n children?: React.ReactNode\n exclude?: string[]\n remotes?: IndexSignature\n submitButton?: boolean\n}\n\nexport function FormBuilder({\n schema,\n formData,\n onSubmit,\n actionName,\n children,\n exclude = [],\n remotes = {},\n submitButton = true,\n}: Props) {\n const ref = useRef<unknown>()\n const { properties, required } = schema\n const values = Object.assign({}, formData || {})\n\n // build initial state\n const initialState = {}\n const fields = Object.keys(properties).filter((x) => !exclude.includes(x))\n\n fields.forEach((element) => {\n initialState[element] = values[element] || undefined\n })\n\n // Register remotes\n if (!ref.current) {\n ref.current = {}\n Object.keys(remotes).forEach((item) => (ref.current[item] = remotes[item]))\n } else {\n // apply remote changes\n Object.keys(remotes).forEach((key) => {\n if (JSON.stringify(ref.current[key]) !== JSON.stringify(remotes[key])) {\n ref.current[key] = remotes[key]\n }\n })\n }\n\n ref.current = ref.current || {}\n const onUpdate = (field) => (ev) => {\n ref.current[field] = ev.target ? ev.target.value : ev.value || ev\n }\n\n const GetTag = ({ field }: { field: string }) => {\n const property = properties[field] as GuillotinaSchemaProperty\n const Tag = formComponents[property.widget || property.type]\n\n const props = {\n value: initialState[field],\n onChange: onUpdate(field),\n placeholder: property.title || '',\n id: generateUID(),\n dataTest: `${field}TestInput`,\n required: false,\n }\n\n if (required.includes(field)) {\n props.required = true\n props.placeholder += ' *'\n }\n Tag.displayName = `${field}Field`\n return <Tag {...props} />\n }\n\n const children_ = Children.map(children, (child) => {\n if (isValidElement(child)) {\n const props = { onChange: onUpdate }\n return cloneElement(child, props)\n }\n return child\n })\n\n const changes = () => {\n onSubmit(ref.current, values)\n }\n\n return (\n <Form onSubmit={changes} dataTest={`formAddUserTest`}>\n {fields.map((field) => (\n <GetTag field={field} key={field} />\n ))}\n {children_}\n {submitButton && <Button>{actionName}</Button>}\n </Form>\n )\n}\n","import ErrorZone from '../error_zone'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { forwardRef, useState } from 'react'\nimport { IndexSignature } from '../../types/global'\n// @ TODO implement hasErrors\n\ninterface Props {\n error?: string\n errorZoneClassName?: string\n size?: number\n placeholder?: string\n id?: string\n className?: string\n classWrap?: string\n disabled?: boolean\n multiple?: boolean\n loading?: boolean\n onChange?: (value: string | string[]) => void\n options: { text: string; value: string }[]\n appendDefault?: boolean\n style?: IndexSignature\n dataTest?: string\n value?: string | string[]\n}\n\nexport const Select = forwardRef<HTMLSelectElement, Props>(\n (\n {\n options,\n error,\n errorZoneClassName,\n size = 1,\n placeholder,\n id,\n className = '',\n classWrap = '',\n multiple = false,\n loading = false,\n onChange,\n appendDefault = false,\n style = {},\n dataTest,\n value,\n disabled,\n },\n ref\n ) => {\n const intl = useIntl()\n const [uid] = useState(generateUID('select'))\n\n const onUpdate = (ev) => {\n if (multiple) {\n let selectValue = []\n for (let i = 0; i < ev.target.selectedOptions.length; i++) {\n selectValue = selectValue.concat([ev.target.selectedOptions[i].value])\n }\n onChange(selectValue)\n } else {\n onChange(ev.target.value)\n }\n }\n\n if (appendDefault) {\n options = [\n { text: intl.formatMessage(genericMessages.choose), value: '' },\n ].concat(options)\n }\n const statusClasses = error ? 'is-danger' : ''\n\n const cssWrap = [\n 'select',\n statusClasses,\n multiple ? 'is-multiple' : '',\n classWrap,\n ]\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classnames(cssWrap)}>\n <select\n className={classnames(['', className])}\n size={multiple ? 5 : size}\n multiple={multiple}\n disabled={loading || disabled}\n onChange={onUpdate}\n ref={ref}\n style={style}\n data-test={dataTest}\n value={value}\n >\n {options.map(({ text, ...rest }, index) => (\n <option key={index.toString()} {...rest}>\n {text}\n </option>\n ))}\n </select>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </div>\n )\n }\n)\n\nSelect.displayName = 'Select'\nexport default Select\n","import { IndexSignature } from '../types/global'\nimport { stringToSlug } from './helpers'\n\nexport const formatDate = (str: string): string => {\n const d = new Date(str)\n const minutes = d.getMinutes() < 10 ? `0${d.getMinutes()}` : d.getMinutes()\n return `${d.getDate()}/${\n d.getMonth() + 1\n }/${d.getFullYear()} ${d.getHours()}:${minutes}`\n}\n\nexport const get = <T>(\n obj: IndexSignature,\n path: string | string[],\n defValue\n): T => {\n // If path is not defined or it has false value\n if (!path) return undefined\n // Check if path is string or array. Regex : ensure that we do not have '.' and brackets.\n // Regex explained: https://regexr.com/58j0k\n const pathArray = Array.isArray(path) ? path : path.match(/([^[.\\]])+/g)\n // Find value if exist return otherwise return undefined value;\n return (\n pathArray.reduce((prevObj, key) => prevObj && prevObj[key], obj) ?? defValue\n )\n}\n\nexport function getNewId(id = '') {\n const suffix = '-copy-'\n const rgx = new RegExp(`($|${suffix}\\\\d*)`)\n\n return stringToSlug(id).replace(rgx, (r) => {\n const num = parseInt(r.replace(suffix, '') || '0')\n return `${suffix}${num + 1}`\n })\n}\n","import { useTraversal } from '../contexts'\nimport { GuillotinaVocabulary } from '../types/guillotina'\nimport useSetState from './useSetState'\nimport { useEffect } from 'react'\n\ninterface State {\n data: GuillotinaVocabulary\n loading: boolean\n error: any\n}\nexport function useVocabulary(vocabularyName: string, path: string = null) {\n const traversal = useTraversal()\n\n const [vocabulary, setVocabulary] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n const getPath = () => {\n if (path) return path\n return `${traversal.path}@vocabularies/${vocabularyName}`\n }\n\n useEffect(() => {\n const getVocabulary = async () => {\n if (\n vocabularyName &&\n vocabulary.data === undefined &&\n !vocabulary.loading\n ) {\n try {\n setVocabulary({ loading: true })\n const data = await traversal.client.get(getPath())\n const dataJson = await data.json()\n setVocabulary({ loading: false, data: dataJson })\n } catch (err) {\n setVocabulary({ loading: false, error: err, data: undefined })\n }\n }\n }\n getVocabulary()\n }, [vocabularyName, vocabulary, path])\n\n return vocabulary\n}\n","import { Select } from './select'\nimport { get } from '../../lib/utils'\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { forwardRef } from 'react'\nimport { GuillotinaVocabularyItem } from '../../types/guillotina'\n\ninterface Props {\n vocabularyName: string\n className?: string\n classWrap?: string\n val?: string\n dataTest?: string\n multiple?: boolean\n onChange?: (value: string) => void\n appendDefault?: boolean\n id?: string\n placeholder?: string\n}\nexport const SelectVocabulary = forwardRef<HTMLSelectElement, Props>(\n (\n {\n vocabularyName,\n className,\n classWrap,\n val,\n dataTest,\n multiple,\n onChange,\n id,\n placeholder,\n },\n ref\n ) => {\n const vocabulary = useVocabulary(vocabularyName)\n\n const getOptions = () => {\n if (get<GuillotinaVocabularyItem>(vocabulary, 'data.items', null)) {\n const vocData = vocabulary.data.items.map((item) => {\n return {\n text: item.title,\n value: item.token,\n }\n })\n return vocData\n }\n\n return []\n }\n\n const getProps = () => {\n if (multiple) {\n const currentValue = val || []\n return {\n multiple: true,\n size: 5,\n value: currentValue,\n options: getOptions(),\n }\n }\n\n return {\n value: val ?? '',\n appendDefault: true,\n options: getOptions(),\n }\n }\n\n if (vocabulary.data === undefined || vocabulary.loading) {\n return <div />\n }\n\n return (\n <Select\n {...getProps()}\n className={className}\n classWrap={classWrap || 'is-fullwidth'}\n dataTest={dataTest}\n ref={ref}\n onChange={onChange}\n id={id}\n placeholder={placeholder}\n />\n )\n }\n)\n\nSelectVocabulary.displayName = 'SelectVocabulary'\n","import { useEffect, useRef, useState, useCallback } from 'react'\nimport { IndexSignature } from '../types/global'\n\n// Mostly inspired from\n// https://github.com/molefrog/wouter\n\nconst setURLParams = (p) => {\n return window.history.pushState(\n 0,\n '0',\n '' + '?' + p.toString().replace(/%2F/g, '/')\n )\n}\n\nconst clean = (to) => {\n const current = new URLSearchParams()\n Object.keys(to).forEach((_key) => current.set(_key, to[_key]))\n setURLParams(current)\n}\n\nexport const useLocation = (): [\n URLSearchParams,\n (to: IndexSignature, replace?: boolean) => void,\n (param: string) => void\n] => {\n const [path, update] = useState(currentSearchParams())\n const prevPath = useRef(path)\n\n useEffect(() => {\n patchHistoryEvents()\n\n // this function checks if the location has been changed since the\n // last render and updates the state only when needed.\n // unfortunately, we can't rely on `path` value here, since it can be stale,\n // that's why we store the last pathname in a ref.\n const checkForUpdates = () => {\n const pathname = currentSearchParams()\n prevPath.current !== pathname && update((prevPath.current = pathname))\n }\n\n const events = ['popstate', 'pushState', 'replaceState']\n events.map((e) => window.addEventListener(e, checkForUpdates))\n\n // it's possible that an update has occurred between render and the effect handler,\n // so we run additional check on mount to catch these updates. Based on:\n // https://gist.github.com/bvaughn/e25397f70e8c65b0ae0d7c90b731b189\n checkForUpdates()\n\n return () => {\n events.map((e) => window.removeEventListener(e, checkForUpdates))\n }\n }, [])\n\n // the 2nd argument of the `useLocation` return value is a function\n // that allows to perform a navigation.\n //\n // the function reference should stay the same between re-renders, so that\n // it can be passed down as an element prop without any performance concerns.\n const navigate = useCallback(\n (to, replace) => {\n if (replace) {\n clean(to)\n return\n }\n const current = new URLSearchParams(path.toString())\n Object.keys(to).forEach((_key) => current.set(_key, to[_key]))\n setURLParams(current)\n },\n [path]\n )\n\n const remove = useCallback(\n (param) => {\n const current = new URLSearchParams(path.toString())\n current.delete(param)\n setURLParams(current)\n },\n [path]\n )\n\n return [path, navigate, remove]\n}\n\n// While History API does have `popstate` event, the only\n// proper way to listen to changes via `push/replaceState`\n// is to monkey-patch these methods.\n//\n// See https://stackoverflow.com/a/4585031\n\nlet patched = 0\n\nconst patchHistoryEvents = () => {\n if (patched) return\n ;['pushState', 'replaceState'].map((type) => {\n const original = window.history[type]\n\n window.history[type] = function (...args) {\n const result = original.apply(this, args)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const event: any = new Event(type)\n event.arguments = args\n\n dispatchEvent(event)\n return result\n }\n })\n\n return (patched = 1)\n}\n\nconst currentSearchParams = (path = window.location.search) =>\n new URLSearchParams(path)\n","import { useLocation } from '../hooks/useLocation'\nimport { ItemModel } from '../models'\n\ninterface Props {\n aRef?: React.Ref<HTMLAnchorElement>\n model: ItemModel\n children: React.ReactNode\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void\n}\n\nexport function Link({ aRef, model, children, ...props }: Props) {\n const [path, navigate] = useLocation()\n const aStyle = { textDecoration: 'none', color: 'currentColor' }\n\n function onClick(e) {\n e.stopPropagation()\n if (actAsLink(e)) return\n e.preventDefault()\n navigate({ path: model.path }, true)\n if (props.onClick) props.onClick(e)\n }\n\n return (\n <a\n ref={aRef}\n href={`?${path}${model.id}/`}\n style={aStyle}\n onClick={onClick}\n >\n {children}\n </a>\n )\n}\n\nfunction actAsLink(e) {\n return e.ctrlKey || e.metaKey || e.altKey || e.shiftKey || e.button !== 0\n}\n","import { useRef } from 'react'\nimport { Link } from './Link'\nimport { ItemModel } from '../models'\nimport { IndexSignature } from '../types/global'\n\ninterface Props {\n model: ItemModel\n children: React.ReactNode\n style?: IndexSignature\n}\nexport function TdLink({ model, children, style = {} }: Props) {\n const link = useRef<HTMLAnchorElement>()\n\n function onClick() {\n if (link && link.current) {\n link.current.click()\n }\n }\n\n return (\n <td onClick={onClick} style={style}>\n <Link model={model} aRef={link}>\n {children}\n </Link>\n </td>\n )\n}\n","import { IndexSignature } from '../../types/global'\n\ninterface Props {\n style?: IndexSignature\n}\nexport const Loading = ({ style = {} }: Props) => (\n <div className=\"progress-line\" style={style}></div>\n)\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n name: string\n id: string\n onRemove?: () => void\n size?: string\n color?: string\n}\nexport const Tag = ({\n name,\n id,\n onRemove,\n size = 'is-medium',\n color = 'is-warning',\n}: Props) => (\n <span className={classnames(['tag', color, size])} data-test={`tag-${id}`}>\n {name}\n {onRemove !== undefined && (\n <button className=\"delete is-small\" onClick={() => onRemove()}></button>\n )}\n </span>\n)\n","import { MouseEvent } from 'react'\n\ninterface Props {\n onClick: (event: MouseEvent<HTMLButtonElement>) => void\n className?: string\n children?: React.ReactNode\n}\nexport function Delete({ onClick, className = '', children = null }: Props) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`delete ${className}`}\n data-test=\"btnDeleteTest\"\n >\n {children}\n </button>\n )\n}\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n headers?: string[]\n className?: string\n children: React.ReactNode\n}\nexport function Table({ headers, children, className }: Props) {\n const parsedClassName = className\n ? className.split(' ')\n : ' is-full is-fullwidth is-narrow'.split(' ')\n return (\n <table className={classnames(['table', ...parsedClassName])}>\n <thead>\n <tr>\n {headers &&\n headers.map((item, idx) => <th key={item + idx}>{item}</th>)}\n </tr>\n </thead>\n <tbody>{children}</tbody>\n </table>\n )\n}\n","interface Props {\n isColor?: string\n children: React.ReactNode\n}\nexport function Notification({ isColor = '', children }: Props) {\n return (\n <div className={'notification is-' + isColor} data-test=\"notificationTest\">\n {children}\n </div>\n )\n}\n","import { Auth } from './auth'\n\nexport class RestClient {\n url: string\n container: string\n auth: Auth\n\n constructor(url: string, container: string, auth: Auth) {\n this.auth = auth\n this.url = url\n this.container = container\n }\n\n async request(path, data = undefined, headers = undefined) {\n if (path.indexOf(this.url) !== -1) {\n path = path.replace(this.url, '')\n }\n\n if (this.container !== '/' && path.indexOf(this.container) === -1) {\n path = `${this.container}${path}`\n }\n\n if (!path.startsWith('/')) {\n path = `/${path}`\n }\n data = data || {}\n data.headers = headers || this.getHeaders()\n return await fetch(`${this.url}${path}`, data)\n }\n\n getHeaders() {\n const authToken = this.auth.getToken()\n if (!authToken) return {}\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + authToken,\n }\n }\n\n async post(path, data) {\n return await this.request(path, {\n method: 'post',\n body: JSON.stringify(data),\n })\n }\n\n async get(path) {\n return await this.request(path)\n }\n\n async put(path, data) {\n return await this.request(path, {\n method: 'put',\n body: JSON.stringify(data),\n })\n }\n\n async patch(path, data) {\n return await this.request(path, {\n method: 'PATCH',\n body: JSON.stringify(data),\n })\n }\n\n async upload(path, data) {\n const headers = this.getHeaders()\n delete headers['Content-Type']\n headers['Content-Type'] = data['content-type']\n headers['X-UPLOAD-FILENAME'] = data.filename\n headers['Content-Encoding'] = 'base64'\n return await this.request(\n path,\n {\n method: 'PATCH',\n body: data.data,\n },\n headers\n )\n }\n\n async delete(path, data = undefined) {\n return await this.request(path, {\n method: 'delete',\n body: JSON.stringify(data),\n })\n }\n}\n","const SEP = '='\nconst DEFAULT_FIELD = 'title__in'\nconst CLEANER = '||'\n\nexport function parser(qs: string, defaultField = DEFAULT_FIELD): string[][] {\n if (qs.includes(SEP) && Array.isArray(defaultField)) {\n throw new Error('This option is not supported')\n }\n\n if (Array.isArray(defaultField)) {\n const orParser = []\n defaultField.forEach((field) => {\n const parsed = parser(qs, field)\n orParser.push(buildQs(parsed))\n })\n const result = [['__or', orParser.join('&')]]\n return result\n }\n let lastKey = undefined\n qs.trim()\n\n if (qs.includes('\"')) {\n qs = qs.replace(/\"(\\w+) (\\w+)\"/, `$1${CLEANER}$2`)\n }\n\n const qsSplit = qs.split(' ')\n return qsSplit.map((part) => {\n if (part.includes(CLEANER)) {\n part = part.replace('||', ' ')\n }\n if (!part.includes(SEP)) {\n return !lastKey ? [defaultField, part] : [lastKey, part]\n }\n const [key, val] = part.split(SEP)\n lastKey = key\n return [key, val]\n })\n}\n\nexport function buildQs(parsedQuery: string[][]): string {\n return parsedQuery\n .map(\n ([key, val]) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`\n )\n .join('&')\n}\n","import React from 'react'\nimport { TdLink } from '../components/TdLink'\nimport { Icon } from '../components/ui'\nimport { toQueryString } from './helpers'\nimport { RestClient } from './rest'\nimport { parser } from './search'\nimport { LightFile } from '../types/global'\n\nconst cacheTypes = {}\nconst cacheSchemas = {}\n\nexport class GuillotinaClient {\n rest: RestClient\n pathContainsContainer: boolean\n constructor(rest: RestClient, pathContainsContainer: boolean) {\n this.rest = rest\n this.pathContainsContainer = pathContainsContainer\n }\n\n getContainerFromPath = (path) => {\n if (this.pathContainsContainer) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n const parts = path.split('/')\n return `${parts[0]}/${parts[1]}/`\n }\n return ''\n }\n\n clearContainerFromPath = (path) => {\n if (this.pathContainsContainer) {\n return `/${this.cleanPath(path)}`\n }\n return path\n }\n\n async getContext(path) {\n switch (path) {\n case '/':\n return await this.rest.get('')\n default:\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.get(path)\n }\n }\n\n async get(path) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n return await this.rest.get(path)\n }\n\n getQueryParamsPostresql({ start = 0, pageSize = 10, withDepth = true }) {\n let result = []\n\n result = [\n ...parser(start.toString(), 'b_start'),\n ...parser(pageSize.toString(), 'b_size'),\n ]\n if (withDepth) {\n result = [...result, ...(parser('1', 'depth') ?? [])]\n }\n return result\n }\n\n getQueryParamsElasticsearch({\n start = 0,\n pageSize = 10,\n path,\n withDepth = true,\n }) {\n let result = []\n let containerPath = this.getContainerFromPath(path)\n\n if (containerPath.startsWith('/')) {\n containerPath = containerPath.slice(1)\n }\n let objectPath = path.replace(containerPath, '')\n if (objectPath.endsWith('/')) {\n objectPath = objectPath.slice(0, -1)\n }\n\n result = [\n ...parser(start.toString(), '_from'),\n ...parser(pageSize.toString(), 'size'),\n ...parser('*', '_metadata'),\n ]\n\n if (withDepth) {\n result = [...result, ...(parser('1', 'depth') ?? [])]\n }\n if (objectPath !== '') {\n result = [...result, ...parser(objectPath, 'path__wildcard')]\n }\n return result\n }\n\n getItemsColumn() {\n const smallcss = { width: 25 }\n const mediumcss = { width: 120 }\n\n return [\n {\n label: '',\n isSortable: false,\n child: (m) => <td style={smallcss}>{<Icon icon={m.icon} />}</td>,\n },\n {\n label: 'type',\n key: 'type_name',\n isSortable: false,\n child: (m) => (\n <TdLink style={smallcss} model={m}>\n <span className=\"tag\">{m.type}</span>\n </TdLink>\n ),\n },\n {\n label: 'id/name',\n key: 'title',\n isSortable: true,\n child: (m, navigate, search) => (\n <TdLink model={m}>\n {m.name}\n {search && (\n <React.Fragment>\n <br />\n <span className=\"is-size-7 tag is-light\">{m.path}</span>\n </React.Fragment>\n )}\n </TdLink>\n ),\n },\n {\n label: 'created',\n key: 'creation_date',\n isSortable: true,\n child: (m) => {\n return (\n <td style={mediumcss} className=\"is-size-7 is-vcentered\">\n {m.created}\n </td>\n )\n },\n },\n {\n label: 'modified',\n key: 'modification_date',\n isSortable: true,\n child: (m) => (\n <td style={mediumcss} className=\"is-size-7 is-vcentered\">\n {m.updated}\n </td>\n ),\n },\n ]\n }\n\n // BBB API changes. Compat G5 and G6\n applyCompat(data) {\n data.member = data.items\n data.items_count = data.items_total\n return data\n }\n\n async search(\n path: string,\n params: string | string[][],\n container = false,\n prepare = true\n ) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n\n if (container) {\n path = this.getContainerFromPath(path)\n }\n\n const query = prepare ? toQueryString(params as string[][]) : params\n const url = `${path}@search?${query}`\n const res = await this.rest.get(url)\n const data = await res.json()\n return this.applyCompat(data)\n }\n\n async canido(path, permissions) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n if (Array.isArray(permissions)) {\n permissions.join(',')\n }\n const url = `${path}@canido?permissions=${permissions}`\n return await this.rest.get(url)\n }\n\n async createObject(path, data) {\n return await this.rest.post(path, data)\n }\n\n cleanPath(path) {\n const url = path.split('/').slice(3)\n return `${url.join('/')}`\n }\n\n async delete(path, data) {\n return await this.rest.delete(path, data)\n }\n\n async create(path, data) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.post(path, data)\n }\n\n async post(path, data) {\n return await this.create(path, data)\n }\n\n async patch(path, data) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.patch(path, data)\n }\n\n async upload(path, file) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.upload(path, file)\n }\n\n async download(path) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.get(path)\n }\n\n async getTypeSchema(path, name) {\n if (!cacheSchemas[name]) {\n const url = this.getContainerFromPath(path)\n // todo: handle db case (only addable containers)\n const res = await this.rest.get(`${url}@types/${name}`)\n cacheSchemas[name] = await res.json()\n }\n return cacheSchemas[name]\n }\n\n async getAddons(path) {\n return await this.rest.get(`${path}@addons`)\n }\n\n async installAddon(path, key) {\n return await this.rest.post(`${path}@addons`, { id: key })\n }\n\n async removeAddon(path, key) {\n return await this.rest.delete(`${path}@addons`, { id: key })\n }\n\n async getGroups(path) {\n const endpoint = `${this.getContainerFromPath(path)}@groups`\n return await this.rest.get(endpoint)\n }\n\n async getUsers(path) {\n const endpoint = `${this.getContainerFromPath(path)}@users`\n return await this.rest.get(endpoint)\n }\n\n async getPrincipals(path) {\n const groups = this.getGroups(path)\n const users = this.getUsers(path)\n const [gr, usr] = await Promise.all([groups, users])\n\n return {\n groups: gr.ok ? await gr.json() : [],\n users: usr.ok ? await usr.json() : [],\n }\n }\n\n async getRoles(path) {\n const endpoint = `${this.getContainerFromPath(path)}@available-roles`\n return await this.rest.get(endpoint)\n }\n\n async getAllPermissions(path) {\n // paths used to query the API always has to start without a \"/\"\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n const req = await this.rest.get(path + '@all_permissions')\n const resp = await req.json()\n const permissions = Array.from(new Set(extractPermissions(resp)))\n return permissions\n }\n\n async getTypes(path) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n if (!cacheTypes[path]) {\n const types = await this.rest.get(path + '@addable-types')\n if (types.status === 401 || types.status === 404) {\n cacheTypes[path] = []\n } else {\n const res = await types.json()\n cacheTypes[path] = res\n }\n }\n return cacheTypes[path]\n }\n}\n\nexport function getClient(url, container, auth) {\n return new GuillotinaClient(\n new RestClient(url, container, auth),\n container === '/'\n )\n}\n\nexport const lightFileReader = (file) => {\n return new Promise<LightFile>((resolve) => {\n const reader = new FileReader()\n reader.readAsArrayBuffer(file)\n reader.onloadend = (e) => {\n const fileData = e.target.result\n resolve({\n filename: file.name.normalize('NFD').replace(/[\\u0300-\\u036f]/g, ''),\n data: fileData,\n 'content-type': file.type,\n })\n }\n })\n}\n\nconst extractPermissions = (data) => {\n let result = []\n if (typeof data !== 'object') {\n // do nothing\n } else if (!Array.isArray(data) && data.permission) {\n result = result.concat([data.permission])\n } else if (!Array.isArray(data)) {\n Object.keys(data).map(\n (key) => (result = result.concat(extractPermissions(data[key])))\n )\n } else if (Array.isArray(data)) {\n data.map((item) => (result = result.concat(extractPermissions(item))))\n }\n return result\n}\n","import { ChangeEvent, InputHTMLAttributes } from 'react'\nimport { lightFileReader } from '../../lib/client.js'\nimport { useIntl } from 'react-intl'\nimport { LightFile } from '../../types/global'\n\ninterface Props {\n label?: string\n dataTest?: string\n onChange: (file: LightFile) => void\n}\nexport function FileUpload({\n label,\n onChange,\n dataTest,\n}: Props & InputHTMLAttributes<HTMLInputElement>) {\n const intl = useIntl()\n const changed = async (event: ChangeEvent<HTMLInputElement>) => {\n const fileToUpload = await lightFileReader(event.target.files[0])\n onChange(fileToUpload)\n }\n\n return (\n <div className=\"file\">\n <label className=\"file-label\">\n <input\n className=\"file-input\"\n type=\"file\"\n name=\"file\"\n onChange={changed}\n data-test={dataTest}\n />\n <span className=\"file-cta\">\n <span className=\"file-icon\">\n <i className=\"fas fa-upload\"></i>\n </span>\n <span className=\"file-label\">\n {label ||\n intl.formatMessage({\n id: 'choose_file',\n defaultMessage: 'Choose a file',\n })}\n </span>\n </span>\n </label>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport { forwardRef, useState } from 'react'\n\ninterface Props {\n value: string\n classWrap?: string\n rows?: number\n className?: string\n onChange?: (value: string) => void\n dataTest?: string\n error?: string\n errorZoneClassName?: string\n placeholder?: string\n id?: string\n}\nexport const Textarea = forwardRef<HTMLTextAreaElement, Props>(\n (\n {\n value = '',\n classWrap = '',\n rows = 5,\n className = '',\n onChange,\n dataTest,\n error,\n errorZoneClassName,\n placeholder,\n id,\n },\n ref\n ) => {\n const [uid] = useState(generateUID('select'))\n\n const onUpdate = (ev) => {\n if (onChange) {\n onChange(ev.target.value)\n }\n }\n const statusClasses = error ? 'is-danger' : ''\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classWrap}>\n <textarea\n className={classnames(['textarea', className, statusClasses])}\n rows={rows}\n onChange={onUpdate}\n value={value}\n data-test={dataTest}\n ref={ref}\n />\n </div>\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n </div>\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\nexport default Textarea\n","import { useEffect, useRef } from 'react'\n\nconst defaultEvents = ['mousedown', 'touchstart']\nconst on = (obj, ...args) => obj.addEventListener(...args)\nconst off = (obj, ...args) => obj.removeEventListener(...args)\n\nexport default function useClickAway(ref, onClickAway, events = defaultEvents) {\n const savedCallback = useRef(onClickAway)\n\n useEffect(() => {\n savedCallback.current = onClickAway\n }, [onClickAway])\n\n useEffect(() => {\n const handler = (event) => {\n const { current: el } = ref\n el && !el.contains(event.target) && savedCallback.current(event)\n }\n\n for (const eventName of events) {\n on(document, eventName, handler)\n }\n\n return () => {\n for (const eventName of events) {\n off(document, eventName, handler)\n }\n }\n }, [events, ref])\n}\n","import { useState, useEffect, useCallback, useRef } from 'react'\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport useSetState from '../../hooks/useSetState'\nimport ErrorZone from '../error_zone'\nimport { Loading } from '../ui'\nimport { generateUID } from '../../lib/helpers'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport useClickAway from '../../hooks/useClickAway'\nimport { get } from '../../lib/utils'\nimport { SearchItem } from '../../types/guillotina'\nimport { Traversal } from '../../contexts'\n\nfunction debounce(func, wait) {\n let timeout\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context = this\n // eslint-disable-next-line prefer-rest-params\n const args = arguments\n const later = function () {\n timeout = null\n func.apply(context, args)\n }\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n }\n}\n\ninterface State {\n page: number\n items: SearchItem[]\n loading: boolean\n items_total: number\n}\nconst initialState: State = {\n page: 0,\n items: undefined,\n loading: false,\n items_total: 0,\n}\n\ninterface Props {\n onChange?: (value: string) => void\n error?: string\n errorZoneClassName?: string\n traversal?: Traversal\n path?: string\n qs?: string[][]\n queryCondition?: string\n value?: string\n btnClass?: string\n dataTestWrapper?: string\n dataTestSearchInput?: string\n dataTestItem?: string\n renderTextItemOption?: (item: SearchItem) => string\n typeNameQuery?: string\n labelProperty?: string\n}\n\nexport const SearchInput = ({\n onChange,\n error,\n errorZoneClassName,\n traversal = null,\n path = null,\n qs = [],\n queryCondition = 'id__in',\n value,\n btnClass = '',\n dataTestWrapper = 'wrapperSearchInputTest',\n dataTestSearchInput = 'searchInputTest',\n dataTestItem = 'searchInputItemTest',\n renderTextItemOption = null,\n typeNameQuery = null,\n labelProperty = 'id',\n}: Props) => {\n const intl = useIntl()\n const [options, setOptions] = useSetState<State>(initialState)\n const [isOpen, setIsOpen] = useState(false)\n const [searchTerm, setSearchTerm] = useState('')\n const inputRef = useRef(null)\n const wrapperRef = useRef(null)\n const { PageSize, SearchEngine } = useConfig()\n const [valueLabel, setValueLabel] = useState<Partial<SearchItem>>(undefined)\n const [uid] = useState(generateUID('search_input'))\n\n useClickAway(wrapperRef, () => {\n setIsOpen(false)\n })\n\n const getHeight = () => {\n if (wrapperRef && wrapperRef.current) {\n return {\n maxHeight: `${\n window.innerHeight -\n wrapperRef.current.getBoundingClientRect().top -\n 100\n }px`,\n }\n }\n return { maxHeight: 'auto' }\n }\n\n const delayedQuery = useCallback<(value: string) => void>(\n debounce((value) => handleSearch(0, false, value), 500),\n []\n )\n\n const inicializeLabels = async () => {\n if (labelProperty !== 'id' && value) {\n let searchTermQs = ''\n const searchTermParsed = [`id`, value]\n const { get: getSearch } = traversal.registry\n const fnName = getSearch('searchEngineQueryParamsFunction', SearchEngine)\n const qsParsed = traversal.client[fnName]({\n path: traversal.path,\n start: 0,\n pageSize: PageSize,\n withDepth: false,\n })\n let typeNameParsed = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ])\n }\n const data = await traversal.client.search(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newValuesLabel = data.items.reduce((result, item) => {\n result[item.id] = get(item, labelProperty, item.id)\n return result\n }, {})\n setValueLabel(newValuesLabel)\n }\n }\n\n const handleSearch = async (page = 0, concat = false, value = '') => {\n setOptions({ loading: true })\n let searchTermQs = ''\n let searchTermParsed = []\n if (value !== '') {\n searchTermParsed = parser(`${queryCondition}=${value}`)\n }\n const { get } = traversal.registry\n const fnName = get('searchEngineQueryParamsFunction', SearchEngine)\n const qsParsed = traversal.client[fnName]({\n path: traversal.path,\n start: page * PageSize,\n pageSize: PageSize,\n withDepth: false,\n })\n const sortParsed = parser(`_sort_des=${labelProperty}`)\n let typeNameParsed = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n ...searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ...sortParsed,\n ])\n }\n\n const data = await traversal.client.search(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newItems =\n options.items && concat ? [...options.items, ...data.items] : data.items\n\n setOptions({\n items: newItems ?? [],\n loading: false,\n items_total: data.items_total ?? 0,\n page: page,\n })\n }\n\n const renderTextItemOptionFn = (item) => {\n if (renderTextItemOption) {\n return renderTextItemOption(item)\n }\n return get(item, labelProperty, item.title) || item['@name']\n }\n\n useEffect(() => {\n if (value) {\n inicializeLabels()\n } else {\n setValueLabel({})\n }\n }, [path, value])\n\n if (valueLabel === undefined) {\n return <div className=\"spinner\" />\n }\n\n return (\n <>\n <div\n data-test={dataTestWrapper}\n ref={wrapperRef}\n className={`dropdown mb-2 ${isOpen ? 'is-active' : ''}`}\n onBlur={(ev) => {\n if (!ev.currentTarget.contains(ev.relatedTarget)) {\n if (searchTerm !== '') {\n setSearchTerm('')\n setOptions(initialState)\n }\n setIsOpen(false)\n }\n }}\n >\n <div className=\"dropdown-trigger\">\n <button\n className={`button ${btnClass}`}\n onClick={(ev) => {\n ev.preventDefault()\n if (ev.target instanceof HTMLElement) {\n ev.target.blur()\n }\n\n setIsOpen(!isOpen)\n if (!options.loading && !options.items) {\n handleSearch(options.page)\n }\n }}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <span>\n {value\n ? get(valueLabel, value, value)\n : intl.formatMessage(genericMessages.choose)}\n </span>\n <span className=\"icon\">\n <i className=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </div>\n <div\n className=\"dropdown-menu\"\n id=\"dropdown-menu\"\n role=\"menu\"\n style={getHeight()}\n >\n <div className=\"dropdown-content\">\n <div className=\"dropdown-item\">\n <input\n ref={inputRef}\n data-test={dataTestSearchInput}\n className=\"input\"\n type=\"text\"\n placeholder={intl.formatMessage(genericMessages.search)}\n value={searchTerm}\n onChange={(ev) => {\n delayedQuery(ev.target.value)\n setSearchTerm(ev.target.value)\n }}\n />\n </div>\n <hr className=\"dropdown-divider\" />\n {options.loading && <Loading />}\n {options.items &&\n options.items.map((item) => {\n return (\n <div\n className={`dropdown-item editable ${\n value === item.id ? 'is-active' : ''\n }`}\n data-test={`${dataTestItem}-${item.id}`}\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n if (onChange) {\n onChange(item.id)\n }\n setIsOpen(false)\n }}\n key={item.path}\n >\n {renderTextItemOptionFn(item)}\n </div>\n )\n })}\n\n {options.items && options.items.length === 0 && (\n <div className=\"dropdown-item\">\n {intl.formatMessage(genericMessages.no_results)}\n </div>\n )}\n\n {options.items && options.items_total > options.items.length && (\n <>\n <hr className=\"dropdown-divider\" />\n <div\n className=\"dropdown-item editable\"\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n handleSearch(options.page + 1, true)\n }}\n >\n {intl.formatMessage(genericMessages.load_more)}\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </>\n )\n}\n","import { useState, useCallback, useRef, useEffect } from 'react'\n\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport useSetState from '../../hooks/useSetState'\nimport ErrorZone from '../error_zone'\nimport { Loading } from '../ui'\nimport { generateUID } from '../../lib/helpers'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport useClickAway from '../../hooks/useClickAway'\nimport { get } from '../../lib/utils'\nimport { SearchItem } from '../../types/guillotina'\nimport { Traversal } from '../../contexts'\n\nfunction debounce(func, wait) {\n let timeout\n return function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const context = this\n // eslint-disable-next-line prefer-rest-params\n const args = arguments\n const later = function () {\n timeout = null\n func.apply(context, args)\n }\n clearTimeout(timeout)\n timeout = setTimeout(later, wait)\n }\n}\n\ninterface State {\n page: number\n items: SearchItem[]\n loading: boolean\n items_total: number\n}\nconst initialState: State = {\n page: 0,\n items: undefined,\n loading: false,\n items_total: 0,\n}\n\ninterface Props {\n onChange: (value: string[]) => void\n error?: string\n errorZoneClassName?: string\n traversal?: Traversal\n path?: string\n qs?: string[]\n queryCondition?: string\n value: string[]\n btnClass?: string\n dataTestWrapper?: string\n dataTestSearchInput?: string\n dataTestItem?: string\n renderTextItemOption?: (item: SearchItem) => string\n typeNameQuery?: string\n labelProperty?: string\n}\n\nexport const SearchInputList = ({\n onChange,\n error,\n errorZoneClassName,\n traversal = null,\n path = null,\n qs = [],\n queryCondition = 'id__in',\n value,\n btnClass = '',\n dataTestWrapper = 'wrapperSearchInputTest',\n dataTestSearchInput = 'searchInputTest',\n dataTestItem = 'searchInputItemTest',\n renderTextItemOption = null,\n typeNameQuery = null,\n labelProperty = 'id',\n}: Props) => {\n const intl = useIntl()\n const [options, setOptions] = useSetState<State>(initialState)\n const [valuesLabel, setValuesLabels] = useState(undefined)\n const [isOpen, setIsOpen] = useState(false)\n const [searchTerm, setSearchTerm] = useState('')\n const inputRef = useRef(null)\n const wrapperRef = useRef(null)\n const { PageSize, SearchEngine } = useConfig()\n const [isLoadingData, setIsLoadingData] = useState(false)\n\n const [uid] = useState(generateUID('search_input'))\n\n useClickAway(wrapperRef, () => {\n setIsOpen(false)\n })\n\n const getHeight = () => {\n if (wrapperRef && wrapperRef.current) {\n return {\n maxHeight: `${\n window.innerHeight -\n wrapperRef.current.getBoundingClientRect().top -\n 100\n }px`,\n }\n }\n return { maxHeight: 'auto' }\n }\n\n const delayedQuery = useCallback<(value: string) => void>(\n debounce((value) => handleSearch(0, false, value), 500),\n []\n )\n\n const handleSearch = async (page = 0, concat = false, value = '') => {\n setOptions({ loading: true })\n let searchTermQs = ''\n let searchTermParsed = []\n if (value !== '') {\n searchTermParsed = parser(`${queryCondition}=${value}`)\n }\n const { get } = traversal.registry\n const fnName = get('searchEngineQueryParamsFunction', SearchEngine)\n const qsParsed = traversal.client[fnName]({\n path: traversal.path,\n start: page * PageSize,\n pageSize: PageSize,\n withDepth: false,\n })\n const sortParsed = parser(`_sort_des=${labelProperty}`)\n let typeNameParsed = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n ...searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ...sortParsed,\n ])\n }\n\n const data = await traversal.client.search(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newItems =\n options.items && concat ? [...options.items, ...data.items] : data.items\n\n setOptions({\n items: newItems ?? [],\n loading: false,\n items_total: data.items_total ?? 0,\n page: page,\n })\n }\n\n const inicializeLabels = async () => {\n if (labelProperty !== 'id' && value.length > 0) {\n setIsLoadingData(true)\n let searchTermQs = ''\n const searchTermParsed = ['__or', `id=${value.join('%26id=')}`]\n const { get: getSearch } = traversal.registry\n const fnName = getSearch('searchEngineQueryParamsFunction', SearchEngine)\n const qsParsed = traversal.client[fnName]({\n path: traversal.path,\n start: 0,\n pageSize: 100,\n withDepth: false,\n })\n let typeNameParsed = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ])\n }\n const data = await traversal.client.search(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false,\n 0,\n 100\n )\n const newValuesLabel = data.items.reduce((result, item) => {\n result[item.id] = get(item, labelProperty, item.id)\n return result\n }, {})\n setValuesLabels(newValuesLabel)\n setIsLoadingData(false)\n }\n }\n\n const renderTextItemOptionFn = (\n item: SearchItem\n ): string | React.ReactNode => {\n if (renderTextItemOption) {\n return renderTextItemOption(item)\n }\n return get<string>(item, labelProperty, item.title) || item['@name']\n }\n\n useEffect(() => {\n if (!options.loading && !options.items && value.length > 0) {\n inicializeLabels()\n } else if (value.length === 0) {\n setValuesLabels({})\n }\n }, [path, options.loading, options.items])\n\n if (isLoadingData || valuesLabel === undefined) {\n return <div className=\"spinner\" />\n }\n\n return (\n <>\n <div className=\"tags mb-2\">\n {value.map((tag, index) => (\n <div\n key={`input_list_${tag}_${index}`}\n className=\"tag is-info is-medium\"\n >\n {get(valuesLabel, tag, tag)}\n <button\n className=\"delete is-small\"\n onClick={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n onChange([\n ...value.filter((tag) => value.indexOf(tag) !== index),\n ])\n }}\n ></button>\n </div>\n ))}\n </div>\n <div\n data-test={dataTestWrapper}\n ref={wrapperRef}\n className={`dropdown mb-2 ${isOpen ? 'is-active' : ''}`}\n onBlur={(ev) => {\n if (!ev.currentTarget.contains(ev.relatedTarget)) {\n if (searchTerm !== '') {\n setSearchTerm('')\n setOptions(initialState)\n }\n setIsOpen(false)\n }\n }}\n >\n <div className=\"dropdown-trigger\">\n <button\n className={`button ${btnClass}`}\n onClick={(ev) => {\n ev.preventDefault()\n setIsOpen(!isOpen)\n if (!options.loading && !options.items) {\n handleSearch(options.page)\n }\n }}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <span>{intl.formatMessage(genericMessages.choose)}</span>\n\n <span className=\"icon\">\n <i className=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </div>\n <div\n className=\"dropdown-menu\"\n id=\"dropdown-menu\"\n role=\"menu\"\n style={getHeight()}\n >\n <div className=\"dropdown-content\">\n <div className=\"dropdown-item\">\n <input\n ref={inputRef}\n data-test={dataTestSearchInput}\n className=\"input\"\n type=\"text\"\n placeholder={intl.formatMessage(genericMessages.search)}\n value={searchTerm}\n onChange={(ev) => {\n delayedQuery(ev.target.value)\n setSearchTerm(ev.target.value)\n }}\n />\n </div>\n <hr className=\"dropdown-divider\" />\n {options.loading && <Loading />}\n {options.items &&\n options.items.map((item) => {\n return (\n <div\n className={`dropdown-item editable ${\n value.includes(item.id) ? 'is-active' : ''\n }`}\n data-test={`${dataTestItem}-${item.id}`}\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n if (onChange && !value.includes(item.id)) {\n setValuesLabels({\n ...valuesLabel,\n [item.id]: get(item, labelProperty, item.id),\n })\n onChange([...value, item.id])\n }\n }}\n key={item.path}\n >\n {renderTextItemOptionFn(item)}\n </div>\n )\n })}\n\n {options.items && options.items.length === 0 && (\n <div className=\"dropdown-item\">\n {intl.formatMessage(genericMessages.no_results)}\n </div>\n )}\n\n {options.items && options.items_total > options.items.length && (\n <>\n <hr className=\"dropdown-divider\" />\n <div\n className=\"dropdown-item editable\"\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n handleSearch(options.page + 1, true)\n }}\n >\n {intl.formatMessage(genericMessages.load_more)}\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </>\n )\n}\n","import { InputHTMLAttributes, forwardRef, useState } from 'react'\nimport { Input } from './input'\nimport { useIntl } from 'react-intl'\n\ninterface Props {\n value: string[]\n onChange: (value: string[]) => void\n dataTest?: string\n id?: string\n}\nexport const InputList = forwardRef<\n HTMLInputElement,\n InputHTMLAttributes<HTMLInputElement> & Props\n>(({ value, onChange, dataTest, id }, ref) => {\n const intl = useIntl()\n const [inputValue, setInputValue] = useState('')\n const addTags = (event) => {\n if (event.key === 'Enter' && event.target.value !== '') {\n onChange([...value, event.target.value])\n setInputValue('')\n }\n }\n\n return (\n <div className=\"control\">\n {(value ?? []).length > 0 && (\n <div className=\"tags\">\n {value.map((tag, index) => (\n <div\n key={`input_list_${tag}_${index}`}\n className=\"tag is-info is-medium\"\n >\n {tag}\n <button\n className=\"delete is-small\"\n type=\"button\"\n onClick={() =>\n onChange([\n ...value.filter((tag) => value.indexOf(tag) !== index),\n ])\n }\n />\n </div>\n ))}\n </div>\n )}\n\n <Input\n type=\"text\"\n id={id}\n placeholder={intl.formatMessage({\n id: 'press_enter_to_add_value',\n defaultMessage: 'Press enter to add value',\n })}\n onKeyUp={(event) => addTags(event)}\n value={inputValue}\n ref={ref}\n dataTest={dataTest}\n onChange={(value) => {\n setInputValue(value)\n }}\n />\n </div>\n )\n})\n\nInputList.displayName = 'InputList'\nexport default InputList\n","import { useState, useRef } from 'react'\nimport useClickAway from '../../hooks/useClickAway'\n\ninterface Props {\n children: React.ReactNode\n disabled?: boolean\n id?: string\n isRight?: boolean\n onChange: (value: string) => void\n optionDisabledWhen?: (option: any) => boolean\n options: { text: string; value: string }[]\n}\n\nexport default function Dropdown({\n children,\n disabled,\n id,\n isRight,\n onChange,\n optionDisabledWhen,\n options,\n}: Props) {\n const ref = useRef(null)\n const [isActive, setIsActive] = useState(false)\n const position = isRight ? 'is-right' : ''\n const status = isActive\n ? `dropdown ${position} is-active`\n : `dropdown ${position}`\n\n useClickAway(ref, () => {\n setIsActive(false)\n })\n\n return (\n <div ref={ref} className={status}>\n <div className=\"dropdown-trigger\">\n <button\n className=\"button is-size-7\"\n onClick={() => setIsActive(!isActive)}\n aria-haspopup=\"true\"\n disabled={disabled}\n aria-controls={id}\n >\n {children}\n </button>\n </div>\n <div className=\"dropdown-menu\" id={id} role=\"menu\">\n <div className=\"dropdown-content\">\n {options.map((option) => {\n const disabled =\n typeof optionDisabledWhen === 'function'\n ? optionDisabledWhen(option)\n : false\n\n return (\n <a\n className={\n disabled ? 'dropdown-item is-active' : 'dropdown-item'\n }\n data-test={`dropdownItemTest-${option.value.toLowerCase()}`}\n key={option.text}\n onClick={disabled ? undefined : () => onChange(option.value)}\n style={\n disabled\n ? {\n cursor: 'not-allowed',\n color: 'black',\n opacity: 0.5,\n backgroundColor: '#eeeeee',\n }\n : {}\n }\n >\n {option.text}\n </a>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n","import { Button } from '../input/button'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useState } from 'react'\nimport { useRef } from 'react'\nimport { useEffect } from 'react'\nimport { Icon } from '../ui'\nimport { get } from '../../lib/utils'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\n\ninterface Props {\n field: string\n value: any\n ns?: string\n schema?: any\n modifyContent?: boolean\n required?: boolean\n}\n\nexport function EditableField({\n field,\n value,\n ns,\n schema = undefined,\n modifyContent,\n required,\n}: Props) {\n const intl = useIntl()\n const ref = useRef<HTMLElement>()\n const [isEdit, setEdit] = useState(false)\n const [val, setValue] = useState(value)\n const { patch, loading, Ctx } = useCrudContext()\n const { fieldHaveDeleteButton } = useConfig()\n\n const EditComponent = Ctx.registry.get('components', 'EditComponent')\n const RenderFieldComponent = Ctx.registry.get(\n 'components',\n 'RenderFieldComponent'\n )\n\n useEffect(() => {\n if (isEdit && ref.current) {\n ref.current.focus()\n }\n })\n\n const canModified = modifyContent && !get(schema, 'readonly', false)\n\n const saveField = async (ev) => {\n if (ev) ev.preventDefault()\n\n if (!field) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_provide_key_name),\n 'danger'\n )\n return\n }\n\n if (!val && required) {\n Ctx.flash(\n intl.formatMessage(genericMessages.mandatory_field, { field }),\n 'danger'\n )\n return\n }\n\n if (schema?.widget === 'file') {\n const value = val\n if (value) {\n value['filename'] = unescape(encodeURIComponent(value['filename']))\n }\n const endpoint = `${Ctx.path}@upload/${field}`\n const req = await Ctx.client.upload(endpoint, value)\n if (req.status !== 200) {\n Ctx.flash(\n intl.formatMessage(genericFileMessages.error_upload_file),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericFileMessages.file_uploaded),\n 'success'\n )\n }\n } else {\n const data = ns ? { [ns]: { [field]: val } } : { [field]: val }\n const dataPatch = await patch(data)\n if (dataPatch.isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_in_field, { field }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.field_updated, { field }),\n 'success'\n )\n }\n }\n\n setEdit(false)\n Ctx.refresh()\n }\n\n const deleteField = async (ev) => {\n if (ev) ev.preventDefault()\n if (schema?.widget === 'file') {\n if (!field || (!val && required)) {\n Ctx.flash(\n intl.formatMessage(genericMessages.can_not_delete_field, { field }),\n 'danger'\n )\n return\n }\n\n const data = ns ? { [ns]: { [field]: null } } : { [field]: null }\n const dataPatch = await patch(data)\n if (dataPatch.isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_in_field, { field }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.field_deleted, { field }),\n 'success'\n )\n }\n\n setEdit(false)\n Ctx.refresh()\n } else if (schema?.type === 'string' && schema?.enum) {\n setValue(null)\n } else if (schema?.type === 'array' && schema?.items.type === 'string') {\n setValue([])\n }\n }\n\n return (\n <>\n {!isEdit && (\n <div\n className={canModified ? 'editable' : ''}\n onClick={() => {\n setEdit(!!canModified)\n }}\n data-test={`editableFieldTest-${field}`}\n >\n <RenderFieldComponent\n schema={schema}\n field={field}\n val={val}\n modifyContent={modifyContent}\n />\n {canModified && <Icon icon=\"fas fa-edit\" />}\n </div>\n )}\n\n {isEdit && (\n <div className=\"field\" data-test={`editableFieldTest-${field}`}>\n <div className=\"control\">\n <EditComponent\n ref={ref}\n schema={schema}\n val={val}\n setValue={setValue}\n dataTest={`editableFieldEditTest`}\n />\n </div>\n <div className=\"field is-grouped\">\n <div className=\"control\">\n <Button\n className=\"is-small is-primary\"\n loading={loading}\n onClick={saveField}\n dataTest=\"editableFieldBtnSaveTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n <div className=\"control\">\n <Button\n className=\"is-small\"\n onClick={() => setEdit(false)}\n dataTest=\"editableFieldBtnCancelTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </Button>\n </div>\n {!required && fieldHaveDeleteButton(schema) && (\n <div className=\"control\">\n <Button\n className=\"is-small is-danger\"\n onClick={deleteField}\n dataTest=\"editableFieldBtnDeleteTest\"\n >\n {intl.formatMessage(genericMessages.delete)}\n </Button>\n </div>\n )}\n </div>\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface DownloadFieldProps {\n value: {\n data: {\n filename: string\n content_type: string\n }\n field: string\n }\n}\nexport const DownloadField = ({ value }: DownloadFieldProps) => {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { data, field } = value\n\n const getField = async (downloadFile) => {\n const endpoint = `${Ctx.path}@download/${field}`\n const res = await Ctx.client.download(endpoint)\n const text = await res.blob()\n const blob = new Blob([text], {\n type: data.content_type,\n })\n const url = window.URL.createObjectURL(blob)\n\n // Create blob link to download\n const link = document.createElement('a')\n link.href = url\n if (downloadFile) {\n link.setAttribute('download', `${data.filename}`)\n } else {\n link.setAttribute('target', `_blank`)\n }\n\n document.body.appendChild(link)\n link.click()\n setTimeout(function () {\n // For Firefox it is necessary to delay revoking the ObjectURL\n window.URL.revokeObjectURL(url)\n link.parentNode?.removeChild(link)\n }, 100)\n }\n\n return (\n <div className=\"field\">\n <div className=\"label\">{data.filename}</div>\n <div className=\"columns\">\n <div className=\"column\">\n <button\n className=\"button is-small is-primary level-left\"\n onClick={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n getField(false)\n }}\n >\n {intl.formatMessage(genericMessages.open)}\n </button>\n </div>\n <div className=\"column\">\n <button\n className=\"button is-small is-primary level-right\"\n onClick={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n getField(true)\n }}\n >\n {intl.formatMessage(genericMessages.download)}\n </button>\n </div>\n </div>\n </div>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { DownloadField } from './downloadField'\nimport { useIntl } from 'react-intl'\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { get } from '../../lib/utils'\nimport { buildQs } from '../../lib/search'\nimport { useTraversal } from '../../contexts'\nimport { useConfig } from '../../hooks/useConfig'\nimport {\n GuillotinaSchemaProperty,\n GuillotinaVocabularyItem,\n} from '../../types/guillotina'\n\nconst plain = ['string', 'number', 'boolean']\n\ninterface RenderFieldProps {\n value: any\n Widget?: React.ComponentType<{ value: any; schema: GuillotinaSchemaProperty }>\n schema?: GuillotinaSchemaProperty\n}\n\nexport function RenderField({ value, Widget, schema }: RenderFieldProps) {\n if (value === null || value === undefined) return ''\n\n if (Widget) {\n return <Widget value={value} schema={schema} />\n }\n\n const type = typeof value\n if (plain.includes(type)) {\n return value\n }\n if (type === 'object') {\n if (Array.isArray(value)) {\n return value.map((item) => (\n <div key={item}>\n <RenderField value={item} />\n </div>\n ))\n }\n return Object.keys(value).map((key) => (\n <FieldValue\n field={get(schema, `properties.${key}.title`, key)}\n schema={get(schema, `properties.${key}`, {})}\n value={value[key]}\n key={key}\n />\n ))\n }\n return <p>No render for {JSON.stringify(value)}</p>\n}\n\ninterface FieldValueProps {\n field: string\n value: unknown\n schema: GuillotinaSchemaProperty\n}\nconst FieldValue = ({ field, value, schema }: FieldValueProps) => (\n <div className=\"field\">\n <div className=\"label\">{field}</div>\n <div className=\"value\">\n <RenderFieldComponent val={value} schema={schema} field={field} />\n </div>\n </div>\n)\n\nconst DEFAULT_VALUE_NO_EDITABLE_FIELD = ' -- '\nconst getDefaultValueEditableField = (intl) => {\n return intl.formatMessage({\n id: 'default_value_editable_field',\n defaultMessage: 'Click to edit',\n })\n}\n\ninterface SearchRenderFieldProps {\n schema: GuillotinaSchemaProperty\n value: string | string[]\n modifyContent: boolean\n}\nexport const SearchRenderField = ({\n schema,\n value,\n modifyContent,\n}: SearchRenderFieldProps) => {\n const intl = useIntl()\n const [valuesLabels, setValuesLabels] = useState([])\n const [isLoadingData, setIsLoadingData] = useState(false)\n const traversal = useTraversal()\n const { SearchEngine } = useConfig()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n useEffect(() => {\n const fetchData = async (valuesToSearch) => {\n setIsLoadingData(true)\n let searchTermQs = ''\n\n const searchTermParsed = ['__or', `id=${valuesToSearch.join('%26id=')}`]\n const { get: getSearch } = traversal.registry\n const fnName = getSearch('searchEngineQueryParamsFunction', SearchEngine)\n const qsParsed = traversal.client[fnName]({\n path: traversal.path,\n start: 0,\n pageSize: 100,\n withDepth: false,\n })\n\n if (searchTermParsed.length > 0 || qsParsed.length > 0) {\n searchTermQs = buildQs([searchTermParsed, ...qsParsed])\n }\n const data = await traversal.client.search(\n traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false,\n 0,\n 100\n )\n\n const newValuesLabel = data.items.map((item) => {\n return get(item, schema?.labelProperty ?? 'title', item.id)\n })\n setValuesLabels(newValuesLabel)\n setIsLoadingData(false)\n }\n\n let valuesToSearch = value\n if (typeof valuesToSearch === 'string') {\n valuesToSearch = [valuesToSearch]\n }\n\n if (valuesToSearch !== undefined && valuesToSearch.length > 0) {\n fetchData(valuesToSearch)\n } else {\n setValuesLabels([])\n }\n }, [value])\n\n const getRenderValue = () => {\n if (value === undefined) {\n if (modifyContent) {\n return DEFAULT_VALUE_EDITABLE_FIELD\n }\n return DEFAULT_VALUE_NO_EDITABLE_FIELD\n }\n if (isLoadingData) {\n return 'Loading...'\n }\n\n return valuesLabels\n }\n\n return <RenderField value={getRenderValue()} />\n}\n\ninterface VocabularyRenderFieldProps {\n schema: GuillotinaSchemaProperty\n value: string | string[]\n modifyContent: boolean\n}\nexport const VocabularyRenderField = ({\n schema,\n value,\n modifyContent,\n}: VocabularyRenderFieldProps) => {\n const intl = useIntl()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n const vocabularyName = schema?.items?.vocabularyName || schema?.vocabularyName\n const vocabulary = useVocabulary(vocabularyName)\n\n const getRenderProps = () => {\n const renderProps = {\n value:\n value ??\n (modifyContent\n ? DEFAULT_VALUE_EDITABLE_FIELD\n : DEFAULT_VALUE_NO_EDITABLE_FIELD),\n }\n\n if (schema?.vocabularyName) {\n const vocabularyValue = get<GuillotinaVocabularyItem[]>(\n vocabulary,\n 'data.items',\n []\n ).find((item) => item.token === value)\n renderProps['value'] = vocabularyValue?.title ?? ''\n } else {\n renderProps['value'] = (renderProps['value'] ?? []).map((value) => {\n return (\n get<GuillotinaVocabularyItem[]>(vocabulary, 'data.items', []).find(\n (item) => item.token === value\n )?.title ?? ''\n )\n })\n }\n\n return renderProps\n }\n return <RenderField {...getRenderProps()} />\n}\n\ninterface RenderFieldComponentProps {\n schema: GuillotinaSchemaProperty\n field: string\n val: any\n modifyContent?: boolean\n}\nexport function RenderFieldComponent({\n schema,\n field,\n val,\n modifyContent,\n}: RenderFieldComponentProps) {\n const intl = useIntl()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n const getRenderProps = () => {\n const renderProps = {\n value:\n val ??\n (modifyContent\n ? DEFAULT_VALUE_EDITABLE_FIELD\n : DEFAULT_VALUE_NO_EDITABLE_FIELD),\n schema: schema,\n }\n if (val && schema?.widget === 'file') {\n renderProps['value'] = {\n data: val,\n field: field,\n }\n renderProps['Widget'] = DownloadField\n } else if (schema?.type === 'boolean') {\n renderProps['value'] = val?.toString() ?? renderProps['value']\n } else if (val && schema?.type === 'datetime') {\n renderProps['value'] = new Date(val).toLocaleString()\n } else if (schema?.items?.vocabularyName || schema?.vocabularyName) {\n renderProps['Widget'] = VocabularyRenderField\n } else if (\n schema?.widget === 'search' ||\n schema?.widget === 'search_list'\n ) {\n renderProps['Widget'] = SearchRenderField\n renderProps['value'] = val\n }\n return renderProps\n }\n\n return <RenderField {...getRenderProps()} />\n}\n","import { Textarea } from '../input/textarea'\nimport { Checkbox } from '../input/checkbox'\nimport { FileUpload } from '../input/upload'\nimport { Select } from '../input/select'\nimport { Input } from '../input/input'\nimport { InputList } from '../input/input_list'\nimport { get } from '../../lib/utils'\nimport { SelectVocabulary } from '../input/select_vocabulary'\nimport { SearchInputList } from '../input/search_input_list'\nimport { SearchInput } from '../input/search_input'\nimport { useTraversal } from '../../contexts'\nimport { Ref, forwardRef } from 'react'\nimport { GuillotinaItemsProperty } from '../../types/guillotina'\nimport { IndexSignature } from '../../types/global'\n\ninterface Props {\n schema: GuillotinaItemsProperty\n val: any\n setValue: (value: any) => void\n dataTest?: string\n className?: string\n placeholder?: string\n id?: string\n required?: boolean\n}\n\nexport const EditComponent = forwardRef(\n (\n {\n schema,\n val,\n setValue,\n dataTest,\n className,\n placeholder,\n id,\n required,\n }: Props,\n ref\n ) => {\n const traversal = useTraversal()\n\n if (schema?.widget === 'search_list') {\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <SearchInputList\n value={val || []}\n traversal={traversal}\n onChange={(ev) => setValue(ev)}\n queryCondition={\n schema?.queryCondition ? schema.queryCondition : 'title__in'\n }\n path={schema.queryPath}\n labelProperty={\n schema?.labelProperty ? schema.labelProperty : 'title'\n }\n typeNameQuery={schema?.typeNameQuery ? schema.typeNameQuery : null}\n />\n </>\n )\n } else if (schema?.widget === 'search') {\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <SearchInput\n value={val}\n traversal={traversal}\n onChange={(ev) => setValue(ev)}\n queryCondition={\n schema?.queryCondition ? schema.queryCondition : 'title__in'\n }\n path={schema.queryPath}\n labelProperty={\n schema?.labelProperty ? schema.labelProperty : 'title'\n }\n typeNameQuery={schema?.typeNameQuery ? schema.typeNameQuery : null}\n />\n </>\n )\n } else if (schema?.widget === 'textarea' || schema?.widget === 'richtext') {\n return (\n <Textarea\n value={val || ''}\n className={className}\n onChange={(ev) => setValue(ev)}\n ref={ref as Ref<HTMLTextAreaElement>}\n dataTest={dataTest}\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.type === 'boolean') {\n return (\n <Checkbox\n checked={Boolean(val)}\n className={className}\n onChange={(ev) => setValue(ev)}\n dataTest={dataTest}\n />\n )\n } else if (schema?.type === 'array') {\n if (schema.items && schema.items.type === 'string') {\n if (schema.items.vocabularyName) {\n return (\n <SelectVocabulary\n vocabularyName={get(schema, 'items.vocabularyName', null)}\n val={val || []}\n className={className}\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n onChange={setValue}\n multiple\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.items?.vocabulary) {\n return (\n <Select\n value={val || []}\n className={className}\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n options={schema?.items.vocabulary.map((item) => {\n return {\n text: item,\n value: item,\n }\n })}\n multiple\n onChange={setValue}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n }\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <InputList\n value={val || []}\n className={className}\n onChange={(ev) => setValue(ev)}\n ref={ref as Ref<HTMLInputElement>}\n dataTest={dataTest}\n />\n </>\n )\n } else if (schema?.widget === 'file') {\n return (\n <FileUpload\n onChange={(ev) => setValue(ev)}\n label={get(val, 'filename', null)}\n dataTest={dataTest}\n />\n )\n } else if (schema?.widget === 'select' && schema.type === 'string') {\n if (schema?.vocabularyName) {\n return (\n <SelectVocabulary\n val={val || ''}\n className={className}\n appendDefault\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n onChange={setValue}\n vocabularyName={get(schema, 'vocabularyName', null)}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n\n return (\n <Select\n value={val || ''}\n className={className}\n appendDefault\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n options={schema?.vocabulary.map((item) => {\n return {\n text: item,\n value: item,\n }\n })}\n onChange={setValue}\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.type === 'object' && schema.widget !== 'file') {\n const value = val as IndexSignature\n return (\n <>\n {schema.title && <h4 className=\"subtitle mt-2\">{schema.title}</h4>}\n {Object.keys(get(schema, 'properties', {})).map((key) => {\n const subSchema = get(schema, 'properties', {})[key]\n const requiredFields: string[] = get(schema, 'required', [])\n return (\n <EditComponent\n key={`${id}[${key}]`}\n id={`${id}[${key}]`}\n schema={subSchema}\n val={value && key in value ? value[key] : ''}\n placeholder={subSchema?.title ?? ''}\n required={requiredFields.includes(key)}\n setValue={(ev) => {\n setValue({ ...value, [key]: ev })\n }}\n dataTest={`${key}TestInput`}\n />\n )\n })}\n </>\n )\n }\n const getInputType = () => {\n switch (schema?.type) {\n case 'integer':\n return 'number'\n case 'date':\n return 'date'\n case 'datetime':\n return 'datetime-local'\n case 'time':\n return 'time'\n default:\n return 'text'\n }\n }\n return (\n <Input\n value={val || ''}\n className={className}\n dataTest={dataTest}\n onChange={(ev) => setValue(ev)}\n ref={ref as Ref<HTMLInputElement>}\n type={getInputType()}\n required={required}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n)\n\nEditComponent.displayName = 'EditComponent'\nexport default EditComponent\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n} from '../../types/guillotina'\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n file: GuillotinaFile\n }\n}\n\nexport function IAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {Object.keys(properties).map((key) => (\n <tr key={'attachment_' + key}>\n <td style={{ width: '150px' }} key={1}>\n {key}\n </td>\n <td key={2}>\n <EditableField\n field={key}\n value={values[key]}\n ns=\"guillotina.behaviors.attachment.IAttachment\"\n schema={properties[key]}\n modifyContent={modifyContent && ['file'].includes(key)}\n />\n </td>\n </tr>\n ))}\n </Table>\n )\n}\n","import { Input } from '../input/input'\nimport { FileUpload } from '../input/upload'\nimport { Button } from '../input/button'\nimport { useState } from 'react'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport ErrorZone from '../error_zone'\nimport { EditableField } from '../fields/editableField'\nimport { Delete } from '../ui'\nimport { Confirm } from '../modal'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport { LightFile } from '../../types/global'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n} from '../../types/guillotina'\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n files: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const [fileKey, setFileKey] = useState('')\n const [file, setFile] = useState<LightFile | undefined>(undefined)\n const [fileKeyToDelete, setFileKeyToDelete] = useState(undefined)\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n const uploadFile = async (ev) => {\n ev.preventDefault()\n if (!fileKey && !file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@upload/files/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n setFileKey('')\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.file_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/files/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n\n {Object.keys(values['files']).map((key) => (\n <tr key={'multiattachment_' + key}>\n <td key={1} style={{ width: '150px' }}>\n {key}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={`files/${key}`}\n value={values['files'][key]}\n ns=\"guillotina.behaviors.attachment.IMultiAttachment.files\"\n schema={properties['files']['additionalProperties']}\n modifyContent={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n ))}\n {Object.keys(values['files']).length === 0 && (\n <tr>\n <td colSpan={2}>\n {intl.formatMessage(genericFileMessages.no_files_uploaded)}\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_a_file)}\n </label>\n <form className=\"columns\">\n <div className=\"column is-4\">\n <Input\n placeholder=\"Key\"\n name=\"field\"\n className=\"is-small\"\n value={fileKey}\n onChange={(ev) => setFileKey(ev)}\n required\n />\n {error && <ErrorZone>{error}</ErrorZone>}\n </div>\n <div className=\"column is-2\">\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div className=\"column is-2\">\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!fileKey && !file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","import { useState } from 'react'\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useConfig } from '../../hooks/useConfig'\nimport { Delete } from '../ui'\nimport { Button } from '../input/button'\nimport { FileUpload } from '../input/upload'\nimport { Confirm } from '../modal'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n} from '../../types/guillotina'\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n image: GuillotinaFile\n }\n}\nexport function IImageAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const sizesImages = cfg.SizeImages || _sizesImages\n const [file, setFile] = useState(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState(undefined)\n const [showConfirmToDelete, setShowConfirmToDelete] = useState(false)\n\n const uploadFile = async (ev) => {\n ev.preventDefault()\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@upload/image`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/image/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/image`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {showConfirmToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setShowConfirmToDelete(false)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_image\n )}\n />\n )}\n {values['image'] && (\n <tr>\n <td key={1} style={{ width: '150px' }}>\n {intl.formatMessage(genericMessages.image)}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={'image'}\n value={values['image']}\n ns=\"guillotina.behaviors.behaviors.IImageAttachment\"\n schema={properties['image']}\n modifyContent={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setShowConfirmToDelete(true)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n <form\n className=\"is-flex is-align-items-center\"\n style={{ gap: '15px' }}\n data-test=\"formImageAttachmentTest\"\n >\n <div>\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n {error && <p className=\"help is-danger\">{error}</p>}\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","import { useState } from 'react'\n\nimport { Button } from '../input/button'\nimport { Confirm } from '../modal'\nimport { Delete } from '../ui'\nimport { FileUpload } from '../input/upload'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { EditableField } from '../fields/editableField'\nimport { useConfig } from '../../hooks/useConfig'\nimport { Table } from '../ui'\nimport { Input } from '../input/input'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n} from '../../types/guillotina'\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiImageAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const [fileKey, setFileKey] = useState('')\n const [file, setFile] = useState(null)\n const [fileKeyToDelete, setFileKeyToDelete] = useState(undefined)\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const sizesImages = cfg.SizeImages || _sizesImages\n\n const uploadFile = async (ev) => {\n ev.preventDefault()\n if (!fileKey && !file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@upload/images/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/images/${fileKey}/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFileKey('')\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/images/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n\n {Object.keys(values['images']).map((key) => (\n <tr key={`multiimageattachment_${key}`}>\n <td key={1} style={{ width: '150px' }}>\n {key}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={`images/${key}`}\n value={values['images'][key]}\n ns=\"guillotina.contrib.image.behaviors.IMultiImageAttachment.images\"\n schema={properties['images']['additionalProperties']}\n modifyContent={false}\n required={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n ))}\n {Object.keys(values['images']).length === 0 && (\n <tr>\n <td colSpan={2}>\n {intl.formatMessage(genericFileMessages.no_images_uploaded)}\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {' '}\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n <form className=\"columns\" data-test=\"formMultiimageAttachmentTest\">\n <div className=\"column is-4\">\n <Input\n placeholder=\"Key\"\n name=\"field\"\n className=\"is-small\"\n value={fileKey}\n onChange={(ev) => setFileKey(ev)}\n required\n />\n {error && <p className=\"help is-danger\">{error}</p>}\n </div>\n <div className=\"column is-2\">\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div className=\"column is-2\">\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!fileKey && !file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","import { Button } from '../input/button'\nimport { Confirm } from '../modal'\nimport { Delete } from '../ui'\nimport { FileUpload } from '../input/upload'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { EditableField } from '../fields/editableField'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useEffect, useState } from 'react'\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n DroppableProvided,\n DroppableStateSnapshot,\n} from 'react-beautiful-dnd'\nimport { v4 as uuidv4 } from 'uuid'\nimport { defineMessages, useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n} from '../../types/guillotina'\n\ninterface StrictModeDroppableProps {\n children(\n provided: DroppableProvided,\n snapshot: DroppableStateSnapshot\n ): React.ReactElement<HTMLElement>\n droppableId: string\n}\nconst StrictModeDroppable = ({\n children,\n droppableId,\n}: StrictModeDroppableProps) => {\n const [enabled, setEnabled] = useState(false)\n useEffect(() => {\n const animation = requestAnimationFrame(() => setEnabled(true))\n return () => {\n cancelAnimationFrame(animation)\n setEnabled(false)\n }\n }, [])\n if (!enabled) {\n return null\n }\n return <Droppable droppableId={droppableId}>{children}</Droppable>\n}\n\nconst reorder = (list, startIndex, endIndex) => {\n const result: string[] = Array.from(list)\n const [removed] = result.splice(startIndex, 1)\n result.splice(endIndex, 0, removed)\n\n return result\n}\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\nconst messages = defineMessages({\n failed_to_sort_images: {\n id: 'failed_to_sort_images',\n defaultMessage: 'Failed to sort images',\n },\n images_sorted: {\n id: 'images_sorted',\n defaultMessage: 'Images sorted',\n },\n})\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n images: GuillotinaFile[]\n }\n}\nexport function IMultiImageOrderedAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const [sortedList, setSortedList] = useState<string[]>(\n Object.keys(values['images'])\n )\n const [file, setFile] = useState(null)\n const [fileKeyToDelete, setFileKeyToDelete] = useState(undefined)\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n const sizesImages = cfg.SizeImages || _sizesImages\n\n async function onDragEnd(result) {\n if (!result.destination) {\n return\n }\n\n if (result.destination.index === result.source.index) {\n return\n }\n\n const resultSorted = reorder(\n sortedList,\n result.source.index,\n result.destination.index\n )\n\n setSortedList(resultSorted)\n setLoading(true)\n const endpoint = `${Ctx.path}@sort/images/`\n const req = await Ctx.client.patch(endpoint, resultSorted)\n if (req.status !== 200) {\n setError(intl.formatMessage(messages.failed_to_sort_images))\n setLoading(false)\n return\n }\n\n setLoading(false)\n Ctx.flash(intl.formatMessage(messages.images_sorted), 'success')\n Ctx.refresh()\n }\n\n const uploadFile = async (ev) => {\n ev.preventDefault()\n if (!file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n const fileKey = uuidv4()\n const endpoint = `${Ctx.path}@upload/images/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/images/${fileKey}/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/images/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <>\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n <section>\n <DragDropContext onDragEnd={onDragEnd}>\n <StrictModeDroppable droppableId=\"list\">\n {(provided) => (\n <div ref={provided.innerRef} {...provided.droppableProps}>\n {sortedList.map((key, index) => (\n <Draggable\n key={`multiimageattachment_${key}`}\n draggableId={`multiimageattachment_${key}`}\n index={index}\n >\n {(providedChild) => (\n <div\n className=\"is-flex is-align-items-center pt-2 pb-2\"\n style={{ borderTop: '1px solid #dbdbdb' }}\n ref={providedChild.innerRef}\n {...providedChild.draggableProps}\n {...providedChild.dragHandleProps}\n >\n <EditableField\n field={`images/${key}`}\n value={values['images'][key]}\n ns=\"guillotina.contrib.image.behaviors.IMultiImageAttachment.images\"\n schema={properties['images']['additionalProperties']}\n modifyContent={false}\n required={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n )}\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </StrictModeDroppable>\n </DragDropContext>\n </section>\n\n {Object.keys(values['images']).length === 0 && (\n <section>\n {intl.formatMessage(genericFileMessages.no_images_uploaded)}\n </section>\n )}\n {modifyContent && (\n <section>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n\n <form\n className=\"is-flex is-align-items-center\"\n style={{ gap: '15px' }}\n data-test=\"formMultiimageOrderedAttachmentTest\"\n >\n <div>\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n {error && <p className=\"help is-danger\">{error}</p>}\n </section>\n )}\n </>\n )\n}\n","import {\n GuillotinaSharing,\n GuillotinaSharingInheritItem,\n GuillotinaSharingMap,\n} from '../types/guillotina'\n\nconst base: GuillotinaSharing = {\n local: {\n roleperm: {},\n prinperm: {},\n prinrole: {},\n },\n inherit: [],\n}\n\nexport class Sharing {\n local: GuillotinaSharingMap\n inherit: GuillotinaSharingInheritItem[]\n\n constructor(element) {\n Object.assign(this, element || base)\n }\n get roles() {\n return Object.keys(this.local.roleperm)\n }\n\n getRole(role) {\n return this.local.roleperm[role]\n }\n\n get principals() {\n return Object.keys(this.local.prinperm)\n }\n\n getPrincipals(principal) {\n return this.local.prinperm[principal]\n }\n\n get prinrole() {\n return Object.keys(this.local.prinrole)\n }\n\n getPrinroles(role) {\n return this.local.prinrole[role]\n }\n}\n","import { formatDate } from '../lib/utils'\nimport { useConfig } from '../hooks/useConfig'\nimport { SearchItem } from '../types/guillotina'\n\nexport * from './sharing'\n\nexport class ItemModel {\n item: SearchItem\n url: string\n constructor(item, url = '') {\n this.item = item\n this.url = url\n }\n\n get path() {\n // Compat\n const item = this.item['@id']\n ? this.item['@id']\n : this.item['@absolute_url']\n let path = item.split('//')[1].split('/').splice(1).join('/')\n path = `/${path}/`\n if (this.url.length > 0) {\n if (this.url.startsWith('/')) {\n path = path.replace(this.url.substring(1), '')\n } else {\n path = path.replace(this.url, '')\n }\n }\n\n return path\n }\n\n get name() {\n return this.item.title || this.item['@name']\n }\n\n get icon() {\n // eslint-disable-next-line\n const cfg = useConfig()\n if (cfg.icons && cfg.icons[this.type]) {\n return cfg.icons[this.type]\n }\n\n switch (this.type) {\n case 'GroupManager':\n return 'fas fa-users-cog'\n case 'UserManager':\n return 'fas fa-user-cog'\n case 'User':\n return 'fas fa-user'\n case 'Group':\n return 'fas fa-users'\n case 'Folder':\n return 'fas fa-folder'\n default:\n return 'fas fa-file'\n }\n }\n\n get fullPath() {\n return this.url + this.item.id\n }\n\n get id() {\n if (this.item.id) {\n return this.item.id\n }\n const id = this.item['@id'].split('&')[0].split('/')\n return id[id.length - 1]\n }\n\n get uid() {\n return this.item['@uid']\n }\n\n get type() {\n return this.item['@type'] || this.item.type_name\n }\n\n get title() {\n return this.item.title\n }\n\n get created() {\n return this.item.creation_date ? formatDate(this.item.creation_date) : ''\n }\n\n get updated() {\n return this.item.modification_date\n ? formatDate(this.item.modification_date)\n : ''\n }\n}\n","import { useTraversal } from '../../contexts'\nimport { Confirm } from '../modal'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { ItemModel } from '../../models'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { useEffect, useState } from 'react'\n\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { get } from '../../lib/utils'\nconst messages = defineMessages({\n status_changed_ok: {\n id: 'status_changed_ok',\n defaultMessage: 'Great status changed!',\n },\n status_changed_error: {\n id: 'status_changed_error',\n defaultMessage: 'Failed to status changed!: {error}',\n },\n confirm_message: {\n id: 'confirm_message',\n defaultMessage: 'Are you sure to change state: {title}?',\n },\n current_state: {\n id: 'current_state',\n defaultMessage: 'Current state: {state}',\n },\n actions: {\n id: 'actions',\n defaultMessage: 'Actions:',\n },\n})\n\nexport function IWorkflow() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const [definition, setDefinition] = useState(undefined)\n const [workflowAction, setWorkflowAction] = useState(null)\n const model = new ItemModel(Ctx.context)\n const vocabulary = useVocabulary('workflow_states')\n const currentState =\n model.item['guillotina.contrib.workflows.interfaces.IWorkflowBehavior'][\n 'review_state'\n ]\n\n async function loadDefinition() {\n const response = await Ctx.client.get(`${Ctx.path}/@workflow`)\n const workflow = await response.json()\n setDefinition(workflow)\n }\n\n useEffect(() => {\n loadDefinition()\n }, [Ctx.path])\n\n const doWorkflowAction = async () => {\n const { isError, errorMessage } = await post(\n {},\n `@workflow/${workflowAction}`,\n false\n )\n await loadDefinition()\n if (!isError) {\n Ctx.flash(intl.formatMessage(messages.status_changed_ok), 'success')\n } else {\n Ctx.flash(\n intl.formatMessage(messages.status_changed_error, {\n error: errorMessage,\n }),\n 'danger'\n )\n }\n\n Ctx.refresh()\n setWorkflowAction(null)\n }\n const getStateTitle = () => {\n if (vocabulary.data?.items?.length > 0) {\n const vocabularyValue = vocabulary.data.items.find(\n (item) => item.token === currentState\n )\n if (vocabularyValue) {\n const translatedValue = get(\n vocabularyValue,\n `title.translated_title.${intl.locale}`,\n null\n )\n if (translatedValue !== null) {\n return translatedValue\n }\n const titleValue = get(\n vocabularyValue,\n `title.title.${intl.locale}`,\n null\n )\n if (titleValue !== null) {\n return titleValue\n }\n }\n }\n return currentState\n }\n\n if (definition === undefined) return null\n\n return (\n <>\n {workflowAction && (\n <Confirm\n loading={loading}\n onCancel={() => setWorkflowAction(null)}\n onConfirm={doWorkflowAction}\n message={intl.formatMessage(messages.confirm_message, {\n title: Ctx.context.title || Ctx.context['@name'],\n })}\n />\n )}\n\n <div className=\"is-flex is-align-items-center mb-3\">\n <div\n className=\"has-text-weight-bold\"\n data-test={`textInfoStatus-${currentState}`}\n >\n {intl.formatMessage(messages.current_state, {\n state: getStateTitle(),\n })}\n </div>\n </div>\n {modifyContent && definition.transitions.length > 0 && (\n <div\n className=\" is-flex is-align-items-center has-text-weight-bold\"\n data-test={`textInfoStatus-${currentState}`}\n >\n <label>{intl.formatMessage(messages.actions)}</label>&nbsp;&nbsp;\n {definition.transitions.map((transition) => {\n return (\n <button\n key={transition['@id']}\n className=\"button mr-4\"\n onClick={() =>\n setWorkflowAction(\n transition['@id'].split('@workflow')[1].slice(1)\n )\n }\n >\n {get(\n transition,\n `metadata.translated_title.${intl.locale}`,\n transition.title\n )}\n </button>\n )\n })}\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { getActionsObject } from '../../lib/helpers'\nimport { Fragment } from 'react'\n\nexport function PanelActions() {\n const traversal = useTraversal()\n const intl = useIntl()\n const ACTIONS_OBJECT = getActionsObject(intl)\n\n const hasPerm = (perms) => {\n return perms.some((perm) => traversal.hasPerm(perm))\n }\n\n const onAction = (actionKey) => {\n traversal.doAction(ACTIONS_OBJECT[actionKey].action, {\n item: traversal.context,\n })\n }\n\n return (\n <Fragment>\n {Object.keys(ACTIONS_OBJECT).map((actionKey) => {\n if (hasPerm(ACTIONS_OBJECT[actionKey].perms)) {\n return (\n <button\n key={`panel_action_${ACTIONS_OBJECT[actionKey].text}`}\n className=\"button mr-4\"\n onClick={() => {\n onAction(actionKey)\n }}\n >\n {ACTIONS_OBJECT[actionKey].text}\n </button>\n )\n }\n })}\n </Fragment>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { useIntl, defineMessages } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useState } from 'react'\n\nconst messages = defineMessages({\n available_addons: {\n id: 'available_addons',\n defaultMessage: 'Available Addons',\n },\n no_available_addons_container: {\n id: 'no_available_addons_container',\n defaultMessage: 'No Addon available in this container',\n },\n installed_addons: {\n id: 'installed_addons',\n defaultMessage: 'Installed Addons',\n },\n})\n\n// TODO: Refactor without useAsync... just crudContext\nexport function PanelAddons() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const [action, setAction] = useState(false)\n const [state, setState] = useState({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n useEffect(() => {\n const getAddons = async () => {\n if (!state.loading && !state.data && !state.error) {\n try {\n const response = await Ctx.client.getAddons(Ctx.pathPrefix)\n const data = await response.json()\n setState({ ...state, loading: false, data: prepareData(data) })\n } catch (err) {\n setState({ ...state, loading: false, error: err })\n }\n }\n }\n getAddons()\n }, [action])\n\n const installAddon = async (Ctx, key) => {\n await Ctx.client.installAddon(Ctx.pathPrefix, key)\n Ctx.flash(`Addon ${key} installed`, 'success')\n setAction(!action)\n }\n\n const removeAddon = async (Ctx, key) => {\n await Ctx.client.removeAddon(Ctx.pathPrefix, key)\n Ctx.flash(`Addon ${key} removed`, 'success')\n setAction(!action)\n }\n\n return (\n <Fragment>\n {state.loading ? (\n <div>{intl.formatMessage(genericMessages.loading)}</div>\n ) : state.error ? (\n <p>Error: {state.error.message}</p>\n ) : (\n <div className=\"columns\">\n <div className=\"column\">\n <h2 className=\"title is-size-4 has-text-grey-dark\">\n {intl.formatMessage(messages.available_addons)}\n </h2>\n <hr />\n {(state.data?.available ?? []).length === 0 && (\n <p>\n {intl.formatMessage(messages.no_available_addons_container)}\n </p>\n )}\n <table className=\"table is-12\">\n <tbody>\n {(state.data?.available ?? []).map((addon) => (\n <tr key={addon.id}>\n <td>{addon.title}</td>\n <td>\n <button\n className=\"button is-primary is-small\"\n onClick={() => installAddon(Ctx, addon.id)}\n >\n {intl.formatMessage(genericMessages.install)}\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"column\">\n <h2 className=\"title is-size-4 has-text-grey-dark\">\n {intl.formatMessage(messages.installed_addons)}\n </h2>\n <hr />\n {(state.data?.installed ?? []).length === 0 && (\n <p>\n {intl.formatMessage(messages.no_available_addons_container)}\n </p>\n )}\n <table className=\"table is-12\">\n <tbody>\n {(state.data?.installed ?? []).map((addon) => (\n <tr key={addon.id}>\n <td>{addon.title}</td>\n <td>\n <button\n className=\"button is-danger is-small\"\n onClick={() => removeAddon(Ctx, addon.id)}\n >\n {intl.formatMessage(genericMessages.remove)}\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )}\n </Fragment>\n )\n}\n\nconst prepareData = (result) => {\n const addons = arrayToObject(result.available)\n return {\n available: result.available.filter(\n (item) => !result.installed.includes(item.id)\n ),\n installed: result.installed.map((id) => addons[id]),\n }\n}\n\nconst arrayToObject = (array) =>\n array.reduce((obj, item) => {\n obj[item.id] = item\n return obj\n }, {})\n","import { useCrudContext } from '../../hooks/useCrudContext'\nimport { Table } from '../ui/table'\nimport { Button } from '../input/button'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useState } from 'react'\nimport { GuillotinaBehaviors } from '../../types/guillotina'\n\nexport function PanelBehaviors() {\n const intl = useIntl()\n const {\n Ctx,\n get,\n result,\n loading,\n isError,\n } = useCrudContext<GuillotinaBehaviors>()\n const ops = useCrudContext()\n\n const [state, setState] = useState(false)\n\n const enableBehavior = (behavior) => async () => {\n await ops.patch({ behavior }, '@behaviors')\n setState(!state)\n Ctx.refresh()\n }\n\n const disableBehavior = (behavior) => async () => {\n await ops.del({ behavior }, '@behaviors')\n setState(!state)\n Ctx.refresh()\n }\n\n useEffect(() => {\n get('@behaviors')\n }, [])\n\n return (\n <div className=\"columns behaviors\">\n <div className=\"column is-8 is-size-7\">\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(genericMessages.behaviors)}\n </h2>\n {!loading && !isError && result && (\n <Fragment>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.static)}\n </h3>\n </td>\n </tr>\n {result.static.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.static)}</td>\n <td>{behavior}</td>\n <td className=\"\">\n <Button className=\"is-small is-pulled-right\" disabled>\n {intl.formatMessage(genericMessages.disable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.enabled)}\n </h3>\n </td>\n </tr>\n {result.dynamic.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.enabled)}</td>\n <td>{behavior}</td>\n <td>\n <Button\n className=\"is-small is-danger is-pulled-right\"\n onClick={disableBehavior(behavior)}\n >\n {intl.formatMessage(genericMessages.disable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.available)}\n </h3>\n </td>\n </tr>\n {result.available.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.available)}</td>\n <td>{behavior}</td>\n <td>\n <Button\n className=\"is-small is-primary is-pulled-right\"\n onClick={enableBehavior(behavior)}\n >\n {intl.formatMessage(genericMessages.enable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n </Fragment>\n )}\n </div>\n <div className=\"column is-4\"></div>\n </div>\n )\n}\n","import { createContext, useState, useContext } from 'react'\nimport Dropdown from './input/dropdown'\nimport { Checkbox } from './input/checkbox'\nimport { useTraversal } from '../contexts'\nimport { useIntl } from 'react-intl'\nimport { getActionsObject } from '../lib/helpers'\nimport { SearchItem } from '../types/guillotina'\n\nconst ItemsActionsCtx = createContext<{\n selected?: {\n all: boolean\n [key: string]: boolean\n }\n onSelectOneItem?: (item: SearchItem) => void\n onSelectAllItems?: (chedked: boolean) => void\n onAction?: (action: string) => void\n}>({\n selected: {\n all: false,\n },\n})\n\n/**\n * Actions to apply after select some items\n * Ex: Delete, Move, Copy...\n */\ninterface PropsItemsActionsProvider {\n items: SearchItem[]\n children: React.ReactNode\n}\nexport function ItemsActionsProvider({\n items,\n children,\n}: PropsItemsActionsProvider) {\n const intl = useIntl()\n const actions = getActionsObject(intl, true)\n const traversal = useTraversal()\n const [selected, setSelected] = useState({\n all: false,\n })\n function onSelectAllItems(checked) {\n setSelected(\n items.reduce(\n (obj, item) => {\n obj[`${item.path}/${item.id}`] = checked\n return obj\n },\n { all: checked }\n )\n )\n }\n\n function onSelectOneItem(item) {\n setSelected((state) => ({\n ...state,\n all: false,\n [`${item.path}/${item.id}`]: !state[`${item.path}/${item.id}`],\n }))\n }\n\n function onAction(actionKey) {\n traversal.doAction(actions[actionKey].action, {\n items: items.filter((item) => selected[`${item.path}/${item.id}`]),\n })\n }\n\n return (\n <ItemsActionsCtx.Provider\n value={{\n onAction,\n onSelectAllItems,\n onSelectOneItem,\n selected,\n }}\n >\n {children}\n </ItemsActionsCtx.Provider>\n )\n}\n\n/**\n * Checkbox component without props that consume the ItemsActionsContext\n * and it select/unselect all items of the page.\n */\nexport function AllItemsCheckbox({ dataTest }: { dataTest?: string }) {\n const { onSelectAllItems, selected } = useContext(ItemsActionsCtx)\n\n return (\n <Checkbox\n onChange={onSelectAllItems}\n checked={selected.all}\n dataTest={dataTest}\n />\n )\n}\n\n/**\n * Checkbox component to select ONE item.\n */\ninterface PropsItemCheckbox {\n item: SearchItem\n dataTest?: string\n}\nexport function ItemCheckbox({ item, dataTest }: PropsItemCheckbox) {\n const { selected, onSelectOneItem } = useContext(ItemsActionsCtx)\n const absId = `${item.path}/${item.id}`\n const value = selected[absId]\n\n return (\n <Checkbox\n onChange={() => onSelectOneItem(item)}\n checked={value}\n dataTest={dataTest}\n />\n )\n}\n\n/**\n * Dropdown to choose some action to apply to the selected items.\n */\nexport function ItemsActionsDropdown() {\n const intl = useIntl()\n const ACTIONS_OBJECT = getActionsObject(intl, true)\n const traversal = useTraversal()\n const { selected, onAction } = useContext(ItemsActionsCtx)\n const disabled = Object.values(selected).every((v) => !v)\n const options = Object.keys(ACTIONS_OBJECT).map((action) => ({\n text: ACTIONS_OBJECT[action].text,\n value: action,\n }))\n\n return (\n <Dropdown\n disabled={disabled}\n id=\"items-actions\"\n onChange={onAction}\n optionDisabledWhen={(o) =>\n ACTIONS_OBJECT[o.value].perms.some((perm) => !traversal.hasPerm(perm))\n }\n options={options}\n isRight={false}\n >\n <div data-test=\"btnChooseActionTest\">\n {intl.formatMessage({\n id: 'choose_action',\n defaultMessage: 'Choose action...',\n })}\n </div>\n </Dropdown>\n )\n}\n","import { useIntl } from 'react-intl'\n\ninterface Props {\n current: number\n total: number\n doPaginate: (page: number) => void\n pager: number\n}\nexport function Pagination({ current, total, doPaginate, pager }: Props) {\n const intl = useIntl()\n const maxPages = Math.ceil(total / pager)\n if (maxPages <= 1) {\n return null\n }\n\n return (\n <div>\n <p className=\"level-right has-text-grey is-size-7\">\n <span>\n {intl.formatMessage(\n {\n id: 'pagination',\n defaultMessage:\n '{currentPage} / {totalPages} of {totalItems} items',\n },\n {\n currentPage: current + 1,\n totalPages: maxPages,\n totalItems: total,\n }\n )}\n </span>\n </p>\n <nav\n className=\"pagination is-size-7\"\n role=\"navigation\"\n aria-label=\"pagination\"\n >\n <a\n className=\"pagination-previous is-small\"\n // disabled={current === 0}\n onClick={() => (current > 0 ? doPaginate(current - 1) : null)}\n >\n <span className=\"icon\">\n <i className=\"fas fa-arrow-left\"></i>\n </span>\n </a>\n <a\n className=\"pagination-next is-small\"\n // disabled={current >= maxPages - 1}\n onClick={() => doPaginate(current + 1)}\n >\n <span className=\"icon\">\n <i className=\"fas fa-arrow-right\"></i>\n </span>\n </a>\n </nav>\n </div>\n )\n}\n","import React from 'react'\n\nimport { ItemModel } from '../models'\nimport { useLocation } from '../hooks/useLocation'\nimport { useTraversal } from '../contexts'\nimport { Icon } from './ui/icon'\nimport { ItemCheckbox } from './selected_items_actions'\nimport { Delete } from './ui'\nimport { IColumn } from '../reducers/guillotina'\nimport { SearchItem } from '../types/guillotina'\n\ninterface ItemProps {\n item: { id: string; path: string }\n icon?: string\n}\nexport function Item({ item, icon }: ItemProps) {\n const [, navigate] = useLocation()\n const link = () => navigate({ path: item.path }, true)\n return (\n <tr>\n <td onClick={link} style={{ width: '25px' }}>\n {icon && <Icon icon={icon} />}\n </td>\n <td onClick={link}>{item.id}</td>\n </tr>\n )\n}\n\nconst smallcss = {\n width: 25,\n}\n\ninterface RItemProps {\n item: SearchItem\n search: string\n columns: IColumn[]\n}\nexport function RItem({ item, search, columns }: RItemProps) {\n const [, navigate] = useLocation()\n const traversal = useTraversal()\n const model = new ItemModel(item, traversal.url)\n const link = () => navigate({ path: model.path }, true)\n\n return (\n <tr key={item.id} data-test={`itemTest-${item.id}`}>\n <td style={smallcss}>\n <ItemCheckbox item={item} dataTest=\"itemCheckboxRowTest\" />\n </td>\n {columns.map((i) => (\n <React.Fragment key={i.label}>\n {i.child(model, link, search)}\n </React.Fragment>\n ))}\n <td style={smallcss}>\n {traversal.hasPerm('guillotina.DeleteContent') && (\n <Delete\n onClick={() =>\n traversal.doAction('removeItems', { items: [model.item] })\n }\n />\n )}\n </td>\n </tr>\n )\n}\n\ninterface ItemTitleProps {\n title: string\n actions?: React.ReactNode\n}\nexport function ItemTitle({ title, actions }: ItemTitleProps) {\n return (\n <nav className=\"level\">\n <div className=\"level-left\">\n <div className=\"level-item\">\n <h4 className=\"title has-text-primary is-size-5\">{title}</h4>\n </div>\n </div>\n <div className=\"level-right\">\n <div className=\"level-item\">{actions && actions}</div>\n </div>\n </nav>\n )\n}\n","import { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\n\ninterface Props {\n query?: string\n}\nexport function SearchLabels({ query }: Props) {\n const [location, , del] = useLocation()\n const search = location.get(query ?? 'q')\n\n const clearSearch = () => {\n del(query ?? 'q')\n }\n\n if (search) {\n return (\n <div className=\"tags\">\n <Tag\n id={search}\n name={search}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import { useEffect, useState } from 'react'\nimport { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\n\ninterface Props {\n query?: string\n options?: { value: string; text: string }[]\n}\nexport function SearchOptionsLabels({ query = 'q', options }: Props) {\n const [location, , del] = useLocation()\n const [renderValue, setRenderValue] = useState(undefined)\n const defaultRenderValue = location.get(query)\n\n useEffect(() => {\n let value = defaultRenderValue\n if ((options ?? []).length > 0) {\n const option = options.find((item) => item.value === value)\n if (option) {\n value = option.text\n }\n }\n setRenderValue(value)\n }, [defaultRenderValue])\n\n const clearSearch = () => {\n del(query)\n }\n\n if (renderValue) {\n return (\n <div className=\"tags\">\n <Tag\n id={defaultRenderValue}\n name={renderValue}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import { useEffect, useState } from 'react'\nimport { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\nimport { useVocabulary } from '../hooks/useVocabulary'\n\ninterface Props {\n query?: string\n vocabularyName?: string\n}\n\nexport function SearchVocabularyLabels({ query = 'q', vocabularyName }: Props) {\n const [location, , del] = useLocation()\n const [renderValue, setRenderValue] = useState(undefined)\n const vocabulary = useVocabulary(vocabularyName)\n const defaultRenderValue = location.get(query)\n\n useEffect(() => {\n let value: string = defaultRenderValue\n\n if ((vocabulary?.data?.items ?? []).length > 0) {\n const vocabularyValue = vocabulary.data.items.find(\n (item) => item.token === value\n )\n if (vocabularyValue) {\n value = vocabularyValue.title\n }\n }\n setRenderValue(value)\n }, [vocabulary, defaultRenderValue])\n\n const clearSearch = () => {\n del(query)\n }\n\n if (renderValue) {\n return (\n <div className=\"tags\">\n <Tag\n id={defaultRenderValue}\n name={renderValue}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import useSetState from '../../hooks/useSetState'\nimport {\n ItemsActionsProvider,\n AllItemsCheckbox,\n ItemsActionsDropdown,\n} from '../selected_items_actions'\nimport { Pagination } from '../pagination'\nimport { RItem } from '../item'\nimport { SearchLabels } from '../search_labels'\nimport { SearchOptionsLabels } from '../search_options_labels'\nimport { SearchVocabularyLabels } from '../search_vocabulary_labels'\nimport { useTraversal } from '../../contexts'\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useEffect } from 'react'\nimport { useLocation } from '../../hooks/useLocation'\nimport { Select } from '../input/select'\nimport { Input } from '../input/input'\nimport { SelectVocabulary } from '../input/select_vocabulary'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\nimport { SearchItem } from '../../types/guillotina'\n\ninterface InitialState {\n page: number\n items: SearchItem[]\n loading: boolean\n total: number\n}\nconst initialState: InitialState = {\n page: 0,\n items: [],\n loading: true,\n total: 0,\n}\n\nexport function PanelItems() {\n const [location, setLocation, del] = useLocation()\n const { PageSize, SearchEngine } = useConfig()\n const intl = useIntl()\n\n const Ctx = useTraversal()\n const [state, setState] = useSetState<InitialState>(initialState)\n const { items, loading, total } = state\n\n const filterSchema =\n Ctx.registry.getSchemas(Ctx.context['@type']).filters || []\n\n const columns =\n Ctx.registry.getItemsColumn(Ctx.context['@type']) ||\n Ctx.client.getItemsColumn()\n\n const search = location.get('q')\n const type = location.get('type')\n const sort = location.get('sort')\n const sortDirection = location.get('sort_direction')\n let page\n\n try {\n page = parseInt(location.get('page')) || 0\n } catch {\n page = 0\n }\n\n let searchParsed = undefined\n if (search && search !== '') {\n const fieldsToFilter = Ctx.registry.getFieldsToFilter(Ctx.context['@type'])\n searchParsed = parser(search, fieldsToFilter)\n }\n\n let typeParsed = undefined\n if (type && type !== '') {\n typeParsed = parser(type, 'type_name')\n }\n\n let sortParsed = undefined\n if (sort && sort !== '') {\n if (sortDirection === 'asc') {\n sortParsed = parser(`_sort_asc=${sort}`)\n } else if (sortDirection === 'des') {\n sortParsed = parser(`_sort_des=${sort}`)\n }\n }\n\n const onSort = (key) => {\n if (sort === key && sortDirection === 'des') {\n setLocation({\n sort: key,\n sort_direction: 'asc',\n page: 0,\n })\n } else {\n setLocation({\n sort: key,\n sort_direction: 'des',\n page: 0,\n })\n }\n }\n\n let resultQueryParams = []\n const resultDynamicLocation = []\n filterSchema.forEach((filter) => {\n const itemParam = location.get(filter.attribute_key)\n resultDynamicLocation.push(itemParam)\n if (itemParam) {\n const filterParsed = parser(itemParam, filter.attribute_key)\n resultQueryParams = [...resultQueryParams, ...filterParsed]\n }\n })\n\n useEffect(() => {\n const controller = new AbortController()\n if (Ctx.state.loading) return\n ;(async () => {\n setState({ loading: true, total: Ctx.context.length })\n const { get } = Ctx.registry\n const fnName = get('searchEngineQueryParamsFunction', SearchEngine)\n if (sortParsed === undefined) {\n const defaultSortValue = Ctx.registry.getDefaultSortValue(\n Ctx.context['@type'],\n {\n key: 'id',\n direction: 'des',\n }\n )\n sortParsed = parser(\n `_sort_${defaultSortValue.direction}=${defaultSortValue.key}`\n )\n }\n const qsParsed = Ctx.client[fnName]({\n path: Ctx.path,\n start: page * PageSize,\n pageSize: PageSize,\n })\n let qs = ''\n if (search || type || resultQueryParams.length > 0) {\n qs = buildQs([\n ...qsParsed,\n ...(searchParsed ?? []),\n ...(typeParsed ?? []),\n ...(sortParsed ?? []),\n ...resultQueryParams,\n ])\n } else {\n qs = buildQs([...qsParsed, ...(sortParsed ?? [])])\n }\n\n const { signal } = controller\n const data = await Ctx.client.search(Ctx.path, qs, false, false, {\n signal,\n })\n setState({\n items: data.member,\n loading: false,\n total: data.items_count,\n })\n })()\n return () => {\n controller.abort()\n }\n }, [\n search,\n type,\n Ctx.state.refresh,\n page,\n sort,\n sortDirection,\n ...resultDynamicLocation,\n ])\n\n const doPaginate = (page) => {\n setLocation({ page: page })\n }\n\n const getIcon = (key, isSortable) => {\n let icon = null\n if (isSortable) {\n if (sort !== key) {\n icon = <i className=\"fas fa-sort\" />\n } else if (sortDirection === 'des') {\n icon = <i className=\"fas fa-sort-down\" />\n } else {\n icon = <i className=\"fas fa-sort-up\"></i>\n }\n }\n return <span className=\"icon is-small\">{icon}</span>\n }\n\n return (\n <ItemsActionsProvider items={items}>\n {filterSchema.length > 0 && (\n <div className=\"filters-items-view\">\n {filterSchema.map((filter) => {\n if (filter.type === 'select' && (filter.values ?? []).length > 0) {\n return (\n <Select\n key={`filter-${filter.attribute_key}`}\n id={filter.attribute_key}\n placeholder={filter.label}\n appendDefault\n classWrap=\"is-size-7 is-fullwidth\"\n options={filter.values}\n value={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n } else if (filter.type === 'select' && filter.vocabulary) {\n return (\n <SelectVocabulary\n key={`filter-${filter.attribute_key}`}\n id={filter.attribute_key}\n placeholder={filter.label}\n appendDefault\n vocabularyName={filter.vocabulary}\n classWrap=\"is-size-7 is-fullwidth\"\n val={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n } else if (filter.type === 'input') {\n return (\n <Input\n id={filter.attribute_key}\n key={`filter-${filter.attribute_key}`}\n placeholder={filter.label}\n className=\"is-size-7 is-fullwidth\"\n type={filter.input_type || 'text'}\n value={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n }\n return null\n })}\n </div>\n )}\n <div className=\"wrapper-filters-info\">\n <div className=\"is-size-7\">\n <ItemsActionsDropdown />\n </div>\n <div className=\"wrapper-filters-tags\">\n {location.get('q') && <SearchLabels />}\n {location.get('type') && <SearchLabels query=\"type\" />}\n\n {(filterSchema ?? []).map((filter) => {\n const filterData = location.get(filter.attribute_key)\n if (filterData) {\n if (filter.type === 'select' && filter.vocabulary) {\n return (\n <div key={filter.attribute_key}>\n <SearchVocabularyLabels\n query={filter.attribute_key}\n vocabularyName={filter?.vocabulary}\n />\n </div>\n )\n } else if (\n filter.type === 'select' &&\n (filter.values ?? []).length > 0\n ) {\n return (\n <div key={filter.attribute_key}>\n <SearchOptionsLabels\n query={filter.attribute_key}\n options={filter?.values}\n />\n </div>\n )\n }\n return (\n <div key={filter.attribute_key}>\n <SearchLabels query={filter.attribute_key} />\n </div>\n )\n }\n return null\n })}\n </div>\n <div>\n <Pagination\n current={page}\n total={total}\n key=\"pagination-top\"\n doPaginate={doPaginate}\n pager={PageSize}\n />\n </div>\n </div>\n\n {loading && <div className=\"progress-line\"></div>}\n {!loading && (\n <table\n className=\"table is-fullwidth is-hoverable\"\n data-test=\"itemPanelTableTest\"\n >\n <thead className=\"is-size-7\">\n <tr>\n <th>\n <AllItemsCheckbox />\n </th>\n {columns.map((column) => (\n <th\n key={`table-col-${column.label}`}\n onClick={() => column.isSortable && onSort(column.key)}\n data-test={`sortableColumn${column.key}`}\n >\n <div className=\"has-text-info is-flex is-align-items-center\">\n <span>{column.label}</span>\n {getIcon(column.key, column.isSortable)}\n </div>\n </th>\n ))}\n <th>&nbsp;</th>\n </tr>\n </thead>\n <tbody>\n {items &&\n items.map((item) => (\n <RItem\n item={item}\n key={item['@uid']}\n search={search}\n columns={columns}\n />\n ))}\n {items && items.length === 0 && (\n <tr>\n <td colSpan={6} className=\"has-text-centered\">\n {intl.formatMessage(genericMessages.no_results)}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n )}\n <div className=\"columns is-centered\">\n <Pagination\n current={page}\n key=\"pagination-bottom\"\n total={total}\n doPaginate={doPaginate}\n pager={PageSize}\n />\n </div>\n </ItemsActionsProvider>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { get } from '../lib/utils'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { GuillotinaCommonObject, GuillotinaSchema } from '../types/guillotina'\n\ninterface Props {\n context: GuillotinaCommonObject\n schema: GuillotinaSchema\n}\nexport function BehaviorsView({ context, schema }: Props) {\n const Ctx = useTraversal()\n const { getBehavior } = Ctx.registry\n\n const behaviors = [].concat(\n context.__behaviors__,\n context['@static_behaviors']\n )\n const GetBehavior = (b) => {\n const Cls = getBehavior(b, BehaviorNotImplemented)\n return (\n <Cls\n values={context[b]}\n properties={get(schema, ['definitions', b, 'properties'], {})}\n />\n )\n }\n\n return (\n <>\n {behaviors.map((behavior) => (\n <div className=\"container\" key={behavior}>\n <h3 className=\"title is-size-6 has-text-grey\">{behavior}</h3>\n {GetBehavior(behavior)}\n <hr />\n </div>\n ))}\n </>\n )\n}\n\nexport function BehaviorNotImplemented() {\n const intl = useIntl()\n return (\n <tr>\n <td colSpan={3}>{intl.formatMessage(genericMessages.not_implemented)}</td>\n </tr>\n )\n}\n","import React from 'react'\nimport { useTraversal } from '../contexts'\n\nexport function PropertiesButtonView() {\n const Ctx = useTraversal()\n const { getProperties } = Ctx.registry\n\n const Props = getProperties(Ctx.context['@type'])\n\n if (Props.Buttons) {\n const Element = React.cloneElement(Props.Buttons, { Ctx: Ctx })\n return Element\n }\n return null\n}\n\nexport function PropertiesView() {\n const Ctx = useTraversal()\n const { getProperties } = Ctx.registry\n const Props = getProperties(Ctx.context['@type'])\n\n if (Props.Panels) {\n const Element = React.cloneElement(Props.Panels, { Ctx: Ctx })\n return Element\n }\n return null\n}\n","import { useEffect } from 'react'\nimport { ItemModel } from '../../models'\nimport { BehaviorsView } from '../behavior_view'\nimport { Icon } from '../ui/icon'\nimport { EditableField } from '../fields/editableField'\nimport { PropertiesButtonView } from '../properties_view'\nimport { PropertiesView } from '../properties_view'\nimport { useConfig } from '../../hooks/useConfig'\nimport useSetState from '../../hooks/useSetState'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport {\n GuillotinaSchema,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\n\nconst _showProperties = ['@id', '@name', '@uid']\nconst _ignoreFields = [\n 'guillotina.behaviors.dublincore.IDublinCore',\n 'guillotina.behaviors.attachment.IAttachment',\n 'guillotina.behaviors.attachment.IMultiAttachment',\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior',\n 'guillotina.contrib.image.behaviors.IImageAttachment',\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment',\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment',\n '__behaviors__',\n 'type_name',\n 'creation_date',\n 'modification_date',\n 'uuid',\n 'title',\n]\n\ninterface State {\n data: GuillotinaSchema\n loading: boolean\n error: string\n}\n\nexport function PanelProperties() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const cfg = useConfig()\n\n const [schema, setSchema] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n const model = new ItemModel(Ctx.context)\n\n const showProperties =\n Ctx.registry.getProperties(Ctx.context['@type']).default ||\n cfg.properties_default ||\n _showProperties\n\n const ignoreFields =\n Ctx.registry.getProperties(Ctx.context['@type']).ignoreField ||\n cfg.properties_ignore_fields ||\n _ignoreFields\n\n const properties = Object.keys(schema?.data?.properties || [])\n .filter((key) => !ignoreFields.includes(key))\n .map((key) => ({\n key,\n value: schema.data.properties[key] as GuillotinaSchemaProperty,\n }))\n\n useEffect(() => {\n async function getSchema() {\n if (!schema.loading && !schema.data && !schema.error) {\n try {\n setSchema({ loading: true })\n const dataJson = await Ctx.client.getTypeSchema(Ctx.path, model.type)\n setSchema({ loading: false, data: dataJson })\n } catch (err) {\n setSchema({ loading: false, error: err })\n }\n }\n }\n getSchema()\n }, [schema])\n\n return (\n <div className=\"container\">\n <div className=\"level\">\n <div className=\"level-left\">\n <h2 className=\"title is-size-4 is-primary\">\n <Icon icon={model.icon} align=\"is-left\" className=\"has-text-grey\" />\n &nbsp;\n <span>{Ctx.context.title || Ctx.context['@name']}</span>\n </h2>\n </div>\n <div className=\"level-right\">\n <PropertiesButtonView />\n </div>\n </div>\n\n <hr />\n {schema && schema.data && !schema.loading && (\n <div className=\"columns\">\n <div className=\"column\">\n <table className=\"table is-striped is-fullwidth is-size-7\">\n <thead>\n <tr>\n <th style={{ width: '150px' }} className=\"is-2\">\n {intl.formatMessage(genericMessages.property)}\n </th>\n <th className=\"is-8\">\n {intl.formatMessage(genericMessages.value)}\n </th>\n </tr>\n </thead>\n <tbody>\n {showProperties.map((prop) => (\n <tr key={'prop' + prop}>\n <td style={{ width: '150px' }}>{prop}</td>\n <td>\n <EditableField\n field={prop}\n value={Ctx.context[prop]}\n modifyContent={false}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {properties.length > 0 && (\n <table className=\"table is-striped is-fullwidth is-size-7\">\n <thead>\n <tr>\n <th style={{ width: '150px' }} className=\"is-2\">\n {intl.formatMessage(genericMessages.property)}\n </th>\n <th className=\"is-8\">\n {intl.formatMessage(genericMessages.value)}\n </th>\n </tr>\n </thead>\n <tbody>\n {properties.map(({ key, value }) => {\n return (\n <tr key={'prop' + key}>\n <td style={{ width: '150px' }}>{value.title || key}</td>\n <td>\n <EditableField\n field={key}\n value={Ctx.context[key]}\n schema={value}\n modifyContent={modifyContent}\n required={(schema.data?.required ?? []).includes(\n key\n )}\n />\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n )}\n <PropertiesView />\n <BehaviorsView context={Ctx.context} schema={schema.data} />\n </div>\n </div>\n )}\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n principal: string\n permission: string[]\n setting: string\n error: string\n}\ninterface Props {\n principals: { text: string; value: string }[]\n permissions: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionPrinperm({\n principals,\n permissions,\n operations,\n refresh,\n}: Props) {\n const Ctx = useTraversal()\n const intl = useIntl()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n principal: undefined,\n permission: [],\n setting: undefined,\n error: undefined,\n })\n\n const getMultiples = (field, setter) => (values) => {\n setter({ [field]: values })\n }\n\n const savePermission = async () => {\n if (!state.principal || !state.setting || state.permission.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form) })\n return\n }\n setState({ error: undefined })\n const data = {\n prinperm: state.permission.map((perm) => ({\n principal: state.principal,\n permission: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_principal)}\n </label>\n <Select\n appendDefault\n options={principals}\n onChange={(value: string) => setState({ principal: value })}\n dataTest=\"selectPrincipalTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_permissions)}\n </label>\n <Select\n options={permissions}\n onChange={getMultiples('permission', setState)}\n size={5}\n multiple\n dataTest=\"selectPermissionsTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value: string) => setState({ setting: value })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n principal: string\n roles: string[]\n setting: string\n error: string\n}\ninterface Props {\n principals: { text: string; value: string }[]\n roles: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionPrinrole({\n principals,\n roles,\n operations,\n refresh,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n principal: undefined,\n roles: [],\n setting: undefined,\n error: undefined,\n })\n\n const getMultiples = (field, setter) => (values) => {\n setter({ [field]: values })\n }\n\n const savePermission = async () => {\n if (!state.principal || !state.setting || state.roles.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form_data) })\n return\n }\n setState({ error: undefined })\n const data = {\n prinrole: state.roles.map((perm) => ({\n principal: state.principal,\n role: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_principal)}\n </label>\n <Select\n appendDefault\n options={principals}\n onChange={(value: string) => setState({ principal: value })}\n dataTest=\"selectPrincipalTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_role)}\n </label>\n <Select\n options={roles}\n onChange={getMultiples('roles', setState)}\n size={5}\n multiple\n dataTest=\"selectRoleTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value: string) => setState({ setting: value })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n role: string\n permission: string[]\n setting: string\n error: string\n}\ninterface Props {\n roles: { text: string; value: string }[]\n permissions: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionRoleperm({\n roles,\n permissions,\n operations,\n refresh,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n role: undefined,\n permission: [],\n setting: undefined,\n error: undefined,\n })\n\n const getMultiples = (field, setter) => (values) => {\n setter({ [field]: values })\n }\n\n const savePermission = async () => {\n if (!state.role || !state.setting || state.permission.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form) })\n return\n }\n setState({ error: undefined })\n const data = {\n roleperm: state.permission.map((perm) => ({\n role: state.role,\n permission: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_role)}\n </label>\n <Select\n appendDefault\n options={roles}\n onChange={(value: string) => setState({ role: value })}\n dataTest=\"selectRoleTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_permissions)}\n </label>\n <Select\n options={permissions}\n onChange={getMultiples('permission', setState)}\n dataTest=\"selectPermissionsTest\"\n size={5}\n multiple\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value: string) => setState({ setting: value })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import useSetState from '../../hooks/useSetState'\nimport { PermissionPrinperm } from './permissions_prinperm'\nimport { PermissionPrinrole } from './permissions_prinrole'\nimport { PermissionRoleperm } from './permissions_roleperm'\nimport { Select } from '../input/select'\nimport { Sharing } from '../../models'\nimport { Table } from '../ui/table'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useState } from 'react'\nimport { GuillotinaSharing } from '../../types/guillotina'\n\nconst messages = defineMessages({\n role_permissions: {\n id: 'role_permissions',\n defaultMessage: 'Role Permissions',\n },\n no_role_permissions: {\n id: 'no_role_permissions',\n defaultMessage: 'No roles permissions defined',\n },\n no_principal_permissions: {\n id: 'no_principal_permissions',\n defaultMessage: 'No principal permissions defined',\n },\n no_principal_roles: {\n id: 'no_principal_roles',\n defaultMessage: 'No principal roles defined',\n },\n principal_permissions: {\n id: 'principal_permissions',\n defaultMessage: 'Principal Permissions',\n },\n principal_roles: {\n id: 'principal_roles',\n defaultMessage: 'Principal Roles',\n },\n allow: {\n id: 'allow',\n defaultMessage: 'Allow',\n },\n deny: {\n id: 'deny',\n defaultMessage: 'Deny',\n },\n allow_single: {\n id: 'allow_single',\n defaultMessage: 'AllowSingle',\n },\n unset: {\n id: 'unset',\n defaultMessage: 'Unset',\n },\n add_permissions: {\n id: 'add_permissions',\n defaultMessage: 'Add Permissions',\n },\n select_type: {\n id: 'select_type',\n defaultMessage: 'Select a type:',\n },\n})\n\nexport function PanelPermissions() {\n const intl = useIntl()\n const { get, result, loading } = useCrudContext<GuillotinaSharing>()\n const ctx = useTraversal()\n\n const [reset, setReset] = useState(1)\n\n useEffect(() => {\n get('@sharing')\n }, [reset])\n\n const perms = new Sharing(result)\n\n return (\n <div className=\"columns\">\n {!loading && (\n <div\n className=\"column is-8 is-size-7 permissions\"\n data-test=\"containerPermissionsInfoTest\"\n >\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.role_permissions)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.roles.map((role, idx) => (\n <Fragment key={'ff' + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n {/* <td>\n <Icon icon=\"fas fa-ban\" />\n <span>Remove</span>\n </td> */}\n </tr>\n {Object.keys(perms.getRole(role)).map((row, idx) => (\n <tr key={'k' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getRole(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.roles.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_role_permissions)}\n </td>\n </tr>\n )}\n </Table>\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.principal_permissions)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.principals.map((role, idx) => (\n <Fragment key={'f2' + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n </tr>\n {Object.keys(perms.getPrincipals(role)).map((row, idx) => (\n <tr key={'x' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getPrincipals(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.principals.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_principal_permissions)}\n </td>\n </tr>\n )}\n </Table>\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.principal_roles)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.prinrole.map((role, idx) => (\n <Fragment key={role + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n </tr>\n {Object.keys(perms.getPrinroles(role)).map((row, idx) => (\n <tr key={'xx' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getPrinroles(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.prinrole.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_role_permissions)}\n </td>\n </tr>\n )}\n </Table>\n </div>\n )}\n {ctx.hasPerm('guillotina.ChangePermissions') && (\n <AddPermission refresh={setReset} reset={reset} />\n )}\n </div>\n )\n}\n\ninterface State {\n permissions: { text: string; value: string }[]\n roles: { text: string; value: string }[]\n principals: { text: string; value: string }[]\n current: string\n}\nconst initial: State = {\n permissions: undefined,\n roles: [],\n principals: undefined,\n current: '',\n}\n\ninterface AddPermissionProps {\n refresh: (state: number) => void\n reset: number\n}\nexport function AddPermission({ refresh, reset }: AddPermissionProps) {\n const Ctx = useTraversal()\n const [state, setState] = useSetState<State>(initial)\n const intl = useIntl()\n\n const operations = [\n { text: intl.formatMessage(messages.allow), value: 'Allow' },\n { text: intl.formatMessage(messages.deny), value: 'Deny' },\n { text: intl.formatMessage(messages.allow_single), value: 'AllowSingle' },\n { text: intl.formatMessage(messages.unset), value: 'Unset' },\n ]\n\n const defaultOptions = [\n { text: intl.formatMessage(genericMessages.choose), value: '' },\n { text: intl.formatMessage(messages.role_permissions), value: 'roleperm' },\n {\n text: intl.formatMessage(messages.principal_permissions),\n value: 'prinperm',\n },\n { text: intl.formatMessage(messages.principal_roles), value: 'prinrole' },\n ]\n\n useEffect(() => {\n async function init() {\n const permissions = (await Ctx.client.getAllPermissions(Ctx.path)).map(\n (perm) => ({\n text: perm,\n value: perm,\n })\n )\n let principals = []\n let roles = []\n\n const principalsData = await Ctx.client.getPrincipals(Ctx.path)\n const groups = principalsData.groups.map((group) => ({\n text: group.id,\n value: group.id,\n }))\n const users = principalsData.users.map((user) => ({\n text: user.fullname || user.id,\n value: user.id,\n }))\n principals = [...groups, ...users]\n\n const req = await Ctx.client.getRoles(Ctx.path)\n if (req.ok) {\n roles = (await req.json()).map((role) => ({\n text: role,\n value: role,\n }))\n }\n setState({ permissions, roles, principals })\n }\n\n init()\n }, [reset])\n\n return (\n <div className=\"column is-4 is-size-7\">\n <h1 className=\"title is-size-5\">\n {intl.formatMessage(messages.add_permissions)}\n </h1>\n <p>{intl.formatMessage(messages.select_type)}</p>\n <Select\n options={defaultOptions}\n onChange={(value: string) => setState({ current: value })}\n dataTest=\"selectPermissionTypeTest\"\n />\n <hr />\n {state.current && state.current === 'roleperm' && (\n <PermissionRoleperm\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n {state.current && state.current === 'prinperm' && (\n <PermissionPrinperm\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n {state.current && state.current === 'prinrole' && (\n <PermissionPrinrole\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n </div>\n )\n}\n","import { Select } from '../input/select'\nimport { Tag } from '../ui/tag'\nimport { Loading } from '../ui/loading'\nimport { useRef, useState } from 'react'\n\nconst prepareAvailable = (items, already, title) => {\n const def = { value: '', text: `Add ${title}` }\n if (items.length === 0) return []\n if (items[0] && typeof items[0] === 'string') {\n return [def]\n .concat(items.map((x) => ({ value: x, text: x })))\n .filter((item) => !already.includes(item.value))\n }\n return [def].concat(items).filter((item) => !already.includes(item.value))\n}\n\ninterface Props {\n items: string[]\n available?: string[]\n title: string\n noData: string\n onChange: (items: string[]) => void\n loading?: boolean\n}\nexport function TagsWidget({\n items,\n available,\n title,\n noData,\n onChange,\n loading,\n}: Props) {\n const selectRef = useRef<HTMLSelectElement>()\n\n const [result, setResult] = useState(items)\n const availableData = prepareAvailable(available || [], result, title)\n\n const remove = (value) => {\n const items = result.filter((item) => item !== value)\n setResult(items)\n onChange(items)\n }\n\n const addItem = (value) => {\n if (value === '') return\n const items = result.concat([value])\n setResult(items)\n onChange(items)\n }\n\n return (\n <>\n <h3 className=\"title is-size-6\">{title}</h3>\n {loading ? <Loading style={{ marginBottom: '1.5rem' }} /> : <hr />}\n <ul>\n <div className=\"tags\">\n {result.map((item) => (\n <Tag\n id={item}\n name={item}\n onRemove={() => remove(item)}\n key={item}\n />\n ))}\n </div>\n {result.length === 0 && (\n <li style={{ marginBottom: '20px' }}>{noData}</li>\n )}\n {available.length > 1 && (\n <li className=\"widget-list-add select is-small\">\n <Select\n options={availableData}\n ref={selectRef}\n onChange={(value) => {\n addItem(value)\n if (selectRef.current) {\n selectRef.current.value = ''\n }\n }}\n />\n </li>\n )}\n </ul>\n </>\n )\n}\n","import { useEffect, useState } from 'react'\n\nimport Dropdown from './input/dropdown'\nimport useSetState from '../hooks/useSetState'\nimport { Button } from './input/button'\nimport { Icon } from './ui/icon'\nimport { useTraversal } from '../contexts'\nimport { useConfig } from '../hooks/useConfig'\nimport { useLocation } from '../hooks/useLocation'\nimport { Select } from './input/select'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\ninterface State {\n types?: string[]\n isActive?: boolean\n}\nconst initialState = { types: undefined }\n\nexport function CreateButton() {\n const intl = useIntl()\n const [state, setState] = useSetState<State>(initialState)\n const Ctx = useTraversal()\n const Config = useConfig()\n useEffect(() => {\n async function anyNameFunction() {\n const types = await Ctx.client.getTypes(Ctx.path)\n setState({\n types: types.filter((item) => !Config.DisabledTypes.includes(item)),\n })\n }\n anyNameFunction()\n }, [Ctx.path])\n\n const doAction = (item) => {\n Ctx.doAction('addItem', { type: item })\n setState({ isActive: false })\n }\n\n if (state.types && state.types.length === 1) {\n return (\n <Button\n className={'is-small is-success'}\n onClick={() => doAction(state.types[0])}\n dataTest=\"itemAddTypeTest\"\n >\n {intl.formatMessage(genericMessages.add_type, { type: state.types[0] })}\n </Button>\n )\n }\n\n if (state.types && state.types.length === 0) {\n return null\n }\n\n // Implement some kind of filtering\n return (\n <Dropdown\n id=\"dropdown-menu\"\n isRight\n onChange={doAction}\n options={(state.types || []).map((item) => ({ text: item, value: item }))}\n >\n <span className=\"icon\" data-test=\"itemAddTypeTest\">\n <i className=\"fas fa-plus\"></i>\n </span>\n </Dropdown>\n )\n}\n\ninterface Props {\n AddButton?: React.FC\n}\nexport function ContextToolbar({ AddButton }: Props) {\n const intl = useIntl()\n const [state, setState] = useSetState<State>(initialState)\n const [location, setLocation, del] = useLocation()\n const traversal = useTraversal()\n const Config = useConfig()\n const searchText = location.get('q')\n const [searchValue, setSearchValue] = useState(searchText || '')\n\n useEffect(() => {\n loadTypes()\n }, [traversal.path])\n\n useEffect(() => {\n setSearchValue(searchText)\n }, [searchText])\n\n async function loadTypes() {\n const types = await traversal.client.getTypes(traversal.path)\n setState({\n types: types.filter((item) => !Config.DisabledTypes.includes(item)),\n })\n }\n\n const onSearchQuery = (ev) => {\n const search = ev.target[0].value\n setLocation({ q: search, tab: 'Items', page: 0 })\n ev.preventDefault()\n }\n\n const onSearchByType = (typeText) => {\n if (typeText && typeText !== '') {\n setLocation({ type: typeText, tab: 'Items', page: 0 })\n } else {\n del('type')\n }\n }\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n value={searchValue || ''}\n onChange={(ev) => setSearchValue(ev.target.value)}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <div className=\"level-item\">\n <Select\n appendDefault\n dataTest=\"selectFilterTypeTest\"\n classWrap=\"is-size-7\"\n options={(state.types || []).map((item) => ({\n text: item,\n value: item,\n }))}\n onChange={onSearchByType}\n />\n </div>\n {traversal.hasPerm('guillotina.AddContent') && (\n <div className=\"level-item\">\n {AddButton !== undefined ? <AddButton /> : <CreateButton />}\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { Notification } from './ui/notification'\nimport { Delete } from './ui/delete'\n\nexport function Flash() {\n const Ctx = useTraversal()\n const { flash } = Ctx.state\n\n if (!flash.message) return null\n\n return (\n <Notification isColor={flash.type}>\n {flash.message}\n <Delete onClick={() => Ctx.clearFlash()} />\n </Notification>\n )\n}\n","import React, { useState } from 'react'\nimport { useLocation } from '../hooks/useLocation'\nimport { IndexSignature } from '../types/global'\n\nfunction FallbackTab({ title }: { title: string }) {\n return <div>Tab &apos;{title}&apos; not found</div>\n}\n\ninterface Props {\n tabs: IndexSignature\n currentTab?: string\n rightToolbar?: React.ReactNode\n fallback?: React.ComponentType\n}\n\nexport function TabsPanel({\n tabs,\n currentTab,\n rightToolbar,\n fallback = FallbackTab,\n}: Props) {\n const [location, setLocation] = useLocation()\n\n if (location.get('tab')) {\n currentTab = location.get('tab')\n } else {\n currentTab = currentTab || Object.keys(tabs)[0]\n }\n\n /*if (!Object.keys(tabs).includes(currentTab)) {\n setLocation(defaultTab)\n currentTab = defaultTab\n }*/\n\n const [current, setTab] = useState(currentTab)\n const CurrentComp = tabs[current] || fallback\n\n React.useEffect(() => {\n if (Object.keys(tabs).includes(currentTab)) {\n setTab(currentTab)\n // setLocation({tab: currentTab})\n }\n }, [currentTab, tabs])\n\n const changeTab = (tab) => {\n setLocation({ tab: tab })\n }\n\n return (\n <div className=\"container\">\n <div className=\"level is-flex-wrap-wrap\">\n <div className=\"level-left mb-4\">\n <div className=\"tabs\">\n <ul>\n {Object.keys(tabs).map((tab) => (\n <li\n className={\n 'is-size-7 ' + (tab === current ? 'is-active' : '')\n }\n key={tab}\n >\n <a\n data-test={`tabTest-${tab.toLowerCase()}`}\n onClick={() => changeTab(tab)}\n >\n {tab}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n {rightToolbar && <div className=\"level-right\">{rightToolbar}</div>}\n </div>\n <div className=\"container\">\n <CurrentComp title={current} />\n </div>\n </div>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { ContextToolbar } from '../components/context_toolbar'\nimport { PanelItems } from '../components/panel/items'\nimport { PanelActions } from '../components/panel/actions'\nimport { useTraversal } from '../contexts'\nimport { PanelProperties } from '../components/panel/properties'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\n\nconst tabs = {\n Items: PanelItems,\n Properties: PanelProperties,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Items: 'guillotina.ViewContent',\n Properties: 'guillotina.ViewContent',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function FolderCtx(props) {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n\n return (\n <TabsPanel\n tabs={calculated}\n currentTab=\"Items\"\n rightToolbar={<ContextToolbar {...props} />}\n {...props}\n />\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { useTraversal } from '../contexts'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\nimport { PanelProperties } from '../components/panel/properties'\nimport { PanelActions } from '../components/panel/actions'\n\nconst tabs = {\n Properties: PanelProperties,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Properties: 'guillotina.ViewContent',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function ItemCtx(props) {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n\n return <TabsPanel tabs={calculated} currentTab=\"Properties\" {...props} />\n}\n","import { Item } from '../components/item'\nimport { ItemTitle } from '../components/item'\nimport { Button } from '../components/input/button'\nimport { useState } from 'react'\nimport { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { Form } from '../components/input/form'\nimport { Input } from '../components/input/input'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\nexport function ApplicationCtx() {\n const intl = useIntl()\n const context = useTraversal()\n const { databases } = context.state.context\n return (\n <>\n <h3>\n {intl.formatMessage({\n id: 'databases',\n defaultMessage: 'Databases',\n })}\n </h3>\n <div className=\"container\">\n <ItemTitle title=\"Objects\" />\n {databases.map((db) => (\n <Item\n item={{ id: db, path: `/${db}/` }}\n key={db}\n icon={'fas fa-database'}\n />\n ))}\n </div>\n </>\n )\n}\n\nexport function DatabaseCtx() {\n const context = useTraversal()\n const { containers } = context.state.context\n const { path } = context.state\n return (\n <>\n <div className=\"container\">\n <ItemTitle title=\"Containers\" actions={<CreateContainer />} />\n <table className=\"table is-fullwidth is-hoverable\">\n <tbody>\n {containers.map((db) => (\n <Item\n item={{ id: db, path: `${path}${db}/` }}\n key={db}\n icon={'fas fa-archive'}\n />\n ))}\n </tbody>\n </table>\n </div>\n </>\n )\n}\n\nexport function CreateContainer() {\n const intl = useIntl()\n const [isActive, setActive] = useState(false)\n\n return (\n <>\n <ModalAddContainer isActive={isActive} setActive={setActive} />\n <button\n className=\"button is-warning is-pulled-right\"\n onClick={() => setActive(true)}\n >\n <span className=\"icon is-small\">\n <i className=\"fas fa-plus\"></i>\n </span>\n <span>{intl.formatMessage(genericMessages.create)}</span>\n </button>\n </>\n )\n}\n\nexport const messages = defineMessages({\n add_container: {\n id: 'add_container',\n defaultMessage: 'Add Container',\n },\n container_created: {\n id: 'container_created',\n defaultMessage: 'Container Created',\n },\n})\n\ninterface ModalAddContainerProps {\n isActive: boolean\n setActive: (value: boolean) => void\n}\nfunction ModalAddContainer({ isActive, setActive }: ModalAddContainerProps) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const [isLoading, setLoading] = useState(false)\n const [idField, setId] = useState('')\n const [error, setError] = useState(undefined)\n\n async function createContainer() {\n setLoading(true)\n const data = {\n '@type': 'Container',\n id: idField,\n }\n try {\n const res = await Ctx.client.createObject(Ctx.path, data)\n const result = await res.json()\n if (res.status === 200) {\n Ctx.refresh()\n setId('')\n setLoading(false)\n setActive(false)\n Ctx.flash(intl.formatMessage(messages.container_created), 'primary')\n } else {\n setId('')\n setLoading(false)\n setError(result.message)\n }\n } catch {\n setError('Error-submitting-form')\n setLoading(false)\n }\n }\n\n return (\n <Modal isActive={isActive} setActive={setActive}>\n <Form\n onSubmit={createContainer}\n title={intl.formatMessage(messages.add_container)}\n error={error}\n >\n <Input\n required\n placeholder=\"Container Name\"\n onChange={(v) => {\n setId(v)\n }}\n value={idField}\n loading={isLoading}\n />\n <Button loading={isLoading}>\n {intl.formatMessage(messages.add_container)}\n </Button>\n </Form>\n </Modal>\n )\n}\n","import { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\ninterface Props {\n title: string\n}\nexport function PanelNotImplemented(props: Props) {\n const intl = useIntl()\n return (\n <div className=\"container\">\n <h2 className=\"title\">{props.title}</h2>\n <p>{intl.formatMessage(genericMessages.not_implemented)}</p>\n </div>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { ContextToolbar } from '../components/context_toolbar'\nimport { PanelItems } from '../components/panel/items'\nimport { PanelActions } from '../components/panel/actions'\nimport { PanelAddons } from '../components/panel/addons'\nimport { useTraversal } from '../contexts'\nimport { PanelNotImplemented } from './base'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\n\nconst tabs = {\n Items: PanelItems,\n Addons: PanelAddons,\n Registry: PanelNotImplemented,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Items: 'guillotina.ViewContent',\n Addons: 'guillotina.ManageAddons',\n Registry: 'guillotina.ReadConfiguration',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function ContainerCtx() {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n return (\n <TabsPanel\n tabs={calculated}\n currentTab=\"Items\"\n rightToolbar={<ContextToolbar />}\n />\n )\n}\n","import { FormBuilder } from '../components/input/form_builder'\nimport { useIntl } from 'react-intl'\nimport { IndexSignature } from '../types/global'\n\ninterface Props {\n children: React.ReactNode\n onSubmit: (data: IndexSignature) => void\n actionName?: string\n formData?: IndexSignature\n exclude?: string[]\n remotes?: IndexSignature\n submitButton?: boolean\n}\nexport const UserForm = ({\n children,\n actionName,\n onSubmit,\n formData,\n exclude,\n remotes,\n submitButton,\n}: Props) => {\n const intl = useIntl()\n\n const schema = {\n $schema: '',\n title: '',\n type: 'object',\n definitions: {},\n required: ['username', 'password'],\n properties: {\n username: {\n type: 'string',\n title: intl.formatMessage({\n id: 'username',\n defaultMessage: 'Username',\n }),\n },\n email: {\n type: 'string',\n title: intl.formatMessage({\n id: 'email',\n defaultMessage: 'Email',\n }),\n widget: 'email',\n },\n name: {\n type: 'string',\n title: intl.formatMessage({\n id: 'name',\n defaultMessage: 'Name',\n }),\n },\n password: {\n type: 'string',\n title: intl.formatMessage({\n id: 'password',\n defaultMessage: 'Password',\n }),\n widget: 'password',\n },\n disabled: {\n type: 'boolean',\n title: 'Disabled',\n },\n },\n }\n\n return (\n <FormBuilder\n schema={schema}\n actionName={actionName}\n onSubmit={onSubmit}\n formData={formData}\n exclude={exclude}\n remotes={remotes}\n submitButton={submitButton}\n >\n {children}\n </FormBuilder>\n )\n}\n","/*\n This hook allows to bind (remote) fields on the DOM\n to a form generated with Formbuilder.\n You can link whatever field you want...\n\n const [remoteFields, updateRemoteField] = useRemoteField({widget_1: ['a', 'b']})\n\n <Form remotes={remoteFields} onSubmit={ev => console.log(ev)}>\n <Input />\n </Form>\n\n <Widget onChange={updateRemoteField('widgte_1')}>\n\n This will add the values from a remote field into the desired widget\n\n*/\n\nimport { useState } from 'react'\nimport { IndexSignature } from '../types/global'\n\nexport const useRemoteField = (\n initial: IndexSignature<string[]>\n): [IndexSignature<string[]>, (name: string) => (value: string[]) => void] => {\n const [remotes, setRemote] = useState(initial)\n\n const updateRemote = (name: string) => (value: string[]) => {\n setRemote({\n ...remotes,\n [name]: value,\n })\n }\n\n return [remotes, updateRemote]\n}\n","import { TabsPanel } from '../components/tabs'\nimport { PanelItems } from '../components/panel/items'\nimport { useTraversal } from '../contexts'\nimport { UserForm } from '../forms/users'\nimport { formatDate } from '../lib/utils'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { TagsWidget } from '../components/widgets/tags'\nimport { Icon } from '../components/ui/icon'\nimport { Button } from '../components/input/button'\nimport { useRemoteField } from '../hooks/useRemoteField'\nimport { useLocation } from '../hooks/useLocation'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { useEffect, useRef, useState } from 'react'\n\nconst tabs = {\n Users: PanelItems,\n}\n\nexport function UsersToolbar() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const ref = useRef(null)\n const [location, setLocation] = useLocation()\n const searchText = location.get('q')\n\n const onSearchQuery = (ev) => {\n const search = ev.target[0].value\n setLocation({ q: search, page: 0 })\n ev.preventDefault()\n }\n\n // cleanup form on state.search change\n useEffect(() => {\n if (!searchText || searchText === '') {\n ref.current.value = ''\n }\n }, [searchText])\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n ref={ref}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <button\n className=\"button is-primary\"\n onClick={() => Ctx.doAction('addItem', { type: 'User' })}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <Icon icon=\"fas fa-user\" />\n <span>{intl.formatMessage(genericMessages.add_user)}</span>\n </button>\n </>\n )\n}\n\nexport function UsersCtx(props) {\n return (\n <TabsPanel\n tabs={tabs}\n currentTab=\"Users\"\n rightToolbar={<UsersToolbar />}\n {...props}\n />\n )\n}\n\ninterface State {\n roles: string[]\n groups: string[]\n}\nexport function UserCtx() {\n const intl = useIntl()\n const { Ctx, patch, loading } = useCrudContext()\n\n const [state, setState] = useState<State>({ roles: [], groups: [] })\n\n const fields = {\n user_groups: [],\n user_roles: Ctx.context.user_roles,\n }\n\n const [remotes, updateRemote] = useRemoteField(fields)\n\n useEffect(() => {\n async function getRolesAndGroups() {\n const [requestGetGroups, requestGetRoles] = await Promise.all([\n Ctx.client.search(Ctx.path, { type_name: 'Group' }, true),\n Ctx.client.getRoles(Ctx.path),\n ])\n\n const groups = requestGetGroups\n let roles = []\n\n if (requestGetRoles.ok) {\n roles = await requestGetRoles.json()\n }\n\n setState({\n roles: roles,\n groups: groups.items.map((item) => ({\n value: item.id,\n text: item['@name'],\n })),\n })\n }\n getRolesAndGroups()\n }, [])\n\n const updateObject = async (data) => {\n Ctx.apply(data)\n const { isError, errorMessage } = await patch(data)\n if (isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.failed_to_update, {\n error: errorMessage,\n }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage({\n id: 'user_updated',\n defaultMessage: 'User updated',\n }),\n 'primary'\n )\n Ctx.refresh()\n }\n }\n\n return (\n <div className=\"container\">\n <h2 className=\"title is-size-4\">\n <Icon icon=\"fas fa-user\"></Icon>\n &nbsp;\n {intl.formatMessage({\n id: 'user',\n defaultMessage: 'User',\n })}\n </h2>\n\n <hr />\n <div className=\"columns\">\n <div className=\"column\">\n <div className=\"container user-props\">\n <p>\n <label>\n {intl.formatMessage({\n id: 'username',\n defaultMessage: 'Username',\n })}\n :{' '}\n </label>{' '}\n {Ctx.context.username} ({Ctx.context.email})\n </p>\n <p>\n <label>\n {' '}\n {intl.formatMessage({\n id: 'creation_date',\n defaultMessage: 'Creation Date',\n })}\n :{' '}\n </label>{' '}\n {formatDate(Ctx.context.creation_date)}\n </p>\n <p>\n <label>\n {' '}\n {intl.formatMessage({\n id: 'modification_date',\n defaultMessage: 'Modification Date',\n })}\n :{' '}\n </label>{' '}\n {formatDate(Ctx.context.modification_date)}\n </p>\n <Button\n className=\"is-size-7 is-info\"\n onClick={() => {\n Ctx.doAction('changePassword')\n }}\n >\n {intl.formatMessage({\n id: 'change_password',\n defaultMessage: 'Change Password',\n })}\n </Button>\n </div>\n <hr />\n <UserForm\n actionName=\"Save\"\n onSubmit={(ev) => updateObject(ev)}\n formData={Ctx.context}\n exclude={['password']}\n remotes={remotes}\n submitButton={false}\n >\n <Button loading={loading} dataTest=\"formUserTestBtnSubmit\">\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </UserForm>\n </div>\n <div className=\"column\">\n <TagsWidget\n onChange={updateRemote('user_groups')}\n items={Ctx.context.user_groups}\n title=\"Groups\"\n noData={intl.formatMessage({\n id: 'there_is_no_groups_for_this_user',\n defaultMessage: 'There is no groups for this user',\n })}\n available={state.groups}\n />\n <hr />\n <TagsWidget\n onChange={updateRemote('user_roles')}\n items={remotes.user_roles}\n title=\"Roles\"\n noData={intl.formatMessage({\n id: 'the_user_doesnt_have_any_role',\n defaultMessage: \"The user doesn't have any role\",\n })}\n available={state.roles}\n />\n </div>\n </div>\n </div>\n )\n}\n","import { Fragment } from 'react'\nimport { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { getNewId } from '../lib/utils'\nimport { ItemModel } from '../models'\n\nconst withError = (res) => res.status >= 300\n\ninterface Props {\n items: Array<ItemModel>\n}\nexport function CopyItems(props: Props) {\n const Ctx = useTraversal()\n const { items = [] } = props\n\n async function copyItems(path, form) {\n const responses = await Promise.all(\n items.map((item, i) => {\n const input = form[i + 1] || {}\n return Ctx.client.post(`${Ctx.path}${item['@name']}/@duplicate`, {\n destination: path,\n new_id: input.value || getNewId(item.id),\n })\n })\n )\n\n Ctx.refresh()\n Ctx.cancelAction()\n\n if (responses.every(withError)) {\n Ctx.flash(`Oops! Items can't be copied to ${path}`, 'danger')\n return\n }\n\n if (responses.some(withError)) {\n Ctx.flash(`Some items are not copied correctly!`, 'warning')\n return\n }\n\n Ctx.flash(`Items copied!`, 'success')\n }\n\n return (\n <PathTree\n title=\"Copy to...\"\n defaultPath={Ctx.client.clearContainerFromPath(Ctx.path)}\n onConfirm={copyItems}\n onCancel={() => Ctx.cancelAction()}\n >\n {items.map((item) => (\n <Fragment key={item.id}>\n <small style={{ display: 'block', marginTop: 20 }}>\n {`New id for \"${item.id}\" copy`}\n </small>\n <input\n type=\"text\"\n className=\"input\"\n data-test={`inputCopyIdTest-${item['@name']}`}\n defaultValue={getNewId(item.id)}\n />\n </Fragment>\n ))}\n &nbsp;\n </PathTree>\n )\n}\n","import { Fragment } from 'react'\nimport { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { getNewId } from '../lib/utils'\nimport { ItemModel } from '../models'\n\ninterface Props {\n item: ItemModel\n}\n\nexport function CopyItem(props: Props) {\n const Ctx = useTraversal()\n const { post } = useCrudContext()\n const { item } = props\n\n async function copyItem(path, form) {\n const input = form[1] || {}\n const { isError, errorMessage } = await post(\n {\n destination: path,\n new_id: input.value || getNewId(item['@name']),\n },\n '@duplicate'\n )\n\n if (!isError) {\n Ctx.flash(`Field copied!`, 'success')\n } else {\n Ctx.flash(`Failed to copy item!: ${errorMessage}`, 'danger')\n }\n Ctx.refresh()\n Ctx.cancelAction()\n }\n\n return (\n <PathTree\n title=\"Copy to...\"\n defaultPath={`/${item['parent']['@name'] ?? '/'}`}\n onConfirm={copyItem}\n onCancel={() => Ctx.cancelAction()}\n >\n <Fragment>\n <small style={{ display: 'block', marginTop: 20 }}>\n {`New id for \"${item['@name']}\" copy`}\n </small>\n <input\n type=\"text\"\n className=\"input\"\n data-test={`inputCopyIdTest-${item['@name']}`}\n defaultValue={getNewId(item['@name'])}\n />\n </Fragment>\n </PathTree>\n )\n}\n","import { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { ItemModel } from '../models'\n\nconst withError = (res) => res.status >= 300\n\ninterface Props {\n items: ItemModel[]\n}\nexport function MoveItems(props: Props) {\n const Ctx = useTraversal()\n const { items = [] } = props\n\n async function moveItems(path) {\n const responses = await Promise.all(\n items.map((item) => {\n return Ctx.client.post(`${Ctx.path}${item['@name']}/@move`, {\n destination: path,\n new_id: item['@name'],\n })\n })\n )\n\n Ctx.refresh()\n Ctx.cancelAction()\n\n if (responses.every(withError)) {\n Ctx.flash(`Oops! Items can't be moved to ${path}`, 'danger')\n return\n }\n\n if (responses.some(withError)) {\n Ctx.flash(`Some items are not moved correctly!`, 'warning')\n return\n }\n\n Ctx.flash(`Items moved!`, 'success')\n }\n\n return (\n <PathTree\n title=\"Move to...\"\n onConfirm={moveItems}\n onCancel={() => Ctx.cancelAction()}\n />\n )\n}\n","import { PathTree } from '../components/modal'\nimport { useGuillotinaClient, useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { useLocation } from '../hooks/useLocation'\nimport { ItemModel } from '../models'\n\ninterface Props {\n item: ItemModel\n}\n\nexport function MoveItem(props: Props) {\n const Ctx = useTraversal()\n const { post } = useCrudContext()\n const [, navigate] = useLocation()\n const client = useGuillotinaClient()\n const { item } = props\n\n async function moveItem(path) {\n const { isError, errorMessage, result } = await post(\n {\n destination: path,\n new_id: item['@name'],\n },\n '@move'\n )\n\n if (!isError) {\n navigate({\n path: `/${client.cleanPath(result['@url'])}/`,\n tab: '',\n })\n Ctx.flash(`Field moved!`, 'success')\n } else {\n Ctx.flash(`Failed to move item!: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n }\n\n return (\n <PathTree\n title=\"Move to...\"\n onConfirm={moveItem}\n onCancel={() => Ctx.cancelAction()}\n />\n )\n}\n","import { Confirm } from '../components/modal'\nimport { useGuillotinaClient, useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { useLocation } from '../hooks/useLocation'\nimport { ItemModel } from '../models'\n\ninterface Props {\n item: ItemModel\n}\n\nexport function RemoveItem(props: Props) {\n const Ctx = useTraversal()\n const { del, loading } = useCrudContext()\n const [, navigate] = useLocation()\n const client = useGuillotinaClient()\n const { item } = props\n\n async function removeItem() {\n const { isError, errorMessage } = await del()\n\n if (!isError) {\n navigate({\n path: `/${client.cleanPath(item['parent']['@id'])}/`,\n tab: '',\n })\n Ctx.flash(`Field removed!`, 'success')\n } else {\n Ctx.flash(`Failed to delete item!: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n }\n\n return (\n <Confirm\n loading={loading}\n onCancel={() => Ctx.cancelAction()}\n onConfirm={removeItem}\n message={`Are you sure to remove: ${item['@name']}?`}\n />\n )\n}\n","import { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { Input } from '../components/input/input'\nimport { Button } from '../components/input/button'\nimport { Form } from '../components/input/form'\nimport { useState } from 'react'\n\nconst initial = {\n pass1: '',\n pass2: '',\n}\n\nexport function ChangePassword() {\n const [state, setState] = useState(initial)\n const [perror, setPerror] = useState(undefined)\n\n const Ctx = useTraversal()\n const { patch } = useCrudContext()\n\n const setActive = () => {\n Ctx.cancelAction()\n }\n\n async function doSubmit() {\n if (state.pass1 === '') {\n setPerror('provide a password')\n return\n }\n\n if (state.pass1 !== state.pass2) {\n setPerror(\"passwords doesn't match\")\n return\n }\n\n setPerror(undefined)\n\n const form = {\n password: state.pass1,\n }\n\n const { isError, errorMessage } = await patch(form)\n if (!isError) {\n Ctx.flash('Password Changed', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n Ctx.refresh()\n }\n\n const setPass = (field) => (val) => {\n const n = {}\n n[field] = val\n setState((state) => ({ ...state, ...n }))\n setPerror(undefined)\n }\n\n return (\n <Modal isActive={true} setActive={setActive}>\n <Form onSubmit={doSubmit} title=\"Change Password\">\n {perror && (\n <div className=\"notification is-danger is-size-7\">\n <button className=\"delete\"></button>\n {perror}\n </div>\n )}\n <Input\n id=\"pass\"\n placeholder=\"New Password\"\n type=\"password\"\n value={state.pass1}\n onChange={setPass('pass1')}\n />\n\n <Input\n id=\"pass\"\n placeholder=\"Repeat Password\"\n type=\"password\"\n value={state.pass2}\n onChange={setPass('pass2')}\n />\n <Button>Change</Button>\n </Form>\n </Modal>\n )\n}\n","import { useState } from 'react'\nimport { Input } from '../components/input/input'\nimport { Form } from '../components/input/form'\nimport { stringToSlug } from '../lib/helpers'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\ninterface Props {\n onSubmit: (data: { title: string; id: string }) => void\n actionName?: string\n title?: string\n dataTest?: string\n loading?: boolean\n}\nexport function BaseForm({\n onSubmit,\n actionName,\n title,\n dataTest,\n loading,\n}: Props) {\n const intl = useIntl()\n const [name, setName] = useState('')\n const [id, setId] = useState('')\n const [error, setError] = useState(undefined)\n\n const submit = () => {\n if (name === '') {\n setError(intl.formatMessage(genericMessages.field_is_required))\n return\n }\n onSubmit({ title: name, id })\n }\n\n const setTitle = (value) => {\n setId(stringToSlug(value))\n setName(value)\n }\n\n return (\n <Form title={title} onSubmit={submit} dataTest={dataTest}>\n <Input\n id=\"title\"\n placeholder={intl.formatMessage(genericMessages.title)}\n required\n value={name}\n onChange={setTitle}\n autofocus\n error={error}\n dataTest=\"titleTestInput\"\n />\n\n <Input\n id=\"id\"\n placeholder=\"Id\"\n value={id}\n onChange={setId}\n dataTest=\"idTestInput\"\n />\n\n <div className=\"level level-right\">\n <button\n type=\"submit\"\n className={`button is-success ${loading ? 'is-loading' : ''}`}\n data-test=\"formBaseBtnTestSubmit\"\n >\n {actionName || intl.formatMessage(genericMessages.add)}\n </button>\n </div>\n </Form>\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\nconst editableFields = [\n 'title',\n 'description',\n 'effective_date',\n 'expiration_date',\n]\n\ninterface Props {\n properties: { [key: string]: any }\n values: { [key: string]: any }\n}\n\nexport function IDublinCore({ properties, values }: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {Object.keys(properties).map((key) => (\n <tr key={'dublin_' + key}>\n <td style={{ width: '150px' }} key={1}>\n {key}\n </td>\n <td key={2}>\n <EditableField\n field={key}\n value={values[key]}\n ns=\"guillotina.behaviors.dublincore.IDublinCore\"\n schema={properties[key]}\n modifyContent={modifyContent && editableFields.includes(key)}\n />\n </td>\n </tr>\n ))}\n </Table>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { PanelItems } from '../components/panel/items'\nimport { useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { Icon } from '../components/ui/icon'\nimport { useEffect, useRef } from 'react'\nimport { useState } from 'react'\nimport { Select } from '../components/input/select'\nimport { SearchInput } from '../components/input/search_input'\nimport { Tag } from '../components/ui/tag'\nimport { parser } from '../lib/search'\nimport { EditableField } from '../components/fields/editableField'\nimport { useLocation } from '../hooks/useLocation'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\nconst tabs = {\n Groups: PanelItems,\n}\n\nexport function GroupToolbar() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const ref = useRef(null)\n const [location, setLocation] = useLocation()\n const searchText = location.get('q')\n\n const onSearchQuery = (ev) => {\n const search = ev.target[0].value\n setLocation({ q: search, page: 0 })\n ev.preventDefault()\n }\n\n // cleanup form on state.search change\n useEffect(() => {\n if (!searchText || searchText === '') {\n ref.current.value = ''\n }\n }, [searchText])\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n ref={ref}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <button\n className=\"button is-primary\"\n onClick={() => Ctx.doAction('addItem', { type: 'Group' })}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <Icon icon=\"fas fa-users\" />\n <span>\n {intl.formatMessage({\n id: 'add_group',\n defaultMessage: 'Add Group',\n })}\n </span>\n </button>\n </>\n )\n}\n\nexport function GroupsCtx(props) {\n return (\n <TabsPanel\n tabs={tabs}\n currentTab=\"Groups\"\n rightToolbar={<GroupToolbar />}\n {...props}\n />\n )\n}\n\nconst sortParsed = parser(`_sort_asc=id`)\nconst searchParsed = parser('type_name=User')\n\nexport function GroupCtx() {\n const intl = useIntl()\n const { Ctx, patch } = useCrudContext()\n const [roles, setRoles] = useState([])\n\n useEffect(() => {\n async function getRoles() {\n const requestGetRoles = await Ctx.client.getRoles(Ctx.path)\n let roles = []\n\n if (requestGetRoles.ok) {\n roles = (await requestGetRoles.json()).map((role) => ({\n text: role,\n value: role,\n }))\n }\n setRoles(roles)\n }\n getRoles()\n }, [])\n\n const handleResponse = async (isError, message, errorMessage) => {\n if (!isError) {\n Ctx.flash(message, 'success')\n Ctx.refresh()\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.failed_to_update, {\n error: errorMessage,\n }),\n 'danger'\n )\n }\n }\n\n const addRole = async (role) => {\n const { isError, errorMessage } = await patch({\n user_roles: Ctx.context.user_roles.concat(role),\n })\n handleResponse(\n isError,\n intl.formatMessage(\n {\n id: 'role_added_to_group',\n defaultMessage: 'Role {role} added to group',\n },\n { role }\n ),\n errorMessage\n )\n }\n\n const removeRole = async (role) => {\n const { isError, errorMessage } = await patch({\n user_roles: Ctx.context.user_roles.filter((r) => r !== role),\n })\n handleResponse(\n isError,\n intl.formatMessage(\n {\n id: 'role_removed_from_group',\n defaultMessage: 'Role {role} removed from group',\n },\n { role }\n ),\n errorMessage\n )\n }\n\n const addUser = async (newUserId) => {\n const data = {}\n Ctx.context.users.forEach((user) => {\n data[user] = true\n })\n data[newUserId] = true\n const {\n isError,\n errorMessage,\n } = await Ctx.client.rest.patch(\n `${Ctx.containerPath}@groups/${Ctx.context['@name']}`,\n { users: data }\n )\n handleResponse(\n isError,\n intl.formatMessage(\n {\n id: 'user_added_to_group',\n defaultMessage: 'User {user} added to group',\n },\n { user: newUserId }\n ),\n errorMessage\n )\n }\n\n const removeUser = async (userToRemove) => {\n const data = {}\n Ctx.context.users.forEach((user) => {\n data[user] = userToRemove !== user\n })\n const {\n isError,\n errorMessage,\n } = await Ctx.client.rest.patch(\n `${Ctx.containerPath}@groups/${Ctx.context['@name']}`,\n { users: data }\n )\n handleResponse(\n isError,\n intl.formatMessage(\n {\n id: 'user_removed_from_group',\n defaultMessage: 'User {user} removed from group',\n },\n { user: userToRemove }\n ),\n errorMessage\n )\n }\n\n return (\n <div className=\"container group-view\">\n <h2 className=\"title is-size-4\">\n <Icon icon=\"fas fa-users\"></Icon>\n <span>\n &nbsp;\n {intl.formatMessage({\n id: 'group',\n defaultMessage: 'Group',\n })}\n </span>\n </h2>\n <hr />\n <div className=\"columns\">\n <div className=\"column is-4\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.title)}{' '}\n </label>\n <EditableField\n field=\"title\"\n modifyContent\n value={Ctx.context.title}\n />\n </div>\n <div className=\"column is-4 is-size-7\">\n <h3 className=\"title is-size-6\">\n {intl.formatMessage({\n id: 'roles',\n defaultMessage: 'Roles',\n })}\n </h3>\n <p>\n {intl.formatMessage({\n id: 'add_role',\n defaultMessage: 'Add a Role',\n })}\n </p>\n <Select\n options={roles.filter(\n (role) => !Ctx.context.user_roles.includes(role.value)\n )}\n appendDefault\n onChange={addRole}\n />\n <hr />\n {Ctx.context.user_roles.map((urole) => (\n <p className=\"control\" key={`roles_${urole}`}>\n <Tag\n name={urole}\n onRemove={() => removeRole(urole)}\n size=\"is-small\"\n id={`roles_${urole}`}\n />\n </p>\n ))}\n </div>\n <div className=\"column is-4 is-size-7\">\n <h3 className=\"title is-size-6\">\n {intl.formatMessage({\n id: 'users',\n defaultMessage: 'Users',\n })}\n </h3>\n <p>{intl.formatMessage(genericMessages.add_user)}</p>\n <SearchInput\n path={`${Ctx.containerPath}/users/`}\n qs={[...searchParsed, ...sortParsed]}\n traversal={Ctx}\n onChange={addUser}\n btnClass=\"is-small\"\n />\n <hr />\n {Ctx.context.users.map((user) => (\n <p className=\"control\" key={`user_${user}`}>\n <Tag\n name={user}\n onRemove={() => removeUser(user)}\n size=\"is-small\"\n id={`user_${user}`}\n />\n </p>\n ))}\n </div>\n </div>\n </div>\n )\n}\n","import { Component } from 'react'\nimport { IntlShape, injectIntl } from 'react-intl'\n\nconst style = { color: '#F44336', fontSize: 20, paddingBottom: 20 }\n\nclass ErrorBoundaryComponent extends Component<\n { intl: IntlShape; children: React.ReactNode },\n { hasError: boolean; errorMsg: string; errorStack: string }\n> {\n state = {\n hasError: false,\n errorMsg: '',\n errorStack: '',\n }\n\n componentDidCatch(error, errorInfo) {\n this.setState({\n hasError: true,\n errorMsg: error.message,\n errorStack: errorInfo.componentStack,\n })\n }\n\n render() {\n const { hasError, errorMsg, errorStack } = this.state\n\n if (hasError) {\n return (\n <div className=\"box main-panel\">\n <div style={style}>\n {this.props.intl.formatMessage({\n id: 'something_went_wrong',\n defaultMessage: 'Something went wrong.',\n })}\n </div>\n {errorMsg && (\n <p>\n <b>{errorMsg}</b>\n </p>\n )}\n {errorStack && <p>{errorStack}</p>}\n </div>\n )\n }\n\n return this.props.children\n }\n}\n\nexport const ErrorBoundary: React.ComponentType<{\n intl: IntlShape\n children: React.ReactNode\n}> = injectIntl(ErrorBoundaryComponent)\n","import { Icon } from './ui/icon'\nimport { useIntl } from 'react-intl'\n\nexport function NotAllowed() {\n const intl = useIntl()\n return (\n <div className=\"box not-allowed\">\n <h1 className=\"title has-text-danger\" style={{ fontSize: '4rem' }}>\n <Icon icon=\"fas fa-ban\" />\n </h1>\n <h1 className=\"title has-text-grey-darker\">\n {intl.formatMessage({\n id: 'not_allowed',\n defaultMessage: 'Not Allowed',\n })}\n </h1>\n </div>\n )\n}\n","import { Icon } from './ui/icon'\nimport { useIntl } from 'react-intl'\n\nexport function NotFound() {\n const intl = useIntl()\n return (\n <div className=\"box not-allowed\">\n <h1 className=\"title has-text-grey\" style={{ fontSize: '4rem' }}>\n <Icon icon=\"fas fa-dizzy\" />\n </h1>\n <h1 className=\"title has-text-grey-darker\">\n {intl.formatMessage({\n id: 'not_found',\n defaultMessage: '404. Not Found',\n })}\n </h1>\n </div>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { useLocation } from '../hooks/useLocation'\n\nexport function Path() {\n const ctx = useTraversal()\n const [, navigate] = useLocation()\n\n const segments = ctx.path.replace(/\\/$/, '').split('/')\n const links = buildPaths(segments)\n\n if (segments.length === 1) {\n return false\n }\n\n return (\n <nav className=\"breadcrumb\" aria-label=\"breadcrumbs\">\n <ul>\n {segments.map((item, indx) => {\n const path = links[indx]\n const onClick = (e) => {\n if (e.ctrlKey || e.metaKey) return\n e.preventDefault()\n navigate({ path }, true)\n }\n\n return indx === 0 ? (\n <li key={indx}>\n <a\n href={path}\n onClick={onClick}\n data-test={`breadcrumbItemTest-home`}\n >\n <span className=\"icon\">\n <i className=\"fas fa-home\"></i>\n </span>\n </a>\n </li>\n ) : (\n <li key={indx}>\n <a\n href={path}\n onClick={onClick}\n data-test={`breadcrumbItemTest-${item.toLowerCase()}`}\n >\n {item}\n </a>\n </li>\n )\n })}\n </ul>\n </nav>\n )\n}\n\nconst buildPaths = (segments) => {\n let current = ''\n const results = []\n segments.map((item, indx) => {\n if (indx === 0) {\n current += '/'\n } else {\n current += item + '/'\n }\n results.push(current)\n return item\n })\n return results\n}\n","import { FolderCtx } from '../views/folder'\nimport { ItemCtx } from '../views/item'\nimport { ApplicationCtx } from '../views/application'\nimport { DatabaseCtx } from '../views/application'\nimport { ContainerCtx } from '../views/container'\nimport { UsersCtx } from '../views/users'\nimport { UserCtx } from '../views/users'\nimport { CopyItems } from '../actions/copy_items'\nimport { CopyItem } from '../actions/copy_item'\nimport { MoveItems } from '../actions/move_items'\nimport { MoveItem } from '../actions/move_item'\nimport { RemoveItems } from '../actions/remove_items'\nimport { RemoveItem } from '../actions/remove_item'\nimport { AddItem } from '../actions/add_item'\nimport { ChangePassword } from '../actions/change_pass'\nimport { BaseForm } from '../forms/base'\nimport { UserForm } from '../forms/users'\nimport { IAttachment } from '../components/behaviors/iattachment'\nimport { IDublinCore } from '../components/behaviors/idublincore'\nimport { IMultiAttachment } from '../components/behaviors/imultiattachment'\nimport { IImageAttachment } from '../components/behaviors/iimageattachment'\nimport { IMultiImageAttachment } from '../components/behaviors/imultiimageattachment'\nimport { IMultiImageOrderedAttachment } from '../components/behaviors/imultiimageorderedattachment'\nimport { IWorkflow } from '../components/behaviors/iworkflow'\nimport { GroupsCtx } from '../views/groups'\nimport { GroupCtx } from '../views/groups'\nimport { ErrorBoundary } from '../components/error_boundary'\nimport React from 'react'\nimport { NotAllowed } from '../components/notallowed'\nimport { NotFound } from '../components/notfound'\nimport { Path } from '../components/path'\nimport { EditComponent } from '../components/fields/editComponent'\nimport { RenderFieldComponent } from '../components/fields/renderField'\nimport { GuillotinaSchema } from '../types/guillotina'\n\nexport interface IRegistry {\n paths: {\n [key: string]: React.FC\n }\n views: {\n [key: string]: React.FC | React.ComponentType\n }\n actions: {\n [key: string]: React.FC\n }\n forms: {\n [key: string]: React.FC\n }\n behaviors: {\n [key: string]: React.FC\n }\n itemsColumn: {\n [key: string]: () => {\n label: string\n key: string\n isSortable?: boolean\n child: React.ReactNode\n }[]\n }\n schemas: {\n [key: string]: GuillotinaSchema\n }\n properties: {\n [key: string]: React.FC\n }\n components: {\n [key: string]: React.FC\n }\n searchEngineQueryParamsFunction: {\n [key: string]: string\n }\n fieldsToFilter: {\n [key: string]: string[]\n }\n defaultSortValue: {\n [key: string]: {\n direction: 'asc' | 'des'\n field: string\n }\n }\n}\nconst registry: IRegistry = {\n paths: {},\n views: {\n ErrorBoundary: ErrorBoundary,\n NotAllowed: NotAllowed,\n NotFound: NotFound,\n Application: ApplicationCtx,\n Database: DatabaseCtx,\n Container: ContainerCtx,\n UserManager: UsersCtx,\n User: UserCtx,\n Group: GroupCtx,\n GroupManager: GroupsCtx,\n Folder: FolderCtx,\n Item: ItemCtx,\n },\n actions: {\n addItem: AddItem,\n copyItems: CopyItems,\n copyItem: CopyItem,\n moveItems: MoveItems,\n moveItem: MoveItem,\n removeItems: RemoveItems,\n changePassword: ChangePassword,\n removeItem: RemoveItem,\n },\n forms: {\n UserManager: BaseForm,\n GroupManager: BaseForm,\n Folder: BaseForm,\n Item: BaseForm,\n User: UserForm,\n Group: BaseForm,\n },\n behaviors: {\n 'guillotina.behaviors.dublincore.IDublinCore': IDublinCore,\n 'guillotina.behaviors.attachment.IAttachment': IAttachment,\n 'guillotina.behaviors.attachment.IMultiAttachment': IMultiAttachment,\n 'guillotina.contrib.image.behaviors.IImageAttachment': IImageAttachment,\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment': IMultiImageAttachment,\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment': IMultiImageOrderedAttachment,\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior': IWorkflow,\n },\n itemsColumn: {},\n schemas: {},\n properties: {},\n components: {\n Path: Path,\n EditComponent: EditComponent,\n RenderFieldComponent: RenderFieldComponent,\n },\n searchEngineQueryParamsFunction: {\n PostreSQL: 'getQueryParamsPostresql',\n Elasticsearch: 'getQueryParamsElasticsearch',\n },\n fieldsToFilter: {\n UserManager: ['id', 'email', 'user_name'],\n },\n defaultSortValue: {},\n}\n\nconst get = (key, param, fallback = undefined) => {\n if (registry[key]) return registry[key][param] || fallback\n return fallback\n}\n\nconst getComponent = (context, path, fallback = undefined) => {\n if (!context) return\n // console.log(\"Component for path\", path)\n // lookup by path\n if (registry.paths[path]) {\n return registry.paths[path]\n }\n // by type\n if (registry.views[context['@type']]) {\n return registry.views[context['@type']]\n }\n if (fallback) {\n return fallback\n }\n return defaultComponent(context)\n}\n\nconst getItemsColumn = (type) => {\n const funcCols = registry.itemsColumn[type]\n if (funcCols) {\n return funcCols()\n }\n return undefined\n}\n\nconst getForm = (type: string, fallback: React.FC = BaseForm) => {\n return registry.forms[type] || fallback\n}\n\nconst getAction = (type: string, fallback: React.FC = undefined) => {\n return registry.actions[type] || fallback\n}\n\nconst getBehavior = (type: string, fallback: React.FC) => {\n return registry.behaviors[type] || fallback\n}\n\nconst getProperties = (type: string) => {\n return registry.properties[type] || {}\n}\n\nconst getSchemas = (type: string) => {\n return registry.schemas[type] || {}\n /*\n filters: [\n {\n attribute_key: string,\n label: string,\n type: 'select' | 'input'\n vocabulary: string | undefined\n values: {[key:string]:any}[]\n }\n ]\n */\n}\n\nconst getFieldsToFilter = (type: string, fallback) => {\n return registry.fieldsToFilter[type] || fallback\n}\n\nconst getDefaultSortValue = (type: string, fallback) => {\n return registry.defaultSortValue[type] || fallback\n}\n\nexport const defaultComponent = (context) => {\n return context.is_folderish ? FolderCtx : ItemCtx\n}\n\nexport function useRegistry(data) {\n // if data is provided we need to merge it into actual registry\n const ref = React.useRef<unknown>()\n if (data && !ref.current) {\n ref.current = true\n Object.keys(data).map(\n (key) => (registry[key] = { ...registry[key], ...data[key] })\n )\n }\n\n return {\n registry,\n get,\n getForm,\n getComponent,\n getAction,\n getBehavior,\n getProperties,\n getItemsColumn,\n getFieldsToFilter,\n getDefaultSortValue,\n getSchemas,\n }\n}\n\n/*\n\nconst registry = {\n paths: {\n \"/db/guillotina/tags/\": TagsContext\n },\n forms: {\n Tag: AddTagForm\n }\n}\n\n\n<guillotina registry={registry} />\n\n\n*/\n","import { ItemModel } from '../models'\nimport { IndexSignature } from '../types/global'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\nexport interface GuillotinaGlobalState {\n path: string\n loading: boolean\n context: GuillotinaCommonObject\n flash: {\n message: string\n type: string\n }\n action: {\n action: string\n params: IndexSignature\n }\n permissions: IndexSignature\n errorStatus: number\n registry: IndexSignature\n refresh: number\n}\nexport const initialState: GuillotinaGlobalState = {\n path: '',\n loading: false,\n context: undefined,\n flash: {\n message: undefined,\n type: undefined,\n },\n action: {\n action: undefined,\n params: undefined,\n },\n permissions: undefined,\n errorStatus: undefined,\n registry: {},\n refresh: undefined,\n}\n\nexport function guillotinaReducer(state, action) {\n switch (action.type) {\n case 'SET_PATH':\n return { ...state, path: action.payload, loading: true }\n\n case 'SET_CONTEXT':\n return {\n ...state,\n ...action.payload,\n errorStatus: undefined,\n loading: false,\n }\n\n case 'SET_ERROR':\n return { ...state, errorStatus: action.payload, loading: false }\n\n case 'SET_FLASH':\n return { ...state, ...action.payload }\n\n case 'CLEAR_FLASH':\n return {\n ...state,\n flash: {\n message: undefined,\n type: undefined,\n },\n }\n case 'SET_ACTION':\n return { ...state, action: action.payload }\n case 'CLEAR_ACTION':\n return { ...state, action: { action: undefined, params: undefined } }\n\n case 'REFRESH':\n return {\n ...state,\n refresh: Date.now(),\n loading: !action.payload.transparent,\n }\n\n case 'APPLY':\n return { ...state, context: { ...state.context, ...action.payload } }\n\n default:\n return state\n }\n}\n\nexport interface IColumn {\n key: string\n label: string\n isSortable: string\n child: (\n model: ItemModel,\n link: () => void,\n search: string\n ) => React.ReactElement\n}\n","import React from 'react'\nimport { useReducer } from 'react'\nimport { useEffect } from 'react'\nimport { Flash } from './flash'\nimport { TraversalProvider, useGuillotinaClient } from '../contexts'\nimport { useConfig } from '../hooks/useConfig'\nimport { IRegistry, useRegistry } from '../hooks/useRegistry'\nimport { useLocation } from '../hooks/useLocation'\nimport { guillotinaReducer } from '../reducers/guillotina'\nimport { initialState } from '../reducers/guillotina'\nimport { Loading } from './ui/loading'\nimport { IntlProvider } from 'react-intl'\nimport langCA from '../locales/compiled/ca.json'\nimport langES from '../locales/compiled/es.json'\nimport langEN from '../locales/compiled/en.json'\nimport { Auth } from '../lib/auth'\nimport { IndexSignature } from '../types/global'\n\nfunction loadLocaleData(locale) {\n switch (locale) {\n case 'ca':\n return langCA\n case 'es':\n return langES\n default:\n return langEN\n }\n}\n\ninterface GuillotinaProps {\n auth: Auth\n locale: string\n url: string\n config: IndexSignature\n registry: IRegistry\n}\nexport function Guillotina({ auth, locale, ...props }: GuillotinaProps) {\n const messages = loadLocaleData(locale)\n const url = props.url || 'http://localhost:8080' // without trailing slash\n const config = props.config || {}\n const client = useGuillotinaClient()\n\n const { Permissions } = useConfig(config)\n const registry = useRegistry(props.registry || {})\n // Location is cooked routing solution (only uses search params)\n const [location] = useLocation()\n\n // if there is no path provided just go to root\n const searchPath = location.get('path') || '/'\n if (searchPath && searchPath !== '') {\n initialState.path = searchPath\n }\n\n const [state, dispatch] = useReducer(guillotinaReducer, initialState)\n\n const { path, refresh } = state\n\n useEffect(() => {\n dispatch({ type: 'SET_PATH', payload: searchPath })\n }, [searchPath])\n\n useEffect(() => {\n const initContext = async () => {\n const data = await client.getContext(path)\n if (data.status === 401) {\n dispatch({ type: 'SET_ERROR', payload: 'notallowed' })\n return\n } else if (data.status === 404) {\n dispatch({ type: 'SET_ERROR', payload: 'notfound' })\n return\n }\n const context = await data.json()\n const pr = await client.canido(path, Permissions)\n const permissions = await pr.json()\n dispatch({ type: 'SET_CONTEXT', payload: { context, permissions } })\n }\n initContext()\n }, [path, refresh, client])\n\n const ErrorBoundary = registry.get('views', 'ErrorBoundary')\n const NotAllowed = registry.get('views', 'NotAllowed')\n const NotFound = registry.get('views', 'NotFound')\n const Path = registry.get('components', 'Path')\n\n const contextData = {\n url,\n client,\n auth,\n state,\n dispatch,\n registry,\n flash: config.flash,\n }\n\n const { action, errorStatus, permissions } = state\n const Main = registry.getComponent(state.context, path)\n const Action = action.action ? registry.getAction(action.action) : null\n\n return (\n <IntlProvider locale={locale} defaultLocale=\"en\" messages={messages}>\n <ErrorBoundary>\n {!errorStatus && (\n <TraversalProvider {...contextData}>\n {permissions && (\n <React.Fragment>\n {action.action && <Action {...action.params} />}\n <div className=\"level\">\n <div className=\"level-left\">\n <div className=\"level-item\">\n <Path />\n </div>\n </div>\n </div>\n <Flash />\n {Main && (\n <ErrorBoundary>\n <div className=\"box main-panel\">\n {state.loading && <Loading />}\n {!state.loading && <Main state={state} />}\n </div>\n </ErrorBoundary>\n )}\n {/* <p>Guillotina {JSON.stringify(state.context)}</p> */}\n </React.Fragment>\n )}\n </TraversalProvider>\n )}\n {errorStatus === 'notallowed' && <NotAllowed />}\n {errorStatus === 'notfound' && <NotFound />}\n </ErrorBoundary>\n </IntlProvider>\n )\n}\n","import { useState } from 'react'\nimport { Auth } from '../lib/auth'\nimport { Icon } from './ui/icon'\nimport { classnames } from '../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n onLogout: () => void\n auth: Auth\n}\nexport function Layout({ children, onLogout, auth }: Props) {\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const doLogout = () => {\n auth.logout()\n onLogout()\n }\n\n return (\n <>\n <header>\n <nav className=\"navbar\" role=\"navigation\" aria-label=\"main navigation\">\n <div className=\"navbar-brand\" style={{ alignItems: 'center' }}>\n <a className=\"navbar-item\" href=\"/\">\n <img src=\"/logo.svg\" alt=\"Guillotina logo\" height=\"80\" />\n </a>\n <div\n id=\"burger\"\n role=\"button\"\n className={classnames([\n 'navbar-burger',\n 'burger',\n isMenuOpen && 'is-active',\n ])}\n aria-label=\"menu\"\n aria-expanded=\"false\"\n data-target=\"navbarmenu\"\n onClick={() => setIsMenuOpen(!isMenuOpen)}\n >\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n </div>\n </div>\n <div\n id=\"navbarmenu\"\n className={classnames(['navbar-menu', isMenuOpen && 'is-active'])}\n >\n <div className=\"navbar-start\"></div>\n <div className=\"navbar-end\">\n <div className=\"navbar-item\">\n {auth.isLogged && (\n <div className=\"buttons\">\n <button className=\"button is-size-7\" onClick={doLogout}>\n <Icon icon=\"fas fa-sign-out-alt\" />\n <span>Logout</span>\n </button>\n </div>\n )}\n </div>\n </div>\n </div>\n </nav>\n </header>\n <section className=\"section main\">\n <div className=\"container\">\n <div className=\"column\">{children}</div>\n </div>\n </section>\n </>\n )\n}\n","import React, { useRef, useEffect } from 'react'\nimport useSetState from '../hooks/useSetState'\nimport { Auth } from '../lib/auth'\n\nconst ERRORS = {\n failed_to_fetch: 'Failed to fetch data: Backend not running?',\n invalid_credentials: 'Failed! Invalid credentials',\n}\ninterface State {\n username: string\n password: string\n loading: boolean\n errors: string\n}\nconst initialState = {\n username: '',\n password: '',\n loading: undefined,\n errors: undefined,\n}\n\ninterface Props {\n currentSchema: string\n setCurrentSchema: (schema: string) => void\n schemas: string[]\n auth: Auth\n onLogin?: () => void\n}\nexport const Login = ({\n currentSchema,\n setCurrentSchema,\n schemas,\n auth,\n onLogin,\n}: Props) => {\n const [state, setState] = useSetState<State>(initialState)\n const inputRef = useRef(null)\n\n useEffect(() => {\n if (inputRef) {\n inputRef.current.focus()\n }\n }, [inputRef])\n\n const doLogin = async (ev) => {\n ev.preventDefault()\n setState({ loading: true, errors: undefined })\n const { username, password } = state\n\n if (currentSchema !== '') {\n auth.setAccount(currentSchema)\n }\n const res = await auth.login(username, password)\n\n if (!res) {\n setState({ errors: auth.errors, loading: false })\n return\n }\n\n if (onLogin) {\n onLogin()\n }\n }\n\n return (\n <React.Fragment>\n <form\n className=\"login__form\"\n action=\"\"\n onSubmit={doLogin}\n data-test=\"formLoginTest\"\n >\n <div className=\"field\">\n <label className=\"label\">Username:</label>\n <input\n type=\"text\"\n className=\"input\"\n placeholder=\"Username\"\n onChange={(e) => setState({ username: e.target.value })}\n value={state.username}\n ref={inputRef}\n data-test=\"inputUsernameLoginTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">Password:</label>\n <input\n type=\"password\"\n className=\"input\"\n placeholder=\"Password\"\n onChange={(e) => setState({ password: e.target.value })}\n value={state.password}\n data-test=\"inputPasswordLoginTest\"\n />\n </div>\n {schemas && schemas.length > 1 && (\n <div className=\"field\">\n <label className=\"label\">Schema:</label>\n <div className=\"select\">\n <select\n data-test=\"selectSchemaTest\"\n onChange={(e) => setCurrentSchema(e.target.value)}\n >\n {schemas.map((s) => (\n <option value={s} key={s}>\n {s}\n </option>\n ))}\n </select>\n </div>\n </div>\n )}\n <div className=\"field\">\n <button\n className=\"button is-warning\"\n type=\"submit\"\n data-test=\"btnLoginTest\"\n >\n Login\n </button>\n </div>\n <div className=\"field\">\n {state.errors && (\n <p className=\"has-text-danger\">\n {ERRORS[state.errors] || 'Generic error'}\n </p>\n )}\n </div>\n </form>\n </React.Fragment>\n )\n}\n","import { useState, useEffect } from 'react'\nimport { Form } from '../components/input/form'\nimport { stringToSlug } from '../lib/helpers'\nimport { useTraversal } from '../contexts'\nimport useSetState from '../hooks/useSetState'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { IndexSignature } from '../types/global'\n\nconst ignoreFiels = []\nconst extraFields = ['title']\n\ninterface Props {\n onSubmit: (data: { [key: string]: any }) => void\n actionName?: string\n title?: string\n dataTest?: string\n loading?: boolean\n type: string\n}\ninterface State {\n data: any\n loading: boolean\n error: any\n formFields: string[]\n}\nexport function RequiredFieldsForm({\n loading,\n onSubmit,\n actionName,\n title,\n dataTest,\n type,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n\n const EditComponent = Ctx.registry.get('components', 'EditComponent')\n\n const [formData, setFormData] = useState<IndexSignature>({})\n const [errors, setErrors] = useState({})\n\n const [schema, setSchema] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n formFields: [],\n })\n\n useEffect(() => {\n const getSchema = async () => {\n if (!schema.loading && !schema.data && !schema.error) {\n try {\n setSchema({ loading: true })\n const dataJson = await Ctx.client.getTypeSchema(Ctx.path, type)\n setSchema({\n loading: false,\n data: dataJson,\n formFields: [...dataJson.required, ...extraFields],\n })\n } catch (err) {\n setSchema({ loading: false, error: err })\n }\n }\n }\n getSchema()\n }, [schema])\n\n const submit = () => {\n const currentErrors = {}\n\n schema.formFields.forEach((key) => {\n if (!formData[key]) {\n currentErrors[key] = intl.formatMessage(\n genericMessages.field_is_required\n )\n }\n })\n\n if (Object.keys(currentErrors).length > 0) {\n setErrors(currentErrors)\n return\n }\n\n onSubmit({ id: formData.uuid, ...formData })\n }\n\n return (\n <Form title={title} onSubmit={submit} dataTest={dataTest}>\n {schema &&\n schema.data &&\n !schema.loading &&\n schema.formFields.map((key) => {\n if (!ignoreFiels.includes(key)) {\n const value = schema.data.properties[key]\n return (\n <EditComponent\n key={key}\n id={key}\n placeholder={value?.title ?? ''}\n className=\"\"\n required\n schema={schema.data.properties[key]}\n setValue={(ev) => {\n if (key === 'title') {\n setFormData({\n ...formData,\n uuid: stringToSlug(ev),\n [key]: ev,\n })\n } else if (key === 'uuid') {\n setFormData({\n ...formData,\n uuid: stringToSlug(ev),\n })\n } else {\n setFormData({ ...formData, [key]: ev })\n }\n }}\n error={errors[key]}\n dataTest={`${key}TestInput`}\n val={key in formData ? formData[key] : ''}\n />\n )\n }\n return null\n })}\n\n <div className=\"level level-right\">\n <button\n type=\"submit\"\n className={`button is-success ${loading ? 'is-loading' : ''}`}\n data-test=\"formBaseBtnTestSubmit\"\n >\n {actionName || intl.formatMessage(genericMessages.add)}\n </button>\n </div>\n </Form>\n )\n}\n","import jwt_decode from 'jwt-decode'\nimport { IndexSignature } from '../types/global'\n\nexport class Auth {\n maxRetry = 1\n retryRefresh = 0\n events = {}\n url: string\n base_url: string\n errors: string\n\n constructor(url) {\n this.url = url\n this.base_url = url\n this.errors = undefined\n }\n\n getUrl(endpoint) {\n return `${this.url}${endpoint}`\n }\n\n setAccount(account) {\n this.url = this.base_url + account\n }\n\n async login(username, password) {\n const url = this.getUrl('@login')\n try {\n const data = await fetch(url, {\n method: 'post',\n body: JSON.stringify({\n username: username,\n password: password,\n }),\n })\n if (data.status === 200) {\n const credentials = await data.json()\n this.storeAuth(credentials)\n return true\n } else {\n this.errors = 'invalid_credentials'\n }\n } catch (e) {\n this.errors = 'failed_to_fetch'\n return false\n }\n localStorage.removeItem('auth')\n localStorage.removeItem('auth_expires')\n return false\n }\n\n get isLogged() {\n if (typeof localStorage === 'undefined') {\n return false\n }\n const [token, expires] = this._getToken()\n if (!token || !expires) {\n return false\n }\n if (this.isExpired(expires)) {\n return false\n }\n return true\n }\n\n get username() {\n if (typeof localStorage === 'undefined') {\n return false\n }\n const [token] = this._getToken()\n const data: IndexSignature = jwt_decode(token)\n console.log(token)\n return data.id\n }\n\n storeAuth(data) {\n localStorage.setItem('auth', data.token)\n localStorage.setItem(\n 'auth_expires',\n new Date(data.exp).getTime().toString()\n )\n }\n\n cleanAuth() {\n localStorage.removeItem('auth')\n localStorage.removeItem('auth_expires')\n }\n\n logout() {\n this.cleanAuth()\n }\n\n async refreshToken() {\n console.log('refresh!!!')\n this.retryRefresh++\n const data = await fetch(this.getUrl('@login-renew'), {\n headers: this.getHeaders(),\n method: 'post',\n })\n if (data.status === 401) {\n // invalid token\n this.cleanAuth()\n this.logout()\n return\n }\n const res = await data.json()\n console.log('refresh data', res)\n this.storeAuth(res)\n console.log('token refreshed')\n this.retryRefresh = 0\n return res.token\n }\n\n willExpire(expiration) {\n const now = new Date().getTime()\n if (parseInt(expiration) * 1000 < now + 10 * 1000) {\n return true\n }\n return false\n }\n\n isExpired(expiration) {\n const now = new Date().getTime()\n if (parseInt(expiration) * 1000 > now) {\n return false\n }\n return true\n }\n\n _getToken() {\n return [localStorage.getItem('auth'), localStorage.getItem('auth_expires')]\n }\n\n getToken() {\n const [token] = this._getToken()\n return token\n }\n\n getHeaders() {\n const [authToken, expires] = this._getToken()\n if (!authToken) return {}\n\n if (this.willExpire(expires) && this.retryRefresh < this.maxRetry) {\n // eslint-disable-next-line no-extra-semi\n ;(async () => await this.refreshToken())()\n }\n\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + authToken,\n }\n }\n}\n"],"names":["AuthContext","createContext","ClientContext","Traversal","constructor","flash","props","dispatch","state","client","registry","url","auth","refresh","transparent","type","payload","path","pathPrefix","slice","context","containerPath","getContainerFromPath","apply","data","message","window","scrollTo","top","left","behavior","clearFlash","doAction","action","params","cancelAction","hasPerm","permission","permissions","filterTabs","tabs","tabsPermissions","result","Object","keys","forEach","item","perm","TraversalContext","TraversalProvider","children","_jsx","Provider","value","useTraversal","useContext","ClientProvider","useGuillotinaClient","genericMessages","defineMessages","loading","id","defaultMessage","remove","install","delete","move_to","copy_to","behaviors","static","disable","enable","enabled","available","invalid_form_data","invalid_form","select_principal","select_role","select_permissions","operation","save","choose","property","create","upload","image","error_provide_key_name","mandatory_field","error_in_field","field_updated","field_deleted","can_not_delete_field","cancel","open","download","search","no_results","load_more","add_type","confirm","field_is_required","title","add","not_implemented","failed_to_update","add_user","role","setting","genericFileMessages","error_file_key_name","error_upload_file","error_upload_file_size","image_uploaded","file_uploaded","failed_delete_file","image_deleted","confirm_message_delete_file","confirm_message_delete_image","no_images_uploaded","no_files_uploaded","upload_an_image","upload_a_file","classnames","classNames","filter","Boolean","join","trim","noop","current","generateUID","prefix","toQueryString","map","key","encodeURIComponent","base64ToArrayBuffer","base64","binaryString","atob","binaryLen","length","bytes","Uint8Array","i","ascii","charCodeAt","stringToSlug","str","replace","toLowerCase","from","to","l","RegExp","charAt","sleep","ms","Promise","resolve","setTimeout","getActionsObject","intl","multiple","DELETE","text","formatMessage","perms","MOVE","COPY","Button","className","onClick","disabled","dataTest","css","concat","split","Modal","isActive","setActive","Portal","usePortal","_jsxs","Confirm","onCancel","onConfirm","useIntl","style","marginTop","PathTree","defaultPath","onSubmit","e","preventDefault","target","display","defaultValue","useSetState","initialState","set","useState","setState","useCallback","patch","prevState","assign","Function","initial","undefined","isError","errorMessage","response","getErrorMessage","dataError","details","reason","processResponse","res","ready_body","status","json","Ctx","endpoint","body","newState","console","error","del","post","get","useCrudContext","AddItem","getForm","Form","doSubmit","form","formData","onError","err","log","actionName","Permissions","Config","DisabledTypes","PageSize","DelayActions","SearchEngine","fieldHaveDeleteButton","schema","widget","calculated","addConfig","additional","original","rest","Array","isArray","useConfig","cfg","ref","useRef","RemoveItems","setLoading","items","last","itemsNames","removeItems","errors","actions","ok","push","all","errorstr","JSON","stringify","Checkbox","classNameInput","indeterminate","checked","placeholder","onChange","inputRef","useEffect","updateState","ev","htmlFor","ErrorZone","propTypes","PropTypes","node","string","applyValidators","validators","validation","func","useInput","validator","hasError","onUpdate","onBlur","onFocus","REGEX_EMAIL","REGEX_URL","REGEX_HEX_COLOR","REGEX_NUMBER","isEmpty","maxLength","limit","minLength","isEmail","test","isURL","isHexColor","isNumber","notEmpty","Input","forwardRef","icon","iconPosition","errorZoneClassName","autoComplete","required","autofocus","onKeyUp","validatorFn","handlers","uid","mounted","setMounted","focus","theError","statusClasses","cssControl","displayName","Icon","align","addClass","EmailInput","onReset","handleSubmit","event","PasswordInput","formComponents","password","boolean","email","FormBuilder","exclude","remotes","submitButton","properties","values","fields","x","includes","element","field","GetTag","Tag","children_","Children","child","isValidElement","cloneElement","changes","Select","options","size","classWrap","appendDefault","selectValue","selectedOptions","cssWrap","index","toString","formatDate","d","Date","minutes","getMinutes","getDate","getMonth","getFullYear","getHours","obj","defValue","pathArray","match","reduce","prevObj","getNewId","suffix","rgx","r","num","parseInt","useVocabulary","vocabularyName","traversal","vocabulary","setVocabulary","getPath","getVocabulary","dataJson","SelectVocabulary","val","getOptions","vocData","token","getProps","currentValue","setURLParams","p","history","pushState","clean","URLSearchParams","_key","useLocation","update","currentSearchParams","prevPath","patchHistoryEvents","checkForUpdates","pathname","events","addEventListener","removeEventListener","navigate","param","patched","args","Event","arguments","dispatchEvent","location","Link","aRef","model","aStyle","textDecoration","color","stopPropagation","actAsLink","href","ctrlKey","metaKey","altKey","shiftKey","button","TdLink","link","click","Loading","name","onRemove","Delete","Table","headers","parsedClassName","idx","Notification","isColor","RestClient","container","request","indexOf","startsWith","getHeaders","fetch","authToken","getToken","Accept","Authorization","method","put","filename","SEP","DEFAULT_FIELD","CLEANER","parser","qs","defaultField","Error","orParser","parsed","buildQs","lastKey","qsSplit","part","parsedQuery","cacheTypes","cacheSchemas","GuillotinaClient","pathContainsContainer","substring","parts","clearContainerFromPath","cleanPath","getContext","getQueryParamsPostresql","start","pageSize","withDepth","getQueryParamsElasticsearch","objectPath","endsWith","getItemsColumn","smallcss","width","mediumcss","label","isSortable","m","React","Fragment","created","updated","applyCompat","member","items_count","items_total","prepare","query","canido","createObject","file","getTypeSchema","getAddons","installAddon","removeAddon","getGroups","getUsers","getPrincipals","groups","users","gr","usr","getRoles","getAllPermissions","req","resp","Set","extractPermissions","getTypes","types","getClient","lightFileReader","reader","FileReader","readAsArrayBuffer","onloadend","fileData","normalize","FileUpload","changed","fileToUpload","files","Textarea","rows","defaultEvents","on","off","useClickAway","onClickAway","savedCallback","handler","el","contains","eventName","document","debounce","wait","timeout","later","clearTimeout","page","SearchInput","queryCondition","btnClass","dataTestWrapper","dataTestSearchInput","dataTestItem","renderTextItemOption","typeNameQuery","labelProperty","setOptions","isOpen","setIsOpen","searchTerm","setSearchTerm","wrapperRef","valueLabel","setValueLabel","getHeight","maxHeight","innerHeight","getBoundingClientRect","delayedQuery","handleSearch","inicializeLabels","searchTermQs","searchTermParsed","getSearch","fnName","qsParsed","typeNameParsed","newValuesLabel","sortParsed","newItems","renderTextItemOptionFn","currentTarget","relatedTarget","HTMLElement","blur","onMouseDown","SearchInputList","valuesLabel","setValuesLabels","isLoadingData","setIsLoadingData","tag","InputList","inputValue","setInputValue","addTags","Dropdown","isRight","optionDisabledWhen","setIsActive","position","option","cursor","opacity","backgroundColor","EditableField","ns","modifyContent","isEdit","setEdit","setValue","EditComponent","RenderFieldComponent","canModified","saveField","unescape","dataPatch","deleteField","enum","DownloadField","getField","downloadFile","blob","Blob","content_type","URL","createObjectURL","createElement","setAttribute","appendChild","revokeObjectURL","parentNode","removeChild","plain","RenderField","Widget","FieldValue","DEFAULT_VALUE_NO_EDITABLE_FIELD","getDefaultValueEditableField","SearchRenderField","valuesLabels","DEFAULT_VALUE_EDITABLE_FIELD","fetchData","valuesToSearch","getRenderValue","VocabularyRenderField","getRenderProps","renderProps","vocabularyValue","find","toLocaleString","queryPath","subSchema","requiredFields","getInputType","IAttachment","IMultiAttachment","fileKey","setFileKey","setFile","fileKeyToDelete","setFileKeyToDelete","setError","uploadFile","deleteFile","colSpan","_sizesImages","IImageAttachment","sizesImages","SizeImages","showConfirmToDelete","setShowConfirmToDelete","endpointSize","gap","IMultiImageAttachment","StrictModeDroppable","droppableId","setEnabled","animation","requestAnimationFrame","cancelAnimationFrame","Droppable","reorder","list","startIndex","endIndex","removed","splice","messages","failed_to_sort_images","images_sorted","IMultiImageOrderedAttachment","sortedList","setSortedList","onDragEnd","destination","source","resultSorted","uuidv4","DragDropContext","provided","innerRef","droppableProps","Draggable","draggableId","providedChild","borderTop","draggableProps","dragHandleProps","base","local","roleperm","prinperm","prinrole","inherit","Sharing","roles","getRole","principals","principal","getPrinroles","ItemModel","icons","fullPath","type_name","creation_date","modification_date","status_changed_ok","status_changed_error","confirm_message","current_state","IWorkflow","definition","setDefinition","workflowAction","setWorkflowAction","currentState","loadDefinition","workflow","doWorkflowAction","getStateTitle","translatedValue","locale","titleValue","transitions","transition","PanelActions","ACTIONS_OBJECT","some","onAction","actionKey","available_addons","no_available_addons_container","installed_addons","PanelAddons","setAction","prepareData","addon","installed","addons","arrayToObject","array","PanelBehaviors","ops","enableBehavior","disableBehavior","dynamic","ItemsActionsCtx","selected","ItemsActionsProvider","setSelected","onSelectAllItems","onSelectOneItem","AllItemsCheckbox","ItemCheckbox","absId","ItemsActionsDropdown","every","v","o","Pagination","total","doPaginate","pager","maxPages","Math","ceil","currentPage","totalPages","totalItems","Item","RItem","columns","ItemTitle","SearchLabels","clearSearch","SearchOptionsLabels","renderValue","setRenderValue","defaultRenderValue","SearchVocabularyLabels","PanelItems","setLocation","filterSchema","getSchemas","filters","sort","sortDirection","searchParsed","fieldsToFilter","getFieldsToFilter","typeParsed","onSort","sort_direction","resultQueryParams","resultDynamicLocation","itemParam","attribute_key","filterParsed","controller","AbortController","defaultSortValue","getDefaultSortValue","direction","signal","abort","getIcon","tab","input_type","filterData","column","BehaviorsView","getBehavior","__behaviors__","GetBehavior","b","Cls","BehaviorNotImplemented","PropertiesButtonView","getProperties","Props","Buttons","Element","PropertiesView","Panels","_showProperties","_ignoreFields","PanelProperties","setSchema","showProperties","default","properties_default","ignoreFields","ignoreField","properties_ignore_fields","getSchema","prop","PermissionPrinperm","operations","getMultiples","setter","savePermission","random","PermissionPrinrole","PermissionRoleperm","role_permissions","no_role_permissions","no_principal_permissions","no_principal_roles","principal_permissions","principal_roles","allow","deny","allow_single","unset","add_permissions","select_type","PanelPermissions","ctx","reset","setReset","row","AddPermission","defaultOptions","init","principalsData","group","user","fullname","prepareAvailable","already","def","TagsWidget","noData","selectRef","setResult","availableData","addItem","marginBottom","CreateButton","anyNameFunction","ContextToolbar","AddButton","searchText","searchValue","setSearchValue","loadTypes","onSearchQuery","q","onSearchByType","typeText","Flash","FallbackTab","TabsPanel","currentTab","rightToolbar","fallback","setTab","CurrentComp","changeTab","Items","Properties","Behaviors","Actions","FolderCtx","ItemCtx","ApplicationCtx","databases","db","DatabaseCtx","containers","CreateContainer","ModalAddContainer","add_container","container_created","isLoading","idField","setId","createContainer","PanelNotImplemented","Addons","Registry","ContainerCtx","UserForm","$schema","definitions","username","useRemoteField","setRemote","updateRemote","Users","UsersToolbar","UsersCtx","UserCtx","user_groups","user_roles","getRolesAndGroups","requestGetGroups","requestGetRoles","updateObject","withError","CopyItems","copyItems","responses","input","new_id","CopyItem","copyItem","MoveItems","moveItems","MoveItem","moveItem","RemoveItem","removeItem","pass1","pass2","ChangePassword","perror","setPerror","setPass","n","BaseForm","setName","submit","setTitle","editableFields","IDublinCore","Groups","GroupToolbar","GroupsCtx","GroupCtx","setRoles","handleResponse","addRole","removeRole","addUser","newUserId","removeUser","userToRemove","urole","fontSize","paddingBottom","ErrorBoundaryComponent","Component","errorMsg","errorStack","componentDidCatch","errorInfo","componentStack","render","ErrorBoundary","injectIntl","NotAllowed","NotFound","Path","segments","links","buildPaths","indx","results","paths","views","Application","Database","Container","UserManager","User","Group","GroupManager","Folder","changePassword","forms","itemsColumn","schemas","components","searchEngineQueryParamsFunction","PostreSQL","Elasticsearch","getComponent","defaultComponent","funcCols","getAction","is_folderish","useRegistry","errorStatus","guillotinaReducer","now","loadLocaleData","langCA","langES","langEN","Guillotina","config","searchPath","useReducer","initContext","pr","contextData","Main","Action","IntlProvider","defaultLocale","Layout","onLogout","isMenuOpen","setIsMenuOpen","doLogout","logout","alignItems","src","alt","height","isLogged","ERRORS","failed_to_fetch","invalid_credentials","Login","currentSchema","setCurrentSchema","onLogin","doLogin","setAccount","login","s","ignoreFiels","extraFields","RequiredFieldsForm","setFormData","setErrors","formFields","currentErrors","uuid","Auth","maxRetry","retryRefresh","base_url","getUrl","account","credentials","storeAuth","localStorage","expires","_getToken","isExpired","jwt_decode","setItem","exp","getTime","cleanAuth","refreshToken","willExpire","expiration","getItem"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"react-gmi.modern.js","sources":["../src/guillo-gmi/reducers/guillotina.ts","../src/guillo-gmi/contexts/index.tsx","../src/guillo-gmi/locales/generic_messages.ts","../src/guillo-gmi/lib/helpers.ts","../src/guillo-gmi/components/input/button.tsx","../src/guillo-gmi/lib/utils.ts","../src/guillo-gmi/components/modal.tsx","../src/guillo-gmi/lib/processResponse.ts","../src/guillo-gmi/hooks/useSetState.tsx","../src/guillo-gmi/hooks/useCrudContext.tsx","../src/guillo-gmi/actions/add_item.tsx","../src/guillo-gmi/hooks/useConfig.tsx","../src/guillo-gmi/actions/remove_items.tsx","../src/guillo-gmi/components/input/checkbox.tsx","../src/guillo-gmi/components/error_zone.tsx","../src/guillo-gmi/hooks/useInput.tsx","../src/guillo-gmi/lib/validators.ts","../src/guillo-gmi/components/input/input.tsx","../src/guillo-gmi/components/ui/icon.tsx","../src/guillo-gmi/components/input/email.tsx","../src/guillo-gmi/components/input/form.tsx","../src/guillo-gmi/components/input/password.tsx","../src/guillo-gmi/components/input/form_builder.tsx","../src/guillo-gmi/components/input/select.tsx","../src/guillo-gmi/hooks/useVocabulary.tsx","../src/guillo-gmi/components/input/select_vocabulary.tsx","../src/guillo-gmi/hooks/useLocation.tsx","../src/guillo-gmi/components/Link.tsx","../src/guillo-gmi/components/TdLink.tsx","../src/guillo-gmi/components/ui/loading.tsx","../src/guillo-gmi/components/ui/tag.tsx","../src/guillo-gmi/components/ui/delete.tsx","../src/guillo-gmi/components/ui/table.tsx","../src/guillo-gmi/components/ui/notification.tsx","../src/guillo-gmi/lib/rest.ts","../src/guillo-gmi/lib/search.ts","../src/guillo-gmi/lib/client.tsx","../src/guillo-gmi/components/input/upload.tsx","../src/guillo-gmi/components/input/textarea.tsx","../src/guillo-gmi/hooks/useClickAway.tsx","../src/guillo-gmi/components/input/search_input.tsx","../src/guillo-gmi/components/input/search_input_list.tsx","../src/guillo-gmi/components/input/input_list.tsx","../src/guillo-gmi/components/input/dropdown.tsx","../src/guillo-gmi/components/fields/editableField.tsx","../src/guillo-gmi/components/fields/downloadField.tsx","../src/guillo-gmi/components/fields/renderField.tsx","../src/guillo-gmi/components/fields/editComponent.tsx","../src/guillo-gmi/components/behaviors/iattachment.tsx","../src/guillo-gmi/components/behaviors/imultiattachment.tsx","../src/guillo-gmi/components/behaviors/iimageattachment.tsx","../src/guillo-gmi/components/behaviors/imultiimageattachment.tsx","../src/guillo-gmi/components/behaviors/imultiimageorderedattachment.tsx","../src/guillo-gmi/components/behaviors/iworkflow.tsx","../src/guillo-gmi/components/panel/actions.tsx","../src/guillo-gmi/components/panel/addons.tsx","../src/guillo-gmi/components/panel/behaviors.tsx","../src/guillo-gmi/components/selected_items_actions.tsx","../src/guillo-gmi/components/pagination.tsx","../src/guillo-gmi/models/sharing.ts","../src/guillo-gmi/models/index.ts","../src/guillo-gmi/components/item.tsx","../src/guillo-gmi/components/search_labels.tsx","../src/guillo-gmi/components/search_options_labels.tsx","../src/guillo-gmi/components/search_vocabulary_labels.tsx","../src/guillo-gmi/components/panel/items.tsx","../src/guillo-gmi/components/behavior_view.tsx","../src/guillo-gmi/components/properties_view.tsx","../src/guillo-gmi/components/panel/properties.tsx","../src/guillo-gmi/components/panel/permissions_prinperm.tsx","../src/guillo-gmi/components/panel/permissions_prinrole.tsx","../src/guillo-gmi/components/panel/permissions_roleperm.tsx","../src/guillo-gmi/components/panel/permissions.tsx","../src/guillo-gmi/components/widgets/tags.tsx","../src/guillo-gmi/components/context_toolbar.tsx","../src/guillo-gmi/components/flash.tsx","../src/guillo-gmi/components/tabs.tsx","../src/guillo-gmi/views/folder.tsx","../src/guillo-gmi/views/item.tsx","../src/guillo-gmi/views/application.tsx","../src/guillo-gmi/views/base.tsx","../src/guillo-gmi/views/container.tsx","../src/guillo-gmi/forms/users.tsx","../src/guillo-gmi/hooks/useRemoteField.tsx","../src/guillo-gmi/views/users.tsx","../src/guillo-gmi/actions/copy_items.tsx","../src/guillo-gmi/actions/copy_item.tsx","../src/guillo-gmi/actions/move_items.tsx","../src/guillo-gmi/actions/move_item.tsx","../src/guillo-gmi/actions/remove_item.tsx","../src/guillo-gmi/actions/change_pass.tsx","../src/guillo-gmi/forms/base.tsx","../src/guillo-gmi/components/behaviors/idublincore.tsx","../src/guillo-gmi/views/groups.tsx","../src/guillo-gmi/components/error_boundary.tsx","../src/guillo-gmi/components/notallowed.tsx","../src/guillo-gmi/components/notfound.tsx","../src/guillo-gmi/components/path.tsx","../src/guillo-gmi/hooks/useRegistry.tsx","../src/guillo-gmi/components/guillotina.tsx","../src/guillo-gmi/components/layout.tsx","../src/guillo-gmi/components/login.tsx","../src/guillo-gmi/forms/required_fields.tsx","../src/guillo-gmi/lib/auth.ts","../src/guillo-gmi/types/guillotina.ts"],"sourcesContent":["import { ItemModel } from '../models'\nimport { IndexSignature } from '../types/global'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\nexport interface GuillotinaGlobalState {\n path: string\n loading: boolean\n context?: GuillotinaCommonObject\n flash: {\n message?: string\n type?: string\n }\n action: {\n action?: string\n params?: IndexSignature\n }\n permissions: IndexSignature\n errorStatus?: string\n registry: IndexSignature\n refresh?: number\n}\n\nexport const initialState: GuillotinaGlobalState = {\n path: '',\n loading: false,\n context: undefined,\n flash: {\n message: undefined,\n type: undefined,\n },\n action: {\n action: undefined,\n params: undefined,\n },\n permissions: [],\n errorStatus: undefined,\n registry: {},\n refresh: undefined,\n}\n\nexport enum GuillotinaReducerActionTypes {\n SET_PATH = 'SET_PATH',\n SET_CONTEXT = 'SET_CONTEXT',\n SET_ERROR = 'SET_ERROR',\n SET_FLASH = 'SET_FLASH',\n CLEAR_FLASH = 'CLEAR_FLASH',\n SET_ACTION = 'SET_ACTION',\n CLEAR_ACTION = 'CLEAR_ACTION',\n REFRESH = 'REFRESH',\n APPLY = 'APPLY',\n}\nexport function guillotinaReducer(\n state: GuillotinaGlobalState,\n action: { type: GuillotinaReducerActionTypes; payload: IndexSignature }\n): GuillotinaGlobalState {\n switch (action.type) {\n case GuillotinaReducerActionTypes.SET_PATH:\n return { ...state, path: action.payload.path, loading: true }\n\n case GuillotinaReducerActionTypes.SET_CONTEXT:\n return {\n ...state,\n ...action.payload,\n errorStatus: undefined,\n loading: false,\n }\n\n case GuillotinaReducerActionTypes.SET_ERROR:\n return {\n ...state,\n errorStatus: action.payload.errorStatus,\n loading: false,\n }\n\n case GuillotinaReducerActionTypes.SET_FLASH:\n return { ...state, ...action.payload }\n\n case GuillotinaReducerActionTypes.CLEAR_FLASH:\n return {\n ...state,\n flash: {\n message: undefined,\n type: undefined,\n },\n }\n case GuillotinaReducerActionTypes.SET_ACTION:\n return { ...state, action: action.payload }\n case GuillotinaReducerActionTypes.CLEAR_ACTION:\n return { ...state, action: { action: undefined, params: undefined } }\n\n case GuillotinaReducerActionTypes.REFRESH:\n return {\n ...state,\n refresh: Date.now(),\n loading: !action.payload.transparent,\n }\n\n case GuillotinaReducerActionTypes.APPLY:\n return {\n ...state,\n context: { ...state.context, ...action.payload.context },\n }\n\n default:\n return state\n }\n}\n\nexport interface IColumn {\n key: string\n label: string\n isSortable: string\n child: (\n model: ItemModel,\n link: () => void,\n search: string\n ) => React.ReactElement\n}\n","import { Dispatch, useContext, createContext } from 'react'\nimport { GuillotinaClient } from '../lib/client.js'\nimport { Auth } from '../lib/auth.js'\nimport { IndexSignature } from '../types/global'\nimport {\n GuillotinaGlobalState,\n GuillotinaReducerActionTypes,\n} from '../reducers/guillotina'\nimport { GuillotinaCommonObject } from '../types/guillotina.js'\n\nexport const AuthContext = createContext({})\n\nexport const ClientContext = createContext<GuillotinaClient | null>(null)\n\ninterface PropsTraversal {\n client: GuillotinaClient\n auth: Auth\n state: GuillotinaGlobalState\n dispatch: Dispatch<{\n type: GuillotinaReducerActionTypes\n payload: IndexSignature\n }>\n registry: IndexSignature\n flash: (action: string, result: string) => void\n url: string\n children?: React.ReactNode\n}\n\nexport class Traversal {\n private dispatch\n public state\n public client\n public registry\n public url\n public auth\n\n constructor({ flash, ...props }: PropsTraversal) {\n this.dispatch = props.dispatch\n this.state = props.state\n this.client = props.client\n this.registry = props.registry\n this.auth = props.auth\n this.url = props.url\n if (typeof flash === 'function') this.flash = flash\n }\n\n refresh({ transparent = false } = {}) {\n this.dispatch({\n type: GuillotinaReducerActionTypes.REFRESH,\n payload: { transparent },\n })\n }\n\n get path() {\n return this.state.path\n }\n\n get pathPrefix() {\n return this.state.path.slice(1)\n }\n\n get context(): GuillotinaCommonObject {\n if (this.state.context === undefined) {\n throw new Error('Context is not loaded')\n }\n return this.state.context\n }\n\n get containerPath() {\n return this.client.getContainerFromPath(this.path)\n }\n\n apply(data: IndexSignature) {\n // apply a optimistic update to context\n this.dispatch({\n type: GuillotinaReducerActionTypes.APPLY,\n payload: { context: data },\n })\n }\n\n flash(message: string, type: string) {\n this.dispatch({\n type: GuillotinaReducerActionTypes.SET_FLASH,\n payload: { flash: { message, type } },\n })\n window.scrollTo({ top: 0, left: 0, behavior: 'smooth' })\n }\n\n clearFlash() {\n this.dispatch({\n type: GuillotinaReducerActionTypes.CLEAR_FLASH,\n payload: {},\n })\n }\n\n doAction(action: string, params = {}) {\n this.dispatch({\n type: GuillotinaReducerActionTypes.SET_ACTION,\n payload: { action, params },\n })\n }\n\n cancelAction() {\n this.dispatch({\n type: GuillotinaReducerActionTypes.CLEAR_ACTION,\n payload: {},\n })\n }\n\n hasPerm(permission: string) {\n return this.state.permissions[permission] === true\n }\n\n filterTabs(tabs: IndexSignature, tabsPermissions: IndexSignature) {\n const result: IndexSignature = {}\n Object.keys(tabs).forEach((item) => {\n const perm = tabsPermissions[item]\n if (perm && this.hasPerm(perm)) {\n result[item] = tabs[item]\n } else if (!perm) {\n result[item] = tabs[item]\n }\n })\n return result\n }\n}\n\nexport const TraversalContext = createContext<Traversal | null>(null)\nexport function TraversalProvider({\n children,\n ...props\n}: PropsTraversal & { children: React.ReactNode }) {\n return (\n <TraversalContext.Provider value={new Traversal(props)}>\n {children}\n </TraversalContext.Provider>\n )\n}\n\nexport function useTraversal() {\n const traversal = useContext(TraversalContext)\n if (!traversal) {\n throw new Error('useTraversal must be used within a TraversalProvider')\n }\n return traversal\n}\n\ninterface PropsClient {\n children: React.ReactNode\n client: GuillotinaClient\n}\nexport function ClientProvider({ children, client }: PropsClient) {\n return (\n <ClientContext.Provider value={client}>{children}</ClientContext.Provider>\n )\n}\n\nexport function useGuillotinaClient() {\n const client = useContext(ClientContext)\n if (!client) {\n throw new Error('useGuillotinaClient must be used within a ClientProvider')\n }\n return client\n}\n","import { defineMessages } from 'react-intl'\n\nexport const genericMessages = defineMessages({\n loading: {\n id: 'loading',\n defaultMessage: 'Loading',\n },\n remove: {\n id: 'remove',\n defaultMessage: 'Remove',\n },\n install: {\n id: 'install',\n defaultMessage: 'Install',\n },\n delete: {\n id: 'delete',\n defaultMessage: 'Delete',\n },\n move_to: {\n id: 'move_to',\n defaultMessage: 'Move to...',\n },\n copy_to: {\n id: 'copy_to',\n defaultMessage: 'Copy to...',\n },\n behaviors: {\n id: 'behaviors',\n defaultMessage: 'Behaviors',\n },\n static: {\n id: 'static',\n defaultMessage: 'Static',\n },\n disable: {\n id: 'disable',\n defaultMessage: 'Disable',\n },\n enable: {\n id: 'enable',\n defaultMessage: 'Enable',\n },\n enabled: {\n id: 'enabled',\n defaultMessage: 'Enabled',\n },\n available: {\n id: 'available',\n defaultMessage: 'Available',\n },\n invalid_form_data: {\n id: 'invalid_form_data',\n defaultMessage: 'Invalid form data',\n },\n invalid_form: {\n id: 'invalid_form',\n defaultMessage: 'Invalid form',\n },\n select_principal: {\n id: 'select_principal',\n defaultMessage: 'Select a Principal',\n },\n select_role: {\n id: 'select_role',\n defaultMessage: 'Select a Role',\n },\n select_permissions: {\n id: 'select_permissions',\n defaultMessage: 'Select permissions',\n },\n operation: {\n id: 'operation',\n defaultMessage: 'Operation',\n },\n save: {\n id: 'save',\n defaultMessage: 'Save',\n },\n choose: {\n id: 'choose',\n defaultMessage: 'Choose...',\n },\n property: {\n id: 'property',\n defaultMessage: 'Property',\n },\n value: {\n id: 'value',\n defaultMessage: 'Value',\n },\n create: {\n id: 'create',\n defaultMessage: 'Create',\n },\n upload: {\n id: 'upload',\n defaultMessage: 'Upload',\n },\n image: {\n id: 'image',\n defaultMessage: 'Image',\n },\n error_provide_key_name: {\n id: 'error_provide_key_name',\n defaultMessage: 'Provide a key name',\n },\n mandatory_field: {\n id: 'mandatory_field',\n defaultMessage: '{field} is mandatory!',\n },\n error_in_field: {\n id: 'error_in_field',\n defaultMessage: 'Error in field {field}!',\n },\n field_updated: {\n id: 'field_updated',\n defaultMessage: 'Field {field}, updated!',\n },\n field_deleted: {\n id: 'field_deleted',\n defaultMessage: 'Field {field}, deleted!',\n },\n can_not_delete_field: {\n id: 'can_not_delete_field',\n defaultMessage: 'You can not delete {field}!',\n },\n cancel: {\n id: 'cancel',\n defaultMessage: 'Cancel',\n },\n open: {\n id: 'open',\n defaultMessage: 'Open',\n },\n download: {\n id: 'download',\n defaultMessage: 'Download',\n },\n search: {\n id: 'search',\n defaultMessage: 'Search',\n },\n no_results: {\n id: 'no_results',\n defaultMessage: 'No results',\n },\n load_more: {\n id: 'load_more',\n defaultMessage: 'Load more',\n },\n add_type: {\n id: 'add_type',\n defaultMessage: 'Add {type}',\n },\n confirm: {\n id: 'confirm',\n defaultMessage: 'Confirm',\n },\n field_is_required: {\n id: 'field_is_required',\n defaultMessage: 'This field is required',\n },\n title: {\n id: 'title',\n defaultMessage: 'Title',\n },\n add: {\n id: 'add',\n defaultMessage: 'Add',\n },\n not_implemented: {\n id: 'not_implemented',\n defaultMessage: 'Not implemented',\n },\n failed_to_update: {\n id: 'failed_to_update',\n defaultMessage: 'Failed to update: {error}',\n },\n add_user: {\n id: 'add_user',\n defaultMessage: 'Add a User',\n },\n role: {\n id: 'role',\n defaultMessage: 'Role',\n },\n setting: {\n id: 'setting',\n defaultMessage: 'Setting',\n },\n permission: {\n id: 'permission',\n defaultMessage: 'Permission',\n },\n})\n\nexport const genericFileMessages = defineMessages({\n error_file_key_name: {\n id: 'error_file_key_name',\n defaultMessage: 'Provide a file and a key name',\n },\n error_upload_file: {\n id: 'error_upload_file',\n defaultMessage: 'Failed to upload file',\n },\n error_upload_file_size: {\n id: 'error_upload_file_size',\n defaultMessage: 'Failed to upload file {size}',\n },\n image_uploaded: {\n id: 'image_uploaded',\n defaultMessage: 'Image uploaded!',\n },\n file_uploaded: {\n id: 'file_uploaded',\n defaultMessage: 'File uploaded!',\n },\n failed_delete_file: {\n id: 'failed_delete_file',\n defaultMessage: 'Failed to delete file',\n },\n image_deleted: {\n id: 'image_deleted',\n defaultMessage: 'Image deleted!',\n },\n confirm_message_delete_file: {\n id: 'confirm_message_delete_file',\n defaultMessage: 'Are you sure to remove: {fileKeyToDelete}?',\n },\n confirm_message_delete_image: {\n id: 'confirm_message_delete_image',\n defaultMessage: 'Are you sure to remove the image?',\n },\n no_images_uploaded: {\n id: 'no_images_uploaded',\n defaultMessage: 'No images uploaded',\n },\n no_files_uploaded: {\n id: 'no_files_uploaded',\n defaultMessage: 'No files uploaded',\n },\n upload_an_image: {\n id: 'upload_an_image',\n defaultMessage: 'Upload an image',\n },\n upload_a_file: {\n id: 'upload_a_file',\n defaultMessage: 'Upload a file',\n },\n})\n","import { IntlShape } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { IndexSignature } from '../types/global'\n\nexport const classnames = (classNames: (string | boolean)[]) => {\n return classNames.filter(Boolean).join(' ').trim()\n}\n\nexport const noop = () => {}\n\nlet current = 0\n\nexport const generateUID = (prefix = '') => `${prefix || 'id'}-${current++}`\n\nexport const toQueryString = (params: IndexSignature<string>) => {\n return Object.keys(params)\n .map((key) => {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key])\n })\n .join('&')\n}\n\nexport function base64ToArrayBuffer(base64: string) {\n const binaryString = window.atob(base64)\n const binaryLen = binaryString.length\n const bytes = new Uint8Array(binaryLen)\n for (let i = 0; i < binaryLen; i++) {\n const ascii = binaryString.charCodeAt(i)\n bytes[i] = ascii\n }\n return bytes\n}\n\nexport function stringToSlug(str: string) {\n str = str.replace(/^\\s+|\\s+$/g, '') // trim\n str = str.toLowerCase()\n\n // remove accents, swap ñ for n, etc\n const from = 'àáäâèéëêìíïîòóöôùúüûñç·/_,:;'\n const to = 'aaaaeeeeiiiioooouuuunc------'\n for (let i = 0, l = from.length; i < l; i++) {\n str = str.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i))\n }\n\n str = str\n .replace(/[^a-z0-9 -]/g, '') // remove invalid chars\n .replace(/\\s+/g, '-') // collapse whitespace and replace by -\n .replace(/-+/g, '-') // collapse dashes\n\n return str\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(function () {\n resolve()\n }, ms)\n })\n}\n\nexport const getActionsObject = (\n intl: IntlShape,\n multiple = false\n): {\n [key: string]: {\n text: string\n perms: string[]\n action: string\n }\n} => ({\n DELETE: {\n text: intl.formatMessage(genericMessages.delete),\n perms: ['guillotina.DeleteContent'],\n action: multiple ? 'removeItems' : 'removeItem',\n },\n MOVE: {\n text: intl.formatMessage(genericMessages.move_to),\n perms: ['guillotina.MoveContent'],\n action: multiple ? 'moveItems' : 'moveItem',\n },\n COPY: {\n text: intl.formatMessage(genericMessages.copy_to),\n perms: ['guillotina.DuplicateContent'],\n action: multiple ? 'copyItems' : 'copyItem',\n },\n})\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n className?: string\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void\n type?: 'submit' | 'reset' | 'button'\n loading?: boolean\n disabled?: boolean\n dataTest?: string\n}\nexport const Button = ({\n children,\n className = 'is-primary',\n onClick,\n type = 'submit',\n loading = false,\n disabled = false,\n dataTest,\n}: Props) => {\n let css = [...className.split(' '), 'button']\n if (loading) css = css.concat('is-loading')\n\n return (\n <p className=\"control\">\n <button\n type={type}\n className={classnames(css)}\n onClick={onClick}\n disabled={disabled}\n data-test={dataTest}\n >\n {children}\n </button>\n </p>\n )\n}\n","import { IndexSignature } from '../types/global'\nimport { stringToSlug } from './helpers'\n\nexport const formatDate = (str: string): string => {\n const d = new Date(str)\n const minutes = d.getMinutes() < 10 ? `0${d.getMinutes()}` : d.getMinutes()\n return `${d.getDate()}/${\n d.getMonth() + 1\n }/${d.getFullYear()} ${d.getHours()}:${minutes}`\n}\n\nexport const get = <T>(\n obj: IndexSignature,\n path: string | string[],\n defValue: T\n): T => {\n // If path is not defined or it has false value\n if (!path) return defValue\n // Check if path is string or array. Regex : ensure that we do not have '.' and brackets.\n // Regex explained: https://regexr.com/58j0k\n const pathArray = Array.isArray(path) ? path : path.match(/([^[.\\]])+/g)\n // Find value if exist return otherwise return undefined value;\n if (pathArray === null) return defValue\n\n return (pathArray.reduce((prevObj, key) => prevObj && prevObj[key], obj) ??\n defValue) as T\n}\n\nexport function getNewId(id = '') {\n const suffix = '-copy-'\n const rgx = new RegExp(`($|${suffix}\\\\d*)`)\n\n return stringToSlug(id).replace(rgx, (r: string) => {\n const num = parseInt(r.replace(suffix, '') || '0')\n return `${suffix}${num + 1}`\n })\n}\n\nexport function debounce<T extends unknown[], U>(\n callback: (...args: T) => PromiseLike<U> | U,\n wait: number\n) {\n let timer: ReturnType<typeof setTimeout>\n\n return (...args: T): Promise<U> => {\n clearTimeout(timer)\n return new Promise((resolve) => {\n timer = setTimeout(() => resolve(callback(...args)), wait)\n })\n }\n}\n","import usePortal from 'react-useportal'\nimport { Button } from './input/button'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { get } from '../lib/utils'\n\ninterface ModalProps {\n isActive: boolean\n setActive: (value: boolean) => void\n children: React.ReactNode\n className?: string\n}\n\nexport function Modal(props: ModalProps) {\n const { isActive, setActive, children } = props\n const { Portal } = usePortal()\n\n const css = 'modal ' + (isActive ? 'is-active ' : '') + props.className\n return (\n <Portal>\n <div className={css}>\n <div className=\"modal-background\" onClick={() => setActive(false)} />\n <div className=\"modal-content\">\n <div className=\"box\">{children}</div>\n </div>\n <button\n className=\"modal-close is-large\"\n aria-label=\"close\"\n onClick={() => setActive(false)}\n />\n </div>\n </Portal>\n )\n}\n\ninterface ConfirmProps {\n message?: string\n onCancel: () => void\n onConfirm: () => void\n loading?: boolean\n}\nexport function Confirm({\n message,\n onCancel,\n onConfirm,\n loading,\n}: ConfirmProps) {\n const intl = useIntl()\n const setActive = () => onCancel()\n return (\n <Modal isActive setActive={setActive} className=\"confirm\">\n <h1 className=\"title is-size-5\">{message || 'Are you Sure?'}</h1>\n <div className=\"level\" style={{ marginTop: 50 }}>\n <div className=\"level-left\"></div>\n <div className=\"level-right\">\n <button\n className=\"button is-danger\"\n onClick={() => onCancel()}\n data-test=\"btnCancelModalTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </button>\n &nbsp;&nbsp;\n <Button\n loading={loading}\n className=\"is-success\"\n onClick={() => onConfirm()}\n dataTest=\"btnConfirmModalTest\"\n >\n {intl.formatMessage(genericMessages.confirm)}\n </Button>\n </div>\n </div>\n </Modal>\n )\n}\n\ninterface PathTreeProps {\n title: string\n defaultPath?: string\n children?: React.ReactNode\n onConfirm: (path: string, target: EventTarget) => void\n onCancel: () => void\n}\n// @todo Improve it... Replacing the inputText to a tree\nexport function PathTree({\n title,\n defaultPath,\n children,\n onConfirm,\n onCancel,\n}: PathTreeProps) {\n const intl = useIntl()\n return (\n <Modal isActive setActive={onCancel}>\n <h1>{title}</h1>\n <form\n onSubmit={(e) => {\n e.preventDefault()\n onConfirm(get(e, 'target.0.value', ''), e.target)\n }}\n >\n <small style={{ display: 'block', marginTop: 20 }}>\n {`Example: /folder (without /db/container on front)`}\n </small>\n <input\n className=\"input mb-3\"\n defaultValue={defaultPath}\n type=\"text\"\n data-test=\"inputPathTreeTest\"\n />\n {children}\n <div className=\"level-right mt-3\">\n <button\n type=\"button\"\n className=\"button is-danger\"\n onClick={onCancel}\n data-test=\"btnCancelModalTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </button>\n &nbsp;&nbsp;\n <button\n type=\"submit\"\n className=\"button is-success\"\n data-test=\"btnConfirmModalTest\"\n >\n {intl.formatMessage(genericMessages.confirm)}\n </button>\n </div>\n </form>\n </Modal>\n )\n}\n","interface DataError {\n details: string\n reason: string\n}\nconst getErrorMessage = (\n dataError: DataError,\n defaultValue: string | number\n) => {\n if (dataError && dataError.details) {\n return dataError.details\n } else if (dataError && dataError.reason) {\n return dataError.reason\n }\n return defaultValue\n}\n\ninterface IResponse<T = unknown> {\n loading?: boolean\n isError: boolean\n errorMessage?: string\n result?: T\n response?: unknown\n}\n\nexport async function processResponse<T>(\n res: Response,\n ready_body = true\n): Promise<IResponse<T>> {\n if (res.status < 400)\n return {\n isError: false,\n loading: false,\n result: ready_body ? await res.json() : res.status,\n response: res,\n }\n else\n return {\n isError: true,\n loading: false,\n errorMessage: getErrorMessage(await res.json(), res.status).toString(),\n response: res,\n }\n}\n","import { useState, useCallback } from 'react'\n\n// **** Types **** //\n\nexport type TSetState<T> = (newPartialState: Partial<T>) => void\n\n// **** Functions **** //\n\n/**\n * Do setState like react class component.\n */\nfunction useSetState<T extends object>(initialState: T): [T, TSetState<T>] {\n const [state, setState] = useState<T>(initialState)\n // Function which accepts a partial state to merge\n const setCustomState = useCallback((newPartialState: Partial<T>) => {\n try {\n setState(\n (prevState): T => {\n return { ...prevState, ...newPartialState }\n }\n )\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error)\n }\n }, [])\n // Return\n return [state, setCustomState]\n}\n\n// **** Export Default **** //\n\nexport default useSetState\n","import { Traversal, useTraversal } from '../contexts'\nimport { processResponse } from '../lib/processResponse'\nimport useSetState from './useSetState'\n\ninterface State<T> {\n loading?: boolean\n isError?: boolean\n errorMessage?: string\n result?: T\n response?: unknown\n}\nconst initial = {\n loading: undefined,\n isError: false,\n errorMessage: undefined,\n result: undefined,\n response: undefined,\n}\n\nfunction patch<T>(\n setState: (value: Partial<State<T>>) => void,\n Ctx: Traversal\n) {\n return async (\n data = {},\n endpoint?: string,\n body = false\n ): Promise<State<T>> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.patch(path, data)\n newState = await processResponse<T>(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n }\n}\n\nfunction del<T>(setState: (value: Partial<State<T>>) => void, Ctx: Traversal) {\n return async (\n data = {},\n endpoint?: string,\n body = false\n ): Promise<State<T>> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.delete(path, data)\n newState = await processResponse(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n }\n}\n\nfunction post<T>(setState: (value: Partial<State<T>>) => void, Ctx: Traversal) {\n return async (\n data = {},\n endpoint?: string,\n body = true\n ): Promise<State<T>> => {\n setState({ loading: true })\n let newState: State<T> = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.post(path, data)\n newState = await processResponse(res, body)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n setState(newState)\n return newState\n }\n}\n\nfunction get<T>(setState: (value: Partial<State<T>>) => void, Ctx: Traversal) {\n return async (endpoint?: string): Promise<State<T>> => {\n setState({ loading: true })\n let newState = {}\n try {\n const path = endpoint ? `${Ctx.path}${endpoint}` : Ctx.path\n const res = await Ctx.client.get(path)\n newState = await processResponse(res, true)\n } catch (e) {\n console.error('Error', e)\n newState = { isError: true, errorMessage: 'unhandled exception' }\n }\n\n setState(newState)\n return newState\n }\n}\n// const get = (\n// setState: (value: Partial<State>) => void,\n// Ctx: Traversal\n// ) =>\n\nexport function useCrudContext<T>() {\n const Ctx = useTraversal()\n const [state, setState] = useSetState<State<T>>(initial)\n\n return {\n ...state,\n Ctx,\n patch: patch(setState, Ctx),\n del: del(setState, Ctx),\n post: post(setState, Ctx),\n get: get(setState, Ctx),\n }\n}\n","import { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { IndexSignature } from '../types/global'\n\ninterface Props {\n type: string\n}\n\nexport function AddItem(props: Props) {\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const { type } = props\n const { getForm } = Ctx.registry\n\n const Form = getForm(type)\n\n const setActive = () => {\n Ctx.cancelAction()\n }\n\n async function doSubmit(data: IndexSignature) {\n const form = Object.assign(\n {},\n { '@type': type },\n data.formData ? data.formData : data\n )\n\n const { isError, errorMessage } = await post(form)\n if (!isError) {\n Ctx.flash('Content created!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n Ctx.refresh()\n }\n\n return (\n <Modal isActive={true} setActive={setActive}>\n <Form\n loading={loading}\n onSubmit={doSubmit}\n actionName={'Add ' + type}\n title={'Add ' + type}\n type={type}\n dataTest={`formAdd${type}Test`}\n />\n </Modal>\n )\n}\n","import { useRef } from 'react'\nimport { GuillotinaSchemaProperty } from '../types/guillotina'\n\nexport const Permissions: string[] = [\n 'guillotina.AddContent',\n 'guillotina.ModifyContent',\n 'guillotina.ViewContent',\n 'guillotina.DeleteContent',\n 'guillotina.AccessContent',\n 'guillotina.SeePermissions',\n 'guillotina.ChangePermissions',\n 'guillotina.MoveContent',\n 'guillotina.DuplicateContent',\n 'guillotina.ReadConfiguration',\n 'guillotina.RegisterConfigurations',\n 'guillotina.WriteConfiguration',\n 'guillotina.ManageAddons',\n 'guillotina.swagger.View',\n]\n\ninterface IConfig {\n DisabledTypes: string[]\n PageSize: number\n DelayActions: number\n Permissions: string[]\n SearchEngine: string\n SizeImages?: string[]\n icons?: { [key: string]: string }\n properties_default?: string[]\n properties_ignore_fields?: string[]\n fieldHaveDeleteButton: (schema: GuillotinaSchemaProperty) => boolean\n}\n\nexport const defaultConfig: IConfig = {\n DisabledTypes: ['UserManager', 'GroupManager'],\n PageSize: 10,\n DelayActions: 200,\n Permissions: Permissions,\n SearchEngine: 'PostreSQL', // Elasticsearch\n fieldHaveDeleteButton: (schema) => {\n return (\n schema?.widget === 'file' ||\n schema?.widget === 'select' ||\n schema?.type === 'array'\n )\n },\n}\n\nlet calculated = Object.assign({}, defaultConfig)\n\nfunction addConfig(updates: Partial<IConfig>, currentConfig: IConfig): IConfig {\n let updatedConfig: IConfig = { ...currentConfig }\n\n Object.entries(updates).forEach(([key, value]) => {\n const currentKey = key as keyof IConfig\n const currentValue = currentConfig[currentKey]\n\n if (Array.isArray(value) && Array.isArray(currentValue)) {\n // Correctly type the array concatenation\n updatedConfig = {\n ...updatedConfig,\n [currentKey]: [...currentValue, ...value],\n }\n } else if (isPlainObject(value) && isPlainObject(currentValue)) {\n // Correctly type the object merging\n updatedConfig = {\n ...updatedConfig,\n [currentKey]: { ...currentValue, ...value },\n }\n } else {\n // Directly assign all other types\n updatedConfig = {\n ...updatedConfig,\n [currentKey]: value,\n }\n }\n })\n\n return updatedConfig as IConfig\n}\n\n// Helper function to check if a value is a plain object (and not a React node, etc.)\nfunction isPlainObject(value: any): value is object {\n return Object.prototype.toString.call(value) === '[object Object]'\n}\n\nexport function useConfig(cfg = {}) {\n const ref = useRef<IConfig>()\n if (cfg && !ref.current) {\n calculated = addConfig(cfg, calculated)\n ref.current = calculated\n }\n return calculated\n}\n","import { Confirm } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { sleep } from '../lib/helpers'\nimport { useConfig } from '../hooks/useConfig'\nimport { ItemModel } from '../models'\nimport { useState } from 'react'\n\ninterface Props {\n items: ItemModel[]\n}\nexport function RemoveItems(props: Props) {\n const Ctx = useTraversal()\n const cfg = useConfig()\n const [loading, setLoading] = useState(false)\n const { items = [] } = props\n const last = items[items.length - 1].id\n const itemsNames = items\n .map((item) => item.id)\n .join(', ')\n .replace(`, ${last}`, ` and ${last}`)\n\n async function removeItems() {\n const errors: unknown[] = []\n setLoading(true)\n\n const actions = items.map(async (item) => {\n const res = await Ctx.client.delete(`${Ctx.path}${item.id}`, {})\n if (!res.ok) {\n const err = await res.json()\n errors.push(err)\n }\n })\n // this sleep is here, to let elasticsearch, wait for\n // index our operations... (will work 99% of use cases)\n actions.push(sleep(cfg.DelayActions))\n\n await Promise.all(actions)\n\n if (errors.length === 0) {\n Ctx.flash(`Items removed!`, 'success')\n Ctx.refresh()\n } else {\n const errorstr = errors.map((err) => JSON.stringify(err)).join('\\n')\n Ctx.flash(`Something went wrong!! ${errorstr}`, 'danger')\n }\n setLoading(false)\n Ctx.cancelAction()\n }\n\n return (\n <Confirm\n loading={loading}\n onCancel={() => Ctx.cancelAction()}\n onConfirm={removeItems}\n message={`Are you sure to remove: ${itemsNames}?`}\n />\n )\n}\n","import { ChangeEvent, useEffect, useRef, useState } from 'react'\nimport { classnames } from '../../lib/helpers'\n\ninterface Props {\n className?: string\n classNameInput?: string\n loading?: boolean\n indeterminate?: boolean\n backgroundColor?: string\n borderColor?: string\n dataTest?: string\n onChange: (value: boolean) => void\n id?: string\n disabled?: boolean\n checked?: boolean\n children?: React.ReactNode\n placeholder?: string\n}\n\nexport const Checkbox = ({\n id,\n className,\n classNameInput,\n loading,\n disabled,\n indeterminate = false,\n checked,\n children,\n placeholder,\n onChange,\n dataTest,\n}: Props) => {\n const inputRef = useRef<HTMLInputElement>(null)\n const [state, setState] = useState<boolean>(!!checked)\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = indeterminate\n }\n }, [indeterminate])\n\n const updateState = (ev: ChangeEvent<HTMLInputElement>) => {\n setState(ev.target.checked)\n onChange(ev.target.checked)\n }\n\n return (\n <div className=\"field\">\n <label htmlFor={id} className={classnames(['checkbox', className ?? ''])}>\n <input\n ref={inputRef}\n disabled={disabled || loading}\n id={id}\n type=\"checkbox\"\n className={classnames(['checkbox', classNameInput ?? ''])}\n checked={state}\n onChange={updateState}\n data-test={dataTest}\n />\n {children || placeholder}\n </label>\n </div>\n )\n}\n","import PropTypes from 'prop-types'\nimport { classnames } from '../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n id?: string\n className?: string\n}\n\nconst ErrorZone = ({ children, id, className = '' }: Props) => {\n return (\n <p className={classnames(['help is-danger', className])} id={id}>\n {children}\n </p>\n )\n}\n\nErrorZone.propTypes = {\n children: PropTypes.node,\n id: PropTypes.string,\n className: PropTypes.string,\n}\n\nexport default ErrorZone\n","import { ChangeEvent, useEffect, useState } from 'react'\n\nconst applyValidators = (\n value: string,\n validators: ((value: string) => boolean)[]\n) => {\n const validation = Array.isArray(validators) ? validators : [validators]\n let result = true\n validation.forEach((func) => {\n if (func && func(value) === false) {\n result = false\n }\n })\n return result\n}\n\nconst useInput = (\n onChange: (value: string) => void | undefined,\n value: string,\n validators: ((value: string) => boolean)[]\n) => {\n const [state, setState] = useState({ hasError: false, value: value })\n\n const onUpdate = (ev: ChangeEvent<HTMLInputElement>) => {\n const value: string = ev && ev.target ? ev.target.value : ''\n setState({ value, hasError: false })\n if (onChange) onChange(value)\n }\n\n const onBlur = () => {\n const hasError = applyValidators(state.value, validators) === false\n if (hasError) setState({ value: state.value, hasError })\n }\n\n const onFocus = () => {\n if (state.hasError) {\n setState({ value: state.value, hasError: false })\n }\n }\n\n useEffect(() => {\n setState({ value, hasError: false })\n }, [value])\n\n return {\n onChange: onUpdate,\n onFocus,\n onBlur,\n state,\n }\n}\n\nexport default useInput\n","// From github.com/protonmail/proton-shared\n\n/* eslint-disable no-useless-escape */\nexport const REGEX_EMAIL = /(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/i\nexport const REGEX_URL = /((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)/\nexport const REGEX_HEX_COLOR = /^#([a-f0-9]{3,4}|[a-f0-9]{4}(?:[a-f0-9]{2}){1,2})\\b$/i\nexport const REGEX_NUMBER = /^\\d+$/\n\nexport const isEmpty = (value = '') => !value.length\nexport const maxLength = (value = '', limit = 0) => value.length <= limit\nexport const minLength = (value = '', limit = 0) => value.length >= limit\nexport const isEmail = (value = '') => REGEX_EMAIL.test(value)\nexport const isURL = (value = '') => REGEX_URL.test(value)\nexport const isHexColor = (value = '') => REGEX_HEX_COLOR.test(value)\nexport const isNumber = (value = '') => REGEX_NUMBER.test(value)\nexport const notEmpty = (value: string) => !!value.length\n","import { forwardRef, useRef, useState } from 'react'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport ErrorZone from '../error_zone'\nimport useInput from '../../hooks/useInput'\nimport { notEmpty } from '../../lib/validators'\nimport { useEffect } from 'react'\n\nconst noop = () => true\ninterface Props {\n name?: string\n icon?: JSX.Element\n iconPosition?: 'has-icons-left' | 'has-icons-right'\n error?: string\n errorZoneClassName?: string\n autoComplete?: string\n className?: string\n widget?: string\n loading?: boolean\n validator?: ((value: string) => boolean) | ((value: string) => boolean)[]\n errorMessage?: string\n dataTest?: string\n autofocus?: boolean\n onChange: (value: string) => void | undefined\n type?: string\n value?: string\n required?: boolean\n id?: string\n placeholder?: string\n disabled?: boolean\n onKeyUp?: (event: React.KeyboardEvent<HTMLInputElement>) => void\n}\n\nexport const Input = forwardRef<HTMLInputElement, Props>(\n (\n {\n icon,\n iconPosition = 'has-icons-right',\n error,\n errorZoneClassName,\n autoComplete = 'off',\n className = '',\n widget = 'input',\n type = 'text',\n loading = false,\n required = false,\n id,\n placeholder,\n value,\n autofocus = false,\n onChange,\n validator = noop,\n errorMessage,\n dataTest = 'testInput',\n disabled,\n onKeyUp,\n },\n ref\n ) => {\n let validatorFn: ((value: string) => boolean)[] = []\n if (required) {\n validatorFn = Array.isArray(validator)\n ? [...validator, notEmpty]\n : [validator, notEmpty]\n }\n\n const { state, ...handlers } = useInput(onChange, value ?? '', validatorFn)\n const [uid] = useState(generateUID('input'))\n const [mounted, setMounted] = useState(false)\n // eslint-disable-next-line\n const newRef = ref || useRef()\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n useEffect(() => {\n if (\n autofocus &&\n !error &&\n newRef != null &&\n typeof newRef !== 'function' &&\n newRef.current\n ) {\n newRef.current.focus()\n }\n }, [mounted, autofocus, newRef, error])\n\n const theError = state.hasError ? errorMessage || 'invalid field' : ''\n const statusClasses = state.hasError ? 'is-danger' : ''\n\n const cssControl = () => (icon ? ['control', iconPosition] : ['control'])\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classnames(cssControl())}>\n <input\n className={classnames([widget, className, statusClasses])}\n aria-describedby={uid}\n id={id}\n ref={ref}\n type={type}\n value={state.value}\n placeholder={placeholder}\n autoComplete={autoComplete}\n disabled={loading || disabled}\n required={required}\n data-test={dataTest}\n onKeyUp={onKeyUp}\n {...handlers}\n />\n {icon && icon}\n </div>\n <ErrorZone className={errorZoneClassName} id={uid}>\n {state.hasError ? theError : ''}\n </ErrorZone>\n </div>\n )\n }\n)\n\nInput.displayName = 'Input'\nexport default Input\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n icon: string\n className?: string\n align?: string\n}\n\nexport const Icon = ({ icon, className = '', align }: Props) => {\n const addClass = className ? className.split(' ') : [className]\n\n align = align || 'is-right'\n\n return (\n <span className={classnames(['icon', align, ...addClass])}>\n <i className={icon}></i>\n </span>\n )\n}\n","import { Input } from './input'\nimport { isEmail } from '../../lib/validators'\nimport { Icon } from '../ui/icon'\nimport { useIntl } from 'react-intl'\n\ninterface Props {\n value?: string\n dataTest?: string\n onChange: (value: string) => void\n placeholder?: string\n id?: string\n}\nexport const EmailInput = ({\n value = '',\n dataTest,\n placeholder,\n id,\n onChange,\n}: Props) => {\n const intl = useIntl()\n return (\n <Input\n type=\"email\"\n validator={isEmail}\n errorMessage={intl.formatMessage({\n id: 'invalid_email',\n defaultMessage: 'Invalid email',\n })}\n value={value}\n dataTest={dataTest}\n icon={<Icon icon=\"fas fa-envelope\" />}\n id={id}\n placeholder={placeholder}\n onChange={onChange}\n />\n )\n}\n","import { noop } from '../../lib/helpers'\nimport { classnames } from '../../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n className?: string\n onSubmit?: (event: React.FormEvent<HTMLFormElement>) => void\n onReset?: (event: React.FormEvent<HTMLFormElement>) => void\n autoComplete?: string\n title?: string\n error?: string\n dataTest?: string\n}\nexport const Form = ({\n children,\n className = '',\n onSubmit = noop,\n onReset = noop,\n autoComplete = 'off',\n title,\n error,\n dataTest,\n}: Props) => {\n const handleSubmit = (event: React.SyntheticEvent<HTMLFormElement>) => {\n event.preventDefault()\n onSubmit(event)\n }\n return (\n <div data-test={dataTest}>\n {title && (\n <div className=\"level\">\n <h1 className=\"title is-size-4\">{title}</h1>\n </div>\n )}\n {error && <div className=\"notification is-danger\">{error}</div>}\n <form\n onSubmit={handleSubmit}\n onReset={onReset}\n autoComplete={autoComplete}\n className={classnames(['form', className])}\n >\n {children}\n </form>\n </div>\n )\n}\n","import { InputHTMLAttributes } from 'react'\nimport { Input } from './input'\n\ninterface Props {\n value: string\n dataTest: string\n onChange: (value: string) => void\n}\n\nexport const PasswordInput = ({\n value,\n dataTest,\n onChange,\n}: Props & InputHTMLAttributes<HTMLInputElement>) => {\n return (\n <Input\n value={value}\n type=\"password\"\n dataTest={dataTest}\n onChange={onChange}\n />\n )\n}\n","import { Form } from './form'\nimport { Input } from './input'\nimport { EmailInput } from './email'\nimport { PasswordInput } from './password'\nimport { Button } from './button'\nimport { Checkbox } from './checkbox'\nimport { generateUID } from '../../lib/helpers'\nimport { Children, cloneElement, isValidElement, useRef } from 'react'\nimport { IndexSignature } from '../../types/global'\nimport {\n GuillotinaSchema,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\n\nconst formComponents = {\n string: Input,\n password: PasswordInput,\n boolean: Checkbox,\n email: EmailInput,\n}\n\ninterface Props {\n schema: GuillotinaSchema\n formData?: IndexSignature\n onSubmit: (formData: IndexSignature, initialData: IndexSignature) => void\n actionName: string\n children?: React.ReactNode\n exclude?: string[]\n remotes?: IndexSignature\n submitButton?: boolean\n}\n\nexport function FormBuilder({\n schema,\n formData,\n onSubmit,\n actionName,\n children,\n exclude = [],\n remotes = {},\n submitButton = true,\n}: Props) {\n const ref = useRef<IndexSignature | null>(null)\n const { properties, required } = schema\n const values = Object.assign({}, formData || {})\n\n // build initial state\n const initialState: IndexSignature = {}\n const fields = Object.keys(properties).filter((x) => !exclude.includes(x))\n\n fields.forEach((element) => {\n initialState[element] = values[element] || undefined\n })\n\n // Register remotes\n if (ref.current === null) {\n ref.current = {}\n Object.keys(remotes).forEach((item) => (ref.current![item] = remotes[item]))\n } else {\n // apply remote changes\n Object.keys(remotes).forEach((key) => {\n if (JSON.stringify(ref.current![key]) !== JSON.stringify(remotes[key])) {\n ref.current![key] = remotes[key]\n }\n })\n }\n\n ref.current = ref.current || {}\n const onUpdate = (field: string) => (value: boolean | string) => {\n ref.current![field] = value\n }\n\n const GetTag = ({ field }: { field: string }) => {\n const property = properties[field] as GuillotinaSchemaProperty\n const key = (property.widget ||\n property.type) as keyof typeof formComponents\n\n const Tag: React.ComponentType<any> = formComponents[key]\n\n const props = {\n value: initialState[field],\n onChange: onUpdate(field),\n placeholder: property.title || '',\n id: generateUID(),\n dataTest: `${field}TestInput`,\n required: false,\n }\n\n if (required.includes(field)) {\n props.required = true\n props.placeholder += ' *'\n }\n return <Tag {...props} />\n }\n\n const children_ = Children.map(children, (child) => {\n if (isValidElement(child)) {\n const props = { onChange: onUpdate }\n return cloneElement(child, props)\n }\n return child\n })\n\n const changes = () => {\n onSubmit(ref.current!, values)\n }\n\n return (\n <Form onSubmit={changes} dataTest={`formAddUserTest`}>\n {fields.map((field) => (\n <GetTag field={field} key={field} />\n ))}\n {children_}\n {submitButton && <Button>{actionName}</Button>}\n </Form>\n )\n}\n","import ErrorZone from '../error_zone'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { forwardRef, useState } from 'react'\nimport { IndexSignature } from '../../types/global'\n// @ TODO implement hasErrors\n\ninterface Props {\n error?: string\n errorZoneClassName?: string\n size?: number\n placeholder?: string\n id?: string\n className?: string\n classWrap?: string\n disabled?: boolean\n multiple?: boolean\n loading?: boolean\n onChange?: (value: string | string[]) => void\n options: { text: string; value: string }[]\n appendDefault?: boolean\n style?: IndexSignature\n dataTest?: string\n value?: string | string[]\n}\n\nexport const Select = forwardRef<HTMLSelectElement, Props>(\n (\n {\n options,\n error,\n errorZoneClassName,\n size = 1,\n placeholder,\n id,\n className = '',\n classWrap = '',\n multiple = false,\n loading = false,\n onChange,\n appendDefault = false,\n style = {},\n dataTest,\n value,\n disabled,\n },\n ref\n ) => {\n const intl = useIntl()\n const [uid] = useState(generateUID('select'))\n\n const onUpdate = (ev: React.ChangeEvent<HTMLSelectElement>) => {\n if (multiple) {\n let selectValue: string[] = []\n for (let i = 0; i < ev.target.selectedOptions.length; i++) {\n selectValue = selectValue.concat([ev.target.selectedOptions[i].value])\n }\n if (onChange) {\n onChange(selectValue)\n }\n } else {\n if (onChange) {\n onChange(ev.target.value)\n }\n }\n }\n\n if (appendDefault) {\n options = [\n { text: intl.formatMessage(genericMessages.choose), value: '' },\n ].concat(options)\n }\n const statusClasses = error ? 'is-danger' : ''\n\n const cssWrap = [\n 'select',\n statusClasses,\n multiple ? 'is-multiple' : '',\n classWrap,\n ]\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classnames(cssWrap)}>\n <select\n className={classnames(['', className])}\n size={multiple ? 5 : size}\n multiple={multiple}\n disabled={loading || disabled}\n onChange={onUpdate}\n ref={ref}\n style={style}\n data-test={dataTest}\n value={value}\n >\n {options.map(({ text, ...rest }, index) => (\n <option key={index.toString()} {...rest}>\n {text}\n </option>\n ))}\n </select>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </div>\n )\n }\n)\n\nSelect.displayName = 'Select'\nexport default Select\n","import { useTraversal } from '../contexts'\nimport { GuillotinaVocabulary } from '../types/guillotina'\nimport useSetState from './useSetState'\nimport { useEffect } from 'react'\n\ninterface State {\n data?: GuillotinaVocabulary\n loading: boolean\n error: any\n}\nexport function useVocabulary(vocabularyName: string, path?: string) {\n const traversal = useTraversal()\n\n const [vocabulary, setVocabulary] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n const getPath = () => {\n if (path) return path\n return `${traversal.path}@vocabularies/${vocabularyName}`\n }\n\n useEffect(() => {\n const getVocabulary = async () => {\n if (\n vocabularyName &&\n vocabulary.data === undefined &&\n !vocabulary.loading\n ) {\n try {\n setVocabulary({ loading: true })\n const data = await traversal.client.get(getPath())\n const dataJson = await data.json()\n setVocabulary({ loading: false, data: dataJson })\n } catch (err) {\n setVocabulary({ loading: false, error: err, data: undefined })\n }\n }\n }\n getVocabulary()\n }, [vocabularyName, vocabulary, path])\n\n return vocabulary\n}\n","import { Select } from './select'\nimport { get } from '../../lib/utils'\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { forwardRef } from 'react'\nimport { GuillotinaVocabularyItem } from '../../types/guillotina'\n\ninterface Props {\n vocabularyName: string\n className?: string\n classWrap?: string\n val?: string | string[]\n dataTest?: string\n multiple?: boolean\n onChange?: (value: string | string[]) => void\n appendDefault?: boolean\n id?: string\n placeholder?: string\n}\nexport const SelectVocabulary = forwardRef<HTMLSelectElement, Props>(\n (\n {\n vocabularyName,\n className,\n classWrap,\n val,\n dataTest,\n multiple,\n onChange,\n id,\n placeholder,\n },\n ref\n ) => {\n const vocabulary = useVocabulary(vocabularyName)\n\n const getOptions = () => {\n if (\n get<GuillotinaVocabularyItem | null>(vocabulary, 'data.items', null)\n ) {\n const vocData = (vocabulary?.data?.items ?? []).map((item) => {\n return {\n text: item.title,\n value: item.token,\n }\n })\n return vocData\n }\n\n return []\n }\n\n const getProps = () => {\n if (multiple) {\n const currentValue = val || []\n return {\n multiple: true,\n size: 5,\n value: currentValue,\n options: getOptions(),\n }\n }\n\n return {\n value: val ?? '',\n appendDefault: true,\n options: getOptions(),\n }\n }\n\n if (vocabulary.data === undefined || vocabulary.loading) {\n return <div />\n }\n\n return (\n <Select\n {...getProps()}\n className={className}\n classWrap={classWrap || 'is-fullwidth'}\n dataTest={dataTest}\n ref={ref}\n onChange={onChange}\n id={id}\n placeholder={placeholder}\n />\n )\n }\n)\n\nSelectVocabulary.displayName = 'SelectVocabulary'\n","import { useEffect, useRef, useState, useCallback } from 'react'\nimport { IndexSignature } from '../types/global'\n\n// Mostly inspired from\n// https://github.com/molefrog/wouter\n\nconst setURLParams = (p: URLSearchParams) => {\n return window.history.pushState(\n 0,\n '0',\n '' + '?' + p.toString().replace(/%2F/g, '/')\n )\n}\n\nconst clean = (to: IndexSignature) => {\n const current = new URLSearchParams()\n Object.keys(to).forEach((_key) => current.set(_key, to[_key]))\n setURLParams(current)\n}\n\nexport const useLocation = (): [\n URLSearchParams,\n (to: IndexSignature, replace?: boolean) => void,\n (param: string) => void\n] => {\n const [path, update] = useState(currentSearchParams())\n const prevPath = useRef(path)\n\n useEffect(() => {\n patchHistoryEvents()\n\n // this function checks if the location has been changed since the\n // last render and updates the state only when needed.\n // unfortunately, we can't rely on `path` value here, since it can be stale,\n // that's why we store the last pathname in a ref.\n const checkForUpdates = () => {\n const pathname = currentSearchParams()\n prevPath.current !== pathname && update((prevPath.current = pathname))\n }\n\n const events = ['popstate', 'pushState', 'replaceState']\n events.map((e) => window.addEventListener(e, checkForUpdates))\n\n // it's possible that an update has occurred between render and the effect handler,\n // so we run additional check on mount to catch these updates. Based on:\n // https://gist.github.com/bvaughn/e25397f70e8c65b0ae0d7c90b731b189\n checkForUpdates()\n\n return () => {\n events.map((e) => window.removeEventListener(e, checkForUpdates))\n }\n }, [])\n\n // the 2nd argument of the `useLocation` return value is a function\n // that allows to perform a navigation.\n //\n // the function reference should stay the same between re-renders, so that\n // it can be passed down as an element prop without any performance concerns.\n const navigate = useCallback(\n (to: IndexSignature, replace?: boolean) => {\n if (replace) {\n clean(to)\n return\n }\n const current = new URLSearchParams(path.toString())\n Object.keys(to).forEach((_key) => current.set(_key, to[_key]))\n setURLParams(current)\n },\n [path]\n )\n\n const remove = useCallback(\n (param: string) => {\n const current = new URLSearchParams(path.toString())\n current.delete(param)\n setURLParams(current)\n },\n [path]\n )\n\n return [path, navigate, remove]\n}\n\n// While History API does have `popstate` event, the only\n// proper way to listen to changes via `push/replaceState`\n// is to monkey-patch these methods.\n//\n// See https://stackoverflow.com/a/4585031\n\nlet patched = 0\n\nconst patchHistoryEvents = () => {\n if (patched) return\n\n const originalPushState = window.history.pushState\n window.history.pushState = function (...args) {\n const result = originalPushState.apply(this, args)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const event: any = new Event('pushState')\n event.arguments = args\n\n dispatchEvent(event)\n return result\n }\n\n const originalReplaceState = window.history.replaceState\n window.history.replaceState = function (...args) {\n const result = originalReplaceState.apply(this, args)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const event: any = new Event('replaceState')\n event.arguments = args\n\n dispatchEvent(event)\n return result\n }\n\n return (patched = 1)\n}\n\nconst currentSearchParams = (path = window.location.search) =>\n new URLSearchParams(path)\n","import { useLocation } from '../hooks/useLocation'\nimport { ItemModel } from '../models'\n\ninterface Props {\n aRef?: React.Ref<HTMLAnchorElement>\n model: ItemModel\n children: React.ReactNode\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void\n}\n\nexport function Link({ aRef, model, children, ...props }: Props) {\n const [path, navigate] = useLocation()\n const aStyle = { textDecoration: 'none', color: 'currentColor' }\n\n function onClick(e: React.MouseEvent<HTMLAnchorElement>) {\n e.stopPropagation()\n if (actAsLink(e)) return\n e.preventDefault()\n navigate({ path: model.path }, true)\n if (props.onClick) props.onClick(e)\n }\n\n return (\n <a\n ref={aRef}\n href={`?${path}${model.id}/`}\n style={aStyle}\n onClick={onClick}\n >\n {children}\n </a>\n )\n}\n\nfunction actAsLink(e: React.MouseEvent<HTMLAnchorElement>) {\n return e.ctrlKey || e.metaKey || e.altKey || e.shiftKey || e.button !== 0\n}\n","import { useRef } from 'react'\nimport { Link } from './Link'\nimport { ItemModel } from '../models'\nimport { IndexSignature } from '../types/global'\n\ninterface Props {\n model: ItemModel\n children: React.ReactNode\n style?: IndexSignature\n}\nexport function TdLink({ model, children, style = {} }: Props) {\n const link = useRef<HTMLAnchorElement>(null)\n\n function onClick() {\n if (link && link.current) {\n link.current.click()\n }\n }\n\n return (\n <td onClick={onClick} style={style}>\n <Link model={model} aRef={link}>\n {children}\n </Link>\n </td>\n )\n}\n","import { IndexSignature } from '../../types/global'\n\ninterface Props {\n style?: IndexSignature\n}\nexport const Loading = ({ style = {} }: Props) => (\n <div className=\"progress-line\" style={style}></div>\n)\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n name: string\n id: string\n onRemove?: () => void\n size?: string\n color?: string\n}\nexport const Tag = ({\n name,\n id,\n onRemove,\n size = 'is-medium',\n color = 'is-warning',\n}: Props) => (\n <span className={classnames(['tag', color, size])} data-test={`tag-${id}`}>\n {name}\n {onRemove !== undefined && (\n <button className=\"delete is-small\" onClick={() => onRemove()}></button>\n )}\n </span>\n)\n","import { MouseEvent } from 'react'\n\ninterface Props {\n onClick: (event: MouseEvent<HTMLButtonElement>) => void\n className?: string\n children?: React.ReactNode\n}\nexport function Delete({ onClick, className = '', children = null }: Props) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={`delete ${className}`}\n data-test=\"btnDeleteTest\"\n >\n {children}\n </button>\n )\n}\n","import { classnames } from '../../lib/helpers'\n\ninterface Props {\n headers?: string[]\n className?: string\n children: React.ReactNode\n}\nexport function Table({ headers, children, className }: Props) {\n const parsedClassName = className\n ? className.split(' ')\n : ' is-full is-fullwidth is-narrow'.split(' ')\n return (\n <table className={classnames(['table', ...parsedClassName])}>\n <thead>\n <tr>\n {headers &&\n headers.map((item, idx) => <th key={item + idx}>{item}</th>)}\n </tr>\n </thead>\n <tbody>{children}</tbody>\n </table>\n )\n}\n","interface Props {\n isColor?: string\n children: React.ReactNode\n}\nexport function Notification({ isColor = '', children }: Props) {\n return (\n <div className={'notification is-' + isColor} data-test=\"notificationTest\">\n {children}\n </div>\n )\n}\n","import { LightFile } from '../types/global'\nimport { Auth } from './auth'\n\nexport class RestClient {\n url: string\n container: string\n auth: Auth\n\n constructor(url: string, container: string, auth: Auth) {\n this.auth = auth\n this.url = url\n this.container = container\n }\n\n async request(\n path: string,\n data?: RequestInit,\n headers?: HeadersInit,\n signal?: AbortSignal\n ) {\n if (path.indexOf(this.url) !== -1) {\n path = path.replace(this.url, '')\n }\n\n if (this.container !== '/' && path.indexOf(this.container) === -1) {\n path = `${this.container}${path}`\n }\n\n if (!path.startsWith('/')) {\n path = `/${path}`\n }\n const dataRequest = data || {}\n dataRequest.headers = this.getHeaders()\n if (headers) {\n dataRequest.headers = { ...dataRequest.headers, ...headers }\n }\n if (signal) {\n dataRequest.signal = signal\n }\n return await fetch(`${this.url}${path}`, dataRequest)\n }\n\n getHeaders(): HeadersInit {\n const authToken = this.auth.getToken()\n const headersInit: HeadersInit = {}\n\n if (!authToken) return headersInit\n\n headersInit.Accept = 'application/json'\n headersInit['Content-Type'] = 'application/json'\n headersInit.Authorization = 'Bearer ' + authToken\n return headersInit\n }\n\n async post(path: string, data: unknown) {\n return await this.request(path, {\n method: 'post',\n body: JSON.stringify(data),\n })\n }\n\n async get(path: string, signal?: AbortSignal) {\n return await this.request(path, undefined, undefined, signal)\n }\n\n async put(path: string, data: unknown) {\n return await this.request(path, {\n method: 'put',\n body: JSON.stringify(data),\n })\n }\n\n async patch(path: string, data: unknown) {\n return await this.request(path, {\n method: 'PATCH',\n body: JSON.stringify(data),\n })\n }\n\n async upload(path: string, data: LightFile) {\n const headers = this.getHeaders()\n const newHeaders: HeadersInit = {}\n newHeaders['Content-Type'] = data['content-type']\n newHeaders['X-UPLOAD-FILENAME'] = data.filename\n newHeaders['Content-Encoding'] = 'base64'\n return await this.request(\n path,\n {\n method: 'PATCH',\n body: data.data,\n },\n {\n ...headers,\n ...newHeaders,\n }\n )\n }\n\n async delete(path: string, data: unknown) {\n return await this.request(path, {\n method: 'delete',\n body: JSON.stringify(data),\n })\n }\n}\n","const SEP = '='\nconst DEFAULT_FIELD = 'title__in'\nconst CLEANER = '||'\n\nexport function parser(qs: string, defaultField = DEFAULT_FIELD): string[][] {\n if (qs.includes(SEP) && Array.isArray(defaultField)) {\n throw new Error('This option is not supported')\n }\n\n if (Array.isArray(defaultField)) {\n const orParser: string[] = []\n defaultField.forEach((field) => {\n const parsed = parser(qs, field)\n orParser.push(buildQs(parsed))\n })\n const result = [['__or', orParser.join('&')]]\n return result\n }\n let lastKey: string | undefined = undefined\n qs.trim()\n\n if (qs.includes('\"')) {\n qs = qs.replace(/\"(\\w+) (\\w+)\"/, `$1${CLEANER}$2`)\n }\n\n const qsSplit = qs.split(' ')\n return qsSplit.map((part) => {\n if (part.includes(CLEANER)) {\n part = part.replace('||', ' ')\n }\n if (!part.includes(SEP)) {\n return !lastKey ? [defaultField, part] : [lastKey, part]\n }\n const [key, val] = part.split(SEP)\n lastKey = key\n return [key, val]\n })\n}\n\nexport function buildQs(parsedQuery: string[][]): string {\n return parsedQuery\n .map(\n ([key, val]) => `${encodeURIComponent(key)}=${encodeURIComponent(val)}`\n )\n .join('&')\n}\n","import React from 'react'\nimport { TdLink } from '../components/TdLink'\nimport { Icon } from '../components/ui'\nimport { toQueryString } from './helpers'\nimport { RestClient } from './rest'\nimport { parser } from './search'\nimport { IndexSignature, LightFile } from '../types/global'\nimport { ItemModel } from '../models'\nimport { Auth } from './auth'\nimport {\n GuillotinaGroup,\n GuillotinaUser,\n ReturnSearchCompatible,\n} from '../types/guillotina'\n\nconst cacheTypes: IndexSignature = {}\nconst cacheSchemas: IndexSignature = {}\n\nexport class GuillotinaClient {\n rest: RestClient\n pathContainsContainer: boolean\n constructor(rest: RestClient, pathContainsContainer: boolean) {\n this.rest = rest\n this.pathContainsContainer = pathContainsContainer\n }\n\n getContainerFromPath = (path: string) => {\n if (this.pathContainsContainer) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n const parts = path.split('/')\n return `${parts[0]}/${parts[1]}/`\n }\n return ''\n }\n\n clearContainerFromPath = (path: string) => {\n if (this.pathContainsContainer) {\n return `/${this.cleanPath(path)}`\n }\n return path\n }\n\n async getContext(path: string) {\n switch (path) {\n case '/':\n return await this.rest.get('')\n default:\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.get(path)\n }\n }\n\n async get(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n return await this.rest.get(path)\n }\n\n getQueryParamsSearchFunction(name: string) {\n if (name === 'getQueryParamsElasticsearch') {\n return this.getQueryParamsElasticsearch\n }\n return this.getQueryParamsPostresql\n }\n getQueryParamsPostresql({\n start = 0,\n pageSize = 10,\n withDepth = true,\n }: {\n start?: number\n pageSize?: number\n path?: string\n withDepth?: boolean\n }) {\n let result = []\n\n result = [\n ...parser(start.toString(), 'b_start'),\n ...parser(pageSize.toString(), 'b_size'),\n ]\n if (withDepth) {\n result = [...result, ...(parser('1', 'depth') ?? [])]\n }\n return result\n }\n\n getQueryParamsElasticsearch({\n start = 0,\n pageSize = 10,\n path,\n withDepth = true,\n }: {\n start?: number\n pageSize?: number\n path: string\n withDepth?: boolean\n }) {\n let result = []\n let containerPath = this.getContainerFromPath(path)\n\n if (containerPath.startsWith('/')) {\n containerPath = containerPath.slice(1)\n }\n let objectPath = path.replace(containerPath, '')\n if (objectPath.endsWith('/')) {\n objectPath = objectPath.slice(0, -1)\n }\n\n result = [\n ...parser(start.toString(), '_from'),\n ...parser(pageSize.toString(), 'size'),\n ...parser('*', '_metadata'),\n ]\n\n if (withDepth) {\n result = [...result, ...(parser('1', 'depth') ?? [])]\n }\n if (objectPath !== '') {\n result = [...result, ...parser(objectPath, 'path__wildcard')]\n }\n return result\n }\n\n getItemsColumn() {\n const smallcss = { width: 25 }\n const mediumcss = { width: 120 }\n\n return [\n {\n label: '',\n isSortable: false,\n child: (m: ItemModel) => (\n <td style={smallcss}>{<Icon icon={m.icon} />}</td>\n ),\n },\n {\n label: 'type',\n key: 'type_name',\n isSortable: false,\n child: (m: ItemModel) => (\n <TdLink style={smallcss} model={m}>\n <span className=\"tag\">{m.type}</span>\n </TdLink>\n ),\n },\n {\n label: 'id/name',\n key: 'title',\n isSortable: true,\n child: (m: ItemModel, _navigate: () => void, search: boolean) => (\n <TdLink model={m}>\n {m.name}\n {search && (\n <React.Fragment>\n <br />\n <span className=\"is-size-7 tag is-light\">{m.path}</span>\n </React.Fragment>\n )}\n </TdLink>\n ),\n },\n {\n label: 'created',\n key: 'creation_date',\n isSortable: true,\n child: (m: ItemModel) => {\n return (\n <td style={mediumcss} className=\"is-size-7 is-vcentered\">\n {m.created}\n </td>\n )\n },\n },\n {\n label: 'modified',\n key: 'modification_date',\n isSortable: true,\n child: (m: ItemModel) => (\n <td style={mediumcss} className=\"is-size-7 is-vcentered\">\n {m.updated}\n </td>\n ),\n },\n ]\n }\n\n // BBB API changes. Compat G5 and G6\n applyCompat<T>(data: { items: T[]; items_total: number }) {\n const result: ReturnSearchCompatible<T> = {\n ...data,\n member: data.items,\n items_count: data.items_total,\n }\n return result\n }\n\n async search<T>(\n path: string,\n params: string | IndexSignature<string>,\n container = false,\n prepare = true,\n signal?: AbortSignal\n ) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n\n if (container) {\n path = this.getContainerFromPath(path)\n }\n\n const query = prepare\n ? toQueryString(params as IndexSignature<string>)\n : params\n const url = `${path}@search?${query}`\n const res = await this.rest.get(url, signal)\n const data = await res.json()\n return this.applyCompat<T>(data)\n }\n\n async canido(path: string, permissions: string | string[]) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n if (Array.isArray(permissions)) {\n permissions.join(',')\n }\n const url = `${path}@canido?permissions=${permissions}`\n return await this.rest.get(url)\n }\n\n async createObject(path: string, data: unknown) {\n return await this.rest.post(path, data)\n }\n\n cleanPath(path: string) {\n const url = path.split('/').slice(3)\n return `${url.join('/')}`\n }\n\n async delete(path: string, data: unknown) {\n return await this.rest.delete(path, data)\n }\n\n async create(path: string, data: unknown) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.post(path, data)\n }\n\n async post(path: string, data: unknown) {\n return await this.create(path, data)\n }\n\n async patch(path: string, data: unknown) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.patch(path, data)\n }\n\n async upload(path: string, file: LightFile) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.upload(path, file)\n }\n\n async download(path: string) {\n if (path.startsWith('/')) {\n path = path.substring(1)\n }\n return await this.rest.get(path)\n }\n\n async getTypeSchema(path: string, name: string) {\n if (!cacheSchemas[name]) {\n const url = this.getContainerFromPath(path)\n // todo: handle db case (only addable containers)\n const res = await this.rest.get(`${url}@types/${name}`)\n cacheSchemas[name] = await res.json()\n }\n return cacheSchemas[name]\n }\n\n async getAddons(path: string) {\n return await this.rest.get(`${path}@addons`)\n }\n\n async installAddon(path: string, key: string) {\n return await this.rest.post(`${path}@addons`, { id: key })\n }\n\n async removeAddon(path: string, key: string) {\n return await this.rest.delete(`${path}@addons`, { id: key })\n }\n\n async getGroups(path: string) {\n const endpoint = `${this.getContainerFromPath(path)}@groups`\n return await this.rest.get(endpoint)\n }\n\n async getUsers(path: string) {\n const endpoint = `${this.getContainerFromPath(path)}@users`\n return await this.rest.get(endpoint)\n }\n\n async getPrincipals(\n path: string\n ): Promise<{\n groups: GuillotinaGroup[]\n users: GuillotinaUser[]\n }> {\n const groups = this.getGroups(path)\n const users = this.getUsers(path)\n const [responseGroups, responseUsers] = await Promise.all([groups, users])\n let groupsData: GuillotinaGroup[] = []\n let usersData: GuillotinaUser[] = []\n\n if (responseGroups.ok) {\n const groupsDataResponse = await responseGroups.json()\n groupsData = groupsDataResponse.map(\n (group: {\n '@name': string\n id: string\n title: string\n users: string[]\n roles: string[]\n }) => {\n return {\n '@name': group.id,\n user_roles: group.roles,\n users: group.users,\n }\n }\n )\n }\n if (responseUsers) {\n const usersDataResponse = await responseUsers.json()\n usersData = usersDataResponse.map(\n (user: {\n '@name': string\n id: string\n fullname: string\n email: string\n roles: string[]\n }) => {\n return {\n '@name': user.id,\n user_roles: user.roles,\n fullname: user.fullname,\n email: user.email,\n }\n }\n )\n }\n return {\n groups: groupsData,\n users: usersData,\n }\n }\n\n async getRoles(path: string) {\n const endpoint = `${this.getContainerFromPath(path)}@available-roles`\n return await this.rest.get(endpoint)\n }\n\n async getAllPermissions(path: string) {\n // paths used to query the API always has to start without a \"/\"\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n const req = await this.rest.get(path + '@all_permissions')\n const resp = await req.json()\n const permissions = Array.from(new Set(extractPermissions(resp)))\n return permissions\n }\n\n async getTypes(path: string) {\n if (path.startsWith('/')) {\n path = path.slice(1)\n }\n if (!cacheTypes[path]) {\n const types = await this.rest.get(path + '@addable-types')\n if (types.status === 401 || types.status === 404) {\n cacheTypes[path] = []\n } else {\n const res = await types.json()\n cacheTypes[path] = res\n }\n }\n return cacheTypes[path]\n }\n}\n\nexport function getClient(url: string, container: string, auth: Auth) {\n return new GuillotinaClient(\n new RestClient(url, container, auth),\n container === '/'\n )\n}\n\nexport const lightFileReader = (file: File) => {\n return new Promise<LightFile>((resolve, reject) => {\n const reader = new FileReader()\n reader.readAsArrayBuffer(file)\n reader.onloadend = (e) => {\n const fileData = e?.target?.result\n if (fileData) {\n resolve({\n filename: file.name.normalize('NFD').replace(/[\\u0300-\\u036f]/g, ''),\n data: fileData,\n 'content-type': file.type,\n })\n } else {\n reject('Error reading file')\n }\n }\n })\n}\n\nconst extractPermissions = (data: IndexSignature) => {\n let result: string[] = []\n if (typeof data !== 'object') {\n // do nothing\n } else if (!Array.isArray(data) && data.permission) {\n result = result.concat([data.permission])\n } else if (!Array.isArray(data)) {\n Object.keys(data).map(\n (key) => (result = result.concat(extractPermissions(data[key])))\n )\n } else if (Array.isArray(data)) {\n data.map((item) => (result = result.concat(extractPermissions(item))))\n }\n return result\n}\n","import { ChangeEvent } from 'react'\nimport { lightFileReader } from '../../lib/client.js'\nimport { useIntl } from 'react-intl'\nimport { LightFile } from '../../types/global'\n\ninterface Props {\n label?: string\n dataTest?: string\n onChange: (file: LightFile) => void\n}\nexport function FileUpload({ label, onChange, dataTest }: Props) {\n const intl = useIntl()\n const changed = async (event: ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) {\n const fileToUpload = await lightFileReader(event.target.files[0])\n onChange(fileToUpload)\n }\n }\n\n return (\n <div className=\"file\">\n <label className=\"file-label\">\n <input\n className=\"file-input\"\n type=\"file\"\n name=\"file\"\n onChange={changed}\n data-test={dataTest}\n />\n <span className=\"file-cta\">\n <span className=\"file-icon\">\n <i className=\"fas fa-upload\"></i>\n </span>\n <span className=\"file-label\">\n {label ||\n intl.formatMessage({\n id: 'choose_file',\n defaultMessage: 'Choose a file',\n })}\n </span>\n </span>\n </label>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport { classnames, generateUID } from '../../lib/helpers'\nimport { ChangeEvent, forwardRef, useState } from 'react'\n\ninterface Props {\n value: string\n classWrap?: string\n rows?: number\n className?: string\n onChange?: (value: string) => void\n dataTest?: string\n error?: string\n errorZoneClassName?: string\n placeholder?: string\n id?: string\n}\nexport const Textarea = forwardRef<HTMLTextAreaElement, Props>(\n (\n {\n value = '',\n classWrap = '',\n rows = 5,\n className = '',\n onChange,\n dataTest,\n error,\n errorZoneClassName,\n placeholder,\n id,\n },\n ref\n ) => {\n const [uid] = useState(generateUID('select'))\n\n const onUpdate = (ev: ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange) {\n onChange(ev.target.value)\n }\n }\n const statusClasses = error ? 'is-danger' : ''\n\n return (\n <div className=\"field\">\n {id && placeholder ? (\n <label className=\"label\" htmlFor={id}>\n {placeholder}\n </label>\n ) : null}\n <div className={classWrap}>\n <textarea\n className={classnames(['textarea', className, statusClasses])}\n rows={rows}\n onChange={onUpdate}\n value={value}\n data-test={dataTest}\n ref={ref}\n />\n </div>\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n </div>\n )\n }\n)\n\nTextarea.displayName = 'Textarea'\nexport default Textarea\n","import { useEffect, useRef } from 'react'\n\nconst defaultEvents = ['mousedown', 'touchstart']\nconst on = (\n obj: Document,\n type: keyof DocumentEventMap,\n handler: (ev: Event) => void\n) => obj.addEventListener(type, handler)\nconst off = (\n obj: Document,\n type: keyof DocumentEventMap,\n handler: (ev: Event) => void\n) => obj.removeEventListener(type, handler)\n\nexport default function useClickAway(\n ref: React.RefObject<HTMLElement>,\n onClickAway: (event: Event) => void,\n events = defaultEvents\n) {\n const savedCallback = useRef(onClickAway)\n\n useEffect(() => {\n savedCallback.current = onClickAway\n }, [onClickAway])\n\n useEffect(() => {\n const handler = (event: Event) => {\n const { current: el } = ref\n el && !el.contains(event.target as Node) && savedCallback.current(event)\n }\n\n for (const eventName of events) {\n on(document, eventName as keyof DocumentEventMap, handler)\n }\n\n return () => {\n for (const eventName of events) {\n off(document, eventName as keyof DocumentEventMap, handler)\n }\n }\n }, [events, ref])\n}\n","import { useState, useEffect, useCallback, useRef } from 'react'\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport useSetState from '../../hooks/useSetState'\nimport ErrorZone from '../error_zone'\nimport { Loading } from '../ui'\nimport { generateUID } from '../../lib/helpers'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport useClickAway from '../../hooks/useClickAway'\nimport { debounce, get } from '../../lib/utils'\nimport { SearchItem } from '../../types/guillotina'\nimport { Traversal } from '../../contexts'\nimport { IndexSignature } from '../../types/global'\n\ninterface State {\n page: number\n items?: SearchItem[]\n loading: boolean\n items_total: number\n}\nconst initialState: State = {\n page: 0,\n items: undefined,\n loading: false,\n items_total: 0,\n}\n\ninterface Props {\n onChange?: (value: string) => void\n error?: string\n errorZoneClassName?: string\n traversal: Traversal\n path?: string\n qs?: string[][]\n queryCondition?: string\n value?: string\n btnClass?: string\n dataTestWrapper?: string\n dataTestSearchInput?: string\n dataTestItem?: string\n renderTextItemOption?: (item: SearchItem) => string\n typeNameQuery?: string\n labelProperty?: string\n}\n\nexport const SearchInput = ({\n onChange,\n error,\n errorZoneClassName,\n traversal,\n path = undefined,\n qs = [],\n queryCondition = 'id__in',\n value,\n btnClass = '',\n dataTestWrapper = 'wrapperSearchInputTest',\n dataTestSearchInput = 'searchInputTest',\n dataTestItem = 'searchInputItemTest',\n renderTextItemOption = undefined,\n typeNameQuery = undefined,\n labelProperty = 'id',\n}: Props) => {\n const intl = useIntl()\n const [options, setOptions] = useSetState<State>(initialState)\n const [isOpen, setIsOpen] = useState(false)\n const [searchTerm, setSearchTerm] = useState('')\n const inputRef = useRef(null)\n const wrapperRef = useRef<HTMLInputElement>(null)\n const { PageSize, SearchEngine } = useConfig()\n const [valueLabel, setValueLabel] = useState<Partial<SearchItem> | undefined>(\n undefined\n )\n const [uid] = useState(generateUID('search_input'))\n\n useClickAway(wrapperRef, () => {\n setIsOpen(false)\n })\n\n const getHeight = () => {\n if (wrapperRef && wrapperRef.current) {\n return {\n maxHeight: `${\n window.innerHeight -\n wrapperRef.current.getBoundingClientRect().top -\n 100\n }px`,\n }\n }\n return { maxHeight: 'auto' }\n }\n\n const delayedQuery = useCallback<(value: string) => void>(\n debounce((value) => handleSearch(0, false, value), 500),\n []\n )\n\n const inicializeLabels = async () => {\n if (labelProperty !== 'id' && value) {\n let searchTermQs = ''\n const searchTermParsed = [`id`, value]\n const { get: getSearch } = traversal.registry\n const fnName = getSearch('searchEngineQueryParamsFunction', SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: 0,\n pageSize: PageSize,\n withDepth: false,\n })\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ])\n }\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newValuesLabel = data.items.reduce<IndexSignature<string>>(\n (result, item) => {\n result[item.id] = get(item, labelProperty, item.id)\n return result\n },\n {}\n )\n setValueLabel(newValuesLabel)\n }\n }\n\n const handleSearch = async (page = 0, concat = false, value = '') => {\n console.log('handle search input')\n setOptions({ loading: true })\n let searchTermQs = ''\n let searchTermParsed: string[][] = []\n if (value !== '') {\n searchTermParsed = parser(`${queryCondition}=${value}`)\n }\n const { get } = traversal.registry\n const fnName = get('searchEngineQueryParamsFunction', SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: page * PageSize,\n pageSize: PageSize,\n withDepth: false,\n })\n const sortParsed = parser(`_sort_des=${labelProperty}`)\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0 ||\n sortParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n ...searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ...sortParsed,\n ])\n }\n\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newItems =\n options.items && concat ? [...options.items, ...data.items] : data.items\n\n setOptions({\n items: newItems ?? [],\n loading: false,\n items_total: data.items_total ?? 0,\n page: page,\n })\n }\n\n const renderTextItemOptionFn = (item: SearchItem) => {\n if (renderTextItemOption) {\n return renderTextItemOption(item)\n }\n return get(item, labelProperty, item.title) || item['@name']\n }\n\n useEffect(() => {\n if (value) {\n inicializeLabels()\n } else {\n setValueLabel({})\n }\n }, [path, value])\n\n if (valueLabel === undefined) {\n return <div className=\"spinner\" />\n }\n\n return (\n <>\n <div\n data-test={dataTestWrapper}\n ref={wrapperRef}\n className={`dropdown mb-2 ${isOpen ? 'is-active' : ''}`}\n onBlur={(ev) => {\n if (!ev.currentTarget.contains(ev.relatedTarget)) {\n if (searchTerm !== '') {\n setSearchTerm('')\n setOptions(initialState)\n }\n setIsOpen(false)\n }\n }}\n >\n <div className=\"dropdown-trigger\">\n <button\n className={`button ${btnClass}`}\n onClick={(ev) => {\n ev.preventDefault()\n if (ev.target instanceof HTMLElement) {\n ev.target.blur()\n }\n\n setIsOpen(!isOpen)\n console.log('on clic btn', options)\n if (!options.loading && !options.items) {\n handleSearch(options.page)\n }\n }}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <span>\n {value\n ? get(valueLabel, value, value)\n : intl.formatMessage(genericMessages.choose)}\n </span>\n <span className=\"icon\">\n <i className=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </div>\n <div\n className=\"dropdown-menu\"\n id=\"dropdown-menu\"\n role=\"menu\"\n style={getHeight()}\n >\n <div className=\"dropdown-content\">\n <div className=\"dropdown-item\">\n <input\n ref={inputRef}\n data-test={dataTestSearchInput}\n className=\"input\"\n type=\"text\"\n placeholder={intl.formatMessage(genericMessages.search)}\n value={searchTerm}\n onChange={(ev) => {\n delayedQuery(ev.target.value)\n setSearchTerm(ev.target.value)\n }}\n />\n </div>\n <hr className=\"dropdown-divider\" />\n {options.loading && <Loading />}\n {options.items &&\n options.items.map((item) => {\n return (\n <div\n className={`dropdown-item editable ${\n value === item.id ? 'is-active' : ''\n }`}\n data-test={`${dataTestItem}-${item.id}`}\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n if (onChange) {\n onChange(item.id)\n }\n setIsOpen(false)\n }}\n key={item.path}\n >\n {renderTextItemOptionFn(item)}\n </div>\n )\n })}\n\n {options.items && options.items.length === 0 && (\n <div className=\"dropdown-item\">\n {intl.formatMessage(genericMessages.no_results)}\n </div>\n )}\n\n {options.items && options.items_total > options.items.length && (\n <>\n <hr className=\"dropdown-divider\" />\n <div\n className=\"dropdown-item editable\"\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n handleSearch(options.page + 1, true)\n }}\n >\n {intl.formatMessage(genericMessages.load_more)}\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </>\n )\n}\n","import { useState, useCallback, useRef, useEffect } from 'react'\n\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport useSetState from '../../hooks/useSetState'\nimport ErrorZone from '../error_zone'\nimport { Loading } from '../ui'\nimport { generateUID } from '../../lib/helpers'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport useClickAway from '../../hooks/useClickAway'\nimport { debounce, get } from '../../lib/utils'\nimport { SearchItem } from '../../types/guillotina'\nimport { Traversal } from '../../contexts'\nimport { IndexSignature } from '../../types/global'\n\ninterface State {\n page: number\n items?: SearchItem[]\n loading: boolean\n items_total: number\n}\nconst initialState: State = {\n page: 0,\n items: undefined,\n loading: false,\n items_total: 0,\n}\n\ninterface Props {\n onChange: (value: string[]) => void\n error?: string\n errorZoneClassName?: string\n traversal: Traversal\n path?: string\n qs?: string[][]\n queryCondition?: string\n value: string[]\n btnClass?: string\n dataTestWrapper?: string\n dataTestSearchInput?: string\n dataTestItem?: string\n renderTextItemOption?: (item: SearchItem) => string\n typeNameQuery?: string\n labelProperty?: string\n}\n\nexport const SearchInputList = ({\n onChange,\n error,\n errorZoneClassName,\n traversal,\n path = undefined,\n qs = [],\n queryCondition = 'id__in',\n value,\n btnClass = '',\n dataTestWrapper = 'wrapperSearchInputTest',\n dataTestSearchInput = 'searchInputTest',\n dataTestItem = 'searchInputItemTest',\n renderTextItemOption = undefined,\n typeNameQuery = undefined,\n labelProperty = 'id',\n}: Props) => {\n const intl = useIntl()\n const [options, setOptions] = useSetState<State>(initialState)\n const [valuesLabel, setValuesLabels] = useState<IndexSignature | undefined>(\n undefined\n )\n const [isOpen, setIsOpen] = useState(false)\n const [searchTerm, setSearchTerm] = useState('')\n const inputRef = useRef(null)\n const wrapperRef = useRef<HTMLInputElement>(null)\n const { PageSize, SearchEngine } = useConfig()\n const [isLoadingData, setIsLoadingData] = useState(false)\n\n const [uid] = useState(generateUID('search_input'))\n\n useClickAway(wrapperRef, () => {\n setIsOpen(false)\n })\n\n const getHeight = () => {\n if (wrapperRef && wrapperRef.current) {\n return {\n maxHeight: `${\n window.innerHeight -\n wrapperRef.current.getBoundingClientRect().top -\n 100\n }px`,\n }\n }\n return { maxHeight: 'auto' }\n }\n\n const delayedQuery = useCallback<(value: string) => void>(\n debounce((value) => handleSearch(0, false, value), 500),\n []\n )\n\n const handleSearch = async (page = 0, concat = false, value = '') => {\n setOptions({ loading: true })\n let searchTermQs = ''\n let searchTermParsed: string[][] = []\n if (value !== '') {\n searchTermParsed = parser(`${queryCondition}=${value}`)\n }\n const { get } = traversal.registry\n const fnName = get('searchEngineQueryParamsFunction', SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: page * PageSize,\n pageSize: PageSize,\n withDepth: false,\n })\n const sortParsed = parser(`_sort_des=${labelProperty}`)\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n ...searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ...sortParsed,\n ])\n }\n\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newItems: SearchItem[] =\n options.items && concat ? [...options.items, ...data.items] : data.items\n\n setOptions({\n items: newItems ?? [],\n loading: false,\n items_total: data.items_total ?? 0,\n page: page,\n })\n }\n\n const inicializeLabels = async () => {\n if (labelProperty !== 'id' && value.length > 0) {\n setIsLoadingData(true)\n let searchTermQs = ''\n const searchTermParsed = ['__or', `id=${value.join('%26id=')}`]\n const { get: getSearch } = traversal.registry\n const fnName = getSearch('searchEngineQueryParamsFunction', SearchEngine)\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: 0,\n pageSize: 100,\n withDepth: false,\n })\n let typeNameParsed: string[][] = []\n if (typeNameQuery) {\n typeNameParsed = parser(`type_name__in=${typeNameQuery}`)\n }\n if (\n qs.length > 0 ||\n searchTermParsed.length > 0 ||\n qsParsed.length > 0 ||\n typeNameParsed.length > 0\n ) {\n searchTermQs = buildQs([\n ...qs,\n searchTermParsed,\n ...qsParsed,\n ...typeNameParsed,\n ])\n }\n const data = await traversal.client.search<SearchItem>(\n path ? path : traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n const newValuesLabel = data.items.reduce<IndexSignature<string>>(\n (result, item) => {\n result[item.id] = get(item, labelProperty, item.id)\n return result\n },\n {}\n )\n setValuesLabels(newValuesLabel)\n setIsLoadingData(false)\n }\n }\n\n const renderTextItemOptionFn = (\n item: SearchItem\n ): string | React.ReactNode => {\n if (renderTextItemOption) {\n return renderTextItemOption(item)\n }\n return get<string>(item, labelProperty, item.title) || item['@name']\n }\n\n useEffect(() => {\n if (!options.loading && !options.items && value.length > 0) {\n inicializeLabels()\n } else if (value.length === 0) {\n setValuesLabels({})\n }\n }, [path, options.loading, options.items])\n\n if (isLoadingData || valuesLabel === undefined) {\n return <div className=\"spinner\" />\n }\n\n return (\n <>\n <div className=\"tags mb-2\">\n {value.map((tag, index) => (\n <div\n key={`input_list_${tag}_${index}`}\n className=\"tag is-info is-medium\"\n >\n {get(valuesLabel, tag, tag)}\n <button\n className=\"delete is-small\"\n onClick={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n onChange([\n ...value.filter((tag) => value.indexOf(tag) !== index),\n ])\n }}\n ></button>\n </div>\n ))}\n </div>\n <div\n data-test={dataTestWrapper}\n ref={wrapperRef}\n className={`dropdown mb-2 ${isOpen ? 'is-active' : ''}`}\n onBlur={(ev) => {\n if (!ev.currentTarget.contains(ev.relatedTarget)) {\n if (searchTerm !== '') {\n setSearchTerm('')\n setOptions(initialState)\n }\n setIsOpen(false)\n }\n }}\n >\n <div className=\"dropdown-trigger\">\n <button\n className={`button ${btnClass}`}\n onClick={(ev) => {\n ev.preventDefault()\n setIsOpen(!isOpen)\n if (!options.loading && !options.items) {\n handleSearch(options.page)\n }\n }}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <span>{intl.formatMessage(genericMessages.choose)}</span>\n\n <span className=\"icon\">\n <i className=\"fas fa-angle-down\" aria-hidden=\"true\"></i>\n </span>\n </button>\n </div>\n <div\n className=\"dropdown-menu\"\n id=\"dropdown-menu\"\n role=\"menu\"\n style={getHeight()}\n >\n <div className=\"dropdown-content\">\n <div className=\"dropdown-item\">\n <input\n ref={inputRef}\n data-test={dataTestSearchInput}\n className=\"input\"\n type=\"text\"\n placeholder={intl.formatMessage(genericMessages.search)}\n value={searchTerm}\n onChange={(ev) => {\n delayedQuery(ev.target.value)\n setSearchTerm(ev.target.value)\n }}\n />\n </div>\n <hr className=\"dropdown-divider\" />\n {options.loading && <Loading />}\n {options.items &&\n options.items.map((item) => {\n return (\n <div\n className={`dropdown-item editable ${\n value.includes(item.id) ? 'is-active' : ''\n }`}\n data-test={`${dataTestItem}-${item.id}`}\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n if (onChange && !value.includes(item.id)) {\n setValuesLabels({\n ...valuesLabel,\n [item.id]: get(item, labelProperty, item.id),\n })\n onChange([...value, item.id])\n }\n }}\n key={item.path}\n >\n {renderTextItemOptionFn(item)}\n </div>\n )\n })}\n\n {options.items && options.items.length === 0 && (\n <div className=\"dropdown-item\">\n {intl.formatMessage(genericMessages.no_results)}\n </div>\n )}\n\n {options.items && options.items_total > options.items.length && (\n <>\n <hr className=\"dropdown-divider\" />\n <div\n className=\"dropdown-item editable\"\n onMouseDown={(ev) => {\n ev.stopPropagation()\n ev.preventDefault()\n handleSearch(options.page + 1, true)\n }}\n >\n {intl.formatMessage(genericMessages.load_more)}\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n {error && (\n <ErrorZone className={errorZoneClassName} id={uid}>\n {error ? error : ''}\n </ErrorZone>\n )}\n </>\n )\n}\n","import { InputHTMLAttributes, forwardRef, useState } from 'react'\nimport { Input } from './input'\nimport { useIntl } from 'react-intl'\n\ninterface Props {\n value: string[]\n onChange: (value: string[]) => void\n dataTest?: string\n id?: string\n}\nexport const InputList = forwardRef<\n HTMLInputElement,\n InputHTMLAttributes<HTMLInputElement> & Props\n>(({ value, onChange, dataTest, id }, ref) => {\n const intl = useIntl()\n const [inputValue, setInputValue] = useState('')\n const addTags = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n event.key === 'Enter' &&\n (event.target as HTMLInputElement).value !== ''\n ) {\n onChange([...value, (event.target as HTMLInputElement).value])\n setInputValue('')\n }\n }\n\n return (\n <div className=\"control\">\n {(value ?? []).length > 0 && (\n <div className=\"tags\">\n {value.map((tag, index) => (\n <div\n key={`input_list_${tag}_${index}`}\n className=\"tag is-info is-medium\"\n >\n {tag}\n <button\n className=\"delete is-small\"\n type=\"button\"\n onClick={() =>\n onChange([\n ...value.filter((tag) => value.indexOf(tag) !== index),\n ])\n }\n />\n </div>\n ))}\n </div>\n )}\n\n <Input\n type=\"text\"\n id={id}\n placeholder={intl.formatMessage({\n id: 'press_enter_to_add_value',\n defaultMessage: 'Press enter to add value',\n })}\n onKeyUp={(event) => addTags(event)}\n value={inputValue}\n ref={ref}\n dataTest={dataTest}\n onChange={(value) => {\n setInputValue(value)\n }}\n />\n </div>\n )\n})\n\nInputList.displayName = 'InputList'\nexport default InputList\n","import { useState, useRef } from 'react'\nimport useClickAway from '../../hooks/useClickAway'\n\ninterface Props {\n children: React.ReactNode\n disabled?: boolean\n id?: string\n isRight?: boolean\n onChange: (value: string) => void\n optionDisabledWhen?: (option: any) => boolean\n options: { text: string; value: string }[]\n}\n\nexport default function Dropdown({\n children,\n disabled,\n id,\n isRight,\n onChange,\n optionDisabledWhen,\n options,\n}: Props) {\n const ref = useRef<HTMLDivElement>(null)\n const [isActive, setIsActive] = useState(false)\n const position = isRight ? 'is-right' : ''\n const status = isActive\n ? `dropdown ${position} is-active`\n : `dropdown ${position}`\n\n useClickAway(ref, () => {\n setIsActive(false)\n })\n\n return (\n <div ref={ref} className={status}>\n <div className=\"dropdown-trigger\">\n <button\n className=\"button is-size-7\"\n onClick={() => setIsActive(!isActive)}\n aria-haspopup=\"true\"\n disabled={disabled}\n aria-controls={id}\n >\n {children}\n </button>\n </div>\n <div className=\"dropdown-menu\" id={id} role=\"menu\">\n <div className=\"dropdown-content\">\n {options.map((option) => {\n const disabled =\n typeof optionDisabledWhen === 'function'\n ? optionDisabledWhen(option)\n : false\n\n return (\n <a\n className={\n disabled ? 'dropdown-item is-active' : 'dropdown-item'\n }\n data-test={`dropdownItemTest-${option.value.toLowerCase()}`}\n key={option.text}\n onClick={disabled ? undefined : () => onChange(option.value)}\n style={\n disabled\n ? {\n cursor: 'not-allowed',\n color: 'black',\n opacity: 0.5,\n backgroundColor: '#eeeeee',\n }\n : {}\n }\n >\n {option.text}\n </a>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n","import { Button } from '../input/button'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useState } from 'react'\nimport { useRef } from 'react'\nimport { useEffect } from 'react'\nimport { Icon } from '../ui'\nimport { get } from '../../lib/utils'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport { EditableFieldValue, LightFile } from '../../types/global'\nimport { GuillotinaSchemaProperty } from '../../types/guillotina'\n\ninterface Props {\n field: string\n value: EditableFieldValue\n ns?: string\n schema?: GuillotinaSchemaProperty\n modifyContent?: boolean\n required?: boolean\n}\n\nexport function EditableField({\n field,\n value,\n ns,\n schema = undefined,\n modifyContent,\n required,\n}: Props) {\n const intl = useIntl()\n const ref = useRef<HTMLElement>()\n const [isEdit, setEdit] = useState(false)\n const [val, setValue] = useState(value)\n const { patch, loading, Ctx } = useCrudContext()\n const { fieldHaveDeleteButton } = useConfig()\n\n const EditComponent = Ctx.registry.get('components', 'EditComponent')\n const RenderFieldComponent = Ctx.registry.get(\n 'components',\n 'RenderFieldComponent'\n )\n\n useEffect(() => {\n if (isEdit && ref.current) {\n ref.current.focus()\n }\n })\n\n const canModified =\n schema !== undefined && modifyContent && !get(schema, 'readonly', false)\n\n const saveField = async (\n ev: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n if (ev) ev.preventDefault()\n\n if (!field) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_provide_key_name),\n 'danger'\n )\n return\n }\n\n if (!val && required) {\n Ctx.flash(\n intl.formatMessage(genericMessages.mandatory_field, { field }),\n 'danger'\n )\n return\n }\n\n if (schema?.widget === 'file') {\n const value = val as LightFile\n\n if (value) {\n value['filename'] = unescape(encodeURIComponent(value['filename']))\n }\n const endpoint = `${Ctx.path}@upload/${field}`\n const req = await Ctx.client.upload(endpoint, value)\n if (req.status !== 200) {\n Ctx.flash(\n intl.formatMessage(genericFileMessages.error_upload_file),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericFileMessages.file_uploaded),\n 'success'\n )\n }\n } else {\n const data = ns ? { [ns]: { [field]: val } } : { [field]: val }\n const dataPatch = await patch(data)\n if (dataPatch.isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_in_field, { field }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.field_updated, { field }),\n 'success'\n )\n }\n }\n\n setEdit(false)\n Ctx.refresh()\n }\n\n const deleteField = async (\n ev: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => {\n if (ev) ev.preventDefault()\n if (schema?.widget === 'file') {\n if (!field || (!val && required)) {\n Ctx.flash(\n intl.formatMessage(genericMessages.can_not_delete_field, { field }),\n 'danger'\n )\n return\n }\n\n const data = ns ? { [ns]: { [field]: null } } : { [field]: null }\n const dataPatch = await patch(data)\n if (dataPatch.isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.error_in_field, { field }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.field_deleted, { field }),\n 'success'\n )\n }\n\n setEdit(false)\n Ctx.refresh()\n } else if (schema?.type === 'string' && schema?.enum) {\n setValue(null)\n } else if (schema?.type === 'array' && schema?.items?.type === 'string') {\n setValue([])\n }\n }\n\n return (\n <>\n {!isEdit && (\n <div\n className={canModified ? 'editable' : ''}\n onClick={() => {\n setEdit(!!canModified)\n }}\n data-test={`editableFieldTest-${field}`}\n >\n <RenderFieldComponent\n schema={schema}\n field={field}\n val={val}\n modifyContent={modifyContent}\n />\n {canModified && <Icon icon=\"fas fa-edit\" />}\n </div>\n )}\n\n {isEdit && (\n <div className=\"field\" data-test={`editableFieldTest-${field}`}>\n <div className=\"control\">\n <EditComponent\n ref={ref}\n schema={schema}\n val={val}\n setValue={setValue}\n dataTest={`editableFieldEditTest`}\n />\n </div>\n <div className=\"field is-grouped\">\n <div className=\"control\">\n <Button\n className=\"is-small is-primary\"\n loading={loading}\n onClick={saveField}\n dataTest=\"editableFieldBtnSaveTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n <div className=\"control\">\n <Button\n className=\"is-small\"\n onClick={() => setEdit(false)}\n dataTest=\"editableFieldBtnCancelTest\"\n >\n {intl.formatMessage(genericMessages.cancel)}\n </Button>\n </div>\n {!required && schema && fieldHaveDeleteButton(schema) && (\n <div className=\"control\">\n <Button\n className=\"is-small is-danger\"\n onClick={deleteField}\n dataTest=\"editableFieldBtnDeleteTest\"\n >\n {intl.formatMessage(genericMessages.delete)}\n </Button>\n </div>\n )}\n </div>\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface DownloadFieldProps {\n value: {\n data: {\n filename: string\n content_type: string\n }\n field: string\n }\n}\nexport const DownloadField = ({ value }: DownloadFieldProps) => {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { data, field } = value\n\n const getField = async (downloadFile: boolean) => {\n const endpoint = `${Ctx.path}@download/${field}`\n const res = await Ctx.client.download(endpoint)\n const text = await res.blob()\n const blob = new Blob([text], {\n type: data.content_type,\n })\n const url = window.URL.createObjectURL(blob)\n\n // Create blob link to download\n const link = document.createElement('a')\n link.href = url\n if (downloadFile) {\n link.setAttribute('download', `${data.filename}`)\n } else {\n link.setAttribute('target', `_blank`)\n }\n\n document.body.appendChild(link)\n link.click()\n setTimeout(function () {\n // For Firefox it is necessary to delay revoking the ObjectURL\n window.URL.revokeObjectURL(url)\n link.parentNode?.removeChild(link)\n }, 100)\n }\n\n return (\n <div className=\"field\">\n <div className=\"label\">{data.filename}</div>\n <div className=\"columns\">\n <div className=\"column\">\n <button\n className=\"button is-small is-primary level-left\"\n onClick={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n getField(false)\n }}\n >\n {intl.formatMessage(genericMessages.open)}\n </button>\n </div>\n <div className=\"column\">\n <button\n className=\"button is-small is-primary level-right\"\n onClick={async (event) => {\n event.preventDefault()\n event.stopPropagation()\n getField(true)\n }}\n >\n {intl.formatMessage(genericMessages.download)}\n </button>\n </div>\n </div>\n </div>\n )\n}\n","import { useEffect, useState } from 'react'\nimport { DownloadField } from './downloadField'\nimport { IntlShape, useIntl } from 'react-intl'\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { get } from '../../lib/utils'\nimport { buildQs } from '../../lib/search'\nimport { useTraversal } from '../../contexts'\nimport { useConfig } from '../../hooks/useConfig'\nimport {\n GuillotinaSchemaProperty,\n GuillotinaVocabularyItem,\n SearchItem,\n} from '../../types/guillotina'\nimport { EditableFieldValue, IndexSignature } from '../../types/global'\n\nconst plain = ['string', 'number', 'boolean']\ntype PlainType = string | boolean | number\n\ninterface RenderFieldProps {\n value: EditableFieldValue\n Widget?: React.ComponentType<{\n value: EditableFieldValue\n schema?: GuillotinaSchemaProperty\n modifyContent?: boolean\n }>\n schema?: GuillotinaSchemaProperty\n}\n\nexport function RenderField({ value, Widget, schema }: RenderFieldProps) {\n if (value === null || value === undefined) return ''\n\n if (Widget) {\n return <Widget value={value} schema={schema} />\n }\n\n const type = typeof value\n if (plain.includes(type)) {\n return value as PlainType\n }\n if (type === 'object') {\n if (Array.isArray(value)) {\n return value.map((item: EditableFieldValue, index) => (\n <div key={`renderField_${index}_${schema?.title}`}>\n <RenderField value={item} />\n </div>\n ))\n }\n if (schema?.properties?.key !== undefined) {\n return Object.keys(value).map((key) => (\n <FieldValue\n field={get(schema, `properties.${key}.title`, key)}\n schema={schema.properties!.key as GuillotinaSchemaProperty}\n value={get(value as IndexSignature, key, {})}\n key={key}\n />\n ))\n }\n }\n return <p>No render for {JSON.stringify(value)}</p>\n}\n\ninterface FieldValueProps {\n field: string\n value: EditableFieldValue\n schema: GuillotinaSchemaProperty\n}\nconst FieldValue = ({ field, value, schema }: FieldValueProps) => (\n <div className=\"field\">\n <div className=\"label\">{field}</div>\n <div className=\"value\">\n <RenderFieldComponent val={value} schema={schema} field={field} />\n </div>\n </div>\n)\n\nconst DEFAULT_VALUE_NO_EDITABLE_FIELD = ' -- '\nconst getDefaultValueEditableField = (intl: IntlShape) => {\n return intl.formatMessage({\n id: 'default_value_editable_field',\n defaultMessage: 'Click to edit',\n })\n}\n\ninterface SearchRenderFieldProps {\n schema: GuillotinaSchemaProperty\n value: string | string[]\n modifyContent: boolean\n}\nexport const SearchRenderField = ({\n schema,\n value,\n modifyContent,\n}: SearchRenderFieldProps) => {\n console.log('search render fields')\n const intl = useIntl()\n const [valuesLabels, setValuesLabels] = useState<string[]>([])\n const [isLoadingData, setIsLoadingData] = useState(false)\n const traversal = useTraversal()\n const { SearchEngine } = useConfig()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n useEffect(() => {\n const fetchData = async (valuesToSearch: string[]) => {\n setIsLoadingData(true)\n let searchTermQs = ''\n\n const searchTermParsed = ['__or', `id=${valuesToSearch.join('%26id=')}`]\n const { get: getSearch } = traversal.registry\n const fnName: string = getSearch(\n 'searchEngineQueryParamsFunction',\n SearchEngine\n )\n const qsParsed = traversal.client.getQueryParamsSearchFunction(fnName)({\n path: traversal.path,\n start: 0,\n pageSize: 100,\n withDepth: false,\n })\n\n if (searchTermParsed.length > 0 || qsParsed.length > 0) {\n searchTermQs = buildQs([searchTermParsed, ...qsParsed])\n }\n const data = await traversal.client.search<SearchItem>(\n traversal.client.getContainerFromPath(traversal.path),\n searchTermQs,\n false,\n false\n )\n\n const newValuesLabel = data.items.map((item) => {\n return get(item, schema?.labelProperty ?? 'title', item.id)\n })\n setValuesLabels(newValuesLabel)\n setIsLoadingData(false)\n }\n\n let valuesToSearch: string[] = []\n if (typeof value === 'string' && value) {\n valuesToSearch = [value]\n } else if (Array.isArray(value)) {\n valuesToSearch = value\n }\n if (valuesToSearch.length > 0) {\n fetchData(valuesToSearch)\n } else {\n setValuesLabels([])\n }\n }, [value])\n\n const getRenderValue = () => {\n if (value === undefined) {\n if (modifyContent) {\n return DEFAULT_VALUE_EDITABLE_FIELD\n }\n return DEFAULT_VALUE_NO_EDITABLE_FIELD\n }\n if (isLoadingData) {\n return 'Loading...'\n }\n\n return valuesLabels\n }\n\n return <RenderField value={getRenderValue()} />\n}\n\ninterface VocabularyRenderFieldProps {\n schema: GuillotinaSchemaProperty\n value: string | string[]\n modifyContent: boolean\n}\nexport const VocabularyRenderField = ({\n schema,\n value,\n modifyContent,\n}: VocabularyRenderFieldProps) => {\n const intl = useIntl()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n const vocabularyName =\n schema?.items?.vocabularyName || schema?.vocabularyName || ''\n const vocabulary = useVocabulary(vocabularyName)\n\n const getRenderProps = () => {\n const renderProps = {\n value:\n value ??\n (modifyContent\n ? DEFAULT_VALUE_EDITABLE_FIELD\n : DEFAULT_VALUE_NO_EDITABLE_FIELD),\n }\n\n if (schema?.vocabularyName) {\n const vocabularyValue = get<GuillotinaVocabularyItem[]>(\n vocabulary,\n 'data.items',\n []\n ).find((item) => item.token === value)\n renderProps['value'] = vocabularyValue?.title ?? ''\n } else {\n renderProps['value'] = ((renderProps['value'] as string[]) ?? []).map(\n (value: string) => {\n return (\n get<GuillotinaVocabularyItem[]>(vocabulary, 'data.items', []).find(\n (item) => item.token === value\n )?.title ?? ''\n )\n }\n )\n }\n\n return renderProps\n }\n return <RenderField {...getRenderProps()} />\n}\n\ninterface RenderFieldComponentProps {\n schema: GuillotinaSchemaProperty\n field: string\n val: EditableFieldValue\n modifyContent?: boolean\n}\nexport function RenderFieldComponent({\n schema,\n field,\n val,\n modifyContent,\n}: RenderFieldComponentProps) {\n const intl = useIntl()\n const DEFAULT_VALUE_EDITABLE_FIELD = getDefaultValueEditableField(intl)\n\n const getRenderProps = () => {\n const renderProps: {\n value: EditableFieldValue\n schema: GuillotinaSchemaProperty\n Widget?: React.ComponentType<any>\n } = {\n value:\n val ??\n (modifyContent\n ? DEFAULT_VALUE_EDITABLE_FIELD\n : DEFAULT_VALUE_NO_EDITABLE_FIELD),\n schema: schema,\n }\n if (val && schema?.widget === 'file') {\n renderProps['value'] = {\n data: val,\n field: field,\n }\n renderProps['Widget'] = DownloadField\n } else if (schema?.type === 'boolean') {\n renderProps['value'] = val?.toString() ?? renderProps['value']\n } else if (val && schema?.type === 'datetime') {\n renderProps['value'] = new Date(val as string).toLocaleString()\n } else if (schema?.items?.vocabularyName || schema?.vocabularyName) {\n renderProps['Widget'] = VocabularyRenderField\n } else if (\n schema?.widget === 'search' ||\n schema?.widget === 'search_list'\n ) {\n renderProps['Widget'] = SearchRenderField\n renderProps['value'] = val as string | string[]\n }\n return renderProps\n }\n\n return <RenderField {...getRenderProps()} />\n}\n","import { Textarea } from '../input/textarea'\nimport { Checkbox } from '../input/checkbox'\nimport { FileUpload } from '../input/upload'\nimport { Select } from '../input/select'\nimport { Input } from '../input/input'\nimport { InputList } from '../input/input_list'\nimport { get } from '../../lib/utils'\nimport { SelectVocabulary } from '../input/select_vocabulary'\nimport { SearchInputList } from '../input/search_input_list'\nimport { SearchInput } from '../input/search_input'\nimport { useTraversal } from '../../contexts'\nimport { Ref, forwardRef } from 'react'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport {\n EditableFieldValue,\n IndexSignature,\n LightFile,\n} from '../../types/global'\n\ninterface Props {\n schema: GuillotinaSchemaProperty\n val: EditableFieldValue\n setValue: (value: EditableFieldValue) => void\n dataTest?: string\n className?: string\n placeholder?: string\n id?: string\n required?: boolean\n}\n\nexport const EditComponent = forwardRef(\n (\n {\n schema,\n val,\n setValue,\n dataTest,\n className,\n placeholder,\n id,\n required,\n }: Props,\n ref\n ) => {\n const traversal = useTraversal()\n\n if (schema?.widget === 'search_list') {\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <SearchInputList\n value={(val || []) as string[]}\n traversal={traversal}\n onChange={(ev) => setValue(ev)}\n queryCondition={\n schema?.queryCondition ? schema.queryCondition : 'title__in'\n }\n path={schema.queryPath}\n labelProperty={\n schema?.labelProperty ? schema.labelProperty : 'title'\n }\n typeNameQuery={schema?.typeNameQuery}\n />\n </>\n )\n } else if (schema?.widget === 'search') {\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <SearchInput\n value={val as string}\n traversal={traversal}\n onChange={(ev) => setValue(ev)}\n queryCondition={\n schema?.queryCondition ? schema.queryCondition : 'title__in'\n }\n path={schema.queryPath}\n labelProperty={\n schema?.labelProperty ? schema.labelProperty : 'title'\n }\n typeNameQuery={schema?.typeNameQuery}\n />\n </>\n )\n } else if (schema?.widget === 'textarea' || schema?.widget === 'richtext') {\n return (\n <Textarea\n value={(val || '') as string}\n className={className}\n onChange={(ev) => setValue(ev)}\n ref={ref as Ref<HTMLTextAreaElement>}\n dataTest={dataTest}\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.type === 'boolean') {\n return (\n <Checkbox\n checked={Boolean(val)}\n className={className}\n onChange={(ev) => setValue(ev)}\n dataTest={dataTest}\n />\n )\n } else if (schema?.type === 'array') {\n if (schema.items && schema.items.type === 'string') {\n if (schema.items.vocabularyName) {\n return (\n <SelectVocabulary\n vocabularyName={get(schema, 'items.vocabularyName', '')}\n val={(val || []) as string[]}\n className={className}\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n onChange={setValue}\n multiple\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.items?.vocabulary) {\n return (\n <Select\n value={(val || []) as string[]}\n className={className}\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n options={schema?.items.vocabulary.map((item) => {\n return {\n text: item,\n value: item,\n }\n })}\n multiple\n onChange={setValue}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n }\n return (\n <>\n {placeholder && <label className=\"label\">{placeholder}</label>}\n <InputList\n value={(val || []) as string[]}\n className={className}\n onChange={(val) => setValue(val as string[])}\n ref={ref as Ref<HTMLInputElement>}\n dataTest={dataTest}\n />\n </>\n )\n } else if (schema?.widget === 'file') {\n const value = val as GuillotinaFile\n return (\n <FileUpload\n onChange={(ev) => setValue(ev as LightFile)}\n label={get(value, 'filename', undefined)}\n dataTest={dataTest}\n />\n )\n } else if (schema?.widget === 'select' && schema.type === 'string') {\n if (schema?.vocabularyName) {\n return (\n <SelectVocabulary\n val={(val || '') as string}\n className={className}\n appendDefault\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n onChange={setValue}\n vocabularyName={get(schema, 'vocabularyName', '')}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n\n return (\n <Select\n value={(val || '') as string}\n className={className}\n appendDefault\n classWrap=\"is-fullwidth\"\n dataTest={dataTest}\n options={(schema?.vocabulary ?? []).map((item) => {\n return {\n text: item,\n value: item,\n }\n })}\n onChange={setValue}\n placeholder={placeholder}\n id={id}\n />\n )\n } else if (schema?.type === 'object' && schema.widget !== 'file') {\n const value = val as IndexSignature\n return (\n <>\n {schema.title && <h4 className=\"subtitle mt-2\">{schema.title}</h4>}\n {Object.keys(get(schema, 'properties', {})).map((key) => {\n const subSchema = get<GuillotinaSchemaProperty | null>(\n schema,\n `properties.${key}`,\n null\n )\n const requiredFields: string[] = get(schema, 'required', [])\n if (!subSchema) return null\n return (\n <EditComponent\n key={`${id}[${key}]`}\n id={`${id}[${key}]`}\n schema={subSchema}\n val={value && key in value ? value[key] : ''}\n placeholder={subSchema?.title ?? ''}\n required={requiredFields.includes(key)}\n setValue={(ev) => {\n setValue({ ...value, [key]: ev } as IndexSignature)\n }}\n dataTest={`${key}TestInput`}\n />\n )\n })}\n </>\n )\n }\n const getInputType = () => {\n switch (schema?.type) {\n case 'integer':\n return 'number'\n case 'date':\n return 'date'\n case 'datetime':\n return 'datetime-local'\n case 'time':\n return 'time'\n default:\n return 'text'\n }\n }\n return (\n <Input\n value={(val || '') as string}\n className={className}\n dataTest={dataTest}\n onChange={(ev) => setValue(ev)}\n ref={ref as Ref<HTMLInputElement>}\n type={getInputType()}\n required={required}\n placeholder={placeholder}\n id={id}\n />\n )\n }\n)\n\nEditComponent.displayName = 'EditComponent'\nexport default EditComponent\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\n\ninterface Props {\n properties: {\n file: GuillotinaSchemaProperty\n }\n values: {\n file: GuillotinaFile\n }\n}\n\nexport function IAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {Object.keys(properties).map((key) => (\n <tr key={'attachment_' + key}>\n <td style={{ width: '150px' }} key={1}>\n {key}\n </td>\n <td key={2}>\n <EditableField\n field={key}\n value={values.file}\n ns=\"guillotina.behaviors.attachment.IAttachment\"\n schema={properties.file}\n modifyContent={modifyContent && ['file'].includes(key)}\n />\n </td>\n </tr>\n ))}\n </Table>\n )\n}\n","import { Input } from '../input/input'\nimport { FileUpload } from '../input/upload'\nimport { Button } from '../input/button'\nimport { useState } from 'react'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport ErrorZone from '../error_zone'\nimport { EditableField } from '../fields/editableField'\nimport { Delete } from '../ui'\nimport { Confirm } from '../modal'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport { LightFile } from '../../types/global'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { get } from '../../lib/utils'\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n files: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const [fileKey, setFileKey] = useState('')\n const [file, setFile] = useState<LightFile | undefined>(undefined)\n const [fileKeyToDelete, setFileKeyToDelete] = useState<string | undefined>(\n undefined\n )\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n if (!fileKey && !file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n if (!file) {\n return\n }\n const endpoint = `${Ctx.path}@upload/files/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n setFileKey('')\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.file_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/files/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n\n {Object.keys(values['files']).map((key) => (\n <tr key={'multiattachment_' + key}>\n <td key={1} style={{ width: '150px' }}>\n {key}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={`files/${key}`}\n value={values['files'][key]}\n ns=\"guillotina.behaviors.attachment.IMultiAttachment.files\"\n schema={\n get(\n properties,\n 'files.additionalProperties',\n {}\n ) as GuillotinaSchemaProperty\n }\n modifyContent={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n ))}\n {Object.keys(values['files']).length === 0 && (\n <tr>\n <td colSpan={2}>\n {intl.formatMessage(genericFileMessages.no_files_uploaded)}\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_a_file)}\n </label>\n <form className=\"columns\">\n <div className=\"column is-4\">\n <Input\n placeholder=\"Key\"\n name=\"field\"\n className=\"is-small\"\n value={fileKey}\n onChange={(ev) => setFileKey(ev)}\n required\n />\n {error && <ErrorZone>{error}</ErrorZone>}\n </div>\n <div className=\"column is-2\">\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div className=\"column is-2\">\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!fileKey && !file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","import { useState } from 'react'\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useConfig } from '../../hooks/useConfig'\nimport { Delete } from '../ui'\nimport { Button } from '../input/button'\nimport { FileUpload } from '../input/upload'\nimport { Confirm } from '../modal'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { LightFile } from '../../types/global'\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n image: GuillotinaFile\n }\n}\nexport function IImageAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const sizesImages = cfg.SizeImages || _sizesImages\n const [file, setFile] = useState<LightFile | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const [showConfirmToDelete, setShowConfirmToDelete] = useState(false)\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n setLoading(true)\n setError(undefined)\n if (!file) {\n return\n }\n const endpoint = `${Ctx.path}@upload/image`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/image/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFile(null)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/image`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {showConfirmToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setShowConfirmToDelete(false)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_image\n )}\n />\n )}\n {values['image'] && (\n <tr>\n <td key={1} style={{ width: '150px' }}>\n {intl.formatMessage(genericMessages.image)}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={'image'}\n value={values['image']}\n ns=\"guillotina.behaviors.behaviors.IImageAttachment\"\n schema={properties['image'] as GuillotinaSchemaProperty}\n modifyContent={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setShowConfirmToDelete(true)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n <form\n className=\"is-flex is-align-items-center\"\n style={{ gap: '15px' }}\n data-test=\"formImageAttachmentTest\"\n >\n <div>\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n {error && <p className=\"help is-danger\">{error}</p>}\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","import { useState } from 'react'\n\nimport { Button } from '../input/button'\nimport { Confirm } from '../modal'\nimport { Delete } from '../ui'\nimport { FileUpload } from '../input/upload'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { EditableField } from '../fields/editableField'\nimport { useConfig } from '../../hooks/useConfig'\nimport { Table } from '../ui'\nimport { Input } from '../input/input'\nimport { useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { LightFile } from '../../types/global'\nimport { get } from '../../lib/utils'\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiImageAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const [fileKey, setFileKey] = useState('')\n const [file, setFile] = useState<LightFile | undefined>(undefined)\n const [fileKeyToDelete, setFileKeyToDelete] = useState<string | undefined>(\n undefined\n )\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const sizesImages = cfg.SizeImages || _sizesImages\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n if (!fileKey && !file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n if (!file) {\n return\n }\n const endpoint = `${Ctx.path}@upload/images/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/images/${fileKey}/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFileKey('')\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/images/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n\n {Object.keys(values['images']).map((key) => (\n <tr key={`multiimageattachment_${key}`}>\n <td key={1} style={{ width: '150px' }}>\n {key}\n </td>\n <td key={2}>\n <div className=\"is-flex is-align-items-center\">\n <EditableField\n field={`images/${key}`}\n value={values['images'][key]}\n ns=\"guillotina.contrib.image.behaviors.IMultiImageAttachment.images\"\n schema={\n get(\n properties,\n 'images.additionalProperties',\n {}\n ) as GuillotinaSchemaProperty\n }\n modifyContent={false}\n required={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n </td>\n </tr>\n ))}\n {Object.keys(values['images']).length === 0 && (\n <tr>\n <td colSpan={2}>\n {intl.formatMessage(genericFileMessages.no_images_uploaded)}\n </td>\n </tr>\n )}\n {modifyContent && (\n <tr>\n <td colSpan={2}>\n <label className=\"label\">\n {' '}\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n <form className=\"columns\" data-test=\"formMultiimageAttachmentTest\">\n <div className=\"column is-4\">\n <Input\n placeholder=\"Key\"\n name=\"field\"\n className=\"is-small\"\n value={fileKey}\n onChange={(ev) => setFileKey(ev)}\n required\n />\n {error && <p className=\"help is-danger\">{error}</p>}\n </div>\n <div className=\"column is-2\">\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div className=\"column is-2\">\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!fileKey && !file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n </td>\n </tr>\n )}\n </Table>\n )\n}\n","import { Button } from '../input/button'\nimport { Confirm } from '../modal'\nimport { Delete } from '../ui'\nimport { FileUpload } from '../input/upload'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { EditableField } from '../fields/editableField'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useEffect, useState } from 'react'\nimport {\n DragDropContext,\n Draggable,\n DropResult,\n Droppable,\n DroppableProvided,\n DroppableStateSnapshot,\n} from 'react-beautiful-dnd'\nimport { v4 as uuidv4 } from 'uuid'\nimport { defineMessages, useIntl } from 'react-intl'\nimport {\n genericFileMessages,\n genericMessages,\n} from '../../locales/generic_messages'\nimport {\n GuillotinaFile,\n GuillotinaSchemaProperties,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { get } from '../../lib/utils'\nimport { LightFile } from '../../types/global'\n\ninterface StrictModeDroppableProps {\n children(\n provided: DroppableProvided,\n snapshot: DroppableStateSnapshot\n ): React.ReactElement<HTMLElement>\n droppableId: string\n}\nconst StrictModeDroppable = ({\n children,\n droppableId,\n}: StrictModeDroppableProps) => {\n const [enabled, setEnabled] = useState(false)\n useEffect(() => {\n const animation = requestAnimationFrame(() => setEnabled(true))\n return () => {\n cancelAnimationFrame(animation)\n setEnabled(false)\n }\n }, [])\n if (!enabled) {\n return null\n }\n return <Droppable droppableId={droppableId}>{children}</Droppable>\n}\n\nconst reorder = (list: string[], startIndex: number, endIndex: number) => {\n const result: string[] = Array.from(list)\n const [removed] = result.splice(startIndex, 1)\n result.splice(endIndex, 0, removed)\n\n return result\n}\n\nconst _sizesImages = ['large', 'preview', 'mini', 'thumb']\nconst messages = defineMessages({\n failed_to_sort_images: {\n id: 'failed_to_sort_images',\n defaultMessage: 'Failed to sort images',\n },\n images_sorted: {\n id: 'images_sorted',\n defaultMessage: 'Images sorted',\n },\n})\n\ninterface Props {\n properties: GuillotinaSchemaProperties\n values: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n}\nexport function IMultiImageOrderedAttachment({ properties, values }: Props) {\n const intl = useIntl()\n const cfg = useConfig()\n const [sortedList, setSortedList] = useState<string[]>(\n Object.keys(values['images'])\n )\n const [file, setFile] = useState<LightFile | undefined>(undefined)\n const [fileKeyToDelete, setFileKeyToDelete] = useState<string | undefined>(\n undefined\n )\n\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | undefined>(undefined)\n const { Ctx } = useCrudContext()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n const sizesImages = cfg.SizeImages || _sizesImages\n\n async function onDragEnd(result: DropResult) {\n if (!result.destination) {\n return\n }\n\n if (result.destination.index === result.source.index) {\n return\n }\n\n const resultSorted = reorder(\n sortedList,\n result.source.index,\n result.destination.index\n )\n\n setSortedList(resultSorted)\n setLoading(true)\n const endpoint = `${Ctx.path}@sort/images/`\n const req = await Ctx.client.patch(endpoint, resultSorted)\n if (req.status !== 200) {\n setError(intl.formatMessage(messages.failed_to_sort_images))\n setLoading(false)\n return\n }\n\n setLoading(false)\n Ctx.flash(intl.formatMessage(messages.images_sorted), 'success')\n Ctx.refresh()\n }\n\n const uploadFile = async (ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.preventDefault()\n if (!file) {\n setError(intl.formatMessage(genericFileMessages.error_file_key_name))\n return\n }\n setLoading(true)\n setError(undefined)\n const fileKey = uuidv4()\n const endpoint = `${Ctx.path}@upload/images/${fileKey}`\n const req = await Ctx.client.upload(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.error_upload_file))\n setLoading(false)\n return\n }\n\n for (let i = 0; i < sizesImages.length; i++) {\n const endpointSize = `${Ctx.path}@images/images/${fileKey}/${sizesImages[i]}`\n let hasError = false\n try {\n const req = await Ctx.client.upload(endpointSize, file)\n if (req.status !== 200) hasError = true\n } catch (err) {\n hasError = true\n }\n\n if (hasError) {\n setError(\n intl.formatMessage(genericFileMessages.error_upload_file_size, {\n size: sizesImages[i],\n })\n )\n setLoading(false)\n return\n }\n }\n\n setFile(undefined)\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_uploaded), 'success')\n Ctx.refresh()\n }\n\n const deleteFile = async () => {\n setLoading(true)\n setError(undefined)\n const endpoint = `${Ctx.path}@delete/images/${fileKeyToDelete}`\n const req = await Ctx.client.delete(endpoint, file)\n if (req.status !== 200) {\n setError(intl.formatMessage(genericFileMessages.failed_delete_file))\n setLoading(false)\n return\n }\n setLoading(false)\n Ctx.flash(intl.formatMessage(genericFileMessages.image_deleted), 'success')\n Ctx.refresh()\n }\n\n return (\n <>\n {fileKeyToDelete && (\n <Confirm\n loading={loading}\n onCancel={() => setFileKeyToDelete(undefined)}\n onConfirm={() => deleteFile()}\n message={intl.formatMessage(\n genericFileMessages.confirm_message_delete_file,\n { fileKeyToDelete }\n )}\n />\n )}\n <section>\n <DragDropContext onDragEnd={onDragEnd}>\n <StrictModeDroppable droppableId=\"list\">\n {(provided) => (\n <div ref={provided.innerRef} {...provided.droppableProps}>\n {sortedList.map((key, index) => (\n <Draggable\n key={`multiimageattachment_${key}`}\n draggableId={`multiimageattachment_${key}`}\n index={index}\n >\n {(providedChild) => (\n <div\n className=\"is-flex is-align-items-center pt-2 pb-2\"\n style={{ borderTop: '1px solid #dbdbdb' }}\n ref={providedChild.innerRef}\n {...providedChild.draggableProps}\n {...providedChild.dragHandleProps}\n >\n <EditableField\n field={`images/${key}`}\n value={values['images'][key]}\n ns=\"guillotina.contrib.image.behaviors.IMultiImageAttachment.images\"\n schema={\n get(\n properties,\n 'images.additionalProperties',\n {}\n ) as GuillotinaSchemaProperty\n }\n modifyContent={false}\n required={false}\n />\n <div className=\"ml-5\">\n <Delete\n onClick={(ev) => {\n ev.preventDefault()\n setFileKeyToDelete(key)\n }}\n />\n </div>\n </div>\n )}\n </Draggable>\n ))}\n {provided.placeholder}\n </div>\n )}\n </StrictModeDroppable>\n </DragDropContext>\n </section>\n\n {Object.keys(values['images']).length === 0 && (\n <section>\n {intl.formatMessage(genericFileMessages.no_images_uploaded)}\n </section>\n )}\n {modifyContent && (\n <section>\n <label className=\"label\">\n {intl.formatMessage(genericFileMessages.upload_an_image)}\n </label>\n\n <form\n className=\"is-flex is-align-items-center\"\n style={{ gap: '15px' }}\n data-test=\"formMultiimageOrderedAttachmentTest\"\n >\n <div>\n <FileUpload onChange={(ev) => setFile(ev)} />\n {file && file.filename}\n </div>\n <div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={uploadFile}\n disabled={!file}\n >\n {intl.formatMessage(genericMessages.upload)}\n </Button>\n </div>\n </form>\n {error && <p className=\"help is-danger\">{error}</p>}\n </section>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { Confirm } from '../modal'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { useEffect, useState } from 'react'\n\nimport { useVocabulary } from '../../hooks/useVocabulary'\nimport { get } from '../../lib/utils'\nimport { Workflow } from '../../types/guillotina'\nconst messages = defineMessages({\n status_changed_ok: {\n id: 'status_changed_ok',\n defaultMessage: 'Great status changed!',\n },\n status_changed_error: {\n id: 'status_changed_error',\n defaultMessage: 'Failed to status changed!: {error}',\n },\n confirm_message: {\n id: 'confirm_message',\n defaultMessage: 'Are you sure to change state: {title}?',\n },\n current_state: {\n id: 'current_state',\n defaultMessage: 'Current state: {state}',\n },\n actions: {\n id: 'actions',\n defaultMessage: 'Actions:',\n },\n})\n\nexport function IWorkflow() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext<Workflow>()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const [definition, setDefinition] = useState<Workflow | undefined>(undefined)\n const [workflowAction, setWorkflowAction] = useState<string | undefined>(\n undefined\n )\n const vocabulary = useVocabulary('workflow_states')\n const currentState = Ctx.context[\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior'\n ]!['review_state']\n\n async function loadDefinition() {\n const response = await Ctx.client.get(`${Ctx.path}/@workflow`)\n const workflow = await response.json()\n setDefinition(workflow)\n }\n\n useEffect(() => {\n loadDefinition()\n }, [Ctx.path])\n\n const doWorkflowAction = async () => {\n const { isError, errorMessage } = await post(\n {},\n `@workflow/${workflowAction}`,\n false\n )\n await loadDefinition()\n if (!isError) {\n Ctx.flash(intl.formatMessage(messages.status_changed_ok), 'success')\n } else {\n Ctx.flash(\n intl.formatMessage(messages.status_changed_error, {\n error: errorMessage,\n }),\n 'danger'\n )\n }\n\n Ctx.refresh()\n setWorkflowAction(undefined)\n }\n\n const getStateTitle = () => {\n if ((vocabulary.data?.items ?? []).length > 0) {\n const vocabularyValue = vocabulary?.data?.items.find(\n (item) => item.token === currentState\n )\n if (vocabularyValue) {\n const translatedValue = get(\n vocabularyValue,\n `title.translated_title.${intl.locale}`,\n null\n )\n if (translatedValue !== null) {\n return translatedValue\n }\n const titleValue = get(\n vocabularyValue,\n `title.title.${intl.locale}`,\n null\n )\n if (titleValue !== null) {\n return titleValue\n }\n }\n }\n return currentState\n }\n\n if (definition === undefined) return null\n\n return (\n <>\n {workflowAction && (\n <Confirm\n loading={loading}\n onCancel={() => setWorkflowAction(undefined)}\n onConfirm={doWorkflowAction}\n message={intl.formatMessage(messages.confirm_message, {\n title: Ctx.context.title || Ctx.context['@name'],\n })}\n />\n )}\n\n <div className=\"is-flex is-align-items-center mb-3\">\n <div\n className=\"has-text-weight-bold\"\n data-test={`textInfoStatus-${currentState}`}\n >\n {intl.formatMessage(messages.current_state, {\n state: getStateTitle(),\n })}\n </div>\n </div>\n {modifyContent && definition.transitions.length > 0 && (\n <div\n className=\" is-flex is-align-items-center has-text-weight-bold\"\n data-test={`textInfoStatus-${currentState}`}\n >\n <label>{intl.formatMessage(messages.actions)}</label>&nbsp;&nbsp;\n {definition.transitions.map((transition) => {\n return (\n <button\n key={transition['@id']}\n className=\"button mr-4\"\n onClick={() =>\n setWorkflowAction(\n transition['@id'].split('@workflow')[1].slice(1)\n )\n }\n >\n {get(\n transition,\n `metadata.translated_title.${intl.locale}`,\n transition.title\n )}\n </button>\n )\n })}\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { getActionsObject } from '../../lib/helpers'\nimport { Fragment } from 'react'\n\nexport function PanelActions() {\n const traversal = useTraversal()\n const intl = useIntl()\n const ACTIONS_OBJECT = getActionsObject(intl)\n\n const hasPerm = (perms: string[]) => {\n return perms.some((perm) => traversal.hasPerm(perm))\n }\n\n const onAction = (actionKey: keyof typeof ACTIONS_OBJECT) => {\n traversal.doAction(ACTIONS_OBJECT[actionKey].action, {\n item: traversal.context,\n })\n }\n\n return (\n <Fragment>\n {Object.keys(ACTIONS_OBJECT).map((actionKey) => {\n const actionKeyTyped = actionKey as keyof typeof ACTIONS_OBJECT\n const actionObject = ACTIONS_OBJECT[actionKeyTyped]\n if (hasPerm(actionObject.perms)) {\n return (\n <button\n key={`panel_action_${actionObject.text}`}\n className=\"button mr-4\"\n onClick={() => {\n onAction(actionKeyTyped)\n }}\n >\n {actionObject.text}\n </button>\n )\n }\n })}\n </Fragment>\n )\n}\n","import { Traversal, useTraversal } from '../../contexts'\nimport { useIntl, defineMessages } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useState } from 'react'\nimport { AddonAvailable, Addons } from '../../types/guillotina'\n\nconst messages = defineMessages({\n available_addons: {\n id: 'available_addons',\n defaultMessage: 'Available Addons',\n },\n no_available_addons_container: {\n id: 'no_available_addons_container',\n defaultMessage: 'No Addon available in this container',\n },\n installed_addons: {\n id: 'installed_addons',\n defaultMessage: 'Installed Addons',\n },\n})\n\n// TODO: Refactor without useAsync... just crudContext\nexport function PanelAddons() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const [action, setAction] = useState(false)\n const [state, setState] = useState<{\n data?: {\n available: AddonAvailable[]\n installed: AddonAvailable[]\n }\n loading: boolean\n error?: Error\n }>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n useEffect(() => {\n const getAddons = async () => {\n if (!state.loading && !state.data && !state.error) {\n try {\n const response = await Ctx.client.getAddons(Ctx.pathPrefix)\n const data: Addons = await response.json()\n setState({ ...state, loading: false, data: prepareData(data) })\n } catch (err) {\n setState({ ...state, loading: false, error: err as Error })\n }\n }\n }\n getAddons()\n }, [action])\n\n const installAddon = async (Ctx: Traversal, key: string) => {\n await Ctx.client.installAddon(Ctx.pathPrefix, key)\n Ctx.flash(`Addon ${key} installed`, 'success')\n setAction(!action)\n }\n\n const removeAddon = async (Ctx: Traversal, key: string) => {\n await Ctx.client.removeAddon(Ctx.pathPrefix, key)\n Ctx.flash(`Addon ${key} removed`, 'success')\n setAction(!action)\n }\n\n return (\n <Fragment>\n {state.loading ? (\n <div>{intl.formatMessage(genericMessages.loading)}</div>\n ) : state.error ? (\n <p>Error: {state.error.message}</p>\n ) : (\n <div className=\"columns\">\n <div className=\"column\">\n <h2 className=\"title is-size-4 has-text-grey-dark\">\n {intl.formatMessage(messages.available_addons)}\n </h2>\n <hr />\n {(state.data?.available ?? []).length === 0 && (\n <p>\n {intl.formatMessage(messages.no_available_addons_container)}\n </p>\n )}\n <table className=\"table is-12\">\n <tbody>\n {(state.data?.available ?? []).map((addon) => (\n <tr key={addon.id}>\n <td>{addon.title}</td>\n <td>\n <button\n className=\"button is-primary is-small\"\n onClick={() => installAddon(Ctx, addon.id)}\n >\n {intl.formatMessage(genericMessages.install)}\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"column\">\n <h2 className=\"title is-size-4 has-text-grey-dark\">\n {intl.formatMessage(messages.installed_addons)}\n </h2>\n <hr />\n {(state.data?.installed ?? []).length === 0 && (\n <p>\n {intl.formatMessage(messages.no_available_addons_container)}\n </p>\n )}\n <table className=\"table is-12\">\n <tbody>\n {(state.data?.installed ?? []).map((addon) => (\n <tr key={addon.id}>\n <td>{addon.title}</td>\n <td>\n <button\n className=\"button is-danger is-small\"\n onClick={() => removeAddon(Ctx, addon.id)}\n >\n {intl.formatMessage(genericMessages.remove)}\n </button>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n )}\n </Fragment>\n )\n}\n\nconst prepareData = (result: Addons) => {\n const addons = arrayToObject(result.available)\n return {\n available: result.available.filter(\n (item) => !result.installed.includes(item.id)\n ),\n installed: result.installed.map((id) => addons[id]),\n }\n}\n\nconst arrayToObject = (\n array: AddonAvailable[]\n): {\n [key: string]: AddonAvailable\n} =>\n array.reduce((obj, item) => {\n return {\n ...obj,\n [item.id]: item,\n }\n }, {})\n","import { useCrudContext } from '../../hooks/useCrudContext'\nimport { Table } from '../ui/table'\nimport { Button } from '../input/button'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useState } from 'react'\nimport { GuillotinaBehaviors } from '../../types/guillotina'\n\nexport function PanelBehaviors() {\n const intl = useIntl()\n const {\n Ctx,\n get,\n result,\n loading,\n isError,\n } = useCrudContext<GuillotinaBehaviors>()\n const ops = useCrudContext()\n\n const [state, setState] = useState(false)\n\n const enableBehavior = (behavior: string) => async () => {\n await ops.patch({ behavior }, '@behaviors')\n setState(!state)\n Ctx.refresh()\n }\n\n const disableBehavior = (behavior: string) => async () => {\n await ops.del({ behavior }, '@behaviors')\n setState(!state)\n Ctx.refresh()\n }\n\n useEffect(() => {\n get('@behaviors')\n }, [])\n\n return (\n <div className=\"columns behaviors\">\n <div className=\"column is-8 is-size-7\">\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(genericMessages.behaviors)}\n </h2>\n {!loading && !isError && result && (\n <Fragment>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.static)}\n </h3>\n </td>\n </tr>\n {result.static.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.static)}</td>\n <td>{behavior}</td>\n <td className=\"\">\n <Button className=\"is-small is-pulled-right\" disabled>\n {intl.formatMessage(genericMessages.disable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.enabled)}\n </h3>\n </td>\n </tr>\n {result.dynamic.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.enabled)}</td>\n <td>{behavior}</td>\n <td>\n <Button\n className=\"is-small is-danger is-pulled-right\"\n onClick={disableBehavior(behavior)}\n >\n {intl.formatMessage(genericMessages.disable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n <Table>\n <tr>\n <td colSpan={3}>\n <h3 className=\"title is-size-6\">\n {intl.formatMessage(genericMessages.available)}\n </h3>\n </td>\n </tr>\n {result.available.map((behavior) => (\n <tr key={behavior}>\n <td>{intl.formatMessage(genericMessages.available)}</td>\n <td>{behavior}</td>\n <td>\n <Button\n className=\"is-small is-primary is-pulled-right\"\n onClick={enableBehavior(behavior)}\n >\n {intl.formatMessage(genericMessages.enable)}\n </Button>\n </td>\n </tr>\n ))}\n </Table>\n </Fragment>\n )}\n </div>\n <div className=\"column is-4\"></div>\n </div>\n )\n}\n","import { createContext, useState, useContext } from 'react'\nimport Dropdown from './input/dropdown'\nimport { Checkbox } from './input/checkbox'\nimport { useTraversal } from '../contexts'\nimport { useIntl } from 'react-intl'\nimport { getActionsObject } from '../lib/helpers'\nimport { SearchItem } from '../types/guillotina'\n\nconst ItemsActionsCtx = createContext<{\n selected: {\n all: boolean\n [key: string]: boolean\n }\n onSelectOneItem?: (item: SearchItem) => void\n onSelectAllItems?: (chedked: boolean) => void\n onAction?: (action: string) => void\n}>({\n selected: {\n all: false,\n },\n})\n\n/**\n * Actions to apply after select some items\n * Ex: Delete, Move, Copy...\n */\ninterface PropsItemsActionsProvider {\n items: SearchItem[]\n children: React.ReactNode\n}\nexport function ItemsActionsProvider({\n items,\n children,\n}: PropsItemsActionsProvider) {\n const intl = useIntl()\n const actions = getActionsObject(intl, true)\n const traversal = useTraversal()\n const [selected, setSelected] = useState<{\n all: boolean\n [key: string]: boolean\n }>({\n all: false,\n })\n function onSelectAllItems(checked: boolean) {\n setSelected(\n items.reduce(\n (obj, item) => {\n return {\n ...obj,\n [`${item.path}/${item.id}`]: checked,\n }\n },\n { all: checked }\n )\n )\n }\n\n function onSelectOneItem(item: SearchItem) {\n setSelected((state) => ({\n ...state,\n all: false,\n [`${item.path}/${item.id}`]: !state[`${item.path}/${item.id}`],\n }))\n }\n\n function onAction(actionKey: string) {\n traversal.doAction(actions[actionKey].action, {\n items: items.filter((item) => selected[`${item.path}/${item.id}`]),\n })\n }\n\n return (\n <ItemsActionsCtx.Provider\n value={{\n onAction,\n onSelectAllItems,\n onSelectOneItem,\n selected,\n }}\n >\n {children}\n </ItemsActionsCtx.Provider>\n )\n}\n\nconst useItemsActions = () => {\n const { onAction, onSelectOneItem, onSelectAllItems, selected } = useContext(\n ItemsActionsCtx\n )\n if (!onAction || !onSelectOneItem || !onSelectAllItems || !selected) {\n throw new Error('useItemsActions must be used inside ItemsActionsProvider')\n }\n return { onAction, onSelectOneItem, onSelectAllItems, selected }\n}\n/**\n * Checkbox component without props that consume the ItemsActionsContext\n * and it select/unselect all items of the page.\n */\nexport function AllItemsCheckbox({ dataTest }: { dataTest?: string }) {\n const { onSelectAllItems, selected } = useItemsActions()\n\n return (\n <Checkbox\n onChange={onSelectAllItems}\n checked={selected.all}\n dataTest={dataTest}\n />\n )\n}\n\n/**\n * Checkbox component to select ONE item.\n */\ninterface PropsItemCheckbox {\n item: SearchItem\n dataTest?: string\n}\nexport function ItemCheckbox({ item, dataTest }: PropsItemCheckbox) {\n const { selected, onSelectOneItem } = useItemsActions()\n const absId = `${item.path}/${item.id}`\n const value = selected[absId]\n\n return (\n <Checkbox\n onChange={() => onSelectOneItem(item)}\n checked={value}\n dataTest={dataTest}\n />\n )\n}\n\n/**\n * Dropdown to choose some action to apply to the selected items.\n */\nexport function ItemsActionsDropdown() {\n const intl = useIntl()\n const ACTIONS_OBJECT = getActionsObject(intl, true)\n const traversal = useTraversal()\n const { selected, onAction } = useItemsActions()\n const disabled = Object.values(selected).every((v) => !v)\n const options = Object.keys(ACTIONS_OBJECT).map((action) => ({\n text: ACTIONS_OBJECT[action].text,\n value: action,\n }))\n\n return (\n <Dropdown\n disabled={disabled}\n id=\"items-actions\"\n onChange={onAction}\n optionDisabledWhen={(o) =>\n ACTIONS_OBJECT[o.value].perms.some((perm) => !traversal.hasPerm(perm))\n }\n options={options}\n isRight={false}\n >\n <div data-test=\"btnChooseActionTest\">\n {intl.formatMessage({\n id: 'choose_action',\n defaultMessage: 'Choose action...',\n })}\n </div>\n </Dropdown>\n )\n}\n","import { useIntl } from 'react-intl'\n\ninterface Props {\n current: number\n total: number\n doPaginate: (page: number) => void\n pager: number\n}\nexport function Pagination({ current, total, doPaginate, pager }: Props) {\n const intl = useIntl()\n const maxPages = Math.ceil(total / pager)\n if (maxPages <= 1) {\n return null\n }\n\n return (\n <div>\n <p className=\"level-right has-text-grey is-size-7\">\n <span>\n {intl.formatMessage(\n {\n id: 'pagination',\n defaultMessage:\n '{currentPage} / {totalPages} of {totalItems} items',\n },\n {\n currentPage: current + 1,\n totalPages: maxPages,\n totalItems: total,\n }\n )}\n </span>\n </p>\n <nav\n className=\"pagination is-size-7\"\n role=\"navigation\"\n aria-label=\"pagination\"\n >\n <a\n className=\"pagination-previous is-small\"\n // disabled={current === 0}\n onClick={() => (current > 0 ? doPaginate(current - 1) : null)}\n >\n <span className=\"icon\">\n <i className=\"fas fa-arrow-left\"></i>\n </span>\n </a>\n <a\n className=\"pagination-next is-small\"\n // disabled={current >= maxPages - 1}\n onClick={() => doPaginate(current + 1)}\n >\n <span className=\"icon\">\n <i className=\"fas fa-arrow-right\"></i>\n </span>\n </a>\n </nav>\n </div>\n )\n}\n","import {\n GuillotinaSharing,\n GuillotinaSharingInheritItem,\n GuillotinaSharingMap,\n} from '../types/guillotina'\n\nconst base: GuillotinaSharing = {\n local: {\n roleperm: {},\n prinperm: {},\n prinrole: {},\n },\n inherit: [],\n}\n\nexport class Sharing {\n local: GuillotinaSharingMap\n inherit: GuillotinaSharingInheritItem[]\n\n constructor(element: GuillotinaSharing | undefined) {\n if (element === undefined) {\n throw new Error('Sharing element is undefined')\n }\n this.local = element.local || base.local\n this.inherit = element.inherit || base.inherit\n }\n get roles() {\n return Object.keys(this.local.roleperm)\n }\n\n getRole(role: string) {\n return this.local.roleperm[role]\n }\n\n get principals() {\n return Object.keys(this.local.prinperm)\n }\n\n getPrincipals(principal: string) {\n return this.local.prinperm[principal]\n }\n\n get prinrole() {\n return Object.keys(this.local.prinrole)\n }\n\n getPrinroles(role: string) {\n return this.local.prinrole[role]\n }\n}\n","import { formatDate } from '../lib/utils'\nimport { useConfig } from '../hooks/useConfig'\nimport { GuillotinaCommonObject, SearchItem } from '../types/guillotina'\n\nexport * from './sharing'\n\nexport class ItemModel {\n item: SearchItem | GuillotinaCommonObject\n url: string\n constructor(item: SearchItem | GuillotinaCommonObject, url = '') {\n this.item = item\n this.url = url\n }\n\n get path() {\n // Compat\n const item = this.item['@id']\n ? this.item['@id']\n : this.item['@absolute_url']\n let path = item.split('//')[1].split('/').splice(1).join('/')\n path = `/${path}/`\n if (this.url.length > 0) {\n if (this.url.startsWith('/')) {\n path = path.replace(this.url.substring(1), '')\n } else {\n path = path.replace(this.url, '')\n }\n }\n\n return path\n }\n\n get name() {\n return this.item.title || this.item['@name']\n }\n\n get icon() {\n const cfg = useConfig()\n if (cfg.icons && cfg.icons[this.type]) {\n return cfg.icons[this.type]\n }\n\n switch (this.type) {\n case 'GroupManager':\n return 'fas fa-users-cog'\n case 'UserManager':\n return 'fas fa-user-cog'\n case 'User':\n return 'fas fa-user'\n case 'Group':\n return 'fas fa-users'\n case 'Folder':\n return 'fas fa-folder'\n default:\n return 'fas fa-file'\n }\n }\n\n get fullPath() {\n return this.url + this.id\n }\n\n get id() {\n if ('id' in this.item) {\n return this.item.id\n }\n const id = this.item['@id'].split('&')[0].split('/')\n return id[id.length - 1]\n }\n\n get uid() {\n return this.item['@uid']\n }\n\n get type(): string {\n return this.item['@type'] || this.item.type_name\n }\n\n get title() {\n return this.item.title\n }\n\n get created() {\n return this.item.creation_date ? formatDate(this.item.creation_date) : ''\n }\n\n get updated() {\n return this.item.modification_date\n ? formatDate(this.item.modification_date)\n : ''\n }\n}\n","import React from 'react'\n\nimport { ItemModel } from '../models'\nimport { useLocation } from '../hooks/useLocation'\nimport { useTraversal } from '../contexts'\nimport { Icon } from './ui/icon'\nimport { ItemCheckbox } from './selected_items_actions'\nimport { Delete } from './ui'\nimport { IColumn } from '../reducers/guillotina'\nimport { SearchItem } from '../types/guillotina'\n\ninterface ItemProps {\n item: { id: string; path: string }\n icon?: string\n}\nexport function Item({ item, icon }: ItemProps) {\n const [, navigate] = useLocation()\n const link = () => navigate({ path: item.path }, true)\n return (\n <tr>\n <td onClick={link} style={{ width: '25px' }}>\n {icon && <Icon icon={icon} />}\n </td>\n <td onClick={link}>{item.id}</td>\n </tr>\n )\n}\n\nconst smallcss = {\n width: 25,\n}\n\ninterface RItemProps {\n item: SearchItem\n search: string\n columns: IColumn[]\n}\nexport function RItem({ item, search, columns }: RItemProps) {\n const [, navigate] = useLocation()\n const traversal = useTraversal()\n const model = new ItemModel(item, traversal.url)\n const link = () => navigate({ path: model.path }, true)\n\n return (\n <tr key={item.id} data-test={`itemTest-${item.id}`}>\n <td style={smallcss}>\n <ItemCheckbox item={item} dataTest=\"itemCheckboxRowTest\" />\n </td>\n {columns.map((i) => (\n <React.Fragment key={i.label}>\n {i.child(model, link, search)}\n </React.Fragment>\n ))}\n <td style={smallcss}>\n {traversal.hasPerm('guillotina.DeleteContent') && (\n <Delete\n onClick={() =>\n traversal.doAction('removeItems', { items: [model.item] })\n }\n />\n )}\n </td>\n </tr>\n )\n}\n\ninterface ItemTitleProps {\n title: string\n actions?: React.ReactNode\n}\nexport function ItemTitle({ title, actions }: ItemTitleProps) {\n return (\n <nav className=\"level\">\n <div className=\"level-left\">\n <div className=\"level-item\">\n <h4 className=\"title has-text-primary is-size-5\">{title}</h4>\n </div>\n </div>\n <div className=\"level-right\">\n <div className=\"level-item\">{actions && actions}</div>\n </div>\n </nav>\n )\n}\n","import { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\n\ninterface Props {\n query?: string\n}\nexport function SearchLabels({ query }: Props) {\n const [location, , del] = useLocation()\n const search = location.get(query ?? 'q')\n\n const clearSearch = () => {\n del(query ?? 'q')\n }\n\n if (search) {\n return (\n <div className=\"tags\">\n <Tag\n id={search}\n name={search}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import { useEffect, useState } from 'react'\nimport { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\n\ninterface Props {\n query?: string\n options?: { value: string; text: string }[]\n}\nexport function SearchOptionsLabels({ query = 'q', options }: Props) {\n const [location, , del] = useLocation()\n const [renderValue, setRenderValue] = useState<string | undefined>(undefined)\n const defaultRenderValue = location.get(query) || ''\n\n useEffect(() => {\n let value = defaultRenderValue\n if (options && (options ?? []).length > 0) {\n const option = options.find((item) => item.value === value)\n if (option) {\n value = option.text\n }\n }\n setRenderValue(value)\n }, [defaultRenderValue])\n\n const clearSearch = () => {\n del(query)\n }\n\n if (renderValue) {\n return (\n <div className=\"tags\">\n <Tag\n id={defaultRenderValue}\n name={renderValue}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import { useEffect, useState } from 'react'\nimport { Tag } from './ui/tag'\nimport { useLocation } from '../hooks/useLocation'\nimport { useVocabulary } from '../hooks/useVocabulary'\n\ninterface Props {\n query?: string\n vocabularyName: string\n}\n\nexport function SearchVocabularyLabels({ query = 'q', vocabularyName }: Props) {\n const [location, , del] = useLocation()\n const [renderValue, setRenderValue] = useState<string | undefined>(undefined)\n const vocabulary = useVocabulary(vocabularyName)\n const defaultRenderValue = location.get(query) || ''\n\n useEffect(() => {\n let value: string = defaultRenderValue\n\n if ((vocabulary?.data?.items ?? []).length > 0) {\n const vocabularyValue = vocabulary?.data?.items.find(\n (item) => item.token === value\n )\n if (vocabularyValue) {\n value = vocabularyValue.title\n }\n }\n setRenderValue(value)\n }, [vocabulary, defaultRenderValue])\n\n const clearSearch = () => {\n del(query)\n }\n\n if (renderValue) {\n return (\n <div className=\"tags\">\n <Tag\n id={defaultRenderValue}\n name={renderValue}\n color=\"is-info\"\n size=\"is-size-7\"\n onRemove={() => clearSearch()}\n />\n </div>\n )\n }\n return null\n}\n","import useSetState from '../../hooks/useSetState'\nimport {\n ItemsActionsProvider,\n AllItemsCheckbox,\n ItemsActionsDropdown,\n} from '../selected_items_actions'\nimport { Pagination } from '../pagination'\nimport { RItem } from '../item'\nimport { SearchLabels } from '../search_labels'\nimport { SearchOptionsLabels } from '../search_options_labels'\nimport { SearchVocabularyLabels } from '../search_vocabulary_labels'\nimport { useTraversal } from '../../contexts'\nimport { buildQs } from '../../lib/search'\nimport { parser } from '../../lib/search'\nimport { useConfig } from '../../hooks/useConfig'\nimport { useEffect } from 'react'\nimport { useLocation } from '../../hooks/useLocation'\nimport { Select } from '../input/select'\nimport { Input } from '../input/input'\nimport { SelectVocabulary } from '../input/select_vocabulary'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\nimport {\n ItemColumn,\n RegistrySchemaFilter,\n SearchItem,\n} from '../../types/guillotina'\n\ninterface InitialState {\n page: number\n items: SearchItem[]\n loading: boolean\n total: number\n}\nconst initialState: InitialState = {\n page: 0,\n items: [],\n loading: true,\n total: 0,\n}\n\nexport function PanelItems() {\n const [location, setLocation, del] = useLocation()\n const { PageSize, SearchEngine } = useConfig()\n const intl = useIntl()\n\n const Ctx = useTraversal()\n const [state, setState] = useSetState<InitialState>(initialState)\n const { items, loading, total } = state\n\n const filterSchema: RegistrySchemaFilter[] =\n Ctx.registry.getSchemas(Ctx.context['@type']).filters || []\n\n const columns =\n Ctx.registry.getItemsColumn(Ctx.context['@type']) ||\n Ctx.client.getItemsColumn()\n\n const search = location.get('q')\n const type = location.get('type')\n const sort = location.get('sort')\n const sortDirection = location.get('sort_direction')\n let page: number\n\n try {\n page = parseInt(location.get('page') || '0')\n } catch {\n page = 0\n }\n\n let searchParsed: string[][] | undefined = undefined\n if (search && search !== '') {\n const fieldsToFilter = Ctx.registry.getFieldsToFilter(Ctx.context['@type'])\n searchParsed = parser(search, fieldsToFilter)\n }\n\n let typeParsed: string[][] | undefined = undefined\n if (type && type !== '') {\n typeParsed = parser(type, 'type_name')\n }\n\n let sortParsed: string[][] | undefined = undefined\n if (sort && sort !== '') {\n if (sortDirection === 'asc') {\n sortParsed = parser(`_sort_asc=${sort}`)\n } else if (sortDirection === 'des') {\n sortParsed = parser(`_sort_des=${sort}`)\n }\n }\n\n const onSort = (key: string) => {\n if (sort === key && sortDirection === 'des') {\n setLocation({\n sort: key,\n sort_direction: 'asc',\n page: 0,\n })\n } else {\n setLocation({\n sort: key,\n sort_direction: 'des',\n page: 0,\n })\n }\n }\n\n let resultQueryParams: string[][] = []\n const resultDynamicLocation: string[] = []\n filterSchema.forEach((filter) => {\n const itemParam = location.get(filter.attribute_key) || ''\n resultDynamicLocation.push(itemParam)\n if (itemParam) {\n const filterParsed = parser(itemParam, filter.attribute_key)\n resultQueryParams = [...resultQueryParams, ...filterParsed]\n }\n })\n\n useEffect(() => {\n const controller = new AbortController()\n if (Ctx.state.loading) return\n const getData = async () => {\n setState({ loading: true, total: Ctx.context.length })\n const { get } = Ctx.registry\n const fnName = get('searchEngineQueryParamsFunction', SearchEngine)\n if (sortParsed === undefined) {\n const defaultSortValue = Ctx.registry.getDefaultSortValue(\n Ctx.context['@type']\n )\n sortParsed = parser(\n `_sort_${defaultSortValue.direction}=${defaultSortValue.key}`\n )\n }\n const qsParsed = Ctx.client.getQueryParamsSearchFunction(fnName)({\n path: Ctx.path,\n start: page * PageSize,\n pageSize: PageSize,\n })\n let qs = ''\n if (search || type || resultQueryParams.length > 0) {\n qs = buildQs([\n ...qsParsed,\n ...(searchParsed ?? []),\n ...(typeParsed ?? []),\n ...(sortParsed ?? []),\n ...resultQueryParams,\n ])\n } else {\n qs = buildQs([...qsParsed, ...(sortParsed ?? [])])\n }\n\n const { signal } = controller\n const data = await Ctx.client.search<SearchItem>(\n Ctx.path,\n qs,\n false,\n false,\n signal\n )\n setState({\n items: data.items,\n loading: false,\n total: data.items_count,\n })\n }\n getData()\n return () => {\n controller.abort()\n }\n }, [\n search,\n type,\n Ctx.state.refresh,\n page,\n sort,\n sortDirection,\n ...resultDynamicLocation,\n ])\n\n const doPaginate = (page: number) => {\n setLocation({ page: page })\n }\n\n const getIcon = (key: string, isSortable: boolean) => {\n let icon = null\n if (isSortable) {\n if (sort !== key) {\n icon = <i className=\"fas fa-sort\" />\n } else if (sortDirection === 'des') {\n icon = <i className=\"fas fa-sort-down\" />\n } else {\n icon = <i className=\"fas fa-sort-up\"></i>\n }\n }\n return <span className=\"icon is-small\">{icon}</span>\n }\n\n return (\n <ItemsActionsProvider items={items}>\n {filterSchema.length > 0 && (\n <div className=\"filters-items-view\">\n {filterSchema.map((filter) => {\n if (filter.type === 'select' && (filter.values ?? []).length > 0) {\n return (\n <Select\n key={`filter-${filter.attribute_key}`}\n id={filter.attribute_key}\n placeholder={filter.label}\n appendDefault\n classWrap=\"is-size-7 is-fullwidth\"\n options={filter.values ?? []}\n value={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n } else if (filter.type === 'select' && filter.vocabulary) {\n return (\n <SelectVocabulary\n key={`filter-${filter.attribute_key}`}\n id={filter.attribute_key}\n placeholder={filter.label}\n appendDefault\n vocabularyName={filter.vocabulary}\n classWrap=\"is-size-7 is-fullwidth\"\n val={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n } else if (filter.type === 'input') {\n return (\n <Input\n id={filter.attribute_key}\n key={`filter-${filter.attribute_key}`}\n placeholder={filter.label}\n className=\"is-size-7 is-fullwidth\"\n type={filter.input_type || 'text'}\n value={location.get(filter.attribute_key) || ''}\n dataTest={`filterInput${filter.attribute_key}`}\n onChange={(value) => {\n if (value && value !== '') {\n setLocation({\n [filter.attribute_key]: value,\n tab: 'Items',\n page: 0,\n })\n } else {\n del(filter.attribute_key)\n }\n }}\n />\n )\n }\n return null\n })}\n </div>\n )}\n <div className=\"wrapper-filters-info\">\n <div className=\"is-size-7\">\n <ItemsActionsDropdown />\n </div>\n <div className=\"wrapper-filters-tags\">\n {location.get('q') && <SearchLabels />}\n {location.get('type') && <SearchLabels query=\"type\" />}\n\n {(filterSchema ?? []).map((filter) => {\n const filterData = location.get(filter.attribute_key)\n if (filterData) {\n if (filter.type === 'select' && filter.vocabulary) {\n return (\n <div key={filter.attribute_key}>\n <SearchVocabularyLabels\n query={filter.attribute_key}\n vocabularyName={filter?.vocabulary}\n />\n </div>\n )\n } else if (\n filter.type === 'select' &&\n (filter.values ?? []).length > 0\n ) {\n return (\n <div key={filter.attribute_key}>\n <SearchOptionsLabels\n query={filter.attribute_key}\n options={filter?.values}\n />\n </div>\n )\n }\n return (\n <div key={filter.attribute_key}>\n <SearchLabels query={filter.attribute_key} />\n </div>\n )\n }\n return null\n })}\n </div>\n <div>\n <Pagination\n current={page}\n total={total}\n key=\"pagination-top\"\n doPaginate={doPaginate}\n pager={PageSize}\n />\n </div>\n </div>\n\n {loading && <div className=\"progress-line\"></div>}\n {!loading && (\n <table\n className=\"table is-fullwidth is-hoverable\"\n data-test=\"itemPanelTableTest\"\n >\n <thead className=\"is-size-7\">\n <tr>\n <th>\n <AllItemsCheckbox />\n </th>\n {columns.map((column: ItemColumn) => (\n <th\n key={`table-col-${column.label}`}\n onClick={() => column.isSortable && onSort(column.key)}\n data-test={`sortableColumn${column.key}`}\n >\n <div className=\"has-text-info is-flex is-align-items-center\">\n <span>{column.label}</span>\n {getIcon(column.key, !!column.isSortable)}\n </div>\n </th>\n ))}\n <th>&nbsp;</th>\n </tr>\n </thead>\n <tbody>\n {items &&\n items.map((item) => (\n <RItem\n item={item}\n key={item['@uid']}\n search={search ?? ''}\n columns={columns}\n />\n ))}\n {items && items.length === 0 && (\n <tr>\n <td colSpan={6} className=\"has-text-centered\">\n {intl.formatMessage(genericMessages.no_results)}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n )}\n <div className=\"columns is-centered\">\n <Pagination\n current={page}\n key=\"pagination-bottom\"\n total={total}\n doPaginate={doPaginate}\n pager={PageSize}\n />\n </div>\n </ItemsActionsProvider>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { get } from '../lib/utils'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { GuillotinaCommonObject, GuillotinaSchema } from '../types/guillotina'\n\ninterface Props {\n context: GuillotinaCommonObject\n schema: GuillotinaSchema\n}\nexport function BehaviorsView({ context, schema }: Props) {\n const Ctx = useTraversal()\n const { getBehavior } = Ctx.registry\n\n const behaviors: string[] = [\n ...(context.__behaviors__ ?? []),\n ...Object(context['@static_behaviors']),\n ]\n\n const GetBehavior = (behaviorName: string) => {\n const Cls = getBehavior(behaviorName, BehaviorNotImplemented)\n return (\n <Cls\n values={context[behaviorName as keyof GuillotinaCommonObject]}\n properties={get(\n schema,\n ['definitions', behaviorName, 'properties'],\n {}\n )}\n />\n )\n }\n\n return (\n <>\n {behaviors.map((behavior) => (\n <div className=\"container\" key={behavior}>\n <h3 className=\"title is-size-6 has-text-grey\">{behavior}</h3>\n {GetBehavior(behavior)}\n <hr />\n </div>\n ))}\n </>\n )\n}\n\nexport function BehaviorNotImplemented() {\n const intl = useIntl()\n return (\n <tr>\n <td colSpan={3}>{intl.formatMessage(genericMessages.not_implemented)}</td>\n </tr>\n )\n}\n","import React from 'react'\nimport { useTraversal } from '../contexts'\n\nexport function PropertiesButtonView() {\n const Ctx = useTraversal()\n const { getProperties } = Ctx.registry\n\n const Props = getProperties(Ctx.context['@type'])\n\n if (Props.Buttons) {\n const Element = React.cloneElement(Props.Buttons, { Ctx: Ctx })\n return Element\n }\n return null\n}\n\nexport function PropertiesView() {\n const Ctx = useTraversal()\n const { getProperties } = Ctx.registry\n const Props = getProperties(Ctx.context['@type'])\n\n if (Props.Panels) {\n const Element = React.cloneElement(Props.Panels, { Ctx: Ctx })\n return Element\n }\n return null\n}\n","import { useEffect } from 'react'\nimport { ItemModel } from '../../models'\nimport { BehaviorsView } from '../behavior_view'\nimport { Icon } from '../ui/icon'\nimport { EditableField } from '../fields/editableField'\nimport { PropertiesButtonView } from '../properties_view'\nimport { PropertiesView } from '../properties_view'\nimport { useConfig } from '../../hooks/useConfig'\nimport useSetState from '../../hooks/useSetState'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport {\n GuillotinaSchema,\n GuillotinaSchemaProperty,\n} from '../../types/guillotina'\nimport { get } from '../../lib/utils'\n\nconst _showProperties = ['@id', '@name', '@uid']\nconst _ignoreFields = [\n 'guillotina.behaviors.dublincore.IDublinCore',\n 'guillotina.behaviors.attachment.IAttachment',\n 'guillotina.behaviors.attachment.IMultiAttachment',\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior',\n 'guillotina.contrib.image.behaviors.IImageAttachment',\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment',\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment',\n '__behaviors__',\n 'type_name',\n 'creation_date',\n 'modification_date',\n 'uuid',\n 'title',\n]\n\ninterface State {\n data?: GuillotinaSchema\n loading: boolean\n error: string | unknown\n}\n\nexport function PanelProperties() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n const cfg = useConfig()\n\n const [schema, setSchema] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n })\n\n const model = new ItemModel(Ctx.context)\n\n const showProperties: string[] =\n Ctx.registry.getProperties(Ctx.context['@type']).default ||\n cfg.properties_default ||\n _showProperties\n\n const ignoreFields =\n Ctx.registry.getProperties(Ctx.context['@type']).ignoreField ||\n cfg.properties_ignore_fields ||\n _ignoreFields\n\n const properties = Object.keys(schema?.data?.properties || [])\n .filter((key) => !ignoreFields.includes(key))\n .map((key) => ({\n key,\n value: schema?.data?.properties[key] as GuillotinaSchemaProperty,\n }))\n\n useEffect(() => {\n async function getSchema() {\n if (!schema.loading && !schema.data && !schema.error) {\n try {\n setSchema({ loading: true })\n const dataJson = await Ctx.client.getTypeSchema(\n Ctx.path,\n Ctx.context.type_name\n )\n setSchema({ loading: false, data: dataJson })\n } catch (err) {\n setSchema({ loading: false, error: err })\n }\n }\n }\n getSchema()\n }, [schema])\n\n return (\n <div className=\"container\">\n <div className=\"level\">\n <div className=\"level-left\">\n <h2 className=\"title is-size-4 is-primary\">\n <Icon icon={model.icon} align=\"is-left\" className=\"has-text-grey\" />\n &nbsp;\n <span>{Ctx.context.title || Ctx.context['@name']}</span>\n </h2>\n </div>\n <div className=\"level-right\">\n <PropertiesButtonView />\n </div>\n </div>\n\n <hr />\n {schema && schema.data && !schema.loading && (\n <div className=\"columns\">\n <div className=\"column\">\n <table className=\"table is-striped is-fullwidth is-size-7\">\n <thead>\n <tr>\n <th style={{ width: '150px' }} className=\"is-2\">\n {intl.formatMessage(genericMessages.property)}\n </th>\n <th className=\"is-8\">\n {intl.formatMessage(genericMessages.value)}\n </th>\n </tr>\n </thead>\n <tbody>\n {showProperties.map((prop) => (\n <tr key={'prop' + prop}>\n <td style={{ width: '150px' }}>{prop}</td>\n <td>\n <EditableField\n field={prop}\n value={get(Ctx.context, prop, '')}\n modifyContent={false}\n />\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n {properties.length > 0 && (\n <table className=\"table is-striped is-fullwidth is-size-7\">\n <thead>\n <tr>\n <th style={{ width: '150px' }} className=\"is-2\">\n {intl.formatMessage(genericMessages.property)}\n </th>\n <th className=\"is-8\">\n {intl.formatMessage(genericMessages.value)}\n </th>\n </tr>\n </thead>\n <tbody>\n {properties.map(({ key, value }) => {\n return (\n <tr key={'prop' + key}>\n <td style={{ width: '150px' }}>{value.title || key}</td>\n <td>\n <EditableField\n field={key}\n value={get(Ctx.context, key, '')}\n schema={value}\n modifyContent={modifyContent}\n required={(schema.data?.required ?? []).includes(\n key\n )}\n />\n </td>\n </tr>\n )\n })}\n </tbody>\n </table>\n )}\n <PropertiesView />\n <BehaviorsView context={Ctx.context} schema={schema.data} />\n </div>\n </div>\n )}\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n principal?: string\n permission: string[]\n setting?: string\n error?: string\n}\ninterface Props {\n principals?: { text: string; value: string }[]\n permissions?: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionPrinperm({\n principals,\n permissions,\n operations,\n refresh,\n}: Props) {\n const Ctx = useTraversal()\n const intl = useIntl()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n principal: undefined,\n permission: [],\n setting: undefined,\n error: undefined,\n })\n\n const savePermission = async () => {\n if (!state.principal || !state.setting || state.permission.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form) })\n return\n }\n setState({ error: undefined })\n const data = {\n prinperm: state.permission.map((perm) => ({\n principal: state.principal,\n permission: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_principal)}\n </label>\n <Select\n appendDefault\n options={principals ?? []}\n onChange={(value) => setState({ principal: value as string })}\n dataTest=\"selectPrincipalTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_permissions)}\n </label>\n <Select\n options={permissions ?? []}\n onChange={(values) => {\n setState({ permission: values as string[] })\n }}\n size={5}\n multiple\n dataTest=\"selectPermissionsTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value) => setState({ setting: value as string })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n principal?: string\n roles: string[]\n setting?: string\n error?: string\n}\ninterface Props {\n principals?: { text: string; value: string }[]\n roles: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionPrinrole({\n principals,\n roles,\n operations,\n refresh,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n principal: undefined,\n roles: [],\n setting: undefined,\n error: undefined,\n })\n\n const savePermission = async () => {\n if (!state.principal || !state.setting || state.roles.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form_data) })\n return\n }\n setState({ error: undefined })\n const data = {\n prinrole: state.roles.map((perm) => ({\n principal: state.principal,\n role: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_principal)}\n </label>\n <Select\n appendDefault\n options={principals ?? []}\n onChange={(value) => setState({ principal: value as string })}\n dataTest=\"selectPrincipalTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_role)}\n </label>\n <Select\n options={roles}\n onChange={(values) => {\n setState({ roles: values as string[] })\n }}\n size={5}\n multiple\n dataTest=\"selectRoleTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value) => setState({ setting: value as string })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import ErrorZone from '../error_zone'\nimport useSetState from '../../hooks/useSetState'\nimport { Button } from '../input/button'\nimport { Select } from '../input/select'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\ninterface State {\n role?: string\n permission: string[]\n setting?: string\n error?: string\n}\ninterface Props {\n roles: { text: string; value: string }[]\n permissions?: { text: string; value: string }[]\n operations: { text: string; value: string }[]\n refresh: (value: number) => void\n}\nexport function PermissionRoleperm({\n roles,\n permissions,\n operations,\n refresh,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const { post, loading } = useCrudContext()\n const [state, setState] = useSetState<State>({\n role: undefined,\n permission: [],\n setting: undefined,\n error: undefined,\n })\n\n const savePermission = async () => {\n if (!state.role || !state.setting || state.permission.length === 0) {\n setState({ error: intl.formatMessage(genericMessages.invalid_form) })\n return\n }\n setState({ error: undefined })\n const data = {\n roleperm: state.permission.map((perm) => ({\n role: state.role,\n permission: perm,\n setting: state.setting,\n })),\n }\n const { isError, errorMessage } = await post(data, '@sharing', false)\n if (!isError) {\n Ctx.flash('Permission updated!', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n refresh(Math.random())\n }\n\n return (\n <div className=\"container\">\n {loading}\n {state.error && (\n <ErrorZone>\n {intl.formatMessage(genericMessages.invalid_form_data)}\n </ErrorZone>\n )}\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_role)}\n </label>\n <Select\n appendDefault\n options={roles}\n onChange={(value) => setState({ role: value as string })}\n dataTest=\"selectRoleTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.select_permissions)}\n </label>\n <Select\n options={permissions ?? []}\n onChange={(values) => {\n setState({ permission: values as string[] })\n }}\n dataTest=\"selectPermissionsTest\"\n size={5}\n multiple\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.operation)}\n </label>\n <Select\n appendDefault\n options={operations}\n onChange={(value) => setState({ setting: value as string })}\n dataTest=\"operationPermissionsTest\"\n />\n </div>\n <Button\n className=\"is-primary is-small\"\n loading={loading}\n onClick={savePermission}\n dataTest=\"btnSubmitPermissionsTest\"\n >\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </div>\n )\n}\n","import useSetState from '../../hooks/useSetState'\nimport { PermissionPrinperm } from './permissions_prinperm'\nimport { PermissionPrinrole } from './permissions_prinrole'\nimport { PermissionRoleperm } from './permissions_roleperm'\nimport { Select } from '../input/select'\nimport { Sharing } from '../../models'\nimport { Table } from '../ui/table'\nimport { useCrudContext } from '../../hooks/useCrudContext'\nimport { useTraversal } from '../../contexts'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\nimport { Fragment, useEffect, useMemo, useState } from 'react'\nimport { GuillotinaSharing } from '../../types/guillotina'\n\nconst messages = defineMessages({\n role_permissions: {\n id: 'role_permissions',\n defaultMessage: 'Role Permissions',\n },\n no_role_permissions: {\n id: 'no_role_permissions',\n defaultMessage: 'No roles permissions defined',\n },\n no_principal_permissions: {\n id: 'no_principal_permissions',\n defaultMessage: 'No principal permissions defined',\n },\n no_principal_roles: {\n id: 'no_principal_roles',\n defaultMessage: 'No principal roles defined',\n },\n principal_permissions: {\n id: 'principal_permissions',\n defaultMessage: 'Principal Permissions',\n },\n principal_roles: {\n id: 'principal_roles',\n defaultMessage: 'Principal Roles',\n },\n allow: {\n id: 'allow',\n defaultMessage: 'Allow',\n },\n deny: {\n id: 'deny',\n defaultMessage: 'Deny',\n },\n allow_single: {\n id: 'allow_single',\n defaultMessage: 'AllowSingle',\n },\n unset: {\n id: 'unset',\n defaultMessage: 'Unset',\n },\n add_permissions: {\n id: 'add_permissions',\n defaultMessage: 'Add Permissions',\n },\n select_type: {\n id: 'select_type',\n defaultMessage: 'Select a type:',\n },\n})\n\nexport function PanelPermissions() {\n const intl = useIntl()\n const { get, result, loading } = useCrudContext<GuillotinaSharing>()\n const ctx = useTraversal()\n\n const [reset, setReset] = useState(1)\n\n useEffect(() => {\n get('@sharing')\n }, [reset])\n\n const perms = useMemo(() => {\n if (result) {\n return new Sharing(result)\n }\n return null\n }, [result])\n if (perms === null) {\n return null\n }\n return (\n <div className=\"columns\">\n {!loading && (\n <div\n className=\"column is-8 is-size-7 permissions\"\n data-test=\"containerPermissionsInfoTest\"\n >\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.role_permissions)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.roles.map((role, idx) => (\n <Fragment key={'ff' + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n {/* <td>\n <Icon icon=\"fas fa-ban\" />\n <span>Remove</span>\n </td> */}\n </tr>\n {Object.keys(perms.getRole(role)).map((row, idx) => (\n <tr key={'k' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getRole(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.roles.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_role_permissions)}\n </td>\n </tr>\n )}\n </Table>\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.principal_permissions)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.principals.map((role, idx) => (\n <Fragment key={'f2' + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n </tr>\n {Object.keys(perms.getPrincipals(role)).map((row, idx) => (\n <tr key={'x' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getPrincipals(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.principals.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_principal_permissions)}\n </td>\n </tr>\n )}\n </Table>\n <h2 className=\"title is-size-5 has-text-grey-dark\">\n {intl.formatMessage(messages.principal_roles)}\n </h2>\n <Table\n headers={[\n intl.formatMessage(genericMessages.role),\n intl.formatMessage(genericMessages.permission),\n intl.formatMessage(genericMessages.setting),\n ]}\n >\n {perms.prinrole.map((role, idx) => (\n <Fragment key={role + idx}>\n <tr>\n <td colSpan={3} className=\"has-text-link\">\n {role}\n </td>\n </tr>\n {Object.keys(perms.getPrinroles(role)).map((row, idx) => (\n <tr key={'xx' + idx}>\n <td></td>\n <td>{row}</td>\n <td>{perms.getPrinroles(role)[row]}</td>\n </tr>\n ))}\n </Fragment>\n ))}\n {perms.prinrole.length === 0 && (\n <tr>\n <td colSpan={3}>\n {intl.formatMessage(messages.no_role_permissions)}\n </td>\n </tr>\n )}\n </Table>\n </div>\n )}\n {ctx.hasPerm('guillotina.ChangePermissions') && (\n <AddPermission refresh={setReset} reset={reset} />\n )}\n </div>\n )\n}\n\ninterface State {\n permissions?: { text: string; value: string }[]\n roles: { text: string; value: string }[]\n principals?: { text: string; value: string }[]\n current: string\n}\nconst initial: State = {\n permissions: undefined,\n roles: [],\n principals: undefined,\n current: '',\n}\n\ninterface AddPermissionProps {\n refresh: (state: number) => void\n reset: number\n}\nexport function AddPermission({ refresh, reset }: AddPermissionProps) {\n const Ctx = useTraversal()\n const [state, setState] = useSetState<State>(initial)\n const intl = useIntl()\n\n const operations = [\n { text: intl.formatMessage(messages.allow), value: 'Allow' },\n { text: intl.formatMessage(messages.deny), value: 'Deny' },\n { text: intl.formatMessage(messages.allow_single), value: 'AllowSingle' },\n { text: intl.formatMessage(messages.unset), value: 'Unset' },\n ]\n\n const defaultOptions = [\n { text: intl.formatMessage(genericMessages.choose), value: '' },\n { text: intl.formatMessage(messages.role_permissions), value: 'roleperm' },\n {\n text: intl.formatMessage(messages.principal_permissions),\n value: 'prinperm',\n },\n { text: intl.formatMessage(messages.principal_roles), value: 'prinrole' },\n ]\n\n useEffect(() => {\n async function init() {\n const permissions = (await Ctx.client.getAllPermissions(Ctx.path)).map(\n (perm) => ({\n text: perm,\n value: perm,\n })\n )\n let principals = []\n let roles = []\n\n const principalsData = await Ctx.client.getPrincipals(Ctx.path)\n const groups = principalsData.groups.map((group) => ({\n text: group['@name'],\n value: group['@name'],\n }))\n const users = principalsData.users.map((user) => ({\n text: user.fullname || user['@name'],\n value: user['@name'],\n }))\n principals = [...groups, ...users]\n\n const req = await Ctx.client.getRoles(Ctx.path)\n if (req.ok) {\n roles = (await req.json()).map((role: string) => ({\n text: role,\n value: role,\n }))\n }\n setState({ permissions, roles, principals })\n }\n\n init()\n }, [reset])\n\n return (\n <div className=\"column is-4 is-size-7\">\n <h1 className=\"title is-size-5\">\n {intl.formatMessage(messages.add_permissions)}\n </h1>\n <p>{intl.formatMessage(messages.select_type)}</p>\n <Select\n options={defaultOptions}\n onChange={(value) => setState({ current: value as string })}\n dataTest=\"selectPermissionTypeTest\"\n />\n <hr />\n {state.current && state.current === 'roleperm' && (\n <PermissionRoleperm\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n {state.current && state.current === 'prinperm' && (\n <PermissionPrinperm\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n {state.current && state.current === 'prinrole' && (\n <PermissionPrinrole\n {...state}\n operations={operations}\n refresh={refresh}\n />\n )}\n </div>\n )\n}\n","import { Select } from '../input/select'\nimport { Tag } from '../ui/tag'\nimport { Loading } from '../ui/loading'\nimport { useRef, useState } from 'react'\n\nconst prepareAvailable = (\n items: {\n value: string\n text: string\n }[],\n already: string[],\n title: string\n) => {\n const def = { value: '', text: `Add ${title}` }\n if (items.length === 0) return []\n return [def].concat(items).filter((item) => !already.includes(item.value))\n}\n\ninterface Props {\n items: string[]\n available?: {\n value: string\n text: string\n }[]\n title: string\n noData: string\n onChange: (items: string[]) => void\n loading?: boolean\n}\nexport function TagsWidget({\n items,\n available,\n title,\n noData,\n onChange,\n loading,\n}: Props) {\n const selectRef = useRef<HTMLSelectElement>(null)\n\n const [result, setResult] = useState(items)\n const availableData = prepareAvailable(available || [], result, title)\n\n const remove = (value: string) => {\n const items = result.filter((item) => item !== value)\n setResult(items)\n onChange(items)\n }\n\n const addItem = (value: string) => {\n if (value === '') return\n const items = result.concat([value])\n setResult(items)\n onChange(items)\n }\n\n return (\n <>\n <h3 className=\"title is-size-6\">{title}</h3>\n {loading ? <Loading style={{ marginBottom: '1.5rem' }} /> : <hr />}\n <ul>\n <div className=\"tags\">\n {result.map((item) => (\n <Tag\n id={item}\n name={item}\n onRemove={() => remove(item)}\n key={item}\n />\n ))}\n </div>\n {result.length === 0 && (\n <li style={{ marginBottom: '20px' }}>{noData}</li>\n )}\n {(available ?? []).length > 1 && (\n <li className=\"widget-list-add select is-small\">\n <Select\n options={availableData}\n ref={selectRef}\n onChange={(value) => {\n addItem(value as string)\n if (selectRef.current) {\n selectRef.current.value = ''\n }\n }}\n />\n </li>\n )}\n </ul>\n </>\n )\n}\n","import { useEffect, useState } from 'react'\n\nimport Dropdown from './input/dropdown'\nimport useSetState from '../hooks/useSetState'\nimport { Button } from './input/button'\nimport { Icon } from './ui/icon'\nimport { useTraversal } from '../contexts'\nimport { useConfig } from '../hooks/useConfig'\nimport { useLocation } from '../hooks/useLocation'\nimport { Select } from './input/select'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { FilterFormElement } from '../types/global'\n\ninterface State {\n types: string[]\n isActive?: boolean\n}\nconst initialState = { types: [] }\n\nexport function CreateButton() {\n const intl = useIntl()\n const [state, setState] = useSetState<State>(initialState)\n const Ctx = useTraversal()\n const Config = useConfig()\n useEffect(() => {\n async function anyNameFunction() {\n const types: string[] = await Ctx.client.getTypes(Ctx.path)\n setState({\n types: types.filter((item) => !Config.DisabledTypes.includes(item)),\n })\n }\n anyNameFunction()\n }, [Ctx.path])\n\n const doAction = (item: string) => {\n Ctx.doAction('addItem', { type: item })\n setState({ isActive: false })\n }\n\n if (state.types && state.types.length === 1) {\n return (\n <Button\n className={'is-small is-success'}\n onClick={() => doAction(state.types[0])}\n dataTest=\"itemAddTypeTest\"\n >\n {intl.formatMessage(genericMessages.add_type, { type: state.types[0] })}\n </Button>\n )\n }\n\n if (state.types && state.types.length === 0) {\n return null\n }\n\n // Implement some kind of filtering\n return (\n <Dropdown\n id=\"dropdown-menu\"\n isRight\n onChange={doAction}\n options={(state.types || []).map((item) => ({ text: item, value: item }))}\n >\n <span className=\"icon\" data-test=\"itemAddTypeTest\">\n <i className=\"fas fa-plus\"></i>\n </span>\n </Dropdown>\n )\n}\n\ninterface Props {\n AddButton?: React.FC\n}\nexport function ContextToolbar({ AddButton }: Props) {\n const intl = useIntl()\n const [state, setState] = useSetState<State>(initialState)\n const [location, setLocation, del] = useLocation()\n const traversal = useTraversal()\n const Config = useConfig()\n const searchText = location.get('q') || ''\n const [searchValue, setSearchValue] = useState(searchText || '')\n\n useEffect(() => {\n loadTypes()\n }, [traversal.path])\n\n useEffect(() => {\n setSearchValue(searchText)\n }, [searchText])\n\n async function loadTypes() {\n const types: string[] = await traversal.client.getTypes(traversal.path)\n setState({\n types: types.filter((item) => !Config.DisabledTypes.includes(item)),\n })\n }\n\n const onSearchQuery = (event: React.FormEvent<FilterFormElement>) => {\n event.preventDefault()\n setLocation({\n q: event.currentTarget.elements.filterInput.value,\n tab: 'Items',\n page: 0,\n })\n }\n\n const onSearchByType = (typeText: string) => {\n if (typeText && typeText !== '') {\n setLocation({ type: typeText, tab: 'Items', page: 0 })\n } else {\n del('type')\n }\n }\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n value={searchValue || ''}\n onChange={(ev) => setSearchValue(ev.target.value)}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n id=\"filterInput\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <div className=\"level-item\">\n <Select\n appendDefault\n dataTest=\"selectFilterTypeTest\"\n classWrap=\"is-size-7\"\n options={(state.types || []).map((item) => ({\n text: item,\n value: item,\n }))}\n onChange={(value) => onSearchByType(value as string)}\n />\n </div>\n {traversal.hasPerm('guillotina.AddContent') && (\n <div className=\"level-item\">\n {AddButton !== undefined ? <AddButton /> : <CreateButton />}\n </div>\n )}\n </>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { Notification } from './ui/notification'\nimport { Delete } from './ui/delete'\n\nexport function Flash() {\n const Ctx = useTraversal()\n const { flash } = Ctx.state\n\n if (!flash.message) return null\n\n return (\n <Notification isColor={flash.type}>\n {flash.message}\n <Delete onClick={() => Ctx.clearFlash()} />\n </Notification>\n )\n}\n","import React, { useState } from 'react'\nimport { useLocation } from '../hooks/useLocation'\nimport { IndexSignature } from '../types/global'\n\nfunction FallbackTab({ title }: { title: string }) {\n return <div>Tab &apos;{title}&apos; not found</div>\n}\n\ninterface Props {\n tabs: IndexSignature\n currentTab: string\n rightToolbar?: React.ReactNode\n fallback?: React.ComponentType<{ title: string }>\n}\n\nexport function TabsPanel({\n tabs,\n currentTab,\n rightToolbar,\n fallback = FallbackTab,\n}: Props) {\n const [location, setLocation] = useLocation()\n\n currentTab = location.get('tab') || Object.keys(tabs)[0]\n /*if (!Object.keys(tabs).includes(currentTab)) {\n setLocation(defaultTab)\n currentTab = defaultTab\n }*/\n\n const [current, setTab] = useState(currentTab)\n const CurrentComp = tabs[current] || fallback\n\n React.useEffect(() => {\n if (Object.keys(tabs).includes(currentTab)) {\n setTab(currentTab)\n // setLocation({tab: currentTab})\n }\n }, [currentTab, tabs])\n\n const changeTab = (tab: string) => {\n setLocation({ tab: tab })\n }\n\n return (\n <div className=\"container\">\n <div className=\"level is-flex-wrap-wrap\">\n <div className=\"level-left mb-4\">\n <div className=\"tabs\">\n <ul>\n {Object.keys(tabs).map((tab) => (\n <li\n className={\n 'is-size-7 ' + (tab === current ? 'is-active' : '')\n }\n key={tab}\n >\n <a\n data-test={`tabTest-${tab.toLowerCase()}`}\n onClick={() => changeTab(tab)}\n >\n {tab}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </div>\n {rightToolbar && <div className=\"level-right\">{rightToolbar}</div>}\n </div>\n <div className=\"container\">\n <CurrentComp title={current} />\n </div>\n </div>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { ContextToolbar } from '../components/context_toolbar'\nimport { PanelItems } from '../components/panel/items'\nimport { PanelActions } from '../components/panel/actions'\nimport { useTraversal } from '../contexts'\nimport { PanelProperties } from '../components/panel/properties'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\n\nconst tabs = {\n Items: PanelItems,\n Properties: PanelProperties,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Items: 'guillotina.ViewContent',\n Properties: 'guillotina.ViewContent',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function FolderCtx() {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n\n return (\n <TabsPanel\n tabs={calculated}\n currentTab=\"Items\"\n rightToolbar={<ContextToolbar />}\n />\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { useTraversal } from '../contexts'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\nimport { PanelProperties } from '../components/panel/properties'\nimport { PanelActions } from '../components/panel/actions'\n\nconst tabs = {\n Properties: PanelProperties,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Properties: 'guillotina.ViewContent',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function ItemCtx() {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n\n return <TabsPanel tabs={calculated} currentTab=\"Properties\" />\n}\n","import { Item } from '../components/item'\nimport { ItemTitle } from '../components/item'\nimport { Button } from '../components/input/button'\nimport { useState } from 'react'\nimport { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { Form } from '../components/input/form'\nimport { Input } from '../components/input/input'\nimport { defineMessages, useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { GuillotinaApplication, GuillotinaDatabase } from '../types/guillotina'\n\nexport function ApplicationCtx() {\n const intl = useIntl()\n const traversal = useTraversal()\n const appContext = traversal.state.context as GuillotinaApplication\n const { databases } = appContext\n return (\n <>\n <h3>\n {intl.formatMessage({\n id: 'databases',\n defaultMessage: 'Databases',\n })}\n </h3>\n <div className=\"container\">\n <ItemTitle title=\"Objects\" />\n <table>\n <tbody>\n {databases.map((db) => (\n <Item\n item={{ id: db, path: `/${db}/` }}\n key={db}\n icon={'fas fa-database'}\n />\n ))}\n </tbody>\n </table>\n </div>\n </>\n )\n}\n\nexport function DatabaseCtx() {\n const traversal = useTraversal()\n const { containers } = traversal.state.context as GuillotinaDatabase\n const { path } = traversal.state\n return (\n <>\n <div className=\"container\">\n <ItemTitle title=\"Containers\" actions={<CreateContainer />} />\n <table className=\"table is-fullwidth is-hoverable\">\n <tbody>\n {containers.map((db) => (\n <Item\n item={{ id: db, path: `${path}${db}/` }}\n key={db}\n icon={'fas fa-archive'}\n />\n ))}\n </tbody>\n </table>\n </div>\n </>\n )\n}\n\nexport function CreateContainer() {\n const intl = useIntl()\n const [isActive, setActive] = useState(false)\n\n return (\n <>\n <ModalAddContainer isActive={isActive} setActive={setActive} />\n <button\n className=\"button is-warning is-pulled-right\"\n onClick={() => setActive(true)}\n >\n <span className=\"icon is-small\">\n <i className=\"fas fa-plus\"></i>\n </span>\n <span>{intl.formatMessage(genericMessages.create)}</span>\n </button>\n </>\n )\n}\n\nexport const messages = defineMessages({\n add_container: {\n id: 'add_container',\n defaultMessage: 'Add Container',\n },\n container_created: {\n id: 'container_created',\n defaultMessage: 'Container Created',\n },\n})\n\ninterface ModalAddContainerProps {\n isActive: boolean\n setActive: (value: boolean) => void\n}\nfunction ModalAddContainer({ isActive, setActive }: ModalAddContainerProps) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const [isLoading, setLoading] = useState(false)\n const [idField, setId] = useState('')\n const [error, setError] = useState<string | undefined>(undefined)\n\n async function createContainer() {\n setLoading(true)\n const data = {\n '@type': 'Container',\n id: idField,\n }\n try {\n const res = await Ctx.client.createObject(Ctx.path, data)\n const result = await res.json()\n if (res.status === 200) {\n Ctx.refresh()\n setId('')\n setLoading(false)\n setActive(false)\n Ctx.flash(intl.formatMessage(messages.container_created), 'primary')\n } else {\n setId('')\n setLoading(false)\n setError(result.message)\n }\n } catch {\n setError('Error-submitting-form')\n setLoading(false)\n }\n }\n\n return (\n <Modal isActive={isActive} setActive={setActive}>\n <Form\n onSubmit={createContainer}\n title={intl.formatMessage(messages.add_container)}\n error={error}\n >\n <Input\n required\n placeholder=\"Container Name\"\n onChange={(v) => {\n setId(v)\n }}\n value={idField}\n loading={isLoading}\n />\n <Button loading={isLoading}>\n {intl.formatMessage(messages.add_container)}\n </Button>\n </Form>\n </Modal>\n )\n}\n","import { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\ninterface Props {\n title: string\n}\nexport function PanelNotImplemented(props: Props) {\n const intl = useIntl()\n return (\n <div className=\"container\">\n <h2 className=\"title\">{props.title}</h2>\n <p>{intl.formatMessage(genericMessages.not_implemented)}</p>\n </div>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { ContextToolbar } from '../components/context_toolbar'\nimport { PanelItems } from '../components/panel/items'\nimport { PanelActions } from '../components/panel/actions'\nimport { PanelAddons } from '../components/panel/addons'\nimport { useTraversal } from '../contexts'\nimport { PanelNotImplemented } from './base'\nimport { PanelPermissions } from '../components/panel/permissions'\nimport { PanelBehaviors } from '../components/panel/behaviors'\n\nconst tabs = {\n Items: PanelItems,\n Addons: PanelAddons,\n Registry: PanelNotImplemented,\n Behaviors: PanelBehaviors,\n Permissions: PanelPermissions,\n Actions: PanelActions,\n}\n\nconst tabsPermissions = {\n Items: 'guillotina.ViewContent',\n Addons: 'guillotina.ManageAddons',\n Registry: 'guillotina.ReadConfiguration',\n Behaviors: 'guillotina.ModifyContent',\n Permissions: 'guillotina.SeePermissions',\n}\n\nexport function ContainerCtx() {\n const ctx = useTraversal()\n const calculated = ctx.filterTabs(tabs, tabsPermissions)\n return (\n <TabsPanel\n tabs={calculated}\n currentTab=\"Items\"\n rightToolbar={<ContextToolbar />}\n />\n )\n}\n","import { FormBuilder } from '../components/input/form_builder'\nimport { useIntl } from 'react-intl'\nimport { IndexSignature } from '../types/global'\n\ninterface Props {\n children: React.ReactNode\n onSubmit: (data: IndexSignature) => void\n actionName: string\n formData?: IndexSignature\n exclude?: string[]\n remotes?: IndexSignature\n submitButton?: boolean\n}\nexport const UserForm = ({\n children,\n actionName,\n onSubmit,\n formData,\n exclude,\n remotes,\n submitButton,\n}: Props) => {\n const intl = useIntl()\n\n const schema = {\n $schema: '',\n title: '',\n type: 'object',\n definitions: {},\n required: ['username', 'password'],\n properties: {\n username: {\n type: 'string',\n title: intl.formatMessage({\n id: 'username',\n defaultMessage: 'Username',\n }),\n },\n email: {\n type: 'string',\n title: intl.formatMessage({\n id: 'email',\n defaultMessage: 'Email',\n }),\n widget: 'email',\n },\n name: {\n type: 'string',\n title: intl.formatMessage({\n id: 'name',\n defaultMessage: 'Name',\n }),\n },\n password: {\n type: 'string',\n title: intl.formatMessage({\n id: 'password',\n defaultMessage: 'Password',\n }),\n widget: 'password',\n },\n disabled: {\n type: 'boolean',\n title: 'Disabled',\n },\n },\n }\n\n return (\n <FormBuilder\n schema={schema}\n actionName={actionName}\n onSubmit={onSubmit}\n formData={formData}\n exclude={exclude}\n remotes={remotes}\n submitButton={submitButton}\n >\n {children}\n </FormBuilder>\n )\n}\n","/*\n This hook allows to bind (remote) fields on the DOM\n to a form generated with Formbuilder.\n You can link whatever field you want...\n\n const [remoteFields, updateRemoteField] = useRemoteField({widget_1: ['a', 'b']})\n\n <Form remotes={remoteFields} onSubmit={ev => console.log(ev)}>\n <Input />\n </Form>\n\n <Widget onChange={updateRemoteField('widgte_1')}>\n\n This will add the values from a remote field into the desired widget\n\n*/\n\nimport { useState } from 'react'\nimport { IndexSignature } from '../types/global'\n\nexport const useRemoteField = (\n initial: IndexSignature<string[]>\n): [IndexSignature<string[]>, (name: string) => (value: string[]) => void] => {\n const [remotes, setRemote] = useState(initial)\n\n const updateRemote = (name: string) => (value: string[]) => {\n setRemote({\n ...remotes,\n [name]: value,\n })\n }\n\n return [remotes, updateRemote]\n}\n","import { TabsPanel } from '../components/tabs'\nimport { PanelItems } from '../components/panel/items'\nimport { useTraversal } from '../contexts'\nimport { UserForm } from '../forms/users'\nimport { formatDate } from '../lib/utils'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { TagsWidget } from '../components/widgets/tags'\nimport { Icon } from '../components/ui/icon'\nimport { Button } from '../components/input/button'\nimport { useRemoteField } from '../hooks/useRemoteField'\nimport { useLocation } from '../hooks/useLocation'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { useEffect, useRef, useState } from 'react'\nimport { GuillotinaUser, SearchItem } from '../types/guillotina'\nimport { FilterFormElement, IndexSignature } from '../types/global'\n\nconst tabs = {\n Users: PanelItems,\n}\n\nexport function UsersToolbar() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const ref = useRef<HTMLInputElement>(null)\n const [location, setLocation] = useLocation()\n const searchText = location.get('q')\n\n const onSearchQuery = (event: React.FormEvent<FilterFormElement>) => {\n event.preventDefault()\n setLocation({ q: event.currentTarget.elements.filterInput.value, page: 0 })\n }\n\n // cleanup form on state.search change\n useEffect(() => {\n if (ref.current && (!searchText || searchText === '')) {\n ref.current.value = ''\n }\n }, [searchText])\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n ref={ref}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n id=\"filterInput\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <button\n className=\"button is-primary\"\n onClick={() => Ctx.doAction('addItem', { type: 'User' })}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <Icon icon=\"fas fa-user\" />\n <span>{intl.formatMessage(genericMessages.add_user)}</span>\n </button>\n </>\n )\n}\n\nexport function UsersCtx() {\n return (\n <TabsPanel tabs={tabs} currentTab=\"Users\" rightToolbar={<UsersToolbar />} />\n )\n}\n\ninterface State {\n roles: string[]\n groups: {\n value: string\n text: string\n }[]\n}\nexport function UserCtx() {\n const intl = useIntl()\n const { Ctx, patch, loading } = useCrudContext()\n\n const [state, setState] = useState<State>({ roles: [], groups: [] })\n\n const userDataContext = Ctx.context as GuillotinaUser\n const fields = {\n user_groups: [],\n user_roles: userDataContext.user_roles,\n }\n\n const [remotes, updateRemote] = useRemoteField(fields)\n\n useEffect(() => {\n async function getRolesAndGroups() {\n const [requestGetGroups, requestGetRoles] = await Promise.all([\n Ctx.client.search<SearchItem>(Ctx.path, { type_name: 'Group' }, true),\n Ctx.client.getRoles(Ctx.path),\n ])\n\n const groups = requestGetGroups\n let roles = []\n\n if (requestGetRoles.ok) {\n roles = await requestGetRoles.json()\n }\n\n setState({\n roles: roles,\n groups: groups.items.map((item) => ({\n value: item.id,\n text: item['@name'],\n })),\n })\n }\n getRolesAndGroups()\n }, [])\n\n const updateObject = async (data: IndexSignature) => {\n Ctx.apply(data)\n const { isError, errorMessage } = await patch(data)\n if (isError) {\n Ctx.flash(\n intl.formatMessage(genericMessages.failed_to_update, {\n error: errorMessage,\n }),\n 'danger'\n )\n } else {\n Ctx.flash(\n intl.formatMessage({\n id: 'user_updated',\n defaultMessage: 'User updated',\n }),\n 'primary'\n )\n Ctx.refresh()\n }\n }\n\n return (\n <div className=\"container\">\n <h2 className=\"title is-size-4\">\n <Icon icon=\"fas fa-user\"></Icon>\n &nbsp;\n {intl.formatMessage({\n id: 'user',\n defaultMessage: 'User',\n })}\n </h2>\n\n <hr />\n <div className=\"columns\">\n <div className=\"column\">\n <div className=\"container user-props\">\n <p>\n <label>\n {intl.formatMessage({\n id: 'username',\n defaultMessage: 'Username',\n })}\n :{' '}\n </label>{' '}\n {userDataContext.username} ({userDataContext.email})\n </p>\n <p>\n <label>\n {' '}\n {intl.formatMessage({\n id: 'creation_date',\n defaultMessage: 'Creation Date',\n })}\n :{' '}\n </label>{' '}\n {formatDate(userDataContext.creation_date)}\n </p>\n <p>\n <label>\n {' '}\n {intl.formatMessage({\n id: 'modification_date',\n defaultMessage: 'Modification Date',\n })}\n :{' '}\n </label>{' '}\n {formatDate(userDataContext.modification_date)}\n </p>\n <Button\n className=\"is-size-7 is-info\"\n onClick={() => {\n Ctx.doAction('changePassword')\n }}\n >\n {intl.formatMessage({\n id: 'change_password',\n defaultMessage: 'Change Password',\n })}\n </Button>\n </div>\n <hr />\n <UserForm\n actionName=\"Save\"\n onSubmit={(ev) => updateObject(ev)}\n formData={userDataContext}\n exclude={['password']}\n remotes={remotes}\n submitButton={false}\n >\n <Button loading={loading} dataTest=\"formUserTestBtnSubmit\">\n {intl.formatMessage(genericMessages.save)}\n </Button>\n </UserForm>\n </div>\n <div className=\"column\">\n <TagsWidget\n onChange={updateRemote('user_groups')}\n items={userDataContext.user_groups}\n title=\"Groups\"\n noData={intl.formatMessage({\n id: 'there_is_no_groups_for_this_user',\n defaultMessage: 'There is no groups for this user',\n })}\n available={state.groups}\n />\n <hr />\n <TagsWidget\n onChange={updateRemote('user_roles')}\n items={remotes.user_roles}\n title=\"Roles\"\n noData={intl.formatMessage({\n id: 'the_user_doesnt_have_any_role',\n defaultMessage: \"The user doesn't have any role\",\n })}\n available={state.roles.map((x) => ({ value: x, text: x }))}\n />\n </div>\n </div>\n </div>\n )\n}\n","import { Fragment } from 'react'\nimport { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { getNewId } from '../lib/utils'\nimport { ItemModel } from '../models'\nimport { IndexSignature } from '../types/global'\n\nconst withError = (res: Response) => res.status >= 300\n\ninterface Props {\n items: Array<ItemModel>\n}\nexport function CopyItems(props: Props) {\n const Ctx = useTraversal()\n const { items = [] } = props\n\n async function copyItems(path: string, form: IndexSignature) {\n const responses = await Promise.all(\n items.map((item, i) => {\n const input = form[i + 1] || {}\n return Ctx.client.post(`${Ctx.path}${item.id}/@duplicate`, {\n destination: path,\n new_id: input.value || getNewId(item.id),\n })\n })\n )\n\n Ctx.refresh()\n Ctx.cancelAction()\n\n if (responses.every(withError)) {\n Ctx.flash(`Oops! Items can't be copied to ${path}`, 'danger')\n return\n }\n\n if (responses.some(withError)) {\n Ctx.flash(`Some items are not copied correctly!`, 'warning')\n return\n }\n\n Ctx.flash(`Items copied!`, 'success')\n }\n\n return (\n <PathTree\n title=\"Copy to...\"\n defaultPath={Ctx.client.clearContainerFromPath(Ctx.path)}\n onConfirm={copyItems}\n onCancel={() => Ctx.cancelAction()}\n >\n {items.map((item) => (\n <Fragment key={item.id}>\n <small style={{ display: 'block', marginTop: 20 }}>\n {`New id for \"${item.id}\" copy`}\n </small>\n <input\n type=\"text\"\n className=\"input\"\n data-test={`inputCopyIdTest-${item.id}`}\n defaultValue={getNewId(item.id)}\n />\n </Fragment>\n ))}\n &nbsp;\n </PathTree>\n )\n}\n","import { Fragment } from 'react'\nimport { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { getNewId } from '../lib/utils'\nimport { IndexSignature } from '../types/global'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\ninterface Props {\n item: GuillotinaCommonObject\n}\n\nexport function CopyItem(props: Props) {\n const Ctx = useTraversal()\n const { post } = useCrudContext()\n const { item } = props\n\n async function copyItem(path: string, form: IndexSignature) {\n const input = form[1] || {}\n const { isError, errorMessage } = await post(\n {\n destination: path,\n new_id: input.value || getNewId(item['@name']),\n },\n '@duplicate'\n )\n\n if (!isError) {\n Ctx.flash(`Field copied!`, 'success')\n } else {\n Ctx.flash(`Failed to copy item!: ${errorMessage}`, 'danger')\n }\n Ctx.refresh()\n Ctx.cancelAction()\n }\n\n return (\n <PathTree\n title=\"Copy to...\"\n defaultPath={`/${item['parent']['@name'] ?? '/'}`}\n onConfirm={copyItem}\n onCancel={() => Ctx.cancelAction()}\n >\n <Fragment>\n <small style={{ display: 'block', marginTop: 20 }}>\n {`New id for \"${item['@name']}\" copy`}\n </small>\n <input\n type=\"text\"\n className=\"input\"\n data-test={`inputCopyIdTest-${item['@name']}`}\n defaultValue={getNewId(item['@name'])}\n />\n </Fragment>\n </PathTree>\n )\n}\n","import { PathTree } from '../components/modal'\nimport { useTraversal } from '../contexts'\nimport { ItemModel } from '../models'\n\nconst withError = (res: Response) => res.status >= 300\n\ninterface Props {\n items: ItemModel[]\n}\nexport function MoveItems(props: Props) {\n const Ctx = useTraversal()\n const { items = [] } = props\n\n async function moveItems(path: string) {\n const responses = await Promise.all(\n items.map((item) => {\n return Ctx.client.post(`${Ctx.path}${item.id}/@move`, {\n destination: path,\n new_id: item.id,\n })\n })\n )\n\n Ctx.refresh()\n Ctx.cancelAction()\n\n if (responses.every(withError)) {\n Ctx.flash(`Oops! Items can't be moved to ${path}`, 'danger')\n return\n }\n\n if (responses.some(withError)) {\n Ctx.flash(`Some items are not moved correctly!`, 'warning')\n return\n }\n\n Ctx.flash(`Items moved!`, 'success')\n }\n\n return (\n <PathTree\n title=\"Move to...\"\n onConfirm={moveItems}\n onCancel={() => Ctx.cancelAction()}\n />\n )\n}\n","import { PathTree } from '../components/modal'\nimport { useGuillotinaClient, useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { useLocation } from '../hooks/useLocation'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\ninterface Props {\n item: GuillotinaCommonObject\n}\n\nexport function MoveItem(props: Props) {\n const Ctx = useTraversal()\n const { post } = useCrudContext<{ '@url': string }>()\n const [, navigate] = useLocation()\n const client = useGuillotinaClient()\n const { item } = props\n\n async function moveItem(path: string) {\n const { isError, errorMessage, result } = await post(\n {\n destination: path,\n new_id: item['@name'],\n },\n '@move'\n )\n\n if (!isError) {\n navigate({\n path: `/${client.cleanPath(result!['@url'])}/`,\n tab: '',\n })\n Ctx.flash(`Field moved!`, 'success')\n } else {\n Ctx.flash(`Failed to move item!: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n }\n\n return (\n <PathTree\n title=\"Move to...\"\n onConfirm={moveItem}\n onCancel={() => Ctx.cancelAction()}\n />\n )\n}\n","import { Confirm } from '../components/modal'\nimport { useGuillotinaClient, useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { useLocation } from '../hooks/useLocation'\nimport { GuillotinaCommonObject } from '../types/guillotina'\n\ninterface Props {\n item: GuillotinaCommonObject\n}\n\nexport function RemoveItem(props: Props) {\n const Ctx = useTraversal()\n const { del, loading } = useCrudContext()\n const [, navigate] = useLocation()\n const client = useGuillotinaClient()\n const { item } = props\n\n async function removeItem() {\n const { isError, errorMessage } = await del()\n\n if (!isError) {\n navigate({\n path: `/${client.cleanPath(item['parent']['@id'])}/`,\n tab: '',\n })\n Ctx.flash(`Field removed!`, 'success')\n } else {\n Ctx.flash(`Failed to delete item!: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n }\n\n return (\n <Confirm\n loading={loading}\n onCancel={() => Ctx.cancelAction()}\n onConfirm={removeItem}\n message={`Are you sure to remove: ${item['@name']}?`}\n />\n )\n}\n","import { useTraversal } from '../contexts'\nimport { Modal } from '../components/modal'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { Input } from '../components/input/input'\nimport { Button } from '../components/input/button'\nimport { Form } from '../components/input/form'\nimport { useState } from 'react'\nimport { IndexSignature } from '../types/global'\n\nconst initial = {\n pass1: '',\n pass2: '',\n}\n\nexport function ChangePassword() {\n const [state, setState] = useState(initial)\n const [perror, setPerror] = useState<string | undefined>(undefined)\n\n const Ctx = useTraversal()\n const { patch } = useCrudContext()\n\n const setActive = () => {\n Ctx.cancelAction()\n }\n\n async function doSubmit() {\n if (state.pass1 === '') {\n setPerror('provide a password')\n return\n }\n\n if (state.pass1 !== state.pass2) {\n setPerror(\"passwords doesn't match\")\n return\n }\n\n setPerror(undefined)\n\n const form = {\n password: state.pass1,\n }\n\n const { isError, errorMessage } = await patch(form)\n if (!isError) {\n Ctx.flash('Password Changed', 'success')\n } else {\n Ctx.flash(`An error has ocurred: ${errorMessage}`, 'danger')\n }\n\n Ctx.cancelAction()\n Ctx.refresh()\n }\n\n const setPass = (field: string) => (val: string) => {\n const n: IndexSignature = {}\n n[field] = val\n setState((state) => ({ ...state, ...n }))\n setPerror(undefined)\n }\n\n return (\n <Modal isActive={true} setActive={setActive}>\n <Form onSubmit={doSubmit} title=\"Change Password\">\n {perror && (\n <div className=\"notification is-danger is-size-7\">\n <button className=\"delete\"></button>\n {perror}\n </div>\n )}\n <Input\n id=\"pass\"\n placeholder=\"New Password\"\n type=\"password\"\n value={state.pass1}\n onChange={setPass('pass1')}\n />\n\n <Input\n id=\"pass\"\n placeholder=\"Repeat Password\"\n type=\"password\"\n value={state.pass2}\n onChange={setPass('pass2')}\n />\n <Button>Change</Button>\n </Form>\n </Modal>\n )\n}\n","import { useState } from 'react'\nimport { Input } from '../components/input/input'\nimport { Form } from '../components/input/form'\nimport { stringToSlug } from '../lib/helpers'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\n\ninterface Props {\n onSubmit: (data: { title: string; id: string }) => void\n actionName?: string\n title?: string\n dataTest?: string\n loading?: boolean\n}\nexport function BaseForm({\n onSubmit,\n actionName,\n title,\n dataTest,\n loading,\n}: Props) {\n const intl = useIntl()\n const [name, setName] = useState('')\n const [id, setId] = useState('')\n const [error, setError] = useState<string | undefined>(undefined)\n\n const submit = () => {\n if (name === '') {\n setError(intl.formatMessage(genericMessages.field_is_required))\n return\n }\n onSubmit({ title: name, id })\n }\n\n const setTitle = (value: string) => {\n setId(stringToSlug(value))\n setName(value)\n }\n\n return (\n <Form title={title} onSubmit={submit} dataTest={dataTest}>\n <Input\n id=\"title\"\n placeholder={intl.formatMessage(genericMessages.title)}\n required\n value={name}\n onChange={setTitle}\n autofocus\n error={error}\n dataTest=\"titleTestInput\"\n />\n\n <Input\n id=\"id\"\n placeholder=\"Id\"\n value={id}\n onChange={setId}\n dataTest=\"idTestInput\"\n />\n\n <div className=\"level level-right\">\n <button\n type=\"submit\"\n className={`button is-success ${loading ? 'is-loading' : ''}`}\n data-test=\"formBaseBtnTestSubmit\"\n >\n {actionName || intl.formatMessage(genericMessages.add)}\n </button>\n </div>\n </Form>\n )\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useTraversal } from '../../contexts'\nimport { EditableField } from '../fields/editableField'\nimport { Table } from '../ui'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../../locales/generic_messages'\n\nconst editableFields = [\n 'title',\n 'description',\n 'effective_date',\n 'expiration_date',\n]\n\ninterface Props {\n properties: { [key: string]: any }\n values: { [key: string]: any }\n}\n\nexport function IDublinCore({ properties, values }: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n const modifyContent = Ctx.hasPerm('guillotina.ModifyContent')\n\n return (\n <Table\n headers={[\n intl.formatMessage(genericMessages.property),\n intl.formatMessage(genericMessages.value),\n ]}\n className=\"is-striped is-fullwidth is-size-7\"\n >\n {Object.keys(properties).map((key) => (\n <tr key={'dublin_' + key}>\n <td style={{ width: '150px' }} key={1}>\n {key}\n </td>\n <td key={2}>\n <EditableField\n field={key}\n value={values[key]}\n ns=\"guillotina.behaviors.dublincore.IDublinCore\"\n schema={properties[key]}\n modifyContent={modifyContent && editableFields.includes(key)}\n />\n </td>\n </tr>\n ))}\n </Table>\n )\n}\n","import { TabsPanel } from '../components/tabs'\nimport { PanelItems } from '../components/panel/items'\nimport { useTraversal } from '../contexts'\nimport { useCrudContext } from '../hooks/useCrudContext'\nimport { Icon } from '../components/ui/icon'\nimport { useEffect, useRef } from 'react'\nimport { useState } from 'react'\nimport { Select } from '../components/input/select'\nimport { SearchInput } from '../components/input/search_input'\nimport { Tag } from '../components/ui/tag'\nimport { parser } from '../lib/search'\nimport { EditableField } from '../components/fields/editableField'\nimport { useLocation } from '../hooks/useLocation'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { FilterFormElement } from '../types/global'\nimport { GuillotinaGroup } from '../types/guillotina'\nimport { processResponse } from '../lib/processResponse'\n\nconst tabs = {\n Groups: PanelItems,\n}\n\nexport function GroupToolbar() {\n const intl = useIntl()\n const Ctx = useTraversal()\n const ref = useRef<HTMLInputElement>(null)\n const [location, setLocation] = useLocation()\n const searchText = location.get('q')\n\n const onSearchQuery = (event: React.FormEvent<FilterFormElement>) => {\n event.preventDefault()\n setLocation({ q: event.currentTarget.elements.filterInput.value, page: 0 })\n }\n\n // cleanup form on state.search change\n useEffect(() => {\n if (ref.current && (!searchText || searchText === '')) {\n ref.current.value = ''\n }\n }, [searchText])\n\n return (\n <>\n <div className=\"level-item\">\n <form action=\"\" className=\"form\" onSubmit={onSearchQuery}>\n <div className=\"field has-addons\">\n <div className=\"control\">\n <input\n ref={ref}\n type=\"text\"\n className=\"input is-size-7\"\n placeholder={intl.formatMessage(genericMessages.search)}\n data-test=\"inputFilterTest\"\n id=\"filterInput\"\n />\n </div>\n <div className=\"control\">\n <button\n className=\"button has-background-grey-lighter is-size-7\"\n type=\"submit\"\n data-test=\"btnInputFilter\"\n >\n <Icon icon=\"fas fa-search\" />\n </button>\n </div>\n </div>\n </form>\n </div>\n <button\n className=\"button is-primary\"\n onClick={() => Ctx.doAction('addItem', { type: 'Group' })}\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\"\n >\n <Icon icon=\"fas fa-users\" />\n <span>\n {intl.formatMessage({\n id: 'add_group',\n defaultMessage: 'Add Group',\n })}\n </span>\n </button>\n </>\n )\n}\n\nexport function GroupsCtx() {\n return (\n <TabsPanel\n tabs={tabs}\n currentTab=\"Groups\"\n rightToolbar={<GroupToolbar />}\n />\n )\n}\n\nconst sortParsed = parser(`_sort_asc=id`)\nconst searchParsed = parser('type_name=User')\n\nexport function GroupCtx() {\n const intl = useIntl()\n const { Ctx, patch } = useCrudContext()\n const [roles, setRoles] = useState<{ text: string; value: string }[]>([])\n const groupDataContext = Ctx.context as GuillotinaGroup\n\n useEffect(() => {\n async function getRoles() {\n const requestGetRoles = await Ctx.client.getRoles(Ctx.path)\n let roles = []\n\n if (requestGetRoles.ok) {\n roles = (await requestGetRoles.json()).map((role: string) => ({\n text: role,\n value: role,\n }))\n }\n setRoles(roles)\n }\n getRoles()\n }, [])\n\n const handleResponse = async (\n isError: boolean,\n message: string,\n errorMessage: string\n ) => {\n if (!isError) {\n Ctx.flash(message, 'success')\n Ctx.refresh()\n } else {\n Ctx.flash(\n intl.formatMessage(genericMessages.failed_to_update, {\n error: errorMessage,\n }),\n 'danger'\n )\n }\n }\n\n const addRole = async (role: string) => {\n const { isError, errorMessage } = await patch({\n user_roles: groupDataContext.user_roles.concat(role),\n })\n handleResponse(\n !!isError,\n intl.formatMessage(\n {\n id: 'role_added_to_group',\n defaultMessage: 'Role {role} added to group',\n },\n { role }\n ),\n errorMessage ?? ''\n )\n }\n\n const removeRole = async (role: string) => {\n const { isError, errorMessage } = await patch({\n user_roles: groupDataContext.user_roles.filter((r) => r !== role),\n })\n handleResponse(\n !!isError,\n intl.formatMessage(\n {\n id: 'role_removed_from_group',\n defaultMessage: 'Role {role} removed from group',\n },\n { role }\n ),\n errorMessage ?? ''\n )\n }\n\n const addUser = async (newUserId: string) => {\n const data: { [key: string]: boolean } = {}\n groupDataContext.users.forEach((user) => {\n data[user] = true\n })\n data[newUserId] = true\n const response = await Ctx.client.rest.patch(\n `${Ctx.containerPath}@groups/${Ctx.context['@name']}`,\n { users: data }\n )\n const { isError, errorMessage } = await processResponse(response)\n handleResponse(\n isError,\n intl.formatMessage(\n {\n id: 'user_added_to_group',\n defaultMessage: 'User {user} added to group',\n },\n { user: newUserId }\n ),\n errorMessage ?? ''\n )\n }\n\n const removeUser = async (userToRemove: string) => {\n const data: { [key: string]: boolean } = {}\n groupDataContext.users.forEach((user: string) => {\n data[user] = userToRemove !== user\n })\n const response = await Ctx.client.rest.patch(\n `${Ctx.containerPath}@groups/${Ctx.context['@name']}`,\n { users: data }\n )\n const { isError, errorMessage } = await processResponse(response)\n handleResponse(\n isError,\n intl.formatMessage(\n {\n id: 'user_removed_from_group',\n defaultMessage: 'User {user} removed from group',\n },\n { user: userToRemove }\n ),\n errorMessage ?? ''\n )\n }\n\n return (\n <div className=\"container group-view\">\n <h2 className=\"title is-size-4\">\n <Icon icon=\"fas fa-users\"></Icon>\n <span>\n &nbsp;\n {intl.formatMessage({\n id: 'group',\n defaultMessage: 'Group',\n })}\n </span>\n </h2>\n <hr />\n <div className=\"columns\">\n <div className=\"column is-4\">\n <label className=\"label\">\n {intl.formatMessage(genericMessages.title)}{' '}\n </label>\n <EditableField\n field=\"title\"\n modifyContent\n value={Ctx.context.title}\n />\n </div>\n <div className=\"column is-4 is-size-7\">\n <h3 className=\"title is-size-6\">\n {intl.formatMessage({\n id: 'roles',\n defaultMessage: 'Roles',\n })}\n </h3>\n <p>\n {intl.formatMessage({\n id: 'add_role',\n defaultMessage: 'Add a Role',\n })}\n </p>\n <Select\n options={roles.filter(\n (role) => !groupDataContext.user_roles.includes(role.value)\n )}\n appendDefault\n onChange={(value) => addRole(value as string)}\n />\n <hr />\n {groupDataContext.user_roles.map((urole) => (\n <p className=\"control\" key={`roles_${urole}`}>\n <Tag\n name={urole}\n onRemove={() => removeRole(urole)}\n size=\"is-small\"\n id={`roles_${urole}`}\n />\n </p>\n ))}\n </div>\n <div className=\"column is-4 is-size-7\">\n <h3 className=\"title is-size-6\">\n {intl.formatMessage({\n id: 'users',\n defaultMessage: 'Users',\n })}\n </h3>\n <p>{intl.formatMessage(genericMessages.add_user)}</p>\n <SearchInput\n path={`${Ctx.containerPath}/users/`}\n qs={[...searchParsed, ...sortParsed]}\n traversal={Ctx}\n onChange={addUser}\n btnClass=\"is-small\"\n />\n <hr />\n {groupDataContext.users.map((user) => (\n <p className=\"control\" key={`user_${user}`}>\n <Tag\n name={user}\n onRemove={() => removeUser(user)}\n size=\"is-small\"\n id={`user_${user}`}\n />\n </p>\n ))}\n </div>\n </div>\n </div>\n )\n}\n","import { Component, ErrorInfo } from 'react'\nimport { IntlShape, injectIntl } from 'react-intl'\n\nconst style = { color: '#F44336', fontSize: 20, paddingBottom: 20 }\n\nclass ErrorBoundaryComponent extends Component<\n { intl: IntlShape; children: React.ReactNode },\n { hasError: boolean; errorMsg: string; errorStack: string | null | undefined }\n> {\n state = {\n hasError: false,\n errorMsg: '',\n errorStack: '',\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n this.setState({\n hasError: true,\n errorMsg: error.message,\n errorStack: errorInfo.componentStack,\n })\n }\n\n render() {\n const { hasError, errorMsg, errorStack } = this.state\n\n if (hasError) {\n return (\n <div className=\"box main-panel\">\n <div style={style}>\n {this.props.intl.formatMessage({\n id: 'something_went_wrong',\n defaultMessage: 'Something went wrong.',\n })}\n </div>\n {errorMsg && (\n <p>\n <b>{errorMsg}</b>\n </p>\n )}\n {errorStack && <p>{errorStack}</p>}\n </div>\n )\n }\n\n return this.props.children\n }\n}\n\nexport const ErrorBoundary: React.ComponentType<{\n intl: IntlShape\n children: React.ReactNode\n}> = injectIntl(ErrorBoundaryComponent)\n","import { Icon } from './ui/icon'\nimport { useIntl } from 'react-intl'\n\nexport function NotAllowed() {\n const intl = useIntl()\n return (\n <div className=\"box not-allowed\">\n <h1 className=\"title has-text-danger\" style={{ fontSize: '4rem' }}>\n <Icon icon=\"fas fa-ban\" />\n </h1>\n <h1 className=\"title has-text-grey-darker\">\n {intl.formatMessage({\n id: 'not_allowed',\n defaultMessage: 'Not Allowed',\n })}\n </h1>\n </div>\n )\n}\n","import { Icon } from './ui/icon'\nimport { useIntl } from 'react-intl'\n\nexport function NotFound() {\n const intl = useIntl()\n return (\n <div className=\"box not-allowed\">\n <h1 className=\"title has-text-grey\" style={{ fontSize: '4rem' }}>\n <Icon icon=\"fas fa-dizzy\" />\n </h1>\n <h1 className=\"title has-text-grey-darker\">\n {intl.formatMessage({\n id: 'not_found',\n defaultMessage: '404. Not Found',\n })}\n </h1>\n </div>\n )\n}\n","import { useTraversal } from '../contexts'\nimport { useLocation } from '../hooks/useLocation'\n\nexport function Path() {\n const ctx = useTraversal()\n const [, navigate] = useLocation()\n\n const segments = ctx.path.replace(/\\/$/, '').split('/')\n const links = buildPaths(segments)\n\n if (segments.length === 1) {\n return null\n }\n\n return (\n <nav className=\"breadcrumb\" aria-label=\"breadcrumbs\">\n <ul>\n {segments.map((item, indx) => {\n const path = links[indx]\n const onClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (e.ctrlKey || e.metaKey) return\n e.preventDefault()\n navigate({ path }, true)\n }\n\n return indx === 0 ? (\n <li key={indx}>\n <a\n href={path}\n onClick={onClick}\n data-test={`breadcrumbItemTest-home`}\n >\n <span className=\"icon\">\n <i className=\"fas fa-home\"></i>\n </span>\n </a>\n </li>\n ) : (\n <li key={indx}>\n <a\n href={path}\n onClick={onClick}\n data-test={`breadcrumbItemTest-${item.toLowerCase()}`}\n >\n {item}\n </a>\n </li>\n )\n })}\n </ul>\n </nav>\n )\n}\n\nconst buildPaths = (segments: string[]) => {\n let current = ''\n const results: string[] = []\n segments.map((item, indx) => {\n if (indx === 0) {\n current += '/'\n } else {\n current += item + '/'\n }\n results.push(current)\n return item\n })\n return results\n}\n","import { FolderCtx } from '../views/folder'\nimport { ItemCtx } from '../views/item'\nimport { ApplicationCtx } from '../views/application'\nimport { DatabaseCtx } from '../views/application'\nimport { ContainerCtx } from '../views/container'\nimport { UsersCtx } from '../views/users'\nimport { UserCtx } from '../views/users'\nimport { CopyItems } from '../actions/copy_items'\nimport { CopyItem } from '../actions/copy_item'\nimport { MoveItems } from '../actions/move_items'\nimport { MoveItem } from '../actions/move_item'\nimport { RemoveItems } from '../actions/remove_items'\nimport { RemoveItem } from '../actions/remove_item'\nimport { AddItem } from '../actions/add_item'\nimport { ChangePassword } from '../actions/change_pass'\nimport { BaseForm } from '../forms/base'\nimport { UserForm } from '../forms/users'\nimport { IAttachment } from '../components/behaviors/iattachment'\nimport { IDublinCore } from '../components/behaviors/idublincore'\nimport { IMultiAttachment } from '../components/behaviors/imultiattachment'\nimport { IImageAttachment } from '../components/behaviors/iimageattachment'\nimport { IMultiImageAttachment } from '../components/behaviors/imultiimageattachment'\nimport { IMultiImageOrderedAttachment } from '../components/behaviors/imultiimageorderedattachment'\nimport { IWorkflow } from '../components/behaviors/iworkflow'\nimport { GroupCtx, GroupsCtx } from '../views/groups'\nimport { ErrorBoundary } from '../components/error_boundary'\nimport React from 'react'\nimport { NotAllowed } from '../components/notallowed'\nimport { NotFound } from '../components/notfound'\nimport { Path } from '../components/path'\nimport { EditComponent } from '../components/fields/editComponent'\nimport { RenderFieldComponent } from '../components/fields/renderField'\nimport {\n GuillotinaCommonObject,\n ItemColumn,\n RegistrySchema,\n} from '../types/guillotina'\n\nexport interface IRegistry {\n paths: {\n [key: string]: React.FC\n }\n views: {\n [key: string]: React.FC | React.ComponentType<any>\n }\n actions: {\n [key: string]: (props: any) => JSX.Element\n }\n forms: {\n [key: string]: (props: any) => JSX.Element\n }\n behaviors: {\n [key: string]: (props: any | undefined) => JSX.Element | null\n }\n itemsColumn: {\n [key: string]: () => ItemColumn[]\n }\n schemas: {\n [key: string]: RegistrySchema\n }\n properties: {\n [key: string]: React.FC\n }\n components: {\n [key: string]: (props: any) => React.ReactNode | null | undefined\n }\n searchEngineQueryParamsFunction: {\n [key: string]: string\n }\n fieldsToFilter: {\n [key: string]: string[]\n }\n defaultSortValue: {\n [key: string]: {\n direction: 'asc' | 'des'\n field: string\n }\n }\n}\nconst registry: IRegistry = {\n paths: {},\n views: {\n ErrorBoundary: ErrorBoundary,\n NotAllowed: NotAllowed,\n NotFound: NotFound,\n Application: ApplicationCtx,\n Database: DatabaseCtx,\n Container: ContainerCtx,\n UserManager: UsersCtx,\n User: UserCtx,\n Group: GroupCtx,\n GroupManager: GroupsCtx,\n Folder: FolderCtx,\n Item: ItemCtx,\n },\n actions: {\n addItem: AddItem,\n copyItems: CopyItems,\n copyItem: CopyItem,\n moveItems: MoveItems,\n moveItem: MoveItem,\n removeItems: RemoveItems,\n changePassword: ChangePassword,\n removeItem: RemoveItem,\n },\n forms: {\n UserManager: BaseForm,\n GroupManager: BaseForm,\n Folder: BaseForm,\n Item: BaseForm,\n User: UserForm,\n Group: BaseForm,\n },\n behaviors: {\n 'guillotina.behaviors.dublincore.IDublinCore': IDublinCore,\n 'guillotina.behaviors.attachment.IAttachment': IAttachment,\n 'guillotina.behaviors.attachment.IMultiAttachment': IMultiAttachment,\n 'guillotina.contrib.image.behaviors.IImageAttachment': IImageAttachment,\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment': IMultiImageAttachment,\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment': IMultiImageOrderedAttachment,\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior': IWorkflow,\n },\n itemsColumn: {},\n schemas: {},\n properties: {},\n components: {\n Path: Path,\n EditComponent: EditComponent,\n RenderFieldComponent: RenderFieldComponent,\n },\n searchEngineQueryParamsFunction: {\n PostreSQL: 'getQueryParamsPostresql',\n Elasticsearch: 'getQueryParamsElasticsearch',\n },\n fieldsToFilter: {\n UserManager: ['id', 'email', 'user_name'],\n },\n defaultSortValue: {},\n}\n\nconst get = (key: keyof IRegistry, param: string, fallback = undefined) => {\n if (registry[key]) return registry[key][param] || fallback\n return fallback\n}\n\nconst getComponent = (\n context: GuillotinaCommonObject | undefined,\n path: string,\n fallback = undefined\n) => {\n if (!context) return\n // console.log(\"Component for path\", path)\n // lookup by path\n if (registry.paths[path]) {\n return registry.paths[path]\n }\n // by type\n if (registry.views[context['@type']]) {\n return registry.views[context['@type']]\n }\n if (fallback) {\n return fallback\n }\n return defaultComponent(context)\n}\n\nconst getItemsColumn = (type: string) => {\n const funcCols = registry.itemsColumn[type]\n if (funcCols) {\n return funcCols()\n }\n return undefined\n}\n\nconst getView = (name: string) => {\n return registry.views[name]\n}\n\nconst getForm = (type: string, fallback: React.FC) => {\n return registry.forms[type] || fallback || BaseForm\n}\n\nconst getAction = (type: string, fallback?: React.FC) => {\n return registry.actions[type] || fallback\n}\n\nconst getBehavior = (type: string, fallback: React.FC) => {\n return registry.behaviors[type] || fallback\n}\n\nconst getProperties = (type: string) => {\n return registry.properties[type] || {}\n}\n\nconst getSchemas = (type: string): RegistrySchema => {\n return registry.schemas[type] || {}\n}\n\nconst getFieldsToFilter = (type: string, fallback: string[] = ['title']) => {\n return registry.fieldsToFilter[type] || fallback\n}\n\nconst getDefaultSortValue = (\n type: string,\n fallback = {\n key: 'id',\n direction: 'des',\n }\n) => {\n return registry.defaultSortValue[type] || fallback\n}\n\nexport const defaultComponent = (context: GuillotinaCommonObject) => {\n return context.is_folderish ? FolderCtx : ItemCtx\n}\n\nexport function useRegistry(data: IRegistry) {\n // if data is provided we need to merge it into actual registry\n const ref = React.useRef<unknown>()\n if (data && !ref.current) {\n ref.current = true\n Object.keys(data).map((key) => {\n const registryKey = key as keyof IRegistry\n registry[registryKey] = {\n ...registry[registryKey],\n ...data[registryKey],\n } as any\n })\n }\n\n return {\n registry,\n get,\n getForm,\n getComponent,\n getAction,\n getBehavior,\n getProperties,\n getItemsColumn,\n getFieldsToFilter,\n getDefaultSortValue,\n getSchemas,\n getView,\n }\n}\n\n/*\n\nconst registry = {\n paths: {\n \"/db/guillotina/tags/\": TagsContext\n },\n forms: {\n Tag: AddTagForm\n }\n}\n\n\n<guillotina registry={registry} />\n\n\n*/\n","import React from 'react'\nimport { useReducer } from 'react'\nimport { useEffect } from 'react'\nimport { Flash } from './flash'\nimport { TraversalProvider, useGuillotinaClient } from '../contexts'\nimport { useConfig } from '../hooks/useConfig'\nimport { IRegistry, useRegistry } from '../hooks/useRegistry'\nimport { useLocation } from '../hooks/useLocation'\nimport {\n GuillotinaGlobalState,\n GuillotinaReducerActionTypes,\n guillotinaReducer,\n} from '../reducers/guillotina'\nimport { initialState } from '../reducers/guillotina'\nimport { Loading } from './ui/loading'\nimport { IntlProvider } from 'react-intl'\nimport langCA from '../locales/compiled/ca.json'\nimport langES from '../locales/compiled/es.json'\nimport langEN from '../locales/compiled/en.json'\nimport { Auth } from '../lib/auth'\nimport { IndexSignature } from '../types/global'\n\nfunction loadLocaleData(locale: string) {\n switch (locale) {\n case 'ca':\n return langCA\n case 'es':\n return langES\n default:\n return langEN\n }\n}\n\ninterface GuillotinaProps {\n auth: Auth\n locale: string\n url: string\n config: IndexSignature\n registry: IRegistry\n}\nexport function Guillotina({ auth, locale, ...props }: GuillotinaProps) {\n const messages = loadLocaleData(locale)\n const url = props.url || 'http://localhost:8080' // without trailing slash\n const config = props.config || {}\n const client = useGuillotinaClient()\n\n const { Permissions } = useConfig(config)\n const registry = useRegistry(props.registry)\n // Location is cooked routing solution (only uses search params)\n const [location] = useLocation()\n\n // if there is no path provided just go to root\n const searchPath = location.get('path') || '/'\n if (searchPath && searchPath !== '') {\n initialState.path = searchPath\n }\n\n const [state, dispatch] = useReducer(guillotinaReducer, initialState)\n\n const { path, refresh } = state\n\n useEffect(() => {\n dispatch({\n type: GuillotinaReducerActionTypes.SET_PATH,\n payload: {\n path: searchPath,\n },\n })\n }, [searchPath])\n\n useEffect(() => {\n const initContext = async () => {\n const data = await client.getContext(path)\n if (data.status === 401) {\n dispatch({\n type: GuillotinaReducerActionTypes.SET_ERROR,\n payload: {\n errorStatus: 'notallowed',\n },\n })\n return\n } else if (data.status === 404) {\n dispatch({\n type: GuillotinaReducerActionTypes.SET_ERROR,\n payload: {\n errorStatus: 'notallowed',\n },\n })\n return\n }\n const context = await data.json()\n const pr = await client.canido(path, Permissions)\n const permissions = await pr.json()\n dispatch({\n type: GuillotinaReducerActionTypes.SET_CONTEXT,\n payload: { context, permissions },\n })\n }\n initContext()\n }, [path, refresh, client])\n\n const ErrorBoundary: React.ComponentType<{\n children: React.ReactNode\n }> = registry.getView('ErrorBoundary')\n const NotAllowed = registry.getView('NotAllowed')\n const NotFound = registry.getView('NotFound')\n const Path = registry.get('components', 'Path') as React.ComponentType\n\n const contextData = {\n url,\n client,\n auth,\n state,\n dispatch,\n registry,\n flash: config.flash,\n }\n\n const { action, errorStatus, permissions } = state\n const Main = registry.getComponent(state.context, path) as React.FC<{\n state: GuillotinaGlobalState\n }>\n const Action = action.action\n ? (registry.getAction(action.action) as React.FC<any>)\n : null\n\n return (\n <IntlProvider locale={locale} defaultLocale=\"en\" messages={messages}>\n <ErrorBoundary>\n {!errorStatus && (\n <TraversalProvider {...contextData}>\n {permissions && (\n <React.Fragment>\n {action.action && Action !== null && (\n <Action {...action.params} />\n )}\n <div className=\"level\">\n <div className=\"level-left\">\n <div className=\"level-item\">\n <Path />\n </div>\n </div>\n </div>\n <Flash />\n {Main !== undefined && (\n <ErrorBoundary>\n <div className=\"box main-panel\">\n {state.loading && <Loading />}\n {!state.loading && <Main state={state} />}\n </div>\n </ErrorBoundary>\n )}\n {/* <p>Guillotina {JSON.stringify(state.context)}</p> */}\n </React.Fragment>\n )}\n </TraversalProvider>\n )}\n {errorStatus === 'notallowed' && <NotAllowed />}\n {errorStatus === 'notfound' && <NotFound />}\n </ErrorBoundary>\n </IntlProvider>\n )\n}\n","import { useState } from 'react'\nimport { Auth } from '../lib/auth'\nimport { Icon } from './ui/icon'\nimport { classnames } from '../lib/helpers'\n\ninterface Props {\n children: React.ReactNode\n onLogout: () => void\n auth: Auth\n}\nexport function Layout({ children, onLogout, auth }: Props) {\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const doLogout = () => {\n auth.logout()\n onLogout()\n }\n\n return (\n <>\n <header>\n <nav className=\"navbar\" role=\"navigation\" aria-label=\"main navigation\">\n <div className=\"navbar-brand\" style={{ alignItems: 'center' }}>\n <a className=\"navbar-item\" href=\"/\">\n <img src=\"/logo.svg\" alt=\"Guillotina logo\" height=\"80\" />\n </a>\n <div\n id=\"burger\"\n role=\"button\"\n className={classnames([\n 'navbar-burger',\n 'burger',\n isMenuOpen && 'is-active',\n ])}\n aria-label=\"menu\"\n aria-expanded=\"false\"\n data-target=\"navbarmenu\"\n onClick={() => setIsMenuOpen(!isMenuOpen)}\n >\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n <span aria-hidden=\"true\"></span>\n </div>\n </div>\n <div\n id=\"navbarmenu\"\n className={classnames(['navbar-menu', isMenuOpen && 'is-active'])}\n >\n <div className=\"navbar-start\"></div>\n <div className=\"navbar-end\">\n <div className=\"navbar-item\">\n {auth.isLogged && (\n <div className=\"buttons\">\n <button className=\"button is-size-7\" onClick={doLogout}>\n <Icon icon=\"fas fa-sign-out-alt\" />\n <span>Logout</span>\n </button>\n </div>\n )}\n </div>\n </div>\n </div>\n </nav>\n </header>\n <section className=\"section main\">\n <div className=\"container\">\n <div className=\"column\">{children}</div>\n </div>\n </section>\n </>\n )\n}\n","import React, { useRef, useEffect } from 'react'\nimport useSetState from '../hooks/useSetState'\nimport { Auth } from '../lib/auth'\n\nconst ERRORS: { [key: string]: string } = {\n failed_to_fetch: 'Failed to fetch data: Backend not running?',\n invalid_credentials: 'Failed! Invalid credentials',\n}\ninterface State {\n username: string\n password: string\n loading: boolean\n errors?: string\n}\nconst initialState = {\n username: '',\n password: '',\n loading: false,\n errors: undefined,\n}\n\ninterface Props {\n currentSchema: string\n setCurrentSchema: (schema: string) => void\n schemas: string[]\n auth: Auth\n onLogin?: () => void\n}\nexport const Login = ({\n currentSchema,\n setCurrentSchema,\n schemas,\n auth,\n onLogin,\n}: Props) => {\n const [state, setState] = useSetState<State>(initialState)\n const inputRef = useRef<HTMLInputElement | null>(null)\n\n useEffect(() => {\n if (inputRef && inputRef.current) {\n inputRef.current.focus()\n }\n }, [inputRef])\n\n const doLogin = async (ev: React.FormEvent) => {\n ev.preventDefault()\n setState({ loading: true, errors: undefined })\n const { username, password } = state\n\n if (currentSchema !== '') {\n auth.setAccount(currentSchema)\n }\n const res = await auth.login(username, password)\n\n if (!res) {\n setState({ errors: auth.errors, loading: false })\n return\n }\n\n if (onLogin) {\n onLogin()\n }\n }\n\n return (\n <React.Fragment>\n <form\n className=\"login__form\"\n action=\"\"\n onSubmit={doLogin}\n data-test=\"formLoginTest\"\n >\n <div className=\"field\">\n <label className=\"label\">Username:</label>\n <input\n type=\"text\"\n className=\"input\"\n placeholder=\"Username\"\n onChange={(e) => setState({ username: e.target.value })}\n value={state.username}\n ref={inputRef}\n data-test=\"inputUsernameLoginTest\"\n />\n </div>\n <div className=\"field\">\n <label className=\"label\">Password:</label>\n <input\n type=\"password\"\n className=\"input\"\n placeholder=\"Password\"\n onChange={(e) => setState({ password: e.target.value })}\n value={state.password}\n data-test=\"inputPasswordLoginTest\"\n />\n </div>\n {schemas && schemas.length > 1 && (\n <div className=\"field\">\n <label className=\"label\">Schema:</label>\n <div className=\"select\">\n <select\n data-test=\"selectSchemaTest\"\n onChange={(e) => setCurrentSchema(e.target.value)}\n >\n {schemas.map((s) => (\n <option value={s} key={s}>\n {s}\n </option>\n ))}\n </select>\n </div>\n </div>\n )}\n <div className=\"field\">\n <button\n className=\"button is-warning\"\n type=\"submit\"\n data-test=\"btnLoginTest\"\n >\n Login\n </button>\n </div>\n <div className=\"field\">\n {state.errors && (\n <p className=\"has-text-danger\">\n {ERRORS[state.errors] || 'Generic error'}\n </p>\n )}\n </div>\n </form>\n </React.Fragment>\n )\n}\n","import { useState, useEffect } from 'react'\nimport { Form } from '../components/input/form'\nimport { stringToSlug } from '../lib/helpers'\nimport { useTraversal } from '../contexts'\nimport useSetState from '../hooks/useSetState'\nimport { useIntl } from 'react-intl'\nimport { genericMessages } from '../locales/generic_messages'\nimport { IndexSignature } from '../types/global'\n\nconst ignoreFiels: string[] = []\nconst extraFields = ['title']\n\ninterface Props {\n onSubmit: (data: IndexSignature) => void\n actionName?: string\n title?: string\n dataTest?: string\n loading?: boolean\n type: string\n}\ninterface State {\n data?: IndexSignature\n loading: boolean\n error?: unknown\n formFields: string[]\n}\nexport function RequiredFieldsForm({\n loading,\n onSubmit,\n actionName,\n title,\n dataTest,\n type,\n}: Props) {\n const intl = useIntl()\n const Ctx = useTraversal()\n\n const EditComponent = Ctx.registry.get('components', 'EditComponent')\n\n const [formData, setFormData] = useState<IndexSignature>({})\n const [errors, setErrors] = useState<IndexSignature<string>>({})\n\n const [schema, setSchema] = useSetState<State>({\n data: undefined,\n loading: false,\n error: undefined,\n formFields: [],\n })\n\n useEffect(() => {\n const getSchema = async () => {\n if (!schema.loading && !schema.data && !schema.error) {\n try {\n setSchema({ loading: true })\n const dataJson = await Ctx.client.getTypeSchema(Ctx.path, type)\n setSchema({\n loading: false,\n data: dataJson,\n formFields: [...dataJson.required, ...extraFields],\n })\n } catch (err) {\n setSchema({ loading: false, error: err })\n }\n }\n }\n getSchema()\n }, [schema])\n\n const submit = () => {\n const currentErrors: IndexSignature<string> = {}\n\n schema.formFields.forEach((key) => {\n if (!formData[key]) {\n currentErrors[key] = intl.formatMessage(\n genericMessages.field_is_required\n )\n }\n })\n\n if (Object.keys(currentErrors).length > 0) {\n setErrors(currentErrors)\n return\n }\n\n onSubmit({ id: formData.uuid, ...formData })\n }\n\n return (\n <Form title={title} onSubmit={submit} dataTest={dataTest}>\n {schema &&\n schema.data &&\n !schema.loading &&\n schema.formFields.map((key) => {\n if (!ignoreFiels.includes(key)) {\n const value = schema.data?.properties[key]\n return (\n <EditComponent\n key={key}\n id={key}\n placeholder={value?.title ?? ''}\n className=\"\"\n required\n schema={schema.data?.properties[key]}\n setValue={(value: string) => {\n if (key === 'title') {\n setFormData({\n ...formData,\n uuid: stringToSlug(value),\n [key]: value,\n })\n } else if (key === 'uuid') {\n setFormData({\n ...formData,\n uuid: stringToSlug(value),\n })\n } else {\n setFormData({ ...formData, [key]: value })\n }\n }}\n error={errors[key]}\n dataTest={`${key}TestInput`}\n val={key in formData ? formData[key] : ''}\n />\n )\n }\n return null\n })}\n\n <div className=\"level level-right\">\n <button\n type=\"submit\"\n className={`button is-success ${loading ? 'is-loading' : ''}`}\n data-test=\"formBaseBtnTestSubmit\"\n >\n {actionName || intl.formatMessage(genericMessages.add)}\n </button>\n </div>\n </Form>\n )\n}\n","import jwt_decode from 'jwt-decode'\nimport { IndexSignature } from '../types/global'\n\nexport class Auth {\n maxRetry = 1\n retryRefresh = 0\n events = {}\n url: string\n base_url: string\n errors?: string\n\n constructor(url: string) {\n this.url = url\n this.base_url = url\n this.errors = undefined\n }\n\n getUrl(endpoint: string) {\n return `${this.url}${endpoint}`\n }\n\n setAccount(account: string) {\n this.url = this.base_url + account\n }\n\n async login(username: string, password: string) {\n const url = this.getUrl('@login')\n try {\n const data = await fetch(url, {\n method: 'post',\n body: JSON.stringify({\n username: username,\n password: password,\n }),\n })\n if (data.status === 200) {\n const credentials = await data.json()\n this.storeAuth(credentials)\n return true\n } else {\n this.errors = 'invalid_credentials'\n }\n } catch (e) {\n this.errors = 'failed_to_fetch'\n return false\n }\n localStorage.removeItem('auth')\n localStorage.removeItem('auth_expires')\n return false\n }\n\n get isLogged() {\n if (typeof localStorage === 'undefined') {\n return false\n }\n const [token, expires] = this._getToken()\n if (!token || !expires) {\n return false\n }\n if (this.isExpired(expires)) {\n return false\n }\n return true\n }\n\n get username() {\n if (typeof localStorage === 'undefined') {\n return false\n }\n const [token] = this._getToken()\n const data: IndexSignature = jwt_decode(token as string)\n console.log(token)\n return data.id\n }\n\n storeAuth(data: { token: string; exp: number }) {\n localStorage.setItem('auth', data.token)\n localStorage.setItem(\n 'auth_expires',\n new Date(data.exp).getTime().toString()\n )\n }\n\n cleanAuth() {\n localStorage.removeItem('auth')\n localStorage.removeItem('auth_expires')\n }\n\n logout() {\n this.cleanAuth()\n }\n\n async refreshToken() {\n console.log('refresh!!!')\n this.retryRefresh++\n const data = await fetch(this.getUrl('@login-renew'), {\n headers: this.getHeaders(),\n method: 'post',\n })\n if (data.status === 401) {\n // invalid token\n this.cleanAuth()\n this.logout()\n return\n }\n const res = await data.json()\n console.log('refresh data', res)\n this.storeAuth(res)\n console.log('token refreshed')\n this.retryRefresh = 0\n return res.token\n }\n\n willExpire(expiration: string) {\n const now = new Date().getTime()\n if (parseInt(expiration) * 1000 < now + 10 * 1000) {\n return true\n }\n return false\n }\n\n isExpired(expiration: string) {\n const now = new Date().getTime()\n if (parseInt(expiration) * 1000 > now) {\n return false\n }\n return true\n }\n\n _getToken() {\n return [localStorage.getItem('auth'), localStorage.getItem('auth_expires')]\n }\n\n getToken() {\n const [token] = this._getToken()\n return token\n }\n\n getHeaders(): HeadersInit {\n const [authToken, expires] = this._getToken()\n if (!authToken) return {}\n\n if (this.willExpire(expires ?? '') && this.retryRefresh < this.maxRetry) {\n // eslint-disable-next-line no-extra-semi\n ;(async () => await this.refreshToken())()\n }\n\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n Authorization: 'Bearer ' + authToken,\n }\n }\n}\n","import { IndexSignature } from './global'\n\ntype ItemsPropertyObject = {\n '@id': string\n '@name': string\n '@type': string\n '@uid': string\n '@absolute_url': string\n title: string\n creation_date: string\n modification_date: string\n uuid: string\n type_name: string\n}\n\nexport type GuillotinaCommonObject = {\n type_name: string\n uuid: string\n is_folderish: boolean\n parent: GuillotinaParentObject\n length: number\n __behaviors__?: string[]\n '@static_behaviors': string[]\n 'guillotina.behaviors.dublincore.IDublinCore'?: IBehaviorDublinCore\n 'guillotina.contrib.workflows.interfaces.IWorkflowBehavior'?: IWorkflowBehavior\n 'guillotina.behaviors.attachment.IAttachment'?: {\n file: GuillotinaFile\n }\n 'guillotina.behaviors.attachment.IMultiAttachment'?: {\n files: {\n [key: string]: GuillotinaFile\n }\n }\n 'guillotina.contrib.image.behaviors.IImageAttachment'?: {\n image: GuillotinaFile\n }\n 'guillotina.contrib.image.behaviors.IMultiImageAttachment'?: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n 'guillotina.contrib.image.behaviors.IMultiImageOrderedAttachment'?: {\n images: {\n [key: string]: GuillotinaFile\n }\n }\n} & ItemsPropertyObject\n\nexport type SearchItem = {\n id: string\n parent_uuid: string\n path: string\n tid: string\n description: string\n access_roles: string[]\n access_users: string[]\n} & ItemsPropertyObject\n\nexport interface IBehaviorDublinCore {\n title: string\n description: string | null\n creation_date: string\n modification_date: string\n effective_date: string | null\n expiration_date: string | null\n creators: string[]\n tags: string[] | null\n publisher: string | null\n contributors: string[]\n}\n\nexport interface IWorkflowBehavior {\n review_state: string\n history: WorkflowHistory[]\n}\n\ninterface GuillotinaParentObject {\n '@id': string\n '@name': string\n '@type': string\n '@uid': string\n}\n\nexport interface GuillotinaSchema {\n title: string\n $schema: string\n type: string\n required: string[]\n definitions: Definitions\n properties: GuillotinaSchemaProperties\n}\n\nexport interface GuillotinaSchemaProperties {\n [key: string]: GuillotinaSchemaProperty | { $ref: string }[]\n}\n\nexport interface Definitions {\n [key: string]: {\n type: string\n properties: GuillotinaSchemaProperties\n required: string[]\n title: string\n description: string\n }\n}\n\nexport interface GuillotinaSchemaProperty {\n type: string\n title: string\n widget?: string\n readonly?: boolean\n description?: string\n vocabularyName?: string\n vocabulary?: string[]\n items?: GuillotinaSchemaProperty\n properties?: GuillotinaSchemaProperties\n additionalProperties?: GuillotinaSchemaProperties\n typeNameQuery?: string\n labelProperty?: string\n enum?: string[]\n queryCondition?: string\n queryPath?: string\n}\n\nexport type GuillotinaFile = {\n filename: string\n content_type: string\n extension: string\n size: number\n md5: string\n}\n\nexport interface GuillotinaVocabulary {\n '@id': string\n items: GuillotinaVocabularyItem[]\n items_total: number\n}\n\nexport interface GuillotinaVocabularyItem {\n title: string\n token: string\n}\nexport interface GuillotinaSharing {\n local: GuillotinaSharingMap\n inherit: GuillotinaSharingInheritItem[]\n}\n\nexport interface GuillotinaSharingInheritItem extends GuillotinaSharingMap {\n '@id': string\n}\nexport interface GuillotinaSharingMap {\n roleperm: {\n [key: string]: IndexSignature<string>\n }\n prinperm: {\n [key: string]: IndexSignature<string>\n }\n prinrole: {\n [key: string]: IndexSignature<string>\n }\n}\n\nexport interface GuillotinaBehaviors {\n static: string[]\n dynamic: string[]\n available: string[]\n}\n\nexport interface AllPermissions {\n [key: string]: AllPermissionsItem\n}\n\nexport interface AllPermissionsItem {\n prinperm?: PrimPerm[]\n prinrole?: Prinrole[]\n roleperm?: Roleperm[]\n perminhe?: Perminhe[]\n}\n\nexport interface Prinrole {\n principal: string\n role: string\n setting: Setting\n}\n\nexport interface Roleperm {\n permission: string\n role: string\n setting: Setting\n}\nexport interface PrimPerm {\n principal: string\n permission: string\n setting: Setting\n}\nexport interface Perminhe {\n permission: string\n setting: Setting\n}\n\nexport enum Setting {\n Allow = 'Allow',\n AllowSingle = 'AllowSingle',\n Deny = 'Deny',\n Unset = 'Unset',\n}\n\nexport interface Workflow {\n '@id': string\n history: WorkflowHistory[]\n transitions: Transition[]\n}\n\nexport interface WorkflowHistory {\n actor: string\n comments: string\n time: string\n title: string\n type: string\n data: WorkflowHistoryData\n}\n\nexport interface WorkflowHistoryData {\n action: null\n review_state: string\n}\n\nexport interface Transition {\n '@id': string\n title: string\n metadata: IndexSignature\n}\n\nexport interface Addons {\n available: AddonAvailable[]\n installed: string[]\n}\n\nexport interface AddonAvailable {\n id: string\n title: string\n dependencies: any[]\n}\n\nexport interface RegistrySchema {\n filters: RegistrySchemaFilter[]\n}\n\nexport interface RegistrySchemaFilter {\n attribute_key: string\n label: string\n type: string\n values?: { value: string; text: string }[]\n vocabulary?: string\n input_type?: string\n}\n\nexport type ReturnSearch<T> = {\n items: T[]\n items_total: number\n}\n\nexport type ReturnSearchCompatible<T> = {\n member: T[]\n items_count: number\n items: T[]\n items_total: number\n}\n\nexport interface ItemColumn {\n label: string\n key: string\n isSortable?: boolean\n child: React.ReactNode\n}\n\nexport type GuillotinaUser = {\n user_roles: string[]\n user_groups: string[]\n user_permissions: string[]\n fullname: string\n email: string\n username: string\n} & GuillotinaCommonObject\n\nexport type GuillotinaGroup = {\n user_roles: string[]\n users: string[]\n} & GuillotinaCommonObject\n\nexport type GuillotinaApplication = {\n databases: string[]\n} & GuillotinaCommonObject\n\nexport type GuillotinaDatabase = {\n containers: string[]\n} & GuillotinaCommonObject\n"],"names":["initialState","path","loading","context","undefined","flash","message","type","action","params","permissions","errorStatus","registry","refresh","GuillotinaReducerActionTypes","guillotinaReducer","state","SET_PATH","payload","SET_CONTEXT","SET_ERROR","SET_FLASH","CLEAR_FLASH","SET_ACTION","CLEAR_ACTION","REFRESH","Date","now","transparent","APPLY","AuthContext","createContext","ClientContext","Traversal","constructor","props","dispatch","client","url","auth","pathPrefix","slice","Error","containerPath","getContainerFromPath","apply","data","window","scrollTo","top","left","behavior","clearFlash","doAction","cancelAction","hasPerm","permission","filterTabs","tabs","tabsPermissions","result","Object","keys","forEach","item","perm","TraversalContext","TraversalProvider","children","_jsx","Provider","value","useTraversal","traversal","useContext","ClientProvider","useGuillotinaClient","genericMessages","defineMessages","id","defaultMessage","remove","install","delete","move_to","copy_to","behaviors","static","disable","enable","enabled","available","invalid_form_data","invalid_form","select_principal","select_role","select_permissions","operation","save","choose","property","create","upload","image","error_provide_key_name","mandatory_field","error_in_field","field_updated","field_deleted","can_not_delete_field","cancel","open","download","search","no_results","load_more","add_type","confirm","field_is_required","title","add","not_implemented","failed_to_update","add_user","role","setting","genericFileMessages","error_file_key_name","error_upload_file","error_upload_file_size","image_uploaded","file_uploaded","failed_delete_file","image_deleted","confirm_message_delete_file","confirm_message_delete_image","no_images_uploaded","no_files_uploaded","upload_an_image","upload_a_file","classnames","classNames","filter","Boolean","join","trim","noop","current","generateUID","prefix","toQueryString","map","key","encodeURIComponent","base64ToArrayBuffer","base64","binaryString","atob","binaryLen","length","bytes","Uint8Array","i","ascii","charCodeAt","stringToSlug","str","replace","toLowerCase","from","to","l","RegExp","charAt","sleep","ms","Promise","resolve","setTimeout","getActionsObject","intl","multiple","DELETE","text","formatMessage","perms","MOVE","COPY","Button","className","onClick","disabled","dataTest","css","split","concat","formatDate","d","minutes","getMinutes","getDate","getMonth","getFullYear","getHours","get","obj","defValue","pathArray","Array","isArray","match","reduce","prevObj","getNewId","suffix","rgx","r","num","parseInt","debounce","callback","wait","timer","args","clearTimeout","Modal","isActive","setActive","Portal","usePortal","_jsxs","Confirm","onCancel","onConfirm","useIntl","style","marginTop","PathTree","defaultPath","onSubmit","e","preventDefault","target","display","defaultValue","getErrorMessage","dataError","details","reason","processResponse","res","ready_body","status","isError","json","response","errorMessage","toString","useSetState","setState","useState","setCustomState","useCallback","newPartialState","prevState","error","console","initial","patch","Ctx","endpoint","body","newState","del","post","useCrudContext","AddItem","getForm","Form","doSubmit","form","assign","formData","actionName","Permissions","defaultConfig","DisabledTypes","PageSize","DelayActions","SearchEngine","fieldHaveDeleteButton","schema","widget","calculated","addConfig","updates","currentConfig","updatedConfig","entries","currentKey","currentValue","isPlainObject","prototype","call","useConfig","cfg","ref","useRef","RemoveItems","setLoading","items","last","itemsNames","removeItems","errors","actions","ok","err","push","all","errorstr","JSON","stringify","Checkbox","classNameInput","indeterminate","checked","placeholder","onChange","inputRef","useEffect","updateState","ev","htmlFor","ErrorZone","propTypes","PropTypes","node","string","applyValidators","validators","validation","func","useInput","hasError","onUpdate","onBlur","onFocus","REGEX_EMAIL","REGEX_URL","REGEX_HEX_COLOR","REGEX_NUMBER","isEmpty","maxLength","limit","minLength","isEmail","test","isURL","isHexColor","isNumber","notEmpty","Input","forwardRef","icon","iconPosition","errorZoneClassName","autoComplete","required","autofocus","validator","onKeyUp","validatorFn","handlers","uid","mounted","setMounted","newRef","focus","theError","statusClasses","cssControl","displayName","Icon","align","addClass","EmailInput","onReset","handleSubmit","event","PasswordInput","formComponents","password","boolean","email","FormBuilder","exclude","remotes","submitButton","properties","values","fields","x","includes","element","field","GetTag","Tag","children_","Children","child","isValidElement","cloneElement","changes","Select","options","size","classWrap","appendDefault","selectValue","selectedOptions","cssWrap","index","rest","useVocabulary","vocabularyName","vocabulary","setVocabulary","getPath","getVocabulary","dataJson","SelectVocabulary","val","getOptions","vocData","token","getProps","setURLParams","p","history","pushState","clean","URLSearchParams","_key","set","useLocation","update","currentSearchParams","prevPath","patchHistoryEvents","checkForUpdates","pathname","events","addEventListener","removeEventListener","navigate","param","patched","originalPushState","Event","arguments","dispatchEvent","originalReplaceState","replaceState","location","Link","aRef","model","aStyle","textDecoration","color","stopPropagation","actAsLink","href","ctrlKey","metaKey","altKey","shiftKey","button","TdLink","link","click","Loading","name","onRemove","Delete","Table","headers","parsedClassName","idx","Notification","isColor","RestClient","container","request","signal","indexOf","startsWith","dataRequest","getHeaders","fetch","authToken","getToken","headersInit","Accept","Authorization","method","put","newHeaders","filename","SEP","DEFAULT_FIELD","CLEANER","parser","qs","defaultField","orParser","parsed","buildQs","lastKey","qsSplit","part","parsedQuery","cacheTypes","cacheSchemas","GuillotinaClient","pathContainsContainer","substring","parts","clearContainerFromPath","cleanPath","getContext","getQueryParamsSearchFunction","getQueryParamsElasticsearch","getQueryParamsPostresql","start","pageSize","withDepth","objectPath","endsWith","getItemsColumn","smallcss","width","mediumcss","label","isSortable","m","_navigate","React","Fragment","created","updated","applyCompat","member","items_count","items_total","prepare","query","canido","createObject","file","getTypeSchema","getAddons","installAddon","removeAddon","getGroups","getUsers","getPrincipals","groups","users","responseGroups","responseUsers","groupsData","usersData","groupsDataResponse","group","user_roles","roles","usersDataResponse","user","fullname","getRoles","getAllPermissions","req","resp","Set","extractPermissions","getTypes","types","getClient","lightFileReader","reject","reader","FileReader","readAsArrayBuffer","onloadend","fileData","normalize","FileUpload","changed","files","fileToUpload","Textarea","rows","defaultEvents","on","handler","off","useClickAway","onClickAway","savedCallback","el","contains","eventName","document","page","SearchInput","queryCondition","btnClass","dataTestWrapper","dataTestSearchInput","dataTestItem","renderTextItemOption","typeNameQuery","labelProperty","setOptions","isOpen","setIsOpen","searchTerm","setSearchTerm","wrapperRef","valueLabel","setValueLabel","getHeight","maxHeight","innerHeight","getBoundingClientRect","delayedQuery","handleSearch","inicializeLabels","searchTermQs","searchTermParsed","getSearch","fnName","qsParsed","typeNameParsed","newValuesLabel","log","sortParsed","newItems","renderTextItemOptionFn","currentTarget","relatedTarget","HTMLElement","blur","onMouseDown","SearchInputList","valuesLabel","setValuesLabels","isLoadingData","setIsLoadingData","tag","InputList","inputValue","setInputValue","addTags","Dropdown","isRight","optionDisabledWhen","setIsActive","position","option","cursor","opacity","backgroundColor","EditableField","ns","modifyContent","isEdit","setEdit","setValue","EditComponent","RenderFieldComponent","canModified","saveField","unescape","dataPatch","deleteField","enum","DownloadField","getField","downloadFile","blob","Blob","content_type","URL","createObjectURL","createElement","setAttribute","appendChild","revokeObjectURL","parentNode","removeChild","plain","RenderField","Widget","FieldValue","DEFAULT_VALUE_NO_EDITABLE_FIELD","getDefaultValueEditableField","SearchRenderField","valuesLabels","DEFAULT_VALUE_EDITABLE_FIELD","fetchData","valuesToSearch","getRenderValue","VocabularyRenderField","getRenderProps","renderProps","vocabularyValue","find","toLocaleString","queryPath","subSchema","requiredFields","getInputType","IAttachment","IMultiAttachment","fileKey","setFileKey","setFile","fileKeyToDelete","setFileKeyToDelete","setError","uploadFile","deleteFile","colSpan","_sizesImages","IImageAttachment","sizesImages","SizeImages","showConfirmToDelete","setShowConfirmToDelete","endpointSize","gap","IMultiImageAttachment","StrictModeDroppable","droppableId","setEnabled","animation","requestAnimationFrame","cancelAnimationFrame","Droppable","reorder","list","startIndex","endIndex","removed","splice","messages","failed_to_sort_images","images_sorted","IMultiImageOrderedAttachment","sortedList","setSortedList","onDragEnd","destination","source","resultSorted","uuidv4","DragDropContext","provided","innerRef","droppableProps","Draggable","draggableId","providedChild","borderTop","draggableProps","dragHandleProps","status_changed_ok","status_changed_error","confirm_message","current_state","IWorkflow","definition","setDefinition","workflowAction","setWorkflowAction","currentState","loadDefinition","workflow","doWorkflowAction","getStateTitle","translatedValue","locale","titleValue","transitions","transition","PanelActions","ACTIONS_OBJECT","some","onAction","actionKey","actionKeyTyped","actionObject","available_addons","no_available_addons_container","installed_addons","PanelAddons","setAction","prepareData","addon","installed","addons","arrayToObject","array","PanelBehaviors","ops","enableBehavior","disableBehavior","dynamic","ItemsActionsCtx","selected","ItemsActionsProvider","setSelected","onSelectAllItems","onSelectOneItem","useItemsActions","AllItemsCheckbox","ItemCheckbox","absId","ItemsActionsDropdown","every","v","o","Pagination","total","doPaginate","pager","maxPages","Math","ceil","currentPage","totalPages","totalItems","base","local","roleperm","prinperm","prinrole","inherit","Sharing","getRole","principals","principal","getPrinroles","ItemModel","icons","fullPath","type_name","creation_date","modification_date","Item","RItem","columns","ItemTitle","SearchLabels","clearSearch","SearchOptionsLabels","renderValue","setRenderValue","defaultRenderValue","SearchVocabularyLabels","PanelItems","setLocation","filterSchema","getSchemas","filters","sort","sortDirection","searchParsed","fieldsToFilter","getFieldsToFilter","typeParsed","onSort","sort_direction","resultQueryParams","resultDynamicLocation","itemParam","attribute_key","filterParsed","controller","AbortController","getData","defaultSortValue","getDefaultSortValue","direction","abort","getIcon","tab","input_type","filterData","column","BehaviorsView","getBehavior","__behaviors__","GetBehavior","behaviorName","Cls","BehaviorNotImplemented","PropertiesButtonView","getProperties","Props","Buttons","Element","PropertiesView","Panels","_showProperties","_ignoreFields","PanelProperties","setSchema","showProperties","default","properties_default","ignoreFields","ignoreField","properties_ignore_fields","getSchema","prop","PermissionPrinperm","operations","savePermission","random","PermissionPrinrole","PermissionRoleperm","role_permissions","no_role_permissions","no_principal_permissions","no_principal_roles","principal_permissions","principal_roles","allow","deny","allow_single","unset","add_permissions","select_type","PanelPermissions","ctx","reset","setReset","useMemo","row","AddPermission","defaultOptions","init","principalsData","prepareAvailable","already","def","TagsWidget","noData","selectRef","setResult","availableData","addItem","marginBottom","CreateButton","Config","anyNameFunction","ContextToolbar","AddButton","searchText","searchValue","setSearchValue","loadTypes","onSearchQuery","q","elements","filterInput","onSearchByType","typeText","Flash","FallbackTab","TabsPanel","currentTab","rightToolbar","fallback","setTab","CurrentComp","changeTab","Items","Properties","Behaviors","Actions","FolderCtx","ItemCtx","ApplicationCtx","appContext","databases","db","DatabaseCtx","containers","CreateContainer","ModalAddContainer","add_container","container_created","isLoading","idField","setId","createContainer","PanelNotImplemented","Addons","Registry","ContainerCtx","UserForm","$schema","definitions","username","useRemoteField","setRemote","updateRemote","Users","UsersToolbar","UsersCtx","UserCtx","userDataContext","user_groups","getRolesAndGroups","requestGetGroups","requestGetRoles","updateObject","withError","CopyItems","copyItems","responses","input","new_id","CopyItem","copyItem","MoveItems","moveItems","MoveItem","moveItem","RemoveItem","removeItem","pass1","pass2","ChangePassword","perror","setPerror","setPass","n","BaseForm","setName","submit","setTitle","editableFields","IDublinCore","Groups","GroupToolbar","GroupsCtx","GroupCtx","setRoles","groupDataContext","handleResponse","addRole","removeRole","addUser","newUserId","removeUser","userToRemove","urole","fontSize","paddingBottom","ErrorBoundaryComponent","Component","errorMsg","errorStack","componentDidCatch","errorInfo","componentStack","render","ErrorBoundary","injectIntl","NotAllowed","NotFound","Path","segments","links","buildPaths","indx","results","paths","views","Application","Database","Container","UserManager","User","Group","GroupManager","Folder","changePassword","forms","itemsColumn","schemas","components","searchEngineQueryParamsFunction","PostreSQL","Elasticsearch","getComponent","defaultComponent","funcCols","getView","getAction","is_folderish","useRegistry","registryKey","loadLocaleData","langCA","langES","langEN","Guillotina","config","searchPath","useReducer","initContext","pr","contextData","Main","Action","IntlProvider","defaultLocale","Layout","onLogout","isMenuOpen","setIsMenuOpen","doLogout","logout","alignItems","src","alt","height","isLogged","ERRORS","failed_to_fetch","invalid_credentials","Login","currentSchema","setCurrentSchema","onLogin","doLogin","setAccount","login","s","ignoreFiels","extraFields","RequiredFieldsForm","setFormData","setErrors","formFields","currentErrors","uuid","Auth","maxRetry","retryRefresh","base_url","getUrl","account","credentials","storeAuth","localStorage","expires","_getToken","isExpired","jwt_decode","setItem","exp","getTime","cleanAuth","refreshToken","willExpire","expiration","getItem","Setting"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}