From 2628f9902f159cbc1a067dc666f69a5ee89959e9 Mon Sep 17 00:00:00 2001 From: Hendrik Helmken Date: Sun, 11 Apr 2021 16:36:42 +0200 Subject: [PATCH] Add dash operation naming strategy --- package.json | 1 + src/ResourceGuesser.js | 31 ++++++++++++++++++++++--------- yarn.lock | 2 +- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 06fbd1ed..0fa6abc4 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "@api-platform/api-doc-parser": "^0.12.0", "final-form-submit-errors": "^0.1.0", "history": "^4.7.2", + "inflection": "^1.12.0", "jsonld": "^3.2.0", "lodash.isplainobject": "^4.0.6", "prop-types": "^15.6.2", diff --git a/src/ResourceGuesser.js b/src/ResourceGuesser.js index 99550965..81322754 100644 --- a/src/ResourceGuesser.js +++ b/src/ResourceGuesser.js @@ -1,4 +1,5 @@ import React from 'react'; +import inflection from 'inflection'; import { Resource } from 'react-admin'; import PropTypes from 'prop-types'; import ListGuesser from './ListGuesser'; @@ -6,15 +7,27 @@ import CreateGuesser from './CreateGuesser'; import EditGuesser from './EditGuesser'; import ShowGuesser from './ShowGuesser'; -const ResourceGuesser = ({ list, edit, create, show, ...props }) => ( - -); +const ResourceGuesser = ({ list, edit, create, show, ...props }) => { + const { label } = props.options; + + props.options.label = + typeof label !== 'undefined' + ? label + : inflection.transform(props.name.replace(/-/g, '_'), [ + 'underscore', + 'humanize', + ]); + + return ( + + ); +}; ResourceGuesser.propTypes = { name: PropTypes.string.isRequired, diff --git a/yarn.lock b/yarn.lock index e3b882ed..1dd20f66 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3669,7 +3669,7 @@ indefinite-observable@^2.0.1: dependencies: symbol-observable "1.2.0" -inflection@~1.12.0: +inflection@^1.12.0, inflection@~1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.12.0.tgz#a200935656d6f5f6bc4dc7502e1aecb703228416" integrity sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=