Rechat SDK
    Preparing search index...

    Attribute Reference

    All custom-element attributes are HTML strings. Numbers as "10", booleans as "true" / "false", lists as "Active,Sold" or a JSON array literal.

    Every filter value (and every per-sub-filter disable flag) lives on <rechat-listings> under its filter_* / disable_filter_* name. <rechat-map-filter> and the individual <rechat-filter-*> tags only carry their local UI flag (disabled).

    The outermost wrapper. One per page. Handles brand context and theme activation.

    Attribute Default Description
    brand_id - Rechat brand identifier
    authorization - Auth token for authenticated requests
    api_url "https://api.rechat.com" API base URL override
    save-search "true" Set to "false" to turn off the Save search flow (the button, its sign-in and save dialogs, and Log out) on portal sites. See Sign-in & Saved Searches.
    data-theme "rechat" Name of the CSS theme block to activate ("rechat" or "compact" ship by default; custom themes are authored as [data-theme="..."] CSS blocks). See Theming.

    The listing context wrapper. Owns filter / map / listing state. Required around any of the listing components. Every filter value the SDK supports is set here.

    Attribute Default Description
    listings - JSON string of pre-hydrated IListing[] for SSR-style hydration
    disabled "false" Suspend all listing fetches. When the widget contains a <rechat-property-search-form> and listing_hyperlink_href is set, fetching is suspended automatically (the form hands the search to another page, so nothing on this one needs listings); set disabled="false" to keep loading.
    disclaimer "auto" How the MLS-required legal copy for the listings on screen is shown. auto shows it as full text when the widget contains a filter component (<rechat-map-filter> or any <rechat-filter-*> tag) and hides it for a listings-only widget. full renders the text inline, modal renders an "MLS Disclaimer" text link that opens the text in a modal, off hides it everywhere, the details modal included. An explicit value always overrides the automatic choice. See <rechat-listings-disclaimer>.
    filter_brand_ids - Comma-separated brand UUIDs, sent as a brands array. A listing matches when it belongs to any one of them.
    filter_brand_id - Single brand to scope listings to. Superseded by filter_brand_ids; still supported, and behaves exactly like a one-entry filter_brand_ids.
    filter_search_limit - Maximum total listings the search may return
    Attribute Default Description
    filter_boundary_ids - Comma-separated boundary UUIDs to seed selected places. Loaded on mount regardless of which filter UI tags are rendered.

    filter_address, filter_boundary_state, filter_boundary_country, filter_suggestions_limit no longer belong on <rechat-listings>. They only take effect when a search UI is mounted. Set them on <rechat-map-filter> or <rechat-filter-search> instead. They still work on the parent for now but emit a deprecation warning and will be removed in a future release.

    Attribute Default Description
    filter_listing_statuses the Active group Comma-separated statuses (Active, Sold, Pending, Leased, …). Omitting it selects Active, Coming Soon, Incoming, the three statuses the More filters Active switch controls. Switching every status off brings Active back, so a search always has a status; set the attribute to "" to allow none. The More filters badge counts the statuses as one change, however many switches were flipped.
    filter_property_types all Comma-separated property types
    filter_keywords - Free-text description match, sent as content. Same field as the Keywords input at the bottom of More filters.
    disable_filter_keywords "false" Hide the Keywords input. This is the supported way to switch the field off.
    filter_property_subtypes - Comma-separated subtypes
    filter_architectural_styles - Comma-separated styles
    filter_list_agents - Comma-separated agent MUIs (listing-side only)
    filter_list_offices - Comma-separated office IDs
    filter_agents - Comma-separated agent MUIs (any role)
    filter_mlses - Comma-separated MLS names. Brokerage-side scope: always sent on every API call when set, even when other filters are absent or the map/filter UI is hidden.
    filter_minimum_sold_date - Earliest sold date (Unix epoch seconds)
    Attribute Default Description
    filter_minimum_price - Minimum price
    filter_maximum_price - Maximum price
    filter_minimum_bedrooms - Minimum bedrooms
    filter_maximum_bedrooms - Maximum bedrooms
    filter_minimum_bathrooms - Minimum bathrooms
    filter_baths - Exact bath count
    filter_minimum_parking_spaces - Minimum parking spaces
    filter_minimum_square_feet - Minimum square feet
    filter_maximum_square_feet - Maximum square feet
    filter_minimum_lot_square_feet - Minimum lot square feet
    filter_maximum_lot_square_feet - Maximum lot square feet
    filter_minimum_year_built - Minimum year built
    filter_maximum_year_built - Maximum year built
    Attribute Default Description
    filter_pool - "true" = require a pool
    filter_open_houses - "true" = require open house. Omit or "false" = no filter applied.
    filter_office_exclusives - "true" = office-exclusive only. Omit or "false" = no filter applied.

    Deprecated. These flags continue to work but emit a one-time console.warn per attribute. They will be removed in a future release. Move each one to the matching individual <rechat-filter-*> tag's disabled attribute.

    Attribute Hides Move to
    disable_filter_address Address search box disabled on <rechat-filter-search>
    disable_filter_price Price control disabled on <rechat-filter-price>
    disable_filter_beds Beds control disabled on <rechat-filter-beds>
    disable_filter_baths Baths control disabled on <rechat-filter-baths>
    disable_filter_property_types Property types control disabled on <rechat-filter-property-type>
    disable_filter_advanced Advanced filters control disabled on <rechat-filter-advanced>
    disable_filter_loading_indicator Loading indicator disabled on <rechat-filter-loading>

    The MapLibre + OpenFreeMap map.

    Attribute Default Description
    preset "liberty" Built-in style preset: liberty, bright, positron, dark
    style_url - Full URL to any MapLibre-compatible style JSON (wins over preset)
    zoom "10" Initial zoom level
    default_center - "lat, lng" initial map center (does not affect the search filter - only the camera)

    The all-in-one filter bar. Most filter values live on the parent <rechat-listings>; the four search-related attrs live here because they only take effect when a search UI is mounted.

    Attribute Default Description
    address - Initial free-text address query
    boundary_state - Restrict autocomplete suggestions to a state (e.g. "TX")
    boundary_country - Restrict autocomplete suggestions to a country (e.g. "US")
    suggestions_limit "5" Max autocomplete suggestions

    Sub-filter visibility is controlled via the disable_filter_* flags on <rechat-listings> (deprecated) or by composing individual <rechat-filter-*> tags with disabled="true".

    Use these when composing filters one-by-one instead of <rechat-map-filter>. Each carries only its local UI flag, except <rechat-filter-search>, which also accepts the four search-config attrs.

    Tag Attributes
    <rechat-filter-search> disabled, address, boundary_state, boundary_country, suggestions_limit
    <rechat-filter-property-type> disabled
    <rechat-filter-price> disabled
    <rechat-filter-beds> disabled
    <rechat-filter-baths> disabled
    <rechat-filter-advanced> disabled
    <rechat-filter-reset> -
    <rechat-filter-loading> disabled

    disabled="true" hides the control without removing it from the DOM; the underlying filter state (seeded by <rechat-listings>) still applies.

    Attribute Default Description
    value "-price" Sort order. - prefix = descending.

    The sort order applies to every API call regardless of whether this tag is rendered. To set the default without showing the dropdown, set filter_sort_by on <rechat-listings> instead.

    Attribute Default Description
    limit "20" Listings per page
    offset "0" Initial offset

    Pagination affects the API request whether or not this tag is rendered. To configure page size/offset without showing the navigator, set filter_pagination_limit / filter_pagination_offset on <rechat-listings>.

    In a layout without a visible <rechat-map> the SDK places its own <rechat-listings-disclaimer> element right after this tag. The two are independent: hiding or restyling the pagination does not move or hide the disclaimers. See <rechat-listings-disclaimer>.

    Optional. The MLS-required legal copy is shown automatically, so most embeds never need this tag. What renders is one block per distinct MLS disclaimer among the listings on screen. Records that differ only by id, such as SEF and SEF_OLD, collapse into one block. Each block is the MLS template with the variables mlsName, currentYear and lastUpdated filled in, where lastUpdated is the current time rounded down to the previous 15 minutes.

    Whether the copy shows depends on the disclaimer attribute of <rechat-listings>. With the default auto, a search widget (one with a filter bar or any <rechat-filter-*> tag) shows the full text and a listings-only widget shows nothing. Set disclaimer="full" or disclaimer="modal" to show it regardless, or disclaimer="off" to hide it regardless.

    Where it appears by default:

    Layout Position
    Map and list (<rechat-map> present and visible) At the end of the scrolling results, after the last card
    List only (no map, or the map hidden with CSS) In its own <rechat-listings-disclaimer data-rechat-auto> element, which the SDK places right after <rechat-listings-pagination>, or right after the results when there is no pagination, on its own row of the shell
    Details modal A footer with the disclaimer, the availability notice and the MLS copyright line

    The element and the pagination are independent. Hiding, restyling or removing the pagination does not move or hide the disclaimers, and paging never duplicates them.

    To choose the position yourself, place <rechat-listings-disclaimer></rechat-listings-disclaimer> anywhere inside <rechat-listings>. The SDK then adds no element of its own and the automatic positions stay empty, so the copy renders exactly once. The disclaimer attribute applies to a manually placed element as well, so a listings-only embed still needs disclaimer="full" or disclaimer="modal" for it to show.

    The text is 10px by default. Override it with --rechat-mls-disclaimer-font-size on <rechat-root> or any ancestor.

    Every card size shows the listing provider (MLS) source at the right of the price: the MLS logo when the feed ships one (mls_info.logo), otherwise a database glyph followed by the MLS display name. The map popup card shows it too, with a smaller logo. For a pin on the current page the popup renders the compact listing already in the store, mls_info included, with no extra request. Only a pin outside the page is fetched by id.

    Attribute Default Description
    id - Fetch a single listing by id
    listing - JSON string of a pre-hydrated listing
    skeleton "false" Force the loading-skeleton state
    compact "false" Use the compact layout
    hyperlink_href - URL template with {id} placeholder for the whole card
    hyperlink_target - Link target (e.g. "_blank")

    <rechat-map-listings-grid> and <rechat-listings-list> render cards internally with no slot to set the hyperlink. Configure card-level link behaviour at the parent via listing_hyperlink_href / listing_hyperlink_target on <rechat-listings>.

    Agent roster context, placed directly inside <rechat-root>. See Agents.

    Attribute Default Description
    q - Initial roster filter (name, email, or MLS id)
    limit "20" Agents per page
    agents - JSON string of pre-hydrated agents

    <rechat-agents-search> takes placeholder (default "Search agents…"). <rechat-agents-count>, <rechat-agents-grid> and <rechat-agents-pagination> take no attributes.

    Attribute Default Description
    id - Roster member user id (required)

    Self-contained testimonials list, placed directly inside <rechat-root>. See Testimonials.

    Attribute Default Description
    limit "20" Testimonials fetched per page. Values below 1 or non-numeric fall back to the default
    load_more "true" Set "false" to hide the "Load more" button and show the first page only
    empty "show" With no testimonials to list: "show" renders the built-in empty message, "hide" removes the element from the page. A <template rechat-state="empty"> child overrides both. See Testimonials → Empty state
    empty_message "No testimonials yet" Text of the built-in empty message