@crowdfarming/oliva-ds 1.14.0 → 1.15.0-rc.2
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.
|
@@ -4718,9 +4718,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
|
|
|
4718
4718
|
type: Input
|
|
4719
4719
|
}] } });
|
|
4720
4720
|
|
|
4721
|
+
class ModalComponent {
|
|
4722
|
+
isOpen = input(false);
|
|
4723
|
+
size = input('md');
|
|
4724
|
+
title = input();
|
|
4725
|
+
description = input();
|
|
4726
|
+
showCloseButton = input(true);
|
|
4727
|
+
primaryButton = input({
|
|
4728
|
+
text: 'Primary',
|
|
4729
|
+
variant: 'primary',
|
|
4730
|
+
});
|
|
4731
|
+
secondaryButton = input({
|
|
4732
|
+
text: 'Secondary',
|
|
4733
|
+
variant: 'secondary',
|
|
4734
|
+
});
|
|
4735
|
+
closed = output();
|
|
4736
|
+
primaryButtonClicked = output();
|
|
4737
|
+
secondaryButtonClicked = output();
|
|
4738
|
+
// Internal state
|
|
4739
|
+
isVisible = signal(false);
|
|
4740
|
+
constructor() {
|
|
4741
|
+
// Watch for isOpen changes to trigger animations
|
|
4742
|
+
effect(() => {
|
|
4743
|
+
if (this.isOpen()) {
|
|
4744
|
+
this.open();
|
|
4745
|
+
}
|
|
4746
|
+
else {
|
|
4747
|
+
this.isVisible.set(false);
|
|
4748
|
+
}
|
|
4749
|
+
});
|
|
4750
|
+
}
|
|
4751
|
+
// Computed properties
|
|
4752
|
+
classes = computed(() => {
|
|
4753
|
+
const c = [
|
|
4754
|
+
'c-modal',
|
|
4755
|
+
`c-modal--${this.size()}`,
|
|
4756
|
+
this.isOpen() ? 'c-modal--open' : '',
|
|
4757
|
+
this.isVisible() ? 'c-modal--visible' : '',
|
|
4758
|
+
];
|
|
4759
|
+
return c.filter(Boolean).join(' ');
|
|
4760
|
+
});
|
|
4761
|
+
backdropClasses = computed(() => {
|
|
4762
|
+
const c = [
|
|
4763
|
+
'c-modal__backdrop',
|
|
4764
|
+
this.isOpen() ? 'c-modal__backdrop--open' : '',
|
|
4765
|
+
this.isVisible() ? 'c-modal__backdrop--visible' : '',
|
|
4766
|
+
];
|
|
4767
|
+
return c.filter(Boolean).join(' ');
|
|
4768
|
+
});
|
|
4769
|
+
contentClasses = computed(() => {
|
|
4770
|
+
const c = [
|
|
4771
|
+
'c-modal__content',
|
|
4772
|
+
`c-modal__content--${this.size()}`,
|
|
4773
|
+
this.isOpen() ? 'c-modal__content--open' : '',
|
|
4774
|
+
this.isVisible() ? 'c-modal__content--visible' : '',
|
|
4775
|
+
];
|
|
4776
|
+
return c.filter(Boolean).join(' ');
|
|
4777
|
+
});
|
|
4778
|
+
// Methods
|
|
4779
|
+
open() {
|
|
4780
|
+
this.isVisible.set(true);
|
|
4781
|
+
}
|
|
4782
|
+
close() {
|
|
4783
|
+
this.isVisible.set(false);
|
|
4784
|
+
// Wait for animation to complete before emitting
|
|
4785
|
+
setTimeout(() => {
|
|
4786
|
+
this.closed.emit();
|
|
4787
|
+
}, 200);
|
|
4788
|
+
}
|
|
4789
|
+
onBackdropClick(event) {
|
|
4790
|
+
if (event.target === event.currentTarget) {
|
|
4791
|
+
this.close();
|
|
4792
|
+
}
|
|
4793
|
+
}
|
|
4794
|
+
onPrimaryButtonClick() {
|
|
4795
|
+
this.primaryButtonClicked.emit();
|
|
4796
|
+
}
|
|
4797
|
+
onSecondaryButtonClick() {
|
|
4798
|
+
this.secondaryButtonClicked.emit();
|
|
4799
|
+
}
|
|
4800
|
+
onCloseButtonClick() {
|
|
4801
|
+
this.close();
|
|
4802
|
+
}
|
|
4803
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
4804
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: ModalComponent, isStandalone: true, selector: "lib-modal", inputs: { isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, showCloseButton: { classPropertyName: "showCloseButton", publicName: "showCloseButton", isSignal: true, isRequired: false, transformFunction: null }, primaryButton: { classPropertyName: "primaryButton", publicName: "primaryButton", isSignal: true, isRequired: false, transformFunction: null }, secondaryButton: { classPropertyName: "secondaryButton", publicName: "secondaryButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", primaryButtonClicked: "primaryButtonClicked", secondaryButtonClicked: "secondaryButtonClicked" }, ngImport: i0, template: "@if (isOpen()) {\n<div class=\"c-modal\" [ngClass]=\"classes()\">\n <!-- Backdrop -->\n <div\n class=\"c-modal__backdrop\"\n [ngClass]=\"backdropClasses()\"\n (click)=\"onBackdropClick($event)\"\n (keydown.escape)=\"close()\"\n tabindex=\"0\"\n role=\"button\"\n aria-label=\"Close modal\"\n ></div>\n\n <!-- Modal Content -->\n <div\n class=\"c-modal__content\"\n [ngClass]=\"contentClasses()\"\n (keydown.escape)=\"close()\"\n tabindex=\"0\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"title() ? 'modal-title' : null\"\n [attr.aria-describedby]=\"description() ? 'modal-description' : null\"\n >\n <!-- Header -->\n @if (title() || showCloseButton()) {\n <div class=\"c-modal__header\">\n @if (title()) {\n <h2 id=\"modal-title\" class=\"c-modal__title\">{{ title() }}</h2>\n } @if (showCloseButton()) {\n <lib-button-icon\n iconName=\"x-regular\"\n size=\"sm\"\n variant=\"neutral\"\n (click)=\"onCloseButtonClick()\"\n aria-label=\"Close modal\"\n ></lib-button-icon>\n }\n </div>\n }\n\n <!-- Description -->\n @if (description()) {\n <div id=\"modal-description\" class=\"c-modal__description\">\n <p>{{ description() }}</p>\n </div>\n }\n\n <!-- Body Content -->\n <div class=\"c-modal__body\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer with Buttons -->\n @if (primaryButton() || secondaryButton()) {\n <div class=\"c-modal__footer\">\n @if (secondaryButton()) {\n <lib-button\n [text]=\"secondaryButton()!.text\"\n [variant]=\"secondaryButton()!.variant\"\n [disabled]=\"secondaryButton()!.disabled ?? false\"\n [loading]=\"secondaryButton()!.loading ?? false\"\n [fullWidth]=\"true\"\n (clicked)=\"onSecondaryButtonClick()\"\n class=\"c-modal__button c-modal__button--secondary\"\n ></lib-button>\n } @if (primaryButton()) {\n <lib-button\n [text]=\"primaryButton()!.text\"\n [variant]=\"primaryButton()!.variant\"\n [disabled]=\"primaryButton()!.disabled ?? false\"\n [loading]=\"primaryButton()!.loading ?? false\"\n [fullWidth]=\"true\"\n (clicked)=\"onPrimaryButtonClick()\"\n class=\"c-modal__button c-modal__button--primary\"\n ></lib-button>\n }\n </div>\n }\n </div>\n</div>\n}\n", styles: [".c-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--base-modal);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease-in-out,visibility .2s ease-in-out}.c-modal__content{width:100%}.c-modal__content--sm{max-width:416px}.c-modal__content--md{max-width:636px}.c-modal__content--lg{max-width:856px}.c-modal--open,.c-modal--visible{opacity:1;visibility:visible}@media (max-width: 768px){.c-modal{align-items:flex-end}.c-modal--sm .c-modal__content,.c-modal--md .c-modal__content{position:fixed;bottom:0;left:0;right:0;width:100%;max-width:none;transform:translateY(100%);transition:transform .3s ease-in-out}.c-modal--sm.c-modal--visible .c-modal__content,.c-modal--md.c-modal--visible .c-modal__content{transform:translateY(0)}.c-modal--lg{align-items:stretch}.c-modal--lg .c-modal__content{position:fixed;inset:0;width:100%;height:100%;max-width:none;border-radius:0;transform:scale(.95);transition:transform .3s ease-in-out}.c-modal--lg.c-modal--visible .c-modal__content{transform:scale(1)}}.c-modal__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--color-effect-overlay);opacity:0;transition:opacity .2s ease-in-out}.c-modal__backdrop--open,.c-modal__backdrop--visible{opacity:1}.c-modal__content{background-color:var(--color-core-background-surface-floating);box-shadow:var(--elevation-floating);overflow:hidden;display:flex;flex-direction:column}.c-modal__content--open,.c-modal__content--visible{transform:scale(1)}.c-modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-container-padding-sm);border-bottom:1px solid var(--color-core-border-soft);gap:var(--space-container-gap-sm)}.c-modal__title{margin:0;font-family:var(--typography-label-lg-default-family),sans-serif;font-weight:var(--typography-label-lg-default-weight);font-size:var(--typography-label-lg-default-size);line-height:var(--typography-label-lg-default-line-height);color:var(--color-core-content-default);flex:1}.c-modal__close-button{background:none;border:none;cursor:pointer;padding:var(--space-component-padding-xs);border-radius:var(--size-border-radius-sm);display:flex;align-items:center;justify-content:center;color:var(--color-core-content-soft);transition:all .2s ease-in-out}.c-modal__close-button:hover{background-color:var(--color-core-background-neutral-soft);color:var(--color-core-content-default)}.c-modal__close-button:focus-visible{outline:2px solid var(--color-core-border-default);outline-offset:2px}.c-modal__description{padding:var(--space-component-padding-lg);border-bottom:1px solid var(--color-core-border-soft)}.c-modal__description p{margin:0;font-family:var(--typography-body-md-family),sans-serif;font-weight:var(--typography-body-md-weight);font-size:var(--typography-body-md-size);line-height:var(--typography-body-md-line-height);color:var(--color-core-content-soft)}@media (max-width: 768px){.c-modal__description{padding:var(--space-component-padding-md)}}.c-modal__body{flex:1;padding:var(--space-component-padding-lg);overflow-y:auto}@media (max-width: 768px){.c-modal__body{padding:var(--space-component-padding-md)}}.c-modal__footer{display:flex;gap:var(--space-component-gap-md);padding:var(--space-component-padding-lg);border-top:1px solid var(--color-core-border-soft);background-color:var(--color-core-background-neutral-soft)}@media (max-width: 768px){.c-modal__footer{flex-direction:column;padding:var(--space-component-padding-md);gap:var(--space-component-gap-sm)}}.c-modal__button{flex:1}@media (max-width: 768px){.c-modal__button{width:100%}}.c-modal__button--primary{order:2}.c-modal__button--secondary{order:1}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ButtonComponent, selector: "lib-button", inputs: ["text", "ariaLabel", "disabled", "loading", "skeletonActive", "variant", "size", "loadingText", "fullWidth", "iconBefore", "iconAfter"], outputs: ["clicked"] }, { kind: "component", type: ButtonIconComponent, selector: "lib-button-icon", inputs: ["ariaLabel", "variant", "size", "iconName", "disabled", "loading", "skeletonActive"], outputs: ["clicked"] }] });
|
|
4805
|
+
}
|
|
4806
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: ModalComponent, decorators: [{
|
|
4807
|
+
type: Component,
|
|
4808
|
+
args: [{ selector: 'lib-modal', imports: [NgClass, ButtonComponent, ButtonIconComponent], template: "@if (isOpen()) {\n<div class=\"c-modal\" [ngClass]=\"classes()\">\n <!-- Backdrop -->\n <div\n class=\"c-modal__backdrop\"\n [ngClass]=\"backdropClasses()\"\n (click)=\"onBackdropClick($event)\"\n (keydown.escape)=\"close()\"\n tabindex=\"0\"\n role=\"button\"\n aria-label=\"Close modal\"\n ></div>\n\n <!-- Modal Content -->\n <div\n class=\"c-modal__content\"\n [ngClass]=\"contentClasses()\"\n (keydown.escape)=\"close()\"\n tabindex=\"0\"\n role=\"dialog\"\n [attr.aria-labelledby]=\"title() ? 'modal-title' : null\"\n [attr.aria-describedby]=\"description() ? 'modal-description' : null\"\n >\n <!-- Header -->\n @if (title() || showCloseButton()) {\n <div class=\"c-modal__header\">\n @if (title()) {\n <h2 id=\"modal-title\" class=\"c-modal__title\">{{ title() }}</h2>\n } @if (showCloseButton()) {\n <lib-button-icon\n iconName=\"x-regular\"\n size=\"sm\"\n variant=\"neutral\"\n (click)=\"onCloseButtonClick()\"\n aria-label=\"Close modal\"\n ></lib-button-icon>\n }\n </div>\n }\n\n <!-- Description -->\n @if (description()) {\n <div id=\"modal-description\" class=\"c-modal__description\">\n <p>{{ description() }}</p>\n </div>\n }\n\n <!-- Body Content -->\n <div class=\"c-modal__body\">\n <ng-content></ng-content>\n </div>\n\n <!-- Footer with Buttons -->\n @if (primaryButton() || secondaryButton()) {\n <div class=\"c-modal__footer\">\n @if (secondaryButton()) {\n <lib-button\n [text]=\"secondaryButton()!.text\"\n [variant]=\"secondaryButton()!.variant\"\n [disabled]=\"secondaryButton()!.disabled ?? false\"\n [loading]=\"secondaryButton()!.loading ?? false\"\n [fullWidth]=\"true\"\n (clicked)=\"onSecondaryButtonClick()\"\n class=\"c-modal__button c-modal__button--secondary\"\n ></lib-button>\n } @if (primaryButton()) {\n <lib-button\n [text]=\"primaryButton()!.text\"\n [variant]=\"primaryButton()!.variant\"\n [disabled]=\"primaryButton()!.disabled ?? false\"\n [loading]=\"primaryButton()!.loading ?? false\"\n [fullWidth]=\"true\"\n (clicked)=\"onPrimaryButtonClick()\"\n class=\"c-modal__button c-modal__button--primary\"\n ></lib-button>\n }\n </div>\n }\n </div>\n</div>\n}\n", styles: [".c-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:var(--base-modal);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease-in-out,visibility .2s ease-in-out}.c-modal__content{width:100%}.c-modal__content--sm{max-width:416px}.c-modal__content--md{max-width:636px}.c-modal__content--lg{max-width:856px}.c-modal--open,.c-modal--visible{opacity:1;visibility:visible}@media (max-width: 768px){.c-modal{align-items:flex-end}.c-modal--sm .c-modal__content,.c-modal--md .c-modal__content{position:fixed;bottom:0;left:0;right:0;width:100%;max-width:none;transform:translateY(100%);transition:transform .3s ease-in-out}.c-modal--sm.c-modal--visible .c-modal__content,.c-modal--md.c-modal--visible .c-modal__content{transform:translateY(0)}.c-modal--lg{align-items:stretch}.c-modal--lg .c-modal__content{position:fixed;inset:0;width:100%;height:100%;max-width:none;border-radius:0;transform:scale(.95);transition:transform .3s ease-in-out}.c-modal--lg.c-modal--visible .c-modal__content{transform:scale(1)}}.c-modal__backdrop{position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--color-effect-overlay);opacity:0;transition:opacity .2s ease-in-out}.c-modal__backdrop--open,.c-modal__backdrop--visible{opacity:1}.c-modal__content{background-color:var(--color-core-background-surface-floating);box-shadow:var(--elevation-floating);overflow:hidden;display:flex;flex-direction:column}.c-modal__content--open,.c-modal__content--visible{transform:scale(1)}.c-modal__header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-container-padding-sm);border-bottom:1px solid var(--color-core-border-soft);gap:var(--space-container-gap-sm)}.c-modal__title{margin:0;font-family:var(--typography-label-lg-default-family),sans-serif;font-weight:var(--typography-label-lg-default-weight);font-size:var(--typography-label-lg-default-size);line-height:var(--typography-label-lg-default-line-height);color:var(--color-core-content-default);flex:1}.c-modal__close-button{background:none;border:none;cursor:pointer;padding:var(--space-component-padding-xs);border-radius:var(--size-border-radius-sm);display:flex;align-items:center;justify-content:center;color:var(--color-core-content-soft);transition:all .2s ease-in-out}.c-modal__close-button:hover{background-color:var(--color-core-background-neutral-soft);color:var(--color-core-content-default)}.c-modal__close-button:focus-visible{outline:2px solid var(--color-core-border-default);outline-offset:2px}.c-modal__description{padding:var(--space-component-padding-lg);border-bottom:1px solid var(--color-core-border-soft)}.c-modal__description p{margin:0;font-family:var(--typography-body-md-family),sans-serif;font-weight:var(--typography-body-md-weight);font-size:var(--typography-body-md-size);line-height:var(--typography-body-md-line-height);color:var(--color-core-content-soft)}@media (max-width: 768px){.c-modal__description{padding:var(--space-component-padding-md)}}.c-modal__body{flex:1;padding:var(--space-component-padding-lg);overflow-y:auto}@media (max-width: 768px){.c-modal__body{padding:var(--space-component-padding-md)}}.c-modal__footer{display:flex;gap:var(--space-component-gap-md);padding:var(--space-component-padding-lg);border-top:1px solid var(--color-core-border-soft);background-color:var(--color-core-background-neutral-soft)}@media (max-width: 768px){.c-modal__footer{flex-direction:column;padding:var(--space-component-padding-md);gap:var(--space-component-gap-sm)}}.c-modal__button{flex:1}@media (max-width: 768px){.c-modal__button{width:100%}}.c-modal__button--primary{order:2}.c-modal__button--secondary{order:1}\n"] }]
|
|
4809
|
+
}], ctorParameters: () => [] });
|
|
4810
|
+
|
|
4721
4811
|
/**
|
|
4722
4812
|
* Generated bundle index. Do not edit.
|
|
4723
4813
|
*/
|
|
4724
4814
|
|
|
4725
|
-
export { AccordionComponent, AlertComponent, ArrowsComponent, AvatarComponent, BadgeComponent, ButtonComponent, ButtonIconComponent, ButtonSetComponent, CheckboxComponent, CheckboxGroupComponent, ChipsComponent, DesignTokensComponent, HelperTextComponent, IconComponent, InputDateComponent, InputLabelComponent, InputNumberComponent, InputPaymentComponent, InputSearchComponent, InputUploadComponent, LinkComponent, PaginationComponent, PasswordInputComponent, RadioComponent, RadioGroupComponent, SegmentedControlComponent, SelectComponent, SocialLoginComponent, SpinnerComponent, SwitchComponent, TabsComponent, TagComponent, TextInputComponent, TextareaComponent, ThumbnailComponent, TileComponent, ToastComponent, TooltipComponent };
|
|
4815
|
+
export { AccordionComponent, AlertComponent, ArrowsComponent, AvatarComponent, BadgeComponent, ButtonComponent, ButtonIconComponent, ButtonSetComponent, CheckboxComponent, CheckboxGroupComponent, ChipsComponent, DesignTokensComponent, HelperTextComponent, IconComponent, InputDateComponent, InputLabelComponent, InputNumberComponent, InputPaymentComponent, InputSearchComponent, InputUploadComponent, LinkComponent, ModalComponent, PaginationComponent, PasswordInputComponent, RadioComponent, RadioGroupComponent, SegmentedControlComponent, SelectComponent, SocialLoginComponent, SpinnerComponent, SwitchComponent, TabsComponent, TagComponent, TextInputComponent, TextareaComponent, ThumbnailComponent, TileComponent, ToastComponent, TooltipComponent };
|
|
4726
4816
|
//# sourceMappingURL=crowdfarming-oliva-ds.mjs.map
|