/* 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/. */ // InactivePropertyHelper `width`, `min-width`, `max-width`, `height`, `min-height`, // `max-height` test cases. export default [ { info: "width is inactive on a non-replaced inline element", property: "width", tagName: "span", rules: ["span { width: 500px; }"], isActive: false, }, { info: "min-width is inactive on a non-replaced inline element", property: "min-width", tagName: "span", rules: ["span { min-width: 500px; }"], isActive: false, }, { info: "max-width is inactive on a non-replaced inline element", property: "max-width", tagName: "span", rules: ["span { max-width: 500px; }"], isActive: false, }, { info: "width is inactive on an tr element", property: "width", tagName: "tr", rules: ["tr { width: 500px; }"], isActive: false, }, { info: "min-width is inactive on an tr element", property: "min-width", tagName: "tr", rules: ["tr { min-width: 500px; }"], isActive: false, }, { info: "max-width is inactive on an tr element", property: "max-width", tagName: "tr", rules: ["tr { max-width: 500px; }"], isActive: false, }, { info: "width is inactive on an thead element", property: "width", tagName: "thead", rules: ["thead { width: 500px; }"], isActive: false, }, { info: "min-width is inactive on an thead element", property: "min-width", tagName: "thead", rules: ["thead { min-width: 500px; }"], isActive: false, }, { info: "max-width is inactive on an thead element", property: "max-width", tagName: "thead", rules: ["thead { max-width: 500px; }"], isActive: false, }, { info: "width is inactive on an tfoot element", property: "width", tagName: "tfoot", rules: ["tfoot { width: 500px; }"], isActive: false, }, { info: "min-width is inactive on an tfoot element", property: "min-width", tagName: "tfoot", rules: ["tfoot { min-width: 500px; }"], isActive: false, }, { info: "max-width is inactive on an tfoot element", property: "max-width", tagName: "tfoot", rules: ["tfoot { max-width: 500px; }"], isActive: false, }, { info: "width is active on a replaced inline element", property: "width", tagName: "img", rules: ["img { width: 500px; }"], isActive: true, }, { info: "width is active on an inline input element", property: "width", tagName: "input", rules: ["input { display: inline; width: 500px; }"], isActive: true, }, { info: "width is active on an inline select element", property: "width", tagName: "select", rules: ["select { display: inline; width: 500px; }"], isActive: true, }, { info: "width is active on a textarea element", property: "width", tagName: "textarea", rules: ["textarea { width: 500px; }"], isActive: true, }, { info: "min-width is active on a replaced inline element", property: "min-width", tagName: "img", rules: ["img { min-width: 500px; }"], isActive: true, }, { info: "max-width is active on a replaced inline element", property: "max-width", tagName: "img", rules: ["img { max-width: 500px; }"], isActive: true, }, { info: "width is active on a block element", property: "width", tagName: "div", rules: ["div { width: 500px; }"], isActive: true, }, { info: "min-width is active on a block element", property: "min-width", tagName: "div", rules: ["div { min-width: 500px; }"], isActive: true, }, { info: "max-width is active on a block element", property: "max-width", tagName: "div", rules: ["div { max-width: 500px; }"], isActive: true, }, { info: "height is inactive on a non-replaced inline element", property: "height", tagName: "span", rules: ["span { height: 500px; }"], isActive: false, }, { info: "min-height is inactive on a non-replaced inline element", property: "min-height", tagName: "span", rules: ["span { min-height: 500px; }"], isActive: false, }, { info: "max-height is inactive on a non-replaced inline element", property: "max-height", tagName: "span", rules: ["span { max-height: 500px; }"], isActive: false, }, { info: "height is inactive on colgroup element", property: "height", tagName: "colgroup", rules: ["colgroup { height: 500px; }"], isActive: false, }, { info: "min-height is inactive on colgroup element", property: "min-height", tagName: "colgroup", rules: ["colgroup { min-height: 500px; }"], isActive: false, }, { info: "max-height is inactive on colgroup element", property: "max-height", tagName: "colgroup", rules: ["colgroup { max-height: 500px; }"], isActive: false, }, { info: "height is inactive on col element", property: "height", tagName: "col", rules: ["col { height: 500px; }"], isActive: false, }, { info: "min-height is inactive on col element", property: "min-height", tagName: "col", rules: ["col { min-height: 500px; }"], isActive: false, }, { info: "max-height is inactive on col element", property: "max-height", tagName: "col", rules: ["col { max-height: 500px; }"], isActive: false, }, { info: "height is active on a replaced inline element", property: "height", tagName: "img", rules: ["img { height: 500px; }"], isActive: true, }, { info: "height is active on an inline input element", property: "height", tagName: "input", rules: ["input { display: inline; height: 500px; }"], isActive: true, }, { info: "height is active on an inline select element", property: "height", tagName: "select", rules: ["select { display: inline; height: 500px; }"], isActive: true, }, { info: "height is active on a textarea element", property: "height", tagName: "textarea", rules: ["textarea { height: 500px; }"], isActive: true, }, { info: "min-height is active on a replaced inline element", property: "min-height", tagName: "img", rules: ["img { min-height: 500px; }"], isActive: true, }, { info: "max-height is active on a replaced inline element", property: "max-height", tagName: "img", rules: ["img { max-height: 500px; }"], isActive: true, }, { info: "height is active on a block element", property: "height", tagName: "div", rules: ["div { height: 500px; }"], isActive: true, }, { info: "min-height is active on a block element", property: "min-height", tagName: "div", rules: ["div { min-height: 500px; }"], isActive: true, }, { info: "max-height is active on a block element", property: "max-height", tagName: "div", rules: ["div { max-height: 500px; }"], isActive: true, }, { info: "height is active on an svg element.", property: "height", createTestElement: main => { main.innerHTML = ` `; return main.querySelector("rect"); }, rules: ["rect { height: 100px; }"], isActive: true, }, createTableElementTestCase("width", false, "table-row"), createTableElementTestCase("width", false, "table-row-group"), createTableElementTestCase("width", true, "table-column"), createTableElementTestCase("width", true, "table-column-group"), createTableElementTestCase("height", false, "table-column"), createTableElementTestCase("height", false, "table-column-group"), createTableElementTestCase("height", true, "table-row"), createTableElementTestCase("height", true, "table-row-group"), createVerticalTableElementTestCase("width", true, "table-row"), createVerticalTableElementTestCase("width", true, "table-row-group"), createVerticalTableElementTestCase("width", false, "table-column"), createVerticalTableElementTestCase("width", false, "table-column-group"), createVerticalTableElementTestCase("height", true, "table-column"), createVerticalTableElementTestCase("height", true, "table-column-group"), createVerticalTableElementTestCase("height", false, "table-row"), createVerticalTableElementTestCase("height", false, "table-row-group"), { info: "width's inactivity status for a row takes the table's writing mode into account", property: "width", createTestElement: rootNode => { const table = document.createElement("table"); table.style.writingMode = "vertical-lr"; rootNode.appendChild(table); const tbody = document.createElement("tbody"); table.appendChild(tbody); const tr = document.createElement("tr"); tbody.appendChild(tr); const td = document.createElement("td"); tr.appendChild(td); return tr; }, rules: ["tr { writing-mode: horizontal-tb; width: 360px; }"], isActive: true, }, ]; function createTableElementTestCase(property, isActive, displayType) { return { info: `${property} is ${ isActive ? "active" : "inactive" } on a ${displayType}`, property, tagName: "div", rules: [`div { display: ${displayType}; ${property}: 100px; }`], isActive, }; } function createVerticalTableElementTestCase(property, isActive, displayType) { return { info: `${property} is ${ isActive ? "active" : "inactive" } on a vertical ${displayType}`, property, createTestElement: rootNode => { const container = document.createElement("div"); container.style.writingMode = "vertical-lr"; rootNode.append(container); const element = document.createElement("span"); container.append(element); return element; }, rules: [`span { display: ${displayType}; ${property}: 100px; }`], isActive, }; }