mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-05 22:55:58 +00:00
Add new tags in item detail view
This commit is contained in:
parent
f407f08ed3
commit
459647f83f
@ -1,5 +1,6 @@
|
|||||||
module Api exposing
|
module Api exposing
|
||||||
( cancelJob
|
( addTag
|
||||||
|
, cancelJob
|
||||||
, changePassword
|
, changePassword
|
||||||
, checkCalEvent
|
, checkCalEvent
|
||||||
, createImapSettings
|
, createImapSettings
|
||||||
@ -693,7 +694,7 @@ getContacts flags kind q receive =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Tags
|
--- Tags
|
||||||
|
|
||||||
|
|
||||||
getTags : Flags -> String -> (Result Http.Error TagList -> msg) -> Cmd msg
|
getTags : Flags -> String -> (Result Http.Error TagList -> msg) -> Cmd msg
|
||||||
@ -732,7 +733,7 @@ deleteTag flags tag receive =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Equipments
|
--- Equipments
|
||||||
|
|
||||||
|
|
||||||
getEquipments : Flags -> String -> (Result Http.Error EquipmentList -> msg) -> Cmd msg
|
getEquipments : Flags -> String -> (Result Http.Error EquipmentList -> msg) -> Cmd msg
|
||||||
@ -771,7 +772,7 @@ deleteEquip flags equip receive =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Organization
|
--- Organization
|
||||||
|
|
||||||
|
|
||||||
getOrgLight : Flags -> (Result Http.Error ReferenceList -> msg) -> Cmd msg
|
getOrgLight : Flags -> (Result Http.Error ReferenceList -> msg) -> Cmd msg
|
||||||
@ -819,7 +820,7 @@ deleteOrg flags org receive =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Person
|
--- Person
|
||||||
|
|
||||||
|
|
||||||
getPersonsLight : Flags -> (Result Http.Error ReferenceList -> msg) -> Cmd msg
|
getPersonsLight : Flags -> (Result Http.Error ReferenceList -> msg) -> Cmd msg
|
||||||
@ -906,7 +907,7 @@ deleteSource flags src receive =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Users
|
--- Users
|
||||||
|
|
||||||
|
|
||||||
getUsers : Flags -> (Result Http.Error UserList -> msg) -> Cmd msg
|
getUsers : Flags -> (Result Http.Error UserList -> msg) -> Cmd msg
|
||||||
@ -958,7 +959,7 @@ deleteUser flags user receive =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Job Queue
|
--- Job Queue
|
||||||
|
|
||||||
|
|
||||||
cancelJob : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
cancelJob : Flags -> String -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
||||||
@ -1008,7 +1009,7 @@ getJobQueueStateTask flags =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Item
|
--- Item
|
||||||
|
|
||||||
|
|
||||||
moveAttachmentBefore :
|
moveAttachmentBefore :
|
||||||
@ -1055,6 +1056,16 @@ setTags flags item tags receive =
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
addTag : Flags -> String -> Tag -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
||||||
|
addTag flags item tag receive =
|
||||||
|
Http2.authPost
|
||||||
|
{ url = flags.config.baseUrl ++ "/api/v1/sec/item/" ++ item ++ "/tags"
|
||||||
|
, account = getAccount flags
|
||||||
|
, body = Http.jsonBody (Api.Model.Tag.encode tag)
|
||||||
|
, expect = Http.expectJson receive Api.Model.BasicResult.decoder
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
setDirection : Flags -> String -> DirectionValue -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
setDirection : Flags -> String -> DirectionValue -> (Result Http.Error BasicResult -> msg) -> Cmd msg
|
||||||
setDirection flags item dir receive =
|
setDirection flags item dir receive =
|
||||||
Http2.authPut
|
Http2.authPut
|
||||||
@ -1184,7 +1195,7 @@ getItemProposals flags item receive =
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Helper
|
--- Helper
|
||||||
|
|
||||||
|
|
||||||
getAccount : Flags -> AuthResult
|
getAccount : Flags -> AuthResult
|
||||||
|
362
modules/webapp/src/main/elm/Comp/DetailEdit.elm
Normal file
362
modules/webapp/src/main/elm/Comp/DetailEdit.elm
Normal file
@ -0,0 +1,362 @@
|
|||||||
|
module Comp.DetailEdit exposing
|
||||||
|
( Model
|
||||||
|
, Msg
|
||||||
|
, Value(..)
|
||||||
|
, fold
|
||||||
|
, initEquip
|
||||||
|
, initOrg
|
||||||
|
, initPerson
|
||||||
|
, initTag
|
||||||
|
, initTagByName
|
||||||
|
, update
|
||||||
|
, view
|
||||||
|
, viewModal
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Module for allowing to edit metadata in the item-edit menu.
|
||||||
|
|
||||||
|
It is only possible to edit one thing at a time, suitable for being
|
||||||
|
rendered in a modal.
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Api
|
||||||
|
import Api.Model.BasicResult exposing (BasicResult)
|
||||||
|
import Api.Model.Equipment exposing (Equipment)
|
||||||
|
import Api.Model.Organization exposing (Organization)
|
||||||
|
import Api.Model.Person exposing (Person)
|
||||||
|
import Api.Model.Tag exposing (Tag)
|
||||||
|
import Comp.EquipmentForm
|
||||||
|
import Comp.OrgForm
|
||||||
|
import Comp.PersonForm
|
||||||
|
import Comp.TagForm
|
||||||
|
import Data.Flags exposing (Flags)
|
||||||
|
import Data.Icons as Icons
|
||||||
|
import Data.UiSettings exposing (UiSettings)
|
||||||
|
import Html exposing (..)
|
||||||
|
import Html.Attributes exposing (..)
|
||||||
|
import Html.Events exposing (onClick)
|
||||||
|
import Http
|
||||||
|
import Util.Http
|
||||||
|
|
||||||
|
|
||||||
|
type alias Model =
|
||||||
|
{ form : FormModel
|
||||||
|
, itemId : String
|
||||||
|
, submitting : Bool
|
||||||
|
, result : Maybe BasicResult
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
type FormModel
|
||||||
|
= TM Comp.TagForm.Model
|
||||||
|
| PM Comp.PersonForm.Model
|
||||||
|
| OM Comp.OrgForm.Model
|
||||||
|
| EM Comp.EquipmentForm.Model
|
||||||
|
|
||||||
|
|
||||||
|
fold :
|
||||||
|
(Comp.TagForm.Model -> a)
|
||||||
|
-> (Comp.PersonForm.Model -> a)
|
||||||
|
-> (Comp.OrgForm.Model -> a)
|
||||||
|
-> (Comp.EquipmentForm.Model -> a)
|
||||||
|
-> FormModel
|
||||||
|
-> a
|
||||||
|
fold ft fp fo fe model =
|
||||||
|
case model of
|
||||||
|
TM tm ->
|
||||||
|
ft tm
|
||||||
|
|
||||||
|
PM pm ->
|
||||||
|
fp pm
|
||||||
|
|
||||||
|
OM om ->
|
||||||
|
fo om
|
||||||
|
|
||||||
|
EM em ->
|
||||||
|
fe em
|
||||||
|
|
||||||
|
|
||||||
|
init : String -> FormModel -> Model
|
||||||
|
init itemId fm =
|
||||||
|
{ form = fm
|
||||||
|
, itemId = itemId
|
||||||
|
, submitting = False
|
||||||
|
, result = Nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
initEquip : String -> Comp.EquipmentForm.Model -> Model
|
||||||
|
initEquip itemId em =
|
||||||
|
init itemId (EM em)
|
||||||
|
|
||||||
|
|
||||||
|
initOrg : String -> Comp.OrgForm.Model -> Model
|
||||||
|
initOrg itemId om =
|
||||||
|
init itemId (OM om)
|
||||||
|
|
||||||
|
|
||||||
|
initPerson : String -> Comp.PersonForm.Model -> Model
|
||||||
|
initPerson itemId pm =
|
||||||
|
init itemId (PM pm)
|
||||||
|
|
||||||
|
|
||||||
|
initTag : String -> Comp.TagForm.Model -> Model
|
||||||
|
initTag itemId tm =
|
||||||
|
init itemId (TM tm)
|
||||||
|
|
||||||
|
|
||||||
|
initTagByName : String -> String -> Model
|
||||||
|
initTagByName itemId name =
|
||||||
|
let
|
||||||
|
tm =
|
||||||
|
Comp.TagForm.emptyModel
|
||||||
|
|
||||||
|
tm_ =
|
||||||
|
{ tm | name = name }
|
||||||
|
in
|
||||||
|
initTag itemId tm_
|
||||||
|
|
||||||
|
|
||||||
|
type Msg
|
||||||
|
= TagMsg Comp.TagForm.Msg
|
||||||
|
| PersonMsg Comp.PersonForm.Msg
|
||||||
|
| OrgMsg Comp.OrgForm.Msg
|
||||||
|
| EquipMsg Comp.EquipmentForm.Msg
|
||||||
|
| Submit
|
||||||
|
| Cancel
|
||||||
|
| SubmitResp (Result Http.Error BasicResult)
|
||||||
|
|
||||||
|
|
||||||
|
type Value
|
||||||
|
= SubmitTag Tag
|
||||||
|
| SubmitPerson Person
|
||||||
|
| SubmitOrg Organization
|
||||||
|
| SubmitEquip Equipment
|
||||||
|
| CancelForm
|
||||||
|
|
||||||
|
|
||||||
|
makeValue : FormModel -> Value
|
||||||
|
makeValue fm =
|
||||||
|
case fm of
|
||||||
|
TM tm ->
|
||||||
|
SubmitTag (Comp.TagForm.getTag tm)
|
||||||
|
|
||||||
|
PM pm ->
|
||||||
|
SubmitPerson (Comp.PersonForm.getPerson pm)
|
||||||
|
|
||||||
|
OM om ->
|
||||||
|
SubmitOrg (Comp.OrgForm.getOrg om)
|
||||||
|
|
||||||
|
EM em ->
|
||||||
|
SubmitEquip (Comp.EquipmentForm.getEquipment em)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--- Update
|
||||||
|
|
||||||
|
|
||||||
|
update : Flags -> Msg -> Model -> ( Model, Cmd Msg, Maybe Value )
|
||||||
|
update flags msg model =
|
||||||
|
case msg of
|
||||||
|
Cancel ->
|
||||||
|
( model, Cmd.none, Just CancelForm )
|
||||||
|
|
||||||
|
SubmitResp (Ok res) ->
|
||||||
|
( { model
|
||||||
|
| result = Just res
|
||||||
|
, submitting = False
|
||||||
|
}
|
||||||
|
, Cmd.none
|
||||||
|
, Just (makeValue model.form)
|
||||||
|
)
|
||||||
|
|
||||||
|
SubmitResp (Err err) ->
|
||||||
|
( { model
|
||||||
|
| result = Just (BasicResult False (Util.Http.errorToString err))
|
||||||
|
, submitting = False
|
||||||
|
}
|
||||||
|
, Cmd.none
|
||||||
|
, Nothing
|
||||||
|
)
|
||||||
|
|
||||||
|
Submit ->
|
||||||
|
case model.form of
|
||||||
|
TM tm ->
|
||||||
|
let
|
||||||
|
tag =
|
||||||
|
Comp.TagForm.getTag tm
|
||||||
|
in
|
||||||
|
if Comp.TagForm.isValid tm then
|
||||||
|
( { model | submitting = True }
|
||||||
|
, Api.addTag flags model.itemId tag SubmitResp
|
||||||
|
, Nothing
|
||||||
|
)
|
||||||
|
|
||||||
|
else
|
||||||
|
( model, Cmd.none, Nothing )
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
Debug.todo "implement"
|
||||||
|
|
||||||
|
TagMsg lm ->
|
||||||
|
case model.form of
|
||||||
|
TM tm ->
|
||||||
|
let
|
||||||
|
( tm_, tc_ ) =
|
||||||
|
Comp.TagForm.update flags lm tm
|
||||||
|
in
|
||||||
|
( { model | form = TM tm_ }
|
||||||
|
, Cmd.map TagMsg tc_
|
||||||
|
, Nothing
|
||||||
|
)
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
( model, Cmd.none, Nothing )
|
||||||
|
|
||||||
|
PersonMsg lm ->
|
||||||
|
case model.form of
|
||||||
|
PM pm ->
|
||||||
|
let
|
||||||
|
( pm_, pc_ ) =
|
||||||
|
Comp.PersonForm.update flags lm pm
|
||||||
|
in
|
||||||
|
( { model | form = PM pm_ }
|
||||||
|
, Cmd.map PersonMsg pc_
|
||||||
|
, Nothing
|
||||||
|
)
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
( model, Cmd.none, Nothing )
|
||||||
|
|
||||||
|
OrgMsg lm ->
|
||||||
|
case model.form of
|
||||||
|
OM om ->
|
||||||
|
let
|
||||||
|
( om_, oc_ ) =
|
||||||
|
Comp.OrgForm.update flags lm om
|
||||||
|
in
|
||||||
|
( { model | form = OM om_ }
|
||||||
|
, Cmd.map OrgMsg oc_
|
||||||
|
, Nothing
|
||||||
|
)
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
( model, Cmd.none, Nothing )
|
||||||
|
|
||||||
|
EquipMsg lm ->
|
||||||
|
case model.form of
|
||||||
|
EM em ->
|
||||||
|
let
|
||||||
|
( em_, ec_ ) =
|
||||||
|
Comp.EquipmentForm.update flags lm em
|
||||||
|
in
|
||||||
|
( { model | form = EM em_ }
|
||||||
|
, Cmd.map EquipMsg ec_
|
||||||
|
, Nothing
|
||||||
|
)
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
( model, Cmd.none, Nothing )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--- View
|
||||||
|
|
||||||
|
|
||||||
|
view : UiSettings -> Model -> Html Msg
|
||||||
|
view settings model =
|
||||||
|
div []
|
||||||
|
[ case model.form of
|
||||||
|
TM tm ->
|
||||||
|
Html.map TagMsg (Comp.TagForm.view tm)
|
||||||
|
|
||||||
|
PM pm ->
|
||||||
|
Html.map PersonMsg (Comp.PersonForm.view settings pm)
|
||||||
|
|
||||||
|
OM om ->
|
||||||
|
Html.map OrgMsg (Comp.OrgForm.view settings om)
|
||||||
|
|
||||||
|
EM em ->
|
||||||
|
Html.map EquipMsg (Comp.EquipmentForm.view em)
|
||||||
|
, div [ class "ui divider" ] []
|
||||||
|
, button
|
||||||
|
[ class "ui primary button"
|
||||||
|
, href "#"
|
||||||
|
, onClick Submit
|
||||||
|
, disabled model.submitting
|
||||||
|
]
|
||||||
|
[ if model.submitting then
|
||||||
|
i [ class "ui spinner loading icon" ] []
|
||||||
|
|
||||||
|
else
|
||||||
|
text "Submit"
|
||||||
|
]
|
||||||
|
, button
|
||||||
|
[ class "ui button"
|
||||||
|
, href "#"
|
||||||
|
, onClick Cancel
|
||||||
|
]
|
||||||
|
[ text "Cancel"
|
||||||
|
]
|
||||||
|
, div
|
||||||
|
[ classList
|
||||||
|
[ ( "ui message", True )
|
||||||
|
, ( "error", Maybe.map .success model.result == Just False )
|
||||||
|
, ( "success", Maybe.map .success model.result == Just True )
|
||||||
|
, ( "invisible hidden", model.result == Nothing )
|
||||||
|
]
|
||||||
|
]
|
||||||
|
[ Maybe.map .message model.result
|
||||||
|
|> Maybe.withDefault ""
|
||||||
|
|> text
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
viewModal : UiSettings -> Maybe Model -> Html Msg
|
||||||
|
viewModal settings mm =
|
||||||
|
let
|
||||||
|
hidden =
|
||||||
|
mm == Nothing
|
||||||
|
|
||||||
|
heading =
|
||||||
|
fold (\_ -> "Add Tag")
|
||||||
|
(\_ -> "Add Person")
|
||||||
|
(\_ -> "Add Organization")
|
||||||
|
(\_ -> "Add Equipment")
|
||||||
|
|
||||||
|
headIcon =
|
||||||
|
fold (\_ -> Icons.tagIcon)
|
||||||
|
(\_ -> Icons.personIcon)
|
||||||
|
(\_ -> Icons.organizationIcon)
|
||||||
|
(\_ -> Icons.equipmentIcon)
|
||||||
|
in
|
||||||
|
div
|
||||||
|
[ classList
|
||||||
|
[ ( "ui inverted modals page dimmer", True )
|
||||||
|
, ( "invisibe hidden", hidden )
|
||||||
|
, ( "active", not hidden )
|
||||||
|
]
|
||||||
|
, style "display" "flex !important"
|
||||||
|
]
|
||||||
|
[ div [ class "ui modal active" ]
|
||||||
|
[ div [ class "header" ]
|
||||||
|
[ Maybe.map .form mm
|
||||||
|
|> Maybe.map headIcon
|
||||||
|
|> Maybe.withDefault (i [] [])
|
||||||
|
, Maybe.map .form mm
|
||||||
|
|> Maybe.map heading
|
||||||
|
|> Maybe.withDefault ""
|
||||||
|
|> text
|
||||||
|
]
|
||||||
|
, div [ class "content" ]
|
||||||
|
[ case mm of
|
||||||
|
Just model ->
|
||||||
|
view settings model
|
||||||
|
|
||||||
|
Nothing ->
|
||||||
|
span [] []
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
@ -25,6 +25,7 @@ import Api.Model.TagList exposing (TagList)
|
|||||||
import Browser.Navigation as Nav
|
import Browser.Navigation as Nav
|
||||||
import Comp.AttachmentMeta
|
import Comp.AttachmentMeta
|
||||||
import Comp.DatePicker
|
import Comp.DatePicker
|
||||||
|
import Comp.DetailEdit
|
||||||
import Comp.Dropdown exposing (isDropdownChangeMsg)
|
import Comp.Dropdown exposing (isDropdownChangeMsg)
|
||||||
import Comp.Dropzone
|
import Comp.Dropzone
|
||||||
import Comp.ItemMail
|
import Comp.ItemMail
|
||||||
@ -93,6 +94,7 @@ type alias Model =
|
|||||||
, errored : Set String
|
, errored : Set String
|
||||||
, loading : Set String
|
, loading : Set String
|
||||||
, attachDD : DD.Model String String
|
, attachDD : DD.Model String String
|
||||||
|
, modalEdit : Maybe Comp.DetailEdit.Model
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -179,6 +181,7 @@ emptyModel =
|
|||||||
, errored = Set.empty
|
, errored = Set.empty
|
||||||
, loading = Set.empty
|
, loading = Set.empty
|
||||||
, attachDD = DD.init
|
, attachDD = DD.init
|
||||||
|
, modalEdit = Nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -242,10 +245,13 @@ type Msg
|
|||||||
| AddFilesProgress String Http.Progress
|
| AddFilesProgress String Http.Progress
|
||||||
| AddFilesReset
|
| AddFilesReset
|
||||||
| AttachDDMsg (DD.Msg String String)
|
| AttachDDMsg (DD.Msg String String)
|
||||||
|
| ModalEditMsg Comp.DetailEdit.Msg
|
||||||
|
| StartTagModal
|
||||||
|
| CloseModal
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- update
|
--- Update
|
||||||
|
|
||||||
|
|
||||||
getOptions : Flags -> Cmd Msg
|
getOptions : Flags -> Cmd Msg
|
||||||
@ -511,6 +517,7 @@ update key flags next msg model =
|
|||||||
, itemDate = item.itemDate
|
, itemDate = item.itemDate
|
||||||
, dueDate = item.dueDate
|
, dueDate = item.dueDate
|
||||||
, visibleAttach = 0
|
, visibleAttach = 0
|
||||||
|
, modalEdit = Nothing
|
||||||
}
|
}
|
||||||
, Cmd.batch
|
, Cmd.batch
|
||||||
[ c1
|
[ c1
|
||||||
@ -1202,9 +1209,43 @@ update key flags next msg model =
|
|||||||
in
|
in
|
||||||
noSub ( { model | attachDD = model_ }, cmd )
|
noSub ( { model | attachDD = model_ }, cmd )
|
||||||
|
|
||||||
|
ModalEditMsg lm ->
|
||||||
|
case model.modalEdit of
|
||||||
|
Just mm ->
|
||||||
|
let
|
||||||
|
( mm_, mc_, mv ) =
|
||||||
|
Comp.DetailEdit.update flags lm mm
|
||||||
|
|
||||||
|
( model_, cmd_ ) =
|
||||||
|
case mv of
|
||||||
|
Just Comp.DetailEdit.CancelForm ->
|
||||||
|
( { model | modalEdit = Nothing }, Cmd.none )
|
||||||
|
|
||||||
|
Just _ ->
|
||||||
|
( model, Api.itemDetail flags model.item.id GetItemResp )
|
||||||
|
|
||||||
|
Nothing ->
|
||||||
|
( { model | modalEdit = Just mm_ }, Cmd.none )
|
||||||
|
in
|
||||||
|
noSub ( model_, Cmd.batch [ cmd_, Cmd.map ModalEditMsg mc_ ] )
|
||||||
|
|
||||||
|
Nothing ->
|
||||||
|
noSub ( model, Cmd.none )
|
||||||
|
|
||||||
|
StartTagModal ->
|
||||||
|
noSub
|
||||||
|
( { model
|
||||||
|
| modalEdit = Just (Comp.DetailEdit.initTagByName model.item.id "")
|
||||||
|
}
|
||||||
|
, Cmd.none
|
||||||
|
)
|
||||||
|
|
||||||
|
CloseModal ->
|
||||||
|
noSub ( { model | modalEdit = Nothing }, Cmd.none )
|
||||||
|
|
||||||
|
|
||||||
-- view
|
|
||||||
|
--- View
|
||||||
|
|
||||||
|
|
||||||
actionInputDatePicker : DatePicker.Settings
|
actionInputDatePicker : DatePicker.Settings
|
||||||
@ -1219,7 +1260,8 @@ actionInputDatePicker =
|
|||||||
view : { prev : Maybe String, next : Maybe String } -> UiSettings -> Model -> Html Msg
|
view : { prev : Maybe String, next : Maybe String } -> UiSettings -> Model -> Html Msg
|
||||||
view inav settings model =
|
view inav settings model =
|
||||||
div []
|
div []
|
||||||
[ renderItemInfo settings model
|
[ Html.map ModalEditMsg (Comp.DetailEdit.viewModal settings model.modalEdit)
|
||||||
|
, renderItemInfo settings model
|
||||||
, div
|
, div
|
||||||
[ classList
|
[ classList
|
||||||
[ ( "ui ablue-comp menu", True )
|
[ ( "ui ablue-comp menu", True )
|
||||||
@ -1822,6 +1864,15 @@ renderEditForm settings model =
|
|||||||
[ label []
|
[ label []
|
||||||
[ Icons.tagsIcon
|
[ Icons.tagsIcon
|
||||||
, text "Tags"
|
, text "Tags"
|
||||||
|
, span [ class "right-float" ]
|
||||||
|
[ a
|
||||||
|
[ class "icon link"
|
||||||
|
, href "#"
|
||||||
|
, onClick StartTagModal
|
||||||
|
]
|
||||||
|
[ i [ class "add link icon" ] []
|
||||||
|
]
|
||||||
|
]
|
||||||
]
|
]
|
||||||
, Html.map TagDropdownMsg (Comp.Dropdown.view settings model.tagModel)
|
, Html.map TagDropdownMsg (Comp.Dropdown.view settings model.tagModel)
|
||||||
]
|
]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user