summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/grids/components/GridDisplaySettings.js
blob: af525cc8c74d8de5b38f8cf7ab1911b3912ad5db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

"use strict";

const {
  PureComponent,
} = require("resource://devtools/client/shared/vendor/react.js");
const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js");
const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.js");
const {
  getStr,
} = require("resource://devtools/client/inspector/layout/utils/l10n.js");

const Types = require("resource://devtools/client/inspector/grids/types.js");

class GridDisplaySettings extends PureComponent {
  static get propTypes() {
    return {
      highlighterSettings: PropTypes.shape(Types.highlighterSettings)
        .isRequired,
      onToggleShowGridAreas: PropTypes.func.isRequired,
      onToggleShowGridLineNumbers: PropTypes.func.isRequired,
      onToggleShowInfiniteLines: PropTypes.func.isRequired,
    };
  }

  constructor(props) {
    super(props);

    this.onShowGridAreasCheckboxClick =
      this.onShowGridAreasCheckboxClick.bind(this);
    this.onShowGridLineNumbersCheckboxClick =
      this.onShowGridLineNumbersCheckboxClick.bind(this);
    this.onShowInfiniteLinesCheckboxClick =
      this.onShowInfiniteLinesCheckboxClick.bind(this);
  }

  onShowGridAreasCheckboxClick() {
    const { highlighterSettings, onToggleShowGridAreas } = this.props;

    onToggleShowGridAreas(!highlighterSettings.showGridAreasOverlay);
  }

  onShowGridLineNumbersCheckboxClick() {
    const { highlighterSettings, onToggleShowGridLineNumbers } = this.props;

    onToggleShowGridLineNumbers(!highlighterSettings.showGridLineNumbers);
  }

  onShowInfiniteLinesCheckboxClick() {
    const { highlighterSettings, onToggleShowInfiniteLines } = this.props;

    onToggleShowInfiniteLines(!highlighterSettings.showInfiniteLines);
  }

  render() {
    const { highlighterSettings } = this.props;

    return dom.div(
      { className: "grid-container" },
      dom.span(
        {
          role: "heading",
          "aria-level": "3",
        },
        getStr("layout.gridDisplaySettings")
      ),
      dom.ul(
        {},
        dom.li(
          { className: "grid-settings-item" },
          dom.label(
            {},
            dom.input({
              id: "grid-setting-show-grid-line-numbers",
              type: "checkbox",
              checked: highlighterSettings.showGridLineNumbers,
              onChange: this.onShowGridLineNumbersCheckboxClick,
            }),
            getStr("layout.displayLineNumbers")
          )
        ),
        dom.li(
          { className: "grid-settings-item" },
          dom.label(
            {},
            dom.input({
              id: "grid-setting-show-grid-areas",
              type: "checkbox",
              checked: highlighterSettings.showGridAreasOverlay,
              onChange: this.onShowGridAreasCheckboxClick,
            }),
            getStr("layout.displayAreaNames")
          )
        ),
        dom.li(
          { className: "grid-settings-item" },
          dom.label(
            {},
            dom.input({
              id: "grid-setting-extend-grid-lines",
              type: "checkbox",
              checked: highlighterSettings.showInfiniteLines,
              onChange: this.onShowInfiniteLinesCheckboxClick,
            }),
            getStr("layout.extendLinesInfinitely")
          )
        )
      )
    );
  }
}

module.exports = GridDisplaySettings;