@nova-design-system/nova-webcomponents 3.17.0 → 3.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/dist/cjs/index.cjs.js +21 -3
  2. package/dist/cjs/index.cjs.js.map +1 -1
  3. package/dist/cjs/loader.cjs.js +1 -1
  4. package/dist/cjs/native.cjs.js +1 -1
  5. package/dist/cjs/nv-datagrid.cjs.entry.js +1 -1
  6. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  7. package/dist/cjs/nv-fieldtime.cjs.entry.js +556 -496
  8. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nv-icon.cjs.entry.js +2 -2
  10. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  12. package/dist/cjs/nv-menu.cjs.entry.js +1 -1
  13. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  14. package/dist/cjs/nv-notification.cjs.entry.js +1 -1
  15. package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
  16. package/dist/cjs/nv-popover.cjs.entry.js +1 -1
  17. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  18. package/dist/cjs/nv-split.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  20. package/dist/cjs/nv-table.cjs.entry.js +1 -1
  21. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  22. package/dist/cjs/nv-togglebutton.cjs.entry.js +1 -1
  23. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +1 -1
  24. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  25. package/dist/collection/components/nv-datagrid/nv-datagrid.css +4 -4
  26. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +6 -0
  27. package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
  28. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +331 -497
  29. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  30. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +1 -0
  31. package/dist/collection/components/nv-fieldtime/utils/format-utils.js +236 -0
  32. package/dist/collection/components/nv-fieldtime/utils/format-utils.js.map +1 -0
  33. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  34. package/dist/collection/components/nv-icon/nv-icons.js +1 -1
  35. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  36. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  37. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  38. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  39. package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
  40. package/dist/collection/components/nv-notification/nv-notification.js +1 -1
  41. package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js +1 -1
  42. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  43. package/dist/collection/components/nv-row/nv-row.js +1 -1
  44. package/dist/collection/components/nv-split/nv-split.js +1 -1
  45. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  46. package/dist/collection/components/nv-table/nv-table.js +1 -1
  47. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  48. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
  49. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -1
  50. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  51. package/dist/components/index.js +21 -3
  52. package/dist/components/index.js.map +1 -1
  53. package/dist/components/nv-accordion-item.js +1 -1
  54. package/dist/components/nv-accordion.js +4 -4
  55. package/dist/components/nv-alert.js +1 -1
  56. package/dist/components/nv-avatar.js +1 -1
  57. package/dist/components/nv-badge.js +1 -1
  58. package/dist/components/nv-breadcrumb.js +2 -2
  59. package/dist/components/nv-button.js +1 -1
  60. package/dist/components/nv-datagrid.js +3 -3
  61. package/dist/components/nv-datagrid.js.map +1 -1
  62. package/dist/components/nv-dialog.js +4 -4
  63. package/dist/components/nv-dialogfooter.js +1 -1
  64. package/dist/components/nv-fielddate.js +4 -4
  65. package/dist/components/nv-fielddaterange.js +4 -4
  66. package/dist/components/nv-fielddropdown.js +5 -5
  67. package/dist/components/nv-fielddropdownitem.js +1 -1
  68. package/dist/components/nv-fieldmultiselect.js +5 -5
  69. package/dist/components/nv-fieldnumber.js +1 -1
  70. package/dist/components/nv-fieldpassword.js +3 -3
  71. package/dist/components/nv-fieldselect.js +3 -3
  72. package/dist/components/nv-fieldslider.js +4 -4
  73. package/dist/components/nv-fieldtext.js +1 -1
  74. package/dist/components/nv-fieldtime.js +562 -501
  75. package/dist/components/nv-fieldtime.js.map +1 -1
  76. package/dist/components/nv-icon.js +1 -1
  77. package/dist/components/nv-iconbutton.js +1 -1
  78. package/dist/components/nv-loader.js +1 -1
  79. package/dist/components/nv-menu.js +4 -4
  80. package/dist/components/nv-menuitem.js +1 -1
  81. package/dist/components/nv-notification.js +2 -2
  82. package/dist/components/nv-notificationcontainer.js +1 -1
  83. package/dist/components/nv-popover.js +1 -1
  84. package/dist/components/nv-row.js +1 -1
  85. package/dist/components/nv-split.js +1 -1
  86. package/dist/components/nv-stack.js +1 -1
  87. package/dist/components/nv-table.js +1 -1
  88. package/dist/components/nv-toggle.js +2 -2
  89. package/dist/components/nv-togglebutton.js +1 -1
  90. package/dist/components/nv-togglebuttongroup.js +1 -1
  91. package/dist/components/nv-tooltip.js +1 -1
  92. package/dist/components/{p-31478080.js → p-015330b8.js} +2 -2
  93. package/dist/components/{p-31478080.js.map → p-015330b8.js.map} +1 -1
  94. package/dist/components/{p-7b5102c8.js → p-1bd396b1.js} +4 -4
  95. package/dist/components/{p-7b5102c8.js.map → p-1bd396b1.js.map} +1 -1
  96. package/dist/components/{p-9e7468e3.js → p-2574f8c2.js} +2 -2
  97. package/dist/components/{p-9e7468e3.js.map → p-2574f8c2.js.map} +1 -1
  98. package/dist/components/{p-f2bac2aa.js → p-4cd6f629.js} +2 -2
  99. package/dist/components/{p-f2bac2aa.js.map → p-4cd6f629.js.map} +1 -1
  100. package/dist/components/{p-2cc83e0c.js → p-5e315239.js} +2 -2
  101. package/dist/components/{p-2cc83e0c.js.map → p-5e315239.js.map} +1 -1
  102. package/dist/components/{p-7112612c.js → p-6ca3d847.js} +4 -4
  103. package/dist/components/{p-7112612c.js.map → p-6ca3d847.js.map} +1 -1
  104. package/dist/components/{p-98429fd7.js → p-c981bb48.js} +2 -2
  105. package/dist/components/{p-98429fd7.js.map → p-c981bb48.js.map} +1 -1
  106. package/dist/components/{p-0fd23531.js → p-d1b02966.js} +4 -4
  107. package/dist/components/{p-0fd23531.js.map → p-d1b02966.js.map} +1 -1
  108. package/dist/components/{p-6f2b257e.js → p-ea45f1ab.js} +3 -3
  109. package/dist/components/{p-6f2b257e.js.map → p-ea45f1ab.js.map} +1 -1
  110. package/dist/components/{p-63595ea1.js → p-ebfecbaa.js} +2 -2
  111. package/dist/components/{p-63595ea1.js.map → p-ebfecbaa.js.map} +1 -1
  112. package/dist/components/{p-47d499b4.js → p-ed43bcec.js} +3 -3
  113. package/dist/components/{p-47d499b4.js.map → p-ed43bcec.js.map} +1 -1
  114. package/dist/components/{p-378e3127.js → p-fabbaf47.js} +4 -4
  115. package/dist/components/{p-378e3127.js.map → p-fabbaf47.js.map} +1 -1
  116. package/dist/components/{p-df5d76a5.js → p-fca4d85b.js} +3 -3
  117. package/dist/components/{p-df5d76a5.js.map → p-fca4d85b.js.map} +1 -1
  118. package/dist/esm/index.js +21 -3
  119. package/dist/esm/index.js.map +1 -1
  120. package/dist/esm/loader.js +1 -1
  121. package/dist/esm/native.js +1 -1
  122. package/dist/esm/nv-datagrid.entry.js +1 -1
  123. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  124. package/dist/esm/nv-fieldtime.entry.js +557 -497
  125. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  126. package/dist/esm/nv-icon.entry.js +2 -2
  127. package/dist/esm/nv-icon.entry.js.map +1 -1
  128. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  129. package/dist/esm/nv-menu.entry.js +1 -1
  130. package/dist/esm/nv-menuitem.entry.js +1 -1
  131. package/dist/esm/nv-notification.entry.js +1 -1
  132. package/dist/esm/nv-notificationcontainer.entry.js +1 -1
  133. package/dist/esm/nv-popover.entry.js +1 -1
  134. package/dist/esm/nv-row.entry.js +1 -1
  135. package/dist/esm/nv-split.entry.js +1 -1
  136. package/dist/esm/nv-stack.entry.js +1 -1
  137. package/dist/esm/nv-table.entry.js +1 -1
  138. package/dist/esm/nv-toggle.entry.js +2 -2
  139. package/dist/esm/nv-togglebutton.entry.js +1 -1
  140. package/dist/esm/nv-togglebuttongroup.entry.js +1 -1
  141. package/dist/esm/nv-tooltip.entry.js +1 -1
  142. package/dist/native/index.esm.js +1 -1
  143. package/dist/native/index.esm.js.map +1 -1
  144. package/dist/native/native.esm.js +1 -1
  145. package/dist/native/native.esm.js.map +1 -1
  146. package/dist/native/{p-f30e0be6.entry.js → p-00d1e5e1.entry.js} +2 -2
  147. package/dist/native/{p-4eaf417d.entry.js → p-122c78c3.entry.js} +2 -2
  148. package/dist/native/{p-4eaf417d.entry.js.map → p-122c78c3.entry.js.map} +1 -1
  149. package/dist/native/{p-91fab6c2.entry.js → p-14d2f70a.entry.js} +2 -2
  150. package/dist/native/{p-d94bf052.entry.js → p-3464b86a.entry.js} +2 -2
  151. package/dist/native/{p-638967bf.entry.js → p-417fba7d.entry.js} +2 -2
  152. package/dist/native/{p-52d2c0ae.entry.js → p-4e6fb719.entry.js} +2 -2
  153. package/dist/native/{p-cb0293ec.entry.js → p-539666dd.entry.js} +2 -2
  154. package/dist/native/{p-2364aefa.entry.js → p-5c678bc7.entry.js} +2 -2
  155. package/dist/native/{p-bcf41cd0.entry.js → p-5e70f9ce.entry.js} +2 -2
  156. package/dist/native/{p-278613a3.entry.js → p-5f98d4cd.entry.js} +2 -2
  157. package/dist/native/p-8c053954.entry.js +2 -0
  158. package/dist/native/p-8c053954.entry.js.map +1 -0
  159. package/dist/native/{p-2dfd786f.entry.js → p-ad029453.entry.js} +2 -2
  160. package/dist/native/{p-9d7e099f.entry.js → p-ae43eee2.entry.js} +2 -2
  161. package/dist/native/{p-26513cbd.entry.js → p-b72b5e88.entry.js} +2 -2
  162. package/dist/native/{p-26513cbd.entry.js.map → p-b72b5e88.entry.js.map} +1 -1
  163. package/dist/native/{p-ce97ce24.entry.js → p-ca39f78d.entry.js} +2 -2
  164. package/dist/native/{p-647a0765.entry.js → p-da2060a5.entry.js} +2 -2
  165. package/dist/native/{p-14e622e1.entry.js → p-e5b7ce4e.entry.js} +2 -2
  166. package/dist/types/components/nv-fieldtime/nv-fieldtime.d.ts +50 -2
  167. package/dist/types/components/nv-fieldtime/utils/format-utils.d.ts +63 -0
  168. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  169. package/dist/types/components.d.ts +20 -3
  170. package/dist/vscode-data.json +3 -3
  171. package/hydrate/index.js +571 -523
  172. package/hydrate/index.mjs +571 -523
  173. package/package.json +1 -1
  174. package/dist/cjs/string.utils-9c581350.js +0 -25
  175. package/dist/cjs/string.utils-9c581350.js.map +0 -1
  176. package/dist/components/p-a5c8eee9.js +0 -22
  177. package/dist/components/p-a5c8eee9.js.map +0 -1
  178. package/dist/esm/string.utils-16aed4a7.js +0 -22
  179. package/dist/esm/string.utils-16aed4a7.js.map +0 -1
  180. package/dist/native/p-a5c8eee9.js +0 -2
  181. package/dist/native/p-a5c8eee9.js.map +0 -1
  182. package/dist/native/p-ddc41f1f.entry.js +0 -2
  183. package/dist/native/p-ddc41f1f.entry.js.map +0 -1
  184. /package/dist/native/{p-f30e0be6.entry.js.map → p-00d1e5e1.entry.js.map} +0 -0
  185. /package/dist/native/{p-91fab6c2.entry.js.map → p-14d2f70a.entry.js.map} +0 -0
  186. /package/dist/native/{p-d94bf052.entry.js.map → p-3464b86a.entry.js.map} +0 -0
  187. /package/dist/native/{p-638967bf.entry.js.map → p-417fba7d.entry.js.map} +0 -0
  188. /package/dist/native/{p-52d2c0ae.entry.js.map → p-4e6fb719.entry.js.map} +0 -0
  189. /package/dist/native/{p-cb0293ec.entry.js.map → p-539666dd.entry.js.map} +0 -0
  190. /package/dist/native/{p-2364aefa.entry.js.map → p-5c678bc7.entry.js.map} +0 -0
  191. /package/dist/native/{p-bcf41cd0.entry.js.map → p-5e70f9ce.entry.js.map} +0 -0
  192. /package/dist/native/{p-278613a3.entry.js.map → p-5f98d4cd.entry.js.map} +0 -0
  193. /package/dist/native/{p-2dfd786f.entry.js.map → p-ad029453.entry.js.map} +0 -0
  194. /package/dist/native/{p-9d7e099f.entry.js.map → p-ae43eee2.entry.js.map} +0 -0
  195. /package/dist/native/{p-ce97ce24.entry.js.map → p-ca39f78d.entry.js.map} +0 -0
  196. /package/dist/native/{p-647a0765.entry.js.map → p-da2060a5.entry.js.map} +0 -0
  197. /package/dist/native/{p-14e622e1.entry.js.map → p-e5b7ce4e.entry.js.map} +0 -0
@@ -3473,7 +3473,7 @@ function debounce(func, wait) {
3473
3473
  };
3474
3474
  }
3475
3475
 
3476
- const nvDatagridCss = "nv-datagrid{--nv-datagrid-border-default:var(\n --components-form-field-border-default\n );--nv-datagrid-border-hover:var(--components-form-field-border-hover);--nv-datagrid-border-focus:var(--components-form-field-border-default);--nv-datagrid-background-default:var(\n --components-form-field-background-default\n );--nv-datagrid-background-checked:var(\n --components-form-field-background-checked\n );--nv-datagrid-background-disabled:var(\n --components-form-field-background-disabled\n );--nv-datagrid-color-checked:var(\n --components-form-shape-foreground-default\n );--nv-datagrid-color-disabled:var(\n --components-form-shape-foreground-disabled\n );--nv-datagrid-outline-color:var(--color-focus-brand);display:block}nv-datagrid .hidden{display:none}nv-datagrid table{border-collapse:collapse;border-color:inherit;text-indent:0;width:100%}nv-datagrid th{text-align:left;border-bottom:1px solid var(--components-datagrid-header-border);height:var(--spacing-12);padding:var(--spacing-3) var(--spacing-4);font-size:var(--font-size-md);font-weight:var(--font-weight-high-emphasis);color:var(--components-datagrid-header-text)}nv-datagrid td{border-bottom:1px solid var(--components-datagrid-body-border);height:var(--spacing-12);max-height:var(--spacing-14);padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-md);font-weight:var(--font-weight-low-emphasis);color:var(--components-datagrid-body-text);white-space:nowrap;text-overflow:ellipsis}nv-datagrid tbody>tr:hover{background:var(--color-interaction-container-neutral-background-hover)}nv-datagrid .cursor-pointer{cursor:pointer}nv-datagrid .select-none{-webkit-user-select:none;user-select:none}nv-datagrid .search-container{display:flex}nv-datagrid .checkbox-container{position:relative;color:var(--nv-datagrid-color-checked)}nv-datagrid .checkbox-container input[type=checkbox][readonly]{opacity:0.5}nv-datagrid .checkbox-container:has(input[type=checkbox]:disabled:not([readonly])){color:var(--nv-datagrid-color-disabled)}nv-datagrid .checkbox-container input[type=checkbox]{appearance:none;position:relative;display:flex;width:var(--form-checkbox-size);height:var(--form-checkbox-size);flex-direction:column;align-items:flex-start;border-radius:var(--form-checkbox-radius);border-width:var(--form-checkbox-border-width);border-style:solid;border-color:var(--nv-datagrid-border-default);background:var(--nv-datagrid-background-default)}nv-datagrid .checkbox-container input[type=checkbox]:hover{border-color:var(--nv-datagrid-border-hover)}nv-datagrid .checkbox-container input[type=checkbox]:focus{border-color:var(--nv-datagrid-border-focus)}nv-datagrid .checkbox-container input[type=checkbox]:focus,nv-datagrid .checkbox-container input[type=checkbox]:focus-within{outline:none}nv-datagrid .checkbox-container input[type=checkbox]:focus-visible,nv-datagrid .checkbox-container input[type=checkbox]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--nv-datagrid-outline-color);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-datagrid .checkbox-container input[type=checkbox]:checked,nv-datagrid .checkbox-container input[type=checkbox]:indeterminate{background:var(--nv-datagrid-background-checked);border-color:var(--nv-datagrid-background-checked)}nv-datagrid .checkbox-container input[type=checkbox]:disabled:not([readonly]){background:var(--nv-datagrid-background-disabled);border-color:var(--nv-datagrid-border-default)}nv-datagrid .checkbox-container input[type=checkbox][readonly]{opacity:0.5}nv-datagrid .checkbox-container .icon{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center}nv-datagrid .checkbox-container .icon svg{width:var(--form-checkbox-icon-size);height:var(--form-checkbox-icon-size);fill:none;stroke:currentcolor;stroke-width:var(--form-checkbox-icon-stroke);flex-shrink:0}";
3476
+ const nvDatagridCss = "nv-datagrid{--nv-datagrid-border-default:var(\n --components-form-field-border-default\n );--nv-datagrid-border-hover:var(--components-form-field-border-hover);--nv-datagrid-border-focus:var(--components-form-field-border-default);--nv-datagrid-background-default:var(\n --components-form-field-background-default\n );--nv-datagrid-background-checked:var(\n --components-form-field-background-checked\n );--nv-datagrid-background-disabled:var(\n --components-form-field-background-disabled\n );--nv-datagrid-color-checked:var(\n --components-form-shape-foreground-default\n );--nv-datagrid-color-disabled:var(\n --components-form-shape-foreground-disabled\n );--nv-datagrid-outline-color:var(--color-focus-brand);display:block}nv-datagrid .hidden{display:none}nv-datagrid table{border-collapse:collapse;border-color:inherit;text-indent:0;width:100%}nv-datagrid th{text-align:left;border-bottom:1px solid var(--components-datagrid-header-border);min-height:var(--spacing-12);padding:var(--datagrid-cell-header-padding-y) var(--datagrid-cell-header-padding-x);font-size:var(--font-size-md);font-weight:var(--font-weight-high-emphasis);color:var(--components-datagrid-header-text)}nv-datagrid td{border-bottom:1px solid var(--components-datagrid-body-border);min-height:var(--spacing-12);max-height:var(--spacing-14);padding:var(--datagrid-cell-body-padding-y) var(--datagrid-cell-body-padding-x);font-size:var(--font-size-md);font-weight:var(--font-weight-low-emphasis);color:var(--components-datagrid-body-text);white-space:nowrap;text-overflow:ellipsis}nv-datagrid tbody>tr:hover{background:var(--color-interaction-container-neutral-background-hover)}nv-datagrid .cursor-pointer{cursor:pointer}nv-datagrid .select-none{-webkit-user-select:none;user-select:none}nv-datagrid .search-container{display:flex}nv-datagrid .checkbox-container{position:relative;color:var(--nv-datagrid-color-checked)}nv-datagrid .checkbox-container input[type=checkbox][readonly]{opacity:0.5}nv-datagrid .checkbox-container:has(input[type=checkbox]:disabled:not([readonly])){color:var(--nv-datagrid-color-disabled)}nv-datagrid .checkbox-container input[type=checkbox]{appearance:none;position:relative;display:flex;width:var(--form-checkbox-size);height:var(--form-checkbox-size);flex-direction:column;align-items:flex-start;border-radius:var(--form-checkbox-radius);border-width:var(--form-checkbox-border-width);border-style:solid;border-color:var(--nv-datagrid-border-default);background:var(--nv-datagrid-background-default)}nv-datagrid .checkbox-container input[type=checkbox]:hover{border-color:var(--nv-datagrid-border-hover)}nv-datagrid .checkbox-container input[type=checkbox]:focus{border-color:var(--nv-datagrid-border-focus)}nv-datagrid .checkbox-container input[type=checkbox]:focus,nv-datagrid .checkbox-container input[type=checkbox]:focus-within{outline:none}nv-datagrid .checkbox-container input[type=checkbox]:focus-visible,nv-datagrid .checkbox-container input[type=checkbox]:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--nv-datagrid-outline-color);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-datagrid .checkbox-container input[type=checkbox]:checked,nv-datagrid .checkbox-container input[type=checkbox]:indeterminate{background:var(--nv-datagrid-background-checked);border-color:var(--nv-datagrid-background-checked)}nv-datagrid .checkbox-container input[type=checkbox]:disabled:not([readonly]){background:var(--nv-datagrid-background-disabled);border-color:var(--nv-datagrid-border-default)}nv-datagrid .checkbox-container input[type=checkbox][readonly]{opacity:0.5}nv-datagrid .checkbox-container .icon{pointer-events:none;position:absolute;top:0;left:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center}nv-datagrid .checkbox-container .icon svg{width:var(--form-checkbox-icon-size);height:var(--form-checkbox-icon-size);fill:none;stroke:currentcolor;stroke-width:var(--form-checkbox-icon-stroke);flex-shrink:0}";
3477
3477
  const NvDatagridStyle0 = nvDatagridCss;
3478
3478
 
3479
3479
  const NvDatagrid = class {