画面がないLWCボタン

### 要件
・Lightning画面でLWCのコンポーネントボタンを配置する
・親オブジェクトの関連子オブジェクトを作成する（デフォルト値を設定）
・画面がない動作で、親が特定のタイプの子れコートを作成する画面へ、そうではない場合、エラーメッセージを表示
#### 参照資料
・Lwcサンプル　https://github.com/trailheadapps/lwc-recipes#readme
・ボタン作成 https://www.greytrix.com/blogs/salesforce/2022/02/24/how-to-create-quick-action-button-using-lightning-web-component/
・ToastMessage　https://www.sfdcpoint.com/salesforce/lightning-web-component-lwc-toast-messages/
・Headlessボタン
　https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lwc.use_quick_actions_headless
### ポイント
①Lwcの宣言に<font color="Red">Lightning__RecordAction</font>用に追記してから、RecordPageのアクションとして選べられる
※Headlessアクションの場合、TargetConfigは下記<font color=red>(ScreenAction -> Action)</font>
(navToNewRecordWithoutScreen.js-meta.xml)
```
<?xml version="1.0" encoding="UTF-8" ?>
<LightningComponentBundle
    xmlns="http://soap.sforce.com/2006/04/metadata"
    fqn="navToNewRecordWithoutScreen">
    <apiVersion>55.0</apiVersion>
    <isExposed>true</isExposed>
    <targets>
        <target>lightning__AppPage</target>
        <target>lightning__RecordAction</target>
        <target>lightning__RecordPage</target>
        <target>lightning__HomePage</target>
    </targets>
    <targetConfigs>
       <targetConfig targets="lightning__RecordAction">
         <actionType>Action</actionType>
       </targetConfig>
    </targetConfigs>
</LightningComponentBundle>
```
②Invoke方法
```
import { LightningElement, api, wire } from "lwc";
import { ShowToastEvent } from 'lightning/platformShowToastEvent'
import { NavigationMixin } from 'lightning/navigation';
import { encodeDefaultFieldValues } from 'lightning/pageReferenceUtils';
import { getRecord } from 'lightning/uiRecordApi';

const fields = [
    'Account.Name',
    'Account.Type'
];

export default class NavToNewRecordWithoutScreen extends NavigationMixin(
    LightningElement
) {
    isExecuting = false;
    //bind recordId
    _recordId;
    @api set recordId(value) {
        this._recordId = value;
    }

    get recordId() {
        return this._recordId;
    }

    @wire(getRecord, { recordId: '$recordId', fields })
    account;

    get type() {
        // !!! it neccessory to judge data wheather it is null
        if (!this.account.data){ return false; }
        return this.account.data.fields.Type.value;
    }

    @api invoke() {
        if(this.type == 'Technology Partner'){
            let event = new ShowToastEvent({
                title: 'Type Error!',
                message: 'Hi there! Starting...' + this.type,
                variant: 'error',
                mode: 'dismissable'
            });
            this.dispatchEvent(event);
        }else{
            const defaultValues = encodeDefaultFieldValues({
                FirstName: 'Morag',
                LastName: this.type,
                LeadSource: 'Other',
                AccountId: this._recordId
            });
    
        
            this[NavigationMixin.Navigate]({
                type: 'standard__objectPage',
                attributes: {
                    objectApiName: 'Contact',
                    actionName: 'new'
                },
                state: {
                    defaultFieldValues: defaultValues,
                    // !!! When finish, return to ralated list
                    navigationLocation: 'RELATED_LIST'
                }
            });
        

        }


        console.log("Hi, I'm an action12.");


    }

}
```

Html
```
<template></template>
```

### 追記
LDSのレコードから、値を取得するは、LWCの自身のgetFieldValueを使うことを進める
例：
```
import { getRecord,getFieldValue,createRecord } from 'lightning/uiRecordApi';
```
example
```
get type() {
        return getFieldValue(this.account.data, 'Account.Type');
    } 
````