@nanoporetech-digital/components 5.11.2 → 5.11.3

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 (68) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/{form-control-f100407e.js → form-control-cae1e493.js} +2 -2
  3. package/dist/cjs/form-control-cae1e493.js.map +1 -0
  4. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js +2 -2
  5. package/dist/cjs/nano-global-nav-user-profile_3.cjs.entry.js.map +1 -1
  6. package/dist/cjs/nano-global-nav.cjs.entry.js +7 -7
  7. package/dist/cjs/nano-global-nav.cjs.entry.js.map +1 -1
  8. package/dist/cjs/nano-icon.cjs.entry.js +21 -6
  9. package/dist/cjs/nano-icon.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nano-input.cjs.entry.js +1 -1
  11. package/dist/cjs/{nano-table-927ce96a.js → nano-table-43f4377f.js} +2 -2
  12. package/dist/cjs/{nano-table-927ce96a.js.map → nano-table-43f4377f.js.map} +1 -1
  13. package/dist/cjs/nano-table.cjs.entry.js +1 -1
  14. package/dist/cjs/{table.worker-e77b2693.js → table.worker-399650a3.js} +2 -2
  15. package/dist/cjs/table.worker-399650a3.js.map +1 -0
  16. package/dist/collection/components/form-control/form-control.js +1 -1
  17. package/dist/collection/components/form-control/form-control.js.map +1 -1
  18. package/dist/collection/components/global-nav/global-nav-user-profile.js +1 -1
  19. package/dist/collection/components/global-nav/global-nav-user-profile.js.map +1 -1
  20. package/dist/collection/components/global-nav/global-nav.js +7 -7
  21. package/dist/collection/components/global-nav/global-nav.js.map +1 -1
  22. package/dist/collection/components/icon/icon.js +23 -6
  23. package/dist/collection/components/icon/icon.js.map +1 -1
  24. package/dist/components/form-control.js +1 -1
  25. package/dist/components/form-control.js.map +1 -1
  26. package/dist/components/global-nav-user-profile.js +1 -1
  27. package/dist/components/global-nav-user-profile.js.map +1 -1
  28. package/dist/components/icon.js +21 -6
  29. package/dist/components/icon.js.map +1 -1
  30. package/dist/components/nano-global-nav.js +7 -7
  31. package/dist/components/nano-global-nav.js.map +1 -1
  32. package/dist/esm/{form-control-881fa3af.js → form-control-8c2750f9.js} +2 -2
  33. package/dist/esm/form-control-8c2750f9.js.map +1 -0
  34. package/dist/esm/nano-global-nav-user-profile_3.entry.js +2 -2
  35. package/dist/esm/nano-global-nav-user-profile_3.entry.js.map +1 -1
  36. package/dist/esm/nano-global-nav.entry.js +7 -7
  37. package/dist/esm/nano-global-nav.entry.js.map +1 -1
  38. package/dist/esm/nano-icon.entry.js +21 -6
  39. package/dist/esm/nano-icon.entry.js.map +1 -1
  40. package/dist/esm/nano-input.entry.js +1 -1
  41. package/dist/esm/{nano-table-6eea76f2.js → nano-table-85d83eb2.js} +2 -2
  42. package/dist/esm/{nano-table-6eea76f2.js.map → nano-table-85d83eb2.js.map} +1 -1
  43. package/dist/esm/nano-table.entry.js +1 -1
  44. package/dist/esm/{table.worker-dcfbd52d.js → table.worker-c5463b23.js} +2 -2
  45. package/dist/esm/table.worker-c5463b23.js.map +1 -0
  46. package/dist/nano-components/{form-control-881fa3af.js → form-control-8c2750f9.js} +2 -2
  47. package/dist/nano-components/form-control-8c2750f9.js.map +1 -0
  48. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js +1 -1
  49. package/dist/nano-components/nano-global-nav-user-profile_3.entry.js.map +1 -1
  50. package/dist/nano-components/nano-global-nav.entry.js +1 -1
  51. package/dist/nano-components/nano-global-nav.entry.js.map +1 -1
  52. package/dist/nano-components/nano-icon.entry.js +1 -1
  53. package/dist/nano-components/nano-icon.entry.js.map +1 -1
  54. package/dist/nano-components/nano-input.entry.js +1 -1
  55. package/dist/nano-components/{nano-table-6eea76f2.js → nano-table-85d83eb2.js} +2 -2
  56. package/dist/nano-components/nano-table.entry.js +1 -1
  57. package/dist/nano-components/{table.worker-dcfbd52d.js → table.worker-c5463b23.js} +2 -2
  58. package/dist/types/components/icon/icon.d.ts +2 -1
  59. package/docs-json.json +1 -1
  60. package/hydrate/index.js +30 -15
  61. package/package.json +3 -3
  62. package/dist/cjs/form-control-f100407e.js.map +0 -1
  63. package/dist/cjs/table.worker-e77b2693.js.map +0 -1
  64. package/dist/esm/form-control-881fa3af.js.map +0 -1
  65. package/dist/esm/table.worker-dcfbd52d.js.map +0 -1
  66. package/dist/nano-components/form-control-881fa3af.js.map +0 -1
  67. /package/dist/nano-components/{nano-table-6eea76f2.js.map → nano-table-85d83eb2.js.map} +0 -0
  68. /package/dist/nano-components/{table.worker-dcfbd52d.js.map → table.worker-c5463b23.js.map} +0 -0
package/hydrate/index.js CHANGED
@@ -18085,7 +18085,7 @@ class GlobalNav {
18085
18085
  }, slot: "end", onClick: (e) => {
18086
18086
  this.searchValInternal = this.searchInput.value;
18087
18087
  this.onSearchSubmit(e);
18088
- } }, hAsync("nano-icon", { name: "light/search" })), hAsync("span", { class: {
18088
+ } }, hAsync("nano-icon", { name: "light/search", role: "img", ariaLabel: "Search now" })), hAsync("span", { class: {
18089
18089
  'search-icon': true,
18090
18090
  'search-icon--loader': true,
18091
18091
  'search-icon--show': this.searchLoading,
@@ -18114,13 +18114,13 @@ class GlobalNav {
18114
18114
  'has-promotion': this.hasPromotionSlot,
18115
18115
  'menu-full-screen': this.menuFullScreen,
18116
18116
  'secondary-open': !!this.secondaryMenuOpen,
18117
- }, "aria-expanded": this.modalOpen ? 'true' : 'false', ref: (div) => (this.menuDiv = div), part: "burger" }, hAsync("div", { class: "gn-menu_wrap", ref: (div) => (this.menuWrapDiv = div), tabindex: "-1", part: "burger-menu" }, hAsync("div", { class: "gn-menu_actions", part: "burger-actions-bar" }, hAsync("button", { class: "menu-btn icon-btn icon-btn", onMouseDown: this.onMenuBtnClick, onKeyDown: this.onMenuBtnKeyDown }, this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login && (hAsync("nano-icon", { name: "light/times", "aria-label": "close menu" })), this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.login && (hAsync("nano-icon", { name: "light/bars", "aria-label": "close menu" }))), this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [
18117
+ }, "aria-expanded": this.modalOpen ? 'true' : 'false', ref: (div) => (this.menuDiv = div), part: "burger" }, hAsync("div", { class: "gn-menu_wrap", ref: (div) => (this.menuWrapDiv = div), tabindex: "-1", part: "burger-menu" }, hAsync("div", { class: "gn-menu_actions", part: "burger-actions-bar" }, hAsync("button", { class: "menu-btn icon-btn icon-btn", onMouseDown: this.onMenuBtnClick, onKeyDown: this.onMenuBtnKeyDown }, this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login && (hAsync("nano-icon", { name: "light/times", "aria-label": "close menu", role: "img" })), this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.login && (hAsync("nano-icon", { name: "light/bars", "aria-label": "close menu", role: "img" }))), this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [
18118
18118
  !!this.iconSlotLen && hAsync("slot", { name: "icon" }),
18119
18119
  this.myAccData &&
18120
18120
  (!this.activeMyAccountSections ||
18121
18121
  this.activeMyAccountSections.includes('icons')) && [
18122
- this.msgUrl && (hAsync("a", { href: this.msgUrl, class: "icon-btn" }, hAsync("nano-icon", { name: "light/bell" }), this.msgCount > 0 && (hAsync("span", { class: "gn-menu_actions-counter" }, this.msgCount)))),
18123
- this.cartUrl && (hAsync("a", { href: this.cartUrl, class: "icon-btn" }, hAsync("nano-icon", { name: "light/shopping-cart" }), this.cartCount > 0 && (hAsync("span", { class: "gn-menu_actions-counter" }, this.cartCount)))),
18122
+ this.msgUrl && (hAsync("a", { href: this.msgUrl, class: "icon-btn" }, hAsync("nano-icon", { name: "light/bell", role: "img", ariaLabel: "Check notifications" }), this.msgCount > 0 && (hAsync("span", { class: "gn-menu_actions-counter" }, this.msgCount)))),
18123
+ this.cartUrl && (hAsync("a", { href: this.cartUrl, class: "icon-btn" }, hAsync("nano-icon", { name: "light/shopping-cart", role: "img", ariaLabel: "Go to cart" }), this.cartCount > 0 && (hAsync("span", { class: "gn-menu_actions-counter" }, this.cartCount)))),
18124
18124
  ],
18125
18125
  ], this.myAccData && this.myAccData.urls.login && (hAsync("a", { href: this.myAccData.urls.login + this.ssoRedirect, class: "login-btn" }, "Login / Register", ' ', hAsync("nano-icon", { name: "solid/chevron-right" })))), hAsync("div", { class: "content-wrap", ref: (div) => (this.menuContentDiv = div) }, hAsync("div", { class: "content", part: "burger-content" }, hAsync("nav", { class: "nav-links nav-links--main", role: "menu" }, hAsync("slot", { name: "overflow", onSlotchange: this.assessSlottedContent }), this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.main &&
18126
18126
  !!this.mainSlotLen && (hAsync("slot", { name: "main", onSlotchange: this.assessSlottedContent }))), (((!!this.aboutSlotLen || !!this.aboutNavItms.length) &&
@@ -18133,12 +18133,12 @@ class GlobalNav {
18133
18133
  })))),
18134
18134
  ((this.threshold < THRESHOLDLIMIT - 2 &&
18135
18135
  this.mainSlotLen >= 2) ||
18136
- this.overflowSlotLen >= 2) && (hAsync("nav", { class: "nav-links", "aria-label": "Different company site links" }, hAsync("nano-nav-item", { class: "nano-global-nav nano-global-nav-menu", closeOnBlur: false }, "Sites", hAsync("nano-icon", { slot: "icon-end", name: "solid/chevron-right" }), hAsync("div", { slot: "secondary" }, hAsync("div", { class: "content" }, hAsync("button", { class: "back-btn", onClick: this.subMenuClose }, hAsync("nano-icon", { slot: "icon-end", name: "solid/chevron-left", "aria-label": "go back" }), "Sites"), hAsync("div", { class: "content--sub" }, hAsync("slot", { name: "site", onSlotchange: this.assessSlottedContent }), this.siteNavItms.map((link) => {
18136
+ this.overflowSlotLen >= 2) && (hAsync("nav", { class: "nav-links", "aria-label": "Different company site links" }, hAsync("nano-nav-item", { class: "nano-global-nav nano-global-nav-menu", closeOnBlur: false }, "Sites", hAsync("nano-icon", { slot: "icon-end", name: "solid/chevron-right" }), hAsync("div", { slot: "secondary" }, hAsync("div", { class: "content" }, hAsync("button", { class: "back-btn", onClick: this.subMenuClose }, hAsync("nano-icon", { slot: "icon-end", name: "solid/chevron-left", "aria-label": "go back", role: "img" }), "Sites"), hAsync("div", { class: "content--sub" }, hAsync("slot", { name: "site", onSlotchange: this.assessSlottedContent }), this.siteNavItms.map((link) => {
18137
18137
  return (hAsync("nano-nav-item", { class: "nano-global-nav nano-global-nav-menu" }, hAsync("a", { href: link.address, target: link.target }, link.title)));
18138
18138
  }))))))),
18139
18139
  ]))), this.isLoggedIn &&
18140
18140
  this.threshold < THRESHOLDLIMIT - THRESHOLDBREAKS.login &&
18141
- (this.loggedInNavItms.length || this.hasLoggedinSlot) && (hAsync("nav", { class: "nav-links", "aria-label": "Your user account links" }, hAsync("nano-nav-item", { class: "nano-global-nav user-nav nano-global-nav-menu", closeOnBlur: false }, this.myAccountUser.name, hAsync("nano-icon", { slot: "icon-end", name: "solid/chevron-right" }), hAsync("div", { slot: "secondary" }, hAsync("div", { class: "content" }, hAsync("button", { class: "back-btn", onClick: this.subMenuClose }, hAsync("nano-icon", { slot: "icon-end", name: "solid/chevron-left", "aria-label": "go back" }), this.myAccountUser.name), !!((_a = this.myAccountUser) === null || _a === void 0 ? void 0 : _a.small_avatar_url) && (hAsync("nano-global-nav-user-profile", { myAccountUser: this.myAccountUser, userProfileUrl: this.userProfileUrl })), hAsync("div", { class: "content--sub" }, hAsync("slot", { name: "loggedin", onSlotchange: this.assessSlottedContent }), this.loggedInNavItms.map((link) => {
18141
+ (this.loggedInNavItms.length || this.hasLoggedinSlot) && (hAsync("nav", { class: "nav-links", "aria-label": "Your user account links" }, hAsync("nano-nav-item", { class: "nano-global-nav user-nav nano-global-nav-menu", closeOnBlur: false }, this.myAccountUser.name, hAsync("nano-icon", { slot: "icon-end", name: "solid/chevron-right" }), hAsync("div", { slot: "secondary" }, hAsync("div", { class: "content" }, hAsync("button", { class: "back-btn", onClick: this.subMenuClose }, hAsync("nano-icon", { slot: "icon-end", name: "solid/chevron-left", "aria-label": "go back", role: "img" }), this.myAccountUser.name), !!((_a = this.myAccountUser) === null || _a === void 0 ? void 0 : _a.small_avatar_url) && (hAsync("nano-global-nav-user-profile", { myAccountUser: this.myAccountUser, userProfileUrl: this.userProfileUrl })), hAsync("div", { class: "content--sub" }, hAsync("slot", { name: "loggedin", onSlotchange: this.assessSlottedContent }), this.loggedInNavItms.map((link) => {
18142
18142
  return (hAsync("nano-nav-item", { class: "nano-global-nav nano-global-nav-menu" }, hAsync("a", { href: link.address, target: link.target }, link.title)));
18143
18143
  }), hAsync("nano-nav-item", { class: "nano-global-nav nano-global-nav-menu" }, hAsync("a", { href: this.myAccData.urls.forgot_password +
18144
18144
  this.ssoRedirect }, "Change Password")))))))), hAsync("slot", { name: "promotion", onSlotchange: this.assessSlottedContent }), this.myAccData && this.myAccData.urls.logout && (hAsync("div", { class: "login-btn logout-btn" }, hAsync("a", { href: this.myAccData.urls.logout + this.ssoRedirect }, "Logout")))))), hAsync("div", { class: "sticker-trigger" }), hAsync("nano-sticker", { "auto-resize": "false", "break-point-max": "800", quietMode: { h: 600, w: 800 }, part: "sticker" }, hAsync("div", { class: "bars", part: "bars" }, hAsync("nav", { part: "main-bar", class: "main-bar", "aria-label": "Main site navigation", tabindex: "-1", ref: (div) => (this.mainBarDiv = div) }, (this.hasPromotionSlot ||
@@ -18167,7 +18167,7 @@ class GlobalNav {
18167
18167
  'icon-btn': true,
18168
18168
  'search-btn': true,
18169
18169
  'search-btn--open': this.searchBarShown,
18170
- }, "aria-controls": "global-nav-search-bar", "aria-expanded": this.searchBarShown ? 'true' : 'false', onClick: this.onSearchBtnClick, onKeyDown: this.onSearchBtnKeyDown }, hAsync("nano-icon", { name: "light/search" }))), this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [
18170
+ }, "aria-controls": "global-nav-search-bar", "aria-expanded": this.searchBarShown ? 'true' : 'false', onClick: this.onSearchBtnClick, onKeyDown: this.onSearchBtnKeyDown }, hAsync("nano-icon", { name: "light/search", role: "img", ariaLabel: "Do search" }))), this.threshold >= THRESHOLDLIMIT - THRESHOLDBREAKS.icon && [
18171
18171
  !!this.iconSlotLen && hAsync("slot", { name: "icon" }),
18172
18172
  this.myAccData &&
18173
18173
  (!this.activeMyAccountSections ||
@@ -18390,7 +18390,7 @@ class GlobalNavUserProfile {
18390
18390
  // Render output
18391
18391
  render() {
18392
18392
  var _a;
18393
- return (!!this.myAccountUser && (hAsync("a", { href: this.userProfileUrl, class: "user-profile" }, hAsync("div", { class: "left" }, hAsync("div", { class: "avatar-container" }, hAsync("img", { class: "avatar", src: (_a = this.myAccountUser) === null || _a === void 0 ? void 0 : _a.small_avatar_url, alt: "User Avatar", height: 75, width: 75 }), this.myAccountUser.is_nanopore_user && (hAsync("img", { class: "logo-small", src: getAssetPath(`../nano-assets/ont-wheel-light.svg`), alt: "Nanopore Logo" }))), hAsync("div", { class: "user-details" }, hAsync("span", { class: "name" }, this.myAccountUser.name), hAsync("span", { class: "bio" }, this.myAccountUser.job_title, " at ", this.myAccountUser.company))), hAsync("div", { class: "right" }, hAsync("div", { class: "chevron-right" }, hAsync("nano-icon", { slot: "icon-end", name: "light/chevron-right", "aria-label": "navigate to ..." }))))));
18393
+ return (!!this.myAccountUser && (hAsync("a", { href: this.userProfileUrl, class: "user-profile" }, hAsync("div", { class: "left" }, hAsync("div", { class: "avatar-container" }, hAsync("img", { class: "avatar", src: (_a = this.myAccountUser) === null || _a === void 0 ? void 0 : _a.small_avatar_url, alt: "User Avatar", height: 75, width: 75 }), this.myAccountUser.is_nanopore_user && (hAsync("img", { class: "logo-small", src: getAssetPath(`../nano-assets/ont-wheel-light.svg`), alt: "Nanopore Logo" }))), hAsync("div", { class: "user-details" }, hAsync("span", { class: "name" }, this.myAccountUser.name), hAsync("span", { class: "bio" }, this.myAccountUser.job_title, " at ", this.myAccountUser.company))), hAsync("div", { class: "right" }, hAsync("div", { class: "chevron-right" }, hAsync("nano-icon", { slot: "icon-end", name: "light/chevron-right" }))))));
18394
18394
  }
18395
18395
  static get cmpMeta() { return {
18396
18396
  "$flags$": 0,
@@ -19576,15 +19576,29 @@ class Icon {
19576
19576
  this.size = undefined;
19577
19577
  this.lazy = true;
19578
19578
  }
19579
+ udpateRole() {
19580
+ // force the role to br 'img' if the aria-label is explicitly set
19581
+ if (!!this.ariaLabel && this.role === 'presentation')
19582
+ this.role = 'img';
19583
+ else if (!this.ariaLabel && !this.role)
19584
+ this.role = 'presentation';
19585
+ }
19579
19586
  setAriaLabel() {
19580
- if (!this.ariaLabel && (!this.role || this.role !== 'presentation')) {
19581
- const label = getName(this.name, this.icon);
19582
- // user did not provide a label
19583
- // come up with the label based on the icon name
19584
- if (label) {
19585
- this.ariaLabel = label.split('/').slice(-1)[0].replace(/\-/g, ' ');
19587
+ if (!this.ariaLabel) {
19588
+ if (!this.role || this.role !== 'presentation') {
19589
+ // if the role is not 'presentation' and the user did not explicitly set a role,
19590
+ // let's try and derive one from the icon name
19591
+ const label = getName(this.name, this.icon);
19592
+ // user did not provide a label
19593
+ // come up with the label based on the icon name
19594
+ if (label) {
19595
+ this.ariaLabel = label.split('/').slice(-1)[0].replace(/\-/g, ' ');
19596
+ }
19586
19597
  }
19587
19598
  }
19599
+ else if (this.role === 'presentation') {
19600
+ this.ariaLabel = undefined;
19601
+ }
19588
19602
  }
19589
19603
  connectedCallback() {
19590
19604
  // purposely do not return the promise here because loading
@@ -19625,6 +19639,7 @@ class Icon {
19625
19639
  }
19626
19640
  get el() { return getElement(this); }
19627
19641
  static get watchers() { return {
19642
+ "ariaLabel": ["udpateRole"],
19628
19643
  "role": ["setAriaLabel"],
19629
19644
  "name": ["loadIcon"],
19630
19645
  "src": ["loadIcon"],
@@ -19991,7 +20006,7 @@ const FormControl = (props, children) => {
19991
20006
  startSlot),
19992
20007
  children,
19993
20008
  clearControl && !readonly && !disabled && (hAsync("button", { type: "button", class: "icon form-ctrl__clear-btn", tabindex: "-1", onTouchStart: onClearText, onMouseDown: onClearText },
19994
- hAsync("nano-icon", { name: "light/times" }))),
20009
+ hAsync("nano-icon", { name: "light/times", role: "img", ariaLabel: "Clear content" }))),
19995
20010
  hAsync("span", { class: "form-ctrl__slot-value-end", onClick: clickThrough },
19996
20011
  hAsync("slot", { name: "value-end" }),
19997
20012
  endValueSlot),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nanoporetech-digital/components",
3
- "version": "5.11.2",
3
+ "version": "5.11.3",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://git.oxfordnanolabs.local/Digital/nano-components"
@@ -41,7 +41,7 @@
41
41
  "prettier.test": "npm run prettier.base -- --check",
42
42
  "prettier.base": "prettier \"./{src,jest}/**/*.{ts,tsx,js,jsx}\"",
43
43
  "test": "run-p themes.prod test.all.base",
44
- "test.pi": "run-p themes.prod test.all.base",
44
+ "test.ci": "run-p themes.prod test.all.base",
45
45
  "test.spec": "stencil test --spec --watch --config='./stencil.config.test.ts'",
46
46
  "test.e2e": "stencil test --e2e --max-workers=1 --watch --config='./stencil.config.test.ts'",
47
47
  "test.spec.debug": "npx --node-arg=\"--inspect-brk\" stencil test --spec --config='./stencil.config.test.ts'",
@@ -129,7 +129,7 @@
129
129
  "nanopore",
130
130
  "digital"
131
131
  ],
132
- "gitHead": "f1fa3c2da1fcee77322b48e827519f980e1cd5af",
132
+ "gitHead": "0f1fea59255c587681f27a948faeb4c9534f27e7",
133
133
  "volta": {
134
134
  "node": "18.14.0"
135
135
  }
@@ -1 +0,0 @@
1
- {"file":"form-control-f100407e.js","mappings":"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","names":["h"],"sources":["./src/components/form-control/form-control.tsx"],"sourcesContent":["import { FunctionalComponent, h, VNode } from '@stencil/core';\nimport type { TextFieldTypes } from '../../interface';\n\ninterface FormControlWrapProps {\n rtl: boolean;\n floatLabel: boolean;\n labelId: string;\n label: string;\n moreId: string;\n helperEndId: string;\n type?: TextFieldTypes;\n showInlineError: boolean;\n hasHelperSlot: boolean;\n errorMessage: string;\n controlId: string;\n hasLabelSlot: boolean;\n hideLabel: boolean;\n placeholder: string;\n hasValue: boolean;\n showCharCount?: boolean;\n maxlength?: number;\n charCount?: number;\n hasHelperEndSlot?: boolean;\n}\n\ninterface FormControlProps {\n clearControl: boolean;\n onClearText?: () => void;\n readonly: boolean;\n disabled: boolean;\n control: HTMLNanoInputElement | HTMLNanoSelectElement;\n ref?: (elm?: HTMLElement) => void;\n endSlot?: VNode;\n endValueSlot?: VNode;\n startSlot?: VNode;\n}\n\ninterface LabelProps extends FormControlWrapProps {\n rtl: boolean;\n}\n\nconst renderLabel = ({\n label,\n hasLabelSlot,\n controlId,\n labelId,\n floatLabel,\n placeholder,\n hideLabel,\n hasValue,\n rtl,\n showCharCount,\n maxlength,\n charCount,\n}: LabelProps) => {\n if (!label && !hasLabelSlot) return;\n if (floatLabel) {\n return (\n <label class=\"form-ctrl__float-label\" htmlFor={controlId} id={labelId}>\n {label && label}\n {!label && hasLabelSlot && <slot name=\"label\" />}\n {showCharCount && (\n <span class=\"form-ctrl__label-charcount\">\n {maxlength ? ` ${charCount}/${maxlength}` : ` ${charCount}`}\n </span>\n )}\n </label>\n );\n } else {\n return (\n <label\n class={{ 'form-ctrl__label': true, 'visually-hide': hideLabel }}\n htmlFor={controlId}\n id={labelId}\n >\n <div class=\"form-ctrl__label-wrap\">\n {placeholder && hasValue && rtl && (\n <span class=\"form-ctrl__label-placeholder\">{placeholder} / </span>\n )}\n <span class=\"form-ctrl__labeltext\">\n {label && label}\n {!label && hasLabelSlot && <slot name=\"label\" />}\n </span>\n {placeholder && hasValue && !rtl && (\n <span class=\"form-ctrl__label-placeholder\"> / {placeholder}</span>\n )}\n </div>\n {showCharCount && (\n <span class=\"form-ctrl__label-charcount\">\n {maxlength\n ? maxlength - charCount + ' left'\n : charCount + ' characters'}\n </span>\n )}\n </label>\n );\n }\n};\n\nexport const FormControlWrap: FunctionalComponent<FormControlWrapProps> = (\n props: FormControlWrapProps,\n children\n) => {\n const {\n rtl,\n floatLabel,\n label,\n moreId,\n helperEndId,\n type,\n hasHelperSlot,\n showInlineError,\n errorMessage,\n hasHelperEndSlot,\n } = props;\n\n return (\n <div\n class={{\n 'has-label': label !== null && !floatLabel,\n 'has-float-label': label !== null && floatLabel,\n 'has-helper-end': hasHelperEndSlot,\n rtl,\n 'form-ctrl': true,\n }}\n >\n <div class=\"form-ctrl__wrapper\">\n {!floatLabel ? renderLabel({ ...props }) : ''}\n <div\n class={{\n 'form-ctrl__input': true,\n 'form-ctrl__textarea': type === 'textarea',\n }}\n >\n {floatLabel && renderLabel({ ...props, rtl })}\n {children}\n </div>\n {showInlineError || hasHelperSlot ? (\n <div class=\"form-ctrl__more\" id={moreId}>\n {!!showInlineError ? (\n <div class=\"form-ctrl__error\" aria-live=\"polite\">\n {errorMessage}\n </div>\n ) : (\n ''\n )}\n <div class=\"form-ctrl__helper\">\n <slot name=\"helper\" />\n </div>\n </div>\n ) : (\n ''\n )}\n </div>\n {hasHelperEndSlot ? (\n <div class=\"form-ctrl__helper-end\" id={helperEndId}>\n <slot name=\"helper-end\" />\n </div>\n ) : (\n ''\n )}\n </div>\n );\n};\n\nexport const FormControl: FunctionalComponent<FormControlProps> = (\n props: FormControlProps,\n children\n) => {\n const {\n clearControl,\n onClearText,\n readonly,\n disabled,\n control,\n ref,\n endSlot,\n endValueSlot,\n startSlot,\n } = props;\n const clickThrough = () => {\n control.setFocus();\n };\n\n return (\n <div\n class=\"form-ctrl__input-wrap\"\n ref={(el) => {\n if (ref) ref(el);\n }}\n >\n <span class=\"form-ctrl__slot-start\">\n <slot name=\"start\" />\n {startSlot}\n </span>\n {children}\n {clearControl && !readonly && !disabled && (\n <button\n type=\"button\"\n class=\"icon form-ctrl__clear-btn\"\n tabindex=\"-1\"\n onTouchStart={onClearText}\n onMouseDown={onClearText}\n >\n <nano-icon name=\"light/times\"></nano-icon>\n </button>\n )}\n <span class=\"form-ctrl__slot-value-end\" onClick={clickThrough}>\n <slot name=\"value-end\" />\n {endValueSlot}\n </span>\n <span class=\"form-ctrl__slot-end\">\n <slot name=\"end\" />\n {endSlot}\n </span>\n </div>\n );\n};\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"table.worker-e77b2693.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1 +0,0 @@
1
- {"file":"form-control-881fa3af.js","mappings":"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","names":[],"sources":["./src/components/form-control/form-control.tsx"],"sourcesContent":["import { FunctionalComponent, h, VNode } from '@stencil/core';\nimport type { TextFieldTypes } from '../../interface';\n\ninterface FormControlWrapProps {\n rtl: boolean;\n floatLabel: boolean;\n labelId: string;\n label: string;\n moreId: string;\n helperEndId: string;\n type?: TextFieldTypes;\n showInlineError: boolean;\n hasHelperSlot: boolean;\n errorMessage: string;\n controlId: string;\n hasLabelSlot: boolean;\n hideLabel: boolean;\n placeholder: string;\n hasValue: boolean;\n showCharCount?: boolean;\n maxlength?: number;\n charCount?: number;\n hasHelperEndSlot?: boolean;\n}\n\ninterface FormControlProps {\n clearControl: boolean;\n onClearText?: () => void;\n readonly: boolean;\n disabled: boolean;\n control: HTMLNanoInputElement | HTMLNanoSelectElement;\n ref?: (elm?: HTMLElement) => void;\n endSlot?: VNode;\n endValueSlot?: VNode;\n startSlot?: VNode;\n}\n\ninterface LabelProps extends FormControlWrapProps {\n rtl: boolean;\n}\n\nconst renderLabel = ({\n label,\n hasLabelSlot,\n controlId,\n labelId,\n floatLabel,\n placeholder,\n hideLabel,\n hasValue,\n rtl,\n showCharCount,\n maxlength,\n charCount,\n}: LabelProps) => {\n if (!label && !hasLabelSlot) return;\n if (floatLabel) {\n return (\n <label class=\"form-ctrl__float-label\" htmlFor={controlId} id={labelId}>\n {label && label}\n {!label && hasLabelSlot && <slot name=\"label\" />}\n {showCharCount && (\n <span class=\"form-ctrl__label-charcount\">\n {maxlength ? ` ${charCount}/${maxlength}` : ` ${charCount}`}\n </span>\n )}\n </label>\n );\n } else {\n return (\n <label\n class={{ 'form-ctrl__label': true, 'visually-hide': hideLabel }}\n htmlFor={controlId}\n id={labelId}\n >\n <div class=\"form-ctrl__label-wrap\">\n {placeholder && hasValue && rtl && (\n <span class=\"form-ctrl__label-placeholder\">{placeholder} / </span>\n )}\n <span class=\"form-ctrl__labeltext\">\n {label && label}\n {!label && hasLabelSlot && <slot name=\"label\" />}\n </span>\n {placeholder && hasValue && !rtl && (\n <span class=\"form-ctrl__label-placeholder\"> / {placeholder}</span>\n )}\n </div>\n {showCharCount && (\n <span class=\"form-ctrl__label-charcount\">\n {maxlength\n ? maxlength - charCount + ' left'\n : charCount + ' characters'}\n </span>\n )}\n </label>\n );\n }\n};\n\nexport const FormControlWrap: FunctionalComponent<FormControlWrapProps> = (\n props: FormControlWrapProps,\n children\n) => {\n const {\n rtl,\n floatLabel,\n label,\n moreId,\n helperEndId,\n type,\n hasHelperSlot,\n showInlineError,\n errorMessage,\n hasHelperEndSlot,\n } = props;\n\n return (\n <div\n class={{\n 'has-label': label !== null && !floatLabel,\n 'has-float-label': label !== null && floatLabel,\n 'has-helper-end': hasHelperEndSlot,\n rtl,\n 'form-ctrl': true,\n }}\n >\n <div class=\"form-ctrl__wrapper\">\n {!floatLabel ? renderLabel({ ...props }) : ''}\n <div\n class={{\n 'form-ctrl__input': true,\n 'form-ctrl__textarea': type === 'textarea',\n }}\n >\n {floatLabel && renderLabel({ ...props, rtl })}\n {children}\n </div>\n {showInlineError || hasHelperSlot ? (\n <div class=\"form-ctrl__more\" id={moreId}>\n {!!showInlineError ? (\n <div class=\"form-ctrl__error\" aria-live=\"polite\">\n {errorMessage}\n </div>\n ) : (\n ''\n )}\n <div class=\"form-ctrl__helper\">\n <slot name=\"helper\" />\n </div>\n </div>\n ) : (\n ''\n )}\n </div>\n {hasHelperEndSlot ? (\n <div class=\"form-ctrl__helper-end\" id={helperEndId}>\n <slot name=\"helper-end\" />\n </div>\n ) : (\n ''\n )}\n </div>\n );\n};\n\nexport const FormControl: FunctionalComponent<FormControlProps> = (\n props: FormControlProps,\n children\n) => {\n const {\n clearControl,\n onClearText,\n readonly,\n disabled,\n control,\n ref,\n endSlot,\n endValueSlot,\n startSlot,\n } = props;\n const clickThrough = () => {\n control.setFocus();\n };\n\n return (\n <div\n class=\"form-ctrl__input-wrap\"\n ref={(el) => {\n if (ref) ref(el);\n }}\n >\n <span class=\"form-ctrl__slot-start\">\n <slot name=\"start\" />\n {startSlot}\n </span>\n {children}\n {clearControl && !readonly && !disabled && (\n <button\n type=\"button\"\n class=\"icon form-ctrl__clear-btn\"\n tabindex=\"-1\"\n onTouchStart={onClearText}\n onMouseDown={onClearText}\n >\n <nano-icon name=\"light/times\"></nano-icon>\n </button>\n )}\n <span class=\"form-ctrl__slot-value-end\" onClick={clickThrough}>\n <slot name=\"value-end\" />\n {endValueSlot}\n </span>\n <span class=\"form-ctrl__slot-end\">\n <slot name=\"end\" />\n {endSlot}\n </span>\n </div>\n );\n};\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"table.worker-dcfbd52d.js","mappings":";;;;;;;;;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1 +0,0 @@
1
- {"version":3,"names":["renderLabel","label","hasLabelSlot","controlId","labelId","floatLabel","placeholder","hideLabel","hasValue","rtl","showCharCount","maxlength","charCount","h","class","htmlFor","id","name","FormControlWrap","props","children","moreId","helperEndId","type","hasHelperSlot","showInlineError","errorMessage","hasHelperEndSlot","Object","assign","FormControl","clearControl","onClearText","readonly","disabled","control","ref","endSlot","endValueSlot","startSlot","clickThrough","setFocus","el","tabindex","onTouchStart","onMouseDown","onClick"],"sources":["./src/components/form-control/form-control.tsx"],"sourcesContent":["import { FunctionalComponent, h, VNode } from '@stencil/core';\nimport type { TextFieldTypes } from '../../interface';\n\ninterface FormControlWrapProps {\n rtl: boolean;\n floatLabel: boolean;\n labelId: string;\n label: string;\n moreId: string;\n helperEndId: string;\n type?: TextFieldTypes;\n showInlineError: boolean;\n hasHelperSlot: boolean;\n errorMessage: string;\n controlId: string;\n hasLabelSlot: boolean;\n hideLabel: boolean;\n placeholder: string;\n hasValue: boolean;\n showCharCount?: boolean;\n maxlength?: number;\n charCount?: number;\n hasHelperEndSlot?: boolean;\n}\n\ninterface FormControlProps {\n clearControl: boolean;\n onClearText?: () => void;\n readonly: boolean;\n disabled: boolean;\n control: HTMLNanoInputElement | HTMLNanoSelectElement;\n ref?: (elm?: HTMLElement) => void;\n endSlot?: VNode;\n endValueSlot?: VNode;\n startSlot?: VNode;\n}\n\ninterface LabelProps extends FormControlWrapProps {\n rtl: boolean;\n}\n\nconst renderLabel = ({\n label,\n hasLabelSlot,\n controlId,\n labelId,\n floatLabel,\n placeholder,\n hideLabel,\n hasValue,\n rtl,\n showCharCount,\n maxlength,\n charCount,\n}: LabelProps) => {\n if (!label && !hasLabelSlot) return;\n if (floatLabel) {\n return (\n <label class=\"form-ctrl__float-label\" htmlFor={controlId} id={labelId}>\n {label && label}\n {!label && hasLabelSlot && <slot name=\"label\" />}\n {showCharCount && (\n <span class=\"form-ctrl__label-charcount\">\n {maxlength ? ` ${charCount}/${maxlength}` : ` ${charCount}`}\n </span>\n )}\n </label>\n );\n } else {\n return (\n <label\n class={{ 'form-ctrl__label': true, 'visually-hide': hideLabel }}\n htmlFor={controlId}\n id={labelId}\n >\n <div class=\"form-ctrl__label-wrap\">\n {placeholder && hasValue && rtl && (\n <span class=\"form-ctrl__label-placeholder\">{placeholder} / </span>\n )}\n <span class=\"form-ctrl__labeltext\">\n {label && label}\n {!label && hasLabelSlot && <slot name=\"label\" />}\n </span>\n {placeholder && hasValue && !rtl && (\n <span class=\"form-ctrl__label-placeholder\"> / {placeholder}</span>\n )}\n </div>\n {showCharCount && (\n <span class=\"form-ctrl__label-charcount\">\n {maxlength\n ? maxlength - charCount + ' left'\n : charCount + ' characters'}\n </span>\n )}\n </label>\n );\n }\n};\n\nexport const FormControlWrap: FunctionalComponent<FormControlWrapProps> = (\n props: FormControlWrapProps,\n children\n) => {\n const {\n rtl,\n floatLabel,\n label,\n moreId,\n helperEndId,\n type,\n hasHelperSlot,\n showInlineError,\n errorMessage,\n hasHelperEndSlot,\n } = props;\n\n return (\n <div\n class={{\n 'has-label': label !== null && !floatLabel,\n 'has-float-label': label !== null && floatLabel,\n 'has-helper-end': hasHelperEndSlot,\n rtl,\n 'form-ctrl': true,\n }}\n >\n <div class=\"form-ctrl__wrapper\">\n {!floatLabel ? renderLabel({ ...props }) : ''}\n <div\n class={{\n 'form-ctrl__input': true,\n 'form-ctrl__textarea': type === 'textarea',\n }}\n >\n {floatLabel && renderLabel({ ...props, rtl })}\n {children}\n </div>\n {showInlineError || hasHelperSlot ? (\n <div class=\"form-ctrl__more\" id={moreId}>\n {!!showInlineError ? (\n <div class=\"form-ctrl__error\" aria-live=\"polite\">\n {errorMessage}\n </div>\n ) : (\n ''\n )}\n <div class=\"form-ctrl__helper\">\n <slot name=\"helper\" />\n </div>\n </div>\n ) : (\n ''\n )}\n </div>\n {hasHelperEndSlot ? (\n <div class=\"form-ctrl__helper-end\" id={helperEndId}>\n <slot name=\"helper-end\" />\n </div>\n ) : (\n ''\n )}\n </div>\n );\n};\n\nexport const FormControl: FunctionalComponent<FormControlProps> = (\n props: FormControlProps,\n children\n) => {\n const {\n clearControl,\n onClearText,\n readonly,\n disabled,\n control,\n ref,\n endSlot,\n endValueSlot,\n startSlot,\n } = props;\n const clickThrough = () => {\n control.setFocus();\n };\n\n return (\n <div\n class=\"form-ctrl__input-wrap\"\n ref={(el) => {\n if (ref) ref(el);\n }}\n >\n <span class=\"form-ctrl__slot-start\">\n <slot name=\"start\" />\n {startSlot}\n </span>\n {children}\n {clearControl && !readonly && !disabled && (\n <button\n type=\"button\"\n class=\"icon form-ctrl__clear-btn\"\n tabindex=\"-1\"\n onTouchStart={onClearText}\n onMouseDown={onClearText}\n >\n <nano-icon name=\"light/times\"></nano-icon>\n </button>\n )}\n <span class=\"form-ctrl__slot-value-end\" onClick={clickThrough}>\n <slot name=\"value-end\" />\n {endValueSlot}\n </span>\n <span class=\"form-ctrl__slot-end\">\n <slot name=\"end\" />\n {endSlot}\n </span>\n </div>\n );\n};\n"],"mappings":";;;wCAyCA,MAAMA,EAAc,EAClBC,QACAC,eACAC,YACAC,UACAC,aACAC,cACAC,YACAC,WACAC,MACAC,gBACAC,YACAC,gBAEA,IAAKX,IAAUC,EAAc,OAC7B,GAAIG,EAAY,CACd,OACEQ,EAAA,SAAOC,MAAM,yBAAyBC,QAASZ,EAAWa,GAAIZ,GAC3DH,GAASA,GACRA,GAASC,GAAgBW,EAAA,QAAMI,KAAK,UACrCP,GACCG,EAAA,QAAMC,MAAM,8BACTH,EAAY,IAAIC,KAAaD,IAAc,IAAIC,K,KAKnD,CACL,OACEC,EAAA,SACEC,MAAO,CAAE,mBAAoB,KAAM,gBAAiBP,GACpDQ,QAASZ,EACTa,GAAIZ,GAEJS,EAAA,OAAKC,MAAM,yBACRR,GAAeE,GAAYC,GAC1BI,EAAA,QAAMC,MAAM,gCAAgCR,E,OAE9CO,EAAA,QAAMC,MAAM,wBACTb,GAASA,GACRA,GAASC,GAAgBW,EAAA,QAAMI,KAAK,WAEvCX,GAAeE,IAAaC,GAC3BI,EAAA,QAAMC,MAAM,gC,MAAmCR,IAGlDI,GACCG,EAAA,QAAMC,MAAM,8BACTH,EACGA,EAAYC,EAAY,QACxBA,EAAY,e,SAQfM,EAA6D,CACxEC,EACAC,KAEA,MAAMX,IACJA,EAAGJ,WACHA,EAAUJ,MACVA,EAAKoB,OACLA,EAAMC,YACNA,EAAWC,KACXA,EAAIC,cACJA,EAAaC,gBACbA,EAAeC,aACfA,EAAYC,iBACZA,GACER,EAEJ,OACEN,EAAA,OACEC,MAAO,CACL,YAAab,IAAU,OAASI,EAChC,kBAAmBJ,IAAU,MAAQI,EACrC,iBAAkBsB,EAClBlB,MACA,YAAa,OAGfI,EAAA,OAAKC,MAAM,uBACPT,EAAaL,EAAW4B,OAAAC,OAAA,GAAMV,IAAW,GAC3CN,EAAA,OACEC,MAAO,CACL,mBAAoB,KACpB,sBAAuBS,IAAS,aAGjClB,GAAcL,EAAW4B,OAAAC,OAAAD,OAAAC,OAAA,GAAMV,GAAK,CAAEV,SACtCW,GAEFK,GAAmBD,EAClBX,EAAA,OAAKC,MAAM,kBAAkBE,GAAIK,KAC5BI,EACDZ,EAAA,OAAKC,MAAM,mBAAkB,YAAW,UACrCY,GACG,GAIRb,EAAA,OAAKC,MAAM,qBACTD,EAAA,QAAMI,KAAK,aAET,IAKTU,EACCd,EAAA,OAAKC,MAAM,wBAAwBE,GAAIM,GACrCT,EAAA,QAAMI,KAAK,gBACP,GAIJ,E,MAIGa,EAAqD,CAChEX,EACAC,KAEA,MAAMW,aACJA,EAAYC,YACZA,EAAWC,SACXA,EAAQC,SACRA,EAAQC,QACRA,EAAOC,IACPA,EAAGC,QACHA,EAAOC,aACPA,EAAYC,UACZA,GACEpB,EACJ,MAAMqB,EAAe,KACnBL,EAAQM,UAAU,EAGpB,OACE5B,EAAA,OACEC,MAAM,wBACNsB,IAAMM,IACJ,GAAIN,EAAKA,EAAIM,EAAG,GAGlB7B,EAAA,QAAMC,MAAM,yBACVD,EAAA,QAAMI,KAAK,UACVsB,GAEFnB,EACAW,IAAiBE,IAAaC,GAC7BrB,EAAA,UACEU,KAAK,SACLT,MAAM,4BACN6B,SAAS,KACTC,aAAcZ,EACda,YAAab,GAEbnB,EAAA,aAAWI,KAAK,iBAGpBJ,EAAA,QAAMC,MAAM,4BAA4BgC,QAASN,GAC/C3B,EAAA,QAAMI,KAAK,cACVqB,GAEHzB,EAAA,QAAMC,MAAM,uBACVD,EAAA,QAAMI,KAAK,QACVoB,GAEC,S"}