@blaze-cms/plugin-data-ui 0.146.0-rc-eagle-3.9 → 0.146.0-rc-eagle-3.11

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 (36) hide show
  1. package/lib/components/EntityManager/Entity/Entity.js +26 -1
  2. package/lib/components/EntityManager/Entity/Entity.js.map +1 -1
  3. package/lib/components/EntityManager/Entity/EntityHeader/EntityHeader.js +14 -1
  4. package/lib/components/EntityManager/Entity/EntityHeader/EntityHeader.js.map +1 -1
  5. package/lib/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js +16 -2
  6. package/lib/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js.map +1 -1
  7. package/lib/components/EntityManager/utils/entity.js +22 -1
  8. package/lib/components/EntityManager/utils/entity.js.map +1 -1
  9. package/lib/components/ListingTable/ListingTable.js +1 -1
  10. package/lib/components/ListingTable/ListingTable.js.map +1 -1
  11. package/lib/constants.js +3 -1
  12. package/lib/constants.js.map +1 -1
  13. package/lib/utils/add-content-menu-items.js +25 -22
  14. package/lib/utils/add-content-menu-items.js.map +1 -1
  15. package/lib-es/components/EntityManager/Entity/Entity.js +29 -4
  16. package/lib-es/components/EntityManager/Entity/Entity.js.map +1 -1
  17. package/lib-es/components/EntityManager/Entity/EntityHeader/EntityHeader.js +14 -1
  18. package/lib-es/components/EntityManager/Entity/EntityHeader/EntityHeader.js.map +1 -1
  19. package/lib-es/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js +16 -2
  20. package/lib-es/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js.map +1 -1
  21. package/lib-es/components/EntityManager/utils/entity.js +23 -3
  22. package/lib-es/components/EntityManager/utils/entity.js.map +1 -1
  23. package/lib-es/components/ListingTable/ListingTable.js +1 -1
  24. package/lib-es/components/ListingTable/ListingTable.js.map +1 -1
  25. package/lib-es/constants.js +3 -1
  26. package/lib-es/constants.js.map +1 -1
  27. package/lib-es/utils/add-content-menu-items.js +25 -22
  28. package/lib-es/utils/add-content-menu-items.js.map +1 -1
  29. package/package.json +5 -5
  30. package/src/components/EntityManager/Entity/Entity.js +31 -5
  31. package/src/components/EntityManager/Entity/EntityHeader/EntityHeader.js +17 -1
  32. package/src/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js +19 -2
  33. package/src/components/EntityManager/utils/entity.js +28 -8
  34. package/src/components/ListingTable/ListingTable.js +1 -1
  35. package/src/constants.js +4 -0
  36. package/src/utils/add-content-menu-items.js +21 -20
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","names":["DEBUG_PARAM","ENTITY_PUBLISHED","SELECT_DEFAULT_VALUE","canViewPage","entity","schema","entityIsPublished","id","properties","slug","validateSideBarRelations","updatedFormValues","requiredChildField","parentEntityField","find","parentIdField","parentEntityFieldHasValue","value","parentIdFieldHasValue","onViewUrlClick","getFullUrl","fullUrl","delimiter","includes","debugParam","process","env","BLAZE_DISABLE_URL_DEBUG_PARAM","window","open","getUpdatedFormValues","formValues","slice","fieldIndex","findIndex","_id","_objectSpread","push","requiredChildFieldIndex","checkFulfilConditions","args","every","param"],"sources":["../../../../src/components/EntityManager/utils/entity.js"],"sourcesContent":["import { DEBUG_PARAM, ENTITY_PUBLISHED, SELECT_DEFAULT_VALUE } from '../../../constants';\n\nfunction canViewPage(entity, schema, entityIsPublished) {\n return (\n entity &&\n entity.id &&\n schema &&\n schema.id &&\n entityIsPublished === ENTITY_PUBLISHED &&\n schema.properties.slug\n );\n}\n\nfunction validateSideBarRelations(updatedFormValues, requiredChildField) {\n if (!requiredChildField) return true;\n const parentEntityField = updatedFormValues.find(({ id }) => id === 'parentEntity');\n const parentIdField = updatedFormValues.find(({ id }) => id === 'parentId');\n\n const parentEntityFieldHasValue =\n parentEntityField &&\n parentEntityField.value &&\n parentEntityField.value !== SELECT_DEFAULT_VALUE;\n const parentIdFieldHasValue = parentIdField && parentIdField.value;\n\n return !!(!parentEntityFieldHasValue || (parentEntityFieldHasValue && parentIdFieldHasValue));\n}\n\nasync function onViewUrlClick(getFullUrl) {\n const fullUrl = await getFullUrl();\n if (fullUrl) {\n const delimiter = fullUrl.includes('?') ? '&' : '?';\n const debugParam = process.env.BLAZE_DISABLE_URL_DEBUG_PARAM\n ? ''\n : `${delimiter}${DEBUG_PARAM}`;\n window.open(`${fullUrl}${debugParam}`, '_blank');\n }\n}\n\nfunction getUpdatedFormValues({ id, value, requiredChildField, formValues }) {\n const updatedFormValues = formValues ? formValues.slice() : [];\n const fieldIndex = updatedFormValues.findIndex(({ id: _id }) => _id === id);\n\n if (fieldIndex > -1) {\n updatedFormValues[fieldIndex] = { ...updatedFormValues[fieldIndex], value };\n } else {\n updatedFormValues.push({ id, value });\n }\n\n if (requiredChildField && requiredChildField.id) {\n const requiredChildFieldIndex = updatedFormValues.findIndex(\n ({ id: _id }) => _id === requiredChildField.id\n );\n if (requiredChildFieldIndex > -1) {\n updatedFormValues[requiredChildFieldIndex] = {\n ...updatedFormValues[requiredChildFieldIndex],\n value: requiredChildField.value\n };\n } else {\n updatedFormValues.push({\n id: requiredChildField.id,\n value: requiredChildField.value\n });\n }\n }\n\n return updatedFormValues;\n}\n\nfunction checkFulfilConditions(...args) {\n return args.every(param => param);\n}\n\nexport {\n canViewPage,\n validateSideBarRelations,\n onViewUrlClick,\n getUpdatedFormValues,\n checkFulfilConditions\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"entity.js","names":["DEBUG_PARAM","ENTITY_PUBLISHED","SELECT_DEFAULT_VALUE","TITLE_FIELD_ID","hasViewableUrl","entity","schema","id","properties","slug","canViewPage","entityIsPublished","canEditTitle","formValues","displayProperties","adminHeader","isTitleFromName","length","Array","isArray","some","validateSideBarRelations","updatedFormValues","requiredChildField","parentEntityField","find","parentIdField","parentEntityFieldHasValue","value","parentIdFieldHasValue","onViewUrlClick","getFullUrl","fullUrl","delimiter","includes","debugParam","process","env","BLAZE_DISABLE_URL_DEBUG_PARAM","window","open","getUpdatedFormValues","slice","fieldIndex","findIndex","_id","_objectSpread","push","requiredChildFieldIndex","checkFulfilConditions","args","every","param"],"sources":["../../../../src/components/EntityManager/utils/entity.js"],"sourcesContent":["import {\n DEBUG_PARAM,\n ENTITY_PUBLISHED,\n SELECT_DEFAULT_VALUE,\n TITLE_FIELD_ID\n} from '../../../constants';\n\n// Whether this record has a front end url at all, publish state aside.\nfunction hasViewableUrl(entity, schema) {\n return !!(entity && entity.id && schema && schema.id && schema.properties.slug);\n}\n\nfunction canViewPage(entity, schema, entityIsPublished) {\n return hasViewableUrl(entity, schema) && entityIsPublished === ENTITY_PUBLISHED;\n}\n\n// The header title is only editable inline when it is the record's name field.\nfunction canEditTitle(schema, formValues) {\n const { properties = {}, displayProperties = {} } = schema || {};\n const { adminHeader } = displayProperties || {};\n const isTitleFromName =\n !adminHeader || (adminHeader.length === 1 && adminHeader[0] === TITLE_FIELD_ID);\n\n return !!(\n isTitleFromName &&\n properties[TITLE_FIELD_ID] &&\n Array.isArray(formValues) &&\n formValues.some(({ id }) => id === TITLE_FIELD_ID)\n );\n}\n\nfunction validateSideBarRelations(updatedFormValues, requiredChildField) {\n if (!requiredChildField) return true;\n const parentEntityField = updatedFormValues.find(({ id }) => id === 'parentEntity');\n const parentIdField = updatedFormValues.find(({ id }) => id === 'parentId');\n\n const parentEntityFieldHasValue =\n parentEntityField &&\n parentEntityField.value &&\n parentEntityField.value !== SELECT_DEFAULT_VALUE;\n const parentIdFieldHasValue = parentIdField && parentIdField.value;\n\n return !!(!parentEntityFieldHasValue || (parentEntityFieldHasValue && parentIdFieldHasValue));\n}\n\nasync function onViewUrlClick(getFullUrl) {\n const fullUrl = await getFullUrl();\n if (fullUrl) {\n const delimiter = fullUrl.includes('?') ? '&' : '?';\n const debugParam = process.env.BLAZE_DISABLE_URL_DEBUG_PARAM\n ? ''\n : `${delimiter}${DEBUG_PARAM}`;\n window.open(`${fullUrl}${debugParam}`, '_blank');\n }\n}\n\nfunction getUpdatedFormValues({ id, value, requiredChildField, formValues }) {\n const updatedFormValues = formValues ? formValues.slice() : [];\n const fieldIndex = updatedFormValues.findIndex(({ id: _id }) => _id === id);\n\n if (fieldIndex > -1) {\n updatedFormValues[fieldIndex] = { ...updatedFormValues[fieldIndex], value };\n } else {\n updatedFormValues.push({ id, value });\n }\n\n if (requiredChildField && requiredChildField.id) {\n const requiredChildFieldIndex = updatedFormValues.findIndex(\n ({ id: _id }) => _id === requiredChildField.id\n );\n if (requiredChildFieldIndex > -1) {\n updatedFormValues[requiredChildFieldIndex] = {\n ...updatedFormValues[requiredChildFieldIndex],\n value: requiredChildField.value\n };\n } else {\n updatedFormValues.push({\n id: requiredChildField.id,\n value: requiredChildField.value\n });\n }\n }\n\n return updatedFormValues;\n}\n\nfunction checkFulfilConditions(...args) {\n return args.every(param => param);\n}\n\nexport {\n canEditTitle,\n canViewPage,\n hasViewableUrl,\n validateSideBarRelations,\n onViewUrlClick,\n getUpdatedFormValues,\n checkFulfilConditions\n};\n"],"mappings":";;;AAAA,SACEA,WAAW,EACXC,gBAAgB,EAChBC,oBAAoB,EACpBC,cAAc,QACT,oBAAoB;;AAE3B;AACA,SAASC,cAAcA,CAACC,MAAM,EAAEC,MAAM,EAAE;EACtC,OAAO,CAAC,EAAED,MAAM,IAAIA,MAAM,CAACE,EAAE,IAAID,MAAM,IAAIA,MAAM,CAACC,EAAE,IAAID,MAAM,CAACE,UAAU,CAACC,IAAI,CAAC;AACjF;AAEA,SAASC,WAAWA,CAACL,MAAM,EAAEC,MAAM,EAAEK,iBAAiB,EAAE;EACtD,OAAOP,cAAc,CAACC,MAAM,EAAEC,MAAM,CAAC,IAAIK,iBAAiB,KAAKV,gBAAgB;AACjF;;AAEA;AACA,SAASW,YAAYA,CAACN,MAAM,EAAEO,UAAU,EAAE;EACxC,MAAM;IAAEL,UAAU,GAAG,CAAC,CAAC;IAAEM,iBAAiB,GAAG,CAAC;EAAE,CAAC,GAAGR,MAAM,IAAI,CAAC,CAAC;EAChE,MAAM;IAAES;EAAY,CAAC,GAAGD,iBAAiB,IAAI,CAAC,CAAC;EAC/C,MAAME,eAAe,GACnB,CAACD,WAAW,IAAKA,WAAW,CAACE,MAAM,KAAK,CAAC,IAAIF,WAAW,CAAC,CAAC,CAAC,KAAKZ,cAAe;EAEjF,OAAO,CAAC,EACNa,eAAe,IACfR,UAAU,CAACL,cAAc,CAAC,IAC1Be,KAAK,CAACC,OAAO,CAACN,UAAU,CAAC,IACzBA,UAAU,CAACO,IAAI,CAAC,CAAC;IAAEb;EAAG,CAAC,KAAKA,EAAE,KAAKJ,cAAc,CAAC,CACnD;AACH;AAEA,SAASkB,wBAAwBA,CAACC,iBAAiB,EAAEC,kBAAkB,EAAE;EACvE,IAAI,CAACA,kBAAkB,EAAE,OAAO,IAAI;EACpC,MAAMC,iBAAiB,GAAGF,iBAAiB,CAACG,IAAI,CAAC,CAAC;IAAElB;EAAG,CAAC,KAAKA,EAAE,KAAK,cAAc,CAAC;EACnF,MAAMmB,aAAa,GAAGJ,iBAAiB,CAACG,IAAI,CAAC,CAAC;IAAElB;EAAG,CAAC,KAAKA,EAAE,KAAK,UAAU,CAAC;EAE3E,MAAMoB,yBAAyB,GAC7BH,iBAAiB,IACjBA,iBAAiB,CAACI,KAAK,IACvBJ,iBAAiB,CAACI,KAAK,KAAK1B,oBAAoB;EAClD,MAAM2B,qBAAqB,GAAGH,aAAa,IAAIA,aAAa,CAACE,KAAK;EAElE,OAAO,CAAC,EAAE,CAACD,yBAAyB,IAAKA,yBAAyB,IAAIE,qBAAsB,CAAC;AAC/F;AAEA,eAAeC,cAAcA,CAACC,UAAU,EAAE;EACxC,MAAMC,OAAO,GAAG,MAAMD,UAAU,CAAC,CAAC;EAClC,IAAIC,OAAO,EAAE;IACX,MAAMC,SAAS,GAAGD,OAAO,CAACE,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG;IACnD,MAAMC,UAAU,GAAGC,OAAO,CAACC,GAAG,CAACC,6BAA6B,GACxD,EAAE,GACF,GAAGL,SAAS,GAAGjC,WAAW,EAAE;IAChCuC,MAAM,CAACC,IAAI,CAAC,GAAGR,OAAO,GAAGG,UAAU,EAAE,EAAE,QAAQ,CAAC;EAClD;AACF;AAEA,SAASM,oBAAoBA,CAAC;EAAElC,EAAE;EAAEqB,KAAK;EAAEL,kBAAkB;EAAEV;AAAW,CAAC,EAAE;EAC3E,MAAMS,iBAAiB,GAAGT,UAAU,GAAGA,UAAU,CAAC6B,KAAK,CAAC,CAAC,GAAG,EAAE;EAC9D,MAAMC,UAAU,GAAGrB,iBAAiB,CAACsB,SAAS,CAAC,CAAC;IAAErC,EAAE,EAAEsC;EAAI,CAAC,KAAKA,GAAG,KAAKtC,EAAE,CAAC;EAE3E,IAAIoC,UAAU,GAAG,CAAC,CAAC,EAAE;IACnBrB,iBAAiB,CAACqB,UAAU,CAAC,GAAAG,aAAA,CAAAA,aAAA,KAAQxB,iBAAiB,CAACqB,UAAU,CAAC;MAAEf;IAAK,EAAE;EAC7E,CAAC,MAAM;IACLN,iBAAiB,CAACyB,IAAI,CAAC;MAAExC,EAAE;MAAEqB;IAAM,CAAC,CAAC;EACvC;EAEA,IAAIL,kBAAkB,IAAIA,kBAAkB,CAAChB,EAAE,EAAE;IAC/C,MAAMyC,uBAAuB,GAAG1B,iBAAiB,CAACsB,SAAS,CACzD,CAAC;MAAErC,EAAE,EAAEsC;IAAI,CAAC,KAAKA,GAAG,KAAKtB,kBAAkB,CAAChB,EAC9C,CAAC;IACD,IAAIyC,uBAAuB,GAAG,CAAC,CAAC,EAAE;MAChC1B,iBAAiB,CAAC0B,uBAAuB,CAAC,GAAAF,aAAA,CAAAA,aAAA,KACrCxB,iBAAiB,CAAC0B,uBAAuB,CAAC;QAC7CpB,KAAK,EAAEL,kBAAkB,CAACK;MAAK,EAChC;IACH,CAAC,MAAM;MACLN,iBAAiB,CAACyB,IAAI,CAAC;QACrBxC,EAAE,EAAEgB,kBAAkB,CAAChB,EAAE;QACzBqB,KAAK,EAAEL,kBAAkB,CAACK;MAC5B,CAAC,CAAC;IACJ;EACF;EAEA,OAAON,iBAAiB;AAC1B;AAEA,SAAS2B,qBAAqBA,CAAC,GAAGC,IAAI,EAAE;EACtC,OAAOA,IAAI,CAACC,KAAK,CAACC,KAAK,IAAIA,KAAK,CAAC;AACnC;AAEA,SACExC,YAAY,EACZF,WAAW,EACXN,cAAc,EACdiB,wBAAwB,EACxBS,cAAc,EACdW,oBAAoB,EACpBQ,qBAAqB","ignoreList":[]}
@@ -168,7 +168,7 @@ const ListingTable = ({
168
168
  deleteAction: deleteAction,
169
169
  itemName: itemToDelete.name
170
170
  }), /*#__PURE__*/React.createElement(PageHeader, {
171
- title: entitySchema.displayName,
171
+ title: entitySchema.displayNamePlural || entitySchema.displayName,
172
172
  subtitle: ""
173
173
  }, createAction.active && !showAddButton && /*#__PURE__*/React.createElement(Link, {
174
174
  "data-testid": "addEntity",
@@ -1 +1 @@
1
- {"version":3,"file":"ListingTable.js","names":["React","useEffect","useState","Fragment","PropTypes","useApolloClient","withRouter","Link","useLocation","PageHeader","DeleteAction","CardPrompt","useToasts","RenderHook","ListingTableContent","SearchFilter","availableActions","fetchData","populateRows","formatRows","getParsedRowData","getDefaultQueryParams","ListingTable","match","entitySchema","history","tableData","setTableData","modalStatus","setModalStatus","itemToDelete","setItemToDelete","previousSchema","setPreviousSchema","id","totalItems","setTotalItems","queryParamsDefault","queryParams","setQueryParams","listFilters","setListFilters","client","addToast","location","searchParams","URLSearchParams","search","currentPage","Number","get","updatedQueryParams","_objectSpread","offset","limit","doQuery","url","filters","params","listingData","totalRecords","querySettings","populatedTable","toggleModal","rows","handleOnPageChange","pageNumber","_offset","push","document","getElementsByClassName","scrollTo","updateListingFilters","onCloseCardPrompt","item","deleteAction","delete","submit","parsedFormValues","updatedTableData","filter","handleSort","event","property","direction","Object","entries","sortQueryParams","sort","columns","isEnquiry","firstColumn","appliedSort","displayProperties","adminCrudActions","create","createAction","active","_deleteAction","showAddButton","length","createElement","className","onClose","itemName","name","title","displayName","subtitle","to","hookKey","schema","onSort","propTypes","object","isRequired"],"sources":["../../../src/components/ListingTable/ListingTable.js"],"sourcesContent":["import React, { useEffect, useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useApolloClient } from '@apollo/client';\nimport { withRouter, Link, useLocation } from 'react-router-dom';\nimport { PageHeader, DeleteAction, CardPrompt } from '@blaze-cms/admin';\nimport { useToasts } from '@blaze-react/toaster';\nimport { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';\nimport ListingTableContent from './ListingTableContent';\nimport SearchFilter from './SearchFilter/SearchFilter';\nimport availableActions from '../EntityManager/Entity/actions-handlers';\nimport { fetchData } from './service';\nimport { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';\nimport { getDefaultQueryParams } from '../../utils/get-default-query-params';\n\nconst ListingTable = ({ match, entitySchema, history }) => {\n const [tableData, setTableData] = useState({});\n const [modalStatus, setModalStatus] = useState(false);\n const [itemToDelete, setItemToDelete] = useState({});\n const [previousSchema, setPreviousSchema] = useState({ id: null });\n const [totalItems, setTotalItems] = useState(0);\n const queryParamsDefault = getDefaultQueryParams(entitySchema);\n const [queryParams, setQueryParams] = useState(queryParamsDefault);\n const [listFilters, setListFilters] = useState([]);\n const client = useApolloClient();\n const { addToast } = useToasts();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const currentPage = Number(searchParams.get('page')) || 1;\n\n useEffect(\n () => {\n (async () => {\n if (\n entitySchema.id !== previousSchema.id ||\n (previousSchema.id === null && entitySchema.id)\n ) {\n const updatedQueryParams = {\n ...queryParams,\n offset: currentPage * queryParamsDefault.limit - queryParamsDefault.limit\n };\n await doQuery([], updatedQueryParams);\n setPreviousSchema({ id: entitySchema.id });\n }\n })();\n },\n [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const doQuery = async (filters = listFilters, params = queryParamsDefault) => {\n const { listingData, totalRecords } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: params\n },\n listFilters: filters\n });\n\n const populatedTable = populateRows({\n toggleModal,\n url: match.url,\n entitySchema,\n rows: listingData\n });\n\n setTableData(populatedTable);\n setTotalItems(totalRecords);\n };\n\n const handleOnPageChange = async ({ pageNumber, offset: _offset }) => {\n const updatedQueryParams = {\n ...queryParams,\n offset: _offset\n };\n\n await doQuery(listFilters, updatedQueryParams);\n\n history.push(`?page=${pageNumber}`);\n document.getElementsByClassName('page')[0].scrollTo(0, 0);\n };\n\n const updateListingFilters = async filters => {\n await doQuery(filters);\n setListFilters(filters);\n };\n\n const onCloseCardPrompt = () => null;\n\n const toggleModal = item => {\n setModalStatus(!!item);\n setItemToDelete(item || {});\n };\n\n const deleteAction = async () => {\n await availableActions.delete.submit(\n {\n entitySchema,\n parsedFormValues: { id: itemToDelete.id },\n client\n },\n addToast\n );\n\n toggleModal();\n\n const updatedTableData = {\n ...tableData,\n rows: tableData.rows.filter(({ id }) => id !== itemToDelete.id)\n };\n\n setTableData(updatedTableData);\n };\n\n const handleSort = async event => {\n const [[property, direction]] = Object.entries(event);\n const sortQueryParams = {\n ...queryParamsDefault,\n sort: [{ property, direction }]\n };\n setQueryParams(sortQueryParams);\n\n const { listingData } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: sortQueryParams\n },\n listFilters\n });\n const { columns, isEnquiry } = tableData;\n const [firstColumn] = columns;\n\n setTableData({\n ...tableData,\n appliedSort: { [property]: direction },\n rows: formatRows({\n rows: getParsedRowData(listingData),\n url: match.url,\n toggleModal,\n firstColumn,\n isEnquiry,\n entitySchema\n })\n });\n history.push('?page=1');\n };\n if (!tableData || !tableData.rows) return 'loading';\n\n const {\n displayProperties: {\n adminCrudActions: {\n create: createAction = { active: true },\n delete: _deleteAction = { active: true }\n } = {}\n } = {}\n } = entitySchema;\n\n const showAddButton = !tableData.rows.length && listFilters.length === 0;\n\n return (\n <div className=\"page\">\n {modalStatus && _deleteAction.active && (\n <DeleteAction\n data-testid=\"deleteEntity\"\n onClose={toggleModal}\n deleteAction={deleteAction}\n itemName={itemToDelete.name}\n />\n )}\n <PageHeader title={entitySchema.displayName} subtitle=\"\">\n {createAction.active && !showAddButton && (\n <Link data-testid=\"addEntity\" className=\"button button--small\" to={`${match.url}/create`}>\n Add\n </Link>\n )}\n </PageHeader>\n {showAddButton ? (\n <CardPrompt>\n <Link\n className=\"button button--rounded button--cta\"\n to={`${match.url}/create`}\n data-testid=\"add-button\">\n Add\n </Link>\n </CardPrompt>\n ) : (\n <>\n <RenderHook\n hookKey=\"entity:listing:main:top\"\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <SearchFilter\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <ListingTableContent\n totalItems={totalItems}\n currentPage={currentPage}\n onSort={handleSort}\n handleOnPageChange={handleOnPageChange}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n </>\n )}\n </div>\n );\n};\nListingTable.propTypes = {\n entitySchema: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired\n};\n\nexport default withRouter(ListingTable);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ListingTable.js","names":["React","useEffect","useState","Fragment","PropTypes","useApolloClient","withRouter","Link","useLocation","PageHeader","DeleteAction","CardPrompt","useToasts","RenderHook","ListingTableContent","SearchFilter","availableActions","fetchData","populateRows","formatRows","getParsedRowData","getDefaultQueryParams","ListingTable","match","entitySchema","history","tableData","setTableData","modalStatus","setModalStatus","itemToDelete","setItemToDelete","previousSchema","setPreviousSchema","id","totalItems","setTotalItems","queryParamsDefault","queryParams","setQueryParams","listFilters","setListFilters","client","addToast","location","searchParams","URLSearchParams","search","currentPage","Number","get","updatedQueryParams","_objectSpread","offset","limit","doQuery","url","filters","params","listingData","totalRecords","querySettings","populatedTable","toggleModal","rows","handleOnPageChange","pageNumber","_offset","push","document","getElementsByClassName","scrollTo","updateListingFilters","onCloseCardPrompt","item","deleteAction","delete","submit","parsedFormValues","updatedTableData","filter","handleSort","event","property","direction","Object","entries","sortQueryParams","sort","columns","isEnquiry","firstColumn","appliedSort","displayProperties","adminCrudActions","create","createAction","active","_deleteAction","showAddButton","length","createElement","className","onClose","itemName","name","title","displayNamePlural","displayName","subtitle","to","hookKey","schema","onSort","propTypes","object","isRequired"],"sources":["../../../src/components/ListingTable/ListingTable.js"],"sourcesContent":["import React, { useEffect, useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { useApolloClient } from '@apollo/client';\nimport { withRouter, Link, useLocation } from 'react-router-dom';\nimport { PageHeader, DeleteAction, CardPrompt } from '@blaze-cms/admin';\nimport { useToasts } from '@blaze-react/toaster';\nimport { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';\nimport ListingTableContent from './ListingTableContent';\nimport SearchFilter from './SearchFilter/SearchFilter';\nimport availableActions from '../EntityManager/Entity/actions-handlers';\nimport { fetchData } from './service';\nimport { populateRows, formatRows, getParsedRowData } from './mappers/populate-rows';\nimport { getDefaultQueryParams } from '../../utils/get-default-query-params';\n\nconst ListingTable = ({ match, entitySchema, history }) => {\n const [tableData, setTableData] = useState({});\n const [modalStatus, setModalStatus] = useState(false);\n const [itemToDelete, setItemToDelete] = useState({});\n const [previousSchema, setPreviousSchema] = useState({ id: null });\n const [totalItems, setTotalItems] = useState(0);\n const queryParamsDefault = getDefaultQueryParams(entitySchema);\n const [queryParams, setQueryParams] = useState(queryParamsDefault);\n const [listFilters, setListFilters] = useState([]);\n const client = useApolloClient();\n const { addToast } = useToasts();\n const location = useLocation();\n const searchParams = new URLSearchParams(location.search);\n const currentPage = Number(searchParams.get('page')) || 1;\n\n useEffect(\n () => {\n (async () => {\n if (\n entitySchema.id !== previousSchema.id ||\n (previousSchema.id === null && entitySchema.id)\n ) {\n const updatedQueryParams = {\n ...queryParams,\n offset: currentPage * queryParamsDefault.limit - queryParamsDefault.limit\n };\n await doQuery([], updatedQueryParams);\n setPreviousSchema({ id: entitySchema.id });\n }\n })();\n },\n [client, entitySchema, match.url, previousSchema.id, queryParams] // eslint-disable-line react-hooks/exhaustive-deps\n );\n\n const doQuery = async (filters = listFilters, params = queryParamsDefault) => {\n const { listingData, totalRecords } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: params\n },\n listFilters: filters\n });\n\n const populatedTable = populateRows({\n toggleModal,\n url: match.url,\n entitySchema,\n rows: listingData\n });\n\n setTableData(populatedTable);\n setTotalItems(totalRecords);\n };\n\n const handleOnPageChange = async ({ pageNumber, offset: _offset }) => {\n const updatedQueryParams = {\n ...queryParams,\n offset: _offset\n };\n\n await doQuery(listFilters, updatedQueryParams);\n\n history.push(`?page=${pageNumber}`);\n document.getElementsByClassName('page')[0].scrollTo(0, 0);\n };\n\n const updateListingFilters = async filters => {\n await doQuery(filters);\n setListFilters(filters);\n };\n\n const onCloseCardPrompt = () => null;\n\n const toggleModal = item => {\n setModalStatus(!!item);\n setItemToDelete(item || {});\n };\n\n const deleteAction = async () => {\n await availableActions.delete.submit(\n {\n entitySchema,\n parsedFormValues: { id: itemToDelete.id },\n client\n },\n addToast\n );\n\n toggleModal();\n\n const updatedTableData = {\n ...tableData,\n rows: tableData.rows.filter(({ id }) => id !== itemToDelete.id)\n };\n\n setTableData(updatedTableData);\n };\n\n const handleSort = async event => {\n const [[property, direction]] = Object.entries(event);\n const sortQueryParams = {\n ...queryParamsDefault,\n sort: [{ property, direction }]\n };\n setQueryParams(sortQueryParams);\n\n const { listingData } = await fetchData({\n client,\n querySettings: {\n entitySchema,\n queryParams: sortQueryParams\n },\n listFilters\n });\n const { columns, isEnquiry } = tableData;\n const [firstColumn] = columns;\n\n setTableData({\n ...tableData,\n appliedSort: { [property]: direction },\n rows: formatRows({\n rows: getParsedRowData(listingData),\n url: match.url,\n toggleModal,\n firstColumn,\n isEnquiry,\n entitySchema\n })\n });\n history.push('?page=1');\n };\n if (!tableData || !tableData.rows) return 'loading';\n\n const {\n displayProperties: {\n adminCrudActions: {\n create: createAction = { active: true },\n delete: _deleteAction = { active: true }\n } = {}\n } = {}\n } = entitySchema;\n\n const showAddButton = !tableData.rows.length && listFilters.length === 0;\n\n return (\n <div className=\"page\">\n {modalStatus && _deleteAction.active && (\n <DeleteAction\n data-testid=\"deleteEntity\"\n onClose={toggleModal}\n deleteAction={deleteAction}\n itemName={itemToDelete.name}\n />\n )}\n <PageHeader title={entitySchema.displayNamePlural || entitySchema.displayName} subtitle=\"\">\n {createAction.active && !showAddButton && (\n <Link data-testid=\"addEntity\" className=\"button button--small\" to={`${match.url}/create`}>\n Add\n </Link>\n )}\n </PageHeader>\n {showAddButton ? (\n <CardPrompt>\n <Link\n className=\"button button--rounded button--cta\"\n to={`${match.url}/create`}\n data-testid=\"add-button\">\n Add\n </Link>\n </CardPrompt>\n ) : (\n <>\n <RenderHook\n hookKey=\"entity:listing:main:top\"\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <SearchFilter\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n <ListingTableContent\n totalItems={totalItems}\n currentPage={currentPage}\n onSort={handleSort}\n handleOnPageChange={handleOnPageChange}\n tableData={tableData}\n onCloseCardPrompt={onCloseCardPrompt}\n schema={entitySchema}\n listFilters={listFilters}\n setListFilters={updateListingFilters}\n />\n </>\n )}\n </div>\n );\n};\nListingTable.propTypes = {\n entitySchema: PropTypes.object.isRequired,\n match: PropTypes.object.isRequired,\n history: PropTypes.object.isRequired\n};\n\nexport default withRouter(ListingTable);\n"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ const ENTITY_PUBLISHED = 'published';
6
6
  const SELECT_DEFAULT_VALUE = 'Please Choose...';
7
7
  const LEAVE_PAGE_MESSAGE = 'You are going to leave without saving. Are you sure you want to leave?';
8
8
  const KEY_TO_CHECK = 'values.slug';
9
+ const TITLE_FIELD_ID = 'name';
9
10
  const MENU_PERMISSIONS = ['update:any', 'update:own', 'create:any', 'create:own'];
10
11
  const PREVIEW_INTERFACE = 'preview/can-preview';
11
12
  const PAGE_BUILDER_FIELD_ID = 'pageBuilder';
@@ -22,6 +23,7 @@ const SAVE_BUTTON_TEXTS = {
22
23
  const ACTIONS = 'actions';
23
24
  const UNPUBLISHED_WARNING = 'Page already unpublished';
24
25
  const PAGE_NOT_FOUND = 'Page not found';
26
+ const VIEW_UNPUBLISHED_REASON = 'Not published yet - publish to view it on the site';
25
27
  const SAVE_BEFORE_PUBLISH_MESSAGE = 'You have to click save to create the record before you can publish';
26
28
  const PAGE_BUILDER_TAB = 'Page builder';
27
29
  const PAGE_BUILDER_TAB_INDEX = 1;
@@ -38,5 +40,5 @@ const ICON_COLOR = {
38
40
  };
39
41
  const DEFAULT_FILTER_OPTION_LABEL = 'Any';
40
42
  const DEBUG_PARAM = 'blaze_debug=1';
41
- export { DATA_LISTING_PREFIX, DEBUG_PARAM, ENTITY_PUBLISHED, KEY_TO_CHECK, LEAVE_PAGE_MESSAGE, MENU_PERMISSIONS, PAGE_BUILDER, PLUGIN_NAME, PREVIEW_INTERFACE, SELECT_DEFAULT_VALUE, TEXT_CONTENT_TYPE, PAGE_BUILDER_FIELD_ID, PAGE_BUILDER_TEMPLATE_FIELD_ID, ERROR, SUCCESS, PUBLISHED, UNPUBLISHED, SAVE_BUTTON_TEXTS, ACTIONS, PAGE_BUILDER_TAB_INDEX, EDITOR_VIEW_TAB_INDEX, EDITOR_VIEW_TAB, PAGE_BUILDER_TAB, UNPUBLISHED_WARNING, SAVE_BEFORE_PUBLISH_MESSAGE, ICON_SIZE, ICON_COLOR, PAGE_NOT_FOUND, ENTER_KEY, DEFAULT_FILTER_OPTION_LABEL };
43
+ export { DATA_LISTING_PREFIX, DEBUG_PARAM, ENTITY_PUBLISHED, KEY_TO_CHECK, TITLE_FIELD_ID, LEAVE_PAGE_MESSAGE, MENU_PERMISSIONS, PAGE_BUILDER, PLUGIN_NAME, PREVIEW_INTERFACE, SELECT_DEFAULT_VALUE, TEXT_CONTENT_TYPE, PAGE_BUILDER_FIELD_ID, PAGE_BUILDER_TEMPLATE_FIELD_ID, ERROR, SUCCESS, PUBLISHED, UNPUBLISHED, SAVE_BUTTON_TEXTS, ACTIONS, PAGE_BUILDER_TAB_INDEX, EDITOR_VIEW_TAB_INDEX, EDITOR_VIEW_TAB, PAGE_BUILDER_TAB, UNPUBLISHED_WARNING, SAVE_BEFORE_PUBLISH_MESSAGE, ICON_SIZE, ICON_COLOR, PAGE_NOT_FOUND, VIEW_UNPUBLISHED_REASON, ENTER_KEY, DEFAULT_FILTER_OPTION_LABEL };
42
44
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["PLUGIN_NAME","DATA_LISTING_PREFIX","PAGE_BUILDER","TEXT_CONTENT_TYPE","ENTITY_PUBLISHED","SELECT_DEFAULT_VALUE","LEAVE_PAGE_MESSAGE","KEY_TO_CHECK","MENU_PERMISSIONS","PREVIEW_INTERFACE","PAGE_BUILDER_FIELD_ID","PAGE_BUILDER_TEMPLATE_FIELD_ID","ERROR","SUCCESS","PUBLISHED","UNPUBLISHED","SAVE_BUTTON_TEXTS","save","saved","saving","ACTIONS","UNPUBLISHED_WARNING","PAGE_NOT_FOUND","SAVE_BEFORE_PUBLISH_MESSAGE","PAGE_BUILDER_TAB","PAGE_BUILDER_TAB_INDEX","EDITOR_VIEW_TAB","EDITOR_VIEW_TAB_INDEX","ENTER_KEY","ICON_SIZE","WIDTH","HEIGHT","ICON_COLOR","STROKE","FILL","DEFAULT_FILTER_OPTION_LABEL","DEBUG_PARAM"],"sources":["../src/constants.js"],"sourcesContent":["const PLUGIN_NAME = 'data-ui';\nconst DATA_LISTING_PREFIX = '/data-listing';\nconst PAGE_BUILDER = 'pageBuilder';\nconst TEXT_CONTENT_TYPE = 'Publish';\nconst ENTITY_PUBLISHED = 'published';\nconst SELECT_DEFAULT_VALUE = 'Please Choose...';\nconst LEAVE_PAGE_MESSAGE = 'You are going to leave without saving. Are you sure you want to leave?';\nconst KEY_TO_CHECK = 'values.slug';\nconst MENU_PERMISSIONS = ['update:any', 'update:own', 'create:any', 'create:own'];\nconst PREVIEW_INTERFACE = 'preview/can-preview';\nconst PAGE_BUILDER_FIELD_ID = 'pageBuilder';\nconst PAGE_BUILDER_TEMPLATE_FIELD_ID = 'pageBuilderTemplateId';\nconst ERROR = 'error';\nconst SUCCESS = 'success';\nconst PUBLISHED = 'published';\nconst UNPUBLISHED = 'unpublished';\nconst SAVE_BUTTON_TEXTS = { save: 'save', saved: 'saved', saving: 'saving' };\nconst ACTIONS = 'actions';\nconst UNPUBLISHED_WARNING = 'Page already unpublished';\nconst PAGE_NOT_FOUND = 'Page not found';\nconst SAVE_BEFORE_PUBLISH_MESSAGE =\n 'You have to click save to create the record before you can publish';\n\nconst PAGE_BUILDER_TAB = 'Page builder';\nconst PAGE_BUILDER_TAB_INDEX = 1;\nconst EDITOR_VIEW_TAB = 'Editor view';\nconst EDITOR_VIEW_TAB_INDEX = 0;\n\nconst ENTER_KEY = 'Enter';\n\nconst ICON_SIZE = {\n WIDTH: '25px',\n HEIGHT: '25px'\n};\n\nconst ICON_COLOR = {\n STROKE: '#63779C',\n FILL: '#63779C'\n};\n\nconst DEFAULT_FILTER_OPTION_LABEL = 'Any';\nconst DEBUG_PARAM = 'blaze_debug=1';\n\nexport {\n DATA_LISTING_PREFIX,\n DEBUG_PARAM,\n ENTITY_PUBLISHED,\n KEY_TO_CHECK,\n LEAVE_PAGE_MESSAGE,\n MENU_PERMISSIONS,\n PAGE_BUILDER,\n PLUGIN_NAME,\n PREVIEW_INTERFACE,\n SELECT_DEFAULT_VALUE,\n TEXT_CONTENT_TYPE,\n PAGE_BUILDER_FIELD_ID,\n PAGE_BUILDER_TEMPLATE_FIELD_ID,\n ERROR,\n SUCCESS,\n PUBLISHED,\n UNPUBLISHED,\n SAVE_BUTTON_TEXTS,\n ACTIONS,\n PAGE_BUILDER_TAB_INDEX,\n EDITOR_VIEW_TAB_INDEX,\n EDITOR_VIEW_TAB,\n PAGE_BUILDER_TAB,\n UNPUBLISHED_WARNING,\n SAVE_BEFORE_PUBLISH_MESSAGE,\n ICON_SIZE,\n ICON_COLOR,\n PAGE_NOT_FOUND,\n ENTER_KEY,\n DEFAULT_FILTER_OPTION_LABEL\n};\n"],"mappings":"AAAA,MAAMA,WAAW,GAAG,SAAS;AAC7B,MAAMC,mBAAmB,GAAG,eAAe;AAC3C,MAAMC,YAAY,GAAG,aAAa;AAClC,MAAMC,iBAAiB,GAAG,SAAS;AACnC,MAAMC,gBAAgB,GAAG,WAAW;AACpC,MAAMC,oBAAoB,GAAG,kBAAkB;AAC/C,MAAMC,kBAAkB,GAAG,wEAAwE;AACnG,MAAMC,YAAY,GAAG,aAAa;AAClC,MAAMC,gBAAgB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;AACjF,MAAMC,iBAAiB,GAAG,qBAAqB;AAC/C,MAAMC,qBAAqB,GAAG,aAAa;AAC3C,MAAMC,8BAA8B,GAAG,uBAAuB;AAC9D,MAAMC,KAAK,GAAG,OAAO;AACrB,MAAMC,OAAO,GAAG,SAAS;AACzB,MAAMC,SAAS,GAAG,WAAW;AAC7B,MAAMC,WAAW,GAAG,aAAa;AACjC,MAAMC,iBAAiB,GAAG;EAAEC,IAAI,EAAE,MAAM;EAAEC,KAAK,EAAE,OAAO;EAAEC,MAAM,EAAE;AAAS,CAAC;AAC5E,MAAMC,OAAO,GAAG,SAAS;AACzB,MAAMC,mBAAmB,GAAG,0BAA0B;AACtD,MAAMC,cAAc,GAAG,gBAAgB;AACvC,MAAMC,2BAA2B,GAC/B,oEAAoE;AAEtE,MAAMC,gBAAgB,GAAG,cAAc;AACvC,MAAMC,sBAAsB,GAAG,CAAC;AAChC,MAAMC,eAAe,GAAG,aAAa;AACrC,MAAMC,qBAAqB,GAAG,CAAC;AAE/B,MAAMC,SAAS,GAAG,OAAO;AAEzB,MAAMC,SAAS,GAAG;EAChBC,KAAK,EAAE,MAAM;EACbC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,UAAU,GAAG;EACjBC,MAAM,EAAE,SAAS;EACjBC,IAAI,EAAE;AACR,CAAC;AAED,MAAMC,2BAA2B,GAAG,KAAK;AACzC,MAAMC,WAAW,GAAG,eAAe;AAEnC,SACEnC,mBAAmB,EACnBmC,WAAW,EACXhC,gBAAgB,EAChBG,YAAY,EACZD,kBAAkB,EAClBE,gBAAgB,EAChBN,YAAY,EACZF,WAAW,EACXS,iBAAiB,EACjBJ,oBAAoB,EACpBF,iBAAiB,EACjBO,qBAAqB,EACrBC,8BAA8B,EAC9BC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,WAAW,EACXC,iBAAiB,EACjBI,OAAO,EACPK,sBAAsB,EACtBE,qBAAqB,EACrBD,eAAe,EACfF,gBAAgB,EAChBH,mBAAmB,EACnBE,2BAA2B,EAC3BM,SAAS,EACTG,UAAU,EACVV,cAAc,EACdM,SAAS,EACTO,2BAA2B","ignoreList":[]}
1
+ {"version":3,"file":"constants.js","names":["PLUGIN_NAME","DATA_LISTING_PREFIX","PAGE_BUILDER","TEXT_CONTENT_TYPE","ENTITY_PUBLISHED","SELECT_DEFAULT_VALUE","LEAVE_PAGE_MESSAGE","KEY_TO_CHECK","TITLE_FIELD_ID","MENU_PERMISSIONS","PREVIEW_INTERFACE","PAGE_BUILDER_FIELD_ID","PAGE_BUILDER_TEMPLATE_FIELD_ID","ERROR","SUCCESS","PUBLISHED","UNPUBLISHED","SAVE_BUTTON_TEXTS","save","saved","saving","ACTIONS","UNPUBLISHED_WARNING","PAGE_NOT_FOUND","VIEW_UNPUBLISHED_REASON","SAVE_BEFORE_PUBLISH_MESSAGE","PAGE_BUILDER_TAB","PAGE_BUILDER_TAB_INDEX","EDITOR_VIEW_TAB","EDITOR_VIEW_TAB_INDEX","ENTER_KEY","ICON_SIZE","WIDTH","HEIGHT","ICON_COLOR","STROKE","FILL","DEFAULT_FILTER_OPTION_LABEL","DEBUG_PARAM"],"sources":["../src/constants.js"],"sourcesContent":["const PLUGIN_NAME = 'data-ui';\nconst DATA_LISTING_PREFIX = '/data-listing';\nconst PAGE_BUILDER = 'pageBuilder';\nconst TEXT_CONTENT_TYPE = 'Publish';\nconst ENTITY_PUBLISHED = 'published';\nconst SELECT_DEFAULT_VALUE = 'Please Choose...';\nconst LEAVE_PAGE_MESSAGE = 'You are going to leave without saving. Are you sure you want to leave?';\nconst KEY_TO_CHECK = 'values.slug';\nconst TITLE_FIELD_ID = 'name';\nconst MENU_PERMISSIONS = ['update:any', 'update:own', 'create:any', 'create:own'];\nconst PREVIEW_INTERFACE = 'preview/can-preview';\nconst PAGE_BUILDER_FIELD_ID = 'pageBuilder';\nconst PAGE_BUILDER_TEMPLATE_FIELD_ID = 'pageBuilderTemplateId';\nconst ERROR = 'error';\nconst SUCCESS = 'success';\nconst PUBLISHED = 'published';\nconst UNPUBLISHED = 'unpublished';\nconst SAVE_BUTTON_TEXTS = { save: 'save', saved: 'saved', saving: 'saving' };\nconst ACTIONS = 'actions';\nconst UNPUBLISHED_WARNING = 'Page already unpublished';\nconst PAGE_NOT_FOUND = 'Page not found';\nconst VIEW_UNPUBLISHED_REASON = 'Not published yet - publish to view it on the site';\nconst SAVE_BEFORE_PUBLISH_MESSAGE =\n 'You have to click save to create the record before you can publish';\n\nconst PAGE_BUILDER_TAB = 'Page builder';\nconst PAGE_BUILDER_TAB_INDEX = 1;\nconst EDITOR_VIEW_TAB = 'Editor view';\nconst EDITOR_VIEW_TAB_INDEX = 0;\n\nconst ENTER_KEY = 'Enter';\n\nconst ICON_SIZE = {\n WIDTH: '25px',\n HEIGHT: '25px'\n};\n\nconst ICON_COLOR = {\n STROKE: '#63779C',\n FILL: '#63779C'\n};\n\nconst DEFAULT_FILTER_OPTION_LABEL = 'Any';\nconst DEBUG_PARAM = 'blaze_debug=1';\n\nexport {\n DATA_LISTING_PREFIX,\n DEBUG_PARAM,\n ENTITY_PUBLISHED,\n KEY_TO_CHECK,\n TITLE_FIELD_ID,\n LEAVE_PAGE_MESSAGE,\n MENU_PERMISSIONS,\n PAGE_BUILDER,\n PLUGIN_NAME,\n PREVIEW_INTERFACE,\n SELECT_DEFAULT_VALUE,\n TEXT_CONTENT_TYPE,\n PAGE_BUILDER_FIELD_ID,\n PAGE_BUILDER_TEMPLATE_FIELD_ID,\n ERROR,\n SUCCESS,\n PUBLISHED,\n UNPUBLISHED,\n SAVE_BUTTON_TEXTS,\n ACTIONS,\n PAGE_BUILDER_TAB_INDEX,\n EDITOR_VIEW_TAB_INDEX,\n EDITOR_VIEW_TAB,\n PAGE_BUILDER_TAB,\n UNPUBLISHED_WARNING,\n SAVE_BEFORE_PUBLISH_MESSAGE,\n ICON_SIZE,\n ICON_COLOR,\n PAGE_NOT_FOUND,\n VIEW_UNPUBLISHED_REASON,\n ENTER_KEY,\n DEFAULT_FILTER_OPTION_LABEL\n};\n"],"mappings":"AAAA,MAAMA,WAAW,GAAG,SAAS;AAC7B,MAAMC,mBAAmB,GAAG,eAAe;AAC3C,MAAMC,YAAY,GAAG,aAAa;AAClC,MAAMC,iBAAiB,GAAG,SAAS;AACnC,MAAMC,gBAAgB,GAAG,WAAW;AACpC,MAAMC,oBAAoB,GAAG,kBAAkB;AAC/C,MAAMC,kBAAkB,GAAG,wEAAwE;AACnG,MAAMC,YAAY,GAAG,aAAa;AAClC,MAAMC,cAAc,GAAG,MAAM;AAC7B,MAAMC,gBAAgB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC;AACjF,MAAMC,iBAAiB,GAAG,qBAAqB;AAC/C,MAAMC,qBAAqB,GAAG,aAAa;AAC3C,MAAMC,8BAA8B,GAAG,uBAAuB;AAC9D,MAAMC,KAAK,GAAG,OAAO;AACrB,MAAMC,OAAO,GAAG,SAAS;AACzB,MAAMC,SAAS,GAAG,WAAW;AAC7B,MAAMC,WAAW,GAAG,aAAa;AACjC,MAAMC,iBAAiB,GAAG;EAAEC,IAAI,EAAE,MAAM;EAAEC,KAAK,EAAE,OAAO;EAAEC,MAAM,EAAE;AAAS,CAAC;AAC5E,MAAMC,OAAO,GAAG,SAAS;AACzB,MAAMC,mBAAmB,GAAG,0BAA0B;AACtD,MAAMC,cAAc,GAAG,gBAAgB;AACvC,MAAMC,uBAAuB,GAAG,oDAAoD;AACpF,MAAMC,2BAA2B,GAC/B,oEAAoE;AAEtE,MAAMC,gBAAgB,GAAG,cAAc;AACvC,MAAMC,sBAAsB,GAAG,CAAC;AAChC,MAAMC,eAAe,GAAG,aAAa;AACrC,MAAMC,qBAAqB,GAAG,CAAC;AAE/B,MAAMC,SAAS,GAAG,OAAO;AAEzB,MAAMC,SAAS,GAAG;EAChBC,KAAK,EAAE,MAAM;EACbC,MAAM,EAAE;AACV,CAAC;AAED,MAAMC,UAAU,GAAG;EACjBC,MAAM,EAAE,SAAS;EACjBC,IAAI,EAAE;AACR,CAAC;AAED,MAAMC,2BAA2B,GAAG,KAAK;AACzC,MAAMC,WAAW,GAAG,eAAe;AAEnC,SACErC,mBAAmB,EACnBqC,WAAW,EACXlC,gBAAgB,EAChBG,YAAY,EACZC,cAAc,EACdF,kBAAkB,EAClBG,gBAAgB,EAChBP,YAAY,EACZF,WAAW,EACXU,iBAAiB,EACjBL,oBAAoB,EACpBF,iBAAiB,EACjBQ,qBAAqB,EACrBC,8BAA8B,EAC9BC,KAAK,EACLC,OAAO,EACPC,SAAS,EACTC,WAAW,EACXC,iBAAiB,EACjBI,OAAO,EACPM,sBAAsB,EACtBE,qBAAqB,EACrBD,eAAe,EACfF,gBAAgB,EAChBJ,mBAAmB,EACnBG,2BAA2B,EAC3BM,SAAS,EACTG,UAAU,EACVX,cAAc,EACdC,uBAAuB,EACvBM,SAAS,EACTO,2BAA2B","ignoreList":[]}
@@ -2,6 +2,16 @@ import { getQuery } from '@blaze-cms/admin-ui-utils';
2
2
  const {
3
3
  MENU_PERMISSIONS
4
4
  } = require('../constants');
5
+
6
+ // Menu items label a listing of many records, so they use the plural. The
7
+ // fallback matters: this package and the API are published independently, so an
8
+ // admin bundle can run against an API that does not yet resolve the field.
9
+ function getMenuLabel({
10
+ displayName,
11
+ displayNamePlural
12
+ }) {
13
+ return displayNamePlural || displayName || '';
14
+ }
5
15
  function getAddContentMenuItems(app) {
6
16
  return async ({
7
17
  addConfig
@@ -20,16 +30,21 @@ function getAddContentMenuItems(app) {
20
30
  });
21
31
  if (!getEntitySchemas || !getEntitySchemas.length) return; // no items so don't add section
22
32
 
23
- const menuItems = {};
24
33
  const sectionMenuItems = {
25
34
  settings: {}
26
35
  };
27
- getEntitySchemas.forEach(({
28
- id,
29
- displayName,
30
- displayProperties
31
- }) => {
32
- if (!displayProperties) return null;
36
+
37
+ // Order by the label that is rendered, not by displayName. getEntitySchemas
38
+ // is sorted on displayName server-side and that order serves every other
39
+ // consumer, which shows the singular, so the plural ordering belongs here.
40
+ // The explicit `order` is what MenuSectionItems reads to sort.
41
+ const orderedEntities = [...getEntitySchemas].sort((entityA, entityB) => getMenuLabel(entityA).localeCompare(getMenuLabel(entityB)));
42
+ orderedEntities.forEach((entity, order) => {
43
+ const {
44
+ id,
45
+ displayProperties
46
+ } = entity;
47
+ if (!displayProperties) return;
33
48
  const {
34
49
  adminMenu: {
35
50
  sectionKey = 'settings'
@@ -37,18 +52,15 @@ function getAddContentMenuItems(app) {
37
52
  } = displayProperties;
38
53
  const sectionItems = sectionMenuItems[sectionKey] || {};
39
54
  sectionItems[id] = {
40
- label: displayName,
55
+ label: getMenuLabel(entity),
56
+ order,
41
57
  uri: `/data-listing/${id}`
42
58
  };
43
59
  sectionMenuItems[sectionKey] = sectionItems;
44
60
  });
45
61
  const menuConfig = {
46
62
  main: {
47
- items: {
48
- settings: {
49
- items: menuItems
50
- }
51
- }
63
+ items: {}
52
64
  }
53
65
  };
54
66
  Object.entries(sectionMenuItems).forEach(([sectionKey, sectionItems]) => {
@@ -56,15 +68,6 @@ function getAddContentMenuItems(app) {
56
68
  sectionConfig.items = sectionItems;
57
69
  menuConfig.main.items[sectionKey] = sectionConfig;
58
70
  });
59
- getEntitySchemas.forEach(({
60
- id,
61
- displayName
62
- }) => {
63
- menuItems[id] = {
64
- label: displayName,
65
- uri: `/data-listing/${id}`
66
- };
67
- });
68
71
  addConfig(menuConfig);
69
72
  };
70
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"add-content-menu-items.js","names":["getQuery","MENU_PERMISSIONS","require","getAddContentMenuItems","app","addConfig","client","getClient","data","getEntitySchemas","query","variables","canDoActions","length","menuItems","sectionMenuItems","settings","forEach","id","displayName","displayProperties","adminMenu","sectionKey","sectionItems","label","uri","menuConfig","main","items","Object","entries","sectionConfig"],"sources":["../../src/utils/add-content-menu-items.js"],"sourcesContent":["import { getQuery } from '@blaze-cms/admin-ui-utils';\n\nconst { MENU_PERMISSIONS } = require('../constants');\n\nfunction getAddContentMenuItems(app) {\n return async ({ addConfig }) => {\n const client = app.getClient();\n const {\n data: { getEntitySchemas }\n } = await client.query({\n query: getQuery('GET_USER_EDITABLE_ENTITIES'),\n variables: {\n // only return entities that the current user can do the following actions on\n canDoActions: MENU_PERMISSIONS\n }\n });\n\n if (!getEntitySchemas || !getEntitySchemas.length) return; // no items so don't add section\n\n const menuItems = {};\n const sectionMenuItems = { settings: {} };\n\n getEntitySchemas.forEach(({ id, displayName, displayProperties }) => {\n if (!displayProperties) return null;\n\n const { adminMenu: { sectionKey = 'settings' } = {} } = displayProperties;\n const sectionItems = sectionMenuItems[sectionKey] || {};\n sectionItems[id] = {\n label: displayName,\n uri: `/data-listing/${id}`\n };\n sectionMenuItems[sectionKey] = sectionItems;\n });\n\n const menuConfig = {\n main: {\n items: {\n settings: {\n items: menuItems\n }\n }\n }\n };\n\n Object.entries(sectionMenuItems).forEach(([sectionKey, sectionItems]) => {\n const sectionConfig = menuConfig.main.items[sectionKey] || {};\n sectionConfig.items = sectionItems;\n menuConfig.main.items[sectionKey] = sectionConfig;\n });\n\n getEntitySchemas.forEach(({ id, displayName }) => {\n menuItems[id] = {\n label: displayName,\n uri: `/data-listing/${id}`\n };\n });\n\n addConfig(menuConfig);\n };\n}\n\nexport default getAddContentMenuItems;\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,2BAA2B;AAEpD,MAAM;EAAEC;AAAiB,CAAC,GAAGC,OAAO,CAAC,cAAc,CAAC;AAEpD,SAASC,sBAAsBA,CAACC,GAAG,EAAE;EACnC,OAAO,OAAO;IAAEC;EAAU,CAAC,KAAK;IAC9B,MAAMC,MAAM,GAAGF,GAAG,CAACG,SAAS,CAAC,CAAC;IAC9B,MAAM;MACJC,IAAI,EAAE;QAAEC;MAAiB;IAC3B,CAAC,GAAG,MAAMH,MAAM,CAACI,KAAK,CAAC;MACrBA,KAAK,EAAEV,QAAQ,CAAC,4BAA4B,CAAC;MAC7CW,SAAS,EAAE;QACT;QACAC,YAAY,EAAEX;MAChB;IACF,CAAC,CAAC;IAEF,IAAI,CAACQ,gBAAgB,IAAI,CAACA,gBAAgB,CAACI,MAAM,EAAE,OAAO,CAAC;;IAE3D,MAAMC,SAAS,GAAG,CAAC,CAAC;IACpB,MAAMC,gBAAgB,GAAG;MAAEC,QAAQ,EAAE,CAAC;IAAE,CAAC;IAEzCP,gBAAgB,CAACQ,OAAO,CAAC,CAAC;MAAEC,EAAE;MAAEC,WAAW;MAAEC;IAAkB,CAAC,KAAK;MACnE,IAAI,CAACA,iBAAiB,EAAE,OAAO,IAAI;MAEnC,MAAM;QAAEC,SAAS,EAAE;UAAEC,UAAU,GAAG;QAAW,CAAC,GAAG,CAAC;MAAE,CAAC,GAAGF,iBAAiB;MACzE,MAAMG,YAAY,GAAGR,gBAAgB,CAACO,UAAU,CAAC,IAAI,CAAC,CAAC;MACvDC,YAAY,CAACL,EAAE,CAAC,GAAG;QACjBM,KAAK,EAAEL,WAAW;QAClBM,GAAG,EAAE,iBAAiBP,EAAE;MAC1B,CAAC;MACDH,gBAAgB,CAACO,UAAU,CAAC,GAAGC,YAAY;IAC7C,CAAC,CAAC;IAEF,MAAMG,UAAU,GAAG;MACjBC,IAAI,EAAE;QACJC,KAAK,EAAE;UACLZ,QAAQ,EAAE;YACRY,KAAK,EAAEd;UACT;QACF;MACF;IACF,CAAC;IAEDe,MAAM,CAACC,OAAO,CAACf,gBAAgB,CAAC,CAACE,OAAO,CAAC,CAAC,CAACK,UAAU,EAAEC,YAAY,CAAC,KAAK;MACvE,MAAMQ,aAAa,GAAGL,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,UAAU,CAAC,IAAI,CAAC,CAAC;MAC7DS,aAAa,CAACH,KAAK,GAAGL,YAAY;MAClCG,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,UAAU,CAAC,GAAGS,aAAa;IACnD,CAAC,CAAC;IAEFtB,gBAAgB,CAACQ,OAAO,CAAC,CAAC;MAAEC,EAAE;MAAEC;IAAY,CAAC,KAAK;MAChDL,SAAS,CAACI,EAAE,CAAC,GAAG;QACdM,KAAK,EAAEL,WAAW;QAClBM,GAAG,EAAE,iBAAiBP,EAAE;MAC1B,CAAC;IACH,CAAC,CAAC;IAEFb,SAAS,CAACqB,UAAU,CAAC;EACvB,CAAC;AACH;AAEA,eAAevB,sBAAsB","ignoreList":[]}
1
+ {"version":3,"file":"add-content-menu-items.js","names":["getQuery","MENU_PERMISSIONS","require","getMenuLabel","displayName","displayNamePlural","getAddContentMenuItems","app","addConfig","client","getClient","data","getEntitySchemas","query","variables","canDoActions","length","sectionMenuItems","settings","orderedEntities","sort","entityA","entityB","localeCompare","forEach","entity","order","id","displayProperties","adminMenu","sectionKey","sectionItems","label","uri","menuConfig","main","items","Object","entries","sectionConfig"],"sources":["../../src/utils/add-content-menu-items.js"],"sourcesContent":["import { getQuery } from '@blaze-cms/admin-ui-utils';\n\nconst { MENU_PERMISSIONS } = require('../constants');\n\n// Menu items label a listing of many records, so they use the plural. The\n// fallback matters: this package and the API are published independently, so an\n// admin bundle can run against an API that does not yet resolve the field.\nfunction getMenuLabel({ displayName, displayNamePlural }) {\n return displayNamePlural || displayName || '';\n}\n\nfunction getAddContentMenuItems(app) {\n return async ({ addConfig }) => {\n const client = app.getClient();\n const {\n data: { getEntitySchemas }\n } = await client.query({\n query: getQuery('GET_USER_EDITABLE_ENTITIES'),\n variables: {\n // only return entities that the current user can do the following actions on\n canDoActions: MENU_PERMISSIONS\n }\n });\n\n if (!getEntitySchemas || !getEntitySchemas.length) return; // no items so don't add section\n\n const sectionMenuItems = { settings: {} };\n\n // Order by the label that is rendered, not by displayName. getEntitySchemas\n // is sorted on displayName server-side and that order serves every other\n // consumer, which shows the singular, so the plural ordering belongs here.\n // The explicit `order` is what MenuSectionItems reads to sort.\n const orderedEntities = [...getEntitySchemas].sort((entityA, entityB) =>\n getMenuLabel(entityA).localeCompare(getMenuLabel(entityB))\n );\n\n orderedEntities.forEach((entity, order) => {\n const { id, displayProperties } = entity;\n if (!displayProperties) return;\n\n const { adminMenu: { sectionKey = 'settings' } = {} } = displayProperties;\n const sectionItems = sectionMenuItems[sectionKey] || {};\n sectionItems[id] = {\n label: getMenuLabel(entity),\n order,\n uri: `/data-listing/${id}`\n };\n sectionMenuItems[sectionKey] = sectionItems;\n });\n\n const menuConfig = { main: { items: {} } };\n\n Object.entries(sectionMenuItems).forEach(([sectionKey, sectionItems]) => {\n const sectionConfig = menuConfig.main.items[sectionKey] || {};\n sectionConfig.items = sectionItems;\n menuConfig.main.items[sectionKey] = sectionConfig;\n });\n\n addConfig(menuConfig);\n };\n}\n\nexport default getAddContentMenuItems;\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,2BAA2B;AAEpD,MAAM;EAAEC;AAAiB,CAAC,GAAGC,OAAO,CAAC,cAAc,CAAC;;AAEpD;AACA;AACA;AACA,SAASC,YAAYA,CAAC;EAAEC,WAAW;EAAEC;AAAkB,CAAC,EAAE;EACxD,OAAOA,iBAAiB,IAAID,WAAW,IAAI,EAAE;AAC/C;AAEA,SAASE,sBAAsBA,CAACC,GAAG,EAAE;EACnC,OAAO,OAAO;IAAEC;EAAU,CAAC,KAAK;IAC9B,MAAMC,MAAM,GAAGF,GAAG,CAACG,SAAS,CAAC,CAAC;IAC9B,MAAM;MACJC,IAAI,EAAE;QAAEC;MAAiB;IAC3B,CAAC,GAAG,MAAMH,MAAM,CAACI,KAAK,CAAC;MACrBA,KAAK,EAAEb,QAAQ,CAAC,4BAA4B,CAAC;MAC7Cc,SAAS,EAAE;QACT;QACAC,YAAY,EAAEd;MAChB;IACF,CAAC,CAAC;IAEF,IAAI,CAACW,gBAAgB,IAAI,CAACA,gBAAgB,CAACI,MAAM,EAAE,OAAO,CAAC;;IAE3D,MAAMC,gBAAgB,GAAG;MAAEC,QAAQ,EAAE,CAAC;IAAE,CAAC;;IAEzC;IACA;IACA;IACA;IACA,MAAMC,eAAe,GAAG,CAAC,GAAGP,gBAAgB,CAAC,CAACQ,IAAI,CAAC,CAACC,OAAO,EAAEC,OAAO,KAClEnB,YAAY,CAACkB,OAAO,CAAC,CAACE,aAAa,CAACpB,YAAY,CAACmB,OAAO,CAAC,CAC3D,CAAC;IAEDH,eAAe,CAACK,OAAO,CAAC,CAACC,MAAM,EAAEC,KAAK,KAAK;MACzC,MAAM;QAAEC,EAAE;QAAEC;MAAkB,CAAC,GAAGH,MAAM;MACxC,IAAI,CAACG,iBAAiB,EAAE;MAExB,MAAM;QAAEC,SAAS,EAAE;UAAEC,UAAU,GAAG;QAAW,CAAC,GAAG,CAAC;MAAE,CAAC,GAAGF,iBAAiB;MACzE,MAAMG,YAAY,GAAGd,gBAAgB,CAACa,UAAU,CAAC,IAAI,CAAC,CAAC;MACvDC,YAAY,CAACJ,EAAE,CAAC,GAAG;QACjBK,KAAK,EAAE7B,YAAY,CAACsB,MAAM,CAAC;QAC3BC,KAAK;QACLO,GAAG,EAAE,iBAAiBN,EAAE;MAC1B,CAAC;MACDV,gBAAgB,CAACa,UAAU,CAAC,GAAGC,YAAY;IAC7C,CAAC,CAAC;IAEF,MAAMG,UAAU,GAAG;MAAEC,IAAI,EAAE;QAAEC,KAAK,EAAE,CAAC;MAAE;IAAE,CAAC;IAE1CC,MAAM,CAACC,OAAO,CAACrB,gBAAgB,CAAC,CAACO,OAAO,CAAC,CAAC,CAACM,UAAU,EAAEC,YAAY,CAAC,KAAK;MACvE,MAAMQ,aAAa,GAAGL,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,UAAU,CAAC,IAAI,CAAC,CAAC;MAC7DS,aAAa,CAACH,KAAK,GAAGL,YAAY;MAClCG,UAAU,CAACC,IAAI,CAACC,KAAK,CAACN,UAAU,CAAC,GAAGS,aAAa;IACnD,CAAC,CAAC;IAEF/B,SAAS,CAAC0B,UAAU,CAAC;EACvB,CAAC;AACH;AAEA,eAAe5B,sBAAsB","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blaze-cms/plugin-data-ui",
3
- "version": "0.146.0-rc-eagle-3.9",
3
+ "version": "0.146.0-rc-eagle-3.11",
4
4
  "description": "Blaze plugin data ui",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib-es/index.js",
@@ -32,11 +32,11 @@
32
32
  },
33
33
  "license": "GPL-3.0",
34
34
  "dependencies": {
35
- "@blaze-cms/admin-ui-utils": "0.146.0-rc-eagle-3.6",
35
+ "@blaze-cms/admin-ui-utils": "0.146.0-rc-eagle-3.10",
36
36
  "@blaze-cms/core-errors": "0.146.0-rc-eagle-3.0",
37
37
  "@blaze-cms/plugin-render-hooks-ui": "0.146.0-rc-eagle-3.0",
38
- "@blaze-cms/react-form-builder": "0.146.0-rc-eagle-3.9",
39
- "@blaze-cms/react-page-builder": "0.146.0-rc-eagle-3.6",
38
+ "@blaze-cms/react-form-builder": "0.146.0-rc-eagle-3.11",
39
+ "@blaze-cms/react-page-builder": "0.146.0-rc-eagle-3.10",
40
40
  "@blaze-cms/setup-ui": "0.146.0-rc-eagle-3.0",
41
41
  "@blaze-cms/versioning-ui": "0.146.0-rc-eagle-3.0",
42
42
  "@blaze-react/button": "0.8.0-alpha.82",
@@ -72,5 +72,5 @@
72
72
  "lib/*",
73
73
  "lib-es/*"
74
74
  ],
75
- "gitHead": "acfa3a71a3c44d6665457ae88fcbb88d5c3c423e"
75
+ "gitHead": "7608ce3003f6f888840e6dd27c2888a97a1be839"
76
76
  }
@@ -5,7 +5,7 @@ import { useApolloClient } from '@apollo/client';
5
5
  import PropTypes from 'prop-types';
6
6
  import { RenderHook } from '@blaze-cms/plugin-render-hooks-ui';
7
7
  import { getQuery } from '@blaze-cms/admin-ui-utils';
8
- import { FormBuilder, parseFormValues } from '@blaze-cms/react-form-builder';
8
+ import { FormBuilder, parseFormValues, validate } from '@blaze-cms/react-form-builder';
9
9
  import { DeleteAction, CopyDataFromAction } from '@blaze-cms/admin';
10
10
  import { useToasts } from '@blaze-react/toaster';
11
11
  import cloneDeep from 'lodash.clonedeep';
@@ -23,13 +23,17 @@ import {
23
23
  PAGE_BUILDER_TEMPLATE_FIELD_ID,
24
24
  ERROR,
25
25
  SAVE_BUTTON_TEXTS,
26
- UNPUBLISHED_WARNING
26
+ UNPUBLISHED_WARNING,
27
+ VIEW_UNPUBLISHED_REASON,
28
+ TITLE_FIELD_ID
27
29
  } from '../../../constants';
28
30
  import EntityHeader from './EntityHeader';
29
31
 
30
32
  import {
31
33
  validateSideBarRelations,
34
+ canEditTitle,
32
35
  canViewPage,
36
+ hasViewableUrl,
33
37
  onViewUrlClick,
34
38
  getUpdatedFormValues,
35
39
  checkFulfilConditions
@@ -407,9 +411,29 @@ const Entity = ({
407
411
 
408
412
  const showModal = checkFulfilConditions(formData, modalStatus);
409
413
 
410
- const onViewUrlHandler = canViewPage(entity, schema, entityIsPublished)
411
- ? () => onViewUrlClick(getFullUrl)
412
- : onViewUrl;
414
+ // Unpublished keeps the button, disabled with a reason, rather than hiding it.
415
+ const isViewable = canViewPage(entity, schema, entityIsPublished);
416
+ const onViewUrlHandler = isViewable ? () => onViewUrlClick(getFullUrl) : onViewUrl;
417
+ const viewUrlDisabledReason =
418
+ !isViewable && hasViewableUrl(entity, schema) ? VIEW_UNPUBLISHED_REASON : null;
419
+
420
+ const onTitleChange = value => {
421
+ if (!componentIsMounted.current) return;
422
+ const updatedFormValues = getUpdatedFormValues({ id: TITLE_FIELD_ID, value, formValues });
423
+ const [isValid, valuesChecked] = validate({
424
+ values: updatedFormValues,
425
+ schema,
426
+ currentField: TITLE_FIELD_ID
427
+ });
428
+
429
+ setFormValues(valuesChecked);
430
+ setPageTitle(value);
431
+ setIsFormValid(isValid);
432
+ setIsSaveButtonAvailable(isValid);
433
+ isValid && setSaveButtonText(SAVE_BUTTON_TEXTS.save);
434
+ };
435
+
436
+ const onTitleChangeHandler = canEditTitle(schema, formValues) ? onTitleChange : null;
413
437
 
414
438
  const pageName = formData && formData.values && formData.values.name;
415
439
 
@@ -434,6 +458,8 @@ const Entity = ({
434
458
  toggleModal={setModalStatus}
435
459
  formData={formData}
436
460
  onViewUrl={onViewUrlHandler}
461
+ viewUrlDisabledReason={viewUrlDisabledReason}
462
+ onTitleChange={onTitleChangeHandler}
437
463
  saveButtonText={saveButtonText}
438
464
  saveOnChange={saveOnChange}
439
465
  entitySchema={entitySchema}
@@ -22,6 +22,8 @@ const EntityHeader = ({
22
22
  formData,
23
23
  pageName,
24
24
  onViewUrl,
25
+ viewUrlDisabledReason,
26
+ onTitleChange,
25
27
  saveOnChange
26
28
  }) => {
27
29
  const SaveButtonModifiers = isSaveButtonAvailable ? ['small'] : ['small', 'disabled'];
@@ -36,7 +38,17 @@ const EntityHeader = ({
36
38
  deleteAction.active && formData && Object.keys(formData.values).length !== 0;
37
39
 
38
40
  return (
39
- <PageHeader title={pageTitle} pageName={pageName} onViewUrl={onViewUrl}>
41
+ <PageHeader
42
+ title={pageTitle}
43
+ pageName={pageName}
44
+ onViewUrl={onViewUrl}
45
+ viewUrlDisabledReason={viewUrlDisabledReason}
46
+ onTitleChange={onTitleChange}
47
+ titleActions={
48
+ showPreviewButton ? (
49
+ <HeaderPreviewButton itemId={entityData.id} itemEntity={entityIdentifier} iconOnly />
50
+ ) : null
51
+ }>
40
52
  <PageHeader.Actions>
41
53
  {!saveOnChange && (
42
54
  <Button onClick={onSubmit} modifiers={SaveButtonModifiers} data-testid="button-save">
@@ -96,6 +108,8 @@ EntityHeader.propTypes = {
96
108
  toggleModal: PropTypes.func.isRequired,
97
109
  formData: PropTypes.object,
98
110
  onViewUrl: PropTypes.func.isRequired,
111
+ viewUrlDisabledReason: PropTypes.string,
112
+ onTitleChange: PropTypes.func,
99
113
  saveButtonText: PropTypes.string,
100
114
  saveOnChange: PropTypes.bool.isRequired
101
115
  };
@@ -105,6 +119,8 @@ EntityHeader.defaultProps = {
105
119
  entityIdentifier: '',
106
120
  formData: null,
107
121
  pageName: '',
122
+ viewUrlDisabledReason: null,
123
+ onTitleChange: null,
108
124
  saveButtonText: 'save'
109
125
  };
110
126
 
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import Button from '@blaze-react/button';
4
+ import { PageHeader } from '@blaze-cms/admin';
4
5
  import { useMutation } from '@apollo/client';
5
6
  import { getMutation } from '@blaze-cms/admin-ui-utils';
6
7
  import { DEBUG_PARAM } from '../../../../../constants';
7
8
 
8
- const HeaderPreviewButton = ({ itemId, itemEntity }) => {
9
+ const HeaderPreviewButton = ({ itemId, itemEntity, iconOnly }) => {
9
10
  const [createPreviewToken] = useMutation(getMutation('PREVIEW_TOKEN_MUTATION'));
10
11
  if (process.env.BLAZE_DISABLE_PREVIEW) return null;
11
12
 
@@ -35,6 +36,17 @@ const HeaderPreviewButton = ({ itemId, itemEntity }) => {
35
36
  } catch (err) {}
36
37
  };
37
38
 
39
+ if (iconOnly) {
40
+ return (
41
+ <PageHeader.IconButton
42
+ icon="visibility"
43
+ label="Preview"
44
+ onClick={onViewPreview}
45
+ data-testid="page-header-preview"
46
+ />
47
+ );
48
+ }
49
+
38
50
  return (
39
51
  <Button className="more-menu__link" onClick={onViewPreview}>
40
52
  Preview
@@ -44,7 +56,12 @@ const HeaderPreviewButton = ({ itemId, itemEntity }) => {
44
56
 
45
57
  HeaderPreviewButton.propTypes = {
46
58
  itemId: PropTypes.string.isRequired,
47
- itemEntity: PropTypes.string.isRequired
59
+ itemEntity: PropTypes.string.isRequired,
60
+ iconOnly: PropTypes.bool
61
+ };
62
+
63
+ HeaderPreviewButton.defaultProps = {
64
+ iconOnly: false
48
65
  };
49
66
 
50
67
  export default HeaderPreviewButton;
@@ -1,13 +1,31 @@
1
- import { DEBUG_PARAM, ENTITY_PUBLISHED, SELECT_DEFAULT_VALUE } from '../../../constants';
1
+ import {
2
+ DEBUG_PARAM,
3
+ ENTITY_PUBLISHED,
4
+ SELECT_DEFAULT_VALUE,
5
+ TITLE_FIELD_ID
6
+ } from '../../../constants';
7
+
8
+ // Whether this record has a front end url at all, publish state aside.
9
+ function hasViewableUrl(entity, schema) {
10
+ return !!(entity && entity.id && schema && schema.id && schema.properties.slug);
11
+ }
2
12
 
3
13
  function canViewPage(entity, schema, entityIsPublished) {
4
- return (
5
- entity &&
6
- entity.id &&
7
- schema &&
8
- schema.id &&
9
- entityIsPublished === ENTITY_PUBLISHED &&
10
- schema.properties.slug
14
+ return hasViewableUrl(entity, schema) && entityIsPublished === ENTITY_PUBLISHED;
15
+ }
16
+
17
+ // The header title is only editable inline when it is the record's name field.
18
+ function canEditTitle(schema, formValues) {
19
+ const { properties = {}, displayProperties = {} } = schema || {};
20
+ const { adminHeader } = displayProperties || {};
21
+ const isTitleFromName =
22
+ !adminHeader || (adminHeader.length === 1 && adminHeader[0] === TITLE_FIELD_ID);
23
+
24
+ return !!(
25
+ isTitleFromName &&
26
+ properties[TITLE_FIELD_ID] &&
27
+ Array.isArray(formValues) &&
28
+ formValues.some(({ id }) => id === TITLE_FIELD_ID)
11
29
  );
12
30
  }
13
31
 
@@ -71,7 +89,9 @@ function checkFulfilConditions(...args) {
71
89
  }
72
90
 
73
91
  export {
92
+ canEditTitle,
74
93
  canViewPage,
94
+ hasViewableUrl,
75
95
  validateSideBarRelations,
76
96
  onViewUrlClick,
77
97
  getUpdatedFormValues,
@@ -167,7 +167,7 @@ const ListingTable = ({ match, entitySchema, history }) => {
167
167
  itemName={itemToDelete.name}
168
168
  />
169
169
  )}
170
- <PageHeader title={entitySchema.displayName} subtitle="">
170
+ <PageHeader title={entitySchema.displayNamePlural || entitySchema.displayName} subtitle="">
171
171
  {createAction.active && !showAddButton && (
172
172
  <Link data-testid="addEntity" className="button button--small" to={`${match.url}/create`}>
173
173
  Add
package/src/constants.js CHANGED
@@ -6,6 +6,7 @@ const ENTITY_PUBLISHED = 'published';
6
6
  const SELECT_DEFAULT_VALUE = 'Please Choose...';
7
7
  const LEAVE_PAGE_MESSAGE = 'You are going to leave without saving. Are you sure you want to leave?';
8
8
  const KEY_TO_CHECK = 'values.slug';
9
+ const TITLE_FIELD_ID = 'name';
9
10
  const MENU_PERMISSIONS = ['update:any', 'update:own', 'create:any', 'create:own'];
10
11
  const PREVIEW_INTERFACE = 'preview/can-preview';
11
12
  const PAGE_BUILDER_FIELD_ID = 'pageBuilder';
@@ -18,6 +19,7 @@ const SAVE_BUTTON_TEXTS = { save: 'save', saved: 'saved', saving: 'saving' };
18
19
  const ACTIONS = 'actions';
19
20
  const UNPUBLISHED_WARNING = 'Page already unpublished';
20
21
  const PAGE_NOT_FOUND = 'Page not found';
22
+ const VIEW_UNPUBLISHED_REASON = 'Not published yet - publish to view it on the site';
21
23
  const SAVE_BEFORE_PUBLISH_MESSAGE =
22
24
  'You have to click save to create the record before you can publish';
23
25
 
@@ -46,6 +48,7 @@ export {
46
48
  DEBUG_PARAM,
47
49
  ENTITY_PUBLISHED,
48
50
  KEY_TO_CHECK,
51
+ TITLE_FIELD_ID,
49
52
  LEAVE_PAGE_MESSAGE,
50
53
  MENU_PERMISSIONS,
51
54
  PAGE_BUILDER,
@@ -70,6 +73,7 @@ export {
70
73
  ICON_SIZE,
71
74
  ICON_COLOR,
72
75
  PAGE_NOT_FOUND,
76
+ VIEW_UNPUBLISHED_REASON,
73
77
  ENTER_KEY,
74
78
  DEFAULT_FILTER_OPTION_LABEL
75
79
  };