<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Grid on Palmyra</title>
    <link>https://palmyra.dev/docs/api/frontend/base-components/grid/</link>
    <description>Recent content in Grid on Palmyra</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <atom:link href="https://palmyra.dev/docs/api/frontend/base-components/grid/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CellFormatter</title>
      <link>https://palmyra.dev/docs/api/frontend/base-components/grid/cell-formatter/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://palmyra.dev/docs/api/frontend/base-components/grid/cell-formatter/</guid>
      <description>&lt;h1 id=&#34;cellformatter&#34;&gt;CellFormatter&lt;a class=&#34;anchor&#34; href=&#34;#cellformatter&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;code&gt;@palmyralabs/rt-forms&lt;/code&gt; · &lt;code&gt;src/palmyra/grid/base/utils/CellFormatter.ts&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;anchor&#34; href=&#34;#overview&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Utility module — not a React component. A set of functions that convert a raw cell value into its displayed representation, consumed by &lt;a href=&#34;https://palmyra.dev/docs/api/frontend/base-components/grid/column-converter/&#34;&gt;&lt;code&gt;ColumnConverter.generateColumns&lt;/code&gt;&lt;/a&gt; when it builds &lt;code&gt;@tanstack/react-table&lt;/code&gt; column defs. Delegates to &lt;code&gt;DataFetchUtil.formatValue&lt;/code&gt; for the common case, with a specialised &lt;code&gt;BIT&lt;/code&gt; renderer for boolean-like columns.&lt;/p&gt;&#xA;&lt;h2 id=&#34;exports&#34;&gt;Exports&lt;a class=&#34;anchor&#34; href=&#34;#exports&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// BIT columns with a 1/0 → &amp;#34;Yes&amp;#34;/&amp;#34;No&amp;#34; style displayPattern&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;formatBIT&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;columnDef&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;ColumnDefinition&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;info&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;CellContext&lt;/span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;any&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;any&lt;/span&gt;&amp;gt;) &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;string&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Generic delegate — calls DataFetchUtil.formatValue against the column&amp;#39;s type/pattern&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;formatColumn&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;columnDef&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;ColumnDefinition&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;info&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;any&lt;/span&gt;) &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;any&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;// Returns an object spreadable into a TanStack column definition&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;function&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;getFormatFn&lt;/span&gt;(&lt;span style=&#34;color:#a6e22e&#34;&gt;columnDef&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;ColumnDefinition&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; { &lt;span style=&#34;color:#a6e22e&#34;&gt;cell&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;:&lt;/span&gt; (&lt;span style=&#34;color:#a6e22e&#34;&gt;info&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;CellContext&lt;/span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;any&lt;/span&gt;, &lt;span style=&#34;color:#a6e22e&#34;&gt;any&lt;/span&gt;&amp;gt;) &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;any&lt;/span&gt; };&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;info.getValue()&lt;/code&gt; is the row&amp;rsquo;s raw attribute value; the returned string/JSX is what the cell renders.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ColumnConverter</title>
      <link>https://palmyra.dev/docs/api/frontend/base-components/grid/column-converter/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://palmyra.dev/docs/api/frontend/base-components/grid/column-converter/</guid>
      <description>&lt;h1 id=&#34;columnconverter&#34;&gt;ColumnConverter&lt;a class=&#34;anchor&#34; href=&#34;#columnconverter&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;code&gt;@palmyralabs/rt-forms&lt;/code&gt; · &lt;code&gt;src/palmyra/grid/base/utils/ColumnConverter.tsx&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;anchor&#34; href=&#34;#overview&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Not a component — a &lt;strong&gt;factory function&lt;/strong&gt; that compiles a list of Palmyra-flavoured &lt;code&gt;ColumnDefinition&lt;/code&gt;s into &lt;code&gt;@tanstack/react-table&lt;/code&gt; &lt;code&gt;ColumnDef&lt;/code&gt;s. Handles grouping (&lt;code&gt;columnGroup&lt;/code&gt;), sort/search flags, value conversion (via &lt;code&gt;FormatterFactory&lt;/code&gt;), and per-column &lt;code&gt;cellRenderer&lt;/code&gt; overrides. Dispatches header/footer/cell rendering through a &lt;code&gt;GridCustomizer&lt;/code&gt; so themes (Mantine / MUI / plain) can inject their own chrome.&lt;/p&gt;&#xA;&lt;p&gt;Grid templates like &lt;code&gt;SummaryGrid&lt;/code&gt; call this under the hood; you&amp;rsquo;ll mostly touch it when building a bespoke grid.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ServerQueryManager</title>
      <link>https://palmyra.dev/docs/api/frontend/base-components/grid/server-query-manager/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://palmyra.dev/docs/api/frontend/base-components/grid/server-query-manager/</guid>
      <description>&lt;h1 id=&#34;serverquerymanager&#34;&gt;ServerQueryManager&lt;a class=&#34;anchor&#34; href=&#34;#serverquerymanager&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;code&gt;@palmyralabs/rt-forms&lt;/code&gt; · &lt;code&gt;src/palmyra/wire/ServerQueryManager.tsx&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;a class=&#34;anchor&#34; href=&#34;#overview&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Not a component — the file&amp;rsquo;s single runtime export is the &lt;strong&gt;&lt;code&gt;useServerQuery&lt;/code&gt;&lt;/strong&gt; hook. It manages the filter / sort / pagination state of a server-backed grid against a &lt;a href=&#34;https://palmyra.dev/docs/api/frontend/wire/&#34;&gt;Wire&lt;/a&gt; &lt;code&gt;GridStore&lt;/code&gt;, and returns an imperative handle (&lt;code&gt;IPageQueryable&lt;/code&gt;) that grid templates consume.&lt;/p&gt;&#xA;&lt;p&gt;If no &lt;code&gt;store&lt;/code&gt; is passed in, the hook reaches for &lt;code&gt;StoreFactoryContext&lt;/code&gt; and asks the factory for a grid store keyed on &lt;code&gt;endPoint&lt;/code&gt; + &lt;code&gt;storeOptions&lt;/code&gt;. That&amp;rsquo;s the seam that makes grids and forms share the same factory configuration.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
