Search code examples
widgetarcgis-js-apilayer-listesri-maps

Remove checkbox from LayerList widget (ArcGIS JavaScript)


Is it possible to change the design of the LayerList widget in this ESRI tutorial ?

I would like the LayerList with no checkboxes and to select one layer at a time just by clicking it’s name. I know you can hide the checkboxes with display: none but how do you select the layers?

Michelle.

enter image description here


Solution

  • Well, Here is the working solution for this-

    Use selection color to select/Unselect the layerList Items:-

    enter image description here

    JSFiddle:- https://jsfiddle.net/vikash2402/5dcLh450/3/

    Below is the working code for this-

    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
    <title>Layer List Dijit</title>
    <link rel="stylesheet" href="https://js.arcgis.com/3.20/dijit/themes/claro/claro.css">
    <link rel="stylesheet" href="https://js.arcgis.com/3.20/esri/css/esri.css">
    
    <style>
    html, body, .container, #map {
        height:100%;
        width:100%;
        margin:0;
        padding:0;
        margin:0;
        font-family: "Open Sans";
    }
    #map {
        padding:0;
    }
    #layerListPane{
        width:25%;
    }
    .esriLayer{
      background-color: #fff;
    }
    .esriLayerList .esriList{
        border-top:none;
    }
    .esriLayerList .esriTitle {
      background-color: #fff;
      border-bottom:none;
    }
    .esriLayerList .esriList ul{
     
    }
    
    /* ****** Here you can change the selection color ******* */
    
    .esriListVisible label{
       background-color: aqua !important;
    }
    .esriCheckbox{
      display: none !important;
    }
    </style>
    <script>var dojoConfig = { parseOnLoad: true };</script>
    <script src="https://js.arcgis.com/3.20/"></script>
    <script>
    require([
        "esri/arcgis/utils",
        "esri/dijit/LayerList",
        "dijit/layout/BorderContainer",
        "dijit/layout/ContentPane",
        "dojo/domReady!"
    ], function(
        arcgisUtils,
        LayerList
    ) {
        //Create a map based on an ArcGIS Online web map id
        arcgisUtils.createMap("f63fed3f87fc488489e27c026fa5d434", "map").then(function(response){
            var myWidget = new LayerList({
               map: response.map,
               layers: arcgisUtils.getLayerList(response)
            },"layerList");
            myWidget.startup();
        });
    
    });
    </script>
    </head>
    <body class="claro">
    <div class="container" data-dojo-type="dijit/layout/BorderContainer"
    data-dojo-props="design:'headline',gutters:false">
    <div id="layerListPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'right'">
        <div id="layerList"></div>
    </div>
    <div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"></div>
    </div>
    </body>
    </html>

    Hoping this will help you :)