Просмотр исходного кода

CSS refactor a little. Fixed the modal from being drawn over

master
James McKenzie 3 лет назад
Родитель
Сommit
0e8b97e363
7 измененных файлов: 160 добавлений и 164 удалений
  1. +74
    -14
      ReactLearning/kanban-board/src/App.css
  2. +19
    -23
      ReactLearning/kanban-board/src/App.tsx
  3. +32
    -43
      ReactLearning/kanban-board/src/components/Header.tsx
  4. +31
    -20
      ReactLearning/kanban-board/src/components/KBColumn.tsx
  5. +0
    -1
      ReactLearning/kanban-board/src/components/Modal.tsx
  6. +0
    -59
      ReactLearning/kanban-board/src/components/modal.css
  7. +4
    -4
      ReactLearning/kanban-board/src/types/ColumnPassback.ts

+ 74
- 14
ReactLearning/kanban-board/src/App.css Просмотреть файл

@@ -25,7 +25,7 @@ html {
display: flex;
text-align: center;
flex-direction: column;
justify-content:flex-start;
justify-content: flex-start;
float: left;
width: initial;
position: relative;
@@ -34,35 +34,34 @@ html {
border-color: #ddd;
border-width: 2px;
min-width: 200px;
min-height: 800px;
min-height: 200px;
max-width: 25%;
border-style: solid;
color: "orange";
margin: 5px;
padding: 5px;
flex-wrap: nowrap;
}
.panel{
display: flex;
flex-direction: row;
flex-wrap: nowrap;
}

.taskWrapper{
.taskWrapper {
display: flex;
min-height: 100px;
flex-direction: row;
align-items: stretch;
position: relative;



}
.prioBlock{
.prioBlock {
order: 1;
flex: 1;
display: flex;
overflow:hidden;


overflow: hidden;
}
.taskText{
.taskText {
order: 5;
flex: 5;
height: 100%;
@@ -71,3 +70,64 @@ html {
.panel {
width: 100%;
}

.modal {
z-index: 10;
}

.modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
color: black;
background: rgba(0, 0, 0, 0.5);
}

.modal-main label {
float: left;
margin-left: 20%;
}
.modal-main input {
display: block;
float: right;
}

.modal-main button:last-of-type {

margin: auto;
display: block;

background-color: darkRed;
color: #CCC
}

.modal-main button {

display: block;

text-align: center;
background-color: green;
}

.modal-main {
position: fixed;
text-align: center;
background: white;
width: 50%;
height: auto;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 999;
}

.display-block {
display: block;
}

.display-none {
display: none;
}

+ 19
- 23
ReactLearning/kanban-board/src/App.tsx Просмотреть файл

@@ -4,7 +4,7 @@ import "./App.css";
import Header from "./components/Header";
import Column from "./types/Column";
import TaskPassback from "./types/TaskPassback";
import ColumnPassback from "./types/ColumnPassback"
import ColumnPassback from "./types/ColumnPassback";

type State = {
columns: Column[];
@@ -35,18 +35,14 @@ class App extends React.Component<{}, State> {
addColumn(columnInstance?: ColumnPassback) {
let columnId = this.state.columnIterator;
this.setState({ columnIterator: columnId + 1 });
if (columnInstance !== undefined){
this.state.columns.push({
id: columnId,
name: columnInstance?.title,
color: columnInstance?.color,
tasks: [],
if (columnInstance !== undefined) {
this.state.columns.push({
id: columnId,
name: columnInstance?.title,
color: columnInstance?.color,
tasks: [],
});
}
);
}
}

addTask(taskInstance?: TaskPassback) {
@@ -56,16 +52,15 @@ class App extends React.Component<{}, State> {
let index = -2;
if (taskInstance !== undefined) {
this.setState({ taskIterator: taskId + 1 });
console.log(this.state.columns)
console.log(taskInstance.column)
console.log(this.state.columns);
console.log(taskInstance.column);
let indexObj = this.state.columns.find(
(o) => o.id === taskInstance.column
);
if (indexObj) {
index = this.state.columns.indexOf(indexObj);
}
else{
alert("Clifford")
} else {
alert("Clifford");
}

if (index >= 0) {
@@ -75,13 +70,14 @@ class App extends React.Component<{}, State> {
description: taskInstance.description,
priority: taskInstance.priority,
});
} else {
alert(
"Error finding that column. Check it hasn't already been deleted!" +
index
);
}
else{
alert("Error finding that column. Check it hasn't already been deleted!" + index)
}
}
else{
alert("Oh god, oh heck")
} else {
alert("Oh god, oh heck");
}
} else {
alert("You might want to consider adding a column!");


+ 32
- 43
ReactLearning/kanban-board/src/components/Header.tsx Просмотреть файл

@@ -3,7 +3,7 @@ import Modal from "./Modal";
import Column from "../types/Column";
import TaskPassback from "../types/TaskPassback";
import Priority from "../types/Priority";
import ColumnPassback from "../types/ColumnPassback"
import ColumnPassback from "../types/ColumnPassback";

type HeaderProps = {
addColumn: (columnInstance?: ColumnPassback) => void;
@@ -41,34 +41,31 @@ class Header extends React.Component<HeaderProps, State> {
taskColumnNumber: -1,
columnTitle: "",
columnColor: "#00CC00",

};
}

showTaskModal = () => {
if (this.props.columns.length > 0){
let {showTask, taskColumnNumber} = {...this.state}
showTask = true;
taskColumnNumber = this.props.columns[0].id
this.setState({ showTask, taskColumnNumber});
}
else{
alert("Add a column please!")
if (this.props.columns.length > 0) {
let { showTask, taskColumnNumber } = { ...this.state };
showTask = true;
taskColumnNumber = this.props.columns[0].id;
this.setState({ showTask, taskColumnNumber });
} else {
alert("Add a column please!");
}
};
showColumnModal = () => {
let {showColumn} = {...this.state}
let { showColumn } = { ...this.state };
showColumn = true;
this.setState({showColumn})
}
this.setState({ showColumn });
};

hideModal = () => {
this.setState({ showTask: false });
};
hideColumnModal = () => {
this.setState({showColumn: false})
}
this.setState({ showColumn: false });
};

handleInputChange(event: React.ChangeEvent<HTMLInputElement>) {
const target = event.target.id;
@@ -78,11 +75,11 @@ class Header extends React.Component<HeaderProps, State> {
if (target === "descInput") {
this.setState({ taskDesc: event.target.value });
}
if (target === "columnTitle"){
this.setState({columnTitle: event.target.value})
if (target === "columnTitle") {
this.setState({ columnTitle: event.target.value });
}
if (target === "columnColor"){
this.setState({columnColor: event.target.value})
if (target === "columnColor") {
this.setState({ columnColor: event.target.value });
}
}

@@ -99,7 +96,6 @@ class Header extends React.Component<HeaderProps, State> {
}

render() {
return (
<div className="header" style={{ height: 60 }}>
<h1
@@ -164,16 +160,12 @@ class Header extends React.Component<HeaderProps, State> {
<br />
<button
onClick={() =>
this.props.addTask({
title: this.state.taskTitle,
description: this.state.taskDesc,
priority: this.state.taskPrio,
column: this.state.taskColumnNumber,
}
)
})
}
>
Add Task
@@ -187,13 +179,10 @@ class Header extends React.Component<HeaderProps, State> {
</button>
</Modal>

<Modal show={this.state.showColumn} handleClose={this.hideModal}>
<h3>Lets add a column! 🤔</h3>

<p> NP Love is a danger - Priscilla </p>


<label>
<label>
{" "}
Title:
<input
@@ -207,7 +196,7 @@ class Header extends React.Component<HeaderProps, State> {

<label>
{" "}
Title:
Color:
<input
type="text"
id="columnColor"
@@ -217,24 +206,24 @@ class Header extends React.Component<HeaderProps, State> {
</label>
<br />

<button
onClick={() =>
this.props.addColumn({
title: this.state.columnTitle,
color: this.state.columnColor,
})
}
>
Add Column
</button>

<button onClick={() =>
this.props.addColumn({
title: this.state.columnTitle,
color: this.state.columnColor,
})
}
>NP Dancing - Vicky Vale</button>


<button
<button
onClick={() => {
this.hideColumnModal();
}}
>
Close
</button>

</Modal>
<button onClick={this.showTaskModal}> Add task </button>
<button onClick={this.showColumnModal}> Add column </button>


+ 31
- 20
ReactLearning/kanban-board/src/components/KBColumn.tsx Просмотреть файл

@@ -17,32 +17,43 @@ let bgc = "#666";
const KBColumn = (props: KBColumnProps) => {
const { color, title, tasks, onDelete, id } = { ...defaultProps, ...props };

let colTasks = tasks.map((task) => {
if (task.priority === "urgent") {
bgc = "red";
} else if (task.priority === "important") {
bgc = "yellow";
} else if (task.priority === "normal") {
bgc = "blue";
}
let colTasks = tasks.map((task) => {
if (task.priority === "urgent") {
bgc = "red";
} else if (task.priority === "important") {
bgc = "yellow";
} else if (task.priority === "normal") {
bgc = "blue";
}

return (
<div style={{borderColor: "#ccc", borderWidth: "1px", borderStyle: "solid", margin: "10px"}} className="taskWrapper">
<div style={{ backgroundColor: bgc, display: "inline"}} className="prioBlock" title={task.priority}></div>
<div className="taskText">
<p> {task.title} </p>
return (
<div
style={{
borderColor: "#ccc",
borderWidth: "1px",
borderStyle: "solid",
margin: "10px",
}}
className="taskWrapper"
>
<div
style={{ backgroundColor: bgc, display: "inline" }}
className="prioBlock"
title={task.priority}
></div>
<div className="taskText">
<h3> {task.title} </h3>

<p> {task.description} </p>
</div>
</div>
);
});
</div>
);
});
return (
<div className="KBColumn" style={{ backgroundColor: color }}>
<div className="KBColumn" style={{ backgroundColor: color }}>
<h3>{title}</h3>
{colTasks}
{colTasks}
<button
onClick={() => {
onDelete && onDelete(id);


+ 0
- 1
ReactLearning/kanban-board/src/components/Modal.tsx Просмотреть файл

@@ -1,4 +1,3 @@
import "./modal.css";

type ModalProps = {
handleClose: () => void;


+ 0
- 59
ReactLearning/kanban-board/src/components/modal.css Просмотреть файл

@@ -1,59 +0,0 @@
.modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
color: black;
background: rgba(0, 0, 0, 0.5);
}

.modal-main label {
float: left;
margin-left: 20%;
}
.modal-main input {
display: block;
float: right;
}
select {
background-color: red;
text-align: right;
margin-left: auto;
}
.modal-main button {
margin: 0 auto;
float: left;
display: block;
transform: translate(-50%);
margin-left: 0;
background-color: dodgerblue;
}

.modal-main button:first-of-type {
clear: left;
display: block;
margin-left: 50%;
margin-right: 0;
text-align: center;
background-color: green;
}

.modal-main {
position: fixed;
text-align: center;
background: white;
width: 50%;
height: auto;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}

.display-block {
display: block;
}

.display-none {
display: none;
}

+ 4
- 4
ReactLearning/kanban-board/src/types/ColumnPassback.ts Просмотреть файл

@@ -1,6 +1,6 @@
type ColumnPassback = {
color: string,
title: string
}
color: string;
title: string;
};

export default ColumnPassback
export default ColumnPassback;

Загрузка…
Отмена
Сохранить