Merge remote-tracking branch 'origin/main' into feature/markdown-keybindings-and-img-url

This commit is contained in:
Jacob Overgaard
2023-11-08 14:06:12 +01:00
1414 changed files with 11041 additions and 1600 deletions

View File

@@ -6,9 +6,11 @@
"combobox",
"Elementable",
"invariantable",
"lucide",
"Niels",
"pickable",
"Registrator",
"svgs",
"templating",
"tinymce",
"umbraco",

View File

@@ -7,20 +7,86 @@ const getDirName = path.dirname;
const glob = globModule.default;
const moduleDirectory = 'src/shared/icon-registry';
const iconsSVGDirectory = `${moduleDirectory}/svgs`;
const iconsOutputDirectory = `${moduleDirectory}/icons`;
const umbracoSvgDirectory = `${moduleDirectory}/svgs`;
const iconMapJson = `${moduleDirectory}/icon-dictionary.json`;
const lucideSvgDirectory = 'node_modules/lucide-static/icons';
const run = async () => {
const icons = await collectIcons();
outputIcons(icons);
var icons = await collectDictionaryIcons();
icons = await collectDiskIcons(icons);
writeIconsToDisk(icons);
generateJSON(icons);
};
const collectIcons = async () => {
const iconPaths = await glob(`${iconsSVGDirectory}/icon-*.svg`);
const collectDictionaryIcons = async () => {
const rawData = readFileSync(iconMapJson);
const fileRaw = rawData.toString();
const fileJSON = JSON.parse(fileRaw);
let icons = [];
// Lucide:
fileJSON.lucide.forEach((iconDef) => {
if(iconDef.file && iconDef.name) {
const path = lucideSvgDirectory + "/" + iconDef.file;
try {
const rawData = readFileSync(path);
// For Lucide icons specially we adjust the icons a bit for them to work in our case:
let svg = rawData.toString().replace(' width="24"\n', '');
svg = svg.replace(' height="24"\n', '');
svg = svg.replace('stroke-width="2"', 'stroke-width="1.75"');
const iconFileName = iconDef.name;
const icon = {
name: iconDef.name,
legacy: iconDef.legacy,
fileName: iconFileName,
svg,
output: `${iconsOutputDirectory}/${iconFileName}.js`,
};
icons.push(icon);
} catch(e) {
console.log(`Could not load file: '${path}'`);
}
}
});
// Umbraco:
fileJSON.umbraco.forEach((iconDef) => {
if(iconDef.file && iconDef.name) {
const path = umbracoSvgDirectory + "/" + iconDef.file;
try {
const rawData = readFileSync(path);
const svg = rawData.toString()
const iconFileName = iconDef.name;
const icon = {
name: iconDef.name,
legacy: iconDef.legacy,
fileName: iconFileName,
svg,
output: `${iconsOutputDirectory}/${iconFileName}.js`,
};
icons.push(icon);
} catch(e) {
console.log(`Could not load file: '${path}'`);
}
}
});
return icons;
};
const collectDiskIcons = async (icons) => {
const iconPaths = await glob(`${umbracoSvgDirectory}/icon-*.svg`);
iconPaths.forEach((path) => {
const rawData = readFileSync(path);
const svg = rawData.toString();
@@ -35,28 +101,31 @@ const collectIcons = async () => {
const SVGFileName = match[1];
const iconFileName = SVGFileName.replace('.svg', '');
const iconName = iconFileName.replace('icon-', '').replace('.svg', '');
const iconName = iconFileName;
const icon = {
src: path,
SVGFileName,
iconFileName,
name: iconName,
svg,
output: `${iconsOutputDirectory}/${iconFileName}.js`,
};
// Only append not already defined icons:
if(!icons.find(x => x.name === iconName)) {
icons.push(icon);
const icon = {
name: iconName,
legacy: true,
fileName: iconFileName,
svg,
output: `${iconsOutputDirectory}/${iconFileName}.js`,
};
icons.push(icon);
}
});
return icons;
};
const outputIcons = (icons) => {
const writeIconsToDisk = (icons) => {
icons.forEach((icon) => {
const content = 'export default `' + icon.svg + '`;';
writeFileWithDir(`${icon.output}`, content, (err) => {
writeFileWithDir(icon.output, content, (err) => {
if (err) {
// eslint-disable-next-line no-undef
console.log(err);
@@ -72,10 +141,10 @@ const generateJSON = (icons) => {
const JSONPath = `${iconsOutputDirectory}/icons.json`;
const iconDescriptors = icons.map((icon) => {
console.log(icon);
return {
name: `umb:${icon.name}`,
path: `./icons/${icon.iconFileName}.js`,
name: icon.name,
legacy: icon.legacy,
path: `./icons/${icon.fileName}.js`,
};
});

View File

@@ -60,6 +60,7 @@
"eslint-plugin-local-rules": "^1.3.2",
"eslint-plugin-storybook": "^0.6.15",
"eslint-plugin-wc": "^1.5.0",
"lucide-static": "^0.290.0",
"msw": "^1.2.3",
"openapi-typescript-codegen": "^0.25.0",
"playwright-msw": "^2.2.1",
@@ -15693,6 +15694,12 @@
"yallist": "^3.0.2"
}
},
"node_modules/lucide-static": {
"version": "0.290.0",
"resolved": "https://registry.npmjs.org/lucide-static/-/lucide-static-0.290.0.tgz",
"integrity": "sha512-g2JVS1v2xVypOyMRrWH5lFhJwAftBvAn732Ig4VqS60+4MtL1F+bsbI8wVG3MM6RFhL12gT1hs5vEZufr6XbKA==",
"dev": true
},
"node_modules/magic-string": {
"version": "0.27.0",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz",

View File

@@ -177,6 +177,7 @@
"eslint-plugin-local-rules": "^1.3.2",
"eslint-plugin-storybook": "^0.6.15",
"eslint-plugin-wc": "^1.5.0",
"lucide-static": "^0.290.0",
"msw": "^1.2.3",
"openapi-typescript-codegen": "^0.25.0",
"playwright-msw": "^2.2.1",

View File

@@ -1,7 +1,4 @@
:root {
/* TODO: Consulidate with this green color suggestion, align UUI:*/
--uui-color-positive: #1c874c;
--uui-color-positive-emphasis: #1a7f47;
--umb-footer-layout-height: 54px;
--umb-header-layout-height: 70px;
--umb-section-sidebar-width: 300px;

View File

@@ -6,7 +6,7 @@ export const data: Array<DocumentBlueprintDetails> = [
name: 'Document Blueprint 1',
type: 'document-blueprint',
id: '3fa85f64-5717-4562-b3fc-2c963f66afa6',
icon: 'umb:blueprint',
icon: 'icon-blueprint',
documentTypeKey: 'd81c7957-153c-4b5a-aa6f-b434a4964624',
properties: [],
data: [],
@@ -15,7 +15,7 @@ export const data: Array<DocumentBlueprintDetails> = [
name: 'Document Blueprint 2',
type: 'document-blueprint',
id: '3fa85f64-5717-4562-b3qc-2c963f66afa6',
icon: 'umb:blueprint',
icon: 'icon-blueprint',
documentTypeKey: 'a99e4018-3ffc-486b-aa76-eecea9593d17',
properties: [],
data: [],

View File

@@ -14,7 +14,7 @@ export const data: Array<DocumentTypeResponseModel> = [
alias: 'blogPost',
name: 'All property editors document type',
description: null,
icon: 'umb:item-arrangement',
icon: 'icon-item-arrangement',
allowedAsRoot: true,
variesByCulture: true,
variesBySegment: false,
@@ -616,7 +616,7 @@ export const data: Array<DocumentTypeResponseModel> = [
alias: 'blogPost',
name: 'Page Document Type',
description: null,
icon: 'umb:document',
icon: 'icon-document',
allowedAsRoot: true,
variesByCulture: true,
variesBySegment: false,
@@ -777,7 +777,7 @@ export const data: Array<DocumentTypeResponseModel> = [
alias: 'masterPage',
name: 'Master Page',
description: null,
icon: 'umb:document',
icon: 'icon-document',
allowedAsRoot: false,
variesByCulture: false,
variesBySegment: false,
@@ -827,7 +827,7 @@ export const data: Array<DocumentTypeResponseModel> = [
alias: 'baseElementType',
name: 'Base Element Type',
description: null,
icon: 'umb:science',
icon: 'icon-science',
allowedAsRoot: false,
variesByCulture: false,
variesBySegment: false,
@@ -881,7 +881,7 @@ export const data: Array<DocumentTypeResponseModel> = [
alias: 'simpleDocumentType',
name: 'Simple Document Type',
description: null,
icon: 'umb:document',
icon: 'icon-document',
allowedAsRoot: true,
variesByCulture: false,
variesBySegment: false,
@@ -934,7 +934,7 @@ export const data: Array<DocumentTypeResponseModel> = [
alias: 'simpleDocumentType2',
name: 'Simple Document Type 2',
description: null,
icon: 'umb:document',
icon: 'icon-document',
allowedAsRoot: true,
variesByCulture: false,
variesBySegment: false,
@@ -1015,7 +1015,7 @@ export const treeData: Array<DocumentTypeTreeItemResponseModel> = [
id: '29643452-cff9-47f2-98cd-7de4b6807681',
isContainer: false,
parentId: null,
icon: 'umb:document',
icon: 'icon-document',
},
{
name: 'Page Document Type Compositional',
@@ -1024,7 +1024,7 @@ export const treeData: Array<DocumentTypeTreeItemResponseModel> = [
id: '5035d7d9-0a63-415c-9e75-ee2cf931db92',
isContainer: false,
parentId: null,
icon: 'umb:document',
icon: 'icon-document',
},
{
name: 'Page Document Type Inherited',
@@ -1033,7 +1033,7 @@ export const treeData: Array<DocumentTypeTreeItemResponseModel> = [
id: '8f68ba66-6fb2-4778-83b8-6ab4ca3a7c5d',
isContainer: false,
parentId: null,
icon: 'umb:document',
icon: 'icon-document',
},
{
name: 'Simple Document Type',
@@ -1042,7 +1042,7 @@ export const treeData: Array<DocumentTypeTreeItemResponseModel> = [
id: 'simple-document-type-key',
isContainer: false,
parentId: null,
icon: 'umb:document',
icon: 'icon-document',
},
{
name: 'Simple Document Type 2',
@@ -1051,7 +1051,7 @@ export const treeData: Array<DocumentTypeTreeItemResponseModel> = [
id: 'simple-document-type-2-key',
isContainer: false,
parentId: null,
icon: 'umb:document',
icon: 'icon-document',
},
];

View File

@@ -13,7 +13,7 @@ export const data: Array<MediaTypeResponseModel> = [
id: 'c5159663-eb82-43ee-bd23-e42dc5e71db6',
description: 'Media type 1 description',
alias: 'mediaType1',
icon: 'umb:bug',
icon: 'icon-bug',
properties: [],
containers: [],
},

View File

@@ -46,20 +46,20 @@ export const data: Array<UserGroupResponseModel> = [
{
id: 'c630d49e-4e7b-42ea-b2bc-edc0edacb6b1',
name: 'Administrators',
icon: 'umb:medal',
icon: 'icon-medal',
documentStartNodeId: 'all-property-editors-document-id',
permissions: [UMB_USER_PERMISSION_DOCUMENT_CREATE, UMB_USER_PERMISSION_DOCUMENT_DELETE],
},
{
id: '9d24dc47-a4bf-427f-8a4a-b900f03b8a12',
name: 'User Group 1',
icon: 'umb:bell',
icon: 'icon-bell',
permissions: [UMB_USER_PERMISSION_DOCUMENT_DELETE],
},
{
id: 'f4626511-b0d7-4ab1-aebc-a87871a5dcfa',
name: 'User Group 2',
icon: 'umb:ball',
icon: 'icon-ball',
permissions: [UMB_USER_PERMISSION_DOCUMENT_READ],
},
];

View File

@@ -80,7 +80,7 @@ export const handlers = [
if (!data) return;
data.icon = 'umb:book-alt';
data.icon = 'icon-book-alt';
data.hasChildren = false;
data.type = 'dictionary-item';

View File

@@ -11,14 +11,14 @@ export class UmbCollectionToolbarElement extends UmbLitElement {
public actions: Array<TooltipMenuItem> = [
{
label: 'File',
icon: 'umb:document',
icon: 'icon-document',
action: () => {
console.log('Create file');
},
},
{
label: 'Folder',
icon: 'umb:folder',
icon: 'icon-folder',
action: () => {
console.log('create folder');
},

View File

@@ -19,7 +19,7 @@ export const Overview: Story = {
kind: 'button',
meta: {
label: 'Some Header',
icon: 'umb:home',
icon: 'icon-home',
href: '/some/path',
},
},

View File

@@ -444,7 +444,7 @@ export class UmbInputMarkdownElement extends FormControlMixin(UmbLitElement) {
label="Quote"
title="Quote, &lt;Ctrl+Shift+.&gt;"
@click=${() => this.#editor?.monacoEditor?.getAction('q')?.run()}>
<uui-icon name="umb:quote"></uui-icon>
<uui-icon name="icon-quote"></uui-icon>
</uui-button>
<uui-button
compact
@@ -452,7 +452,7 @@ export class UmbInputMarkdownElement extends FormControlMixin(UmbLitElement) {
label="Ordered List"
title="Ordered List, &lt;Ctrl+Shift+7&gt;"
@click=${() => this.#editor?.monacoEditor?.getAction('ol')?.run()}>
<uui-icon name="umb:ordered-list"></uui-icon>
<uui-icon name="icon-ordered-list"></uui-icon>
</uui-button>
<uui-button
compact
@@ -460,7 +460,7 @@ export class UmbInputMarkdownElement extends FormControlMixin(UmbLitElement) {
label="Unordered List"
title="Unordered List, &lt;Ctrl+Shift+8&gt;"
@click=${() => this.#editor?.monacoEditor?.getAction('ul')?.run()}>
<uui-icon name="umb:bulleted-list"></uui-icon>
<uui-icon name="icon-bulleted-list"></uui-icon>
</uui-button>
</div>
<div>
@@ -470,7 +470,7 @@ export class UmbInputMarkdownElement extends FormControlMixin(UmbLitElement) {
label="Code"
title="Code, &lt;Ctrl+E&gt;"
@click=${() => this.#editor?.monacoEditor?.getAction('code')?.run()}>
<uui-icon name="umb:code"></uui-icon>
<uui-icon name="icon-code"></uui-icon>
</uui-button>
<uui-button
compact
@@ -478,7 +478,7 @@ export class UmbInputMarkdownElement extends FormControlMixin(UmbLitElement) {
label="Line"
title="Line"
@click=${() => this.#editor?.monacoEditor?.getAction('line')?.run()}>
<uui-icon name="umb:width"></uui-icon>
<uui-icon name="icon-width"></uui-icon>
</uui-button>
<uui-button
compact
@@ -486,7 +486,7 @@ export class UmbInputMarkdownElement extends FormControlMixin(UmbLitElement) {
label="Link"
title="Link, &lt;Ctrl+K&gt;"
@click=${() => this.#editor?.monacoEditor?.getAction('link')?.run()}>
<uui-icon name="umb:link"></uui-icon>
<uui-icon name="icon-link"></uui-icon>
</uui-button>
<uui-button
compact
@@ -494,7 +494,7 @@ export class UmbInputMarkdownElement extends FormControlMixin(UmbLitElement) {
label="Image"
title="Image"
@click=${() => this.#editor?.monacoEditor?.getAction('image')?.run()}>
<uui-icon name="umb:picture"></uui-icon>
<uui-icon name="icon-picture"></uui-icon>
</uui-button>
</div>
<div>

View File

@@ -205,7 +205,7 @@ export class UmbInputMultiUrlElement extends FormControlMixin(UmbLitElement) {
.name="${link.name || ''}"
.detail="${(link.url || '') + (link.queryString || '')}"
@open="${() => this._temporary_onClick_editItem(index)}">
<uui-icon slot="icon" name="${link.icon || 'umb:link'}"></uui-icon>
<uui-icon slot="icon" name="${link.icon || 'icon-link'}"></uui-icon>
<uui-action-bar slot="actions">
<uui-button .href=${this._modalRoute?.({ index })} label="Edit link">Edit</uui-button>
<uui-button @click="${() => this._removeItem(index)}" label="Remove link">Remove</uui-button>

View File

@@ -124,7 +124,7 @@ export class UmbInputUploadFieldElement extends FormControlMixin(UmbLitElement)
})}
</div>
<uui-button compact @click=${this.#handleRemove} label="Remove files">
<uui-icon name="umb:trash"></uui-icon> Remove file(s)
<uui-icon name="icon-trash"></uui-icon> Remove file(s)
</uui-button>`;
}

View File

@@ -46,7 +46,7 @@ export const WithSlots: Story = {
<div slot="actions">
<uui-action-bar>
<uui-button label="delete" look="primary" color="danger" compact>
<uui-icon name="umb:delete"></uui-icon>
<uui-icon name="icon-delete"></uui-icon>
</uui-button>
</uui-action-bar>
</div>

View File

@@ -27,7 +27,7 @@ const columns: Array<UmbTableColumn> = [
const items: Array<UmbTableItem> = [
{
id: UmbId.new(),
icon: 'umb:wand',
icon: 'icon-wand',
data: [
{
columnAlias: 'name',
@@ -41,7 +41,7 @@ const items: Array<UmbTableItem> = [
},
{
id: UmbId.new(),
icon: 'umb:document',
icon: 'icon-document',
data: [
{
columnAlias: 'name',
@@ -55,7 +55,7 @@ const items: Array<UmbTableItem> = [
},
{
id: UmbId.new(),
icon: 'umb:user',
icon: 'icon-user',
data: [
{
columnAlias: 'name',

View File

@@ -13,12 +13,12 @@ type Story = StoryObj<UmbTooltipMenuElement>;
const items: Array<TooltipMenuItem> = [
{
label: 'Item 1',
icon: 'umb:document',
icon: 'icon-document',
action: () => alert('Item 1 clicked'),
},
{
label: 'Item 2',
icon: 'umb:home',
icon: 'icon-home',
action: () => alert('Item 2 clicked'),
},
];

View File

@@ -204,7 +204,7 @@ export class UmbVariantSelectorElement extends UmbLitElement {
${this._isNotPublishedMode(variant.culture!, variant.state!) ? 'add-mode' : ''}"
@click=${() => this._switchVariant(variant)}>
${this._isNotPublishedMode(variant.culture!, variant.state!)
? html`<uui-icon class="add-icon" name="umb:add"></uui-icon>`
? html`<uui-icon class="add-icon" name="icon-add"></uui-icon>`
: nothing}
<div>
${variant.name} <i>(${variant.culture})</i> ${variant.segment}

View File

@@ -85,7 +85,7 @@ export class UmbDebugElement extends UmbLitElement {
private _renderDialog() {
return html` <div id="container">
<uui-badge color="danger" look="primary" attention @click="${this._openDialog}">
<uui-icon name="umb:bug"></uui-icon> Debug
<uui-icon name="icon-bug"></uui-icon> Debug
</uui-badge>
</div>`;
}
@@ -93,7 +93,7 @@ export class UmbDebugElement extends UmbLitElement {
private _renderPanel() {
return html` <div id="container">
<uui-button color="danger" look="primary" @click="${this._toggleDebugPane}">
<uui-icon name="umb:bug"></uui-icon>
<uui-icon name="icon-bug"></uui-icon>
Debug
</uui-button>

View File

@@ -11,7 +11,7 @@ export default class UmbContextDebuggerModalElement extends UmbModalBaseElement<
render() {
return html`
<uui-dialog-layout>
<span slot="headline"> <uui-icon name="umb:bug"></uui-icon> Debug: Contexts </span>
<span slot="headline"> <uui-icon name="icon-bug"></uui-icon> Debug: Contexts </span>
<uui-scroll-container id="field-settings"> ${this.data?.content} </uui-scroll-container>
<uui-button slot="actions" look="primary" label="Close sidebar" @click="${this._handleClose}">Close</uui-button>
</uui-dialog-layout>

View File

@@ -15,8 +15,8 @@ export interface MetaCollectionView {
* An icon to represent the collection view
*
* @examples [
* "umb:box",
* "umb:grid"
* "icon-box",
* "icon-grid"
* ]
*/
icon: string;

View File

@@ -15,8 +15,8 @@ export interface MetaEntityAction {
* An icon to represent the action to be performed
*
* @examples [
* "umb:box",
* "umb:grid"
* "icon-box",
* "icon-grid"
* ]
*/
icon?: string;

View File

@@ -1,7 +1,7 @@
import icons from '../../../../../shared/icon-registry/icons/icons.json' assert { type: 'json' };
import type { UUIColorSwatchesEvent } from '@umbraco-cms/backoffice/external/uui';
import { css, html, styleMap, customElement, state } from '@umbraco-cms/backoffice/external/lit';
import { css, html, customElement, state, repeat } from '@umbraco-cms/backoffice/external/lit';
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
import { UmbIconPickerModalData, UmbIconPickerModalValue, UmbModalBaseElement } from '@umbraco-cms/backoffice/modal';
@@ -10,72 +10,69 @@ import { UmbIconPickerModalData, UmbIconPickerModalValue, UmbModalBaseElement }
// TODO: to prevent element extension we need to move the Picker logic into a separate class we can reuse across all pickers
@customElement('umb-icon-picker-modal')
export class UmbIconPickerModalElement extends UmbModalBaseElement<UmbIconPickerModalData, UmbIconPickerModalValue> {
private _iconList = icons.map((icon) => icon.name);
private _iconList = icons.filter((icon) => !icon.legacy);
@state()
private _iconListFiltered: Array<string> = [];
private _iconListFiltered: Array<(typeof icons)[0]> = [];
@state()
private _colorList = [
'#000000',
'#373737',
'#9e9e9e',
'#607d8b',
'#2196f3',
'#03a9f4',
'#3f51b5',
'#9c27b0',
'#673ab7',
'#00bcd4',
'#4caf50',
'#8bc34a',
'#cddc39',
'#ffeb3b',
'#ffc107',
'#ff9800',
'#ff5722',
'#f44336',
'#e91e63',
'#795548',
{alias:'text', varName:'--uui-color-text'},
{alias:'yellow', varName:'--uui-palette-sunglow'},
{alias:'pink', varName:'--uui-palette-spanish-pink'},
{alias:'dark', varName:'--uui-palette-gunmetal'},
{alias:'darkblue', varName:'--uui-palette-space-cadet'},
{alias:'blue', varName:'--uui-palette-violet-blue'},
{alias:'red', varName:'--uui-palette-maroon-flush'},
{alias:'green', varName:'--uui-palette-jungle-green'},
{alias:'brown', varName:'--uui-palette-chamoisee'},
];
@state()
private _currentColor?: string;
_modalValue?:UmbIconPickerModalValue;
@state()
private _currentIcon?: string;
_currentColorVarName = '--uui-color-text';
private _changeIcon(e: { target: HTMLInputElement; type: any; key: unknown }) {
#changeIcon(e: { target: HTMLInputElement; type: any; key: unknown }) {
if (e.type == 'click' || (e.type == 'keyup' && e.key == 'Enter')) {
this._currentIcon = e.target.id;
this.modalContext?.updateValue({icon: e.target.id});
}
}
private _filterIcons(e: { target: HTMLInputElement }) {
#filterIcons(e: { target: HTMLInputElement }) {
if (e.target.value) {
this._iconListFiltered = this._iconList.filter((icon) => icon.includes(e.target.value));
this._iconListFiltered = this._iconList.filter((icon) => icon.name.includes(e.target.value));
} else {
this._iconListFiltered = this._iconList;
}
}
private _close() {
#close() {
this.modalContext?.reject();
}
private _submit() {
this.modalContext?.submit({ color: this._currentColor, icon: this._currentIcon });
#submit() {
// TODO: Shouldnt we stop sending the value here, instead let the modal context send of its value. and then its up to any one using it to make sure Modal Context value is up to date.
this.modalContext?.submit(this._modalValue);
}
private _onColorChange(e: UUIColorSwatchesEvent) {
this._currentColor = e.target.value;
#onColorChange(e: UUIColorSwatchesEvent) {
this.modalContext?.updateValue({icon: e.target.value});
}
connectedCallback() {
super.connectedCallback();
this._currentColor = this.data?.color ?? this._colorList[0];
this._currentIcon = this.data?.icon ?? this._iconList[0];
this._iconListFiltered = this._iconList;
if(this.modalContext) {
this.observe(this.modalContext?.value, (newValue) => {
this._modalValue = newValue;
this._currentColorVarName = this._colorList.find(x => x.alias === newValue?.color)?.alias ?? this._colorList[0].varName;
}, '_observeModalContextValue');
}
}
render() {
@@ -85,20 +82,22 @@ export class UmbIconPickerModalElement extends UmbModalBaseElement<UmbIconPicker
${this.renderSearchbar()}
<hr />
<uui-color-swatches
.value="${this._currentColor || ''}"
.value="${this._modalValue?.color ?? ''}"
label="Color switcher for icons"
@change="${this._onColorChange}">
${this._colorList.map(
@change="${this.#onColorChange}">
${
// TODO: Missing translation for the color aliases.
this._colorList.map(
(color) => html`
<uui-color-swatch label="${color}" title="${color}" value="${color}"></uui-color-swatch>
<uui-color-swatch label="${color.alias}" title="${color.alias}" value=${color.alias} style="--uui-swatch-color: var(${color.varName})"></uui-color-swatch>
`,
)}
</uui-color-swatches>
<hr />
<uui-scroll-container id="icon-selection">${this.renderIconSelection()}</uui-scroll-container>
</div>
<uui-button slot="actions" label="close" @click="${this._close}">Close</uui-button>
<uui-button slot="actions" color="positive" look="primary" @click="${this._submit}" label="Submit">
<uui-button slot="actions" label="close" @click="${this.#close}">Close</uui-button>
<uui-button slot="actions" color="positive" look="primary" @click="${this.#submit}" label="Submit">
Submit
</uui-button>
</umb-body-layout>
@@ -107,7 +106,7 @@ export class UmbIconPickerModalElement extends UmbModalBaseElement<UmbIconPicker
renderSearchbar() {
return html` <uui-input
@keyup="${this._filterIcons}"
@keyup="${this.#filterIcons}"
placeholder="Type to filter..."
label="Type to filter icons"
id="searchbar">
@@ -116,21 +115,22 @@ export class UmbIconPickerModalElement extends UmbModalBaseElement<UmbIconPicker
}
renderIconSelection() {
return html`${this._iconListFiltered.map((icon) => {
return html`
return repeat(this._iconListFiltered,
(icon) => icon.name,
(icon) => html`
<uui-icon
tabindex="0"
style=${styleMap({ color: this._currentColor })}
class="icon ${icon === this._currentIcon ? 'selected' : ''}"
title="${icon}"
name="${icon}"
label="${icon}"
id="${icon}"
@click="${this._changeIcon}"
@keyup="${this._changeIcon}">
style="color: var(${this._currentColorVarName})"
class="icon ${icon.name === this._modalValue?.icon ? 'selected' : ''}"
title="${icon.name}"
name="${icon.name}"
label="${icon.name}"
id="${icon.name}"
@click="${this.#changeIcon}"
@keyup="${this.#changeIcon}">
</uui-icon>
`;
})}`;
`
);
}
static styles = [

View File

@@ -5,7 +5,7 @@ import { Meta, Story } from '@storybook/web-components';
import type { UmbIconPickerModalElement } from './icon-picker-modal.element.js';
import { html } from '@umbraco-cms/backoffice/external/lit';
import { UmbIconPickerModalData } from '@umbraco-cms/backoffice/modal';
import { UmbIconPickerModalData, UmbIconPickerModalValue } from '@umbraco-cms/backoffice/modal';
export default {
title: 'API/Modals/Layouts/Icon Picker',
@@ -14,6 +14,9 @@ export default {
} as Meta;
const data: UmbIconPickerModalData = {
};
const value: UmbIconPickerModalValue = {
color: undefined,
icon: undefined,
};
@@ -22,5 +25,5 @@ export const Overview: Story<UmbIconPickerModalElement> = () => html`
<!-- TODO: figure out if generics are allowed for properties:
https://github.com/runem/lit-analyzer/issues/149
https://github.com/runem/lit-analyzer/issues/163 -->
<umb-icon-picker-modal .data=${data as any}></umb-icon-picker-modal>
<umb-icon-picker-modal .data=${data as any} .value=${value}></umb-icon-picker-modal>
`;

View File

@@ -227,7 +227,7 @@ export class UmbPropertySettingsModalElement extends UmbModalBaseElement<
?disabled=${this._aliasLocked}>
<!-- TODO: validation for bad characters -->
<div @click=${this.#onToggleAliasLock} @keydown=${() => ''} id="alias-lock" slot="prepend">
<uui-icon name=${this._aliasLocked ? 'umb:lock' : 'umb:unlocked'}></uui-icon>
<uui-icon name=${this._aliasLocked ? 'icon-lock' : 'icon-unlocked'}></uui-icon>
</div>
</uui-input>
<uui-textarea

View File

@@ -1,8 +1,6 @@
import { UmbModalToken } from '@umbraco-cms/backoffice/modal';
export interface UmbIconPickerModalData {
color: string | undefined;
icon: string | undefined;
}
export interface UmbIconPickerModalValue {

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Block Grid Block Configuration',
propertyEditorSchemaAlias: 'Umbraco.BlockGrid.BlockConfiguration',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'blocks',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Block Grid Group Configuration',
propertyEditorSchemaAlias: 'Umbraco.BlockGrid.GroupConfiguration',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'blocks',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Block Grid Stylesheet Picker',
propertyEditorSchemaAlias: '',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'blocks',
},
};

View File

@@ -11,7 +11,7 @@ const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Block Grid',
propertyEditorSchemaAlias: 'Umbraco.BlockGrid',
icon: 'umb:icon-layout',
icon: 'icon-icon-layout',
group: 'richContent',
settings: {
properties: [

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Block List Block Configuration',
propertyEditorSchemaAlias: '',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
},
};

View File

@@ -9,7 +9,7 @@ const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Block List',
propertyEditorSchemaAlias: 'Umbraco.BlockList',
icon: 'umb:thumbnail-list',
icon: 'icon-thumbnail-list',
group: 'lists',
settings: {
properties: [

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Checkbox List',
propertyEditorSchemaAlias: 'Umbraco.CheckboxList',
icon: 'umb:bulleted-list',
icon: 'icon-bulleted-list',
group: 'lists',
settings: {
properties: [

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Collection View Bulk Action Permissions',
propertyEditorSchemaAlias: '',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'lists',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Collection View Column Configuration',
propertyEditorSchemaAlias: '',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'lists',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Collection View Layout Configuration',
propertyEditorSchemaAlias: '',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'lists',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Collection View Order By',
propertyEditorSchemaAlias: '',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'lists',
},
};

View File

@@ -12,7 +12,7 @@ const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Collection View',
propertyEditorSchemaAlias: 'Umbraco.ListView',
icon: 'umb:bulleted-list',
icon: 'icon-bulleted-list',
group: 'lists',
settings: {
properties: [

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Color Picker',
propertyEditorSchemaAlias: 'Umbraco.ColorPicker',
icon: 'umb:colorpicker',
icon: 'icon-colorpicker',
group: 'pickers',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Date Picker',
propertyEditorSchemaAlias: 'Umbraco.DateTime',
icon: 'umb:time',
icon: 'icon-time',
group: 'pickers',
settings: {
properties: [

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Dropdown',
propertyEditorSchemaAlias: 'Umbraco.Dropdown',
icon: 'umb:time',
icon: 'icon-time',
group: 'pickers',
settings: {
properties: [

View File

@@ -7,7 +7,7 @@ export const manifest: ManifestPropertyEditorUi = {
loader: () => import('./property-editor-ui-eye-dropper.element.js'),
meta: {
label: 'Eye Dropper Color Picker',
icon: 'umb:colorpicker',
icon: 'icon-colorpicker',
group: 'pickers',
propertyEditorSchemaAlias: 'Umbraco.ColorPicker.EyeDropper',
settings: {

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Icon Picker',
propertyEditorSchemaAlias: 'Umbraco.IconPicker',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
},
};

View File

@@ -7,7 +7,7 @@ export const manifest: ManifestPropertyEditorUi = {
loader: () => import('./property-editor-ui-image-cropper.element.js'),
meta: {
label: 'Image Cropper',
icon: 'umb:colorpicker',
icon: 'icon-colorpicker',
group: 'pickers',
propertyEditorSchemaAlias: 'Umbraco.ImageCropper',
},

View File

@@ -7,7 +7,7 @@ export const manifest: ManifestPropertyEditorUi = {
loader: () => import('./property-editor-ui-image-crops-configuration.element.js'),
meta: {
label: 'Image Crops Configuration',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
propertyEditorSchemaAlias: 'Umbraco.ImageCropper.Configuration',
},

View File

@@ -7,7 +7,7 @@ export const manifest: ManifestPropertyEditorUi = {
loader: () => import('./property-editor-ui-label.element.js'),
meta: {
label: 'Label',
icon: 'umb:readonly',
icon: 'icon-readonly',
group: 'pickers',
propertyEditorSchemaAlias: 'Umbraco.Label',
},

View File

@@ -72,7 +72,7 @@ export const manifests: Array<ManifestPropertyEditorUi> = [
loader: () => import('./number/property-editor-ui-number.element.js'),
meta: {
label: 'Number',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
propertyEditorSchemaAlias: 'Umbraco.Integer',
},

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Markdown Editor',
propertyEditorSchemaAlias: 'Umbraco.MarkdownEditor',
icon: 'umb:code',
icon: 'icon-code',
group: 'pickers',
settings: {
properties: [

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Media Picker',
propertyEditorSchemaAlias: 'Umbraco.MediaPicker3',
icon: 'umb:picture',
icon: 'icon-picture',
group: 'pickers',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Member Group Picker',
propertyEditorSchemaAlias: 'Umbraco.MemberGroupPicker',
icon: 'umb:users-alt',
icon: 'icon-users-alt',
group: 'people',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Member Picker',
propertyEditorSchemaAlias: 'Umbraco.MemberPicker',
icon: 'umb:user',
icon: 'icon-user',
group: 'people',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Multi URL Picker',
propertyEditorSchemaAlias: 'Umbraco.MultiUrlPicker',
icon: 'umb:link',
icon: 'icon-link',
group: 'pickers',
settings: {
properties: [

View File

@@ -92,7 +92,7 @@ export class UmbInputMultipleTextStringItemElement extends FormControlMixin(UmbL
render() {
return html`
${this.disabled || this.readonly ? nothing : html`<uui-icon name="umb:navigation"></uui-icon>`}
${this.disabled || this.readonly ? nothing : html`<uui-icon name="icon-navigation"></uui-icon>`}
<uui-form-validation-message id="validation-message" @invalid=${this.#onInvalid} @valid=${this.#onValid}>
<uui-input
id="input"
@@ -115,7 +115,7 @@ export class UmbInputMultipleTextStringItemElement extends FormControlMixin(UmbL
@click="${this.#onDelete}"
?disabled=${this.disabled}
compact>
<uui-icon name="umb:trash"></uui-icon>
<uui-icon name="icon-trash"></uui-icon>
</uui-button>`}
`;
}

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Multiple Text String',
propertyEditorSchemaAlias: 'Umbraco.MultipleTextString',
icon: 'umb:ordered-list',
icon: 'icon-ordered-list',
group: '',
supportsReadOnly: true,
},

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Number Range',
propertyEditorSchemaAlias: '',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
},
};

View File

@@ -16,7 +16,7 @@ export const manifests: Array<ManifestPropertyEditorUi> = [
meta: {
label: 'Integer',
propertyEditorSchemaAlias: 'Umbraco.Integer',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
settings: {
properties: [allowDecimalsConfig],
@@ -37,7 +37,7 @@ export const manifests: Array<ManifestPropertyEditorUi> = [
meta: {
label: 'Decimal',
propertyEditorSchemaAlias: 'Umbraco.Decimal',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
settings: {
properties: [allowDecimalsConfig],

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Order Direction',
propertyEditorSchemaAlias: '',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Overlay Size',
propertyEditorSchemaAlias: '',
icon: 'umb:document',
icon: 'icon-document',
group: '',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Radio Button List',
propertyEditorSchemaAlias: 'Umbraco.RadioButtonList',
icon: 'umb:target',
icon: 'icon-target',
group: 'lists',
settings: {
properties: [

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Slider',
propertyEditorSchemaAlias: 'Umbraco.Slider',
icon: 'umb:navigation-horizontal',
icon: 'icon-navigation-horizontal',
group: 'common',
settings: {
properties: [

View File

@@ -17,7 +17,7 @@ export const manifests: Array<ManifestPropertyEditorUi> = [
meta: {
label: 'Text Box',
propertyEditorSchemaAlias: 'Umbraco.TextBox',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
settings: {
properties: [inputTypeConfig],
@@ -38,7 +38,7 @@ export const manifests: Array<ManifestPropertyEditorUi> = [
meta: {
label: 'Email',
propertyEditorSchemaAlias: 'Umbraco.EmailAddress',
icon: 'umb:message',
icon: 'icon-message',
group: 'common',
settings: {
properties: [inputTypeConfig],

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Text Area',
propertyEditorSchemaAlias: 'Umbraco.TextArea',
icon: 'umb:edit',
icon: 'icon-edit',
group: 'common',
settings: {
properties: [

View File

@@ -9,7 +9,7 @@ const configurationManifests: Array<ManifestPropertyEditorUi> = [
meta: {
label: 'TinyMCE Toolbar Configuration',
propertyEditorSchemaAlias: 'Umbraco.RichText.Configuration',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
},
},
@@ -21,7 +21,7 @@ const configurationManifests: Array<ManifestPropertyEditorUi> = [
meta: {
label: 'TinyMCE Stylesheets Configuration',
propertyEditorSchemaAlias: 'Umbraco.RichText.Configuration',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
},
},
@@ -33,7 +33,7 @@ const configurationManifests: Array<ManifestPropertyEditorUi> = [
meta: {
label: 'TinyMCE Dimensions Configuration',
propertyEditorSchemaAlias: 'Umbraco.RichText.Configuration',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
},
},
@@ -45,7 +45,7 @@ const configurationManifests: Array<ManifestPropertyEditorUi> = [
meta: {
label: 'TinyMCE Max Image Size Configuration',
propertyEditorSchemaAlias: 'Umbraco.RichText.Configuration',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
},
},

View File

@@ -87,7 +87,7 @@ export class UmbPropertyEditorUITinyMceToolbarConfigurationElement
this._toolbarConfig.push({
alias: t.alias,
label: t.label,
icon: t.icon ?? 'umb:autofill',
icon: t.icon ?? 'icon-autofill',
selected: this.value.includes(t.alias),
});
});

View File

@@ -9,7 +9,7 @@ const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Rich Text Editor',
propertyEditorSchemaAlias: 'Umbraco.RichText',
icon: 'umb:browser-window',
icon: 'icon-browser-window',
group: 'richText',
settings: {
properties: [

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Toggle',
propertyEditorSchemaAlias: 'Umbraco.TrueFalse',
icon: 'umb:checkbox',
icon: 'icon-checkbox',
group: 'common',
settings: {
properties: [

View File

@@ -7,7 +7,7 @@ export const manifest: ManifestPropertyEditorUi = {
loader: () => import('./property-editor-ui-tree-picker-start-node.element.js'),
meta: {
label: 'Tree Picker Start Node',
icon: 'umb:page-add',
icon: 'icon-page-add',
group: 'pickers',
propertyEditorSchemaAlias: '',
},

View File

@@ -8,7 +8,7 @@ const manifest: ManifestPropertyEditorUi = {
loader: () => import('./property-editor-ui-tree-picker.element.js'),
meta: {
label: 'Tree Picker',
icon: 'umb:page-add',
icon: 'icon-page-add',
group: 'pickers',
propertyEditorSchemaAlias: 'Umbraco.MultiNodeTreePicker',
settings: {

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Upload Field',
propertyEditorSchemaAlias: 'Umbraco.UploadField',
icon: 'umb:download-alt',
icon: 'icon-download-alt',
group: 'common',
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'User Picker',
propertyEditorSchemaAlias: 'Umbraco.UserPicker',
icon: 'umb:user',
icon: 'icon-user',
group: 'people',
},
};

View File

@@ -7,7 +7,7 @@ export const manifest: ManifestPropertyEditorUi = {
loader: () => import('./property-editor-ui-value-type.element.js'),
meta: {
label: 'Value Type',
icon: 'umb:autofill',
icon: 'icon-autofill',
group: 'common',
},
};

View File

@@ -64,7 +64,7 @@ export default class UmbTestSorterControllerElement extends UmbLitElement {
${model.map(
(entry) =>
html`<li class="item" data-sort-entry-id="${entry.id}">
<span><uui-icon name="umb:wand"></uui-icon>${entry.value}</span>
<span><uui-icon name="icon-wand"></uui-icon>${entry.value}</span>
</li>`,
)}
</ul>

View File

@@ -17,7 +17,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 600,
api: UmbCreateDictionaryEntityAction,
meta: {
icon: 'umb:add',
icon: 'icon-add',
label: 'Create',
repositoryAlias,
entityTypes: [entityType],
@@ -30,7 +30,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 500,
api: UmbMoveEntityAction,
meta: {
icon: 'umb:enter',
icon: 'icon-enter',
label: 'Move',
repositoryAlias,
entityTypes: [entityType],
@@ -43,7 +43,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 400,
api: UmbExportDictionaryEntityAction,
meta: {
icon: 'umb:download-alt',
icon: 'icon-download-alt',
label: 'Export',
repositoryAlias,
entityTypes: [entityType],
@@ -56,7 +56,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 300,
api: UmbImportDictionaryEntityAction,
meta: {
icon: 'umb:page-up',
icon: 'icon-page-up',
label: 'Import',
repositoryAlias,
entityTypes: [entityType],
@@ -69,7 +69,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 200,
api: UmbReloadDictionaryEntityAction,
meta: {
icon: 'umb:refresh',
icon: 'icon-refresh',
label: 'Reload',
repositoryAlias,
entityTypes: [entityType],
@@ -82,7 +82,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 100,
api: UmbDeleteEntityAction,
meta: {
icon: 'umb:trash',
icon: 'icon-trash',
label: 'Delete',
repositoryAlias,
entityTypes: [entityType],

View File

@@ -8,7 +8,7 @@ const menuItem: ManifestMenuItem = {
loader: () => import('./dictionary-menu-item.element.js'),
meta: {
label: 'Dictionary',
icon: 'umb:book-alt',
icon: 'icon-book-alt',
entityType: 'dictionary-item',
menus: ['Umb.Menu.Dictionary'],
},

View File

@@ -66,7 +66,7 @@ export class UmbDictionaryRepository
id: null,
type: 'dictionary-root',
name: 'Dictionary',
icon: 'umb:folder',
icon: 'icon-folder',
hasChildren: true,
};

View File

@@ -39,7 +39,7 @@ export class UmbDictionaryWorkspaceEditorElement extends UmbLitElement {
<umb-workspace-editor alias="Umb.Workspace.Dictionary">
<div id="header" slot="header">
<uui-button href="section/dictionary/dashboard" label=${this.localize.term('general_backToOverview')} compact>
<uui-icon name="umb:arrow-left"></uui-icon>
<uui-icon name="icon-arrow-left"></uui-icon>
</uui-button>
<uui-input
.value=${this._name ?? ''}

View File

@@ -237,14 +237,14 @@ export class UmbDashboardRedirectManagementElement extends UmbLitElement {
<uui-table-cell> ${data.culture || '*'} </uui-table-cell>
<uui-table-cell>
<a href="${data.originalUrl || '#'}" target="_blank"> ${data.originalUrl}</a>
<uui-icon name="umb:out"></uui-icon>
<uui-icon name="icon-out"></uui-icon>
</uui-table-cell>
<uui-table-cell>
<uui-icon name="umb:arrow-right"></uui-icon>
<uui-icon name="icon-arrow-right"></uui-icon>
</uui-table-cell>
<uui-table-cell>
<a href="${data.destinationUrl || '#'}" target="_blank"> ${data.destinationUrl}</a>
<uui-icon name="umb:out"></uui-icon>
<uui-icon name="icon-out"></uui-icon>
</uui-table-cell>
<uui-table-cell>
<uui-action-bar style="justify-self: left;">

View File

@@ -7,7 +7,7 @@ const menuItem: ManifestMenuItem = {
weight: 100,
meta: {
label: 'Document Blueprints',
icon: 'umb:blueprint',
icon: 'icon-blueprint',
entityType: 'document-blueprint-root',
menus: ['Umb.Menu.Settings'],
},

View File

@@ -15,7 +15,7 @@ const entityActions: Array<ManifestTypes> = [
weight: 1000,
api: UmbCreateDataTypeEntityAction,
meta: {
icon: 'umb:add',
icon: 'icon-add',
label: 'Create...',
repositoryAlias: DOCUMENT_TYPE_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_TYPE_ENTITY_TYPE, DOCUMENT_TYPE_ROOT_ENTITY_TYPE, DOCUMENT_TYPE_FOLDER_ENTITY_TYPE],

View File

@@ -53,10 +53,10 @@ export class UmbDataTypeCreateOptionsModalElement extends UmbLitElement {
href=${`section/settings/workspace/document-type/create/${this.data?.parentKey || 'null'}`}
label="New Document Type..."
@click=${this.#onNavigate}>
<uui-icon slot="icon" name="umb:autofill"></uui-icon>}
<uui-icon slot="icon" name="icon-autofill"></uui-icon>}
</uui-menu-item>
<uui-menu-item @click=${this.#onClick} label="New Folder...">
<uui-icon slot="icon" name="umb:folder"></uui-icon>}
<uui-icon slot="icon" name="icon-folder"></uui-icon>}
</uui-menu-item>
</uui-box>
<uui-button slot="actions" id="cancel" label="Cancel" @click="${this.#onCancel}">Cancel</uui-button>

View File

@@ -18,7 +18,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 900,
api: UmbDeleteEntityAction,
meta: {
icon: 'umb:trash',
icon: 'icon-trash',
label: 'Delete',
repositoryAlias: DOCUMENT_TYPE_REPOSITORY_ALIAS,
entityTypes: [entityType],
@@ -31,7 +31,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 700,
api: UmbMoveEntityAction,
meta: {
icon: 'umb:enter',
icon: 'icon-enter',
label: 'Move',
repositoryAlias: DOCUMENT_TYPE_REPOSITORY_ALIAS,
entityTypes: [entityType],
@@ -44,7 +44,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 600,
api: UmbCopyEntityAction,
meta: {
icon: 'umb:documents',
icon: 'icon-documents',
label: 'Copy',
repositoryAlias: DOCUMENT_TYPE_REPOSITORY_ALIAS,
entityTypes: [entityType],
@@ -57,7 +57,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 500,
api: UmbSortChildrenOfEntityAction,
meta: {
icon: 'umb:navigation-vertical',
icon: 'icon-navigation-vertical',
label: 'Sort',
repositoryAlias: DOCUMENT_TYPE_REPOSITORY_ALIAS,
entityTypes: [entityType],

View File

@@ -9,7 +9,7 @@ const menuItem: ManifestTypes = {
meta: {
treeAlias: 'Umb.Tree.DocumentTypes',
label: 'Document Types',
icon: 'umb:folder',
icon: 'icon-folder',
menus: ['Umb.Menu.Settings'],
},
};

View File

@@ -73,7 +73,7 @@ export class UmbDocumentTypeRepository
id: null,
type: 'document-type-root',
name: 'Document Types',
icon: 'umb:folder',
icon: 'icon-folder',
hasChildren: true,
};

View File

@@ -63,7 +63,7 @@ export class UmbDocumentTypeServerDataSource
name: '',
alias: '',
description: '',
icon: 'umb:document',
icon: 'icon-document',
allowedAsRoot: false,
variesByCulture: false,
variesBySegment: false,

View File

@@ -132,7 +132,7 @@ export class UmbDocumentTypeWorkspaceEditorElement extends UmbLitElement {
?disabled=${this._aliasLocked}>
<!-- TODO: validation for bad characters -->
<div @click=${this.#onToggleAliasLock} @keydown=${() => ''} id="alias-lock" slot="prepend">
<uui-icon name=${this._aliasLocked ? 'umb:lock' : 'umb:unlocked'}></uui-icon>
<uui-icon name=${this._aliasLocked ? 'icon-lock' : 'icon-unlocked'}></uui-icon>
</div>
</uui-input>
</uui-input>

View File

@@ -25,7 +25,7 @@ const workspaceEditorViews: Array<ManifestWorkspaceEditorView> = [
meta: {
label: 'Design',
pathname: 'design',
icon: 'umb:document-dashed-line',
icon: 'icon-document-dashed-line',
},
conditions: [
{
@@ -43,7 +43,7 @@ const workspaceEditorViews: Array<ManifestWorkspaceEditorView> = [
meta: {
label: 'Structure',
pathname: 'structure',
icon: 'umb:mindmap',
icon: 'icon-mindmap',
},
conditions: [
{
@@ -61,7 +61,7 @@ const workspaceEditorViews: Array<ManifestWorkspaceEditorView> = [
meta: {
label: 'Settings',
pathname: 'settings',
icon: 'umb:settings',
icon: 'icon-settings',
},
conditions: [
{
@@ -79,7 +79,7 @@ const workspaceEditorViews: Array<ManifestWorkspaceEditorView> = [
meta: {
label: 'Templates',
pathname: 'templates',
icon: 'umb:layout',
icon: 'icon-layout',
},
conditions: [
{

View File

@@ -187,7 +187,7 @@ export class UmbDocumentTypeWorkspacePropertyElement extends UmbLitElement {
if (!this.property) return;
return html`
<div class="sortable">
<uui-icon name="${this.inherited ? 'umb:merge' : 'umb:navigation'}"></uui-icon>
<uui-icon name="${this.inherited ? 'icon-merge' : 'icon-navigation'}"></uui-icon>
${this.property.name} <span style="color: var(--uui-color-disabled-contrast)">(${this.property.alias})</span>
</div>
<uui-input
@@ -257,7 +257,7 @@ export class UmbDocumentTypeWorkspacePropertyElement extends UmbLitElement {
<div id="editor">
${this.renderPropertyTags()}
<uui-tag look="default" class="inherited">
<uui-icon name="umb:merge"></uui-icon>
<uui-icon name="icon-merge"></uui-icon>
<span
>${this.localize.term('contentTypeEditor_inheritedFrom')}
<a href=${this._editDocumentTypePath + 'edit/' + this.ownerDocumentTypeId}>
@@ -285,7 +285,7 @@ export class UmbDocumentTypeWorkspacePropertyElement extends UmbLitElement {
<!-- TODO: should use UUI-LOCK-INPUT, but that does not fire an event when its locked/unlocked -->
<!-- TODO: validation for bad characters -->
<div @click=${this.#onToggleAliasLock} @keydown=${() => ''} id="alias-lock" slot="prepend">
<uui-icon name=${this._aliasLocked ? 'umb:lock' : 'umb:unlocked'}></uui-icon>
<uui-icon name=${this._aliasLocked ? 'icon-lock' : 'icon-unlocked'}></uui-icon>
</div>
</uui-input>`
: '';
@@ -297,7 +297,7 @@ export class UmbDocumentTypeWorkspacePropertyElement extends UmbLitElement {
${this.property.dataTypeId ? html`<uui-tag look="default">${this._dataTypeName}</uui-tag>` : nothing}
${this.property.variesByCulture
? html`<uui-tag look="default">
<uui-icon name="umb:shuffle"></uui-icon> ${this.localize.term('contentTypeEditor_cultureVariantLabel')}
<uui-icon name="icon-shuffle"></uui-icon> ${this.localize.term('contentTypeEditor_cultureVariantLabel')}
</uui-tag>`
: nothing}
${this.property.appearance?.labelOnTop == true

View File

@@ -161,7 +161,7 @@ export class UmbDocumentTypeWorkspaceViewEditTabElement extends UmbLitElement {
? html`
<div slot="header">
<div>
${this._sortModeActive ? html`<uui-icon name="umb:navigation"></uui-icon>` : ''}
${this._sortModeActive ? html`<uui-icon name="icon-navigation"></uui-icon>` : ''}
<uui-input
label="Group name"
@@ -179,7 +179,7 @@ export class UmbDocumentTypeWorkspaceViewEditTabElement extends UmbLitElement {
</div>
`
: html`<div slot="header">
<div><uui-icon name="umb:merge"></uui-icon><b>${group.name ?? ''}</b> (Inherited)</div>
<div><uui-icon name="icon-merge"></uui-icon><b>${group.name ?? ''}</b> (Inherited)</div>
${!this._sortModeActive
? html`<uui-input
readonly

View File

@@ -295,7 +295,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement
renderAddButton() {
if (this.sortModeActive) return;
return html`<uui-button id="add-tab" @click="${this.#addTab}" label="Add tab" compact>
<uui-icon name="umb:add"></uui-icon>
<uui-icon name="icon-add"></uui-icon>
Add tab
</uui-button>`;
}
@@ -307,11 +307,11 @@ export class UmbDocumentTypeWorkspaceViewEditElement
return html`<div class="tab-actions">
<uui-button look="outline" label=${this.localize.term('contentTypeEditor_compositions')} compact>
<uui-icon name="umb:merge"></uui-icon>
<uui-icon name="icon-merge"></uui-icon>
${this.localize.term('contentTypeEditor_compositions')}
</uui-button>
<uui-button look="outline" label=${sortButtonText} compact @click=${this.#changeMode}>
<uui-icon name="umb:navigation"></uui-icon>
<uui-icon name="icon-navigation"></uui-icon>
${sortButtonText}
</uui-button>
</div>`;
@@ -362,8 +362,8 @@ export class UmbDocumentTypeWorkspaceViewEditElement
if (this.sortModeActive) {
return html`<div class="no-edit">
${tabInherited
? html`<uui-icon class="external" name="umb:merge"></uui-icon>${tab.name!}`
: html`<uui-icon name="umb:navigation" class="drag-${tab.id}"> </uui-icon>${tab.name!}
? html`<uui-icon class="external" name="icon-merge"></uui-icon>${tab.name!}`
: html`<uui-icon name="icon-navigation" class="drag-${tab.id}"> </uui-icon>${tab.name!}
<uui-input
label="sort order"
type="number"
@@ -392,7 +392,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement
}
if (tabInherited) {
return html`<div class="no-edit"><uui-icon name="umb:merge"></uui-icon>${tab.name!}</div>`;
return html`<div class="no-edit"><uui-icon name="icon-merge"></uui-icon>${tab.name!}</div>`;
} else {
return html`<div class="no-edit">${tab.name!} ${this.renderDeleteFor(tab)}</div>`;
}
@@ -412,7 +412,7 @@ export class UmbDocumentTypeWorkspaceViewEditElement
?disabled=${this._buttonDisabled}
@click=${() => this.#requestRemoveTab(tab)}
compact>
<uui-icon name="umb:trash"></uui-icon>
<uui-icon name="icon-trash"></uui-icon>
</uui-button>`;
}

View File

@@ -12,7 +12,7 @@ export const manifests: Array<ManifestCollectionView> = [
},
meta: {
label: 'Table',
icon: 'umb:box',
icon: 'icon-box',
pathName: 'table',
},
},

View File

@@ -11,7 +11,7 @@ const entityActions: Array<ManifestEntityAction> = [
weight: 1000,
api: UmbCreateDocumentEntityAction,
meta: {
icon: 'umb:add',
icon: 'icon-add',
label: 'Create',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ROOT_ENTITY_TYPE, DOCUMENT_ENTITY_TYPE],

View File

@@ -25,7 +25,7 @@ const entityActions: Array<ManifestTypes> = [
weight: 800,
api: UmbCreateDocumentBlueprintEntityAction,
meta: {
icon: 'umb:blueprint',
icon: 'icon-blueprint',
label: 'Create Document Blueprint (TBD)',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ENTITY_TYPE],
@@ -38,7 +38,7 @@ const entityActions: Array<ManifestTypes> = [
weight: 700,
api: UmbMoveEntityAction,
meta: {
icon: 'umb:enter',
icon: 'icon-enter',
label: 'Move (TBD)',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ENTITY_TYPE],
@@ -51,7 +51,7 @@ const entityActions: Array<ManifestTypes> = [
weight: 600,
api: UmbCopyEntityAction,
meta: {
icon: 'umb:documents',
icon: 'icon-documents',
label: 'Copy (TBD)',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ENTITY_TYPE],
@@ -64,7 +64,7 @@ const entityActions: Array<ManifestTypes> = [
weight: 500,
api: UmbSortChildrenOfEntityAction,
meta: {
icon: 'umb:navigation-vertical',
icon: 'icon-navigation-vertical',
label: 'Sort (TBD)',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ROOT_ENTITY_TYPE, DOCUMENT_ENTITY_TYPE],
@@ -77,7 +77,7 @@ const entityActions: Array<ManifestTypes> = [
weight: 400,
api: UmbDocumentCultureAndHostnamesEntityAction,
meta: {
icon: 'umb:home',
icon: 'icon-home',
label: 'Culture And Hostnames (TBD)',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ENTITY_TYPE],
@@ -89,7 +89,7 @@ const entityActions: Array<ManifestTypes> = [
name: 'Document Permissions Entity Action',
api: UmbDocumentPublicAccessEntityAction,
meta: {
icon: 'umb:lock',
icon: 'icon-lock',
label: 'Public Access (TBD)',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ENTITY_TYPE],
@@ -101,7 +101,7 @@ const entityActions: Array<ManifestTypes> = [
name: 'Publish Document Entity Action',
api: UmbPublishDocumentEntityAction,
meta: {
icon: 'umb:globe',
icon: 'icon-globe',
label: 'Publish (TBD)',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ENTITY_TYPE],
@@ -113,7 +113,7 @@ const entityActions: Array<ManifestTypes> = [
name: 'Unpublish Document Entity Action',
api: UmbUnpublishDocumentEntityAction,
meta: {
icon: 'umb:globe',
icon: 'icon-globe',
label: 'Unpublish (TBD)',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ENTITY_TYPE],
@@ -125,7 +125,7 @@ const entityActions: Array<ManifestTypes> = [
name: 'Rollback Document Entity Action',
api: UmbRollbackDocumentEntityAction,
meta: {
icon: 'umb:undo',
icon: 'icon-undo',
label: 'Rollback (TBD)',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ENTITY_TYPE],

View File

@@ -10,7 +10,7 @@ const entityActions: Array<ManifestEntityAction> = [
name: 'Document Permissions Entity Action',
api: UmbDocumentPermissionsEntityAction,
meta: {
icon: 'umb:vcard',
icon: 'icon-vcard',
label: 'Permissions (TBD)',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ENTITY_TYPE],

View File

@@ -8,7 +8,7 @@ const menuItem: ManifestMenuItem = {
loader: () => import('./document-menu-item.element.js'),
meta: {
label: 'Documents',
icon: 'umb:folder',
icon: 'icon-folder',
menus: ['Umb.Menu.Content'],
},
};

View File

@@ -8,7 +8,7 @@ export const manifest: ManifestPropertyEditorUi = {
meta: {
label: 'Document Picker',
propertyEditorSchemaAlias: 'Umbraco.ContentPicker',
icon: 'umb:document',
icon: 'icon-document',
group: 'common',
settings: {
properties: [

View File

@@ -10,7 +10,7 @@ export const manifests = [
weight: 900,
api: UmbTrashEntityAction,
meta: {
icon: 'umb:trash',
icon: 'icon-trash',
label: 'Trash',
repositoryAlias: DOCUMENT_REPOSITORY_ALIAS,
entityTypes: [DOCUMENT_ENTITY_TYPE],

View File

@@ -9,7 +9,7 @@ const menuItem: ManifestTypes = {
meta: {
treeAlias: 'Umb.Tree.DocumentRecycleBin',
label: 'Recycle Bin',
icon: 'umb:trash',
icon: 'icon-trash',
menus: ['Umb.Menu.Content'],
},
};

View File

@@ -36,7 +36,7 @@ export class UmbDocumentRecycleBinRepository implements UmbTreeRepository<Docume
id: null,
type: 'document-recycle-bin-root',
name: 'Recycle Bin',
icon: 'umb:trash',
icon: 'icon-trash',
hasChildren: true,
};

View File

@@ -72,7 +72,7 @@ export class UmbDocumentRepository
id: null,
type: 'document-root',
name: 'Documents',
icon: 'umb:folder',
icon: 'icon-folder',
hasChildren: true,
};

Some files were not shown because too many files have changed in this diff Show More