表示し切れない文字列の末尾を...にする

どうもこんばんは、みかんです。

**！！！！とつぜんですがたいせつなおしらせ！！！！**

2020年1月27日
App Maker の提供終了に向けた対応のご案内
https://support.google.com/a/answer/9682494?p=am_announcement&visit_id=637157414793613981-426262357&rd=1


??!???!?!?!???!?

残念ながら2021年1月19日には終了してしまうそうです(涙)
移行先はAppSheetかApp EngineかGoogleフォームだそうです・・・

消すのは忍びないので記事は残して置きますが、何かの間違いじゃ無い限り役に立つことはないでしょう・・・


**！！！！おしらせはおわりです！！！！！**

今回は「表示し切れない文字列の末尾を...にする方法」を書いてみます。
下記ステップでやっていきます。

* 1 下準備
* 2 長い文字列を入力してみる
* 3 カラムの長さを固定にする
* 4 表示し切れない文字列の末尾を...にする

# 1 下準備

まずは試すためのアプリを用意します。

## Starter Appを作成

|![ap01-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/c6c74b96-6b02-1a31-67f1-f7e353f08430.gif)|
|:-:|

作成したあと、アプリ名変更、要らないラベルの削除、コンテンツパネルのレイアウトを横方向に変えています。

## モデルを作成

|![ap03-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/145c65d2-2112-44a8-71a6-d888f9cbe921.gif)|
|:-:|

適当なモデルを用意します。

|![ap04-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/1004b648-db31-c04f-24a5-001a79f3a3ee.gif)|
|:-:|

フィールドを追加します。正直Nameだけで良いんですが、ほかの項目がある時の動きのほうがわかりやすそうだったので色々追加しています。

## テーブルとフォームを配置

|![ap05-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/0ecbbca7-2e6a-f964-3eb1-54e61c0121f0.gif)|
|:-:|

そのままだと狭苦しいので、コンテンツパネルの大きさを親に合わせる形にしています。

|![ap06-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/5cf7fa28-27f6-df62-cbe7-565358d781e2.gif)|
|:-:|

テーブルとフォームをビシバシ置いていきます。

# 2 長い文字列を入力してみる

Previewして、長い文字列を打ち込んでみましょう。なんでもいいのですが、今回はWikipedia 「長いお別れ」 からコピってきました。
違いをわかりやすくするために、1件目は短めのNameで入れています。

|![check07-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/506703b0-24b2-5f0e-a5f8-43013e006504.gif)|
|:-:|

急に横長に。なんかすごくつらい感じになりましたね。

# 3 カラムの長さを固定にする

コンテンツの長さに合わせて横幅が変わる一覧は結構珍しいんじゃないかと思います。
慣れの問題、、、でも無いと思うので、列の長さは固定にしましょう。

下記のような感じで設定します。

|![check08-compressor.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/140ac554-cb25-4260-98c3-f20cfa3f157d.gif)|
|:-:|

ヘッダーと、対応する行のラベルの横長を200で固定しています。

これでプレビューすると、、

|![ap100.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/a6339dfa-cd96-6976-29a6-3f3d3b9108e1.png)|
|:-:|

今度は縦に伸びていきました。
これはこれでいいかもですが、行の高さも同じほうがいいという場合は困ってしまいますよね。

# 4 表示し切れない文字列の末尾を...にする

というわけで、表題の設定を施してみます。設定すると行も1行になります。

App Makerの公式ガイドを見ると、「はみ出るテキストに省略記号を使用する」にCSSの例が載っています。
[CSSリファレンス](https://developers.google.com/appmaker/ui/css?hl=ja)

```css
overflow: hidden;
text-overflow: ellipsis;
```

下記のように設定します。

|![ap101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/7e58316c-2a17-66ca-e5eb-c193fa5d288c.png)|
|:-:|

しかし、今現在これを設定しても何も変化がありません。
何故なのかを確認するために、Previewに対してChromeの「検証」機能で、CSSの値を確認してみます。

|![ap07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/2ca46e0b-ff34-002e-8106-8e9f5cbf0927.png)|
|:-:|

|![ap08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/5948bab4-e337-f61d-c0db-9e727bddf0d4.png)|
|:-:|

見ると、正しく設定されているようですが、その下に見えている設定が気になります。

```css
.app-ListTableHeader, ....
.app-Label 
```
この2つはApp Makerが仕込んでいるスタイルです。
そしてoverflowとtext-overflowの設定が最初からガイドの通りになっている気がします。

追加したばかりの設定を消してから再度Previewで確認すると、こんな感じです。

|![ap09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/6502e2d5-cb83-1ede-81af-e92deb33dedb.png)|
|:-:|


やっぱり最初からありますね。そして末尾が...とはなっていません。

ということで、表題を達成するための設定ですが、下記のようになります。

```css
.app-Page-Field3 {
  white-space: nowrap;
}
```

|![ap131.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26085/f6e246e2-2665-2b2a-6ebd-be7760fbda43.png)|
|:-:|

このプロパティを設定すると、想定している「...」が表示されるようになり、改行も無くなりました。
ガイドの記入漏れなのかなんなのかわかりませんが、、、最終的に実現できたので良しとします。
white-spaceの詳しい解説についてはGoogle先生に聞いてもらえばと思います。

ちなみに筆者はCSSでやる方法を知らず、スクリプトでこれを実現してました。
散々やったあとにCSSに関するガイドを見つけて、ファーーーとなりました。
(しかもバインドされたプロパティに仕掛けたので、実データまでカットされました...)

以上です。良いApp Makerライフを!