diff options
Diffstat (limited to 'src/components/editors')
| -rw-r--r-- | src/components/editors/brand-editor.js | 79 | ||||
| -rw-r--r-- | src/components/editors/item-editor.js | 2 | ||||
| -rw-r--r-- | src/components/editors/scss/brand-editor.scss | 22 | 
3 files changed, 103 insertions, 0 deletions
| diff --git a/src/components/editors/brand-editor.js b/src/components/editors/brand-editor.js new file mode 100644 index 0000000..801a790 --- /dev/null +++ b/src/components/editors/brand-editor.js @@ -0,0 +1,79 @@ +/* OpenBills-web - Web based libre billing software + * Copyright (C) 2022  Vidhu Kant Sharma <vidhukant@vidhukant.xyz> + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <https://www.gnu.org/licenses/>. + */ + +import { Brand, saveBrand } from './../../classes/brand' +import './scss/brand-editor.scss' + +import { useState, useEffect } from 'react'; + +const BrandEditor = (props) => { +  const [name, setName] = useState(""); + +  const handleSubmit = (e) => { +    e.preventDefault(); + +    const brand = new Brand(); +    brand.Name = name; + +    // TODO: Save is for new brands. implement modification too +    saveBrand(brand, handleSuccess, handleFail); +  } + +  const handleSuccess = () => { +    clearAll(); +    props.callback(); +  } + +  const handleFail = () => { +    alert("fail"); +  } + +  const clearAll = () => { +    setName(""); +  } + +  const handleCancel = () => { +    // TODO: hide this component or something +    clearAll(); +  } + +  const validateFloatInput = (e, callback) => { +    const f = parseFloat(e.target.value); +    f && callback(f) +  } + +  return ( +    <div className={"editor-wrapper"}> +      <p>{props.heading}</p> +      <form onSubmit={handleSubmit} className={"editor brand-editor"}> +        <label> +          Brand Name: +          <input +            type="text" name="name" +            value={name} onChange={(e) => setName(e.target.value)} /> +        </label> + +        <span className={"buttons"}> +          <input type="button" value="Clear" onClick={clearAll}/> +          <input type="submit" value="Save" /> +        </span> +      </form> +    </div> +  ); +} + +export default BrandEditor; diff --git a/src/components/editors/item-editor.js b/src/components/editors/item-editor.js index 19fa7e2..6c5e976 100644 --- a/src/components/editors/item-editor.js +++ b/src/components/editors/item-editor.js @@ -154,6 +154,7 @@ const ItemEditor = (props) => {              value={maxQty} onChange={(e) => validateFloatInput(e, setMaxQty)} />          </label> +        {savedBrands && savedBrands.length > 0 &&          <label>            Brand:            <select value={brand.Id ? brand.Id : ""} onChange={handleBrandSelect}> @@ -163,6 +164,7 @@ const ItemEditor = (props) => {              {savedBrands.map(i => <option key={i.Id} value={i.Id}>{i.Name}</option>)}            </select>          </label> +        }          <span className={"buttons"}>            <input type="button" value="Clear" onClick={clearAll}/> diff --git a/src/components/editors/scss/brand-editor.scss b/src/components/editors/scss/brand-editor.scss new file mode 100644 index 0000000..05b05a7 --- /dev/null +++ b/src/components/editors/scss/brand-editor.scss @@ -0,0 +1,22 @@ +/* OpenBills-web - Web based libre billing software + * Copyright (C) 2022  Vidhu Kant Sharma <vidhukant@vidhukant.xyz> + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <https://www.gnu.org/licenses/>. + */ + +@import "editor"; + +.brand-editor .buttons { +    width: 9.5rem; +} |