Angular13とPrimeNG13でDropdownのoverlay panelをitemの幅に沿って広げる

2022年2月6日(日)

環境

0. 環境構築

0-1. Node.jsをv16.13.1からv16.13.2にアップデートする

インストール済みのバージョンを確認する。

cd /home/mizuki/workspace/angular13

nvm ls

-> v16.13.1 # ここに現在のバージョンが表示されている。
default -> 16 (-> v16.13.1)
node -> stable (-> v16.13.1) (default)
stable -> 16.13 (-> v16.13.1) (default)
lst/gallium -> v16.13.2 (-> N/A) # ここに新しいバージョンが表示されている。
        

新しいバージョンをインストールする。

nvm install 16.13.2

Now using node v16.13.2 (npm v8.1.2)
        

インストール済みのバージョンを確認する。

nvm ls

   v16.13.1
-> v16.13.2
default -> 16 (-> v16.13.2)
node -> stable (-> v16.13.2) (default)
stable -> 16.13 (-> v16.13.2) (default)
lst/gallium -> v16.13.2
        

nodeコマンドでバージョンを確認する。

node -v

v16.13.2
        

0-2. ワークスペースのAngular CLIをv13.1.2からv13.2.2にアップデートする

インストール済みのバージョンを確認する。

cd /home/mizuki/workspace/angular13

npx ng version

Angular CLI: 13.1.2
        

インストール可能なバージョンを確認する。

npm info @angular/cli versions

[
  '13.2.2',
  '14.0.0-next.0'
]
        

インストール可能な個別のパッケージを確認する。

# コマンドに引数がない場合はリストを表示するだけになっている。
npx ng update

Name          Version                 Command to update
------------------------------------------------------------
@angular/cli  13.1.2 -> 13.2.2        ng update @angular/cli
        

新しいバージョンをインストールする。

npx ng update @angular/cli
        

インストール済みのバージョンを確認する。

npx ng version

Angular CLI: 13.2.2
        

0-3. Google Chromeを最新版にアップデートする

ウィンドウ右上のGoogle Chromeの設定 > ヘルプ > Google Chromeについて

バージョン 98.0.4758.80 (Official Build) (64ビット)
          

0-X. 参考になるサイト

1. 準備

1-1. GitHubのリポジトリをHTTPSで操作するためのトークンを作成する

github.com/yvafdevnsk
  Settings
    Developer settings
      Personal access tokens
        Generate new token
          Note: EGit
          Expiration: 30 days (default)
          Select scopes: [x] repo (Full control of private repositories)
          

1-2. トークンをEclipseに設定する

Eclipse
  Window > Perspective > Open Perspective > Other... > Git
    Git Repositoriesビュー
      github [main] - /home/mizuki/workspace/angular13/github/.git
        Remotes
          origin
            https://github.com/yvafdevnsk/angular13
              右クリック > Change Credentials...
          

2. Angular13とPrimeNG13でDropdownのoverlay panelをitemの幅に沿って広げる

2-0. GitHubのプロジェクト

https://github.com/yvafdevnsk/angular13/tree/main/angular13-primeng13-dropdown-overlaypanel-width

2-1. プロジェクトを作成する

コマンド

cd /home/mizuki/workspace/angular13/github

npx ng new angular13-primeng13-dropdown-overlaypanel-width
? Would you like to add Angular routing? Yes
? Which stylesheet format would you like to use? SCSS [ https://sass-lang.com/documentation/syntax#scss ]
        

2-2. プロジェクトにPrimeNG13をインストールする

インストール可能なバージョンを確認する。

cd /home/mizuki/workspace/angular13/github/angular13-primeng13-dropdown-overlaypanel-width

npm info primeng versions
[
  '13.1.0'
]

npm info primeicons versions
[
  '5.0.0'
]
        

バージョンを指定してインストールする。

cd /home/mizuki/workspace/angular13/github/angular13-primeng13-dropdown-overlaypanel-width

npm install primeng@13.1.0
npm install primeicons@5.0.0
        

プロジェクトにPrimeNGのスタイルシートを指定する。

angular.json

{
  "projects": {
    "angular13-primeng13-dropdown-overlaypanel-width": {
      "architect": {
        "build": {
          "options": {
            "styles": [
              "src/styles.scss",
              "node_modules/primeng/resources/themes/saga-blue/theme.css",
              "node_modules/primeng/resources/primeng.min.css",
              "node_modules/primeicons/primeicons.css"
            ],
          }
        }
      }
    }
  }
}
        

2-3. プロジェクトにPrimeNGで必要なライブラリをインストールする

cd /home/mizuki/workspace/angular13/github/angular13-primeng13-dropdown-overlaypanel-width

npm install @angular/cdk
        

2-4. Dropdownの項目にDropdown本体の横幅を超える長さの文字列を設定して表示する

src/app/app.modules.ts

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { DropdownModule } from 'primeng/dropdown';

@NgModule({
  imports: [
    BrowserAnimationsModule,
    DropdownModule
  ]
})
        

src/app/app.component.html

<p-dropdown [options]="items" [style]="{'width':'200px'}"></p-dropdown>
        

src/app/app.component.ts

export class AppComponent {
  items: any[];

  constructor() {
    this.items = [
      {label:"あいうえお", value:"1"},
      {label:"あいうえおかきくけこ", value:"2"},
      {label:"あいうえおかきくけこさしすせそ", value:"3"},
      {label:"あいうえおかきくけこさしすせそたちつてと", value:"4"},
    ];
  }
}
        

ブラウザで表示する。

cd /home/mizuki/workspace/angular13/github/angular13-primeng13-dropdown-overlaypanel-width

npx ng serve --open
        

PrimeNGのバージョン13ではDropdownのoverlay panelはitemの幅に沿って広がるので何もしなくてよい。

PrimeNG13 Dropdown overlay panel

2-X. 参考になるサイト