{
    "description": {
        "author": "Salesforce",
        "text": [
            "Page Object: lightningTypePropertyRow",
            "Selector: typesystem_ui-lightning-type-property-row",
            "Individual property row with field name, description, data type, required checkbox, and delete button"
        ]
    },
    "root": true,
    "selector": {
        "css": "typesystem_ui-lightning-type-property-row"
    },
    "shadow": {
        "elements": [
            {
                "public": true,
                "name": "fieldNameInput",
                "type": "utam-lightning/pageObjects/input",
                "selector": {
                    "css": "lightning-input[data-id='field-name']"
                }
            },
            {
                "public": true,
                "name": "descriptionInput",
                "type": "utam-lightning/pageObjects/input",
                "selector": {
                    "css": "lightning-input[data-id='description']"
                }
            },
            {
                "public": true,
                "name": "dataTypeCombobox",
                "type": "utam-lightning/pageObjects/combobox",
                "selector": {
                    "css": "lightning-combobox[data-id='field-type']"
                }
            },
            {
                "public": true,
                "name": "requiredCheckbox",
                "type": "utam-lightning/pageObjects/input",
                "selector": {
                    "css": "lightning-input[data-id='required']"
                }
            },
            {
                "public": true,
                "name": "deleteButton",
                "type": "utam-lightning/pageObjects/buttonIcon",
                "nullable": true,
                "selector": {
                    "css": "lightning-button-icon[data-id='is-deletable']"
                }
            }
        ]
    },
    "methods": [
        {
            "name": "waitForRowVisible",
            "description": "Waits for the property row to be visible",
            "compose": [
                {
                    "element": "fieldNameInput",
                    "apply": "waitForVisible"
                }
            ]
        },
        {
            "name": "waitForDataTypeComboboxVisible",
            "description": "Waits for the data type combobox to be visible",
            "compose": [
                {
                    "element": "dataTypeCombobox",
                    "apply": "waitForVisible"
                }
            ]
        },
        {
            "name": "setFieldName",
            "description": "Sets the field name",
            "args": [
                {
                    "name": "value",
                    "type": "string"
                }
            ],
            "compose": [
                {
                    "element": "fieldNameInput",
                    "apply": "setText",
                    "args": [
                        {
                            "name": "value",
                            "type": "string"
                        }
                    ]
                }
            ]
        },
        {
            "name": "getFieldName",
            "description": {
                "text": [
                    "Gets the field name value"
                ],
                "return": "string"
            },
            "compose": [
                {
                    "element": "fieldNameInput",
                    "apply": "getValueText",
                    "returnType": "string"
                }
            ]
        },
        {
            "name": "setDescription",
            "description": "Sets the description",
            "args": [
                {
                    "name": "value",
                    "type": "string"
                }
            ],
            "compose": [
                {
                    "element": "descriptionInput",
                    "apply": "setText",
                    "args": [
                        {
                            "name": "value",
                            "type": "string"
                        }
                    ]
                }
            ]
        },
        {
            "name": "getDescription",
            "description": {
                "text": [
                    "Gets the description value"
                ],
                "return": "string"
            },
            "compose": [
                {
                    "element": "descriptionInput",
                    "apply": "getValueText",
                    "returnType": "string"
                }
            ]
        },
        {
            "name": "setRequired",
            "description": "Sets the required checkbox state",
            "args": [
                {
                    "name": "checked",
                    "type": "boolean"
                }
            ],
            "compose": [
                {
                    "element": "requiredCheckbox",
                    "apply": "check",
                    "args": [
                        {
                            "name": "checked",
                            "type": "boolean"
                        }
                    ]
                }
            ]
        },
        {
            "name": "isRequired",
            "description": {
                "text": [
                    "Checks if the required checkbox is checked"
                ],
                "return": "boolean"
            },
            "compose": [
                {
                    "element": "requiredCheckbox",
                    "apply": "getCheckedState",
                    "matcher": {
                        "type": "notNull"
                    }
                }
            ]
        },
        {
            "name": "clickDelete",
            "description": "Clicks the delete button",
            "compose": [
                {
                    "element": "deleteButton",
                    "apply": "clickButton"
                }
            ]
        },
        {
            "name": "isDeleteButtonVisible",
            "description": {
                "text": [
                    "Checks if delete button is visible"
                ],
                "return": "boolean"
            },
            "compose": [
                {
                    "element": "deleteButton",
                    "matcher": {
                        "type": "notNull"
                    }
                }
            ]
        }
    ]
}