@nysds/nys-backtotop 1.12.0 → 1.13.1

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.
@@ -7,6 +7,10 @@ var y = Object.defineProperty, n = (r, e, s, m) => {
7
7
  return t && y(e, s, t), t;
8
8
  };
9
9
  const l = class l extends h {
10
+ /**
11
+ * Lifecycle methods
12
+ * --------------------------------------------------------------------------
13
+ */
10
14
  constructor() {
11
15
  super(), this.position = "right", this.visible = !1, this.isMobile = !1, this.forceVisible = !1, this._handleScroll = this._handleScroll.bind(this), this._handleResize = this._handleResize.bind(this), this.mediaQuery = window.matchMedia("(max-width: 480px)");
12
16
  }
@@ -16,6 +20,10 @@ const l = class l extends h {
16
20
  disconnectedCallback() {
17
21
  window.removeEventListener("scroll", this._handleScroll), this.mediaQuery.removeEventListener("change", this._handleResize), super.disconnectedCallback();
18
22
  }
23
+ /**
24
+ * Functions
25
+ * --------------------------------------------------------------------------
26
+ */
19
27
  _handleScroll() {
20
28
  if (this.forceVisible) return;
21
29
  const e = window.innerHeight, s = document.documentElement.scrollHeight;
@@ -1 +1 @@
1
- {"version":3,"file":"nys-backtotop.js","sources":["../src/nys-backtotop.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\n// @ts-ignore: SCSS module imported via bundler as inline\nimport styles from \"./nys-backtotop.scss?inline\";\n\nexport class NysBacktotop extends LitElement {\n static styles = unsafeCSS(styles);\n\n @property({ type: String }) position = \"right\";\n @property({ type: Boolean, reflect: true }) visible = false;\n\n @state() private isMobile = false;\n @state() private forceVisible = false;\n\n private mediaQuery: MediaQueryList;\n\n constructor() {\n super();\n this._handleScroll = this._handleScroll.bind(this);\n this._handleResize = this._handleResize.bind(this);\n this.mediaQuery = window.matchMedia(\"(max-width: 480px)\");\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.forceVisible = this.hasAttribute(\"visible\"); // true only if passed in markup\n window.addEventListener(\"scroll\", this._handleScroll);\n this.mediaQuery.addEventListener(\"change\", this._handleResize);\n this._handleResize(); // Initialize\n }\n\n disconnectedCallback() {\n window.removeEventListener(\"scroll\", this._handleScroll);\n this.mediaQuery.removeEventListener(\"change\", this._handleResize);\n super.disconnectedCallback();\n }\n\n private _handleScroll() {\n // If visible was explicitly set by user, don't override it\n if (this.forceVisible) return;\n\n const screenHeight = window.innerHeight;\n const pageHeight = document.documentElement.scrollHeight;\n\n // Show only if total page height >= 4 screens and scrolled past 1.5 screens\n this.visible =\n pageHeight >= screenHeight * 4 && window.scrollY > screenHeight * 1.5;\n }\n\n private _scrollToTop() {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }\n\n private _handleResize() {\n this.isMobile = this.mediaQuery.matches;\n }\n\n render() {\n const classes = [\n \"nys-backtotop\",\n this.position,\n this.visible ? \"visible\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return html`<nys-button\n id=\"nys-backtotop\"\n prefixIcon=\"chevron_up\"\n variant=\"outline\"\n label=\"Back to top\"\n size=\"sm\"\n class=\"${classes}\"\n ?circle=${this.isMobile}\n @nys-click=${this._scrollToTop}\n ></nys-button>`;\n }\n}\n\nif (!customElements.get(\"nys-backtotop\")) {\n customElements.define(\"nys-backtotop\", NysBacktotop);\n}\n"],"names":["_NysBacktotop","LitElement","screenHeight","pageHeight","classes","html","unsafeCSS","styles","NysBacktotop","__decorateClass","property","state"],"mappings":";;;;;;;;AAKO,MAAMA,IAAN,MAAMA,UAAqBC,EAAW;AAAA,EAW3C,cAAc;AACZ,UAAA,GAT0B,KAAA,WAAW,SACK,KAAA,UAAU,IAE7C,KAAQ,WAAW,IACnB,KAAQ,eAAe,IAM9B,KAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI,GACjD,KAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI,GACjD,KAAK,aAAa,OAAO,WAAW,oBAAoB;AAAA,EAC1D;AAAA,EAEA,oBAAoB;AAClB,UAAM,kBAAA,GACN,KAAK,eAAe,KAAK,aAAa,SAAS,GAC/C,OAAO,iBAAiB,UAAU,KAAK,aAAa,GACpD,KAAK,WAAW,iBAAiB,UAAU,KAAK,aAAa,GAC7D,KAAK,cAAA;AAAA,EACP;AAAA,EAEA,uBAAuB;AACrB,WAAO,oBAAoB,UAAU,KAAK,aAAa,GACvD,KAAK,WAAW,oBAAoB,UAAU,KAAK,aAAa,GAChE,MAAM,qBAAA;AAAA,EACR;AAAA,EAEQ,gBAAgB;AAEtB,QAAI,KAAK,aAAc;AAEvB,UAAMC,IAAe,OAAO,aACtBC,IAAa,SAAS,gBAAgB;AAG5C,SAAK,UACHA,KAAcD,IAAe,KAAK,OAAO,UAAUA,IAAe;AAAA,EACtE;AAAA,EAEQ,eAAe;AACrB,WAAO,SAAS,EAAE,KAAK,GAAG,UAAU,UAAU;AAAA,EAChD;AAAA,EAEQ,gBAAgB;AACtB,SAAK,WAAW,KAAK,WAAW;AAAA,EAClC;AAAA,EAEA,SAAS;AACP,UAAME,IAAU;AAAA,MACd;AAAA,MACA,KAAK;AAAA,MACL,KAAK,UAAU,YAAY;AAAA,IAAA,EAE1B,OAAO,OAAO,EACd,KAAK,GAAG;AACX,WAAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAMID,CAAO;AAAA,gBACN,KAAK,QAAQ;AAAA,mBACV,KAAK,YAAY;AAAA;AAAA,EAElC;AACF;AAtEEJ,EAAO,SAASM,EAAUC,CAAM;AAD3B,IAAMC,IAANR;AAGuBS,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAHfF,EAGiB,WAAA,UAAA;AACgBC,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAJ/BF,EAIiC,WAAA,SAAA;AAE3BC,EAAA;AAAA,EAAhBE,EAAA;AAAM,GANIH,EAMM,WAAA,UAAA;AACAC,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAPIH,EAOM,WAAA,cAAA;AAkEd,eAAe,IAAI,eAAe,KACrC,eAAe,OAAO,iBAAiBA,CAAY;"}
1
+ {"version":3,"file":"nys-backtotop.js","sources":["../src/nys-backtotop.ts"],"sourcesContent":["import { LitElement, html, unsafeCSS } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\n// @ts-ignore: SCSS module imported via bundler as inline\nimport styles from \"./nys-backtotop.scss?inline\";\n\n/**\n * A floating \"Back to top\" button that appears after scrolling. Smooth-scrolls to page top when clicked.\n *\n * Auto-shows after scrolling 1.5 viewports on pages 4+ screens tall. Set `visible` to force display.\n * Renders as circle button on mobile. Position with `position` prop (`left` or `right`).\n *\n * @summary Floating back-to-top button with auto-show behavior and smooth scroll.\n * @element nys-backtotop\n *\n * @example Auto-appearing button\n * ```html\n * <nys-backtotop></nys-backtotop>\n * ```\n *\n * @example Always visible, left position\n * ```html\n * <nys-backtotop visible position=\"left\"></nys-backtotop>\n * ```\n */\nexport class NysBacktotop extends LitElement {\n static styles = unsafeCSS(styles);\n\n /** Horizontal position: `left` or `right`. */\n @property({ type: String }) position = \"right\";\n\n /** Force button visibility. Overrides auto-show scroll behavior. */\n @property({ type: Boolean, reflect: true }) visible = false;\n\n @state() private isMobile = false;\n @state() private forceVisible = false;\n\n private mediaQuery: MediaQueryList;\n\n /**\n * Lifecycle methods\n * --------------------------------------------------------------------------\n */\n\n constructor() {\n super();\n this._handleScroll = this._handleScroll.bind(this);\n this._handleResize = this._handleResize.bind(this);\n this.mediaQuery = window.matchMedia(\"(max-width: 480px)\");\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.forceVisible = this.hasAttribute(\"visible\"); // true only if passed in markup\n window.addEventListener(\"scroll\", this._handleScroll);\n this.mediaQuery.addEventListener(\"change\", this._handleResize);\n this._handleResize(); // Initialize\n }\n\n disconnectedCallback() {\n window.removeEventListener(\"scroll\", this._handleScroll);\n this.mediaQuery.removeEventListener(\"change\", this._handleResize);\n super.disconnectedCallback();\n }\n\n /**\n * Functions\n * --------------------------------------------------------------------------\n */\n\n private _handleScroll() {\n // If visible was explicitly set by user, don't override it\n if (this.forceVisible) return;\n\n const screenHeight = window.innerHeight;\n const pageHeight = document.documentElement.scrollHeight;\n\n // Show only if total page height >= 4 screens and scrolled past 1.5 screens\n this.visible =\n pageHeight >= screenHeight * 4 && window.scrollY > screenHeight * 1.5;\n }\n\n private _scrollToTop() {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }\n\n private _handleResize() {\n this.isMobile = this.mediaQuery.matches;\n }\n\n render() {\n const classes = [\n \"nys-backtotop\",\n this.position,\n this.visible ? \"visible\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \");\n return html`<nys-button\n id=\"nys-backtotop\"\n prefixIcon=\"chevron_up\"\n variant=\"outline\"\n label=\"Back to top\"\n size=\"sm\"\n class=\"${classes}\"\n ?circle=${this.isMobile}\n @nys-click=${this._scrollToTop}\n ></nys-button>`;\n }\n}\n\nif (!customElements.get(\"nys-backtotop\")) {\n customElements.define(\"nys-backtotop\", NysBacktotop);\n}\n"],"names":["_NysBacktotop","LitElement","screenHeight","pageHeight","classes","html","unsafeCSS","styles","NysBacktotop","__decorateClass","property","state"],"mappings":";;;;;;;;AAwBO,MAAMA,IAAN,MAAMA,UAAqBC,EAAW;AAAA;AAAA;AAAA;AAAA;AAAA,EAmB3C,cAAc;AACZ,UAAA,GAhB0B,KAAA,WAAW,SAGK,KAAA,UAAU,IAE7C,KAAQ,WAAW,IACnB,KAAQ,eAAe,IAW9B,KAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI,GACjD,KAAK,gBAAgB,KAAK,cAAc,KAAK,IAAI,GACjD,KAAK,aAAa,OAAO,WAAW,oBAAoB;AAAA,EAC1D;AAAA,EAEA,oBAAoB;AAClB,UAAM,kBAAA,GACN,KAAK,eAAe,KAAK,aAAa,SAAS,GAC/C,OAAO,iBAAiB,UAAU,KAAK,aAAa,GACpD,KAAK,WAAW,iBAAiB,UAAU,KAAK,aAAa,GAC7D,KAAK,cAAA;AAAA,EACP;AAAA,EAEA,uBAAuB;AACrB,WAAO,oBAAoB,UAAU,KAAK,aAAa,GACvD,KAAK,WAAW,oBAAoB,UAAU,KAAK,aAAa,GAChE,MAAM,qBAAA;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,gBAAgB;AAEtB,QAAI,KAAK,aAAc;AAEvB,UAAMC,IAAe,OAAO,aACtBC,IAAa,SAAS,gBAAgB;AAG5C,SAAK,UACHA,KAAcD,IAAe,KAAK,OAAO,UAAUA,IAAe;AAAA,EACtE;AAAA,EAEQ,eAAe;AACrB,WAAO,SAAS,EAAE,KAAK,GAAG,UAAU,UAAU;AAAA,EAChD;AAAA,EAEQ,gBAAgB;AACtB,SAAK,WAAW,KAAK,WAAW;AAAA,EAClC;AAAA,EAEA,SAAS;AACP,UAAME,IAAU;AAAA,MACd;AAAA,MACA,KAAK;AAAA,MACL,KAAK,UAAU,YAAY;AAAA,IAAA,EAE1B,OAAO,OAAO,EACd,KAAK,GAAG;AACX,WAAOC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAMID,CAAO;AAAA,gBACN,KAAK,QAAQ;AAAA,mBACV,KAAK,YAAY;AAAA;AAAA,EAElC;AACF;AAnFEJ,EAAO,SAASM,EAAUC,CAAM;AAD3B,IAAMC,IAANR;AAIuBS,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAJfF,EAIiB,WAAA,UAAA;AAGgBC,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAP/BF,EAOiC,WAAA,SAAA;AAE3BC,EAAA;AAAA,EAAhBE,EAAA;AAAM,GATIH,EASM,WAAA,UAAA;AACAC,EAAA;AAAA,EAAhBE,EAAA;AAAM,GAVIH,EAUM,WAAA,cAAA;AA4Ed,eAAe,IAAI,eAAe,KACrC,eAAe,OAAO,iBAAiBA,CAAY;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nysds/nys-backtotop",
3
- "version": "1.12.0",
3
+ "version": "1.13.1",
4
4
  "description": "The Back To Top component from the NYS Design System.",
5
5
  "module": "dist/nys-backtotop.js",
6
6
  "types": "dist/index.d.ts",
@@ -23,8 +23,8 @@
23
23
  "lit-analyze": "lit-analyzer '**/*.ts'"
24
24
  },
25
25
  "dependencies": {
26
- "@nysds/nys-icon": "^1.12.0",
27
- "@nysds/nys-button": "^1.12.0"
26
+ "@nysds/nys-icon": "^1.13.1",
27
+ "@nysds/nys-button": "^1.13.1"
28
28
  },
29
29
  "devDependencies": {
30
30
  "lit": "^3.3.1",