Skip to content

Commit 8c1e55c

Browse files
committed
FEATURE: Configuration ui tab rendering
1 parent 960f55e commit 8c1e55c

File tree

10 files changed

+159
-85
lines changed

10 files changed

+159
-85
lines changed
Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,27 @@ Neos.Neos.Module.Administration.ConfigurationController.index = Neos.Fusion:Comp
2424
<main class="neos-content neos-container-fluid">
2525
<div class="neos-row-fluid">
2626
<Neos.Neos:Common.SubNavigation>
27-
<ul class="neos-flex-row">
28-
<Neos.Fusion:Loop items={props.availableConfigurationTypes} @if={request.format != 'htmx'}>
29-
<li>
30-
<a
31-
class={'neos-button' + (item == props.type ? ' neos-active' : '')}
32-
aria-current={item == props.type ? 'page' : null}
33-
>
34-
<Neos.Fusion:ActionUri
35-
@path="attributes.href"
36-
controller="Module\\Administration\\Configuration"
37-
action="index"
38-
format="html"
39-
arguments.type={item}
40-
/>
41-
{item}
42-
</a>
43-
</li>
44-
</Neos.Fusion:Loop>
45-
</ul>
27+
<Neos.Fusion:Loop items={props.availableConfigurationTypes} @if={request.format != 'htmx'}>
28+
<Neos.Neos:Component.LinkButton
29+
label={item}
30+
isActive={item == props.type ? 'page' : null}
31+
>
32+
<Neos.Fusion:ActionUri
33+
@path="attributes.href"
34+
controller="Module\\Administration\\Configuration"
35+
action="index"
36+
format="html"
37+
arguments.type={item}
38+
/>
39+
</Neos.Neos:Component.LinkButton>
40+
</Neos.Fusion:Loop>
4641
</Neos.Neos:Common.SubNavigation>
47-
<Neos.Neos:Common.Container content={props.type} />
42+
<Neos.Neos:Common.Container>
43+
<Neos.Configuration.Ui:Component.Tabs.Caches
44+
configuration={props.configuration}
45+
@if={props.type == 'Caches'}
46+
/>
47+
</Neos.Neos:Common.Container>
4848
</div>
4949
</main>
5050
<Neos.Workspace.Ui:Component.Footer>
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
prototype(Neos.Neos:Component.LinkButton) < prototype(Neos.Fusion:Component) {
2+
/// string
3+
title = ''
4+
/// string
5+
label = ''
6+
/// string
7+
href = ''
8+
/// boolean
9+
isDanger = false
10+
/// boolean
11+
isWarning = false
12+
/// boolean
13+
isPrimary = false
14+
///boolean
15+
isSuccess = false
16+
///boolean
17+
isActive = false
18+
/// string
19+
icon = ''
20+
/// array<string,mixed>
21+
attributes = Neos.Fusion:DataStructure
22+
23+
@private {
24+
classNames = Neos.Fusion:DataStructure {
25+
main = 'neos-button'
26+
danger = ${props.isDanger && 'neos-button-danger'}
27+
warning = ${props.isWarning && 'neos-button-warning'}
28+
primarry = ${props.isPrimary && 'neos-button-primary'}
29+
success = ${props.isSuccess && 'neos-button-success'}
30+
active = ${props.isActive && 'neos-active'}
31+
}
32+
}
33+
34+
renderer = afx`
35+
<a
36+
type="button"
37+
title={props.title}
38+
class={private.classNames}
39+
href={props.href}
40+
aria-current={props.isActive ? 'page' : null}
41+
{...props.attributes}
42+
>
43+
<Neos.Workspace.Ui:Component.Icon icon={props.icon} @if={props.icon}/>
44+
{props.icon ? ' ' : ''}{props.label}
45+
</a>
46+
`
47+
}

Neos.Neos/Resources/Private/Fusion/Backend/Configuration.Ui/Common/SubNavigation.fusion

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ prototype(Neos.Neos:Common.SubNavigation) < prototype(Neos.Fusion:Component) {
22
content = ''
33

44
renderer = afx`
5-
<nav class="sub-navigation">
5+
<nav class="neos-flex-row">
66
{props.content}
77
</nav>
88
`

Neos.Neos/Resources/Private/Fusion/Backend/Configuration.Ui/Common/Tree.fusion

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ prototype(Neos.Neos:Component.Tree) < prototype(Neos.Fusion:Component) {
22
configuration = ${[]}
33

44
renderer = afx`
5-
<ul>
5+
<ul class="neos-tree-root">
66
<Neos.Fusion:Loop items={props.configuration}>
7-
<li class={'neos-tree-node' + (Type.isArray(item)? ' neos-tree-folder' : '')}>
7+
<li class={['neos-tree-node', Type.isArray(item)? ' neos-tree-folder' : '']}>
88
<span class="node-tree-title">{itemKey}
99
<Neos.Fusion:Fragment @if.isString={!Type.isArray(item)}>{": "}</Neos.Fusion:Fragment>
1010
<span @if.isArray={Type.isArray(item)}>{" "}({Array.length(item)})</span>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
prototype(Neos.Configuration.Ui:Component.Tabs.Caches) < prototype(Neos.Fusion:Component) {
2+
configuration = ${{}}
3+
4+
renderer = afx`
5+
<div class="neos-configuration-tab neos-configuration-tab--caches">
6+
<Neos.Neos:Component.Tree
7+
configuration={props.configuration}
8+
/>
9+
</div>
10+
`
11+
}
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
include: resource://Neos.Fusion/Private/Fusion/Root.fusion
22
include: resource://Neos.Fusion.Form/Private/Fusion/Root.fusion
33
include: resource://Neos.Neos/Private/Fusion/SharedCoreComponents/*
4-
include: resource://Neos.Neos/Private/Fusion/Backend/*
54
include: resource://Neos.Neos/Private/Fusion/*
65
include: resource://Neos.Workspace.Ui/Private/Fusion/*
76
include: **/*

Neos.Neos/Resources/Private/Styles/Modules/Administration/_Configuration.scss

Lines changed: 0 additions & 56 deletions
This file was deleted.

Neos.Neos/Resources/Private/Styles/Modules/_Modules.scss

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
&.neos-module {
2-
@import "Administration/Configuration";
32
@import "Administration/Packages";
43
@import "Administration/Sites";
5-
@import "Administration/Users";
4+
@import "Administration/Users";
65
@import "Management/Workspaces";
76
@include font;
87

Neos.Neos/Resources/Public/Styles/Module.Configuration.Ui.css

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,62 @@
99
.neos-py-2 {
1010
padding-block: 2rem;
1111
}
12+
13+
.neos-module-administration-configuration {
14+
.neos-configuration-tab {
15+
> ul {
16+
display: block;
17+
18+
ul {
19+
padding-left: 1rem;
20+
}
21+
22+
.neos-tree-node {
23+
cursor: pointer;
24+
height: auto;
25+
26+
&.neos-tree-folder .neos-tree-title {
27+
user-select: none;
28+
}
29+
30+
.neos-tree-icon {
31+
display: none;
32+
}
33+
34+
.neos-tree-title {
35+
width: calc(100% - 24px);
36+
height: auto;
37+
white-space: normal;
38+
text-align: left;
39+
word-break: break-word;
40+
word-wrap: break-word;
41+
}
42+
}
43+
}
44+
45+
.key,
46+
.value {
47+
display: inline;
48+
}
49+
50+
.value {
51+
&.-is-boolean,
52+
&.-is-NULL {
53+
color: var(--warningText);
54+
}
55+
56+
&.-is-integer,
57+
&.-is-double {
58+
color: var(--warningText);
59+
}
60+
61+
&.-is-string {
62+
color: var(--warningText);
63+
}
64+
65+
&.-is-string {
66+
color: var(--infoText);
67+
}
68+
}
69+
}
70+
}

Neos.Workspace.Ui/Resources/Private/Fusion/Common/Presentationals/Button.fusion

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ prototype(Neos.Workspace.Ui:Component.Button) < prototype(Neos.Fusion:Component)
1111
isPrimary = false
1212
///boolean
1313
isSuccess = false
14+
///boolean
15+
isActive = false
1416
/// boolean
1517
disabled = false
1618
/// string
@@ -20,14 +22,27 @@ prototype(Neos.Workspace.Ui:Component.Button) < prototype(Neos.Fusion:Component)
2022
/// array<string,mixed>
2123
attributes = Neos.Fusion:DataStructure
2224

25+
@private {
26+
classNames = Neos.Fusion:DataStructure {
27+
main = 'neos-button'
28+
danger = ${props.isDanger && 'neos-button-danger'}
29+
warning = ${props.isWarning && 'neos-button-warning'}
30+
primarry = ${props.isPrimary && 'neos-button-primary'}
31+
success = ${props.isSuccess && 'neos-button-success'}
32+
active = ${props.isActive && 'neos-active'}
33+
}
34+
}
35+
2336
renderer = afx`
2437
<button
2538
type="button"
2639
title={props.title}
27-
class={['neos-button', props.isDanger && 'neos-button-danger', props.isWarning && 'neos-button-warning', props.isPrimary && 'neos-button-primary', props.isSuccess && 'neos-button-success']}
40+
class={private.classNames}
2841
autofocus
29-
autofocus.@if={props.autofocus}
30-
disabled.@if={props.disabled}
42+
autofocus.@if={!props.isLink && props.autofocus}
43+
disabled
44+
disabled.@if={!props.isLink && props.disabled}
45+
aria-current={props.isActive ? 'page' : null}
3146
{...props.attributes}
3247
>
3348
<Neos.Workspace.Ui:Component.Icon icon={props.icon} @if={props.icon}/>

0 commit comments

Comments
 (0)