Merge branch 'main' into feature/cleanup-20240223
This commit is contained in:
@@ -1,63 +0,0 @@
|
||||
import { kebabCase, camelCase, startCase } from 'lodash-es';
|
||||
const pascalCase = (str) => startCase(str).replace(/ /g, '');
|
||||
|
||||
const tagNamePrefix = 'umb-';
|
||||
const classNamePrefix = 'Umb';
|
||||
|
||||
const extensions = [
|
||||
{
|
||||
type: 'propertyEditorUi',
|
||||
path: '../../src/backoffice/shared/property-editors/uis',
|
||||
templatePath: './templates/property-editor-ui',
|
||||
},
|
||||
];
|
||||
|
||||
export default function (plop) {
|
||||
plop.setHelper('className', (type, name) => classNamePrefix + pascalCase(type) + pascalCase(name) + 'Element');
|
||||
plop.setHelper('displayName', (name) => startCase(camelCase(name)));
|
||||
plop.setHelper('extensionPath', (type, name) => extensions.find((e) => e.type === type).path + '/' + name);
|
||||
plop.setHelper('extensionTemplatePath', (type) => extensions.find((e) => e.type === type).templatePath);
|
||||
plop.setHelper('extensionFilename', (type, name) => kebabCase(type) + '-' + kebabCase(name));
|
||||
plop.setHelper('extensionTagName', (type, name) => tagNamePrefix + kebabCase(type) + '-' + kebabCase(name));
|
||||
|
||||
plop.setGenerator('component', {
|
||||
description: 'application controller logic',
|
||||
prompts: [
|
||||
{
|
||||
type: 'list',
|
||||
name: 'extensionType',
|
||||
message: 'Select extension type',
|
||||
choices: extensions.map((e) => e.type),
|
||||
},
|
||||
{
|
||||
type: 'input',
|
||||
name: 'name',
|
||||
message: 'Enter extension name (i.e. color-picker)',
|
||||
validate: (answer) => {
|
||||
if (answer.length < 1) {
|
||||
return 'Please enter a name for the extension';
|
||||
} else return true;
|
||||
},
|
||||
// Convert the input into kebab case if not provided as such and strip prefix
|
||||
filter: (response) => kebabCase(response.replace(/^umb-/, '')),
|
||||
},
|
||||
],
|
||||
actions: [
|
||||
{
|
||||
type: 'add',
|
||||
path: '{{ extensionPath extensionType name }}/{{extensionFilename extensionType name }}.element.ts',
|
||||
templateFile: '{{extensionTemplatePath extensionType}}/element.ts.hbs',
|
||||
},
|
||||
{
|
||||
type: 'add',
|
||||
path: '{{ extensionPath extensionType name }}/{{ extensionFilename extensionType name }}.test.ts',
|
||||
templateFile: '{{extensionTemplatePath extensionType}}/test.ts.hbs',
|
||||
},
|
||||
{
|
||||
type: 'add',
|
||||
path: '{{ extensionPath extensionType name }}/{{ extensionFilename extensionType name }}.stories.ts',
|
||||
templateFile: '{{extensionTemplatePath extensionType}}/stories.ts.hbs',
|
||||
},
|
||||
],
|
||||
});
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
import { UmbPropertyEditorUiElement } from '@umbraco-cms/backoffice/extension-registry';
|
||||
import { html, customElement, property } from '@umbraco-cms/backoffice/external/lit';
|
||||
import { UmbPropertyEditorConfigCollection } from '@umbraco-cms/backoffice/property-editor';
|
||||
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
|
||||
import { UmbLitElement } from '@umbraco-cms/element';
|
||||
|
||||
/**
|
||||
* @element {{ extensionTagName extensionType name }}
|
||||
*/
|
||||
@customElement('{{ extensionTagName extensionType name }}')
|
||||
export class {{className extensionType name }} extends UmbLitElement implements UmbPropertyEditorUiElement {
|
||||
static styles = [UmbTextStyles];
|
||||
|
||||
@property()
|
||||
value = '';
|
||||
|
||||
@property({ type: Array, attribute: false })
|
||||
public config?: UmbPropertyEditorConfigCollection;
|
||||
|
||||
render() {
|
||||
return html`<div>{{ extensionTagName extensionType name }}</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
export default {{className extensionType name}};
|
||||
|
||||
declare global {
|
||||
interface HTMLElementTagNameMap {
|
||||
'{{extensionTagName extensionType name }}': {{className extensionType name}};
|
||||
}
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
import { Meta, Story } from '@storybook/web-components';
|
||||
import { html } from 'lit';
|
||||
|
||||
import type { {{className extensionType name}} } from './{{ extensionFilename extensionType name }}.element';
|
||||
import './{{ extensionFilename extensionType name }}.element';
|
||||
|
||||
export default {
|
||||
title: 'Property Editor UIs/{{ displayName name }}',
|
||||
component: '{{ extensionTagName extensionType name }}',
|
||||
id: '{{extensionTagName extensionType name }}',
|
||||
} as Meta;
|
||||
|
||||
export const AAAOverview: Story<{{className extensionType name}}> = () =>
|
||||
html`<{{ extensionTagName extensionType name }}></{{ extensionTagName extensionType name }}>`;
|
||||
AAAOverview.storyName = 'Overview';
|
||||
@@ -1,21 +0,0 @@
|
||||
import { expect, fixture, html } from '@open-wc/testing';
|
||||
import { {{ className extensionType name }} } from './{{ extensionFilename extensionType name }}.element';
|
||||
import { defaultA11yConfig } from '@umbraco-cms/test-utils';
|
||||
|
||||
describe('{{className extensionType name}}', () => {
|
||||
let element: {{className extensionType name}};
|
||||
|
||||
beforeEach(async () => {
|
||||
element = await fixture(
|
||||
html` <{{ extensionTagName extensionType name }}></{{ extensionTagName extensionType name }}> `
|
||||
);
|
||||
});
|
||||
|
||||
it('is defined with its own instance', () => {
|
||||
expect(element).to.be.instanceOf({{ className extensionType name }});
|
||||
});
|
||||
|
||||
it('passes the a11y audit', async () => {
|
||||
await expect(element).shadowDom.to.be.accessible(defaultA11yConfig);
|
||||
});
|
||||
});
|
||||
1104
src/Umbraco.Web.UI.Client/package-lock.json
generated
1104
src/Umbraco.Web.UI.Client/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -135,7 +135,6 @@
|
||||
"lint:errors": "npm run lint -- --quiet",
|
||||
"lint:fix": "npm run lint -- --fix",
|
||||
"lint": "eslint src",
|
||||
"new-extension": "plop --plopfile ./devops/plop/plop.js",
|
||||
"prepack": "tsc-alias -f -p src/tsconfig.build.json && npm run generate:jsonschema:dist && npm run wc-analyze && npm run wc-analyze:vscode && node ./devops/publish/cleanse-pkg.js",
|
||||
"preview": "vite preview --open",
|
||||
"storybook:build": "npm run wc-analyze && storybook build",
|
||||
@@ -213,7 +212,6 @@
|
||||
"msw": "^1.3.2",
|
||||
"openapi-typescript-codegen": "^0.25.0",
|
||||
"playwright-msw": "^3.0.1",
|
||||
"plop": "^4.0.0",
|
||||
"prettier": "3.0.3",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
|
||||
Reference in New Issue
Block a user