@proximus/lavender-container 2.0.0-alpha.1 → 2.0.0-alpha.100

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.
@@ -1,11 +1,12 @@
1
- import { PxElement } from '@proximus/lavender-common';
2
- declare const anchorValues: readonly ["anchor-right", "anchor-left", "anchor-full"];
3
- export type AnchorValue = (typeof anchorValues)[number];
4
- export declare class Container extends PxElement<HTMLDivElement> {
1
+ import { WithExtraAttributes } from '@proximus/lavender-common';
2
+ export declare const anchorSpacingValues: string[];
3
+ export declare const subgridRowsValues: string[];
4
+ export declare class Container extends WithExtraAttributes {
5
5
  static nativeName: string;
6
6
  private template;
7
7
  private _bgObserver;
8
8
  private _isInViewport;
9
+ private contentObserver;
9
10
  constructor();
10
11
  static get observedAttributes(): string[];
11
12
  connectedCallback(): void;
@@ -23,6 +24,11 @@ export declare class Container extends PxElement<HTMLDivElement> {
23
24
  breakpoint: string;
24
25
  };
25
26
  updateAnchorOffset(oldValue: string, newValue: string, attrValue: string[]): void;
27
+ addAnchorClass(): void;
28
+ updateAnchorSpacing(oldValue: string, newValue: string, attrValue: string[]): void;
29
+ updateSubgridRows(attrName: string, oldValue: string, newValue: string, attrValues: string[]): void;
30
+ get $el(): HTMLElement;
31
+ get $slotAnchor(): HTMLSlotElement;
26
32
  get padding(): string;
27
33
  set padding(value: string);
28
34
  get paddingBlock(): string;
@@ -133,7 +139,18 @@ export declare class Container extends PxElement<HTMLDivElement> {
133
139
  set boxShadow(value: string);
134
140
  get anchorOffset(): string;
135
141
  set anchorOffset(value: string);
136
- get inverted(): string;
137
- set inverted(value: string);
142
+ get anchorSpacing(): string;
143
+ set anchorSpacing(value: string);
144
+ get inverted(): boolean;
145
+ set inverted(value: boolean);
146
+ get subgridRows(): string;
147
+ set subgridRows(value: string);
148
+ get subgridGap(): string;
149
+ set subgridGap(value: string);
150
+ get subgridGapMobile(): string;
151
+ set subgridGapMobile(value: string);
152
+ get subgridGapTablet(): string;
153
+ set subgridGapTablet(value: string);
154
+ get subgridGapLaptop(): string;
155
+ set subgridGapLaptop(value: string);
138
156
  }
139
- export {};
package/dist/index.es.js CHANGED
@@ -1,61 +1,87 @@
1
- import { PxElement as c, cssTokenBreakpoints as a, paddingValues as d, boxShadowValues as h, backgroundSizeValues as k, noBorderRadiusValues as m, borderRadiusValues as f, borderSideValues as v, borderValues as A, gradientValues as y, backgroundColorValues as x, borderColorValues as $, checkName as B } from "@proximus/lavender-common";
2
- const L = ':host{display:block}.container{font-family:var(--px-font-family);background-color:var(--background-color);background-image:var(--background-image);background:var(--background-gradient);border-radius:var(--px-radius-main);box-sizing:border-box;height:100%}:host([inverted]) .container{background-color:var(--background-color-inverted);color:var(--px-color-text-neutral-inverted)}.border-none{border:none}.border-s{border:var(--px-size-border-s) solid var(--border-color)}.border-m{border:var(--px-size-border-m) solid var(--border-color)}.border-l{border:var(--px-size-border-l) solid var(--border-color)}.border-side-top{border-bottom-style:none;border-right-style:none;border-left-style:none}.border-side-right{border-top-style:none;border-bottom-style:none;border-left-style:none}.border-side-bottom{border-top-style:none;border-right-style:none;border-left-style:none}.border-side-left{border-top-style:none;border-right-style:none;border-bottom-style:none}.border-side-block{border-inline-style:none}.border-side-inline{border-block-style:none}:host([inverted]) .border-s,:host([inverted]) .border-m,:host([inverted]) .border-l{border-color:var(--border-color-inverted)}.border-radius-main{border-radius:var(--px-radius-main)}.border-radius-pill{border-radius:var(--px-radius-pill)}.no-border-radius-top{border-top-left-radius:var(--px-radius-none);border-top-right-radius:var(--px-radius-none)}.no-border-radius-right{border-top-right-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-bottom{border-bottom-left-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-left{border-top-left-radius:var(--px-radius-none);border-bottom-left-radius:var(--px-radius-none)}.no-border-radius-all,.border-radius-none{border-radius:var(--px-radius-none)}.bgimg{background-repeat:no-repeat}.background-size-cover{background-size:cover;background-position:center center}.background-size-contain{background-size:contain}.box-shadow-none{box-shadow:none}.box-shadow-s{box-shadow:0 1px 2px #2525251f}.box-shadow-m{box-shadow:0 4px 6px -1px #25252514}.box-shadow-l{box-shadow:0 10px 15px -3px #25252514}.box-shadow-xl{box-shadow:0 20px 25px -5px #25252514}.anchored{position:relative}::slotted([slot="anchor-right"]),::slotted([slot="anchor-left"]),::slotted([slot="anchor-full"]){position:absolute;top:0}::slotted([slot="anchor-right"]),::slotted([slot="anchor-left"]){transform:translateY(-50%);z-index:3}::slotted([slot="anchor-right"]){right:var( --container-anchor-offset--mobile, var( --container-padding-right, var(--container-padding-inline, var(--container-padding)) ) )}::slotted([slot="anchor-left"]){left:var( --container-anchor-offset--mobile, var( --container-padding-left, var(--container-padding-inline, var(--container-padding)) ) )}::slotted([slot="anchor-full"]){transform:translateY(-100%);right:0;left:0;text-align:center;z-index:2}::slotted(px-vstack:only-of-type),::slotted(px-hstack:only-of-type),::slotted(px-stack:only-of-type),::slotted(px-grid:only-of-type){height:100%}.border-s ::slotted([slot="anchor-full"]){right:calc(var(--px-size-border-s) * -1);left:calc(var(--px-size-border-s) * -1)}.border-m ::slotted([slot="anchor-full"]){right:calc(var(--px-size-border-m) * -1);left:calc(var(--px-size-border-m) * -1)}.border-l ::slotted([slot="anchor-full"]){right:calc(var(--px-size-border-l) * -1);left:calc(var(--px-size-border-l) * -1)}@media only screen and (max-width: 47.938em){.container{background-color:var(--background-color--mobile, var(--background-color));background-image:var( --background-image--mobile, var( --background-image, var(--background-gradient--mobile, var(--background-gradient)) ) )}:host([inverted]) .container{background-color:var( --background-color-inverted--mobile, var(--background-color-inverted) )}.border-side-top--mobile{border-top-style:solid;border-right-style:none;border-bottom-style:none;border-left-style:none}.border-side-right--mobile{border-top-style:none;border-right-style:solid;border-bottom-style:none;border-left-style:none}.border-side-bottom--mobile{border-top-style:none;border-right-style:none;border-bottom-style:solid;border-left-style:none}.border-side-left--mobile{border-top-style:none;border-right-style:none;border-bottom-style:none;border-left-style:solid}.border-side-block--mobile{border-inline-style:none;border-block-style:solid}.border-side-inline--mobile{border-block-style:none;border-inline-style:solid}.no-border-radius-top--mobile{border-top-left-radius:var(--px-radius-none);border-top-right-radius:var(--px-radius-none)}.no-border-radius-right--mobile{border-top-right-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-bottom--mobile{border-bottom-left-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-left--mobile{border-top-left-radius:var(--px-radius-none);border-bottom-left-radius:var(--px-radius-none)}.no-border-radius-all--mobile{border-radius:var(--px-radius-none)}}@media only screen and (min-width: 48em) and (max-width: 64em){.container{background-color:var(--background-color--tablet, var(--background-color));background-image:var( --background-image--tablet, var( --background-image, var(--background-gradient--tablet, var(--background-gradient)) ) )}:host([inverted]) .container{background-color:var( --background-color-inverted--tablet, var(--background-color-inverted) )}.no-border-radius-top--tablet{border-top-left-radius:var(--px-radius-none);border-top-right-radius:var(--px-radius-none)}.no-border-radius-right--tablet{border-top-right-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-bottom--tablet{border-bottom-left-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-left--tablet{border-top-left-radius:var(--px-radius-none);border-bottom-left-radius:var(--px-radius-none)}.no-border-radius-all--tablet{border-radius:var(--px-radius-none)}.border-side-top--tablet{border-top-style:solid;border-right-style:none;border-bottom-style:none;border-left-style:none}.border-side-right--tablet{border-top-style:none;border-right-style:solid;border-bottom-style:none;border-left-style:none}.border-side-bottom--tablet{border-top-style:none;border-right-style:none;border-bottom-style:solid;border-left-style:none}.border-side-left--tablet{border-top-style:none;border-right-style:none;border-bottom-style:none;border-left-style:solid}.border-side-block--tablet{border-inline-style:none;border-block-style:solid}.border-side-inline--tablet{border-block-style:none;border-inline-style:solid}::slotted([slot="anchor-right"]){right:var( --container-anchor-offset--tablet, var( --container-padding-right, var(--container-padding-inline, var(--container-padding)) ) )}::slotted([slot="anchor-left"]){left:var( --container-anchor-offset--tablet, var( --container-padding-left, var(--container-padding-inline, var(--container-padding)) ) )}}@media only screen and (min-width: 64.0625em){.container{background-color:var(--background-color--laptop, var(--background-color));background-image:var( --background-image--laptop, var( --background-image, var(--background-gradient--laptop, var(--background-gradient)) ) )}:host([inverted]) .container{background-color:var( --background-color-inverted--laptop, var(--background-color-inverted) )}.no-border-radius-top--laptop{border-top-left-radius:var(--px-radius-none);border-top-right-radius:var(--px-radius-none)}.no-border-radius-right--laptop{border-top-right-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-bottom--laptop{border-bottom-left-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-left--laptop{border-top-left-radius:var(--px-radius-none);border-bottom-left-radius:var(--px-radius-none)}.no-border-radius-all--laptop{border-radius:var(--px-radius-none)}::slotted([slot="anchor-right"]){right:var( --container-anchor-offset--laptop, var( --container-padding-right, var(--container-padding-inline, var(--container-padding)) ) )}::slotted([slot="anchor-left"]){left:var( --container-anchor-offset--laptop, var( --container-padding-left, var(--container-padding-inline, var(--container-padding)) ) )}.border-side-top--laptop{border-top-style:solid;border-right-style:none;border-bottom-style:none;border-left-style:none}.border-side-right--laptop{border-top-style:none;border-right-style:solid;border-bottom-style:none;border-left-style:none}.border-side-bottom--laptop{border-top-style:none;border-right-style:none;border-bottom-style:solid;border-left-style:none}.border-side-left--laptop{border-top-style:none;border-right-style:none;border-bottom-style:none;border-left-style:solid}.border-side-block--laptop{border-inline-style:none;border-block-style:solid}.border-side-inline--laptop{border-block-style:none;border-inline-style:solid}}', p = new CSSStyleSheet();
3
- p.replaceSync(L);
4
- const T = ["anchor-right", "anchor-left", "anchor-full"], n = (u, t, e) => `:host([${u}${e ? `--${e}` : ""}='${t}']) .container`, s = "px-padding", g = class g extends c {
1
+ import { cssTokenBreakpoints as a, paddingValues as d, gapValues as k, WithExtraAttributes as m, boxShadowValues as v, backgroundSizeValues as f, noBorderRadiusValues as A, borderRadiusValues as y, borderSideValues as x, borderValues as $, gradientValues as w, log as s, backgroundColorValues as L, borderColorValues as B, checkName as g } from "@proximus/lavender-common";
2
+ const C = ':host{display:block}.container{font-family:var(--px-font-family);background-color:var(--background-color);border-radius:var(--px-radius-main);box-sizing:border-box;height:100%}:host([background-image]) .container{background-image:var(--background-image)}:host([background-gradient]) .container{background-image:var(--background-gradient)}:host([inverted]) .container{background-color:var(--background-color-inverted);color:var(--px-color-text-neutral-inverted)}.border-none{border:none}.border-s{border:var(--px-size-border-s) solid var(--border-color)}.border-m{border:var(--px-size-border-m) solid var(--border-color)}.border-l{border:var(--px-size-border-l) solid var(--border-color)}.border-side-top{border-bottom-style:none;border-right-style:none;border-left-style:none}.border-side-right{border-top-style:none;border-bottom-style:none;border-left-style:none}.border-side-bottom{border-top-style:none;border-right-style:none;border-left-style:none}.border-side-left{border-top-style:none;border-right-style:none;border-bottom-style:none}.border-side-block{border-inline-style:none}.border-side-inline{border-block-style:none}:host([inverted]) .border-s,:host([inverted]) .border-m,:host([inverted]) .border-l{border-color:var(--border-color-inverted)}.border-radius-main{border-radius:var(--px-radius-main)}.border-radius-pill{border-radius:var(--px-radius-pill)}.no-border-radius-top{border-top-left-radius:var(--px-radius-none);border-top-right-radius:var(--px-radius-none)}.no-border-radius-right{border-top-right-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-bottom{border-bottom-left-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-left{border-top-left-radius:var(--px-radius-none);border-bottom-left-radius:var(--px-radius-none)}.no-border-radius-all,.border-radius-none{border-radius:var(--px-radius-none)}.bgimg{background-repeat:no-repeat}.background-size-cover{background-size:cover;background-position:center center}.background-size-contain{background-size:contain}.box-shadow-none{box-shadow:none}.box-shadow-s{box-shadow:0 1px 2px #2525251f}.box-shadow-m{box-shadow:0 4px 6px -1px #25252514}.box-shadow-l{box-shadow:0 10px 15px -3px #25252514}.box-shadow-xl{box-shadow:0 20px 25px -5px #25252514}.anchored{position:relative}::slotted([slot="anchor-right"]),::slotted([slot="anchor-left"]),::slotted([slot="anchor-full"]){position:absolute;top:0}::slotted([slot="anchor-right"]),::slotted([slot="anchor-left"]){transform:translateY(-50%);z-index:3}::slotted([slot="anchor-right"]){right:var( --container-anchor-offset--mobile, var( --container-padding-right, var(--container-padding-inline, var(--container-padding)) ) )}::slotted([slot="anchor-left"]){left:var( --container-anchor-offset--mobile, var( --container-padding-left, var(--container-padding-inline, var(--container-padding)) ) )}::slotted([slot="anchor-full"]){transform:translateY(-100%);right:0;left:0;text-align:center;z-index:2}::slotted(px-vstack:only-of-type),::slotted(px-hstack:only-of-type),::slotted(px-stack:only-of-type),::slotted(px-grid:only-of-type){height:100%}:host([anchor-spacing]){margin-top:var(--container-anchor-spacing--mobile)}.border-s ::slotted([slot="anchor-full"]){right:calc(var(--px-size-border-s) * -1);left:calc(var(--px-size-border-s) * -1)}.border-m ::slotted([slot="anchor-full"]){right:calc(var(--px-size-border-m) * -1);left:calc(var(--px-size-border-m) * -1)}.border-l ::slotted([slot="anchor-full"]){right:calc(var(--px-size-border-l) * -1);left:calc(var(--px-size-border-l) * -1)}:host([subgrid-rows]){display:contents}:host([subgrid-rows]) .container{display:grid;grid-template-rows:subgrid;grid-row:span var(--subgrid-rows)}:host([subgrid-rows]):host([grow]) .container{flex-grow:var(--grow-value)}:host([subgrid-rows]):host([shrink]) .container{flex-shrink:var(--shrink-value)}:host([subgrid-rows]):host([basis]) .container{flex-basis:var(--basis-value)}:host([subgrid-rows]):host([align-self]) .container{align-self:var(--align-self-value)}:host([subgrid-rows]):host([col-span]) .container{grid-column:span var(--col-span-value) / span var(--col-span-value)}:host([subgrid-rows]):host([justify-self]) .container{justify-self:var(--justify-self-value)}:host([subgrid-rows]):host([order]) .container{order:var(--order-value)}:host([subgrid-rows]):host([anchor-spacing]) .container{margin-top:var(--container-anchor-spacing--mobile)}@media screen and (max-width: 47.938rem){.container{background-color:var(--background-color--mobile, var(--background-color))}:host([background-image--mobile]) .container{background-image:var(--background-image--mobile, var(--background-image))}:host([background-gradient--mobile]) .container{background-image:var( --background-gradient--mobile, var(--background-gradient) )}:host([inverted]) .container{background-color:var( --background-color-inverted--mobile, var(--background-color-inverted) )}.border-side-top--mobile{border-top-style:solid;border-right-style:none;border-bottom-style:none;border-left-style:none}.border-side-right--mobile{border-top-style:none;border-right-style:solid;border-bottom-style:none;border-left-style:none}.border-side-bottom--mobile{border-top-style:none;border-right-style:none;border-bottom-style:solid;border-left-style:none}.border-side-left--mobile{border-top-style:none;border-right-style:none;border-bottom-style:none;border-left-style:solid}.border-side-block--mobile{border-inline-style:none;border-block-style:solid}.border-side-inline--mobile{border-block-style:none;border-inline-style:solid}.no-border-radius-top--mobile{border-top-left-radius:var(--px-radius-none);border-top-right-radius:var(--px-radius-none)}.no-border-radius-right--mobile{border-top-right-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-bottom--mobile{border-bottom-left-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-left--mobile{border-top-left-radius:var(--px-radius-none);border-bottom-left-radius:var(--px-radius-none)}.no-border-radius-all--mobile{border-radius:var(--px-radius-none)}:host([subgrid-rows]):host([grow--mobile]) .container{flex-grow:var(--grow--mobile-value)}:host([subgrid-rows]):host([shrink--mobile]) .container{flex-shrink:var(--shrink--mobile-value)}:host([subgrid-rows]):host([basis--mobile]) .container{flex-basis:var(--basis--mobile-value)}:host([subgrid-rows]):host([align-self--mobile]) .container{align-self:var(--align-self--mobile-value)}:host([subgrid-rows]):host([col-span--mobile]) .container{grid-column:span var(--col-span--mobile-value) / span var(--col-span--mobile-value)}:host([subgrid-rows]):host([justify-self--mobile]) .container{justify-self:var(--justify-self--mobile-value)}:host([subgrid-rows]):host([order--mobile]) .container{order:var(--order--mobile-value)}}@media screen and (min-width: 48rem) and (max-width: 64rem){.container{background-color:var(--background-color--tablet, var(--background-color))}:host([background-image--tablet]) .container{background-image:var(--background-image--tablet, var(--background-image))}:host([background-gradient--tablet]) .container{background-image:var( --background-gradient--tablet, var(--background-gradient) )}:host([inverted]) .container{background-color:var( --background-color-inverted--tablet, var(--background-color-inverted) )}.no-border-radius-top--tablet{border-top-left-radius:var(--px-radius-none);border-top-right-radius:var(--px-radius-none)}.no-border-radius-right--tablet{border-top-right-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-bottom--tablet{border-bottom-left-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-left--tablet{border-top-left-radius:var(--px-radius-none);border-bottom-left-radius:var(--px-radius-none)}.no-border-radius-all--tablet{border-radius:var(--px-radius-none)}.border-side-top--tablet{border-top-style:solid;border-right-style:none;border-bottom-style:none;border-left-style:none}.border-side-right--tablet{border-top-style:none;border-right-style:solid;border-bottom-style:none;border-left-style:none}.border-side-bottom--tablet{border-top-style:none;border-right-style:none;border-bottom-style:solid;border-left-style:none}.border-side-left--tablet{border-top-style:none;border-right-style:none;border-bottom-style:none;border-left-style:solid}.border-side-block--tablet{border-inline-style:none;border-block-style:solid}.border-side-inline--tablet{border-block-style:none;border-inline-style:solid}::slotted([slot="anchor-right"]){right:var( --container-anchor-offset--tablet, var( --container-padding-right, var(--container-padding-inline, var(--container-padding)) ) )}::slotted([slot="anchor-left"]){left:var( --container-anchor-offset--tablet, var( --container-padding-left, var(--container-padding-inline, var(--container-padding)) ) )}:host([anchor-spacing]){margin-top:var(--container-anchor-spacing--tablet)}:host([subgrid-rows]):host([col-span--tablet]) .container{grid-column:span var(--col-span--tablet-value) / span var(--col-span--tablet-value)}:host([subgrid-rows]):host([grow--tablet]) .container{flex-grow:var(--grow--tablet-value)}:host([subgrid-rows]):host([shrink--tablet]) .container{flex-shrink:var(--shrink--tablet-value)}:host([subgrid-rows]):host([basis--tablet]) .container{flex-basis:var(--basis--tablet-value)}:host([subgrid-rows]):host([align-self--tablet]) .container{align-self:var(--align-self--tablet-value)}:host([subgrid-rows]):host([justify-self--tablet]) .container{justify-self:var(--justify-self--tablet-value)}:host([subgrid-rows]):host([order--tablet]) .container{order:var(--order--tablet-value)}:host([subgrid-rows]):host([anchor-spacing]) .container{margin-top:var(--container-anchor-spacing--tablet)}}@media screen and (min-width: 64.0625rem) and (max-width: 90rem){:host([anchor-spacing]){margin-top:var(--container-anchor-spacing--laptop)}:host([subgrid-rows]):host([col-span--laptop]) .container{grid-column:span var(--col-span--laptop-value) / span var(--col-span--laptop-value)}:host([subgrid-rows]):host([grow--laptop]) .container{flex-grow:var(--grow--laptop-value)}:host([subgrid-rows]):host([shrink--laptop]) .container{flex-shrink:var(--shrink--laptop-value)}:host([subgrid-rows]):host([basis--laptop]) .container{flex-basis:var(--basis--laptop-value)}:host([subgrid-rows]):host([align-self--laptop]) .container{align-self:var(--align-self--laptop-value)}:host([subgrid-rows]):host([justify-self--laptop]) .container{justify-self:var(--justify-self--laptop-value)}:host([subgrid-rows]):host([order--laptop]) .container{order:var(--order--laptop-value)}:host([subgrid-rows]):host([anchor-spacing]) .container{margin-top:var(--container-anchor-spacing--laptop)}}@media screen and (min-width: 64.0625rem){.container{background-color:var(--background-color--laptop, var(--background-color))}:host([background-image--laptop]) .container{background-image:var(--background-image--laptop, var(--background-image))}:host([background-gradient--laptop]) .container{background-image:var( --background-gradient--laptop, var(--background-gradient) )}:host([inverted]) .container{background-color:var( --background-color-inverted--laptop, var(--background-color-inverted) )}.no-border-radius-top--laptop{border-top-left-radius:var(--px-radius-none);border-top-right-radius:var(--px-radius-none)}.no-border-radius-right--laptop{border-top-right-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-bottom--laptop{border-bottom-left-radius:var(--px-radius-none);border-bottom-right-radius:var(--px-radius-none)}.no-border-radius-left--laptop{border-top-left-radius:var(--px-radius-none);border-bottom-left-radius:var(--px-radius-none)}.no-border-radius-all--laptop{border-radius:var(--px-radius-none)}::slotted([slot="anchor-right"]){right:var( --container-anchor-offset--laptop, var( --container-padding-right, var(--container-padding-inline, var(--container-padding)) ) )}::slotted([slot="anchor-left"]){left:var( --container-anchor-offset--laptop, var( --container-padding-left, var(--container-padding-inline, var(--container-padding)) ) )}:host([anchor-spacing]){margin-top:var(--container-anchor-spacing--laptop)}.border-side-top--laptop{border-top-style:solid;border-right-style:none;border-bottom-style:none;border-left-style:none}.border-side-right--laptop{border-top-style:none;border-right-style:solid;border-bottom-style:none;border-left-style:none}.border-side-bottom--laptop{border-top-style:none;border-right-style:none;border-bottom-style:solid;border-left-style:none}.border-side-left--laptop{border-top-style:none;border-right-style:none;border-bottom-style:none;border-left-style:solid}.border-side-block--laptop{border-inline-style:none;border-block-style:solid}.border-side-inline--laptop{border-block-style:none;border-inline-style:solid}}@media screen and (min-width: 90.0625rem){:host([anchor-spacing]){margin-top:var(--container-anchor-spacing--desktop)}:host([subgrid-rows]):host([col-span--desktop]) .container{grid-column:span var(--col-span--desktop-value) / span var(--col-span--desktop-value)}:host([subgrid-rows]):host([grow--desktop]) .container{flex-grow:var(--grow--desktop-value)}:host([subgrid-rows]):host([shrink--desktop]) .container{flex-shrink:var(--shrink--desktop-value)}:host([subgrid-rows]):host([basis--desktop]) .container{flex-basis:var(--basis--desktop-value)}:host([subgrid-rows]):host([align-self--desktop]) .container{align-self:var(--align-self--desktop-value)}:host([subgrid-rows]):host([justify-self--desktop]) .container{justify-self:var(--justify-self--desktop-value)}:host([subgrid-rows]):host([order--desktop]) .container{order:var(--order--desktop-value)}:host([subgrid-rows]):host([anchor-spacing]) .container{margin-top:var(--container-anchor-spacing--desktop)}}', c = new CSSStyleSheet();
3
+ c.replaceSync(C);
4
+ const S = [
5
+ "top-patch",
6
+ "top-neighbor-patch",
7
+ "top-ribbon",
8
+ "top-neighbor-ribbon",
9
+ "top-patch-and-neighbor-ribbon"
10
+ ], T = [
11
+ "1",
12
+ "2",
13
+ "3",
14
+ "4",
15
+ "5",
16
+ "6",
17
+ "7",
18
+ "8",
19
+ "9",
20
+ "10",
21
+ "11",
22
+ "12"
23
+ ], n = (h, t, r) => `:host([${h}${r ? `--${r}` : ""}='${t}']) .container`, b = "px-padding", R = [
24
+ a(
25
+ "padding",
26
+ n,
27
+ d,
28
+ b,
29
+ "--container-padding"
30
+ ),
31
+ a(
32
+ "padding-inline",
33
+ n,
34
+ d,
35
+ b
36
+ ),
37
+ a(
38
+ "padding-block",
39
+ n,
40
+ d,
41
+ b
42
+ ),
43
+ a(
44
+ "padding-top",
45
+ n,
46
+ d,
47
+ b
48
+ ),
49
+ a(
50
+ "padding-right",
51
+ n,
52
+ d,
53
+ b,
54
+ "--container-padding-right"
55
+ ),
56
+ a(
57
+ "padding-bottom",
58
+ n,
59
+ d,
60
+ b
61
+ ),
62
+ a(
63
+ "padding-left",
64
+ n,
65
+ d,
66
+ b,
67
+ "--container-padding-left"
68
+ ),
69
+ a(
70
+ "gap",
71
+ n,
72
+ k,
73
+ "px-spacing",
74
+ void 0,
75
+ "subgrid-gap"
76
+ )
77
+ ], u = class u extends m {
5
78
  constructor() {
6
- super(
7
- p,
8
- a(
9
- "padding",
10
- n,
11
- d,
12
- s,
13
- "--container-padding"
14
- ),
15
- a(
16
- "padding-inline",
17
- n,
18
- d,
19
- s
20
- ),
21
- a(
22
- "padding-block",
23
- n,
24
- d,
25
- s
26
- ),
27
- a(
28
- "padding-top",
29
- n,
30
- d,
31
- s
32
- ),
33
- a(
34
- "padding-right",
35
- n,
36
- d,
37
- s,
38
- "--container-padding-right"
39
- ),
40
- a(
41
- "padding-bottom",
42
- n,
43
- d,
44
- s
45
- ),
46
- a(
47
- "padding-left",
48
- n,
49
- d,
50
- s,
51
- "--container-padding-left"
52
- )
53
- ), this.template = () => `<div class="container">
54
- <slot name="anchor-left"></slot>
55
- <slot name="anchor-right"></slot>
56
- <slot name="anchor-full"></slot>
57
- <slot></slot>
58
- </div>`, this._bgObserver = null, this._isInViewport = !1, this.shadowRoot.innerHTML = this.template();
79
+ super(c, ...R), this.template = () => `<div class="container">
80
+ <slot></slot>
81
+ <slot name="anchor-left"></slot>
82
+ <slot name="anchor-right"></slot>
83
+ <slot name="anchor-full"></slot>
84
+ </div>`, this._bgObserver = null, this._isInViewport = !1, this.contentObserver = null, this.shadowRoot.innerHTML = this.template();
59
85
  }
60
86
  static get observedAttributes() {
61
87
  return [
@@ -87,44 +113,50 @@ const T = ["anchor-right", "anchor-left", "anchor-full"], n = (u, t, e) => `:hos
87
113
  "background-position",
88
114
  "box-shadow",
89
115
  "anchor-offset",
90
- "inverted"
116
+ "anchor-spacing",
117
+ "inverted",
118
+ "subgrid-rows"
91
119
  ];
92
120
  }
93
121
  connectedCallback() {
94
- super.connectedCallback(), this.padding || (this.padding = "m"), this.backgroundColor || (this.backgroundColor = "surface-light"), this.borderColor || (this.borderColor = "main");
95
- const t = this.querySelector("[slot]");
96
- t && T.includes(t.getAttribute("slot")) && this.shadowRoot.querySelector(".container").classList.toggle("anchored"), this._bgObserver = new IntersectionObserver((e) => {
97
- e.forEach((r) => {
98
- var i;
99
- r.isIntersecting && (this._isInViewport = !0, this._loadBackgroundImages(), (i = this._bgObserver) == null || i.disconnect());
122
+ this.padding || (this.padding = "m"), this.backgroundColor || (this.backgroundColor = "surface-light"), this.borderColor || (this.borderColor = "main"), this.$slotAnchor && this.addAnchorClass(), this.contentObserver = new MutationObserver(() => {
123
+ this.$slotAnchor && this.addAnchorClass();
124
+ }), this.contentObserver.observe(this, {
125
+ childList: !0,
126
+ subtree: !0,
127
+ characterData: !0
128
+ }), this._bgObserver = new IntersectionObserver((t) => {
129
+ t.forEach((r) => {
130
+ var e;
131
+ r.isIntersecting && (this._isInViewport = !0, this._loadBackgroundImages(), (e = this._bgObserver) == null || e.disconnect());
100
132
  });
101
133
  }), this._bgObserver.observe(this.$el);
102
134
  }
103
135
  disconnectedCallback() {
104
- var t;
105
- (t = this._bgObserver) == null || t.disconnect();
136
+ var t, r;
137
+ (t = this._bgObserver) == null || t.disconnect(), (r = this.contentObserver) == null || r.disconnect();
106
138
  }
107
- attributeChangedCallback(t, e, r) {
108
- if (e !== r)
139
+ attributeChangedCallback(t, r, e) {
140
+ if (r !== e)
109
141
  switch (t) {
110
142
  case "border":
111
- this.updateAttribute(t, e, r, A);
143
+ this.updateAttribute(t, r, e, $);
112
144
  break;
113
145
  case "border-color":
114
- this.updateBorderColor(t, r);
146
+ this.updateBorderColor(t, e);
115
147
  break;
116
148
  case "border-side":
117
149
  case "border-side--mobile":
118
150
  case "border-side--tablet":
119
151
  case "border-side--laptop":
120
- this.updateAttribute(t, e, r, v);
152
+ this.updateAttribute(t, r, e, x);
121
153
  break;
122
154
  case "border-radius":
123
155
  this.updateAttribute(
124
156
  t,
125
- e,
126
157
  r,
127
- f
158
+ e,
159
+ y
128
160
  );
129
161
  break;
130
162
  case "no-border-radius":
@@ -133,48 +165,59 @@ const T = ["anchor-right", "anchor-left", "anchor-full"], n = (u, t, e) => `:hos
133
165
  case "no-border-radius--laptop":
134
166
  this.updateNoBorderRadius(
135
167
  t,
136
- e,
137
168
  r,
138
- m
169
+ e,
170
+ A
139
171
  );
140
172
  break;
141
173
  case "background-color":
142
174
  case "background-color--mobile":
143
175
  case "background-color--tablet":
144
176
  case "background-color--laptop":
145
- this.updateBackgroundColor(t, r);
177
+ this.updateBackgroundColor(t, e);
146
178
  break;
147
179
  case "background-gradient":
148
180
  case "background-gradient--mobile":
149
181
  case "background-gradient--tablet":
150
182
  case "background-gradient--laptop":
151
- this.updateGradient(t, r);
183
+ this.updateGradient(t, e);
152
184
  break;
153
185
  case "background-size":
154
186
  this.updateAttribute(
155
187
  t,
156
- e,
157
188
  r,
158
- k
189
+ e,
190
+ f
159
191
  );
160
192
  break;
161
193
  case "background-image":
162
194
  case "background-image--mobile":
163
195
  case "background-image--tablet":
164
196
  case "background-image--laptop":
165
- this._isInViewport && this.updateBackgroundImg(t, r);
197
+ this._isInViewport && this.updateBackgroundImg(t, e);
166
198
  break;
167
199
  case "background-position":
168
- r !== null && r !== "" && (this.$el.style.backgroundPosition = r);
200
+ e !== null && e !== "" && (this.$el.style.backgroundPosition = e);
169
201
  break;
170
202
  case "box-shadow":
171
- this.updateAttribute(t, e, r, h);
203
+ this.updateAttribute(t, r, e, v);
172
204
  break;
173
205
  case "anchor-offset":
174
- this.updateAnchorOffset(e, r, d);
206
+ this.updateAnchorOffset(r, e, d);
207
+ break;
208
+ case "anchor-spacing":
209
+ this.updateAnchorSpacing(r, e, S);
210
+ break;
211
+ case "subgrid-rows":
212
+ this.updateSubgridRows(
213
+ t,
214
+ r,
215
+ e,
216
+ T
217
+ );
175
218
  break;
176
219
  default:
177
- super.attributeChangedCallback(t, e, r);
220
+ super.attributeChangedCallback(t, r, e);
178
221
  break;
179
222
  }
180
223
  }
@@ -184,86 +227,98 @@ const T = ["anchor-right", "anchor-left", "anchor-full"], n = (u, t, e) => `:hos
184
227
  "background-image--mobile",
185
228
  "background-image--tablet",
186
229
  "background-image--laptop"
187
- ].forEach((e) => {
188
- const r = this.getAttribute(e);
189
- r && this.updateBackgroundImg(e, r);
230
+ ].forEach((r) => {
231
+ const e = this.getAttribute(r);
232
+ e && this.updateBackgroundImg(r, e);
190
233
  });
191
234
  }
192
- updateBackgroundImg(t, e) {
193
- this.$el.style.setProperty(`--${t}`, `url("${e}")`);
235
+ updateBackgroundImg(t, r) {
236
+ this.$el.style.setProperty(`--${t}`, `url("${r}")`);
194
237
  }
195
- updateGradient(t, e) {
196
- if (this.checkName(y, e)) {
197
- const r = this.splitAttrNameFromBreakpoint(t);
198
- t = r.attrName;
199
- const i = r.breakpoint;
238
+ updateGradient(t, r) {
239
+ if (this.checkName(w, r)) {
240
+ const e = this.splitAttrNameFromBreakpoint(t);
241
+ t = e.attrName;
242
+ const i = e.breakpoint;
200
243
  this.$el.style.setProperty(
201
244
  `--${t}${i}`,
202
- `linear-gradient(var(--px-color-background-gradient-${e}))`
245
+ `linear-gradient(var(--px-color-background-gradient-${r}))`
203
246
  );
204
247
  } else
205
- console.error(`${e} is not an allowed background-gradient value`);
248
+ s(
249
+ `${r} is not an allowed ${t} value for ${this.tagName.toLowerCase()}`
250
+ );
206
251
  }
207
- updateBackgroundColor(t, e) {
208
- const r = e.startsWith("surface-");
209
- if (this.checkName(x, e)) {
252
+ updateBackgroundColor(t, r) {
253
+ const e = r.startsWith("surface-");
254
+ if (this.checkName(L, r)) {
210
255
  const i = this.splitAttrNameFromBreakpoint(t), o = i.breakpoint;
211
256
  this.$el.style.setProperty(
212
257
  `--${i.attrName}${o}`,
213
- `var(--px-color-background-${e}${r ? "" : "-default"})`
258
+ `var(--px-color-background-${r}${e ? "" : "-default"})`
214
259
  ), this.$el.style.setProperty(
215
260
  `--${i.attrName}-inverted${o}`,
216
- `var(--px-color-background-${e}${r ? "" : "-inverted"})`
261
+ `var(--px-color-background-${r}${e ? "" : "-inverted"})`
217
262
  );
218
263
  } else
219
- console.error(`${e} is not an allowed ${t} value`);
264
+ s(
265
+ `${r} is not an allowed ${t} value for ${this.tagName.toLowerCase()}`
266
+ );
220
267
  }
221
- updateBorderColor(t, e) {
222
- this.checkName($, e) ? (this.$el.style.setProperty(
268
+ updateBorderColor(t, r) {
269
+ this.checkName(B, r) ? (this.$el.style.setProperty(
223
270
  `--${t}`,
224
- `var(--px-color-border-${e}-default)`
271
+ `var(--px-color-border-${r}-default)`
225
272
  ), this.$el.style.setProperty(
226
273
  `--${t}-inverted`,
227
- `var(--px-color-border-${e}-inverted)`
228
- )) : console.error(`${e} is not an allowed ${t} value`);
229
- }
230
- updateNoBorderRadius(t, e, r, i) {
231
- if (!this.checkName(i, r))
232
- console.error(`${r} is not an allowed ${t} value`);
274
+ `var(--px-color-border-${r}-inverted)`
275
+ )) : s(
276
+ `${r} is not an allowed ${t} value for ${this.tagName.toLowerCase()}`
277
+ );
278
+ }
279
+ updateNoBorderRadius(t, r, e, i) {
280
+ if (!this.checkName(i, e))
281
+ s(
282
+ `${e} is not an allowed ${t} value for ${this.tagName.toLowerCase()}`
283
+ );
233
284
  else {
234
- const o = this.splitAttrNameFromBreakpoint(t), b = o.breakpoint;
235
- e !== null && e !== "" && this.$el.classList.toggle(
236
- `${o.attrName}-${e}${b}`
237
- ), r !== null && r !== "" && this.$el.classList.toggle(
238
- `${o.attrName}-${r}${b}`
285
+ const o = this.splitAttrNameFromBreakpoint(t), l = o.breakpoint;
286
+ r !== null && r !== "" && this.$el.classList.toggle(
287
+ `${o.attrName}-${r}${l}`
288
+ ), e !== null && e !== "" && this.$el.classList.toggle(
289
+ `${o.attrName}-${e}${l}`
239
290
  );
240
291
  }
241
292
  }
242
- updateAttribute(t, e, r, i) {
243
- if (!this.checkName(i, r))
244
- console.error(`${r} is not an allowed ${t} value`);
293
+ updateAttribute(t, r, e, i) {
294
+ if (!this.checkName(i, e))
295
+ s(
296
+ `${e} is not an allowed ${t} value for ${this.tagName.toLowerCase()}`
297
+ );
245
298
  else {
246
- const o = this.splitAttrNameFromBreakpoint(t), b = o.breakpoint;
247
- e !== null && e !== "" && this.$el.classList.toggle(
248
- `${o.attrName}-${e}${b}`
249
- ), r !== null && r !== "" && this.$el.classList.toggle(
250
- `${o.attrName}-${r}${b}`
299
+ const o = this.splitAttrNameFromBreakpoint(t), l = o.breakpoint;
300
+ r !== null && r !== "" && this.$el.classList.toggle(
301
+ `${o.attrName}-${r}${l}`
302
+ ), e !== null && e !== "" && this.$el.classList.toggle(
303
+ `${o.attrName}-${e}${l}`
251
304
  );
252
305
  }
253
306
  }
254
307
  splitAttrNameFromBreakpoint(t) {
255
- let e = "";
308
+ let r = "";
256
309
  if (["--mobile", "--tablet", "--laptop"].some(
257
- (r) => t.includes(r)
310
+ (e) => t.includes(e)
258
311
  )) {
259
- const r = t.split("--");
260
- t = r[0], e = `--${r[1]}`;
312
+ const e = t.split("--");
313
+ t = e[0], r = `--${e[1]}`;
261
314
  }
262
- return { attrName: t, breakpoint: e };
315
+ return { attrName: t, breakpoint: r };
263
316
  }
264
- updateAnchorOffset(t, e, r) {
265
- if (!B(r, e)) {
266
- console.error(`${e} is not a valid anchor-offset value`);
317
+ updateAnchorOffset(t, r, e) {
318
+ if (!g(e, r)) {
319
+ s(
320
+ `${r} is not a valid anchor-offset value for ${this.tagName.toLowerCase()}`
321
+ );
267
322
  return;
268
323
  }
269
324
  const i = (o) => {
@@ -278,7 +333,46 @@ const T = ["anchor-right", "anchor-left", "anchor-full"], n = (u, t, e) => `:hos
278
333
  `var(--px-padding-${o}-laptop)`
279
334
  ));
280
335
  };
281
- i(t), i(e);
336
+ i(t), i(r);
337
+ }
338
+ addAnchorClass() {
339
+ this.$el.classList.contains("anchored") || this.$el.classList.add("anchored");
340
+ }
341
+ updateAnchorSpacing(t, r, e) {
342
+ if (!g(e, r)) {
343
+ s(
344
+ `${r} is not a valid anchor-spacing value for ${this.tagName.toLowerCase()}`
345
+ );
346
+ return;
347
+ }
348
+ const i = (o) => {
349
+ o !== null && o !== "" && o !== "default" && (this.style.setProperty(
350
+ "--container-anchor-spacing--mobile",
351
+ `var(--px-spacing-${o}-mobile)`
352
+ ), this.style.setProperty(
353
+ "--container-anchor-spacing--tablet",
354
+ `var(--px-spacing-${o}-tablet)`
355
+ ), this.style.setProperty(
356
+ "--container-anchor-spacing--laptop",
357
+ `var(--px-spacing-${o}-laptop)`
358
+ ), this.style.setProperty(
359
+ "--container-anchor-spacing--desktop",
360
+ `var(--px-spacing-${o}-desktop)`
361
+ ));
362
+ };
363
+ i(t), i(r);
364
+ }
365
+ updateSubgridRows(t, r, e, i) {
366
+ g(i, e) ? this.style.setProperty(`--${t}`, e) : s(
367
+ `${e} is not an allowed ${t} value for ${this.tagName.toLowerCase()}`
368
+ );
369
+ }
370
+ get $el() {
371
+ var t;
372
+ return (t = this == null ? void 0 : this.shadowRoot) == null ? void 0 : t.querySelector(".container");
373
+ }
374
+ get $slotAnchor() {
375
+ return this.querySelector('[slot^="anchor"]');
282
376
  }
283
377
  get padding() {
284
378
  return this.getAttribute("padding");
@@ -610,16 +704,54 @@ const T = ["anchor-right", "anchor-left", "anchor-full"], n = (u, t, e) => `:hos
610
704
  set anchorOffset(t) {
611
705
  this.setAttribute("anchor-offset", t);
612
706
  }
707
+ get anchorSpacing() {
708
+ return this.getAttribute("anchor-spacing");
709
+ }
710
+ set anchorSpacing(t) {
711
+ this.setAttribute("anchor-spacing", t);
712
+ }
613
713
  get inverted() {
614
- return this.getAttribute("inverted");
714
+ return this.hasAttribute("inverted");
615
715
  }
616
716
  set inverted(t) {
617
- this.setAttribute("inverted", t);
717
+ t ? this.setAttribute("inverted", "") : this.removeAttribute("inverted");
718
+ }
719
+ get subgridRows() {
720
+ return this.getAttribute("subgrid-rows");
721
+ }
722
+ set subgridRows(t) {
723
+ this.setAttribute("subgrid-rows", t);
724
+ }
725
+ get subgridGap() {
726
+ return this.getAttribute("subgrid-gap");
727
+ }
728
+ set subgridGap(t) {
729
+ this.setAttribute("subgrid-gap", t);
730
+ }
731
+ get subgridGapMobile() {
732
+ return this.getAttribute("subgrid-gap--mobile");
733
+ }
734
+ set subgridGapMobile(t) {
735
+ this.setAttribute("subgrid-gap--mobile", t);
736
+ }
737
+ get subgridGapTablet() {
738
+ return this.getAttribute("subgrid-gap--tablet");
739
+ }
740
+ set subgridGapTablet(t) {
741
+ this.setAttribute("subgrid-gap--tablet", t);
742
+ }
743
+ get subgridGapLaptop() {
744
+ return this.getAttribute("subgrid-gap--laptop");
745
+ }
746
+ set subgridGapLaptop(t) {
747
+ this.setAttribute("subgrid-gap--laptop", t);
618
748
  }
619
749
  };
620
- g.nativeName = "div";
621
- let l = g;
622
- customElements.get("px-container") || customElements.define("px-container", l);
750
+ u.nativeName = "div";
751
+ let p = u;
752
+ customElements.get("px-container") || customElements.define("px-container", p);
623
753
  export {
624
- l as Container
754
+ p as Container,
755
+ S as anchorSpacingValues,
756
+ T as subgridRowsValues
625
757
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proximus/lavender-container",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.0.0-alpha.100",
4
4
  "description": "",
5
5
  "files": [
6
6
  "dist"
@@ -11,7 +11,7 @@
11
11
  "clean": "rm -rf dist",
12
12
  "build": "npm run clean && NODE_ENV=development vite build && tsc && npm run transform-package-json && npm run wc-manifest",
13
13
  "test": "vitest run --coverage",
14
- "wc-manifest": "cem analyze --globs \"src/*\" --config ../custom-elements-manifest.config.js --outdir dist"
14
+ "wc-manifest": "cem analyze --globs \"src/*\" --config ../../custom-elements-manifest.config.js --outdir dist"
15
15
  },
16
16
  "publishConfig": {
17
17
  "access": "public"