@pairbo/ui-kit 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/pairbo.es.js +15027 -0
- package/dist/pairbo.umd.js +1633 -0
- package/dist/src/components/button/button.component.d.ts +32 -0
- package/dist/src/components/button/button.d.ts +8 -0
- package/dist/src/components/button/button.styles.d.ts +2 -0
- package/dist/src/components/button-group/button-group.component.d.ts +23 -0
- package/dist/src/components/button-group/button-group.d.ts +8 -0
- package/dist/src/components/button-group/button-group.styles.d.ts +2 -0
- package/dist/src/components/card-selection/card-selection.component.d.ts +23 -0
- package/dist/src/components/card-selection/card-selection.d.ts +8 -0
- package/dist/src/components/card-selection/card-selection.styles.d.ts +2 -0
- package/dist/src/components/category/category.component.d.ts +13 -0
- package/dist/src/components/category/category.d.ts +8 -0
- package/dist/src/components/category/category.styles.d.ts +2 -0
- package/dist/src/components/category-image/category-image.component.d.ts +23 -0
- package/dist/src/components/category-image/category-image.d.ts +8 -0
- package/dist/src/components/category-image/category-image.styles.d.ts +2 -0
- package/dist/src/components/drawer/drawer.component.d.ts +28 -0
- package/dist/src/components/drawer/drawer.d.ts +8 -0
- package/dist/src/components/drawer/drawer.styles.d.ts +2 -0
- package/dist/src/components/editor/editor.component.d.ts +24 -0
- package/dist/src/components/editor/editor.d.ts +8 -0
- package/dist/src/components/editor/editor.styles.d.ts +2 -0
- package/dist/src/components/fabric-example/fabric-example.component.d.ts +26 -0
- package/dist/src/components/fabric-example/fabric-example.d.ts +8 -0
- package/dist/src/components/fabric-example/fabric-example.styles.d.ts +2 -0
- package/dist/src/components/image-slider/editor-card-slider.component.d.ts +41 -0
- package/dist/src/components/image-slider/editor-card-slider.d.ts +8 -0
- package/dist/src/components/image-slider/editor-card-slider.styles.d.ts +2 -0
- package/dist/src/components/main.d.ts +15 -0
- package/dist/src/components/message-selector/message-selector.component.d.ts +38 -0
- package/dist/src/components/message-selector/message-selector.d.ts +8 -0
- package/dist/src/components/message-selector/message-selector.styles.d.ts +2 -0
- package/dist/src/components/message-selector/message-selector.test.d.ts +1 -0
- package/dist/src/components/page-manager/page-manager.component.d.ts +41 -0
- package/dist/src/components/page-manager/page-manager.d.ts +8 -0
- package/dist/src/components/page-manager/page-manager.styles.d.ts +2 -0
- package/dist/src/components/radio-button/radio-button.component.d.ts +37 -0
- package/dist/src/components/radio-button/radio-button.d.ts +8 -0
- package/dist/src/components/radio-button/radio-button.styles.d.ts +2 -0
- package/dist/src/components/radio-group/radio-group.component.d.ts +56 -0
- package/dist/src/components/radio-group/radio-group.d.ts +8 -0
- package/dist/src/components/radio-group/radio-group.styles.d.ts +2 -0
- package/dist/src/components/selector/selector.component.d.ts +18 -0
- package/dist/src/components/selector/selector.d.ts +8 -0
- package/dist/src/components/selector/selector.styles.d.ts +2 -0
- package/dist/src/components/textarea/textarea.component.d.ts +78 -0
- package/dist/src/components/textarea/textarea.d.ts +8 -0
- package/dist/src/components/textarea/textarea.styles.d.ts +2 -0
- package/dist/src/components/type-form/type-form.component.d.ts +48 -0
- package/dist/src/components/type-form/type-form.d.ts +8 -0
- package/dist/src/components/type-form/type-form.styles.d.ts +2 -0
- package/dist/src/events/events.d.ts +1 -0
- package/dist/src/events/pbo-category-card-select.d.ts +8 -0
- package/dist/src/internal/form.d.ts +43 -0
- package/{src/internal/pairbo-element.ts → dist/src/internal/pairbo-element.d.ts} +21 -46
- package/dist/src/internal/slots.d.ts +12 -0
- package/dist/src/internal/watch.d.ts +28 -0
- package/dist/src/styles/component.styles.d.ts +2 -0
- package/dist/src/styles/form-control.styles.d.ts +2 -0
- package/package.json +12 -8
- package/.husky/pre-commit +0 -1
- package/.prettierignore +0 -16
- package/.prettierrc.json +0 -17
- package/cspell.json +0 -9
- package/dev.html +0 -101
- package/docs/README.md +0 -1
- package/docs/_includes/component.njk +0 -16
- package/docs/_includes/default.njk +0 -39
- package/docs/_includes/sidebar.njk +0 -16
- package/docs/eleventy.config.mjs +0 -72
- package/docs/pages/components/message-selector.md +0 -17
- package/docs/pages/fabric-example.html +0 -46
- package/docs/pages/fabric-example.js +0 -28
- package/docs/pages/index.md +0 -76
- package/eslint.config.mjs +0 -32
- package/ignote_temp +0 -3
- package/index.html +0 -162
- package/lint-stage.confg.js +0 -6
- package/pages/card-selection.html +0 -65
- package/pages/drawer.html +0 -47
- package/pages/editor.html +0 -45
- package/pages/page-mgn.html +0 -51
- package/pages/test_build.html +0 -47
- package/scripts/plop/plopfile.js +0 -51
- package/scripts/plop/templates/components/component.hbs +0 -34
- package/scripts/plop/templates/components/define.hbs +0 -10
- package/scripts/plop/templates/components/styles.hbs +0 -7
- package/src/components/button/button.component.ts +0 -93
- package/src/components/button/button.styles.ts +0 -273
- package/src/components/button/button.ts +0 -10
- package/src/components/button-group/button-group.component.ts +0 -36
- package/src/components/button-group/button-group.styles.ts +0 -7
- package/src/components/button-group/button-group.ts +0 -10
- package/src/components/card-selection/card-selection.component.ts +0 -43
- package/src/components/card-selection/card-selection.styles.ts +0 -7
- package/src/components/card-selection/card-selection.ts +0 -10
- package/src/components/category/category.component.ts +0 -91
- package/src/components/category/category.styles.ts +0 -27
- package/src/components/category/category.ts +0 -10
- package/src/components/category-image/category-image.component.ts +0 -38
- package/src/components/category-image/category-image.styles.ts +0 -11
- package/src/components/category-image/category-image.ts +0 -10
- package/src/components/drawer/drawer.component.ts +0 -82
- package/src/components/drawer/drawer.styles.ts +0 -54
- package/src/components/drawer/drawer.ts +0 -10
- package/src/components/editor/editor.component.ts +0 -135
- package/src/components/editor/editor.styles.ts +0 -13
- package/src/components/editor/editor.ts +0 -10
- package/src/components/fabric-example/fabric-example.component.ts +0 -268
- package/src/components/fabric-example/fabric-example.styles.ts +0 -23
- package/src/components/fabric-example/fabric-example.ts +0 -12
- package/src/components/image-slider/editor-card-slider.component.ts +0 -136
- package/src/components/image-slider/editor-card-slider.styles.ts +0 -46
- package/src/components/image-slider/editor-card-slider.ts +0 -9
- package/src/components/main.ts +0 -17
- package/src/components/message-selector/message-selector.component.ts +0 -154
- package/src/components/message-selector/message-selector.styles.ts +0 -16
- package/src/components/message-selector/message-selector.test.ts +0 -64
- package/src/components/message-selector/message-selector.ts +0 -13
- package/src/components/page-manager/page-manager.component.ts +0 -228
- package/src/components/page-manager/page-manager.styles.ts +0 -9
- package/src/components/page-manager/page-manager.ts +0 -10
- package/src/components/radio-button/radio-button.component.ts +0 -118
- package/src/components/radio-button/radio-button.styles.ts +0 -13
- package/src/components/radio-button/radio-button.ts +0 -10
- package/src/components/radio-group/radio-group.component.ts +0 -203
- package/src/components/radio-group/radio-group.styles.ts +0 -19
- package/src/components/radio-group/radio-group.ts +0 -10
- package/src/components/selector/selector.component.ts +0 -115
- package/src/components/selector/selector.styles.ts +0 -9
- package/src/components/selector/selector.ts +0 -10
- package/src/components/textarea/textarea.component.ts +0 -234
- package/src/components/textarea/textarea.styles.ts +0 -178
- package/src/components/textarea/textarea.ts +0 -10
- package/src/components/type-form/type-form.component.ts +0 -121
- package/src/components/type-form/type-form.styles.ts +0 -7
- package/src/components/type-form/type-form.ts +0 -10
- package/src/declaration.d.ts +0 -44
- package/src/events/events.ts +0 -1
- package/src/events/pbo-category-card-select.ts +0 -7
- package/src/internal/form.ts +0 -376
- package/src/internal/slots.ts +0 -54
- package/src/internal/watch.ts +0 -79
- package/src/styles/component.styles.ts +0 -17
- package/src/styles/form-control.styles.ts +0 -59
- package/temp +0 -20
- package/tsconfig.json +0 -28
- package/vite.config.ts +0 -26
- /package/{public → dist}/Greeting Card from Pairbo.png +0 -0
- /package/{src/components/fabric-example/fabric-example.test.ts → dist/src/components/fabric-example/fabric-example.test.d.ts} +0 -0
- /package/{src → dist/src}/themes/default.css +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { CSSResultGroup } from 'lit';
|
|
2
|
+
import { default as PairboElement, PairboFormControl } from '../../internal/pairbo-element.js';
|
|
3
|
+
/**
|
|
4
|
+
* @summary Short summary of the component's intended use.
|
|
5
|
+
* @status experimental
|
|
6
|
+
*
|
|
7
|
+
* @dependency pbo-example
|
|
8
|
+
*
|
|
9
|
+
* @event pbo-event-name - Emitted as an example.
|
|
10
|
+
*
|
|
11
|
+
* @slot - The default slot.
|
|
12
|
+
* @slot example - An example slot.
|
|
13
|
+
*
|
|
14
|
+
* @csspart base - The component's base wrapper.
|
|
15
|
+
*
|
|
16
|
+
* @cssproperty --example - An example CSS custom property.
|
|
17
|
+
*/
|
|
18
|
+
export default class PboTextarea extends PairboElement implements PairboFormControl {
|
|
19
|
+
static styles: CSSResultGroup;
|
|
20
|
+
private readonly formControlController;
|
|
21
|
+
defaultValue?: unknown;
|
|
22
|
+
defaultChecked?: boolean | undefined;
|
|
23
|
+
pattern?: string | undefined;
|
|
24
|
+
min?: string | number | Date | undefined;
|
|
25
|
+
max?: string | number | Date | undefined;
|
|
26
|
+
step?: number | "any" | undefined;
|
|
27
|
+
input: HTMLTextAreaElement;
|
|
28
|
+
sizeAdjuster: HTMLTextAreaElement;
|
|
29
|
+
hasFocus: boolean;
|
|
30
|
+
name: string;
|
|
31
|
+
value: string;
|
|
32
|
+
size: "small" | "medium" | "large";
|
|
33
|
+
filled: boolean;
|
|
34
|
+
placeholder: string;
|
|
35
|
+
rows: number;
|
|
36
|
+
resize: "none" | "vertical" | "auto";
|
|
37
|
+
disabled: boolean;
|
|
38
|
+
readonly: boolean;
|
|
39
|
+
form: string;
|
|
40
|
+
required: boolean;
|
|
41
|
+
minlength: number;
|
|
42
|
+
maxlength: number;
|
|
43
|
+
get validity(): ValidityState;
|
|
44
|
+
get validationMessage(): string;
|
|
45
|
+
firstUpdated(): void;
|
|
46
|
+
private handleChange;
|
|
47
|
+
private handleBlur;
|
|
48
|
+
private handleFocus;
|
|
49
|
+
private handleInput;
|
|
50
|
+
private handleInvalid;
|
|
51
|
+
/** Sets focus on the textarea. */
|
|
52
|
+
focus(options?: FocusOptions): void;
|
|
53
|
+
/** Removes focus from the textarea. */
|
|
54
|
+
blur(): void;
|
|
55
|
+
/** Selects all the text in the textarea. */
|
|
56
|
+
select(): void;
|
|
57
|
+
/** Gets or sets the textarea's scroll position. */
|
|
58
|
+
scrollPosition(position?: {
|
|
59
|
+
top?: number;
|
|
60
|
+
left?: number;
|
|
61
|
+
}): {
|
|
62
|
+
top: number;
|
|
63
|
+
left: number;
|
|
64
|
+
} | undefined;
|
|
65
|
+
/** Sets the start and end positions of the text selection (0-based). */
|
|
66
|
+
setSelectionRange(selectionStart: number, selectionEnd: number, selectionDirection?: "forward" | "backward" | "none"): void;
|
|
67
|
+
/** Replaces a range of text with a new string. */
|
|
68
|
+
setRangeText(replacement: string, start?: number, end?: number, selectMode?: "select" | "start" | "end" | "preserve"): void;
|
|
69
|
+
/** Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid. */
|
|
70
|
+
checkValidity(): boolean;
|
|
71
|
+
/** Gets the associated form, if one exists. */
|
|
72
|
+
getForm(): HTMLFormElement | null;
|
|
73
|
+
/** Checks for validity and shows the browser's validation message if the control is invalid. */
|
|
74
|
+
reportValidity(): boolean;
|
|
75
|
+
/** Sets a custom validation message. Pass an empty string to restore validity. */
|
|
76
|
+
setCustomValidity(message: string): void;
|
|
77
|
+
render(): import('lit-html').TemplateResult<1>;
|
|
78
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { CSSResultGroup } from 'lit';
|
|
2
|
+
import { default as PairboElement } from '../../internal/pairbo-element.js';
|
|
3
|
+
import { default as PboSelector } from '../selector/selector.component.js';
|
|
4
|
+
import { default as PboTextarea } from '../textarea/textarea.component.js';
|
|
5
|
+
import { default as PboRadioGroup } from '../radio-group/radio-group.component.js';
|
|
6
|
+
import { default as PboButton } from '../button/button.component.js';
|
|
7
|
+
/**
|
|
8
|
+
* @summary Short summary of the component's intended use.
|
|
9
|
+
* @status experimental
|
|
10
|
+
*
|
|
11
|
+
* @dependency pbo-example
|
|
12
|
+
*
|
|
13
|
+
* @event pbo-event-name - Emitted as an example.
|
|
14
|
+
*
|
|
15
|
+
* @slot - The default slot.
|
|
16
|
+
* @slot example - An example slot.
|
|
17
|
+
*
|
|
18
|
+
* @csspart base - The component's base wrapper.
|
|
19
|
+
*
|
|
20
|
+
* @cssproperty --example - An example CSS custom property.
|
|
21
|
+
*/
|
|
22
|
+
export default class PboTypeForm extends PairboElement {
|
|
23
|
+
static styles: CSSResultGroup;
|
|
24
|
+
static dependencies: {
|
|
25
|
+
"pbo-selector": typeof PboSelector;
|
|
26
|
+
"pbo-textarea": typeof PboTextarea;
|
|
27
|
+
"pbo-color-radio-group": typeof PboRadioGroup;
|
|
28
|
+
"pbo-radio-group": typeof PboRadioGroup;
|
|
29
|
+
"pbo-radio-button": typeof PboRadioGroup;
|
|
30
|
+
"pbo-button": typeof PboButton;
|
|
31
|
+
};
|
|
32
|
+
greetingText: PboTextarea;
|
|
33
|
+
fontSelector: PboSelector;
|
|
34
|
+
textColor: PboRadioGroup;
|
|
35
|
+
textAlignment: PboRadioGroup;
|
|
36
|
+
private formData;
|
|
37
|
+
cardInnerImageUrl: string;
|
|
38
|
+
get form(): {
|
|
39
|
+
font: any;
|
|
40
|
+
text: string;
|
|
41
|
+
color: string;
|
|
42
|
+
alignment: string;
|
|
43
|
+
};
|
|
44
|
+
private handleFormChange;
|
|
45
|
+
hostConnected(): void;
|
|
46
|
+
hostDisconnected(): void;
|
|
47
|
+
render(): import('lit-html').TemplateResult<1>;
|
|
48
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { PboCategoryCardSelectEvent } from './pbo-category-card-select.js';
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
2
|
+
import { PairboFormControl } from './pairbo-element';
|
|
3
|
+
import { PboButton } from '../components/main';
|
|
4
|
+
export declare const formCollections: WeakMap<HTMLFormElement, Set<PairboFormControl>>;
|
|
5
|
+
export interface FormControlControllerOptions {
|
|
6
|
+
form: (input: PairboFormControl) => HTMLFormElement | null;
|
|
7
|
+
name: (input: PairboFormControl) => string;
|
|
8
|
+
defaultValue: (input: PairboFormControl) => unknown;
|
|
9
|
+
value: (input: PairboFormControl) => unknown | unknown[];
|
|
10
|
+
disabled: (input: PairboFormControl) => boolean;
|
|
11
|
+
reportValidity: (input: PairboFormControl) => boolean;
|
|
12
|
+
checkValidity: (input: PairboFormControl) => boolean;
|
|
13
|
+
setValue: (input: PairboFormControl, value: unknown) => void;
|
|
14
|
+
assumeInteractionOn: string[];
|
|
15
|
+
}
|
|
16
|
+
export declare class FormControlController implements ReactiveController {
|
|
17
|
+
host: PairboFormControl & ReactiveControllerHost;
|
|
18
|
+
form?: HTMLFormElement | null;
|
|
19
|
+
options: FormControlControllerOptions;
|
|
20
|
+
constructor(host: PairboFormControl & ReactiveControllerHost, options?: Partial<FormControlControllerOptions>);
|
|
21
|
+
hostConnected(): void;
|
|
22
|
+
hostDisconnected(): void;
|
|
23
|
+
hostUpdated(): void;
|
|
24
|
+
private attachForm;
|
|
25
|
+
private detachForm;
|
|
26
|
+
private handleFormData;
|
|
27
|
+
private handleFormSubmit;
|
|
28
|
+
private handleFormReset;
|
|
29
|
+
private handleInteraction;
|
|
30
|
+
private checkFormValidity;
|
|
31
|
+
private reportFormValidity;
|
|
32
|
+
private setUserInteracted;
|
|
33
|
+
private doAction;
|
|
34
|
+
getForm(): HTMLFormElement | null;
|
|
35
|
+
reset(submitter?: HTMLInputElement | PboButton): void;
|
|
36
|
+
submit(submitter?: HTMLInputElement | PboButton): void;
|
|
37
|
+
setValidity(isValid: boolean): void;
|
|
38
|
+
updateValidity(): void;
|
|
39
|
+
emitInvalidEvent(originalInvalidEvent?: Event): void;
|
|
40
|
+
}
|
|
41
|
+
export declare const validValidityState: ValidityState;
|
|
42
|
+
export declare const valueMissingValidityState: ValidityState;
|
|
43
|
+
export declare const customErrorValidityState: ValidityState;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { LitElement } from
|
|
2
|
-
|
|
1
|
+
import { LitElement } from 'lit';
|
|
3
2
|
/**
|
|
4
3
|
* Interface representing a Pairbo form control element.
|
|
5
4
|
* Extends LitElement to provide form control functionality.
|
|
@@ -36,50 +35,26 @@ import { LitElement } from "lit";
|
|
|
36
35
|
* @param {string} error - The custom error message to display
|
|
37
36
|
*/
|
|
38
37
|
export interface PairboFormControl extends LitElement {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
getForm: () => HTMLFormElement | null;
|
|
59
|
-
reportValidity: () => boolean;
|
|
60
|
-
setCustomValidity: (error: string) => void;
|
|
38
|
+
name: string;
|
|
39
|
+
value: unknown;
|
|
40
|
+
disabled?: boolean;
|
|
41
|
+
defaultValue?: unknown;
|
|
42
|
+
defaultChecked?: boolean;
|
|
43
|
+
form?: string;
|
|
44
|
+
pattern?: string;
|
|
45
|
+
min?: number | string | Date;
|
|
46
|
+
max?: number | string | Date;
|
|
47
|
+
step?: number | "any";
|
|
48
|
+
required?: boolean;
|
|
49
|
+
minlength?: number;
|
|
50
|
+
maxlength?: number;
|
|
51
|
+
readonly validity: ValidityState;
|
|
52
|
+
readonly validationMessage: string;
|
|
53
|
+
checkValidity: () => boolean;
|
|
54
|
+
getForm: () => HTMLFormElement | null;
|
|
55
|
+
reportValidity: () => boolean;
|
|
56
|
+
setCustomValidity: (error: string) => void;
|
|
61
57
|
}
|
|
62
|
-
|
|
63
58
|
export default class PairboElement extends LitElement {
|
|
64
|
-
|
|
65
|
-
emit(name: string, options?: CustomEventInit<unknown> | undefined) {
|
|
66
|
-
/**
|
|
67
|
-
* Creates a new CustomEvent instance with specified event name and options.
|
|
68
|
-
* @property {boolean} bubbles - Whether the event can bubble up through the Dom
|
|
69
|
-
* @property {boolean} cancelable - Indicates whether the event is cancelable and therefore prevented as if the event never happened. To Cancel the event, call preventDefault() on the event.
|
|
70
|
-
* @property {boolean} composed - Indicates whether or not the event will propagate across the shadow Dom boundary into the standard DOM.
|
|
71
|
-
* @property {Object} detail - Returns any custom data event was created with. Typically used for synthetic events. For the custom event.
|
|
72
|
-
*/
|
|
73
|
-
const event = new CustomEvent(name, {
|
|
74
|
-
bubbles: true,
|
|
75
|
-
cancelable: true,
|
|
76
|
-
composed: true,
|
|
77
|
-
detail: {},
|
|
78
|
-
...options,
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
this.dispatchEvent(event);
|
|
82
|
-
|
|
83
|
-
return event;
|
|
84
|
-
}
|
|
59
|
+
emit(name: string, options?: CustomEventInit<unknown> | undefined): CustomEvent<unknown>;
|
|
85
60
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReactiveController, ReactiveControllerHost } from 'lit';
|
|
2
|
+
export declare class HasSlotController implements ReactiveController {
|
|
3
|
+
host: ReactiveControllerHost & Element;
|
|
4
|
+
slotNames: string[];
|
|
5
|
+
constructor(host: ReactiveControllerHost & Element, ...slotNames: string[]);
|
|
6
|
+
private hasDefaultSlot;
|
|
7
|
+
private hasNamedSlot;
|
|
8
|
+
test(slotName: string): boolean;
|
|
9
|
+
hostConnected(): void;
|
|
10
|
+
hostDisconnected(): void;
|
|
11
|
+
private handleSlotChange;
|
|
12
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
type UpdateHandler = (prev?: unknown, next?: unknown) => void;
|
|
3
|
+
type NonUndefined<A> = A extends undefined ? never : A;
|
|
4
|
+
/**
|
|
5
|
+
* Get the keys of the updates handler inside one class.
|
|
6
|
+
*
|
|
7
|
+
* keyof will only extract the keys which are non-never
|
|
8
|
+
*
|
|
9
|
+
* The modified object
|
|
10
|
+
* { [key in keyof T] -?: NonUndefined<T[key]> extends UpdateHandler ? key : never; }
|
|
11
|
+
*
|
|
12
|
+
* Get the keys in the object: [key in keyof T]
|
|
13
|
+
*
|
|
14
|
+
* Remove the undefined keys: -?
|
|
15
|
+
*
|
|
16
|
+
* Ternary operator A ? B : C - Check if the type is UpdateHandler: NonUndefined<T[Key]> extends UpdateHandler
|
|
17
|
+
* If true, set the value of current key to the key name
|
|
18
|
+
* Else set the value of current key to never
|
|
19
|
+
* After that, we use the mapped type to get the keys of the object ExampleObject[keyof ExampleObject] will return an union of they key values, and the never value will be removed
|
|
20
|
+
**/
|
|
21
|
+
type UpdateHandlerKeys<T extends Object> = {
|
|
22
|
+
[key in keyof T]-?: NonUndefined<T[key]> extends UpdateHandler ? key : never;
|
|
23
|
+
}[keyof T];
|
|
24
|
+
type Option = {
|
|
25
|
+
waitUntilFirstUpdate: boolean;
|
|
26
|
+
};
|
|
27
|
+
export declare function watch(propertyName: string | string[], options?: Option): <EleClass extends LitElement>(target: EleClass, decoratedFnName: UpdateHandlerKeys<EleClass>) => void;
|
|
28
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pairbo/ui-kit",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "",
|
|
5
|
-
"exports": {
|
|
6
|
-
".": {
|
|
7
|
-
"types": "./dist/src/components/main.d.ts",
|
|
8
|
-
"import": "./dist/pairbo.umd.js"
|
|
9
|
-
}
|
|
10
|
-
},
|
|
11
5
|
"type": "module",
|
|
12
6
|
"scripts": {
|
|
13
7
|
"dev": "vite",
|
|
@@ -47,7 +41,8 @@
|
|
|
47
41
|
"typescript": "^5.7.3",
|
|
48
42
|
"typescript-eslint": "^8.24.0",
|
|
49
43
|
"vite": "^6.1.0",
|
|
50
|
-
"vite-plugin-dts": "^4.5.0"
|
|
44
|
+
"vite-plugin-dts": "^4.5.0",
|
|
45
|
+
"vite-plugin-static-copy": "^2.3.0"
|
|
51
46
|
},
|
|
52
47
|
"lint-staged": {
|
|
53
48
|
"*.{ts,js}": [
|
|
@@ -55,6 +50,15 @@
|
|
|
55
50
|
"prettier --write"
|
|
56
51
|
]
|
|
57
52
|
},
|
|
53
|
+
"files": [
|
|
54
|
+
"dist"
|
|
55
|
+
],
|
|
56
|
+
"exports": {
|
|
57
|
+
".": {
|
|
58
|
+
"types": "./dist/src/components/main.d.ts",
|
|
59
|
+
"import": "./dist/pairbo.umd.js"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
58
62
|
"dependencies": {
|
|
59
63
|
"@splidejs/splide": "^4.1.4",
|
|
60
64
|
"choices.js": "^11.0.3",
|
package/.husky/pre-commit
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
npx --no-install lint-staged
|
package/.prettierignore
DELETED
package/.prettierrc.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"arrowParens": "avoid",
|
|
3
|
-
"bracketSpacing": true,
|
|
4
|
-
"htmlWhitespaceSensitivity": "css",
|
|
5
|
-
"insertPragma": false,
|
|
6
|
-
"bracketSameLine": false,
|
|
7
|
-
"jsxSingleQuote": false,
|
|
8
|
-
"printWidth": 120,
|
|
9
|
-
"proseWrap": "preserve",
|
|
10
|
-
"quoteProps": "as-needed",
|
|
11
|
-
"requirePragma": false,
|
|
12
|
-
"semi": true,
|
|
13
|
-
"singleQuote": false,
|
|
14
|
-
"tabWidth": 2,
|
|
15
|
-
"trailingComma": "es5",
|
|
16
|
-
"useTabs": false
|
|
17
|
-
}
|
package/cspell.json
DELETED
package/dev.html
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>Message Selector Demo</title>
|
|
7
|
-
<style>
|
|
8
|
-
body {
|
|
9
|
-
font-family: sans-serif;
|
|
10
|
-
padding: 1rem;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
/* Style for the code snippet */
|
|
14
|
-
pre {
|
|
15
|
-
background: #f7f7f7;
|
|
16
|
-
padding: 1rem;
|
|
17
|
-
border: 1px solid #ccc;
|
|
18
|
-
border-radius: 4px;
|
|
19
|
-
overflow-x: auto;
|
|
20
|
-
margin-bottom: 2rem;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
code {
|
|
24
|
-
font-family: monospace;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/* Style for the rendered custom element container */
|
|
28
|
-
.rendered {
|
|
29
|
-
margin-top: 2rem;
|
|
30
|
-
padding: 1rem;
|
|
31
|
-
border: 1px solid #ccc;
|
|
32
|
-
border-radius: 4px;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.rendered > div.toggle-container {
|
|
36
|
-
margin-bottom: 1rem;
|
|
37
|
-
}
|
|
38
|
-
</style>
|
|
39
|
-
</head>
|
|
40
|
-
|
|
41
|
-
<body>
|
|
42
|
-
<!-- Display the literal string by escaping the angle brackets -->
|
|
43
|
-
<pre><code><pairbo-message-selector></pairbo-message-selector></code></pre>
|
|
44
|
-
|
|
45
|
-
<div class="rendered">
|
|
46
|
-
<div class="toggle-container">
|
|
47
|
-
<button>Toggle Message Selector</button>
|
|
48
|
-
</div>
|
|
49
|
-
<!-- Here the default custom element will be rendered -->
|
|
50
|
-
<pairbo-message-selector id="default"></pairbo-message-selector>
|
|
51
|
-
</div>
|
|
52
|
-
|
|
53
|
-
<pre><code>
|
|
54
|
-
<pairbo-message-selector
|
|
55
|
-
giftLabel="This is a custom label🎁"
|
|
56
|
-
premiumLabel="Let's have a premium card"
|
|
57
|
-
premiumDescription="TL;DR"
|
|
58
|
-
freeMessageSelected="Oh? How about a free message?"
|
|
59
|
-
></pairbo-message-selector>
|
|
60
|
-
</code></pre>
|
|
61
|
-
|
|
62
|
-
<div class="rendered">
|
|
63
|
-
<div class="toggle-container">
|
|
64
|
-
<button>Toggle Message Selector</button>
|
|
65
|
-
</div>
|
|
66
|
-
<!-- Here the custom version of the custom element is rendered -->
|
|
67
|
-
<pairbo-message-selector
|
|
68
|
-
id="custom"
|
|
69
|
-
giftLabel="This is a custom label🎁"
|
|
70
|
-
premiumLabel="Let's have a premium card"
|
|
71
|
-
premiumDescription="TL;DR"
|
|
72
|
-
freeMessageSelected="Oh? How about a free message?"
|
|
73
|
-
>
|
|
74
|
-
</pairbo-message-selector>
|
|
75
|
-
|
|
76
|
-
<fabric-example></fabric-example>
|
|
77
|
-
</div>
|
|
78
|
-
|
|
79
|
-
<!-- Vite will transform and serve the TS file on the fly -->
|
|
80
|
-
<script type="module" src="/src/components/message-selector/message-selector.ts"></script>
|
|
81
|
-
<script type="module" src="/src/components/fabric-example/fabric-example.ts"></script>
|
|
82
|
-
|
|
83
|
-
<script>
|
|
84
|
-
// Add an event listener to each toggle button.
|
|
85
|
-
document.querySelectorAll(".toggle-container button").forEach(button => {
|
|
86
|
-
button.addEventListener("click", event => {
|
|
87
|
-
// Find the nearest container with class "rendered"
|
|
88
|
-
const container = event.target.closest(".rendered");
|
|
89
|
-
if (container) {
|
|
90
|
-
// Find the custom element within that container.
|
|
91
|
-
const messageSelector = container.querySelector("pairbo-message-selector");
|
|
92
|
-
// If the custom element has the toggleMessageSelector method, call it.
|
|
93
|
-
if (messageSelector && typeof messageSelector.toggleMessageSelector === "function") {
|
|
94
|
-
messageSelector.toggleMessageSelector();
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
</script>
|
|
100
|
-
</body>
|
|
101
|
-
</html>
|
package/docs/README.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# Heading
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{%extends 'default.njk'%}
|
|
2
|
-
|
|
3
|
-
{% block content%}
|
|
4
|
-
<!DOCTYPE html>
|
|
5
|
-
<html lang="en">
|
|
6
|
-
<head>
|
|
7
|
-
<meta charset="UTF-8">
|
|
8
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
9
|
-
<title>{{ title }}</title>
|
|
10
|
-
</head>
|
|
11
|
-
<body>
|
|
12
|
-
{{ content | safe }}
|
|
13
|
-
<script type="module" src="/dist/my-custom-element.umd.js"></script>
|
|
14
|
-
</body>
|
|
15
|
-
</html>
|
|
16
|
-
{% endblock %}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html
|
|
3
|
-
lang="en"
|
|
4
|
-
data-layout="{{ layout }}"
|
|
5
|
-
data-shoelace-version="{{ meta.version }}"
|
|
6
|
-
>
|
|
7
|
-
<header></header>
|
|
8
|
-
<body>
|
|
9
|
-
{% set baseURL = "---Test base url---" %}
|
|
10
|
-
<aside id="sidebar" data-preserve-scroll>
|
|
11
|
-
This is the default template with the toc sidebar
|
|
12
|
-
<nav>
|
|
13
|
-
{% include 'sidebar.njk' %}
|
|
14
|
-
</nav>
|
|
15
|
-
</aside>
|
|
16
|
-
|
|
17
|
-
{# Content #}
|
|
18
|
-
<main>
|
|
19
|
-
<a id="main-content"></a>
|
|
20
|
-
<article id="content" class="content{% if toc %} content--with-toc{% endif %}">
|
|
21
|
-
{% if toc %}
|
|
22
|
-
<div class="content__toc">
|
|
23
|
-
<ul>
|
|
24
|
-
<li class="top">
|
|
25
|
-
<a href="#">{{ meta.title }}</a>
|
|
26
|
-
</li>
|
|
27
|
-
</ul>
|
|
28
|
-
</div>
|
|
29
|
-
{% endif %}
|
|
30
|
-
|
|
31
|
-
<div class="content__body">
|
|
32
|
-
{% block content %}
|
|
33
|
-
{{ content | safe }}
|
|
34
|
-
{% endblock %}
|
|
35
|
-
</div>
|
|
36
|
-
</article>
|
|
37
|
-
</main>
|
|
38
|
-
</body>
|
|
39
|
-
</html>
|