@nordhealth/components 2.8.2 → 2.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/custom-elements.json +5244 -4052
  2. package/lib/Badge.js +1 -1
  3. package/lib/Badge.js.map +1 -1
  4. package/lib/Banner.js +1 -1
  5. package/lib/Banner.js.map +1 -1
  6. package/lib/Button.js +1 -1
  7. package/lib/Button.js.map +1 -1
  8. package/lib/{Calendar-1904bf2f.js → Calendar-29123404.js} +1 -1
  9. package/lib/{Calendar-1904bf2f.js.map → Calendar-29123404.js.map} +1 -1
  10. package/lib/Calendar.js +1 -1
  11. package/lib/Checkbox.js +1 -1
  12. package/lib/Checkbox.js.map +1 -1
  13. package/lib/CommandMenu.js +1 -1
  14. package/lib/CommandMenu.js.map +1 -1
  15. package/lib/CommandMenuAction.js +1 -1
  16. package/lib/CommandMenuAction.js.map +1 -1
  17. package/lib/DatePicker.js +1 -1
  18. package/lib/DatePicker.js.map +1 -1
  19. package/lib/Dropdown.js +1 -1
  20. package/lib/Dropdown.js.map +1 -1
  21. package/lib/Fieldset.js +1 -1
  22. package/lib/Fieldset.js.map +1 -1
  23. package/lib/FormAssociatedMixin-aa74901e.js +2 -0
  24. package/lib/FormAssociatedMixin-aa74901e.js.map +1 -0
  25. package/lib/FormField-ae3570d2.js +2 -0
  26. package/lib/FormField-ae3570d2.js.map +1 -0
  27. package/lib/Icon.js +6 -1
  28. package/lib/Icon.js.map +1 -1
  29. package/lib/Input.js +1 -1
  30. package/lib/Input.js.map +1 -1
  31. package/lib/Layout.js +1 -1
  32. package/lib/Layout.js.map +1 -1
  33. package/lib/Modal.js +1 -1
  34. package/lib/Modal.js.map +1 -1
  35. package/lib/ModalController.js +1 -1
  36. package/lib/ModalController.js.map +1 -1
  37. package/lib/NavGroup.js +1 -1
  38. package/lib/NavGroup.js.map +1 -1
  39. package/lib/NavToggle.js +1 -1
  40. package/lib/NavToggle.js.map +1 -1
  41. package/lib/Popout-4aa0cc87.js +2 -0
  42. package/lib/Popout-4aa0cc87.js.map +1 -0
  43. package/lib/Popout.js +1 -1
  44. package/lib/Radio.js +1 -1
  45. package/lib/Radio.js.map +1 -1
  46. package/lib/Range.js +2 -0
  47. package/lib/Range.js.map +1 -0
  48. package/lib/ScrollbarController-773c79f4.js +2 -0
  49. package/lib/ScrollbarController-773c79f4.js.map +1 -0
  50. package/lib/Select.js +1 -1
  51. package/lib/Select.js.map +1 -1
  52. package/lib/TextField-db22898b.js +2 -0
  53. package/lib/{TextField-a7382912.js.map → TextField-db22898b.js.map} +1 -1
  54. package/lib/Textarea.js +1 -1
  55. package/lib/Toast.js +1 -1
  56. package/lib/Toast.js.map +1 -1
  57. package/lib/Toggle.js +1 -1
  58. package/lib/Toggle.js.map +1 -1
  59. package/lib/bundle.js +11 -11
  60. package/lib/bundle.js.map +1 -1
  61. package/lib/index.js +1 -1
  62. package/lib/src/button/Button.d.ts +1 -0
  63. package/lib/src/common/controllers/ScrollbarController.d.ts +23 -7
  64. package/lib/src/common/mixins/FormAssociatedMixin.d.ts +2 -2
  65. package/lib/src/date-picker/DatePicker.d.ts +23 -13
  66. package/lib/src/dropdown/Dropdown.d.ts +9 -2
  67. package/lib/src/fieldset/Fieldset.d.ts +11 -0
  68. package/lib/src/index.d.ts +1 -0
  69. package/lib/src/input/Input.d.ts +6 -0
  70. package/lib/src/input/Input.test.d.ts +3 -0
  71. package/lib/src/range/Range.d.ts +45 -0
  72. package/lib/src/range/Range.test.d.ts +2 -0
  73. package/package.json +2 -2
  74. package/lib/FormAssociatedMixin-0d57fdc8.js +0 -2
  75. package/lib/FormAssociatedMixin-0d57fdc8.js.map +0 -1
  76. package/lib/FormField-081da729.js +0 -2
  77. package/lib/FormField-081da729.js.map +0 -1
  78. package/lib/Popout-08f11a8d.js +0 -2
  79. package/lib/Popout-08f11a8d.js.map +0 -1
  80. package/lib/ScrollbarController-680392c9.js +0 -2
  81. package/lib/ScrollbarController-680392c9.js.map +0 -1
  82. package/lib/TextField-a7382912.js +0 -2
  83. package/lib/unsafe-html-6be42999.js +0 -7
  84. package/lib/unsafe-html-6be42999.js.map +0 -1
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{default as Badge}from"./Badge.js";export{default as Button}from"./Button.js";export{default as Card}from"./Card.js";export{default as Input}from"./Input.js";export{default as Icon}from"./Icon.js";export{default as CommandMenu}from"./CommandMenu.js";export{default as CommandMenuAction}from"./CommandMenuAction.js";export{default as Select}from"./Select.js";export{default as Stack}from"./Stack.js";export{default as Spinner}from"./Spinner.js";export{default as Table}from"./Table.js";export{default as VisuallyHidden}from"./VisuallyHidden.js";export{default as Textarea}from"./Textarea.js";export{C as Calendar}from"./Calendar-1904bf2f.js";export{default as DatePicker}from"./DatePicker.js";export{default as Checkbox}from"./Checkbox.js";export{default as Tooltip}from"./Tooltip.js";export{default as Fieldset}from"./Fieldset.js";export{default as Radio}from"./Radio.js";export{default as Header}from"./Header.js";export{default as NavGroup}from"./NavGroup.js";export{default as NavItem}from"./NavItem.js";export{default as Navigation}from"./Navigation.js";export{default as Layout}from"./Layout.js";export{default as EmptyState}from"./EmptyState.js";export{default as Banner}from"./Banner.js";export{default as Avatar}from"./Avatar.js";export{default as ProgressBar}from"./ProgressBar.js";export{P as Popout}from"./Popout-08f11a8d.js";export{default as Dropdown}from"./Dropdown.js";export{default as DropdownItem}from"./DropdownItem.js";export{default as DropdownGroup}from"./DropdownGroup.js";export{isTranslationRegistered,registerTranslation}from"./translation.js";export{default as TabGroup}from"./TabGroup.js";export{default as Tab}from"./Tab.js";export{default as TabPanel}from"./TabPanel.js";export{default as Toggle}from"./Toggle.js";export{default as Modal}from"./Modal.js";export{default as Skeleton}from"./Skeleton.js";export{default as Toast}from"./Toast.js";export{default as ToastGroup}from"./ToastGroup.js";export{default as Divider}from"./Divider.js";export{default as Qrcode}from"./Qrcode.js";export{default as Drawer}from"./Drawer.js";export{default as NavToggle}from"./NavToggle.js";import"./query-assigned-elements-e6cbac30.js";import"./lit-element-9178eae5.js";import"./property-03f59dce.js";import"./Component-92eb6234.js";import"./ref-0e619221.js";import"./directive-de55b00a.js";import"./EventController-d99ebeef.js";import"./LightDomController-3c726b20.js";import"./cond-338158e9.js";import"./FocusableMixin-34870ed3.js";import"./InputMixin-158f63fb.js";import"./SlotController-89834aef.js";import"./if-defined-4598a996.js";import"./class-map-949b7d3b.js";import"./unsafe-html-6be42999.js";import"./FormAssociatedMixin-0d57fdc8.js";import"./events-731d0007.js";import"./TextField-a7382912.js";import"./AutocompleteMixin-370de2be.js";import"./SizeMixin-4559b224.js";import"./FormField-081da729.js";import"./state-70f38ceb.js";import"./observe-a9c6dfb6.js";import"./repeat-ae6f075f.js";import"./collection-800f5002.js";import"./number-c3ab3e95.js";import"./LightDismissController-a2645ae6.js";import"./ShortcutController-87615e31.js";import"./tinykeys.module-84e6cc41.js";import"./KeyboardController.js";import"./SelectEvent.js";import"./LocalizeController.js";import"./DirectionController-8b298382.js";import"./query-2d22378e.js";import"./dates-a8de5b83.js";import"./month-view.js";import"./DateSelectEvent.js";import"./interface-close-small-44ababc3.js";import"./date-adapter.js";import"./positioning-3bbd3548.js";import"./fsm-50373df9.js";import"./ScrollbarController-680392c9.js";import"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./ModalController.js";import"./DraftComponentMixin-9e4b7b34.js";
1
+ export{default as Badge}from"./Badge.js";export{default as Button}from"./Button.js";export{default as Card}from"./Card.js";export{default as Input}from"./Input.js";export{default as Icon}from"./Icon.js";export{default as CommandMenu}from"./CommandMenu.js";export{default as CommandMenuAction}from"./CommandMenuAction.js";export{default as Select}from"./Select.js";export{default as Stack}from"./Stack.js";export{default as Spinner}from"./Spinner.js";export{default as Table}from"./Table.js";export{default as VisuallyHidden}from"./VisuallyHidden.js";export{default as Textarea}from"./Textarea.js";export{C as Calendar}from"./Calendar-29123404.js";export{default as DatePicker}from"./DatePicker.js";export{default as Checkbox}from"./Checkbox.js";export{default as Tooltip}from"./Tooltip.js";export{default as Fieldset}from"./Fieldset.js";export{default as Radio}from"./Radio.js";export{default as Header}from"./Header.js";export{default as NavGroup}from"./NavGroup.js";export{default as NavItem}from"./NavItem.js";export{default as Navigation}from"./Navigation.js";export{default as Layout}from"./Layout.js";export{default as EmptyState}from"./EmptyState.js";export{default as Banner}from"./Banner.js";export{default as Avatar}from"./Avatar.js";export{default as ProgressBar}from"./ProgressBar.js";export{P as Popout}from"./Popout-4aa0cc87.js";export{default as Dropdown}from"./Dropdown.js";export{default as DropdownItem}from"./DropdownItem.js";export{default as DropdownGroup}from"./DropdownGroup.js";export{isTranslationRegistered,registerTranslation}from"./translation.js";export{default as TabGroup}from"./TabGroup.js";export{default as Tab}from"./Tab.js";export{default as TabPanel}from"./TabPanel.js";export{default as Toggle}from"./Toggle.js";export{default as Modal}from"./Modal.js";export{default as Skeleton}from"./Skeleton.js";export{default as Toast}from"./Toast.js";export{default as ToastGroup}from"./ToastGroup.js";export{default as Divider}from"./Divider.js";export{default as Qrcode}from"./Qrcode.js";export{default as Drawer}from"./Drawer.js";export{default as NavToggle}from"./NavToggle.js";export{default as Range}from"./Range.js";import"./query-assigned-elements-e6cbac30.js";import"./lit-element-9178eae5.js";import"./property-03f59dce.js";import"./Component-92eb6234.js";import"./ref-0e619221.js";import"./directive-de55b00a.js";import"./EventController-d99ebeef.js";import"./LightDomController-3c726b20.js";import"./cond-338158e9.js";import"./FocusableMixin-34870ed3.js";import"./InputMixin-158f63fb.js";import"./SlotController-89834aef.js";import"./if-defined-4598a996.js";import"./class-map-949b7d3b.js";import"./FormAssociatedMixin-aa74901e.js";import"./events-731d0007.js";import"./TextField-db22898b.js";import"./AutocompleteMixin-370de2be.js";import"./SizeMixin-4559b224.js";import"./FormField-ae3570d2.js";import"./DirectionController-8b298382.js";import"./state-70f38ceb.js";import"./observe-a9c6dfb6.js";import"./repeat-ae6f075f.js";import"./collection-800f5002.js";import"./number-c3ab3e95.js";import"./LightDismissController-a2645ae6.js";import"./ShortcutController-87615e31.js";import"./tinykeys.module-84e6cc41.js";import"./KeyboardController.js";import"./SelectEvent.js";import"./LocalizeController.js";import"./query-2d22378e.js";import"./dates-a8de5b83.js";import"./month-view.js";import"./DateSelectEvent.js";import"./interface-close-small-44ababc3.js";import"./date-adapter.js";import"./positioning-3bbd3548.js";import"./fsm-50373df9.js";import"./ScrollbarController-773c79f4.js";import"./en-us.js";import"./localization.js";import"./localization2.js";import"./localization3.js";import"./localization4.js";import"./localization5.js";import"./ModalController.js";import"./DraftComponentMixin-9e4b7b34.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -18,6 +18,7 @@ declare const Button_base: (new (...args: any[]) => import("../common/mixins/Inp
18
18
  * @cssprop [--n-button-background-color=var(--n-color-button)] - Controls the background color of the button, using [color tokens](/tokens/#color).
19
19
  * @cssprop [--n-button-border-color=var(--n-color-border-strong)] - Controls the border color of the button, using [color tokens](/tokens/#color).
20
20
  * @cssprop [--n-button-text-align=center] - Controls the text alignment for the text in the button.
21
+ * @cssprop [--n-button-box-shadow=var(--n-box-shadow)] - Controls the surrounding shadow, using [box shadow tokens](/tokens/#box-shadow).
21
22
  */
22
23
  export default class Button extends Button_base {
23
24
  static styles: import("lit").CSSResult[];
@@ -1,12 +1,28 @@
1
1
  import { ReactiveController, ReactiveControllerHost } from "lit";
2
+ /**
3
+ * We can have any number of components open at a time, all of which lock scroll.
4
+ * Consider multiple modals being open, plus some popouts, etc.
5
+ *
6
+ * So we need some bookkeeping to know when to unlock scroll...
7
+ *
8
+ * But we can't simply keep a count of how many components are open,
9
+ * since a misbehaving component may call lockScroll() multiple times.
10
+ *
11
+ * Nor can we rely on the first component to call lockScroll() to be the last to unlockScroll(),
12
+ * since we cannot guarantee order of operations.
13
+ *
14
+ * Therefore, we track instances of ScrollbarController in a Set,
15
+ * and only unlock scroll when the set is empty.
16
+ *
17
+ * We also need to be careful to restore any styles that were there
18
+ * before we locked scroll.
19
+ */
2
20
  export declare class ScrollbarController implements ReactiveController {
3
- private scroller;
4
- private resets;
21
+ private static locks;
22
+ private static resets;
5
23
  constructor(host: ReactiveControllerHost);
6
- constructor(host: ReactiveControllerHost, scroller: HTMLElement);
7
24
  hostDisconnected(): void;
8
- get width(): number;
9
- hide(): void;
10
- restore(): void;
11
- private setStyle;
25
+ lockScroll(): void;
26
+ unlockScroll(): void;
27
+ private static setStyle;
12
28
  }
@@ -7,11 +7,11 @@ declare type Constructor<T = Record<string, unknown>> = new (...args: any[]) =>
7
7
  export declare class FormAssociatedMixinInterface {
8
8
  label: string;
9
9
  required: boolean;
10
+ hideRequired: boolean;
10
11
  hint?: string;
11
12
  hideLabel: boolean;
12
13
  placeholder?: string;
13
14
  error?: string;
14
- expand: boolean;
15
15
  protected inputId: string;
16
16
  protected errorId: string;
17
17
  protected hintId: string;
@@ -24,7 +24,7 @@ export declare class FormAssociatedMixinInterface {
24
24
  protected get hasHint(): boolean;
25
25
  protected handleChange(e: Event): void;
26
26
  protected handleInput(e: Event): void;
27
- protected renderLabel(): TemplateResult;
27
+ protected renderLabel(additionalContent?: TemplateResult): TemplateResult;
28
28
  protected renderError(): TemplateResult;
29
29
  protected getDescribedBy(): string | undefined;
30
30
  protected getInvalid(): "true" | undefined;
@@ -1,7 +1,10 @@
1
1
  import { LitElement } from "lit";
2
2
  import { DaysOfWeek } from "../common/dates.js";
3
+ import "../input/Input.js";
3
4
  import "../button/Button.js";
4
5
  import "../visually-hidden/VisuallyHidden.js";
6
+ import "../popout/Popout.js";
7
+ import "../stack/Stack.js";
5
8
  import "../calendar/Calendar.js";
6
9
  import type { DateDisabledPredicate } from "../calendar/Calendar.js";
7
10
  import { DateAdapter } from "./date-adapter.js";
@@ -20,8 +23,7 @@ export default class DatePicker extends DatePicker_base {
20
23
  private toggleButton;
21
24
  private closeButton;
22
25
  private calendar;
23
- private dialog;
24
- private dismiss;
26
+ private popout;
25
27
  private swipe;
26
28
  private localize;
27
29
  /**
@@ -33,7 +35,6 @@ export default class DatePicker extends DatePicker_base {
33
35
  * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString#Performance
34
36
  */
35
37
  private dateFormatLong;
36
- private open;
37
38
  /**
38
39
  * Date value. Must be in IS0-8601 format: YYYY-MM-DD.
39
40
  */
@@ -48,6 +49,10 @@ export default class DatePicker extends DatePicker_base {
48
49
  * Get/set the value of the picker as the number of milliseconds elapsed since the UNIX epoch.
49
50
  */
50
51
  set valueAsNumber(date: number);
52
+ /**
53
+ * Controls whether date picker dialog is open or not.
54
+ */
55
+ open: boolean;
51
56
  /**
52
57
  * Minimum date allowed to be picked. Must be in IS0-8601 format: YYYY-MM-DD.
53
58
  * This setting can be used alone or together with the max property.
@@ -59,9 +64,9 @@ export default class DatePicker extends DatePicker_base {
59
64
  */
60
65
  max: string;
61
66
  /**
67
+ * This is deprecated, the popout will now adjust automatically based on available space.
62
68
  * Forces the opening direction of the calendar modal to be always left or right.
63
- * This setting can be useful when the input is smaller than the opening date picker
64
- * would be as by default the picker always opens towards right.
69
+ * @deprecated
65
70
  */
66
71
  direction: "left" | "right";
67
72
  /**
@@ -82,24 +87,29 @@ export default class DatePicker extends DatePicker_base {
82
87
  */
83
88
  isDateDisabled: DateDisabledPredicate;
84
89
  /**
85
- * Show the calendar modal, moving focus to the calendar inside.
86
- */
87
- show(): void;
88
- /**
89
- * Hide the calendar modal.
90
- * @param {boolean} moveFocusToButton controls whether focus should be returned to the date picker's button.
90
+ * Controls whether the date picker expands to fill the width of its container.
91
91
  */
92
- hide(moveFocusToButton?: boolean): void;
92
+ expand: boolean;
93
93
  render(): import("lit-html").TemplateResult<1>;
94
94
  private createDateFormatters;
95
95
  private focusFirst;
96
96
  private focusLast;
97
97
  private handleDaySelect;
98
- private toggleOpen;
98
+ private handleOpen;
99
+ private handleClose;
99
100
  private handleBlur;
100
101
  private handleFocus;
101
102
  private handleInputChange;
102
103
  private setValue;
104
+ /**
105
+ * Hide the date picker programmatically.
106
+ * @param moveFocusToButton A boolean option to move the focus to the original button that opens the popout.
107
+ */
108
+ hide(moveFocusToButton?: boolean): void;
109
+ /**
110
+ * Show the date picker programmatically.
111
+ */
112
+ show(): void;
103
113
  }
104
114
  declare global {
105
115
  interface HTMLElementTagNameMap {
@@ -37,12 +37,19 @@ export default class Dropdown extends Dropdown_base {
37
37
  */
38
38
  size: "s" | "m" | "l";
39
39
  connectedCallback(): void;
40
- hide(moveFocusToButton?: boolean): void;
41
- show(): void;
42
40
  render(): import("lit-html").TemplateResult<1>;
43
41
  private handleBlur;
44
42
  private handleOpen;
45
43
  private handleClose;
44
+ /**
45
+ * Hide the dropdown programmatically.
46
+ * @param moveFocusToButton A boolean option to move the focus to the original button that opens the dropdown.
47
+ */
48
+ hide(moveFocusToButton?: boolean): void;
49
+ /**
50
+ * Show the dropdown programmatically.
51
+ */
52
+ show(): void;
46
53
  }
47
54
  declare global {
48
55
  interface HTMLElementTagNameMap {
@@ -26,6 +26,17 @@ export default class Fieldset extends LitElement {
26
26
  * Optional error to be shown with the fieldset. Alternatively use the error slot.
27
27
  */
28
28
  error?: string;
29
+ /**
30
+ * Determines whether the fieldset is required or not.
31
+ * A fieldset marked as required will be announced as such to users of assistive technology.
32
+ * When using this property you need to also set “novalidate” attribute on a form element to prevent browser from displaying its own validation errors.
33
+ */
34
+ required: boolean;
35
+ /**
36
+ * Visually hide the required indicator, but still show
37
+ * required attribute to assistive technologies like screen readers.
38
+ */
39
+ hideRequired: boolean;
29
40
  render(): import("lit-html").TemplateResult<1>;
30
41
  protected get hasHint(): boolean;
31
42
  protected get hasError(): boolean;
@@ -44,3 +44,4 @@ export { default as Divider } from "./divider/Divider.js";
44
44
  export { default as Qrcode } from "./qrcode/Qrcode.js";
45
45
  export { default as Drawer } from "./drawer/Drawer.js";
46
46
  export { default as NavToggle } from "./nav-toggle/NavToggle.js";
47
+ export { default as Range } from "./range/Range.js";
@@ -22,6 +22,7 @@ export default class Input extends Input_base {
22
22
  static styles: import("lit").CSSResult[];
23
23
  private startSlot;
24
24
  private endSlot;
25
+ private direction;
25
26
  /**
26
27
  * The type of the input.
27
28
  */
@@ -30,8 +31,13 @@ export default class Input extends Input_base {
30
31
  * Controls whether the input expands to fill the width of its container.
31
32
  */
32
33
  expand: boolean;
34
+ /**
35
+ * Optionally disallow certain characters from being used inside the input, using a regex pattern.
36
+ */
37
+ disallowPattern?: string;
33
38
  render(): import("lit-html").TemplateResult<1>;
34
39
  private handleKeydown;
40
+ private handleInputChange;
35
41
  }
36
42
  declare global {
37
43
  interface HTMLElementTagNameMap {
@@ -1,3 +1,6 @@
1
1
  import "../stack/Stack.js";
2
2
  import "../icon/Icon.js";
3
3
  import "../button/Button.js";
4
+ import "../dropdown/Dropdown.js";
5
+ import "../dropdown-item/DropdownItem.js";
6
+ import "../tooltip/Tooltip.js";
@@ -0,0 +1,45 @@
1
+ import { LitElement } from "lit";
2
+ declare const Range_base: (new (...args: any[]) => import("../common/mixins/FormAssociatedMixin.js").FormAssociatedMixinInterface) & (new (...args: any[]) => import("../common/mixins/AutocompleteMixin.js").AutocompleteMixinInterface) & (new (...args: any[]) => import("../common/mixins/ReadonlyMixin.js").ReadonlyMixinInterface) & (new (...args: any[]) => import("../common/mixins/InputMixin.js").InputMixinInterface) & (new (...args: any[]) => import("../common/mixins/FocusableMixin.js").FocusableMixinInterface) & typeof LitElement;
3
+ /**
4
+ * Range input lets user specify a numeric value using a slider which
5
+ * must be no less than a given value, and no more than another given value.
6
+ *
7
+ * @status draft
8
+ * @category form
9
+ * @slot label - Use when a label requires more than plain text.
10
+ * @slot hint - Optional slot that holds hint text for the input.
11
+ * @slot error - Optional slot that holds error text for the input.
12
+ *
13
+ * @cssprop [--n-range-thumb-size=20px] - Controls the size of the thumb.
14
+ * @cssprop [--n-range-track-color-active=var(--n-color-accent)] - Controls the color of the portion of the track that represents the current value.
15
+ * @cssprop [--n-range-track-color-inactive=var(--n-color-border-strong)] - Controls the color of the portion of the track that represents the remaining value.
16
+ * @cssprop [--n-range-track-size=3px] - Controls the height of the track.
17
+ */
18
+ export default class Range extends Range_base {
19
+ static styles: import("lit").CSSResult[];
20
+ private direction;
21
+ /**
22
+ * Minimum value for the range slider.
23
+ */
24
+ min: number;
25
+ /**
26
+ * Maximum value for the range slider.
27
+ */
28
+ max: number;
29
+ /**
30
+ * Step amount for the range slider.
31
+ */
32
+ step: number;
33
+ /**
34
+ * Controls whether the input expands to fill the width of its container.
35
+ */
36
+ expand: boolean;
37
+ render(): import("lit-html").TemplateResult<1>;
38
+ protected handleInput(e: Event): void;
39
+ }
40
+ declare global {
41
+ interface HTMLElementTagNameMap {
42
+ "nord-range": Range;
43
+ }
44
+ }
45
+ export {};
@@ -0,0 +1,2 @@
1
+ import "../button/Button.js";
2
+ import "../stack/Stack.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nordhealth/components",
3
- "version": "2.8.2",
3
+ "version": "2.10.0",
4
4
  "description": "This package includes Nord Design System web components",
5
5
  "author": "Nordhealth <support@nordhealth.design>",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -179,5 +179,5 @@
179
179
  }
180
180
  ]
181
181
  },
182
- "gitHead": "961220bce46b2e67be85bc9bdbdfec0d57301fc3"
182
+ "gitHead": "44b5b1b7735a0e849af86635cbf59e03032ee099"
183
183
  }
@@ -1,2 +0,0 @@
1
- import{_ as t}from"./query-assigned-elements-e6cbac30.js";import{y as e}from"./lit-element-9178eae5.js";import{e as r}from"./property-03f59dce.js";import{E as i}from"./EventController-d99ebeef.js";import{S as o}from"./SlotController-89834aef.js";import{N as s}from"./events-731d0007.js";import"./VisuallyHidden.js";class n{constructor(t,e){this.host=t,this.options=e,this.handleFormData=t=>{const{disabled:e,name:r}=this.host;if(e)return;const i=this.options.value();r&&null!=i&&t.formData.append(r,i)},t.addController(this),this.events=new i(t)}hostConnected(){this.host.form&&this.events.listen(this.host.form,"formdata",this.handleFormData)}}function h(i){class h extends i{constructor(){super(...arguments),this.labelSlot=new o(this,"label"),this.errorSlot=new o(this,"error"),this.hintSlot=new o(this,"hint"),this.formData=new n(this,{value:()=>this.formValue}),this.inputId="input",this.errorId="error",this.hintId="hint",this.label="",this.hideLabel=!1,this.required=!1}get formValue(){return this.value}handleInput(t){t.stopPropagation();const e=t.target;this.value=e.value,this.dispatchEvent(new s("input"))}handleChange(t){t.stopPropagation(),this.dispatchEvent(new s("change"))}renderLabel(){const t=e`<label for="${this.inputId}"><slot name="label">${this.label}</slot></label><div class="n-caption n-hint" id="${this.hintId}" ?hidden="${!this.hasHint}"><slot name="hint">${this.hint}</slot></div>`;return this.hideLabel?e`<nord-visually-hidden>${t}</nord-visually-hidden>`:e`<div class="n-label-container">${t}</div>`}renderError(){return e`<div class="n-caption n-error" id="${this.errorId}" role="alert" ?hidden="${!this.hasError}"><slot name="error">${this.error}</slot></div>`}getDescribedBy(){const{hasHint:t,hasError:e}=this;return t&&e?`${this.hintId} ${this.errorId}`:t?this.hintId:e?this.errorId:void 0}getInvalid(){return this.hasError?"true":void 0}get hasHint(){return Boolean(this.hint)||this.hintSlot.hasContent}get hasError(){return Boolean(this.error)||this.errorSlot.hasContent}}return t([r()],h.prototype,"label",void 0),t([r()],h.prototype,"hint",void 0),t([r({type:Boolean,attribute:"hide-label"})],h.prototype,"hideLabel",void 0),t([r()],h.prototype,"placeholder",void 0),t([r()],h.prototype,"error",void 0),t([r({type:Boolean})],h.prototype,"required",void 0),h}export{h as F};
2
- //# sourceMappingURL=FormAssociatedMixin-0d57fdc8.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormAssociatedMixin-0d57fdc8.js","sources":["../src/common/controllers/FormDataController.ts","../src/common/mixins/FormAssociatedMixin.ts"],"sourcesContent":["import { ReactiveController, ReactiveControllerHost } from \"lit\"\nimport { InputMixinInterface } from \"../mixins/InputMixin.js\"\nimport { EventController } from \"./EventController.js\"\n\ntype FormDataOptions = {\n value: () => string | undefined\n}\n\nexport class FormDataController implements ReactiveController {\n private events: EventController\n constructor(private host: ReactiveControllerHost & InputMixinInterface, private options: FormDataOptions) {\n host.addController(this)\n this.events = new EventController(host)\n }\n\n hostConnected() {\n if (this.host.form) {\n this.events.listen(this.host.form, \"formdata\", this.handleFormData)\n }\n }\n\n private handleFormData = (e: FormDataEvent) => {\n const { disabled, name } = this.host\n\n if (disabled) {\n return\n }\n\n const value = this.options.value()\n\n if (name && value != null) {\n e.formData.append(name, value)\n }\n }\n}\n","/* eslint-disable max-classes-per-file */\nimport { html, LitElement, TemplateResult } from \"lit\"\nimport { property } from \"lit/decorators.js\"\nimport { FormDataController } from \"../controllers/FormDataController.js\"\nimport { SlotController } from \"../controllers/SlotController.js\"\nimport { NordEvent } from \"../events.js\"\nimport { InputMixinInterface } from \"./InputMixin.js\"\nimport \"../../visually-hidden/VisuallyHidden.js\"\n\ntype Constructor<T = Record<string, unknown>> = new (...args: any[]) => T\ntype NativeInputElement = HTMLSelectElement | HTMLInputElement | HTMLTextAreaElement\n\nexport declare class FormAssociatedMixinInterface {\n label: string\n required: boolean\n hint?: string\n hideLabel: boolean\n placeholder?: string\n error?: string\n expand: boolean\n\n protected inputId: string\n protected errorId: string\n protected hintId: string\n protected labelSlot: SlotController\n protected hintSlot: SlotController\n protected errorSlot: SlotController\n protected formData: FormDataController\n\n protected get formValue(): string | undefined\n protected get hasError(): boolean\n protected get hasHint(): boolean\n\n protected handleChange(e: Event): void\n protected handleInput(e: Event): void\n protected renderLabel(): TemplateResult\n protected renderError(): TemplateResult\n protected getDescribedBy(): string | undefined\n protected getInvalid(): \"true\" | undefined\n}\n\nexport function FormAssociatedMixin<T extends Constructor<InputMixinInterface & LitElement>>(superClass: T) {\n // TODO: would be nice if custom elements analyzer could pick up the slot docs from the mixin\n\n /**\n * @slot label - Use when a label requires more than plain text.\n * @slot hint - Use when a hint requires more than plain text.\n * @slot error - Optional slot that holds error text for the input.\n */\n class FormAssociatedElement extends superClass {\n protected labelSlot = new SlotController(this, \"label\")\n protected errorSlot = new SlotController(this, \"error\")\n protected hintSlot = new SlotController(this, \"hint\")\n protected formData = new FormDataController(this, { value: () => this.formValue })\n\n protected get formValue() {\n return this.value\n }\n\n protected inputId = \"input\"\n protected errorId = \"error\"\n protected hintId = \"hint\"\n\n /**\n * Label for the input.\n */\n @property() label: string = \"\"\n\n /**\n * Optional hint text to be displayed with the input. Alternatively use the hint slot.\n */\n @property() hint?: string\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @property({ type: Boolean, attribute: \"hide-label\" }) hideLabel = false\n\n /**\n * Placeholder text to display within the input.\n */\n @property() placeholder?: string\n\n /**\n * Optional error to be shown with the input. Alternatively use the error slot.\n */\n @property() error?: string\n\n /**\n * Determines whether the input is required or not.\n * An input marked as required will be announced as such to users of assistive technology.\n * When using this property you need to also set “novalidate” attribute on a form element to prevent browser from displaying its own validation errors.\n */\n @property({ type: Boolean }) required = false\n\n protected handleInput(e: Event) {\n e.stopPropagation()\n const target = e.target as NativeInputElement\n this.value = target.value\n\n /**\n * Fired as the user types into the input.\n */\n this.dispatchEvent(new NordEvent(\"input\"))\n }\n\n protected handleChange(e: Event) {\n e.stopPropagation()\n\n /**\n * Fired whenever the input's value is changed via user interaction.\n */\n this.dispatchEvent(new NordEvent(\"change\"))\n }\n\n protected renderLabel() {\n const label = html`\n <label for=${this.inputId}>\n <slot name=\"label\">${this.label}</slot>\n </label>\n\n <div class=\"n-caption n-hint\" id=${this.hintId} ?hidden=${!this.hasHint}>\n <slot name=\"hint\">${this.hint}</slot>\n </div>\n `\n\n return this.hideLabel\n ? html`<nord-visually-hidden>${label}</nord-visually-hidden>`\n : html`<div class=\"n-label-container\">${label}</div>`\n }\n\n protected renderError() {\n return html`\n <div class=\"n-caption n-error\" id=${this.errorId} role=\"alert\" ?hidden=${!this.hasError}>\n <slot name=\"error\">${this.error}</slot>\n </div>\n `\n }\n\n protected getDescribedBy() {\n const { hasHint, hasError } = this\n\n if (hasHint && hasError) {\n return `${this.hintId} ${this.errorId}`\n }\n if (hasHint) {\n return this.hintId\n }\n if (hasError) {\n return this.errorId\n }\n\n return undefined\n }\n\n protected getInvalid() {\n return this.hasError ? \"true\" : undefined\n }\n\n protected get hasHint() {\n return Boolean(this.hint) || this.hintSlot.hasContent\n }\n\n protected get hasError() {\n return Boolean(this.error) || this.errorSlot.hasContent\n }\n }\n\n return FormAssociatedElement as unknown as Constructor<FormAssociatedMixinInterface> & T\n}\n"],"names":["FormDataController","constructor","host","options","this","handleFormData","e","disabled","name","value","formData","append","addController","events","EventController","hostConnected","form","listen","FormAssociatedMixin","superClass","FormAssociatedElement","labelSlot","SlotController","errorSlot","hintSlot","formValue","inputId","errorId","hintId","label","hideLabel","required","handleInput","stopPropagation","target","dispatchEvent","NordEvent","handleChange","renderLabel","html","hasHint","hint","renderError","hasError","error","getDescribedBy","getInvalid","undefined","Boolean","hasContent","__decorate","property","prototype","type","attribute"],"mappings":"iUAQaA,EAEXC,YAAoBC,EAA4DC,GAA5DC,KAAIF,KAAJA,EAA4DE,KAAOD,QAAPA,EAWxEC,KAAAC,eAAkBC,IACxB,MAAMC,SAAEA,EAAQC,KAAEA,GAASJ,KAAKF,KAEhC,GAAIK,EACF,OAGF,MAAME,EAAQL,KAAKD,QAAQM,QAEvBD,GAAiB,MAATC,GACVH,EAAEI,SAASC,OAAOH,EAAMC,EACzB,EArBDP,EAAKU,cAAcR,MACnBA,KAAKS,OAAS,IAAIC,EAAgBZ,EACnC,CAEDa,gBACMX,KAAKF,KAAKc,MACZZ,KAAKS,OAAOI,OAAOb,KAAKF,KAAKc,KAAM,WAAYZ,KAAKC,eAEvD,ECsBG,SAAUa,EAA6EC,GAQ3F,MAAMC,UAA8BD,EAApClB,kCACYG,KAASiB,UAAG,IAAIC,EAAelB,KAAM,SACrCA,KAASmB,UAAG,IAAID,EAAelB,KAAM,SACrCA,KAAQoB,SAAG,IAAIF,EAAelB,KAAM,QACpCA,KAAAM,SAAW,IAAIV,EAAmBI,KAAM,CAAEK,MAAO,IAAML,KAAKqB,YAM5DrB,KAAOsB,QAAG,QACVtB,KAAOuB,QAAG,QACVvB,KAAMwB,OAAG,OAKPxB,KAAKyB,MAAW,GAU0BzB,KAAS0B,WAAG,EAiBrC1B,KAAQ2B,UAAG,CAyEzC,CA/GeN,gBACZ,OAAOrB,KAAKK,KACb,CAsCSuB,YAAY1B,GACpBA,EAAE2B,kBACF,MAAMC,EAAS5B,EAAE4B,OACjB9B,KAAKK,MAAQyB,EAAOzB,MAKpBL,KAAK+B,cAAc,IAAIC,EAAU,SAClC,CAESC,aAAa/B,GACrBA,EAAE2B,kBAKF7B,KAAK+B,cAAc,IAAIC,EAAU,UAClC,CAESE,cACR,MAAMT,EAAQU,CAAI,eACHnC,KAAKsB,+BACKtB,KAAKyB,yDAGOzB,KAAKwB,qBAAmBxB,KAAKoC,8BAC1CpC,KAAKqC,oBAI7B,OAAOrC,KAAK0B,UACRS,CAAI,yBAAyBV,2BAC7BU,CAAI,kCAAkCV,SAC3C,CAESa,cACR,OAAOH,CAAI,sCAC2BnC,KAAKuB,mCAAiCvB,KAAKuC,gCACxDvC,KAAKwC,oBAG/B,CAESC,iBACR,MAAML,QAAEA,EAAOG,SAAEA,GAAavC,KAE9B,OAAIoC,GAAWG,EACN,GAAGvC,KAAKwB,UAAUxB,KAAKuB,UAE5Ba,EACKpC,KAAKwB,OAEVe,EACKvC,KAAKuB,aADd,CAKD,CAESmB,aACR,OAAO1C,KAAKuC,SAAW,YAASI,CACjC,CAEaP,cACZ,OAAOQ,QAAQ5C,KAAKqC,OAASrC,KAAKoB,SAASyB,UAC5C,CAEaN,eACZ,OAAOK,QAAQ5C,KAAKwC,QAAUxC,KAAKmB,UAAU0B,UAC9C,EAGH,OAtGcC,EAAA,CAAXC,KAA6B/B,EAAAgC,UAAA,aAAA,GAKlBF,EAAA,CAAXC,KAAwB/B,EAAAgC,UAAA,YAAA,GAK6BF,EAAA,CAArDC,EAAS,CAAEE,KAAML,QAASM,UAAW,gBAAiClC,EAAAgC,UAAA,iBAAA,GAK3DF,EAAA,CAAXC,KAA+B/B,EAAAgC,UAAA,mBAAA,GAKpBF,EAAA,CAAXC,KAAyB/B,EAAAgC,UAAA,aAAA,GAOGF,EAAA,CAA5BC,EAAS,CAAEE,KAAML,WAA2B5B,EAAAgC,UAAA,gBAAA,GA2ExChC,CACT"}
@@ -1,2 +0,0 @@
1
- import{i as n}from"./lit-element-9178eae5.js";const t=n`.n-caption,::slotted(.n-caption){font-size:var(--n-font-size-s);line-height:var(--n-line-height-caption)}.n-label-container{padding-block-end:var(--n-space-s);display:inline-block}.n-label,::slotted(label),label{display:block!important;color:var(--n-color-text);font-family:var(--n-font-family);font-size:var(--n-font-size-m);font-weight:var(--n-font-weight-heading)!important;line-height:var(--n-line-height-heading);margin:0!important}.n-hint{padding-block-start:calc(var(--n-space-s)/ 2);color:var(--n-color-text-weaker)}.n-error{margin-block-start:var(--n-space-s);color:var(--n-color-text-error)}`;export{t as s};
2
- //# sourceMappingURL=FormField-081da729.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormField-081da729.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- import{_ as t,e}from"./query-assigned-elements-e6cbac30.js";import{i as o,y as i,s}from"./lit-element-9178eae5.js";import{e as n}from"./property-03f59dce.js";import{t as r}from"./state-70f38ceb.js";import{i as a}from"./query-2d22378e.js";import{c as l,l as p,o as h,f as d,s as c,h as m,a as u}from"./positioning-3bbd3548.js";import{L as f}from"./LightDismissController-a2645ae6.js";import{S as v}from"./ScrollbarController-680392c9.js";import{N as g}from"./events-731d0007.js";import{s as b}from"./Component-92eb6234.js";import{D as y}from"./DirectionController-8b298382.js";import{o as w}from"./observe-a9c6dfb6.js";import{E as x}from"./EventController-d99ebeef.js";function E(e){class o extends e{constructor(){super(...arguments),this.open=!1,this.align="start",this.position="block-end"}}return t([n({type:Boolean,reflect:!0})],o.prototype,"open",void 0),t([n({reflect:!0})],o.prototype,"align",void 0),t([n({reflect:!0})],o.prototype,"position",void 0),o}const C=o`:host{position:fixed;pointer-events:none;z-index:var(--n-index-popout);left:var(--_n-popout-position-x);top:var(--_n-popout-position-y);color:var(--n-color-text);opacity:0;transition:opacity var(--n-transition-slowly)}.n-popout{pointer-events:none;transform:translateY(-10px) scale(.97);visibility:hidden;transition:transform var(--n-transition-slowly),visibility var(--n-transition-slowly);transform-origin:top left;will-change:transform,opacity,visibility;background:var(--n-color-surface);box-shadow:var(--n-box-shadow-popout);border-radius:var(--n-border-radius-s)}:host([open]){opacity:1}:host([open]) .n-popout{transition-property:transform;visibility:visible;pointer-events:auto;transform:translateY(0) translateX(0) scale(1)}@media (max-width:35.9375em){:host{position:fixed;inset:0;overflow-y:auto;opacity:1;background:0 0;transition:background var(--n-transition-mobile)}:host([open]){pointer-events:auto;background:var(--n-color-overlay)}:host .n-popout{position:fixed;inset:0;inset-block-start:auto;transform:translateY(100%);transition:transform var(--n-transition-mobile),visibility var(--n-transition-mobile);transform-origin:bottom center;border-radius:0}}.top-end,.top-start{transform:translateY(10px) scale(.97)}.left-end,.left-start{transform:translateX(10px) scale(.97)}.right-end,.right-start{transform:translateX(-10px) scale(.97)}.bottom-start.is-rtl,.left-end,.top-end{transform-origin:bottom right}.bottom-end,.left-start,.top-start.is-rtl{transform-origin:top right}.bottom-end.is-rtl,.right-end,.right-start{transform-origin:bottom left}.right-start,.top-end.is-rtl{transform-origin:top left}`,j=matchMedia("(max-width: 35.9375em)");let k=class extends(E(s)){constructor(){super(...arguments),this.scrollBar=new v(this),this.dismiss=new f(this,{isOpen:()=>this.open,onDismiss:t=>this.hide("click"!==t.type),isDismissible:t=>t!==this.popout&&t!==this.targetElement}),this.events=new x(this),this.direction=new y(this),this.smallViewport=j.matches,this.id="",this.enableScroll=()=>{this.open||this.scrollBar.restore()},this.updatePosition=async()=>{var t;const{x:e,y:o,placement:i,middlewareData:s}=await l(this.anchorElement,this,{strategy:"fixed",placement:p(this.position,this.align,this.direction.dir),middleware:[h(8),d(),c({padding:8}),m()]});this.computedPosition=i,this.style.setProperty("--_n-popout-position-x",`${e}px`),this.style.setProperty("--_n-popout-position-y",`${o}px`),(null===(t=s.hide)||void 0===t?void 0:t.referenceHidden)&&this.hide()},this.toggleOpen=t=>{t.preventDefault(),this.open?this.hide(!1):this.smallViewport?this.show():this.updatePosition().then((()=>this.show()))},this.handleMediaQueryChange=()=>{var t;this.smallViewport=j.matches,null===(t=this.cleanupAutoUpdate)||void 0===t||t.call(this),!this.smallViewport&&this.open?(this.cleanupAutoUpdate=u(this.anchorElement,this,this.updatePosition),this.scrollBar.restore()):this.open&&this.scrollBar.hide()}}show(){this.open||(this.open=!0,this.updateComplete.then((()=>{this.dispatchEvent(new g("open"))})))}hide(t=!0){var e;this.open&&(this.open=!1,null===(e=this.cleanupAutoUpdate)||void 0===e||e.call(this),this.dispatchEvent(new g("close")),t&&this.targetElement.focus({preventScroll:!0}))}firstUpdated(){this.smallViewport||this.updatePosition()}connectedCallback(){super.connectedCallback(),this.targetElement=this.getToggle(),this.anchorElement=this.anchor?this.getAnchor():this.targetElement,this.events.listen(this.targetElement,"click",this.toggleOpen),this.events.listen(j,"change",this.handleMediaQueryChange)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this.cleanupAutoUpdate)||void 0===t||t.call(this),this.targetElement.removeAttribute("aria-expanded")}render(){return i`<div class="n-popout ${this.computedPosition} is-${this.direction.dir}" aria-hidden="${this.open?"false":"true"}" @transitionend="${this.enableScroll}"><slot></slot></div>`}handleIdChange(){this.id||console.warn("NORD: popout requires an id attribute and value")}handleOpenChange(){var t;this.targetElement.setAttribute("aria-expanded",`${this.open}`),this.open?this.smallViewport?this.scrollBar.hide():this.cleanupAutoUpdate=u(this.anchorElement,this,this.updatePosition):null===(t=this.cleanupAutoUpdate)||void 0===t||t.call(this)}getToggle(){const t=this.getRootNode().querySelector(`[aria-controls='${this.id}']`);return t instanceof HTMLSlotElement?t.assignedElements()[0]:t}getAnchor(){const t=this.getRootNode().querySelector(`#${this.anchor}`);return t instanceof HTMLSlotElement?t.assignedElements()[0]:t}};k.styles=[b,C],t([a(".n-popout",!0)],k.prototype,"popout",void 0),t([r()],k.prototype,"computedPosition",void 0),t([r()],k.prototype,"smallViewport",void 0),t([n({reflect:!0})],k.prototype,"id",void 0),t([n({reflect:!0})],k.prototype,"anchor",void 0),t([w("id")],k.prototype,"handleIdChange",null),t([w("open")],k.prototype,"handleOpenChange",null),k=t([e("nord-popout")],k);var P=k;export{E as F,P};
2
- //# sourceMappingURL=Popout-08f11a8d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Popout-08f11a8d.js","sources":["../src/common/mixins/FloatingComponentMixin.ts","../src/popout/Popout.ts"],"sourcesContent":["/* eslint-disable max-classes-per-file */\nimport { LitElement } from \"lit\"\nimport { property } from \"lit/decorators.js\"\nimport { Alignment } from \"@floating-ui/dom\"\nimport { LogicalSide } from \"../positioning.js\"\n\ntype Constructor<T = Record<string, unknown>> = new (...args: any[]) => T\n\nexport declare class FloatingMixinInterface {\n open: boolean\n align: Alignment\n position: LogicalSide\n}\n\nexport function FloatingMixin<T extends Constructor<LitElement>>(\n superClass: T\n): Constructor<FloatingMixinInterface> & T {\n class FloatingElement extends superClass {\n /**\n * Controls whether the component is open or not.\n */\n @property({ type: Boolean, reflect: true }) open = false\n\n /**\n * Set the alignment in relation to the toggle (or anchor) depending on the position.\n * `start` will align it to the left of the toggle (or anchor).\n * `end` will align it to the right of the toggle (or anchor).\n * Setting the `position` to `inline-start` or `inline-end` will switch\n * `start` and `end` to the top and bottom respectively.\n */\n @property({ reflect: true }) align: \"start\" | \"end\" = \"start\"\n\n /**\n * Set the position in relation to the toggle (or anchor).\n * Options follow logical properties.\n * `block-start` and `block-end` referring to top and bottom respectively,\n * `inline-start` and `inline-end` referring to left and right respectively.\n */\n @property({ reflect: true }) position: \"block-end\" | \"block-start\" | \"inline-start\" | \"inline-end\" = \"block-end\"\n }\n\n return FloatingElement\n}\n","import { LitElement, html } from \"lit\"\nimport { customElement, property, query, state } from \"lit/decorators.js\"\nimport { computePosition, shift, offset, flip, hide, autoUpdate, Placement } from \"@floating-ui/dom\"\nimport { LightDismissController } from \"../common/controllers/LightDismissController.js\"\nimport { ScrollbarController } from \"../common/controllers/ScrollbarController.js\"\nimport { NordEvent } from \"../common/events.js\"\nimport { FloatingMixin } from \"../common/mixins/FloatingComponentMixin.js\"\n\nimport componentStyle from \"../common/styles/Component.css\"\nimport style from \"./Popout.css\"\nimport { logicalToPhysical } from \"../common/positioning.js\"\nimport { DirectionController } from \"../common/controllers/DirectionController.js\"\nimport { observe } from \"../common/decorators/observe.js\"\nimport { EventController } from \"../common/controllers/EventController.js\"\n\n/*\n * The breakpoint width to switch between \"sheet\" design and floating design\n */\nconst mediaQuery = matchMedia(\"(max-width: 35.9375em)\")\n\n/**\n * Popouts are small overlays that open on demand. They let users access additional content and actions without cluttering the page.\n *\n * @status ready\n * @category overlay\n * @slot - The popout content.\n */\n@customElement(\"nord-popout\")\nexport default class Popout extends FloatingMixin(LitElement) {\n static styles = [componentStyle, style]\n\n private targetElement!: HTMLElement\n private anchorElement!: Element\n private cleanupAutoUpdate?: ReturnType<typeof autoUpdate>\n\n @query(\".n-popout\", true) private popout!: HTMLDivElement\n\n private scrollBar = new ScrollbarController(this)\n\n /**\n * Handle dismissal of the popout, clicking outside the target button and popout.\n */\n private dismiss = new LightDismissController(this, {\n isOpen: () => this.open,\n onDismiss: e => this.hide(e.type !== \"click\"),\n isDismissible: node => node !== this.popout && node !== this.targetElement,\n })\n\n private events = new EventController(this)\n private direction = new DirectionController(this)\n\n @state() private computedPosition?: Placement\n\n @state() private smallViewport = mediaQuery.matches\n\n /**\n * The id for the active element to reference via aria-controls.\n */\n @property({ reflect: true }) id: string = \"\"\n\n /**\n * Set an optional anchor element to align against, replacing the triggering element.\n */\n @property({ reflect: true }) anchor?: string\n\n /**\n * Show the popout, moving focus to the calendar inside.\n */\n show() {\n if (this.open) {\n return\n }\n\n this.open = true\n\n // we should only focus once the popout is visible after render is complete\n this.updateComplete.then(() => {\n /**\n * Dispatched when the popout is opened.\n */\n this.dispatchEvent(new NordEvent(\"open\"))\n })\n }\n\n /**\n * Hide the popout.\n * @param {boolean} moveFocusToButton prevent focus returning to the target\n * button. Default is true.\n */\n hide(moveFocusToButton = true) {\n if (!this.open) {\n return\n }\n\n this.open = false\n\n this.cleanupAutoUpdate?.()\n\n /**\n * Dispatched when the popout is closed.\n */\n this.dispatchEvent(new NordEvent(\"close\"))\n\n if (moveFocusToButton) {\n this.targetElement.focus({ preventScroll: true })\n }\n }\n\n /**\n * Position the popout on load.\n */\n firstUpdated() {\n if (!this.smallViewport) {\n this.updatePosition()\n }\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n this.targetElement = this.getToggle()\n this.anchorElement = this.anchor ? this.getAnchor() : this.targetElement\n\n this.events.listen(this.targetElement, \"click\", this.toggleOpen)\n this.events.listen(mediaQuery, \"change\", this.handleMediaQueryChange)\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n this.cleanupAutoUpdate?.()\n this.targetElement.removeAttribute(\"aria-expanded\")\n }\n\n render() {\n return html`\n <div\n class=\"n-popout ${this.computedPosition} is-${this.direction.dir}\"\n aria-hidden=${this.open ? \"false\" : \"true\"}\n @transitionend=${this.enableScroll}\n >\n <slot></slot>\n </div>\n `\n }\n\n @observe(\"id\")\n protected handleIdChange() {\n if (!this.id) {\n // eslint-disable-next-line no-console\n console.warn(\"NORD: popout requires an id attribute and value\")\n }\n }\n\n @observe(\"open\")\n protected handleOpenChange() {\n this.targetElement.setAttribute(\"aria-expanded\", `${this.open}`)\n\n if (this.open) {\n if (this.smallViewport) {\n // hide scrollbar and prevent scroll on body\n this.scrollBar.hide()\n } else {\n this.cleanupAutoUpdate = autoUpdate(this.anchorElement, this, this.updatePosition)\n }\n } else {\n this.cleanupAutoUpdate?.()\n }\n }\n\n private enableScroll = () => {\n // scrollbar should only be restored when the backdrop has transitioned\n // that way we avoid awkward double scrollbars.\n if (!this.open) {\n this.scrollBar.restore()\n }\n }\n\n /**\n * Get the position of the element toggling the popout\n * and position the popout underneath it, taking into account the optional placement.\n */\n private updatePosition = async () => {\n const { x, y, placement, middlewareData } = await computePosition(this.anchorElement, this, {\n strategy: \"fixed\",\n placement: logicalToPhysical(this.position, this.align, this.direction.dir),\n middleware: [\n offset(8),\n flip(),\n shift({\n padding: 8,\n }),\n hide(),\n ],\n })\n\n this.computedPosition = placement\n\n // use physical properties here since floating-ui\n // works exclusively in physical dimensions\n // we do all the mapping in logicalToPhysical\n this.style.setProperty(\"--_n-popout-position-x\", `${x}px`)\n this.style.setProperty(\"--_n-popout-position-y\", `${y}px`)\n\n if (middlewareData.hide?.referenceHidden) {\n this.hide()\n }\n }\n\n /**\n * Toggle the popout open or closed using state.\n * Updating the position to underneath the target button before the popout is opened.\n */\n private toggleOpen = (e: Event) => {\n e.preventDefault()\n if (this.open) {\n this.hide(false)\n } else if (!this.smallViewport) {\n this.updatePosition().then(() => this.show())\n } else {\n this.show()\n }\n }\n\n private getToggle() {\n const rootNode = this.getRootNode() as Document | ShadowRoot\n const toggle = <HTMLElement>rootNode.querySelector(`[aria-controls='${this.id}']`)\n\n if (toggle instanceof HTMLSlotElement) {\n return toggle.assignedElements()[0] as HTMLElement\n }\n\n return toggle\n }\n\n private getAnchor() {\n const rootNode = this.getRootNode() as Document | ShadowRoot\n const anchor = <HTMLElement>rootNode.querySelector(`#${this.anchor}`)\n\n if (anchor instanceof HTMLSlotElement) {\n return anchor.assignedElements()[0] as HTMLElement\n }\n\n return anchor\n }\n\n /**\n * Update the smallViewport flag to switch between \"sheet\" and \"floating\".\n * autoUpdate is needed when a viewport gets larger and the popout is open.\n */\n private handleMediaQueryChange = () => {\n this.smallViewport = mediaQuery.matches\n\n this.cleanupAutoUpdate?.()\n\n if (!this.smallViewport && this.open) {\n this.cleanupAutoUpdate = autoUpdate(this.anchorElement, this, this.updatePosition)\n this.scrollBar.restore()\n } else if (this.open) {\n this.scrollBar.hide()\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"nord-popout\": Popout\n }\n}\n"],"names":["FloatingMixin","superClass","FloatingElement","constructor","this","open","align","position","__decorate","property","type","Boolean","reflect","prototype","mediaQuery","matchMedia","Popout","LitElement","scrollBar","ScrollbarController","dismiss","LightDismissController","isOpen","onDismiss","e","hide","isDismissible","node","popout","targetElement","events","EventController","direction","DirectionController","smallViewport","matches","id","enableScroll","restore","updatePosition","async","x","y","placement","middlewareData","computePosition","anchorElement","strategy","logicalToPhysical","dir","middleware","offset","flip","shift","padding","computedPosition","style","setProperty","_a","referenceHidden","toggleOpen","preventDefault","show","then","handleMediaQueryChange","cleanupAutoUpdate","call","autoUpdate","updateComplete","dispatchEvent","NordEvent","moveFocusToButton","focus","preventScroll","firstUpdated","connectedCallback","super","getToggle","anchor","getAnchor","listen","disconnectedCallback","removeAttribute","render","html","handleIdChange","console","warn","handleOpenChange","setAttribute","toggle","getRootNode","querySelector","HTMLSlotElement","assignedElements","styles","componentStyle","query","state","observe","customElement"],"mappings":"4pBAcM,SAAUA,EACdC,GAEA,MAAMC,UAAwBD,EAA9BE,kCAI8CC,KAAIC,MAAG,EAStBD,KAAKE,MAAoB,QAQzBF,KAAQG,SAAgE,WACtG,EAED,OApB8CC,EAAA,CAA3CC,EAAS,CAAEC,KAAMC,QAASC,SAAS,KAAoBV,EAAAW,UAAA,YAAA,GAS3BL,EAAA,CAA5BC,EAAS,CAAEG,SAAS,KAAwCV,EAAAW,UAAA,aAAA,GAQhCL,EAAA,CAA5BC,EAAS,CAAEG,SAAS,KAA2FV,EAAAW,UAAA,gBAAA,GAG3GX,CACT,gmDCxBMY,EAAaC,WAAW,0BAU9B,IAAqBC,EAArB,cAAoChB,EAAciB,IAAlDd,kCASUC,KAAAc,UAAY,IAAIC,EAAoBf,MAKpCA,KAAAgB,QAAU,IAAIC,EAAuBjB,KAAM,CACjDkB,OAAQ,IAAMlB,KAAKC,KACnBkB,UAAWC,GAAKpB,KAAKqB,KAAgB,UAAXD,EAAEd,MAC5BgB,cAAeC,GAAQA,IAASvB,KAAKwB,QAAUD,IAASvB,KAAKyB,gBAGvDzB,KAAA0B,OAAS,IAAIC,EAAgB3B,MAC7BA,KAAA4B,UAAY,IAAIC,EAAoB7B,MAI3BA,KAAA8B,cAAgBpB,EAAWqB,QAKf/B,KAAEgC,GAAW,GAgHlChC,KAAYiC,aAAG,KAGhBjC,KAAKC,MACRD,KAAKc,UAAUoB,SAChB,EAOKlC,KAAcmC,eAAGC,gBACvB,MAAMC,EAAEA,EAACC,EAAEA,EAACC,UAAEA,EAASC,eAAEA,SAAyBC,EAAgBzC,KAAK0C,cAAe1C,KAAM,CAC1F2C,SAAU,QACVJ,UAAWK,EAAkB5C,KAAKG,SAAUH,KAAKE,MAAOF,KAAK4B,UAAUiB,KACvEC,WAAY,CACVC,EAAO,GACPC,IACAC,EAAM,CACJC,QAAS,IAEX7B,OAIJrB,KAAKmD,iBAAmBZ,EAKxBvC,KAAKoD,MAAMC,YAAY,yBAA0B,GAAGhB,OACpDrC,KAAKoD,MAAMC,YAAY,yBAA0B,GAAGf,QAE7B,UAAnBE,EAAenB,YAAI,IAAAiC,OAAA,EAAAA,EAAEC,kBACvBvD,KAAKqB,MACN,EAOKrB,KAAAwD,WAAcpC,IACpBA,EAAEqC,iBACEzD,KAAKC,KACPD,KAAKqB,MAAK,GACArB,KAAK8B,cAGf9B,KAAK0D,OAFL1D,KAAKmC,iBAAiBwB,MAAK,IAAM3D,KAAK0D,QAGvC,EA6BK1D,KAAsB4D,uBAAG,WAC/B5D,KAAK8B,cAAgBpB,EAAWqB,QAEV,QAAtBuB,EAAAtD,KAAK6D,yBAAiB,IAAAP,GAAAA,EAAAQ,KAAA9D,OAEjBA,KAAK8B,eAAiB9B,KAAKC,MAC9BD,KAAK6D,kBAAoBE,EAAW/D,KAAK0C,cAAe1C,KAAMA,KAAKmC,gBACnEnC,KAAKc,UAAUoB,WACNlC,KAAKC,MACdD,KAAKc,UAAUO,MAChB,CAEJ,CAlMCqC,OACM1D,KAAKC,OAITD,KAAKC,MAAO,EAGZD,KAAKgE,eAAeL,MAAK,KAIvB3D,KAAKiE,cAAc,IAAIC,EAAU,QAAQ,IAE5C,CAOD7C,KAAK8C,GAAoB,SAClBnE,KAAKC,OAIVD,KAAKC,MAAO,EAEU,QAAtBqD,EAAAtD,KAAK6D,yBAAiB,IAAAP,GAAAA,EAAAQ,KAAA9D,MAKtBA,KAAKiE,cAAc,IAAIC,EAAU,UAE7BC,GACFnE,KAAKyB,cAAc2C,MAAM,CAAEC,eAAe,IAE7C,CAKDC,eACOtE,KAAK8B,eACR9B,KAAKmC,gBAER,CAEDoC,oBACEC,MAAMD,oBAENvE,KAAKyB,cAAgBzB,KAAKyE,YAC1BzE,KAAK0C,cAAgB1C,KAAK0E,OAAS1E,KAAK2E,YAAc3E,KAAKyB,cAE3DzB,KAAK0B,OAAOkD,OAAO5E,KAAKyB,cAAe,QAASzB,KAAKwD,YACrDxD,KAAK0B,OAAOkD,OAAOlE,EAAY,SAAUV,KAAK4D,uBAC/C,CAEDiB,6BACEL,MAAMK,uBAEgB,QAAtBvB,EAAAtD,KAAK6D,yBAAiB,IAAAP,GAAAA,EAAAQ,KAAA9D,MACtBA,KAAKyB,cAAcqD,gBAAgB,gBACpC,CAEDC,SACE,OAAOC,CAAI,wBAEWhF,KAAKmD,uBAAuBnD,KAAK4B,UAAUiB,qBAC/C7C,KAAKC,KAAO,QAAU,2BACnBD,KAAKiC,mCAK3B,CAGSgD,iBACHjF,KAAKgC,IAERkD,QAAQC,KAAK,kDAEhB,CAGSC,yBACRpF,KAAKyB,cAAc4D,aAAa,gBAAiB,GAAGrF,KAAKC,QAErDD,KAAKC,KACHD,KAAK8B,cAEP9B,KAAKc,UAAUO,OAEfrB,KAAK6D,kBAAoBE,EAAW/D,KAAK0C,cAAe1C,KAAMA,KAAKmC,gBAG/C,QAAtBmB,EAAAtD,KAAK6D,yBAAiB,IAAAP,GAAAA,EAAAQ,KAAA9D,KAEzB,CAwDOyE,YACN,MACMa,EADWtF,KAAKuF,cACeC,cAAc,mBAAmBxF,KAAKgC,QAE3E,OAAIsD,aAAkBG,gBACbH,EAAOI,mBAAmB,GAG5BJ,CACR,CAEOX,YACN,MACMD,EADW1E,KAAKuF,cACeC,cAAc,IAAIxF,KAAK0E,UAE5D,OAAIA,aAAkBe,gBACbf,EAAOgB,mBAAmB,GAG5BhB,CACR,GAvNM9D,EAAA+E,OAAS,CAACC,EAAgBxC,GAMPhD,EAAA,CAAzByF,EAAM,aAAa,IAAqCjF,EAAAH,UAAA,cAAA,GAgBhDL,EAAA,CAAR0F,KAA4ClF,EAAAH,UAAA,wBAAA,GAEpCL,EAAA,CAAR0F,KAAkDlF,EAAAH,UAAA,qBAAA,GAKtBL,EAAA,CAA5BC,EAAS,CAAEG,SAAS,KAAuBI,EAAAH,UAAA,UAAA,GAKfL,EAAA,CAA5BC,EAAS,CAAEG,SAAS,KAAuBI,EAAAH,UAAA,cAAA,GAoF5CL,EAAA,CADC2F,EAAQ,OAMRnF,EAAAH,UAAA,iBAAA,MAGDL,EAAA,CADC2F,EAAQ,SAcRnF,EAAAH,UAAA,mBAAA,MA5IkBG,EAAMR,EAAA,CAD1B4F,EAAc,gBACMpF,SAAAA"}
@@ -1,2 +0,0 @@
1
- class t{constructor(t,e=document.body){this.scroller=e,this.resets=new Set,t.addController(this)}hostDisconnected(){this.restore()}get width(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){this.restore();const{width:t}=this,e=getComputedStyle(this.scroller),s=parseInt(e.paddingRight,10)||0;this.setStyle("--n-scrollbar-gutter",`${t+s}px`),this.setStyle("overflow","hidden"),this.setStyle("padding-right","var(--n-scrollbar-gutter)")}restore(){this.resets.forEach((t=>t())),this.resets.clear()}setStyle(t,e){const{style:s}=this.scroller,r=this.scroller.style.getPropertyValue(t);s.setProperty(t,e),this.resets.add((()=>s.setProperty(t,r)))}}export{t as S};
2
- //# sourceMappingURL=ScrollbarController-680392c9.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ScrollbarController-680392c9.js","sources":["../src/common/controllers/ScrollbarController.ts"],"sourcesContent":["import { ReactiveController, ReactiveControllerHost } from \"lit\"\n\nexport class ScrollbarController implements ReactiveController {\n private resets = new Set<() => void>()\n\n constructor(host: ReactiveControllerHost)\n constructor(host: ReactiveControllerHost, scroller: HTMLElement)\n\n constructor(host: ReactiveControllerHost, private scroller = document.body) {\n host.addController(this)\n }\n\n hostDisconnected() {\n this.restore()\n }\n\n // eslint-disable-next-line class-methods-use-this\n get width() {\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n }\n\n hide() {\n // in case hide() is called twice in succession\n this.restore()\n\n const { width } = this\n const computedStyle = getComputedStyle(this.scroller)\n const paddingRight = parseInt(computedStyle.paddingRight, 10) || 0\n\n // hiding the scrollbar slightly increases the width of the inner viewport.\n // this is fine for the modal, since it is accounted for there. but it causes layout shift for any other fixed position components/elements.\n // so we define a custom property here for the gutter value, since it can be inherited/used by any other component that has a fixed position e.g. toast-group.\n this.setStyle(\"--n-scrollbar-gutter\", `${width + paddingRight}px`)\n this.setStyle(\"overflow\", \"hidden\")\n this.setStyle(\"padding-right\", `var(--n-scrollbar-gutter)`)\n }\n\n restore() {\n this.resets.forEach(reset => reset())\n this.resets.clear()\n }\n\n private setStyle(property: string, value: string) {\n const { style } = this.scroller\n const previous = this.scroller.style.getPropertyValue(property)\n\n style.setProperty(property, value)\n this.resets.add(() => style.setProperty(property, previous))\n }\n}\n"],"names":["ScrollbarController","constructor","host","scroller","document","body","this","resets","Set","addController","hostDisconnected","restore","width","documentWidth","documentElement","clientWidth","Math","abs","window","innerWidth","hide","computedStyle","getComputedStyle","paddingRight","parseInt","setStyle","forEach","reset","clear","property","value","style","previous","getPropertyValue","setProperty","add"],"mappings":"MAEaA,EAMXC,YAAYC,EAAsCC,EAAWC,SAASC,MAApBC,KAAQH,SAARA,EAL1CG,KAAAC,OAAS,IAAIC,IAMnBN,EAAKO,cAAcH,KACpB,CAEDI,mBACEJ,KAAKK,SACN,CAGGC,YACF,MAAMC,EAAgBT,SAASU,gBAAgBC,YAC/C,OAAOC,KAAKC,IAAIC,OAAOC,WAAaN,EACrC,CAEDO,OAEEd,KAAKK,UAEL,MAAMC,MAAEA,GAAUN,KACZe,EAAgBC,iBAAiBhB,KAAKH,UACtCoB,EAAeC,SAASH,EAAcE,aAAc,KAAO,EAKjEjB,KAAKmB,SAAS,uBAAwB,GAAGb,EAAQW,OACjDjB,KAAKmB,SAAS,WAAY,UAC1BnB,KAAKmB,SAAS,gBAAiB,4BAChC,CAEDd,UACEL,KAAKC,OAAOmB,SAAQC,GAASA,MAC7BrB,KAAKC,OAAOqB,OACb,CAEOH,SAASI,EAAkBC,GACjC,MAAMC,MAAEA,GAAUzB,KAAKH,SACjB6B,EAAW1B,KAAKH,SAAS4B,MAAME,iBAAiBJ,GAEtDE,EAAMG,YAAYL,EAAUC,GAC5BxB,KAAKC,OAAO4B,KAAI,IAAMJ,EAAMG,YAAYL,EAAUG,IACnD"}
@@ -1,2 +0,0 @@
1
- import{_ as n}from"./query-assigned-elements-e6cbac30.js";import{e as r}from"./property-03f59dce.js";import{i as o}from"./lit-element-9178eae5.js";function i(o){class i extends o{constructor(){super(...arguments),this.readonly=!1}}return n([r({type:Boolean,reflect:!0})],i.prototype,"readonly",void 0),i}const t=o`:host{--_n-input-inline-size:var(--n-input-inline-size, 240px);--_n-input-background:var(--n-input-background, var(--n-color-active));--_n-input-color:var(--n-input-color, var(--n-color-text));--_n-input-border-color:var(--n-input-border-color, var(--n-color-border-strong));--_n-input-border-radius:var(--n-input-border-radius, var(--n-border-radius-s))}.n-input-container{position:relative;inline-size:var(--_n-input-inline-size)}.n-input{background:var(--_n-input-background);color:var(--_n-input-color);padding:calc(var(--n-space-s) - 1px) calc(var(--n-space-s) * 1.6);border-radius:var(--_n-input-border-radius);border:1px solid var(--_n-input-border-color);font-family:var(--n-font-family);font-size:var(--n-font-size-m);line-height:var(--n-line-height-form);inline-size:100%;transition:border var(--n-transition-slowly),box-shadow var(--n-transition-slowly),background var(--n-transition-slowly)}@media (max-width:480px){.n-input{font-size:var(--n-font-size-l)}}:host([expand]){--_n-input-inline-size:100%;inline-size:100%}.n-input:hover,.n-label-container:hover+.n-input-container .n-input{--_n-input-border-color:var(--n-input-border-color, var(--n-color-border-hover))}.n-input:focus{--_n-input-border-color:var(--n-input-border-color, var(--n-color-accent));--_n-input-background:var(--n-input-background, var(--n-color-surface));outline:0;box-shadow:0 0 0 1px var(--_n-input-border-color)}.n-input::placeholder{color:var(--n-color-text-weakest)}.n-input[aria-invalid=true]{--_n-input-border-color:var(--n-input-border-color, var(--n-color-status-danger))!important}.n-input:disabled,.n-input[readonly],.n-label-container:hover+.n-input-container .n-input:disabled,.n-label-container:hover+.n-input-container .n-input[readonly]{--_n-input-border-color:var(--n-input-border-color, var(--n-color-active));--_n-input-color:var(--n-input-color, var(--n-color-text-weakest))}.n-input[readonly],.n-label-container:hover+.n-input-container .n-input[readonly]{--_n-input-color:var(--n-input-color, var(--n-color-text-weak))}.n-input[readonly]:focus{--_n-input-border-color:var(--n-input-border-color, var(--n-color-accent))}:host([size="s"]) :is(.n-input-container, .n-input){font-size:var(--n-font-size-s)}:host([size="s"]) .n-input{padding:calc((var(--n-space-s)/ 2) - 2px) calc((var(--n-space-s)/ 2) * 1.6)}:host([size="l"]) :is(.n-input-container, .n-input){font-size:var(--n-font-size-l)}:host([size="l"]) .n-input{padding-block-start:calc(var(--n-space-m)/ 1.25);padding-block-end:calc(var(--n-space-m)/ 1.25)}`;export{i as R,t as s};
2
- //# sourceMappingURL=TextField-a7382912.js.map
@@ -1,7 +0,0 @@
1
- import{b as t,x as r}from"./lit-element-9178eae5.js";import{e,i,t as s}from"./directive-de55b00a.js";
2
- /**
3
- * @license
4
- * Copyright 2017 Google LLC
5
- * SPDX-License-Identifier: BSD-3-Clause
6
- */class n extends i{constructor(r){if(super(r),this.it=t,r.type!==s.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(e){if(e===t||null==e)return this._t=void 0,this.it=e;if(e===r)return e;if("string"!=typeof e)throw Error(this.constructor.directiveName+"() called with a non-string value");if(e===this.it)return this._t;this.it=e;const i=[e];return i.raw=i,this._t={_$litType$:this.constructor.resultType,strings:i,values:[]}}}n.directiveName="unsafeHTML",n.resultType=1;const o=e(n);export{o};
7
- //# sourceMappingURL=unsafe-html-6be42999.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unsafe-html-6be42999.js","sources":["../node_modules/lit-html/directives/unsafe-html.js"],"sourcesContent":["import{nothing as t,noChange as i}from\"../lit-html.js\";import{Directive as r,PartType as s,directive as n}from\"../directive.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */class e extends r{constructor(i){if(super(i),this.it=t,i.type!==s.CHILD)throw Error(this.constructor.directiveName+\"() can only be used in child bindings\")}render(r){if(r===t||null==r)return this._t=void 0,this.it=r;if(r===i)return r;if(\"string\"!=typeof r)throw Error(this.constructor.directiveName+\"() called with a non-string value\");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName=\"unsafeHTML\",e.resultType=1;const o=n(e);export{e as UnsafeHTMLDirective,o as unsafeHTML};\n//# sourceMappingURL=unsafe-html.js.map\n"],"names":["e","r","constructor","i","super","this","it","t","type","s","CHILD","Error","directiveName","render","_t","raw","_$litType$","resultType","strings","values","o","n"],"mappings":";;;;;GAKG,MAAMA,UAAUC,EAAEC,YAAYC,GAAG,GAAGC,MAAMD,GAAGE,KAAKC,GAAGC,EAAEJ,EAAEK,OAAOC,EAAEC,MAAM,MAAMC,MAAMN,KAAKH,YAAYU,cAAc,wCAAwC,CAACC,OAAOZ,GAAG,GAAGA,IAAIM,GAAG,MAAMN,EAAE,OAAOI,KAAKS,QAAG,EAAOT,KAAKC,GAAGL,EAAE,GAAGA,IAAIE,EAAE,OAAOF,EAAE,GAAG,iBAAiBA,EAAE,MAAMU,MAAMN,KAAKH,YAAYU,cAAc,qCAAqC,GAAGX,IAAII,KAAKC,GAAG,OAAOD,KAAKS,GAAGT,KAAKC,GAAGL,EAAE,MAAMQ,EAAE,CAACR,GAAG,OAAOQ,EAAEM,IAAIN,EAAEJ,KAAKS,GAAG,CAACE,WAAWX,KAAKH,YAAYe,WAAWC,QAAQT,EAAEU,OAAO,GAAG,EAAEnB,EAAEY,cAAc,aAAaZ,EAAEiB,WAAW,EAAO,MAACG,EAAEC,EAAErB"}