Skip to content

'deselect'の必要性について #2

@chi-bd

Description

@chi-bd

自分のつたない英語ではこの問題をうまく説明できないので日本語で書かせていただきます。

既に複数(数十個~)のitemを登録済みの状態において、新たにitemを登録しなければいけなくなったとします。
今のCSS-Typesetterでは一度itemを選択(赤色表示)状態にしてしまうと一種の選択モードに入ってしまい、容易には新規モード(parametersタグにaddボタンが存在している状態)へ戻せないため、新規itemの連続追加が極めて困難です。

・新規モードにするためには、parameters>classの名前を既存のitemのいずれとも異なる値にしなければならない
にも拘わらず、
・Reactのinput[type=text]のonchangeはkeyup毎にイベントが発生し、現在のCSS-Typesetterの実装ではイベント発生時点でparameters>classの名前に合致するitemが存在するとそのitemが選択されてしまう
・この状態でのclass名の変更は「選択中のitemの名称変更」と解釈されてしまうため、新規itemとして追加することができない
かつ、
・ユニークIDの生成が_.uniqueIdに依存していて、underscoreの実装ではインスタンスが新しくなる(別ウインドウ or リロード)と初期値が0に戻ってしまう
だからです。

もう少し具体的にいうと、既に"text-1"から"text-100"が存在している状態に"text-101"を追加しようとしているのですが、"text-100"→"text-101"に書き換えようとして、
・"text-100"を選択
・parameters>classの末尾でBSキーを押下
・この時点で自動的に"text-10"が選択されてしまう
・"1"キーを押下→"text-10"が"text-101"にリネームされるだけで追加できない

ならば、ということで、
・別途クリップボードに"text-101"という文字列を仕込んでおく
・parameters>classで全選択&一括DEL
・ペースト→"text-101"が入力され、かつ"add"ボタンも存在する
・目的の矩形の中をクリックする→"text-101"が追加されるが、直後に"text-2"(その時点での_.uniqueIdのカウンタ+1に合致するitem)が自動選択されてしまう
・よって、複数追加したい場合はこの複雑な手順を繰り返す必要あり

「適当な既存itemのcopy&parameterの修正でよいのでは?」とお考えかと思いますが、それは「class名の番号体系が崩れる」に目をつぶったとしても、純新規のときのような「"設定したい矩形の中をクリックする"操作を連続実行するだけ」のお手軽さからは程遠いです。
なので、選択モードから明示的に追加モードに移行するための'deselect'の必要性を提案します。
deselectは「ユニークIDとして(プレフィックスを考慮した)既存itemの最大ID+1を生成」することによって、確実に追加モードへの遷移を可能とするものです。
https://github.com/chi-bd/css-typesetter/commits/features/deselect

この提案は採用していただけますか?ご検討よろしくお願いします。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions