@ncino/web-components 15.5.0 → 15.7.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 (27) hide show
  1. package/dist/components/chip/chip.js +1 -1
  2. package/dist/components/chip/gator/chip.gator.js +9 -7
  3. package/dist/components/guided-nav/gator/guided-nav-step/guided-nav-step.gator.js +3 -3
  4. package/dist/components/input/gator/dropdown/input-dropdown.gator.js +42 -35
  5. package/dist/components/input/gator/input-phone/input-phone.gator.js +6 -5
  6. package/dist/components/list/gator/list/list.gator.js +2 -2
  7. package/dist/components/menu/base/gator/menu.gator.js +3 -3
  8. package/dist/components/menu/menu-item/gator/menu-item.gator.js +10 -4
  9. package/dist/components/menu/menu-item/menu-item.js +1 -1
  10. package/dist/components/popover/gator/popover.gator.js +2 -2
  11. package/dist/components/table/gator/__tests__/test-table-data.js +1 -1
  12. package/dist/components/table/gator/table-cells/table-cell-icon-button.gator.js +11 -8
  13. package/dist/components/table/gator/table.gator.js +62 -36
  14. package/dist/packages/web-components/src/components/input/gator/dropdown/input-dropdown.gator.scss.js +1 -1
  15. package/dist/packages/web-components/src/components/table/gator/table.gator.scss.js +1 -1
  16. package/dist/types/src/components/chip/chip.d.ts +5 -0
  17. package/dist/types/src/components/input/gator/dropdown/input-dropdown.gator.d.ts +56 -1
  18. package/dist/types/src/components/input/gator/input-phone/input-phone.gator.d.ts +11 -1
  19. package/dist/types/src/components/list/gator/list/list.gator.d.ts +1 -1
  20. package/dist/types/src/components/menu/base/gator/menu.gator.d.ts +4 -0
  21. package/dist/types/src/components/menu/menu-item/gator/menu-item.gator.d.ts +10 -1
  22. package/dist/types/src/components/menu/menu-item/menu-item.d.ts +14 -2
  23. package/dist/types/src/components/table/gator/__tests__/test-table-data.d.ts +17 -0
  24. package/dist/types/src/components/table/gator/table.gator.d.ts +6 -0
  25. package/dist/types/src/components/table/table-cell-config.d.ts +6 -0
  26. package/package.json +3 -3
  27. package/web-types.json +78 -22
@@ -71,7 +71,7 @@ export declare class NgcList extends NgcComponent {
71
71
  falseFocusFirstItem(): Element | undefined;
72
72
  falseFocusPreviousItem(): Element | undefined;
73
73
  falseFocusNextItem(): Element | undefined;
74
- selectFalseFocusedItem(): void;
74
+ selectFalseFocusedItem(): boolean;
75
75
  unselectAllListItems(): void;
76
76
  handleKeyUp(e: KeyboardEvent): void;
77
77
  get nodes(): Element[] | undefined;
@@ -17,9 +17,13 @@ export declare class NgcMenu extends NjcMenu {
17
17
  private _hidePopover;
18
18
  handleTriggerSlotChange(e: Event): void;
19
19
  private focusMenuItem;
20
+ private isNavigableMenuItem;
21
+ private getNavigableMenuItems;
20
22
  focusFirstMenuItem(): void;
21
23
  focusTriggerButton(): void;
22
24
  handleItemSlotChange(e: Event): void;
25
+ private handleMenuItemDisabledChange;
26
+ private syncMenuItemTabIndexes;
23
27
  handleMenuKeydown(e: KeyboardEvent): void;
24
28
  handleArrowDown(e: KeyboardEvent): void;
25
29
  handleArrowUp(e: KeyboardEvent): void;
@@ -1,11 +1,20 @@
1
1
  import { NjcMenuItem } from '../menu-item.ts';
2
+ /**
3
+ * @slot start - Leading content (e.g. ngc-icon or ngc-avatar). Preferred over deprecated `start-icon`.
4
+ * @slot end - Trailing content (e.g. ngc-icon or badge). Preferred over deprecated `end-icon`.
5
+ */
2
6
  export declare class NgcMenuItem extends NjcMenuItem {
7
+ private _startIconWarned;
8
+ private _endIconWarned;
3
9
  constructor();
4
10
  connectedCallback(): void;
11
+ updated(changedProperties: Map<string | number | symbol, unknown>): void;
12
+ private syncAriaDisabled;
13
+ private warnDeprecatedIconProps;
5
14
  render(): import('lit').TemplateResult<1>;
6
15
  focus(options?: FocusOptions): void;
7
16
  click(): void;
8
- handleKeydown(e: KeyboardEvent): void;
17
+ handleKeydown: (e: KeyboardEvent) => void;
9
18
  }
10
19
  declare global {
11
20
  interface HTMLElementTagNameMap {
@@ -6,12 +6,24 @@ export declare class NjcMenuItem extends LitElement {
6
6
  */
7
7
  value: string;
8
8
  /**
9
- * An icon displayed before the value text
9
+ * Optional secondary text below the label (forwarded to ngc-list-item)
10
+ * @type {string}
11
+ */
12
+ subtitle: string | null;
13
+ /**
14
+ * When true, the menu item is non-interactive and styled as disabled
15
+ * @type {boolean}
16
+ */
17
+ disabled: boolean;
18
+ /**
19
+ * @deprecated Use the `start` slot instead, e.g. `<ngc-icon slot="start" name="…">`.
20
+ * Declarative hosts (e.g. table `menuItems[].startIcon`) should stamp slot content when rendering.
10
21
  * @type {string}
11
22
  */
12
23
  startIcon: string;
13
24
  /**
14
- * An icon displayed after the value text
25
+ * @deprecated Use the `end` slot instead, e.g. `<ngc-icon slot="end" name="…">`.
26
+ * Declarative hosts (e.g. table `menuItems[].endIcon`) should stamp slot content when rendering.
15
27
  * @type {string}
16
28
  */
17
29
  endIcon: string;
@@ -73,3 +73,20 @@ export declare function getTestDataWithHeader(): ({
73
73
  account?: undefined;
74
74
  selected?: undefined;
75
75
  })[];
76
+ export declare function getSortableFilterableTestData(): ({
77
+ amount: string;
78
+ date: string;
79
+ business: string;
80
+ name: string;
81
+ type: string;
82
+ account: string;
83
+ selected: boolean;
84
+ } | {
85
+ amount: string;
86
+ date: string;
87
+ business: string;
88
+ name: string;
89
+ type: string;
90
+ account: string;
91
+ selected?: undefined;
92
+ })[];
@@ -25,13 +25,18 @@ export declare class NgcTable extends NjcTable {
25
25
  _hoveredHeaderColumnField: string | null;
26
26
  _pendingFilterValues: Record<string, string | string[]>;
27
27
  _filterSearchQuery: Record<string, string>;
28
+ private _visibleFilterChipCount;
29
+ private previousFilterOptionsScrollTop;
30
+ private _filterChipResizeObserver;
28
31
  protected updated(_changedProperties: PropertyValues): void;
32
+ disconnectedCallback(): void;
29
33
  render(): TemplateResult<1> | null;
30
34
  private getColumnCellStyle;
31
35
  private get _skeletonLoaderColumns();
32
36
  get tableElevatedClass(): "" | "gator-table-elevated";
33
37
  get showBulkControls(): boolean;
34
38
  renderWrapper(header: unknown, body: unknown): TemplateResult<1>;
39
+ private calculateFilterChipOverflow;
35
40
  /**
36
41
  * Content for `ngc-illustration`'s default actions slot (must be light-DOM children of the illustration).
37
42
  * Clear filters is rendered here when filters are active; otherwise the table's
@@ -62,6 +67,7 @@ export declare class NgcTable extends NjcTable {
62
67
  private getActiveFilterChips;
63
68
  private handleFilterChipDismiss;
64
69
  private handleClearAllFilters;
70
+ private onFilterOptionsScroll;
65
71
  private getTableBody;
66
72
  private getCategoryBody;
67
73
  private getTotalRow;
@@ -37,6 +37,8 @@ export type TableIconButtonMenuItem = {
37
37
  value?: string;
38
38
  startIcon?: string;
39
39
  endIcon?: string;
40
+ subtitle?: string;
41
+ disabled?: boolean;
40
42
  };
41
43
  export interface TableIconButtonCellConfig extends TableCellConfigBase {
42
44
  iconName: string;
@@ -48,6 +50,10 @@ export interface TableIconButtonCellConfig extends TableCellConfigBase {
48
50
  export type TableDropdownOption = {
49
51
  label: string;
50
52
  value: string | number;
53
+ startIcon?: string;
54
+ endIcon?: string;
55
+ subtitle?: string;
56
+ disabled?: boolean;
51
57
  };
52
58
  export interface TableInputDropdownCellConfig extends TableCellConfigBase {
53
59
  options?: TableDropdownOption[];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ncino/web-components",
3
3
  "author": "nCino",
4
- "version": "15.5.0",
4
+ "version": "15.7.0",
5
5
  "license": "(c) Copyright 2023 nCino, Inc., all rights reserved",
6
6
  "publishConfig": {
7
7
  "registry": "https://registry.npmjs.org/"
@@ -100,10 +100,10 @@
100
100
  "vite-plugin-static-copy": "^3.3.0",
101
101
  "vitest": "^4.1.10",
102
102
  "yaml-eslint-parser": "^2.1.0",
103
- "@ncino/styles": "15.5.0"
103
+ "@ncino/styles": "15.7.0"
104
104
  },
105
105
  "peerDependencies": {
106
- "@ncino/styles": "15.5.0"
106
+ "@ncino/styles": "15.7.0"
107
107
  },
108
108
  "bugs": {
109
109
  "url": "https://github.com/ncino/force-sdk-web-components/issues"
package/web-types.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@ncino/web-components",
4
- "version": "15.4.0",
4
+ "version": "15.6.1",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -159,6 +159,10 @@
159
159
  "name": "start-icon",
160
160
  "value": { "type": "String", "default": "''" }
161
161
  },
162
+ {
163
+ "name": "end-icon",
164
+ "value": { "type": "String", "default": "''" }
165
+ },
162
166
  {
163
167
  "name": "dismissible",
164
168
  "value": { "type": "boolean", "default": "false" }
@@ -193,6 +197,7 @@
193
197
  { "name": "size", "type": " | 'small'" },
194
198
  { "name": "hideBorder", "type": "boolean" },
195
199
  { "name": "startIcon", "type": "String" },
200
+ { "name": "endIcon", "type": "String" },
196
201
  { "name": "dismissible", "type": "boolean" },
197
202
  { "name": "ariaHidden", "type": "'true' | 'false'" },
198
203
  { "name": "dataTestid", "type": "string | undefined" },
@@ -2254,7 +2259,7 @@
2254
2259
  },
2255
2260
  {
2256
2261
  "name": "ngc-menu-item",
2257
- "description": "\n---\n\n\n### **Events:**\n - **menuitemclick**",
2262
+ "description": "\n---\n\n\n### **Events:**\n - **menuitemdisabledchange**\n- **menuitemclick**\n\n### **Slots:**\n - **start** - Leading content (e.g. ngc-icon or ngc-avatar). Preferred over deprecated `start-icon`.\n- **end** - Trailing content (e.g. ngc-icon or badge). Preferred over deprecated `end-icon`.",
2258
2263
  "doc-url": "",
2259
2264
  "attributes": [
2260
2265
  {
@@ -2262,37 +2267,64 @@
2262
2267
  "description": "The value and text displayed of the menu item",
2263
2268
  "value": { "type": "string", "default": "''" }
2264
2269
  },
2270
+ {
2271
+ "name": "subtitle",
2272
+ "description": "Optional secondary text below the label (forwarded to ngc-list-item)",
2273
+ "value": { "type": "string", "default": "null" }
2274
+ },
2275
+ {
2276
+ "name": "disabled",
2277
+ "description": "When true, the menu item is non-interactive and styled as disabled",
2278
+ "value": { "type": "boolean", "default": "false" }
2279
+ },
2265
2280
  {
2266
2281
  "name": "start-icon",
2267
- "description": "An icon displayed before the value text",
2268
2282
  "value": { "type": "string", "default": "''" }
2269
2283
  },
2270
2284
  {
2271
2285
  "name": "end-icon",
2272
- "description": "An icon displayed after the value text",
2273
2286
  "value": { "type": "string", "default": "''" }
2274
2287
  }
2275
2288
  ],
2276
- "events": [{ "name": "menuitemclick", "type": "CustomEvent" }],
2289
+ "slots": [
2290
+ {
2291
+ "name": "start",
2292
+ "description": "Leading content (e.g. ngc-icon or ngc-avatar). Preferred over deprecated `start-icon`."
2293
+ },
2294
+ {
2295
+ "name": "end",
2296
+ "description": "Trailing content (e.g. ngc-icon or badge). Preferred over deprecated `end-icon`."
2297
+ }
2298
+ ],
2299
+ "events": [
2300
+ { "name": "menuitemdisabledchange", "type": "CustomEvent" },
2301
+ { "name": "menuitemclick", "type": "CustomEvent" }
2302
+ ],
2277
2303
  "js": {
2278
2304
  "properties": [
2305
+ { "name": "handleKeydown" },
2279
2306
  {
2280
2307
  "name": "value",
2281
2308
  "description": "The value and text displayed of the menu item",
2282
2309
  "type": "string"
2283
2310
  },
2284
2311
  {
2285
- "name": "startIcon",
2286
- "description": "An icon displayed before the value text",
2312
+ "name": "subtitle",
2313
+ "description": "Optional secondary text below the label (forwarded to ngc-list-item)",
2287
2314
  "type": "string"
2288
2315
  },
2289
2316
  {
2290
- "name": "endIcon",
2291
- "description": "An icon displayed after the value text",
2292
- "type": "string"
2293
- }
2317
+ "name": "disabled",
2318
+ "description": "When true, the menu item is non-interactive and styled as disabled",
2319
+ "type": "boolean"
2320
+ },
2321
+ { "name": "startIcon", "type": "string" },
2322
+ { "name": "endIcon", "type": "string" }
2294
2323
  ],
2295
- "events": [{ "name": "menuitemclick", "type": "CustomEvent" }]
2324
+ "events": [
2325
+ { "name": "menuitemdisabledchange", "type": "CustomEvent" },
2326
+ { "name": "menuitemclick", "type": "CustomEvent" }
2327
+ ]
2296
2328
  }
2297
2329
  },
2298
2330
  {
@@ -4973,7 +5005,7 @@
4973
5005
  },
4974
5006
  {
4975
5007
  "name": "ngc-input-dropdown",
4976
- "description": "\n---\n\n\n### **Events:**\n - **input**\n- **change**",
5008
+ "description": "Dropdown / combobox. Options come from either:\n- the `options` / `data-type` props (data-driven), or\n- light-DOM `ngc-list-item` children (slotted). If any list-item children are present,\n they win and `options` / `data-type` are ignored.\n\nSlotted items must be direct children of `ngc-input-dropdown` (not wrapped in other elements).\n---\n\n\n### **Events:**\n - **input**\n- **change**\n\n### **Slots:**\n - **label** - Optional custom label\n- _default_ - Optional `ngc-list-item` children used as the listbox options (avatars, custom start/end, etc.)",
4977
5009
  "doc-url": "",
4978
5010
  "attributes": [
4979
5011
  {
@@ -5108,6 +5140,13 @@
5108
5140
  "value": { "type": "string | undefined", "default": "undefined" }
5109
5141
  }
5110
5142
  ],
5143
+ "slots": [
5144
+ { "name": "label", "description": "Optional custom label" },
5145
+ {
5146
+ "name": "",
5147
+ "description": "Optional `ngc-list-item` children used as the listbox options (avatars, custom start/end, etc.)"
5148
+ }
5149
+ ],
5111
5150
  "events": [
5112
5151
  { "name": "input", "type": "CustomEvent" },
5113
5152
  { "name": "change", "type": "CustomEvent" }
@@ -5152,6 +5191,11 @@
5152
5191
  { "name": "displayedValue" },
5153
5192
  { "name": "showPlaceholder" },
5154
5193
  { "name": "listboxMarkup" },
5194
+ {
5195
+ "name": "slottedListItems",
5196
+ "description": "Direct light-DOM `ngc-list-item` children (default slot). Used when composing rich\noptions (avatars, custom start/end) instead of the `options` array. Nested/wrapped\nlist items are not supported — place them as direct children of the dropdown.",
5197
+ "type": "NgcListItem[]"
5198
+ },
5155
5199
  { "name": "selectAllIcon" },
5156
5200
  { "name": "allSelected" },
5157
5201
  { "name": "listboxMessageMarkup" },
@@ -6347,14 +6391,22 @@
6347
6391
  "description": "The value and text displayed of the menu item",
6348
6392
  "value": { "type": "string", "default": "''" }
6349
6393
  },
6394
+ {
6395
+ "name": "subtitle",
6396
+ "description": "Optional secondary text below the label (forwarded to ngc-list-item)",
6397
+ "value": { "type": "string", "default": "null" }
6398
+ },
6399
+ {
6400
+ "name": "disabled",
6401
+ "description": "When true, the menu item is non-interactive and styled as disabled",
6402
+ "value": { "type": "boolean", "default": "false" }
6403
+ },
6350
6404
  {
6351
6405
  "name": "start-icon",
6352
- "description": "An icon displayed before the value text",
6353
6406
  "value": { "type": "string", "default": "''" }
6354
6407
  },
6355
6408
  {
6356
6409
  "name": "end-icon",
6357
- "description": "An icon displayed after the value text",
6358
6410
  "value": { "type": "string", "default": "''" }
6359
6411
  }
6360
6412
  ],
@@ -6368,15 +6420,17 @@
6368
6420
  "type": "string"
6369
6421
  },
6370
6422
  {
6371
- "name": "startIcon",
6372
- "description": "An icon displayed before the value text",
6423
+ "name": "subtitle",
6424
+ "description": "Optional secondary text below the label (forwarded to ngc-list-item)",
6373
6425
  "type": "string"
6374
6426
  },
6375
6427
  {
6376
- "name": "endIcon",
6377
- "description": "An icon displayed after the value text",
6378
- "type": "string"
6379
- }
6428
+ "name": "disabled",
6429
+ "description": "When true, the menu item is non-interactive and styled as disabled",
6430
+ "type": "boolean"
6431
+ },
6432
+ { "name": "startIcon", "type": "string" },
6433
+ { "name": "endIcon", "type": "string" }
6380
6434
  ],
6381
6435
  "events": [{ "name": "menuitemclick", "type": "CustomEvent" }]
6382
6436
  }
@@ -8178,7 +8232,7 @@
8178
8232
  },
8179
8233
  {
8180
8234
  "name": "ngc-table",
8181
- "description": "Gator data table.\n---\n\n\n### **Events:**\n - **selectall**\n- **sort**\n- **filter**\n- **rowselected**\n- **cellchange**\n- **cellclick**\n\n### **Slots:**\n - **bulk-controls** - Actions shown in the bulk selection toolbar when rows are selected.\n- **empty-state-actions** - Action buttons forwarded into `ngc-illustration`'s default actions slot when no filters are active (e.g. a primary \"Add\" CTA). Not rendered when filters are active; the built-in \"Clear filters\" button is shown in that slot instead.",
8235
+ "description": "Gator data table.\n---\n\n\n### **Events:**\n - **selectall**\n- **sort**\n- **filter**\n- **filteroptionsreachedbottom**\n- **rowselected**\n- **cellchange**\n- **cellclick**\n\n### **Slots:**\n - **bulk-controls** - Actions shown in the bulk selection toolbar when rows are selected.\n- **empty-state-actions** - Action buttons forwarded into `ngc-illustration`'s default actions slot when no filters are active (e.g. a primary \"Add\" CTA). Not rendered when filters are active; the built-in \"Clear filters\" button is shown in that slot instead.",
8182
8236
  "doc-url": "",
8183
8237
  "attributes": [
8184
8238
  {
@@ -8279,6 +8333,7 @@
8279
8333
  { "name": "selectall", "type": "CustomEvent" },
8280
8334
  { "name": "sort", "type": "CustomEvent" },
8281
8335
  { "name": "filter", "type": "CustomEvent" },
8336
+ { "name": "filteroptionsreachedbottom", "type": "CustomEvent" },
8282
8337
  { "name": "rowselected", "type": "CustomEvent" },
8283
8338
  { "name": "cellchange", "type": "CustomEvent" },
8284
8339
  { "name": "cellclick", "type": "CustomEvent" }
@@ -8348,6 +8403,7 @@
8348
8403
  { "name": "selectall", "type": "CustomEvent" },
8349
8404
  { "name": "sort", "type": "CustomEvent" },
8350
8405
  { "name": "filter", "type": "CustomEvent" },
8406
+ { "name": "filteroptionsreachedbottom", "type": "CustomEvent" },
8351
8407
  { "name": "rowselected", "type": "CustomEvent" },
8352
8408
  { "name": "cellchange", "type": "CustomEvent" },
8353
8409
  { "name": "cellclick", "type": "CustomEvent" }