@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.
- package/lib/components/EntityManager/Entity/Entity.js +26 -1
- package/lib/components/EntityManager/Entity/Entity.js.map +1 -1
- package/lib/components/EntityManager/Entity/EntityHeader/EntityHeader.js +14 -1
- package/lib/components/EntityManager/Entity/EntityHeader/EntityHeader.js.map +1 -1
- package/lib/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js +16 -2
- package/lib/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js.map +1 -1
- package/lib/components/EntityManager/utils/entity.js +22 -1
- package/lib/components/EntityManager/utils/entity.js.map +1 -1
- package/lib/components/ListingTable/ListingTable.js +1 -1
- package/lib/components/ListingTable/ListingTable.js.map +1 -1
- package/lib/constants.js +3 -1
- package/lib/constants.js.map +1 -1
- package/lib/utils/add-content-menu-items.js +25 -22
- package/lib/utils/add-content-menu-items.js.map +1 -1
- package/lib-es/components/EntityManager/Entity/Entity.js +29 -4
- package/lib-es/components/EntityManager/Entity/Entity.js.map +1 -1
- package/lib-es/components/EntityManager/Entity/EntityHeader/EntityHeader.js +14 -1
- package/lib-es/components/EntityManager/Entity/EntityHeader/EntityHeader.js.map +1 -1
- package/lib-es/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js +16 -2
- package/lib-es/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js.map +1 -1
- package/lib-es/components/EntityManager/utils/entity.js +23 -3
- package/lib-es/components/EntityManager/utils/entity.js.map +1 -1
- package/lib-es/components/ListingTable/ListingTable.js +1 -1
- package/lib-es/components/ListingTable/ListingTable.js.map +1 -1
- package/lib-es/constants.js +3 -1
- package/lib-es/constants.js.map +1 -1
- package/lib-es/utils/add-content-menu-items.js +25 -22
- package/lib-es/utils/add-content-menu-items.js.map +1 -1
- package/package.json +5 -5
- package/src/components/EntityManager/Entity/Entity.js +31 -5
- package/src/components/EntityManager/Entity/EntityHeader/EntityHeader.js +17 -1
- package/src/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js +19 -2
- package/src/components/EntityManager/utils/entity.js +28 -8
- package/src/components/ListingTable/ListingTable.js +1 -1
- package/src/constants.js +4 -0
- 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","
|
|
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":"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","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":[]}
|
package/lib-es/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';
|
|
@@ -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
|
package/lib-es/constants.js.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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:
|
|
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","
|
|
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.
|
|
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.
|
|
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.
|
|
39
|
-
"@blaze-cms/react-page-builder": "0.146.0-rc-eagle-3.
|
|
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": "
|
|
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
|
-
|
|
411
|
-
|
|
412
|
-
|
|
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
|
|
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
|
|
package/src/components/EntityManager/Entity/EntityHeader/HeaderPreviewButton/HeaderPreviewButton.js
CHANGED
|
@@ -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 {
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
};
|