Informações geográficas · Novo recurso

Sistema de design Esri Calcite.

Uma referência prática do Calcite para ferramentas espaciais com foco: superfícies semânticas e ações azuis, painéis compactos de inspeção, APIs reais de entrada e um exemplo completo de revisão local de site.

Guia OpenDesign8 capítulos48 entradas de referênciaGuia de aplicação original
01

Sistema de design Esri Calcite Prévia da interface

Selecione um local na lista ou no esquema, filtre os estados de revisão e valide uma nota que permanece associada a cada local até a página ser recarregada.

Inspecione locais fictícios e mantenha notas locaisAbrir exemplo completo
Interpretação original de HTML/CSS/JavaScript com base em referências visuais documentadas. A ilustração não é um mapa do ArcGIS; nenhum ambiente de execução ou fonte da Esri está incluído. · Referência de implementação
02

Sistema de design Esri Calcite Referência de design

Tokens de design do Calcite 4.1.0 e API do componente atual, verificados junto a Components 5.1.2. Os pacotes de tokens e de componentes têm números de versão separados. O exemplo incorporado é uma interpretação original de HTML/CSS; ele não redistribui o ambiente de execução do Calcite nem afirma reproduzir o comportamento nativo.

Superfícies, texto e interação do tema claro

Fonte
Nome / RegraValor / ConfiguraçãoUso
--calcite-color-surface-1#f7f7f7 Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-surface-2#ffffff Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-surface-3#f2f2f2 Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-surface-4#ebebeb Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-surface-highlight#d6efff Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-text-1#141414 Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-text-2#4a4a4a Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-text-3#6b6b6b Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-text-inverse#ffffff Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-text-link#00619b Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-border-1#d4d4d4 Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-border-2#dedede Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-border-3#ebebeb Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-border-input#949494 Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-brand#007ac2 Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-brand-hover#00619b Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.
--calcite-color-brand-press#004874 Referência semântica para a função indicada pelo token; a seleção e as bordas dos campos precisam de contrastes diferentes.

Escala de espaçamento atual

Fonte
Nome / RegraValor / ConfiguraçãoUso
--calcite-space-none0Família atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-px1pxFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-base2pxFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-2xs0.25remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-xs0.375remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-sm0.5remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-sm-plus0.625remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-md0.75remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-md-plus0.875remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-lg1remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-xl1.25remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-2xl1.5remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-3xl2remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.
--calcite-space-4xl2.75remFamília atual de tokens de espaçamento. Os intervalos em rem seguem o tamanho da raiz; evite misturá-los com aliases de espaçamento obsoletos.

Escalas tipográfica e de cantos

Fonte
Nome / RegraValor / ConfiguraçãoUso
--calcite-corner-radius-none0Valores publicados, não medidas inferidas de uma captura de tela.
--calcite-corner-radius-xs2pxValores publicados, não medidas inferidas de uma captura de tela.
--calcite-corner-radius-sm4pxValores publicados, não medidas inferidas de uma captura de tela.
--calcite-corner-radius-pill9999pxValores publicados, não medidas inferidas de uma captura de tela.
--calcite-font-size-xs10pxValores publicados, não medidas inferidas de uma captura de tela.
--calcite-font-size-sm12pxValores publicados, não medidas inferidas de uma captura de tela.
--calcite-font-size14pxValores publicados, não medidas inferidas de uma captura de tela.
--calcite-font-size-md16pxValores publicados, não medidas inferidas de uma captura de tela.
--calcite-font-size-lg18pxValores publicados, não medidas inferidas de uma captura de tela.
--calcite-font-size-xl20pxValores publicados, não medidas inferidas de uma captura de tela.
--calcite-font-size-2xl24pxValores publicados, não medidas inferidas de uma captura de tela.

Componente de entrada API

Fonte
Nome / RegraValor / ConfiguraçãoUso
scales / m / l; default mAltere a escala do componente de propósito; isso não é o mesmo que alterar o zoom da página.
statusidle / valid / invalidComunique a validade do campo com uma mensagem, não apenas com uma cor.
labelTextstringTexto do rótulo visível da entrada atual API.
validationMessagestringExplique a entrada inválida ao lado do controle.
calciteInputInputeventLeia event.target.value enquanto a pessoa digita.
setFocus()Promise<void>Mova o foco para o componente nativo após um erro de validação da aplicação.
03

Esri Calcite Guia completo do sistema de design

Um guia prático para escolher, aplicar e avaliar este sistema em uma interface real.

DESIGN-esri-calcite.md

Orientações completas, um ponto de partida para a implementação e links para o código-fonte.

Baixar o guia

Esri Calcite Arquitetura de espaços de trabalho e painéis do sistema de design

Mantenha visível o contexto do objeto

Uma tarefa espacial geralmente tem pelo menos dois contextos: a área que está sendo inspecionada e o objeto selecionado. O exemplo mantém uma pequena lista de locais ao lado de um esquema original e de um inspetor. Selecionar uma linha da lista ou um marcador define o mesmo ID estável do local, para que o nome, o status e a observação não acabem se referindo a objetos diferentes.

Com base neste guia de OpenDesign

Separe a ilustração de um mapa real

O SVG comunica a relação entre uma lista e uma superfície espacial. Ele não tem projeção, coordenadas, camadas, zoom, geocodificação nem roteamento. A legenda visível informa que se trata de um esquema e que não está em escala. Uma visualização de ArcGIS para produção requer integração própria com o SDK, dados e trabalho de acessibilidade; um shell Calcite, por si só, não oferece esses recursos.

Esri Calcite Papéis semânticos de cor do sistema de design

Use superfícies para dividir as ferramentas sem recorrer a cartões pesados

A referência diferencia surface-1 a surface-4 e reserva surface-highlight para dar ênfase. O exemplo usa um inspetor branco sobre um fundo esbranquiçado discreto e uma linha selecionada em azul-claro. Bordas neutras e finas delimitam os painéis sem criar um cartão flutuante em torno de cada campo.

Atribua um significado consistente de interação ao azul

As cores de marca, hover e pressionamento formam uma sequência progressivamente mais escura, de #007ac2 a #00619b e #004874. O marcador selecionado e a ação principal de salvar usam essa família de cores para diferentes papéis de interação. Os estados de revisão escritos e a mensagem de validação da observação continuam legíveis sem depender apenas da cor.

Esri Calcite Tipografia e densidade de informações do sistema de design

Preserve a hierarquia de informações compacta

As referências absolutas de tipografia publicadas incluem 12px para texto pequeno, 14px para texto-base, 16px para texto médio e 20px para texto extragrande. O exemplo combina um título de espaço de trabalho de 20px com títulos de painel de 16px e controles de 14px. Os metadados são menores, mas nunca são o único elemento que identifica o objeto selecionado.

Diferencie uma fonte alternativa da fonte de marca

Este exemplo independente usa Arial e fontes alternativas do sistema. Ele não inclui fontes da marca Esri nem apresenta essa alternativa como Avenir. Uma integração nativa autorizada deve seguir os recursos e a configuração de tema da versão fixada do Calcite. Alterar a fonte pode afetar as quebras de linha e a largura dos controles; por isso, teste o conjunto de recursos realmente implantado.

Esri Calcite Tokens de espaçamento e painéis responsivos do sistema de design

Escolha os nomes atuais dos tokens

A referência usa a escala atual --calcite-space-*, que combina valores em pixels para os menores intervalos e valores em rem para espaçamentos maiores. Use essas funções nomeadas de forma consistente ao implementar um tema nativo. O layout da aplicação neste exemplo usa valores explícitos CSS para que a demonstração possa ser executada sem importar pacotes restritos.

Reorganize o inspetor antes de comprimir o campo

Esri Calcite Comportamento de seleção e filtragem do sistema de design

Use um único identificador de seleção

A lista e o esquema compartilham a seleção pelos identificadores A-01, B-02 e C-03, não pela posição atual no array. Ao filtrar por Checked, o local correspondente disponível é selecionado e o inspetor acompanha a seleção. O estado de pressionado é exposto tanto no botão da lista quanto no marcador correspondente.

Mantenha as observações salvas separadas dos rascunhos não salvos

Uma observação salva é armazenada em um Map indexado pelo ID do local. Ao voltar a esse local, ela é restaurada; ao mudar de local sem salvar, o texto não salvo é substituído. O texto de ajuda informa explicitamente que os dados ficam apenas na sessão local. Um editor de produção deve proteger alterações não salvas quando a perda de um rascunho puder ter consequências relevantes.

Esri Calcite Validação e recuperação da entrada no sistema de design

Use a entrada nativa real API ao adotar o Calcite

O exemplo nativo usa labelText, value, status e validationMessage. O evento calciteInputInput pode limpar um erro desatualizado, enquanto setFocus() devolve o foco ao componente após a falha de uma regra da aplicação. Esses são nomes públicos API, ao contrário de acessar o shadow root para encontrar uma entrada interna.

Não confunda uma confirmação local com a persistência em um serviço

A prévia independente exige pelo menos dez caracteres após remover os espaços das extremidades e limita o campo a 240. A confirmação identifica o local e informa explicitamente que a ação ocorreu localmente. Ao recarregar a página, as observações são apagadas. Uma versão conectada à rede precisaria lidar com estados pendentes, falhas, novas tentativas e conflitos; a mensagem de salvamento local não implica nenhum desses comportamentos.

  1. Tente salvar uma observação vazia ou curta e leia o erro.
  2. Digite uma observação mais longa, salve, selecione outro local e depois volte.
  3. Recarregue a página para confirmar que o exemplo não promete persistência.

Esri Calcite Alternativas espaciais acessíveis no sistema de design

Ofereça uma opção em lista para cada marcador

Cada marcador acionável tem um botão de texto na lista de locais. Assim, o mapa ilustrado não é a única maneira de selecionar um objeto. O SVG recebe uma descrição concisa, enquanto os controles têm seus próprios nomes e contornos de foco visíveis. Um mapa real exige mais do que copiar o texto alternativo do esquema.

Posicione a validação junto ao campo

A área de texto referencia tanto o texto de ajuda quanto o erro por meio de aria-describedby. Em caso de falha, recebe aria-invalid e o foco; ao editar, o estado inválido desatualizado é removido. A confirmação usa uma região de status. Pessoas que usam o teclado podem selecionar um local, escrever uma observação e salvá-la sem interagir com uma forma geográfica desenhada.

Esri Calcite Limites de versão e integração do sistema de design

Fixe as versões dos pacotes e confira os requisitos de licenciamento

Components 5.1.2 e design tokens 4.1.0 são pacotes distintos. A página de licenciamento atual descreve a disponibilidade para contas do ArcGIS Online, Enterprise ou Location Platform. Não presuma que uma versão de código aberto antiga se aplica ao pacote atual. O código-fonte nativo abaixo é para um projeto que atende a esses requisitos.

  • Components: 5.1.2.
  • Referência de design tokens: 4.1.0.
  • Prévia: HTML, CSS e JavaScript independentes; sem runtime da Esri.

Registre somente os componentes que você usa

Exemplos de componentes do sistema de design Esri Calcite

Exemplo independente para inspeção do site

HTML, CSS e JavaScript completos e independentes, usados nesta prévia. Salve como index.html e abra em um navegador.

html
<!doctype html>
<html lang="en">
  <meta charset="utf-8" /><meta
    name="viewport"
    content="width=device-width,initial-scale=1"
  /><title>Site inspection panel</title
  ><style>
    * {
      box-sizing: border-box;
    }
    body {
      margin: 0;
      font:
        14px/1.5 Arial,
        sans-serif;
      color: #141414;
      background: #f7f7f7;
    }
    button,
    input,
    select,
    textarea {
      font: inherit;
    }
    button {
      cursor: pointer;
    }
    button:focus-visible,
    input:focus-visible,
    select:focus-visible,
    textarea:focus-visible {
      outline: 2px solid #007ac2;
      outline-offset: 3px;
    }
    header {
      padding: 20px 24px;
      background: #fff;
      border-bottom: 1px solid #d4d4d4;
      display: flex;
      justify-content: space-between;
      gap: 16px;
      align-items: center;
    }
    h1 {
      font-size: 20px;
      margin: 0;
    }
    header p {
      margin: 2px 0 0;
      color: #6b6b6b;
      font-size: 12px;
    }
    .badge {
      background: #d6efff;
      color: #004874;
      padding: 4px 8px;
      font-size: 12px;
    }
    .layout {
      display: grid;
      grid-template-columns: 240px minmax(0, 1fr) 280px;
      min-height: 510px;
    }
    .sites,
    .inspector {
      background: #fff;
      padding: 20px;
      border-right: 1px solid #d4d4d4;
    }
    .inspector {
      border-right: 0;
      border-left: 1px solid #d4d4d4;
    }
    h2 {
      font-size: 16px;
      margin: 0 0 16px;
    }
    label {
      display: block;
      font-weight: 600;
      margin: 12px 0 6px;
    }
    select,
    textarea {
      width: 100%;
      border: 1px solid #949494;
      background: #fff;
      padding: 8px;
      color: inherit;
    }
    textarea {
      resize: vertical;
      min-height: 96px;
    }
    .site {
      display: block;
      width: 100%;
      text-align: left;
      background: #fff;
      border: 1px solid #dedede;
      padding: 12px;
      margin-top: 8px;
    }
    .site[aria-pressed="true"] {
      border-left: 4px solid #007ac2;
      background: #d6efff;
    }
    .site small {
      display: block;
      color: #4a4a4a;
      margin-top: 3px;
    }
    .map {
      position: relative;
      overflow: hidden;
      min-height: 360px;
      background: #ebebe5;
    }
    .map svg {
      width: 100%;
      height: 100%;
      position: absolute;
      inset: 0;
    }
    .map-caption {
      position: absolute;
      bottom: 12px;
      left: 12px;
      padding: 4px 8px;
      background: #fff;
      font-size: 12px;
    }
    .pin {
      position: absolute;
      width: 36px;
      height: 36px;
      border-radius: 50%;
      border: 3px solid #fff;
      background: #007ac2;
      color: #fff;
      font-weight: bold;
      box-shadow: 0 2px 8px #0004;
    }
    .pin[aria-pressed="true"] {
      background: #004874;
      outline: 3px solid #007ac2;
      outline-offset: 3px;
    }
    .pin[hidden] {
      display: none;
    }
    dl {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 8px;
      font-size: 12px;
    }
    dt {
      color: #6b6b6b;
    }
    dd {
      margin: 0;
      text-align: right;
    }
    .primary {
      background: #007ac2;
      color: white;
      border: 0;
      width: 100%;
      padding: 10px;
      margin-top: 12px;
    }
    .primary:hover {
      background: #00619b;
    }
    .error {
      color: #a11b1b;
      font-size: 12px;
    }
    .saved {
      color: #237000;
      font-size: 12px;
    }
    footer {
      padding: 16px 24px;
      border-top: 1px solid #d4d4d4;
      color: #6b6b6b;
      font-size: 12px;
      background: #fff;
    }
    @media (max-width: 1000px) {
      .layout {
        grid-template-columns: 210px minmax(0, 1fr);
      }
      .inspector {
        grid-column: 1/-1;
        border-left: 0;
        border-top: 1px solid #d4d4d4;
      }
      .inspector form {
        max-width: 640px;
      }
    }
    @media (max-width: 550px) {
      header {
        align-items: flex-start;
        flex-direction: column;
      }
      .layout {
        display: flex;
        flex-direction: column;
      }
      .sites {
        border-right: 0;
      }
      .map {
        height: 300px;
        min-height: 300px;
      }
      .inspector {
        padding: 20px;
      }
      .site {
        display: inline-block;
        width: 100%;
      }
    }
  </style>
  <body>
    <header>
      <div>
        <h1>Field inspection workspace</h1>
        <p>Original Calcite-inspired layout study · fictional site data</p>
      </div>
      <span class="badge">Local notes only</span>
    </header>
    <main class="layout">
      <aside class="sites">
        <h2>Inspection sites</h2>
        <label for="filter">Show sites</label
        ><select id="filter">
          <option value="all">All sites</option>
          <option value="review">Needs review</option>
          <option value="checked">Checked</option>
        </select>
        <div id="site-list"></div>
        <p id="count" aria-live="polite"></p>
      </aside>
      <section class="map" aria-label="Illustrated site plan">
        <svg
          viewBox="0 0 700 510"
          preserveAspectRatio="xMidYMid slice"
          role="img"
          aria-label="Original schematic with a river, roads and three inspection sites; not a geographic map"
        >
          <rect width="700" height="510" fill="#e4e8db" />
          <path
            d="M480 -50Q230 110 440 260T360 570"
            fill="none"
            stroke="#b6dbe9"
            stroke-width="100"
          />
          <path
            d="M-20 150L720 280M160 -20L290 530M-20 400L720 80"
            stroke="#fff"
            stroke-width="22"
          />
          <path
            d="M-20 150L720 280M160 -20L290 530M-20 400L720 80"
            stroke="#c8c8bf"
            stroke-width="2"
          />
          <g fill="#c4cfb5">
            <rect x="50" y="50" width="100" height="70" />
            <rect x="510" y="340" width="130" height="80" />
            <rect x="80" y="260" width="70" height="60" />
          </g>
        </svg>
        <div id="pins"></div>
        <span class="map-caption">Schematic illustration · not to scale</span>
      </section>
      <aside class="inspector">
        <h2 id="site-title">North access</h2>
        <dl>
          <dt>Site ID</dt>
          <dd id="site-id"></dd>
          <dt>Review state</dt>
          <dd id="site-state"></dd>
        </dl>
        <form id="note-form" novalidate>
          <label for="note">Inspection note</label
          ><textarea
            id="note"
            aria-describedby="note-help error"
            maxlength="240"
          ></textarea>
          <p id="note-help">
            Add 10–240 characters. Notes stay in this page until reload.
          </p>
          <p id="error" class="error" hidden>
            Write at least 10 characters before saving.
          </p>
          <button class="primary" type="submit">Save local note</button>
          <p id="saved" class="saved" role="status"></p>
        </form>
      </aside>
    </main>
    <footer>
      Independent HTML/CSS interpretation by OpenDesign. No Calcite runtime,
      Esri fonts, ArcGIS map or service is loaded.
    </footer>
    <script>
      const sites = [
        { id: "A-01", name: "North access", state: "review", x: 29, y: 24 },
        { id: "B-02", name: "River crossing", state: "review", x: 62, y: 48 },
        { id: "C-03", name: "South garden", state: "checked", x: 34, y: 76 },
      ];
      let selected = "A-01";
      const notes = new Map(),
        list = document.querySelector("#site-list"),
        pins = document.querySelector("#pins"),
        filter = document.querySelector("#filter"),
        note = document.querySelector("#note"),
        error = document.querySelector("#error"),
        saved = document.querySelector("#saved");
      function render() {
        const visible = sites.filter(
          (s) => filter.value === "all" || s.state === filter.value,
        );
        if (!visible.some((s) => s.id === selected)) selected = visible[0]?.id;
        list.replaceChildren();
        pins.replaceChildren();
        for (const s of visible) {
          const b = document.createElement("button");
          b.type = "button";
          b.className = "site";
          b.setAttribute("aria-pressed", String(s.id === selected));
          b.textContent = s.name;
          const small = document.createElement("small");
          small.textContent =
            s.id + " · " + (s.state === "review" ? "Needs review" : "Checked");
          b.append(small);
          b.onclick = () => {
            selected = s.id;
            render();
          };
          list.append(b);
          const pin = document.createElement("button");
          pin.type = "button";
          pin.className = "pin";
          pin.style.left = s.x + "%";
          pin.style.top = s.y + "%";
          pin.textContent = s.id[0];
          pin.setAttribute("aria-label", "Select " + s.name);
          pin.setAttribute("aria-pressed", String(s.id === selected));
          pin.onclick = b.onclick;
          pins.append(pin);
        }
        const s = sites.find((s) => s.id === selected);
        document.querySelector("#count").textContent =
          visible.length + " sites shown";
        document.querySelector("#site-title").textContent = s.name;
        document.querySelector("#site-id").textContent = s.id;
        document.querySelector("#site-state").textContent =
          s.state === "review" ? "Needs review" : "Checked";
        note.value = notes.get(s.id) || "";
        error.hidden = true;
        note.removeAttribute("aria-invalid");
        saved.textContent = "";
      }
      filter.onchange = render;
      note.oninput = () => {
        error.hidden = true;
        note.removeAttribute("aria-invalid");
        saved.textContent = "";
      };
      document.querySelector("#note-form").onsubmit = (e) => {
        e.preventDefault();
        const value = note.value.trim();
        if (value.length < 10) {
          error.hidden = false;
          note.setAttribute("aria-invalid", "true");
          note.focus();
          return;
        }
        notes.set(selected, value);
        saved.textContent = "Note saved locally for " + selected + ".";
      };
      render();
    </script>
  </body>
</html>

Referência de código

  • Esquema original e comportamento da aplicação. Não inclui SDK de mapas, dados remotos nem runtime da Esri.

Alternativa nativa com Calcite Input

Substitua src/main.js em um projeto Vite vanilla cujo index.html contenha <div id="app"></div>.

js
import "@esri/calcite-components/components/calcite-input";
import "@esri/calcite-components/components/calcite-button";

document.querySelector("#app").innerHTML = `
  <calcite-input id="inspection-note" label-text="Inspection note"
    validation-message="Enter at least ten characters"></calcite-input>
  <calcite-button id="save-note">Validate note</calcite-button>
  <p id="result" role="status"></p>`;
const field = document.querySelector("#inspection-note");
const result = document.querySelector("#result");
field.addEventListener("calciteInputInput", () => {
  field.status = "idle";
  result.textContent = "";
});
document.querySelector("#save-note").addEventListener("click", async () => {
  if (field.value.trim().length < 10) {
    field.status = "invalid";
    await field.setFocus();
    return;
  }
  field.status = "valid";
  result.textContent = "The note passes the local rule. Nothing was sent.";
});

Referência de código

  • Instale @esri/[email protected] após revisar os requisitos de licenciamento atuais. Esta alternativa foi verificada com API; a prévia independente acima é o exemplo testado no navegador.
04

Configuração do agente de sistema de design Esri Calcite

Ponto de partida para implementação

O pacote de componentes nativos exige uma conta ArcGIS elegível de acordo com os termos de licenciamento atuais. Ao hospedar os recursos dos componentes por conta própria, confira os requisitos de caminho dos arquivos de recursos.

sh
# Independent specimen: save the complete HTML example as index.html.
# Native alternative for an appropriately licensed project:
npm create vite@latest calcite-note -- --template vanilla
cd calcite-note
npm install
npm install @esri/[email protected]
# Replace src/main.js with the native input example.
npm run dev

Um prompt para seu projeto

Prompt para agente de IA
Crie um espaço de trabalho focado na inspeção espacial com base nas referências do Calcite. Mantenha o ID do objeto selecionado igual na lista e no painel de inspeção, mostre os estados por escrito e diferencie as anotações locais da persistência no serviço. Use a interpretação independente como ponto de partida ou escolha deliberadamente o caminho de componentes nativos licenciados. Não descreva o esquema original como um mapa do ArcGIS.
05

Fontes e escopo do sistema de design Esri Calcite

Guia da aplicação OpenDesign. O exemplo ilustrado foi implementado de forma independente e usa dados fictícios. O uso atual do Calcite é regido pelo licenciamento da Esri e exige uma conta ArcGIS elegível; o exemplo de integração nativa é uma alternativa para projetos devidamente licenciados, não o runtime desta prévia.