     (map-indexed
       (fn [index item]
         (table-row
-          {:key       (str "tr-" (:id item))
+          {:key       (str "tr-" (hash item))
            :style     {:cursor "pointer"}
            :rowNumber index}
           (->> (select-keys* item render-items-key)

          (fn [index header]
            (table-header-column
              {:key   (str "thc-" index)
               :style (merge (select-keys header [:width])
                             el-style)}
              (:name header))) headers)
        (table-header-column
          {:key   "thc"
           :style el-style} "")))))

(defn form-table-ro-body
  [headers items render-item-fn render-items-key]
  (table-body
    {:key                "tb"
     :displayRowCheckbox false}
    (map-indexed
      (fn [index item]
        (table-row
          {:key           (str "tr-" index)
           :rowNumber     index
           :displayBorder false}
          (->> (select-keys* item render-items-key)
               (map-indexed
                 (fn [coll-index coll]
                   (table-row-column
                     {:key   (str "trc-" index "-" coll-index)
                      :style (select-keys (nth headers coll-index) [:width])}
                     (render-item-fn coll item)))))
          (table-header-column
            {:key (str "trc-" index)}
            ""))) items)))

(defn form-table-ro
  [headers items render-items-fn render-items-key]
  (mui
    (table
      {:key        "tbl"
       :selectable false}
      (if (not (empty? headers))
        (form-table-ro-header headers))
      (form-table-ro-body headers items render-items-fn render-items-key))))

;; Info table component

(defn form-info-table-header [headers]
  (let [el-style {:height "20px"}]
    (table-header
      {:key               "th"
       :displaySelectAll  false
       :adjustForCheckbox false
       ;:style             {:border "none"}
       }
      (table-row
        {:key           "tr"
         :displayBorder false
         :style         el-style}
        (map-indexed
          (fn [index header]
            (table-header-column
              {:key   (str "thc-" index)
               :style (merge (select-keys header [:width])
                             el-style)}
              (:name header))) headers)
        (table-header-column
          {:key   "thc"
           :style el-style} "")))))

(defn form-info-table-body [headers items render-item-fn render-items-key]
  (let [el-style {:height "20px"}]
    (table-body
      {:key                "tb"

       :selectable false}
      (form-table-body headers items data render-items-fn remove-item-fn))))

;; Info table component

(defn form-info-table-header [headers]
  (let [el-style {:height "20px"}]
    (table-header
      {:key               "th"
       :displaySelectAll  false
