@nysds/nys-backtotop 1.11.4 → 1.13.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.
@@ -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 * `<nys-backtotop>` renders a button that scrolls the page to the top.\n *\n * Features:\n * - Automatically appears after scrolling past 1.5 viewport heights\n * if the page is at least 4 screens tall.\n * - Adapts to mobile screens (renders as a circle button when narrow).\n * - Can be explicitly shown with the `visible` attribute.\n *\n * @fires nys-click - Fired when the button is clicked (scrolls page to top).\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 /**\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":";;;;;;;;AAgBO,MAAMA,IAAN,MAAMA,UAAqBC,EAAW;AAAA;AAAA;AAAA;AAAA;AAAA,EAgB3C,cAAc;AACZ,UAAA,GAd0B,KAAA,WAAW,SACK,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;AAhFEJ,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;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.11.4",
3
+ "version": "1.13.0",
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.11.4",
27
- "@nysds/nys-button": "^1.11.4"
26
+ "@nysds/nys-icon": "^1.13.0",
27
+ "@nysds/nys-button": "^1.13.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "lit": "^3.3.1",