hunk.code_window:                 <field name="date" optional="show"/>
                   <field name="progress_percentage" string="Progress" widget="percentage" optional="show"/>
                   <field name="color" invisible="1"/>
                   <field name="status" widget="status_with_color" options="{'color_field': 'color'}"/>
               </tree>
           </field>
       </record>
  
hunk.labels: keep keep keep replace keep keep keep keep
hunk.after_edit:                 <field name="status" widget="status_with_color"/>
  
hunk.file_path: addons/project/views/project_update_views.xml
hunk.type: replace
file: /** @odoo-module **/
  
  import { registry } from "@web/core/registry";
  import { _lt } from "@web/core/l10n/translation";
  import { useInputField } from "../input_field_hook";
  import { standardFieldProps } from "../standard_field_props";
  
  import { Component } from "@odoo/owl";
  
  export class PhoneField extends Component {
      setup() {
          useInputField({ getValue: () => this.props.value || "" });
      }
  }
  
  PhoneField.template = "web.PhoneField";
  PhoneField.props = {
      ...standardFieldProps,
      placeholder: { type: String, optional: true },
  };
  
  PhoneField.displayName = _lt("Phone");
  PhoneField.supportedTypes = ["char"];
  
  PhoneField.extractProps = ({ attrs }) => {
      return {
          placeholder: attrs.placeholder,
      };
  };
  
  class FormPhoneField extends PhoneField {}
  FormPhoneField.template = "web.FormPhoneField";
  
  registry.category("fields").add("phone", PhoneField);
  registry.category("fields").add("form.phone", FormPhoneField);
  