@raintonic/formaui 0.3.1 → 0.4.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.
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs +8 -1
- package/fesm2022/raintonic-formaui-cdk-overlay.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-date-picker.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-date-picker.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-menu.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-menu.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-paginator.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-paginator.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-popover.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-popover.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-select.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-select.mjs.map +1 -1
- package/fesm2022/raintonic-formaui-components-time-picker.mjs +2 -2
- package/fesm2022/raintonic-formaui-components-time-picker.mjs.map +1 -1
- package/fesm2022/raintonic-formaui.mjs +1 -1
- package/fesm2022/raintonic-formaui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/raintonic-formaui-cdk-overlay.d.ts.map +1 -1
- package/types/raintonic-formaui.d.ts +1 -1
|
@@ -624,7 +624,7 @@ class FuiTimePickerComponent {
|
|
|
624
624
|
provide: FUI_FORM_FIELD_CONTROL,
|
|
625
625
|
useExisting: FuiTimePickerComponent,
|
|
626
626
|
},
|
|
627
|
-
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }, { propertyName: "timeListPanel", first: true, predicate: ["timeListPanel"], descendants: true }], ngImport: i0, template: "<div class=\"fui-time-picker__wrapper\">\r\n <input\r\n #inputElement\r\n class=\"fui-time-picker__input\"\r\n type=\"text\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.disabled]=\"disabled() ? '' : null\"\r\n [attr.readonly]=\"readonly() ? '' : null\"\r\n [value]=\"_displayValue()\"\r\n [attr.aria-expanded]=\"_panelOpen()\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-describedby]=\"_ariaDescribedby\"\r\n [attr.aria-required]=\"required()\"\r\n [attr.aria-invalid]=\"errorState()\"\r\n role=\"combobox\"\r\n autocomplete=\"off\"\r\n (input)=\"_onManualInput($event)\"\r\n (keydown)=\"_onKeydown($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n />\r\n @if (!_readOnly()) {\r\n <button\r\n type=\"button\"\r\n class=\"fui-time-picker__toggle\"\r\n (click)=\"_togglePanel()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"intl.toggleAriaLabel\"\r\n >\r\n <fui-icon name=\"clock\" size=\"sm\"></fui-icon>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (_panelOpen()) {\r\n <div #timeListPanel class=\"fui-time-picker__panel\" role=\"dialog\" [attr.aria-label]=\"intl.dialogAriaLabel\">\r\n <fui-time-list\r\n [options]=\"_timeOptions()\"\r\n [selectedValue]=\"_value()\"\r\n [format]=\"formatInput()\"\r\n (optionSelected)=\"_onOptionSelected($event)\"\r\n />\r\n </div>\r\n}\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition:opacity var(--fui-duration-fast-02) var(--fui-ease-entrance) 0ms}.fui-motion-fade-out{transition:opacity var(--fui-duration-fast-01) var(--fui-ease-exit) 0ms}.fui-motion-slide-in-bottom{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition:transform,opacity var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-moderate-01) var(--fui-ease-entrance)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-time-picker{--fui-time-picker-font-size: var(--fui-font-size-02);--fui-time-picker-panel-border-radius: var(--fui-border-radius-md);--fui-time-picker-panel-shadow: var(--fui-shadow-03);--fui-time-picker-panel-bg: var(--fui-surface-00);--fui-time-picker-toggle-size: 1.5rem;display:inline-block;width:100%;position:relative}.fui-time-picker__wrapper{width:100%;min-height:100%;display:flex;align-items:center;gap:var(--fui-spacing-01);cursor:pointer;background:transparent;border:none}.fui-time-picker__input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-family:var(--fui-font-family-sans);font-size:var(--fui-font-size-02);font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-02);letter-spacing:var(--fui-letter-spacing-normal);color:var(--fui-text-primary);padding:0;cursor:text}.fui-time-picker__input::placeholder{color:var(--fui-text-disabled)}.fui-time-picker__input:disabled{cursor:not-allowed;opacity:.5}.fui-time-picker__toggle{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.fui-time-picker__toggle:focus-visible{outline:2px solid var(--fui-primary);outline-offset:2px}.fui-time-picker__toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--fui-time-picker-toggle-size);height:var(--fui-time-picker-toggle-size);color:var(--fui-text-secondary);border-radius:var(--fui-border-radius-sm);transition:color var(--fui-duration-fast-02) var(--fui-ease-standard) 0ms}.fui-time-picker__toggle:hover:not(:disabled){color:var(--fui-text-primary)}.fui-time-picker__toggle:disabled{color:var(--fui-text-disabled);cursor:not-allowed}.fui-time-picker__panel{background:var(--fui-time-picker-panel-bg);border:1px solid var(--fui-border-color);border-radius:var(--fui-time-picker-panel-border-radius);box-shadow:var(--fui-time-picker-panel-shadow);transition:opacity,transform var(--fui-duration-fast-02) var(--fui-ease-standard) 0ms}.fui-time-picker--disabled{pointer-events:none}.fui-time-picker--disabled .fui-time-picker__wrapper{cursor:not-allowed;opacity:.5}.fui-time-picker--readonly{pointer-events:none}.fui-time-picker--readonly .fui-time-picker__wrapper{cursor:default;opacity:1}.fui-time-picker--readonly .fui-time-picker__input{color:var(--fui-text-primary)!important;-webkit-text-fill-color:var(--fui-text-primary)!important;cursor:default;opacity:1}.fui-time-picker--readonly .fui-time-picker__input:disabled{opacity:1;cursor:default}.fui-time-picker-backdrop{background:transparent}
|
|
627
|
+
], viewQueries: [{ propertyName: "inputElement", first: true, predicate: ["inputElement"], descendants: true }, { propertyName: "timeListPanel", first: true, predicate: ["timeListPanel"], descendants: true }], ngImport: i0, template: "<div class=\"fui-time-picker__wrapper\">\r\n <input\r\n #inputElement\r\n class=\"fui-time-picker__input\"\r\n type=\"text\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.disabled]=\"disabled() ? '' : null\"\r\n [attr.readonly]=\"readonly() ? '' : null\"\r\n [value]=\"_displayValue()\"\r\n [attr.aria-expanded]=\"_panelOpen()\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-describedby]=\"_ariaDescribedby\"\r\n [attr.aria-required]=\"required()\"\r\n [attr.aria-invalid]=\"errorState()\"\r\n role=\"combobox\"\r\n autocomplete=\"off\"\r\n (input)=\"_onManualInput($event)\"\r\n (keydown)=\"_onKeydown($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n />\r\n @if (!_readOnly()) {\r\n <button\r\n type=\"button\"\r\n class=\"fui-time-picker__toggle\"\r\n (click)=\"_togglePanel()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"intl.toggleAriaLabel\"\r\n >\r\n <fui-icon name=\"clock\" size=\"sm\"></fui-icon>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (_panelOpen()) {\r\n <div #timeListPanel class=\"fui-time-picker__panel\" role=\"dialog\" [attr.aria-label]=\"intl.dialogAriaLabel\">\r\n <fui-time-list\r\n [options]=\"_timeOptions()\"\r\n [selectedValue]=\"_value()\"\r\n [format]=\"formatInput()\"\r\n (optionSelected)=\"_onOptionSelected($event)\"\r\n />\r\n </div>\r\n}\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition:opacity var(--fui-duration-fast-02) var(--fui-ease-entrance) 0ms}.fui-motion-fade-out{transition:opacity var(--fui-duration-fast-01) var(--fui-ease-exit) 0ms}.fui-motion-slide-in-bottom{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition:transform,opacity var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-moderate-01) var(--fui-ease-entrance)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-time-picker{--fui-time-picker-font-size: var(--fui-font-size-02);--fui-time-picker-panel-border-radius: var(--fui-border-radius-md);--fui-time-picker-panel-shadow: var(--fui-shadow-03);--fui-time-picker-panel-bg: var(--fui-surface-00);--fui-time-picker-toggle-size: 1.5rem;display:inline-block;width:100%;position:relative}.fui-time-picker__wrapper{width:100%;min-height:100%;display:flex;align-items:center;gap:var(--fui-spacing-01);cursor:pointer;background:transparent;border:none}.fui-time-picker__input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-family:var(--fui-font-family-sans);font-size:var(--fui-font-size-02);font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-02);letter-spacing:var(--fui-letter-spacing-normal);color:var(--fui-text-primary);padding:0;cursor:text}.fui-time-picker__input::placeholder{color:var(--fui-text-disabled)}.fui-time-picker__input:disabled{cursor:not-allowed;opacity:.5}.fui-time-picker__toggle{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.fui-time-picker__toggle:focus-visible{outline:2px solid var(--fui-primary);outline-offset:2px}.fui-time-picker__toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--fui-time-picker-toggle-size);height:var(--fui-time-picker-toggle-size);color:var(--fui-text-secondary);border-radius:var(--fui-border-radius-sm);transition:color var(--fui-duration-fast-02) var(--fui-ease-standard) 0ms}.fui-time-picker__toggle:hover:not(:disabled){color:var(--fui-text-primary)}.fui-time-picker__toggle:disabled{color:var(--fui-text-disabled);cursor:not-allowed}.fui-time-picker__panel{background:var(--fui-time-picker-panel-bg);border:1px solid var(--fui-border-color);border-radius:var(--fui-time-picker-panel-border-radius);box-shadow:var(--fui-time-picker-panel-shadow);transition:opacity,transform var(--fui-duration-fast-02) var(--fui-ease-standard) 0ms}.fui-time-picker--disabled{pointer-events:none}.fui-time-picker--disabled .fui-time-picker__wrapper{cursor:not-allowed;opacity:.5}.fui-time-picker--readonly{pointer-events:none}.fui-time-picker--readonly .fui-time-picker__wrapper{cursor:default;opacity:1}.fui-time-picker--readonly .fui-time-picker__input{color:var(--fui-text-primary)!important;-webkit-text-fill-color:var(--fui-text-primary)!important;cursor:default;opacity:1}.fui-time-picker--readonly .fui-time-picker__input:disabled{opacity:1;cursor:default}.fui-time-picker-backdrop{background:transparent}@media(prefers-contrast:high){.fui-time-picker__panel{border-width:2px}}@media(prefers-reduced-motion:reduce){.fui-time-picker__panel{transition:none}}\n"], dependencies: [{ kind: "component", type: FuiIconComponent, selector: "fui-icon", inputs: ["name", "size", "weight", "color", "ariaLabel", "spin", "pulse"] }, { kind: "component", type: FuiTimeListComponent, selector: "fui-time-list", inputs: ["options", "selectedValue", "format"], outputs: ["optionSelected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
628
628
|
}
|
|
629
629
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImport: i0, type: FuiTimePickerComponent, decorators: [{
|
|
630
630
|
type: Component,
|
|
@@ -646,7 +646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.6", ngImpor
|
|
|
646
646
|
provide: FUI_FORM_FIELD_CONTROL,
|
|
647
647
|
useExisting: FuiTimePickerComponent,
|
|
648
648
|
},
|
|
649
|
-
], template: "<div class=\"fui-time-picker__wrapper\">\r\n <input\r\n #inputElement\r\n class=\"fui-time-picker__input\"\r\n type=\"text\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.disabled]=\"disabled() ? '' : null\"\r\n [attr.readonly]=\"readonly() ? '' : null\"\r\n [value]=\"_displayValue()\"\r\n [attr.aria-expanded]=\"_panelOpen()\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-describedby]=\"_ariaDescribedby\"\r\n [attr.aria-required]=\"required()\"\r\n [attr.aria-invalid]=\"errorState()\"\r\n role=\"combobox\"\r\n autocomplete=\"off\"\r\n (input)=\"_onManualInput($event)\"\r\n (keydown)=\"_onKeydown($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n />\r\n @if (!_readOnly()) {\r\n <button\r\n type=\"button\"\r\n class=\"fui-time-picker__toggle\"\r\n (click)=\"_togglePanel()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"intl.toggleAriaLabel\"\r\n >\r\n <fui-icon name=\"clock\" size=\"sm\"></fui-icon>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (_panelOpen()) {\r\n <div #timeListPanel class=\"fui-time-picker__panel\" role=\"dialog\" [attr.aria-label]=\"intl.dialogAriaLabel\">\r\n <fui-time-list\r\n [options]=\"_timeOptions()\"\r\n [selectedValue]=\"_value()\"\r\n [format]=\"formatInput()\"\r\n (optionSelected)=\"_onOptionSelected($event)\"\r\n />\r\n </div>\r\n}\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition:opacity var(--fui-duration-fast-02) var(--fui-ease-entrance) 0ms}.fui-motion-fade-out{transition:opacity var(--fui-duration-fast-01) var(--fui-ease-exit) 0ms}.fui-motion-slide-in-bottom{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition:transform,opacity var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-moderate-01) var(--fui-ease-entrance)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-time-picker{--fui-time-picker-font-size: var(--fui-font-size-02);--fui-time-picker-panel-border-radius: var(--fui-border-radius-md);--fui-time-picker-panel-shadow: var(--fui-shadow-03);--fui-time-picker-panel-bg: var(--fui-surface-00);--fui-time-picker-toggle-size: 1.5rem;display:inline-block;width:100%;position:relative}.fui-time-picker__wrapper{width:100%;min-height:100%;display:flex;align-items:center;gap:var(--fui-spacing-01);cursor:pointer;background:transparent;border:none}.fui-time-picker__input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-family:var(--fui-font-family-sans);font-size:var(--fui-font-size-02);font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-02);letter-spacing:var(--fui-letter-spacing-normal);color:var(--fui-text-primary);padding:0;cursor:text}.fui-time-picker__input::placeholder{color:var(--fui-text-disabled)}.fui-time-picker__input:disabled{cursor:not-allowed;opacity:.5}.fui-time-picker__toggle{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.fui-time-picker__toggle:focus-visible{outline:2px solid var(--fui-primary);outline-offset:2px}.fui-time-picker__toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--fui-time-picker-toggle-size);height:var(--fui-time-picker-toggle-size);color:var(--fui-text-secondary);border-radius:var(--fui-border-radius-sm);transition:color var(--fui-duration-fast-02) var(--fui-ease-standard) 0ms}.fui-time-picker__toggle:hover:not(:disabled){color:var(--fui-text-primary)}.fui-time-picker__toggle:disabled{color:var(--fui-text-disabled);cursor:not-allowed}.fui-time-picker__panel{background:var(--fui-time-picker-panel-bg);border:1px solid var(--fui-border-color);border-radius:var(--fui-time-picker-panel-border-radius);box-shadow:var(--fui-time-picker-panel-shadow);transition:opacity,transform var(--fui-duration-fast-02) var(--fui-ease-standard) 0ms}.fui-time-picker--disabled{pointer-events:none}.fui-time-picker--disabled .fui-time-picker__wrapper{cursor:not-allowed;opacity:.5}.fui-time-picker--readonly{pointer-events:none}.fui-time-picker--readonly .fui-time-picker__wrapper{cursor:default;opacity:1}.fui-time-picker--readonly .fui-time-picker__input{color:var(--fui-text-primary)!important;-webkit-text-fill-color:var(--fui-text-primary)!important;cursor:default;opacity:1}.fui-time-picker--readonly .fui-time-picker__input:disabled{opacity:1;cursor:default}.fui-time-picker-backdrop{background:transparent}
|
|
649
|
+
], template: "<div class=\"fui-time-picker__wrapper\">\r\n <input\r\n #inputElement\r\n class=\"fui-time-picker__input\"\r\n type=\"text\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.disabled]=\"disabled() ? '' : null\"\r\n [attr.readonly]=\"readonly() ? '' : null\"\r\n [value]=\"_displayValue()\"\r\n [attr.aria-expanded]=\"_panelOpen()\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-describedby]=\"_ariaDescribedby\"\r\n [attr.aria-required]=\"required()\"\r\n [attr.aria-invalid]=\"errorState()\"\r\n role=\"combobox\"\r\n autocomplete=\"off\"\r\n (input)=\"_onManualInput($event)\"\r\n (keydown)=\"_onKeydown($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n />\r\n @if (!_readOnly()) {\r\n <button\r\n type=\"button\"\r\n class=\"fui-time-picker__toggle\"\r\n (click)=\"_togglePanel()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"intl.toggleAriaLabel\"\r\n >\r\n <fui-icon name=\"clock\" size=\"sm\"></fui-icon>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (_panelOpen()) {\r\n <div #timeListPanel class=\"fui-time-picker__panel\" role=\"dialog\" [attr.aria-label]=\"intl.dialogAriaLabel\">\r\n <fui-time-list\r\n [options]=\"_timeOptions()\"\r\n [selectedValue]=\"_value()\"\r\n [format]=\"formatInput()\"\r\n (optionSelected)=\"_onOptionSelected($event)\"\r\n />\r\n </div>\r\n}\r\n", styles: ["@keyframes fui-skeleton-pulse{0%{opacity:1}50%{opacity:.4}to{opacity:1}}@keyframes fui-spin{to{transform:rotate(360deg)}}@keyframes fui-shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-2px)}20%,40%,60%,80%{transform:translate(2px)}}.fui-motion-fade-in{transition:opacity var(--fui-duration-fast-02) var(--fui-ease-entrance) 0ms}.fui-motion-fade-out{transition:opacity var(--fui-duration-fast-01) var(--fui-ease-exit) 0ms}.fui-motion-slide-in-bottom{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-bottom.fui-motion-entering{transform:translateY(1rem)}.fui-motion-slide-in-top{transition:transform var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:translateY(0)}.fui-motion-slide-in-top.fui-motion-entering{transform:translateY(-1rem)}.fui-motion-scale-in{transition:transform,opacity var(--fui-duration-moderate-01) var(--fui-ease-entrance) 0ms;transform:scale(1);opacity:1}.fui-motion-scale-in.fui-motion-entering{transform:scale(.95);opacity:0}.fui-no-motion{transition:none!important;animation:none!important}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes fui-pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05)}to{transform:scale(1);opacity:1}}@keyframes fui-slide-in{0%{transform:translate(120%)}to{transform:translate(0)}}.fui-slide-in{animation:fui-slide-in var(--fui-duration-moderate-01) var(--fui-ease-entrance)}@keyframes fui-popover-enter{0%{opacity:0;transform:translateY(-14px)}60%{opacity:1}to{opacity:1;transform:translateY(0)}}.fui-time-picker{--fui-time-picker-font-size: var(--fui-font-size-02);--fui-time-picker-panel-border-radius: var(--fui-border-radius-md);--fui-time-picker-panel-shadow: var(--fui-shadow-03);--fui-time-picker-panel-bg: var(--fui-surface-00);--fui-time-picker-toggle-size: 1.5rem;display:inline-block;width:100%;position:relative}.fui-time-picker__wrapper{width:100%;min-height:100%;display:flex;align-items:center;gap:var(--fui-spacing-01);cursor:pointer;background:transparent;border:none}.fui-time-picker__input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-family:var(--fui-font-family-sans);font-size:var(--fui-font-size-02);font-weight:var(--fui-font-weight-regular);line-height:var(--fui-line-height-02);letter-spacing:var(--fui-letter-spacing-normal);color:var(--fui-text-primary);padding:0;cursor:text}.fui-time-picker__input::placeholder{color:var(--fui-text-disabled)}.fui-time-picker__input:disabled{cursor:not-allowed;opacity:.5}.fui-time-picker__toggle{background:none;border:none;padding:0;margin:0;font:inherit;color:inherit;cursor:pointer;outline:none}.fui-time-picker__toggle:focus-visible{outline:2px solid var(--fui-primary);outline-offset:2px}.fui-time-picker__toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--fui-time-picker-toggle-size);height:var(--fui-time-picker-toggle-size);color:var(--fui-text-secondary);border-radius:var(--fui-border-radius-sm);transition:color var(--fui-duration-fast-02) var(--fui-ease-standard) 0ms}.fui-time-picker__toggle:hover:not(:disabled){color:var(--fui-text-primary)}.fui-time-picker__toggle:disabled{color:var(--fui-text-disabled);cursor:not-allowed}.fui-time-picker__panel{background:var(--fui-time-picker-panel-bg);border:1px solid var(--fui-border-color);border-radius:var(--fui-time-picker-panel-border-radius);box-shadow:var(--fui-time-picker-panel-shadow);transition:opacity,transform var(--fui-duration-fast-02) var(--fui-ease-standard) 0ms}.fui-time-picker--disabled{pointer-events:none}.fui-time-picker--disabled .fui-time-picker__wrapper{cursor:not-allowed;opacity:.5}.fui-time-picker--readonly{pointer-events:none}.fui-time-picker--readonly .fui-time-picker__wrapper{cursor:default;opacity:1}.fui-time-picker--readonly .fui-time-picker__input{color:var(--fui-text-primary)!important;-webkit-text-fill-color:var(--fui-text-primary)!important;cursor:default;opacity:1}.fui-time-picker--readonly .fui-time-picker__input:disabled{opacity:1;cursor:default}.fui-time-picker-backdrop{background:transparent}@media(prefers-contrast:high){.fui-time-picker__panel{border-width:2px}}@media(prefers-reduced-motion:reduce){.fui-time-picker__panel{transition:none}}\n"] }]
|
|
650
650
|
}], ctorParameters: () => [], propDecorators: { formatInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], showSeconds: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSeconds", required: false }] }], minuteStep: [{ type: i0.Input, args: [{ isSignal: true, alias: "minuteStep", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], placeholderInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabledInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], readonly: [{ type: i0.Input, args: [{ isSignal: true, alias: "readonly", required: false }] }], errorStateMatcher: [{ type: i0.Input, args: [{ isSignal: true, alias: "errorStateMatcher", required: false }] }], timeChange: [{ type: i0.Output, args: ["timeChange"] }], inputElement: [{
|
|
651
651
|
type: ViewChild,
|
|
652
652
|
args: ['inputElement', { static: false }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raintonic-formaui-components-time-picker.mjs","sources":["../../../lib/components/time-picker/time-picker.utils.ts","../../../lib/components/time-picker/time-picker.intl.ts","../../../lib/components/time-picker/time-list.component.ts","../../../lib/components/time-picker/time-list.component.html","../../../lib/components/time-picker/time-picker.component.ts","../../../lib/components/time-picker/time-picker.component.html","../../../lib/components/time-picker/raintonic-formaui-components-time-picker.ts"],"sourcesContent":["import { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\n\r\n/**\r\n * Convert a TimeValue to total minutes for comparison purposes.\r\n */\r\nexport function timeToMinutes(time: TimeValue): number {\r\n return time.hours * 60 + time.minutes + (time.seconds ? time.seconds / 60 : 0);\r\n}\r\n\r\n/**\r\n * Compare two TimeValue objects.\r\n * Returns -1 if a < b, 0 if equal, 1 if a > b.\r\n */\r\nexport function compareTime(a: TimeValue, b: TimeValue): number {\r\n const aMin = timeToMinutes(a);\r\n const bMin = timeToMinutes(b);\r\n if (aMin < bMin) return -1;\r\n if (aMin > bMin) return 1;\r\n return 0;\r\n}\r\n\r\n/**\r\n * Check if a time is within an optional min/max range (inclusive).\r\n */\r\nexport function isTimeInRange(time: TimeValue, min?: TimeValue, max?: TimeValue): boolean {\r\n if (min && compareTime(time, min) < 0) return false;\r\n if (max && compareTime(time, max) > 0) return false;\r\n return true;\r\n}\r\n\r\n/**\r\n * Format a TimeValue for display.\r\n * - 24h: \"14:30\" or \"14:30:00\"\r\n * - 12h: \"2:30 PM\" or \"2:30:00 PM\"\r\n */\r\nexport function formatTime(value: TimeValue | null, format: TimeFormat, showSeconds: boolean): string {\r\n if (!value) return '';\r\n\r\n const h = value.hours;\r\n const m = value.minutes;\r\n const s = value.seconds ?? 0;\r\n\r\n const pad = (n: number): string => n.toString().padStart(2, '0');\r\n\r\n if (format === '24h') {\r\n const base = `${pad(h)}:${pad(m)}`;\r\n return showSeconds ? `${base}:${pad(s)}` : base;\r\n }\r\n\r\n // 12h format\r\n const period = h >= 12 ? 'PM' : 'AM';\r\n let displayHour = h;\r\n if (h === 0) displayHour = 12;\r\n else if (h > 12) displayHour = h - 12;\r\n const base = `${displayHour}:${pad(m)}`;\r\n return showSeconds ? `${base}:${pad(s)} ${period}` : `${base} ${period}`;\r\n}\r\n\r\n/**\r\n * Parse a time string into a TimeValue.\r\n * Supports formats: \"HH:mm\", \"HH:mm:ss\", \"h:mm AM/PM\", \"h:mm:ss AM/PM\"\r\n * Returns null if the string cannot be parsed.\r\n */\r\nexport function parseTimeString(str: string, format: TimeFormat): TimeValue | null {\r\n if (!str?.trim()) return null;\r\n\r\n const trimmed = str.trim();\r\n\r\n if (format === '12h') {\r\n // Match patterns like \"2:30 PM\", \"12:30:45 AM\"\r\n const match12 = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM)$/i.exec(trimmed);\r\n if (!match12) return null;\r\n\r\n let hours = parseInt(match12[1], 10);\r\n const minutes = parseInt(match12[2], 10);\r\n const seconds = match12[3] ? parseInt(match12[3], 10) : undefined;\r\n const period = match12[4].toUpperCase();\r\n\r\n if (hours < 1 || hours > 12 || minutes < 0 || minutes > 59) return null;\r\n if (seconds !== undefined && (seconds < 0 || seconds > 59)) return null;\r\n\r\n if (period === 'AM' && hours === 12) hours = 0;\r\n else if (period === 'PM' && hours !== 12) hours += 12;\r\n\r\n return { hours, minutes, ...(seconds !== undefined ? { seconds } : {}) };\r\n }\r\n\r\n // 24h format: \"HH:mm\" or \"HH:mm:ss\"\r\n const match24 = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?$/.exec(trimmed);\r\n if (!match24) return null;\r\n\r\n const hours = parseInt(match24[1], 10);\r\n const minutes = parseInt(match24[2], 10);\r\n const seconds = match24[3] ? parseInt(match24[3], 10) : undefined;\r\n\r\n if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) return null;\r\n if (seconds !== undefined && (seconds < 0 || seconds > 59)) return null;\r\n\r\n return { hours, minutes, ...(seconds !== undefined ? { seconds } : {}) };\r\n}\r\n\r\n/**\r\n * Generate time options for the dropdown list.\r\n */\r\nexport function generateTimeOptions(\r\n format: TimeFormat,\r\n minuteStep: number,\r\n showSeconds: boolean,\r\n min?: TimeValue,\r\n max?: TimeValue,\r\n): TimeOption[] {\r\n const options: TimeOption[] = [];\r\n const step = Math.max(1, Math.min(60, minuteStep));\r\n\r\n for (let h = 0; h < 24; h++) {\r\n for (let m = 0; m < 60; m += step) {\r\n const value: TimeValue = { hours: h, minutes: m, ...(showSeconds ? { seconds: 0 } : {}) };\r\n const label = formatTime(value, format, showSeconds);\r\n const disabled = !isTimeInRange(value, min, max);\r\n options.push({ label, value, disabled });\r\n }\r\n }\r\n\r\n return options;\r\n}\r\n\r\n/**\r\n * Convert a TimeValue to an ISO-like string \"HH:mm\" or \"HH:mm:ss\".\r\n */\r\nexport function timeValueToString(value: TimeValue | null, showSeconds: boolean): string {\r\n if (!value) return '';\r\n const pad = (n: number): string => n.toString().padStart(2, '0');\r\n const base = `${pad(value.hours)}:${pad(value.minutes)}`;\r\n return showSeconds ? `${base}:${pad(value.seconds ?? 0)}` : base;\r\n}\r\n\r\n/**\r\n * Parse an ISO-like time string \"HH:mm\" or \"HH:mm:ss\" into a TimeValue.\r\n * This always parses in 24h format regardless of display format.\r\n */\r\nexport function parseISOTimeString(str: string): TimeValue | null {\r\n if (!str?.trim()) return null;\r\n return parseTimeString(str.trim(), '24h');\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FuiIntlBase } from '@raintonic/formaui/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FuiTimePickerIntl extends FuiIntlBase {\r\n toggleAriaLabel = 'Toggle time picker';\r\n dialogAriaLabel = 'Time selection';\r\n availableTimesAriaLabel = 'Available times';\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation,\r\n AfterViewInit,\r\n effect,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\nimport { compareTime } from './time-picker.utils';\r\nimport { FuiTimePickerIntl } from './time-picker.intl';\r\n\r\n@Component({\r\n selector: 'fui-time-list',\r\n standalone: true,\r\n templateUrl: './time-list.component.html',\r\n styleUrls: ['./time-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-time-list',\r\n },\r\n})\r\nexport class FuiTimeListComponent implements AfterViewInit {\r\n /** The list of time options to display. */\r\n readonly options = input.required<TimeOption[]>();\r\n\r\n /** Currently selected time value. */\r\n readonly selectedValue = input<TimeValue | null>(null);\r\n\r\n /** Time format for display. */\r\n readonly format = input<TimeFormat>('24h');\r\n\r\n /** Emitted when an option is selected. */\r\n readonly optionSelected = output<TimeValue>();\r\n\r\n /** Index of the currently focused option for keyboard navigation. */\r\n readonly _focusedIndex = signal(-1);\r\n\r\n @ViewChild('listContainer', { static: false }) listContainer?: ElementRef<HTMLDivElement>;\r\n\r\n readonly intl = inject(FuiTimePickerIntl);\r\n private readonly _cdr = inject(ChangeDetectorRef);\r\n\r\n constructor() {\r\n this.intl.changes.pipe(takeUntilDestroyed()).subscribe(() => { this._cdr.markForCheck(); });\r\n\r\n // Scroll to selected option when options change\r\n effect(() => {\r\n this.selectedValue();\r\n this.options();\r\n // Defer to next microtask so DOM is rendered\r\n void Promise.resolve().then(() => {\r\n this._scrollToSelected();\r\n });\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._scrollToSelected();\r\n }\r\n\r\n /** Check if an option matches the selected value. */\r\n _isSelected(option: TimeOption): boolean {\r\n const selected = this.selectedValue();\r\n if (!selected) return false;\r\n return compareTime(option.value, selected) === 0;\r\n }\r\n\r\n /** Handle option click. */\r\n _selectOption(option: TimeOption): void {\r\n if (option.disabled) return;\r\n this.optionSelected.emit(option.value);\r\n }\r\n\r\n /** Handle keyboard navigation. */\r\n onKeydown(event: KeyboardEvent): void {\r\n const opts = this.options();\r\n if (!opts.length) return;\r\n\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this._moveFocus(1);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this._moveFocus(-1);\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n this._selectFocused();\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n this._setFocusedIndex(0);\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n this._setFocusedIndex(opts.length - 1);\r\n break;\r\n }\r\n }\r\n\r\n /** Move focus by delta, skipping disabled options. */\r\n private _moveFocus(delta: number): void {\r\n const opts = this.options();\r\n if (!opts.length) return;\r\n\r\n let current = this._focusedIndex();\r\n const len = opts.length;\r\n let attempts = 0;\r\n\r\n do {\r\n current = (current + delta + len) % len;\r\n attempts++;\r\n } while (opts[current].disabled && attempts < len);\r\n\r\n if (!opts[current].disabled) {\r\n this._setFocusedIndex(current);\r\n }\r\n }\r\n\r\n /** Set focused index and scroll into view. */\r\n private _setFocusedIndex(index: number): void {\r\n this._focusedIndex.set(index);\r\n this._scrollToIndex(index);\r\n }\r\n\r\n /** Select the currently focused option. */\r\n private _selectFocused(): void {\r\n const idx = this._focusedIndex();\r\n const opts = this.options();\r\n if (idx >= 0 && idx < opts.length && !opts[idx].disabled) {\r\n this.optionSelected.emit(opts[idx].value);\r\n }\r\n }\r\n\r\n /** Scroll to a specific index in the list. */\r\n private _scrollToIndex(index: number): void {\r\n const container = this.listContainer?.nativeElement;\r\n if (!container) return;\r\n\r\n const items = container.querySelectorAll('.fui-time-list__option');\r\n const item = items[index] as HTMLElement;\r\n if (!item) return;\r\n\r\n const itemTop = item.offsetTop;\r\n const itemBottom = itemTop + item.offsetHeight;\r\n const scrollTop = container.scrollTop;\r\n const scrollBottom = scrollTop + container.clientHeight;\r\n\r\n if (itemTop < scrollTop) {\r\n container.scrollTop = itemTop;\r\n } else if (itemBottom > scrollBottom) {\r\n container.scrollTop = itemBottom - container.clientHeight;\r\n }\r\n }\r\n\r\n /** Scroll to the selected option. */\r\n private _scrollToSelected(): void {\r\n const selected = this.selectedValue();\r\n if (!selected) return;\r\n\r\n const opts = this.options();\r\n const index = opts.findIndex((o) => compareTime(o.value, selected) === 0);\r\n if (index >= 0) {\r\n this._focusedIndex.set(index);\r\n // Defer scroll to ensure DOM is rendered\r\n requestAnimationFrame(() => {\r\n this._scrollToIndex(index);\r\n });\r\n }\r\n }\r\n}\r\n","<div\r\n #listContainer\r\n class=\"fui-time-list__container\"\r\n role=\"listbox\"\r\n tabindex=\"0\"\r\n [attr.aria-label]=\"intl.availableTimesAriaLabel\"\r\n (keydown)=\"onKeydown($event)\"\r\n>\r\n @for (option of options(); track option.label) {\r\n <div\r\n class=\"fui-time-list__option\"\r\n [class.fui-time-list__option--selected]=\"_isSelected(option)\"\r\n [class.fui-time-list__option--disabled]=\"option.disabled\"\r\n [class.fui-time-list__option--focused]=\"_focusedIndex() === $index\"\r\n [attr.id]=\"'fui-time-option-' + $index\"\r\n [attr.aria-selected]=\"_isSelected(option)\"\r\n [attr.aria-disabled]=\"option.disabled\"\r\n role=\"option\"\r\n (click)=\"_selectOption(option)\"\r\n >\r\n {{ option.label }}\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n DoCheck,\r\n effect,\r\n ElementRef,\r\n inject,\r\n NgZone,\r\n input,\r\n InputSignal,\r\n InputSignalWithTransform,\r\n OnDestroy,\r\n output,\r\n OutputEmitterRef,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ControlValueAccessor, FormGroupDirective, NG_VALUE_ACCESSOR, NgControl, NgForm } from '@angular/forms';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { fromEvent, Subject, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { injectNgControl, updateErrorState, syncRequiredState, syncNgControlDisabled } from '@raintonic/formaui/cdk/form-field';\r\nimport { FUI_FORM_FIELD_CONTROL, FuiFormFieldControl } from '@raintonic/formaui/core';\r\nimport { DefaultErrorStateMatcher, ErrorStateMatcher } from '@raintonic/formaui/core';\r\nimport { FuiConnectedPosition, FuiOverlayRef, FuiOverlayService } from '@raintonic/formaui/cdk/overlay';\r\nimport { FuiIconComponent } from '@raintonic/formaui/components/icon';\r\nimport { FuiTimeListComponent } from './time-list.component';\r\nimport { FuiTimePickerIntl } from './time-picker.intl';\r\nimport { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\nimport {\r\n formatTime,\r\n generateTimeOptions,\r\n parseISOTimeString,\r\n parseTimeString,\r\n timeValueToString,\r\n} from './time-picker.utils';\r\n\r\n@Component({\r\n selector: 'fui-time-picker',\r\n standalone: true,\r\n imports: [FuiIconComponent, FuiTimeListComponent],\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-time-picker',\r\n '[attr.id]': 'id',\r\n '[class.fui-time-picker--open]': '_panelOpen()',\r\n '[class.fui-time-picker--disabled]': 'disabled()',\r\n '[class.fui-time-picker--focused]': 'focused()',\r\n '[class.fui-time-picker--error]': 'errorState()',\r\n '[class.fui-time-picker--readonly]': '_readOnly()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: FuiTimePickerComponent,\r\n multi: true,\r\n },\r\n {\r\n provide: FUI_FORM_FIELD_CONTROL,\r\n useExisting: FuiTimePickerComponent,\r\n },\r\n ],\r\n})\r\nexport class FuiTimePickerComponent implements ControlValueAccessor, FuiFormFieldControl<string>, DoCheck, OnDestroy {\r\n static nextId = 0;\r\n readonly controlType = 'fui-time-picker';\r\n\r\n // --- Inputs ---\r\n readonly formatInput: InputSignal<TimeFormat> = input<TimeFormat>('24h', { alias: 'format' });\r\n readonly showSeconds: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly minuteStep: InputSignal<number> = input(15);\r\n readonly min: InputSignal<string> = input('');\r\n readonly max: InputSignal<string> = input('');\r\n readonly placeholderInput: InputSignal<string> = input('', { alias: 'placeholder' });\r\n readonly disabledInput: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly readonly: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly errorStateMatcher: InputSignal<ErrorStateMatcher | null> = input<ErrorStateMatcher | null>(null);\r\n\r\n // --- Outputs ---\r\n readonly timeChange: OutputEmitterRef<string> = output<string>();\r\n\r\n // --- Internal state ---\r\n /** @internal */ readonly _value: WritableSignal<TimeValue | null> = signal(null);\r\n private readonly _focused: WritableSignal<boolean> = signal(false);\r\n private readonly _disabled: WritableSignal<boolean> = signal(false);\r\n private readonly _ngControlDisabled: WritableSignal<boolean> = signal(false);\r\n private readonly _required: WritableSignal<boolean> = signal(false);\r\n private readonly _errorState: WritableSignal<boolean> = signal(false);\r\n readonly _readOnly: WritableSignal<boolean> = signal(false);\r\n readonly _panelOpen = signal(false);\r\n\r\n // --- FuiFormFieldControl ---\r\n readonly stateChanges = new Subject<void>();\r\n private _uid = `fui-time-picker-${FuiTimePickerComponent.nextId++}`;\r\n _ariaDescribedby: string | null = null;\r\n\r\n // Form references\r\n private _parentForm = inject(NgForm, { optional: true });\r\n private _parentFormGroup = inject(FormGroupDirective, { optional: true });\r\n private _defaultErrorStateMatcher = inject(DefaultErrorStateMatcher);\r\n private readonly _ngControlRef = injectNgControl();\r\n get ngControl(): NgControl | null {\r\n return this._ngControlRef.ngControl;\r\n }\r\n\r\n // Interface signals\r\n readonly placeholder = computed(() => this.placeholderInput());\r\n readonly required = this._required;\r\n readonly value = computed(() => {\r\n const tv = this._value();\r\n return tv ? timeValueToString(tv, this.showSeconds()) : null;\r\n });\r\n readonly focused = this._focused;\r\n readonly disabled = computed(() => this._disabled() || this.disabledInput() || this._ngControlDisabled());\r\n readonly errorState = this._errorState;\r\n readonly id = this._uid;\r\n\r\n readonly empty = computed(() => {\r\n return this._value() === null;\r\n });\r\n\r\n // Display value formatted for current format\r\n readonly _displayValue = computed(() => {\r\n return formatTime(this._value(), this.formatInput(), this.showSeconds());\r\n });\r\n\r\n // Display value for form-field readOnly mode\r\n readonly displayValue = this._displayValue;\r\n\r\n // Computed time options for dropdown\r\n readonly _timeOptions = computed<TimeOption[]>(() => {\r\n const minVal = this.min() ? parseISOTimeString(this.min()) : undefined;\r\n const maxVal = this.max() ? parseISOTimeString(this.max()) : undefined;\r\n return generateTimeOptions(\r\n this.formatInput(),\r\n this.minuteStep(),\r\n this.showSeconds(),\r\n minVal ?? undefined,\r\n maxVal ?? undefined,\r\n );\r\n });\r\n\r\n // ViewChild\r\n @ViewChild('inputElement', { static: false }) inputElement?: ElementRef<HTMLInputElement>;\r\n @ViewChild('timeListPanel', { static: false }) timeListPanel?: ElementRef<HTMLDivElement>;\r\n\r\n // Overlay\r\n private _overlayRef: FuiOverlayRef | null = null;\r\n private _overlaySubscriptions = new Subscription();\r\n private readonly _overlayService = inject(FuiOverlayService);\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _document = inject(DOCUMENT);\r\n private readonly _ngZone = inject(NgZone);\r\n readonly intl = inject(FuiTimePickerIntl);\r\n private readonly _cdr = inject(ChangeDetectorRef);\r\n private _outsideClickSub?: Subscription;\r\n\r\n // CVA callbacks\r\n private _onChange: (value: string | null) => void = () => {\r\n /* noop */\r\n };\r\n private _onTouched: () => void = () => {\r\n /* noop */\r\n };\r\n\r\n constructor() {\r\n this.intl.changes.pipe(takeUntilDestroyed()).subscribe(() => { this._cdr.markForCheck(); });\r\n\r\n void Promise.resolve().then(() => {\r\n if (this._ngControlRef.ngControl) {\r\n this._ngControlRef.ngControl.valueAccessor = this;\r\n }\r\n });\r\n\r\n // Effect to emit state changes\r\n effect(() => {\r\n this.placeholderInput();\r\n this.readonly();\r\n this.disabledInput();\r\n this.formatInput();\r\n this.showSeconds();\r\n this.minuteStep();\r\n this.min();\r\n this.max();\r\n this.errorStateMatcher();\r\n this._focused();\r\n this._disabled();\r\n this._value();\r\n this._ngControlDisabled();\r\n this._required();\r\n this._errorState();\r\n\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (this.ngControl) {\r\n updateErrorState(\r\n this.ngControl,\r\n this._errorState,\r\n this.errorStateMatcher(),\r\n this._defaultErrorStateMatcher,\r\n this._parentForm,\r\n this._parentFormGroup,\r\n this.stateChanges,\r\n );\r\n syncRequiredState(this.ngControl, this._required, this.stateChanges);\r\n syncNgControlDisabled(this.ngControl, this._ngControlDisabled, this.stateChanges);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._outsideClickSub?.unsubscribe();\r\n this._disposeOverlay();\r\n }\r\n\r\n // --- CVA ---\r\n\r\n writeValue(value: string | null): void {\r\n if (value) {\r\n const parsed = parseISOTimeString(value);\r\n this._value.set(parsed);\r\n } else {\r\n this._value.set(null);\r\n }\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: (value: string | null) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n this.stateChanges.next();\r\n }\r\n\r\n // --- FuiFormFieldControl ---\r\n\r\n onContainerClick(_event: MouseEvent): void {\r\n if (!this.disabled()) {\r\n this.inputElement?.nativeElement.focus();\r\n if (!this._panelOpen()) {\r\n this.open();\r\n }\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._ariaDescribedby = ids.length ? ids.join(' ') : null;\r\n }\r\n\r\n setReadOnly(readOnly: boolean): void {\r\n this._readOnly.set(readOnly);\r\n }\r\n\r\n // --- Panel open/close ---\r\n\r\n open(): void {\r\n if (this.disabled() || this.readonly() || this._panelOpen()) return;\r\n\r\n requestAnimationFrame(() => {\r\n this._panelOpen.set(true);\r\n this._focused.set(true);\r\n\r\n setTimeout(() => {\r\n this._createOverlay();\r\n this._listenForOutsideClicks();\r\n });\r\n });\r\n }\r\n\r\n close(): void {\r\n if (!this._panelOpen()) return;\r\n this._outsideClickSub?.unsubscribe();\r\n\r\n this._panelOpen.set(false);\r\n this._focused.set(false);\r\n this._disposeOverlay();\r\n this._onTouched();\r\n\r\n setTimeout(() => {\r\n this.inputElement?.nativeElement.focus();\r\n }, 0);\r\n }\r\n\r\n _togglePanel(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (this._panelOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n // --- Event handlers ---\r\n\r\n _onManualInput(_event: Event): void {\r\n // We handle parsing on blur, not on every keystroke\r\n }\r\n\r\n _onKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' && this._panelOpen()) {\r\n event.preventDefault();\r\n this.close();\r\n } else if (event.key === 'ArrowDown' && !this._panelOpen()) {\r\n event.preventDefault();\r\n this.open();\r\n } else if (event.key === 'Enter' && !this._panelOpen()) {\r\n event.preventDefault();\r\n this.open();\r\n }\r\n }\r\n\r\n _onFocus(): void {\r\n this._focused.set(true);\r\n }\r\n\r\n _onBlur(): void {\r\n const input = this.inputElement?.nativeElement;\r\n if (!input) return;\r\n\r\n const text = input.value;\r\n if (!text) {\r\n this._setValue(null);\r\n return;\r\n }\r\n\r\n const parsed = parseTimeString(text, this.formatInput());\r\n if (parsed) {\r\n this._setValue(parsed);\r\n } else {\r\n // Invalid input — revert to previous formatted value\r\n input.value = this._displayValue();\r\n }\r\n\r\n if (!this._panelOpen()) {\r\n this._onTouched();\r\n }\r\n }\r\n\r\n /** Called when user selects an option from the time list dropdown. */\r\n _onOptionSelected(value: TimeValue): void {\r\n this._setValue(value);\r\n this.close();\r\n }\r\n\r\n // Start listening for outside clicks when panel opens\r\n private _listenForOutsideClicks(): void {\r\n this._outsideClickSub?.unsubscribe();\r\n\r\n this._ngZone.runOutsideAngular(() => {\r\n setTimeout(() => {\r\n this._outsideClickSub = fromEvent<MouseEvent>(this._document, 'click')\r\n .pipe(\r\n filter(() => this._panelOpen()),\r\n filter((event) => {\r\n const target = event.target as HTMLElement;\r\n const hostElement = this._elementRef.nativeElement;\r\n const overlayElement = this._overlayRef?.overlayElement;\r\n return !hostElement.contains(target) && !overlayElement?.contains(target);\r\n }),\r\n )\r\n .subscribe(() => {\r\n this._ngZone.run(() => {\r\n this.close();\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n // --- Private helpers ---\r\n\r\n private _setValue(value: TimeValue | null): void {\r\n this._value.set(value);\r\n const stringVal = value ? timeValueToString(value, this.showSeconds()) : null;\r\n this._onChange(stringVal);\r\n this.timeChange.emit(stringVal ?? '');\r\n this.stateChanges.next();\r\n }\r\n\r\n private _createOverlay(): void {\r\n if (this._overlayRef || !this.timeListPanel) return;\r\n\r\n const triggerElement = this._elementRef.nativeElement;\r\n const triggerWidth = triggerElement.getBoundingClientRect().width;\r\n\r\n const positions: FuiConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\r\n ];\r\n\r\n const positionStrategy = this._overlayService\r\n .position()\r\n .connectedTo(triggerElement, positions)\r\n .withPush(true)\r\n .withViewportMargin(8);\r\n\r\n this._overlayRef = this._overlayService.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlayService.scrollStrategies.reposition(),\r\n hasBackdrop: true,\r\n backdropClass: 'fui-time-picker-backdrop',\r\n backdropClickBehavior: 'close',\r\n panelClass: ['fui-time-picker-overlay-panel'],\r\n minWidth: Math.max(triggerWidth, 160),\r\n });\r\n\r\n // Track overlay subscriptions for proper cleanup\r\n this._overlaySubscriptions.unsubscribe();\r\n this._overlaySubscriptions = new Subscription();\r\n\r\n this._overlaySubscriptions.add(\r\n this._overlayRef.backdropClick.subscribe(() => {\r\n this.close();\r\n }),\r\n );\r\n\r\n this._overlaySubscriptions.add(\r\n this._overlayRef.keydownEvents.subscribe((event) => {\r\n if (event.key === 'Escape') {\r\n this.close();\r\n }\r\n }),\r\n );\r\n\r\n const panelElement = this.timeListPanel.nativeElement;\r\n this._overlayRef.attach(panelElement);\r\n }\r\n\r\n private _disposeOverlay(): void {\r\n this._overlaySubscriptions.unsubscribe();\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = null;\r\n }\r\n }\r\n}\r\n","<div class=\"fui-time-picker__wrapper\">\r\n <input\r\n #inputElement\r\n class=\"fui-time-picker__input\"\r\n type=\"text\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.disabled]=\"disabled() ? '' : null\"\r\n [attr.readonly]=\"readonly() ? '' : null\"\r\n [value]=\"_displayValue()\"\r\n [attr.aria-expanded]=\"_panelOpen()\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-describedby]=\"_ariaDescribedby\"\r\n [attr.aria-required]=\"required()\"\r\n [attr.aria-invalid]=\"errorState()\"\r\n role=\"combobox\"\r\n autocomplete=\"off\"\r\n (input)=\"_onManualInput($event)\"\r\n (keydown)=\"_onKeydown($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n />\r\n @if (!_readOnly()) {\r\n <button\r\n type=\"button\"\r\n class=\"fui-time-picker__toggle\"\r\n (click)=\"_togglePanel()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"intl.toggleAriaLabel\"\r\n >\r\n <fui-icon name=\"clock\" size=\"sm\"></fui-icon>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (_panelOpen()) {\r\n <div #timeListPanel class=\"fui-time-picker__panel\" role=\"dialog\" [attr.aria-label]=\"intl.dialogAriaLabel\">\r\n <fui-time-list\r\n [options]=\"_timeOptions()\"\r\n [selectedValue]=\"_value()\"\r\n [format]=\"formatInput()\"\r\n (optionSelected)=\"_onOptionSelected($event)\"\r\n />\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-components-time-picker.mjs","sources":["../../../lib/components/time-picker/time-picker.utils.ts","../../../lib/components/time-picker/time-picker.intl.ts","../../../lib/components/time-picker/time-list.component.ts","../../../lib/components/time-picker/time-list.component.html","../../../lib/components/time-picker/time-picker.component.ts","../../../lib/components/time-picker/time-picker.component.html","../../../lib/components/time-picker/raintonic-formaui-components-time-picker.ts"],"sourcesContent":["import { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\n\r\n/**\r\n * Convert a TimeValue to total minutes for comparison purposes.\r\n */\r\nexport function timeToMinutes(time: TimeValue): number {\r\n return time.hours * 60 + time.minutes + (time.seconds ? time.seconds / 60 : 0);\r\n}\r\n\r\n/**\r\n * Compare two TimeValue objects.\r\n * Returns -1 if a < b, 0 if equal, 1 if a > b.\r\n */\r\nexport function compareTime(a: TimeValue, b: TimeValue): number {\r\n const aMin = timeToMinutes(a);\r\n const bMin = timeToMinutes(b);\r\n if (aMin < bMin) return -1;\r\n if (aMin > bMin) return 1;\r\n return 0;\r\n}\r\n\r\n/**\r\n * Check if a time is within an optional min/max range (inclusive).\r\n */\r\nexport function isTimeInRange(time: TimeValue, min?: TimeValue, max?: TimeValue): boolean {\r\n if (min && compareTime(time, min) < 0) return false;\r\n if (max && compareTime(time, max) > 0) return false;\r\n return true;\r\n}\r\n\r\n/**\r\n * Format a TimeValue for display.\r\n * - 24h: \"14:30\" or \"14:30:00\"\r\n * - 12h: \"2:30 PM\" or \"2:30:00 PM\"\r\n */\r\nexport function formatTime(value: TimeValue | null, format: TimeFormat, showSeconds: boolean): string {\r\n if (!value) return '';\r\n\r\n const h = value.hours;\r\n const m = value.minutes;\r\n const s = value.seconds ?? 0;\r\n\r\n const pad = (n: number): string => n.toString().padStart(2, '0');\r\n\r\n if (format === '24h') {\r\n const base = `${pad(h)}:${pad(m)}`;\r\n return showSeconds ? `${base}:${pad(s)}` : base;\r\n }\r\n\r\n // 12h format\r\n const period = h >= 12 ? 'PM' : 'AM';\r\n let displayHour = h;\r\n if (h === 0) displayHour = 12;\r\n else if (h > 12) displayHour = h - 12;\r\n const base = `${displayHour}:${pad(m)}`;\r\n return showSeconds ? `${base}:${pad(s)} ${period}` : `${base} ${period}`;\r\n}\r\n\r\n/**\r\n * Parse a time string into a TimeValue.\r\n * Supports formats: \"HH:mm\", \"HH:mm:ss\", \"h:mm AM/PM\", \"h:mm:ss AM/PM\"\r\n * Returns null if the string cannot be parsed.\r\n */\r\nexport function parseTimeString(str: string, format: TimeFormat): TimeValue | null {\r\n if (!str?.trim()) return null;\r\n\r\n const trimmed = str.trim();\r\n\r\n if (format === '12h') {\r\n // Match patterns like \"2:30 PM\", \"12:30:45 AM\"\r\n const match12 = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?\\s*(AM|PM)$/i.exec(trimmed);\r\n if (!match12) return null;\r\n\r\n let hours = parseInt(match12[1], 10);\r\n const minutes = parseInt(match12[2], 10);\r\n const seconds = match12[3] ? parseInt(match12[3], 10) : undefined;\r\n const period = match12[4].toUpperCase();\r\n\r\n if (hours < 1 || hours > 12 || minutes < 0 || minutes > 59) return null;\r\n if (seconds !== undefined && (seconds < 0 || seconds > 59)) return null;\r\n\r\n if (period === 'AM' && hours === 12) hours = 0;\r\n else if (period === 'PM' && hours !== 12) hours += 12;\r\n\r\n return { hours, minutes, ...(seconds !== undefined ? { seconds } : {}) };\r\n }\r\n\r\n // 24h format: \"HH:mm\" or \"HH:mm:ss\"\r\n const match24 = /^(\\d{1,2}):(\\d{2})(?::(\\d{2}))?$/.exec(trimmed);\r\n if (!match24) return null;\r\n\r\n const hours = parseInt(match24[1], 10);\r\n const minutes = parseInt(match24[2], 10);\r\n const seconds = match24[3] ? parseInt(match24[3], 10) : undefined;\r\n\r\n if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) return null;\r\n if (seconds !== undefined && (seconds < 0 || seconds > 59)) return null;\r\n\r\n return { hours, minutes, ...(seconds !== undefined ? { seconds } : {}) };\r\n}\r\n\r\n/**\r\n * Generate time options for the dropdown list.\r\n */\r\nexport function generateTimeOptions(\r\n format: TimeFormat,\r\n minuteStep: number,\r\n showSeconds: boolean,\r\n min?: TimeValue,\r\n max?: TimeValue,\r\n): TimeOption[] {\r\n const options: TimeOption[] = [];\r\n const step = Math.max(1, Math.min(60, minuteStep));\r\n\r\n for (let h = 0; h < 24; h++) {\r\n for (let m = 0; m < 60; m += step) {\r\n const value: TimeValue = { hours: h, minutes: m, ...(showSeconds ? { seconds: 0 } : {}) };\r\n const label = formatTime(value, format, showSeconds);\r\n const disabled = !isTimeInRange(value, min, max);\r\n options.push({ label, value, disabled });\r\n }\r\n }\r\n\r\n return options;\r\n}\r\n\r\n/**\r\n * Convert a TimeValue to an ISO-like string \"HH:mm\" or \"HH:mm:ss\".\r\n */\r\nexport function timeValueToString(value: TimeValue | null, showSeconds: boolean): string {\r\n if (!value) return '';\r\n const pad = (n: number): string => n.toString().padStart(2, '0');\r\n const base = `${pad(value.hours)}:${pad(value.minutes)}`;\r\n return showSeconds ? `${base}:${pad(value.seconds ?? 0)}` : base;\r\n}\r\n\r\n/**\r\n * Parse an ISO-like time string \"HH:mm\" or \"HH:mm:ss\" into a TimeValue.\r\n * This always parses in 24h format regardless of display format.\r\n */\r\nexport function parseISOTimeString(str: string): TimeValue | null {\r\n if (!str?.trim()) return null;\r\n return parseTimeString(str.trim(), '24h');\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FuiIntlBase } from '@raintonic/formaui/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FuiTimePickerIntl extends FuiIntlBase {\r\n toggleAriaLabel = 'Toggle time picker';\r\n dialogAriaLabel = 'Time selection';\r\n availableTimesAriaLabel = 'Available times';\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation,\r\n AfterViewInit,\r\n effect,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\nimport { compareTime } from './time-picker.utils';\r\nimport { FuiTimePickerIntl } from './time-picker.intl';\r\n\r\n@Component({\r\n selector: 'fui-time-list',\r\n standalone: true,\r\n templateUrl: './time-list.component.html',\r\n styleUrls: ['./time-list.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-time-list',\r\n },\r\n})\r\nexport class FuiTimeListComponent implements AfterViewInit {\r\n /** The list of time options to display. */\r\n readonly options = input.required<TimeOption[]>();\r\n\r\n /** Currently selected time value. */\r\n readonly selectedValue = input<TimeValue | null>(null);\r\n\r\n /** Time format for display. */\r\n readonly format = input<TimeFormat>('24h');\r\n\r\n /** Emitted when an option is selected. */\r\n readonly optionSelected = output<TimeValue>();\r\n\r\n /** Index of the currently focused option for keyboard navigation. */\r\n readonly _focusedIndex = signal(-1);\r\n\r\n @ViewChild('listContainer', { static: false }) listContainer?: ElementRef<HTMLDivElement>;\r\n\r\n readonly intl = inject(FuiTimePickerIntl);\r\n private readonly _cdr = inject(ChangeDetectorRef);\r\n\r\n constructor() {\r\n this.intl.changes.pipe(takeUntilDestroyed()).subscribe(() => { this._cdr.markForCheck(); });\r\n\r\n // Scroll to selected option when options change\r\n effect(() => {\r\n this.selectedValue();\r\n this.options();\r\n // Defer to next microtask so DOM is rendered\r\n void Promise.resolve().then(() => {\r\n this._scrollToSelected();\r\n });\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._scrollToSelected();\r\n }\r\n\r\n /** Check if an option matches the selected value. */\r\n _isSelected(option: TimeOption): boolean {\r\n const selected = this.selectedValue();\r\n if (!selected) return false;\r\n return compareTime(option.value, selected) === 0;\r\n }\r\n\r\n /** Handle option click. */\r\n _selectOption(option: TimeOption): void {\r\n if (option.disabled) return;\r\n this.optionSelected.emit(option.value);\r\n }\r\n\r\n /** Handle keyboard navigation. */\r\n onKeydown(event: KeyboardEvent): void {\r\n const opts = this.options();\r\n if (!opts.length) return;\r\n\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this._moveFocus(1);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this._moveFocus(-1);\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n this._selectFocused();\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n this._setFocusedIndex(0);\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n this._setFocusedIndex(opts.length - 1);\r\n break;\r\n }\r\n }\r\n\r\n /** Move focus by delta, skipping disabled options. */\r\n private _moveFocus(delta: number): void {\r\n const opts = this.options();\r\n if (!opts.length) return;\r\n\r\n let current = this._focusedIndex();\r\n const len = opts.length;\r\n let attempts = 0;\r\n\r\n do {\r\n current = (current + delta + len) % len;\r\n attempts++;\r\n } while (opts[current].disabled && attempts < len);\r\n\r\n if (!opts[current].disabled) {\r\n this._setFocusedIndex(current);\r\n }\r\n }\r\n\r\n /** Set focused index and scroll into view. */\r\n private _setFocusedIndex(index: number): void {\r\n this._focusedIndex.set(index);\r\n this._scrollToIndex(index);\r\n }\r\n\r\n /** Select the currently focused option. */\r\n private _selectFocused(): void {\r\n const idx = this._focusedIndex();\r\n const opts = this.options();\r\n if (idx >= 0 && idx < opts.length && !opts[idx].disabled) {\r\n this.optionSelected.emit(opts[idx].value);\r\n }\r\n }\r\n\r\n /** Scroll to a specific index in the list. */\r\n private _scrollToIndex(index: number): void {\r\n const container = this.listContainer?.nativeElement;\r\n if (!container) return;\r\n\r\n const items = container.querySelectorAll('.fui-time-list__option');\r\n const item = items[index] as HTMLElement;\r\n if (!item) return;\r\n\r\n const itemTop = item.offsetTop;\r\n const itemBottom = itemTop + item.offsetHeight;\r\n const scrollTop = container.scrollTop;\r\n const scrollBottom = scrollTop + container.clientHeight;\r\n\r\n if (itemTop < scrollTop) {\r\n container.scrollTop = itemTop;\r\n } else if (itemBottom > scrollBottom) {\r\n container.scrollTop = itemBottom - container.clientHeight;\r\n }\r\n }\r\n\r\n /** Scroll to the selected option. */\r\n private _scrollToSelected(): void {\r\n const selected = this.selectedValue();\r\n if (!selected) return;\r\n\r\n const opts = this.options();\r\n const index = opts.findIndex((o) => compareTime(o.value, selected) === 0);\r\n if (index >= 0) {\r\n this._focusedIndex.set(index);\r\n // Defer scroll to ensure DOM is rendered\r\n requestAnimationFrame(() => {\r\n this._scrollToIndex(index);\r\n });\r\n }\r\n }\r\n}\r\n","<div\r\n #listContainer\r\n class=\"fui-time-list__container\"\r\n role=\"listbox\"\r\n tabindex=\"0\"\r\n [attr.aria-label]=\"intl.availableTimesAriaLabel\"\r\n (keydown)=\"onKeydown($event)\"\r\n>\r\n @for (option of options(); track option.label) {\r\n <div\r\n class=\"fui-time-list__option\"\r\n [class.fui-time-list__option--selected]=\"_isSelected(option)\"\r\n [class.fui-time-list__option--disabled]=\"option.disabled\"\r\n [class.fui-time-list__option--focused]=\"_focusedIndex() === $index\"\r\n [attr.id]=\"'fui-time-option-' + $index\"\r\n [attr.aria-selected]=\"_isSelected(option)\"\r\n [attr.aria-disabled]=\"option.disabled\"\r\n role=\"option\"\r\n (click)=\"_selectOption(option)\"\r\n >\r\n {{ option.label }}\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n booleanAttribute,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n computed,\r\n DoCheck,\r\n effect,\r\n ElementRef,\r\n inject,\r\n NgZone,\r\n input,\r\n InputSignal,\r\n InputSignalWithTransform,\r\n OnDestroy,\r\n output,\r\n OutputEmitterRef,\r\n signal,\r\n ViewChild,\r\n ViewEncapsulation,\r\n WritableSignal,\r\n} from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ControlValueAccessor, FormGroupDirective, NG_VALUE_ACCESSOR, NgControl, NgForm } from '@angular/forms';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { fromEvent, Subject, Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\nimport { injectNgControl, updateErrorState, syncRequiredState, syncNgControlDisabled } from '@raintonic/formaui/cdk/form-field';\r\nimport { FUI_FORM_FIELD_CONTROL, FuiFormFieldControl } from '@raintonic/formaui/core';\r\nimport { DefaultErrorStateMatcher, ErrorStateMatcher } from '@raintonic/formaui/core';\r\nimport { FuiConnectedPosition, FuiOverlayRef, FuiOverlayService } from '@raintonic/formaui/cdk/overlay';\r\nimport { FuiIconComponent } from '@raintonic/formaui/components/icon';\r\nimport { FuiTimeListComponent } from './time-list.component';\r\nimport { FuiTimePickerIntl } from './time-picker.intl';\r\nimport { TimeFormat, TimeOption, TimeValue } from './time-picker.types';\r\nimport {\r\n formatTime,\r\n generateTimeOptions,\r\n parseISOTimeString,\r\n parseTimeString,\r\n timeValueToString,\r\n} from './time-picker.utils';\r\n\r\n@Component({\r\n selector: 'fui-time-picker',\r\n standalone: true,\r\n imports: [FuiIconComponent, FuiTimeListComponent],\r\n templateUrl: './time-picker.component.html',\r\n styleUrls: ['./time-picker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n host: {\r\n class: 'fui-time-picker',\r\n '[attr.id]': 'id',\r\n '[class.fui-time-picker--open]': '_panelOpen()',\r\n '[class.fui-time-picker--disabled]': 'disabled()',\r\n '[class.fui-time-picker--focused]': 'focused()',\r\n '[class.fui-time-picker--error]': 'errorState()',\r\n '[class.fui-time-picker--readonly]': '_readOnly()',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: FuiTimePickerComponent,\r\n multi: true,\r\n },\r\n {\r\n provide: FUI_FORM_FIELD_CONTROL,\r\n useExisting: FuiTimePickerComponent,\r\n },\r\n ],\r\n})\r\nexport class FuiTimePickerComponent implements ControlValueAccessor, FuiFormFieldControl<string>, DoCheck, OnDestroy {\r\n static nextId = 0;\r\n readonly controlType = 'fui-time-picker';\r\n\r\n // --- Inputs ---\r\n readonly formatInput: InputSignal<TimeFormat> = input<TimeFormat>('24h', { alias: 'format' });\r\n readonly showSeconds: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly minuteStep: InputSignal<number> = input(15);\r\n readonly min: InputSignal<string> = input('');\r\n readonly max: InputSignal<string> = input('');\r\n readonly placeholderInput: InputSignal<string> = input('', { alias: 'placeholder' });\r\n readonly disabledInput: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n alias: 'disabled',\r\n transform: booleanAttribute,\r\n });\r\n readonly readonly: InputSignalWithTransform<boolean, unknown> = input<boolean, unknown>(false, {\r\n transform: booleanAttribute,\r\n });\r\n readonly errorStateMatcher: InputSignal<ErrorStateMatcher | null> = input<ErrorStateMatcher | null>(null);\r\n\r\n // --- Outputs ---\r\n readonly timeChange: OutputEmitterRef<string> = output<string>();\r\n\r\n // --- Internal state ---\r\n /** @internal */ readonly _value: WritableSignal<TimeValue | null> = signal(null);\r\n private readonly _focused: WritableSignal<boolean> = signal(false);\r\n private readonly _disabled: WritableSignal<boolean> = signal(false);\r\n private readonly _ngControlDisabled: WritableSignal<boolean> = signal(false);\r\n private readonly _required: WritableSignal<boolean> = signal(false);\r\n private readonly _errorState: WritableSignal<boolean> = signal(false);\r\n readonly _readOnly: WritableSignal<boolean> = signal(false);\r\n readonly _panelOpen = signal(false);\r\n\r\n // --- FuiFormFieldControl ---\r\n readonly stateChanges = new Subject<void>();\r\n private _uid = `fui-time-picker-${FuiTimePickerComponent.nextId++}`;\r\n _ariaDescribedby: string | null = null;\r\n\r\n // Form references\r\n private _parentForm = inject(NgForm, { optional: true });\r\n private _parentFormGroup = inject(FormGroupDirective, { optional: true });\r\n private _defaultErrorStateMatcher = inject(DefaultErrorStateMatcher);\r\n private readonly _ngControlRef = injectNgControl();\r\n get ngControl(): NgControl | null {\r\n return this._ngControlRef.ngControl;\r\n }\r\n\r\n // Interface signals\r\n readonly placeholder = computed(() => this.placeholderInput());\r\n readonly required = this._required;\r\n readonly value = computed(() => {\r\n const tv = this._value();\r\n return tv ? timeValueToString(tv, this.showSeconds()) : null;\r\n });\r\n readonly focused = this._focused;\r\n readonly disabled = computed(() => this._disabled() || this.disabledInput() || this._ngControlDisabled());\r\n readonly errorState = this._errorState;\r\n readonly id = this._uid;\r\n\r\n readonly empty = computed(() => {\r\n return this._value() === null;\r\n });\r\n\r\n // Display value formatted for current format\r\n readonly _displayValue = computed(() => {\r\n return formatTime(this._value(), this.formatInput(), this.showSeconds());\r\n });\r\n\r\n // Display value for form-field readOnly mode\r\n readonly displayValue = this._displayValue;\r\n\r\n // Computed time options for dropdown\r\n readonly _timeOptions = computed<TimeOption[]>(() => {\r\n const minVal = this.min() ? parseISOTimeString(this.min()) : undefined;\r\n const maxVal = this.max() ? parseISOTimeString(this.max()) : undefined;\r\n return generateTimeOptions(\r\n this.formatInput(),\r\n this.minuteStep(),\r\n this.showSeconds(),\r\n minVal ?? undefined,\r\n maxVal ?? undefined,\r\n );\r\n });\r\n\r\n // ViewChild\r\n @ViewChild('inputElement', { static: false }) inputElement?: ElementRef<HTMLInputElement>;\r\n @ViewChild('timeListPanel', { static: false }) timeListPanel?: ElementRef<HTMLDivElement>;\r\n\r\n // Overlay\r\n private _overlayRef: FuiOverlayRef | null = null;\r\n private _overlaySubscriptions = new Subscription();\r\n private readonly _overlayService = inject(FuiOverlayService);\r\n private readonly _elementRef = inject(ElementRef);\r\n private readonly _document = inject(DOCUMENT);\r\n private readonly _ngZone = inject(NgZone);\r\n readonly intl = inject(FuiTimePickerIntl);\r\n private readonly _cdr = inject(ChangeDetectorRef);\r\n private _outsideClickSub?: Subscription;\r\n\r\n // CVA callbacks\r\n private _onChange: (value: string | null) => void = () => {\r\n /* noop */\r\n };\r\n private _onTouched: () => void = () => {\r\n /* noop */\r\n };\r\n\r\n constructor() {\r\n this.intl.changes.pipe(takeUntilDestroyed()).subscribe(() => { this._cdr.markForCheck(); });\r\n\r\n void Promise.resolve().then(() => {\r\n if (this._ngControlRef.ngControl) {\r\n this._ngControlRef.ngControl.valueAccessor = this;\r\n }\r\n });\r\n\r\n // Effect to emit state changes\r\n effect(() => {\r\n this.placeholderInput();\r\n this.readonly();\r\n this.disabledInput();\r\n this.formatInput();\r\n this.showSeconds();\r\n this.minuteStep();\r\n this.min();\r\n this.max();\r\n this.errorStateMatcher();\r\n this._focused();\r\n this._disabled();\r\n this._value();\r\n this._ngControlDisabled();\r\n this._required();\r\n this._errorState();\r\n\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (this.ngControl) {\r\n updateErrorState(\r\n this.ngControl,\r\n this._errorState,\r\n this.errorStateMatcher(),\r\n this._defaultErrorStateMatcher,\r\n this._parentForm,\r\n this._parentFormGroup,\r\n this.stateChanges,\r\n );\r\n syncRequiredState(this.ngControl, this._required, this.stateChanges);\r\n syncNgControlDisabled(this.ngControl, this._ngControlDisabled, this.stateChanges);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._outsideClickSub?.unsubscribe();\r\n this._disposeOverlay();\r\n }\r\n\r\n // --- CVA ---\r\n\r\n writeValue(value: string | null): void {\r\n if (value) {\r\n const parsed = parseISOTimeString(value);\r\n this._value.set(parsed);\r\n } else {\r\n this._value.set(null);\r\n }\r\n this.stateChanges.next();\r\n }\r\n\r\n registerOnChange(fn: (value: string | null) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this._disabled.set(isDisabled);\r\n this.stateChanges.next();\r\n }\r\n\r\n // --- FuiFormFieldControl ---\r\n\r\n onContainerClick(_event: MouseEvent): void {\r\n if (!this.disabled()) {\r\n this.inputElement?.nativeElement.focus();\r\n if (!this._panelOpen()) {\r\n this.open();\r\n }\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._ariaDescribedby = ids.length ? ids.join(' ') : null;\r\n }\r\n\r\n setReadOnly(readOnly: boolean): void {\r\n this._readOnly.set(readOnly);\r\n }\r\n\r\n // --- Panel open/close ---\r\n\r\n open(): void {\r\n if (this.disabled() || this.readonly() || this._panelOpen()) return;\r\n\r\n requestAnimationFrame(() => {\r\n this._panelOpen.set(true);\r\n this._focused.set(true);\r\n\r\n setTimeout(() => {\r\n this._createOverlay();\r\n this._listenForOutsideClicks();\r\n });\r\n });\r\n }\r\n\r\n close(): void {\r\n if (!this._panelOpen()) return;\r\n this._outsideClickSub?.unsubscribe();\r\n\r\n this._panelOpen.set(false);\r\n this._focused.set(false);\r\n this._disposeOverlay();\r\n this._onTouched();\r\n\r\n setTimeout(() => {\r\n this.inputElement?.nativeElement.focus();\r\n }, 0);\r\n }\r\n\r\n _togglePanel(): void {\r\n if (this.disabled() || this.readonly()) return;\r\n if (this._panelOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n // --- Event handlers ---\r\n\r\n _onManualInput(_event: Event): void {\r\n // We handle parsing on blur, not on every keystroke\r\n }\r\n\r\n _onKeydown(event: KeyboardEvent): void {\r\n if (event.key === 'Escape' && this._panelOpen()) {\r\n event.preventDefault();\r\n this.close();\r\n } else if (event.key === 'ArrowDown' && !this._panelOpen()) {\r\n event.preventDefault();\r\n this.open();\r\n } else if (event.key === 'Enter' && !this._panelOpen()) {\r\n event.preventDefault();\r\n this.open();\r\n }\r\n }\r\n\r\n _onFocus(): void {\r\n this._focused.set(true);\r\n }\r\n\r\n _onBlur(): void {\r\n const input = this.inputElement?.nativeElement;\r\n if (!input) return;\r\n\r\n const text = input.value;\r\n if (!text) {\r\n this._setValue(null);\r\n return;\r\n }\r\n\r\n const parsed = parseTimeString(text, this.formatInput());\r\n if (parsed) {\r\n this._setValue(parsed);\r\n } else {\r\n // Invalid input — revert to previous formatted value\r\n input.value = this._displayValue();\r\n }\r\n\r\n if (!this._panelOpen()) {\r\n this._onTouched();\r\n }\r\n }\r\n\r\n /** Called when user selects an option from the time list dropdown. */\r\n _onOptionSelected(value: TimeValue): void {\r\n this._setValue(value);\r\n this.close();\r\n }\r\n\r\n // Start listening for outside clicks when panel opens\r\n private _listenForOutsideClicks(): void {\r\n this._outsideClickSub?.unsubscribe();\r\n\r\n this._ngZone.runOutsideAngular(() => {\r\n setTimeout(() => {\r\n this._outsideClickSub = fromEvent<MouseEvent>(this._document, 'click')\r\n .pipe(\r\n filter(() => this._panelOpen()),\r\n filter((event) => {\r\n const target = event.target as HTMLElement;\r\n const hostElement = this._elementRef.nativeElement;\r\n const overlayElement = this._overlayRef?.overlayElement;\r\n return !hostElement.contains(target) && !overlayElement?.contains(target);\r\n }),\r\n )\r\n .subscribe(() => {\r\n this._ngZone.run(() => {\r\n this.close();\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n // --- Private helpers ---\r\n\r\n private _setValue(value: TimeValue | null): void {\r\n this._value.set(value);\r\n const stringVal = value ? timeValueToString(value, this.showSeconds()) : null;\r\n this._onChange(stringVal);\r\n this.timeChange.emit(stringVal ?? '');\r\n this.stateChanges.next();\r\n }\r\n\r\n private _createOverlay(): void {\r\n if (this._overlayRef || !this.timeListPanel) return;\r\n\r\n const triggerElement = this._elementRef.nativeElement;\r\n const triggerWidth = triggerElement.getBoundingClientRect().width;\r\n\r\n const positions: FuiConnectedPosition[] = [\r\n { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 4 },\r\n { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -4 },\r\n ];\r\n\r\n const positionStrategy = this._overlayService\r\n .position()\r\n .connectedTo(triggerElement, positions)\r\n .withPush(true)\r\n .withViewportMargin(8);\r\n\r\n this._overlayRef = this._overlayService.create({\r\n positionStrategy,\r\n scrollStrategy: this._overlayService.scrollStrategies.reposition(),\r\n hasBackdrop: true,\r\n backdropClass: 'fui-time-picker-backdrop',\r\n backdropClickBehavior: 'close',\r\n panelClass: ['fui-time-picker-overlay-panel'],\r\n minWidth: Math.max(triggerWidth, 160),\r\n });\r\n\r\n // Track overlay subscriptions for proper cleanup\r\n this._overlaySubscriptions.unsubscribe();\r\n this._overlaySubscriptions = new Subscription();\r\n\r\n this._overlaySubscriptions.add(\r\n this._overlayRef.backdropClick.subscribe(() => {\r\n this.close();\r\n }),\r\n );\r\n\r\n this._overlaySubscriptions.add(\r\n this._overlayRef.keydownEvents.subscribe((event) => {\r\n if (event.key === 'Escape') {\r\n this.close();\r\n }\r\n }),\r\n );\r\n\r\n const panelElement = this.timeListPanel.nativeElement;\r\n this._overlayRef.attach(panelElement);\r\n }\r\n\r\n private _disposeOverlay(): void {\r\n this._overlaySubscriptions.unsubscribe();\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = null;\r\n }\r\n }\r\n}\r\n","<div class=\"fui-time-picker__wrapper\">\r\n <input\r\n #inputElement\r\n class=\"fui-time-picker__input\"\r\n type=\"text\"\r\n [attr.placeholder]=\"placeholder()\"\r\n [attr.disabled]=\"disabled() ? '' : null\"\r\n [attr.readonly]=\"readonly() ? '' : null\"\r\n [value]=\"_displayValue()\"\r\n [attr.aria-expanded]=\"_panelOpen()\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-describedby]=\"_ariaDescribedby\"\r\n [attr.aria-required]=\"required()\"\r\n [attr.aria-invalid]=\"errorState()\"\r\n role=\"combobox\"\r\n autocomplete=\"off\"\r\n (input)=\"_onManualInput($event)\"\r\n (keydown)=\"_onKeydown($event)\"\r\n (focus)=\"_onFocus()\"\r\n (blur)=\"_onBlur()\"\r\n />\r\n @if (!_readOnly()) {\r\n <button\r\n type=\"button\"\r\n class=\"fui-time-picker__toggle\"\r\n (click)=\"_togglePanel()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n tabindex=\"-1\"\r\n [attr.aria-label]=\"intl.toggleAriaLabel\"\r\n >\r\n <fui-icon name=\"clock\" size=\"sm\"></fui-icon>\r\n </button>\r\n }\r\n</div>\r\n\r\n@if (_panelOpen()) {\r\n <div #timeListPanel class=\"fui-time-picker__panel\" role=\"dialog\" [attr.aria-label]=\"intl.dialogAriaLabel\">\r\n <fui-time-list\r\n [options]=\"_timeOptions()\"\r\n [selectedValue]=\"_value()\"\r\n [format]=\"formatInput()\"\r\n (optionSelected)=\"_onOptionSelected($event)\"\r\n />\r\n </div>\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raintonic-formaui.mjs","sources":["../../../lib/src/public-api.ts","../../../lib/src/raintonic-formaui.ts"],"sourcesContent":["export const FORMAUI_VERSION = '0.
|
|
1
|
+
{"version":3,"file":"raintonic-formaui.mjs","sources":["../../../lib/src/public-api.ts","../../../lib/src/raintonic-formaui.ts"],"sourcesContent":["export const FORMAUI_VERSION = '0.4.0';\r\n\r\n// FormaUI - Primary entry point\r\n// Secondary entry points are imported directly, e.g.:\r\n// import { FuiButtonDirective } from '@raintonic/formaui/components/button';\r\n// import { FuiIconComponent } from '@raintonic/formaui/components/icon';\r\n// import { ThemeService } from '@raintonic/formaui/services/theme';\r\n// import { FuiOverlayService } from '@raintonic/formaui/cdk/overlay';\r\n// import { FuiCoreModule } from '@raintonic/formaui/core';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AAAO,MAAM,eAAe,GAAG;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;;ACRA;;AAEG;;;;"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raintonic-formaui-cdk-overlay.d.ts","sources":["../../../lib/cdk/overlay/overlay.types.ts","../../../lib/cdk/overlay/position/global-position-strategy.ts","../../../lib/cdk/overlay/position/connected-position-strategy.ts","../../../lib/cdk/overlay/scroll/scroll-strategies.ts","../../../lib/cdk/overlay/overlay.service.ts","../../../lib/cdk/overlay/overlay-ref.ts","../../../lib/cdk/overlay/overlay-container.component.ts","../../../lib/cdk/overlay/portal.service.ts"],"mappings":";;;;AAGA;;AAEG;AACH,cAAa,qBAAqB,EAAA,cAAA,CAAA,WAAA;AAElC;;AAEG;AACH,cAAa,2BAA2B,EAAA,cAAA,OAA4B,iBAAiB;AAErF;;AAEG;UACc,oBAAoB;;AAEnC;;AAEA;;AAEA;;AAEA;;;;;;;AAOD;AAED;;AAEG;UACc,iBAAiB;;AAEhC;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACD;AAED;;AAEG;AACG,KAAM,qBAAqB;AAEjC;;AAEG;KACS,wBAAwB;AAEpC;;AAEG;UACc,gBAAgB;;uBAEZ,mBAAmB;;qBAErB,iBAAiB;;;;AAIlC;;4BAEwB,wBAAwB;;AAEhD;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;;;eAIW,QAAQ;AACpB;AAED;;AAEG;UACc,aAAa;;AAE5B;;AAEA,6BAAyB,WAAW;;AAEpC,8BAA0B,WAAW;;AAErC,4BAAwB,UAAU,CAAC,UAAU;;AAE7C,4BAAwB,UAAU,CAAC,aAAa;;AAEhD,0BAAsB,UAAU;;AAEhC,0BAAsB,UAAU;;AAEhC;AAEA;;;;AAIG;AACH,iCACW,YAAY,MAAM,WAAW,YAAY,WAAW,aAClD,QAAQ,GAClB,YAAY;AAEf;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;wBAEQ,IAAI,CAAC,gBAAgB;AAGhC;;AAEG;;AAGH;;AAEG;;AAGH;;AAEG;iBACU,gBAAgB;AAE7B;;AAEG;yBACkB,OAAO,CAAC,gBAAgB;AAC9C;AAED;;AAEG;UACc,mBAAmB;;;;;;;;AAQlC,+BAA2B,WAAW;;AAEtC,8BAA0B,UAAU,CAAC,iCAAiC;AACvE;AAED;;AAEG;UACc,iBAAiB;;;;;;AAMhC,uBAAmB,aAAa;;;AAGjC;AAED;;AAEG;UACc,iCAAiC;;oBAEhC,oBAAoB;;8BAEV,2BAA2B;AACtD;AAED;;AAEG;UACc,2BAA2B;;AAE1C;;;;;AAEA;;;;AACD;AAED;;AAEG;AACG,KAAM,iBAAiB,gBAAgB,YAAY,MAAM,WAAW,YAAY,WAAW;AAEjG;;AAEG;AACG,KAAM,wBAAwB,SAAS,iBAAiB;AAE9D;;AAEG;UACc,mCAAmC;;AAElD,YAAQ,UAAU,CAAC,WAAW,IAAI,WAAW;;eAElC,oBAAoB;;;;;;;;;;;;4BAYP,UAAU,CAAC,WAAW,IAAI,WAAW;;;;;AAK9D;AAED;;AAEG;AACG,UAAW,gCAAiC,SAAQ,iBAAiB;;;;;AAK1E;AAED;;AAEG;UACc,oBAAoB;AACnC;AACA;AACA;AACA;AACA;AACA;AACD;AAED;;AAEG;UACc,eAAe;;;;;;UAMxB,oBAAoB;;AAE1B,sBAAkB,mBAAmB;;AAErC,oBAAgB,iBAAiB;AAClC;;ACrSD;;;;;;;;;;;;;AAaG;AACH,cAAa,yBAA0B,YAAW,mBAAmB;AAMjE;AACA;;AALF;;AAIU,2BAAW,SAAS,aACV,gCAAqC;;AAIzD,2BAAuB,UAAU,CAAC,iCAAiC;AAInE;;AAEG;AACH,+BAA2B,WAAW;AAItC;;AAEG;AACH;AAkBA;;AAEG;AACH;AAMA;;AAEG;AACH;AAMA;;AAEG;AACH;AAMA;;AAEG;AACH;AAMA;;AAEG;AACH;AAOA;;AAEG;AACH;AAOA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AASA;;AAEG;AACH;AAIA;AA0BA;AA2BA;AAgCA;AAGD;;AC1QD;;;;;;;;;;;;;;AAcG;AACH,cAAa,4BAA6B,YAAW,mBAAmB;AAsBpE;;;;;;;;AAbF;;;;;;;;;AAaU,2BAAW,SAAS,WACnB,mCAAmC;;AAoC9C,2BAAuB,UAAU,CAAC,iCAAiC;AAInE;;AAEG;AACH,+BAA2B,WAAW;AAItC;;AAEG;AACH;AA8BA;;AAEG;AACH,6BAAyB,oBAAoB;AAK7C;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;mCAC4B,UAAU,CAAC,WAAW,IAAI,WAAW;AAKpE;;AAEG;AACH;AAKA;;AAEG;AACH;AAKA;;AAEG;AACH;AAUA;;AAEG;AACH;AAIA;AAwCA;AAqCA;AAqEA;AAaA;AAuBA;AAsCA;AA0BA;AAyBA;AAYA;AAOA;AAUD;;ACtgBD;;;;;;AAMG;AACH,cAAa,qBAAsB,YAAW,iBAAiB;AAC7D;AAIA;AAIA,wBAAoB,aAAa;AAIjC;AAGD;AAED;;;;;;AAMG;AACH,cAAa,sBAAuB,YAAW,iBAAiB;AAKlD;;;;AAAQ;AAEpB;AAeA;AASA,uBAAmB,aAAa;AAIhC;AAKA;AAMD;AAED;;;;;;AAMG;AACH,cAAa,2BAA4B,YAAW,iBAAiB;AAMjE;AACA;;;;;AAGF;AA2BA;AASA,uBAAmB,aAAa;AAIhC;AAKA;AAOA;AAMD;AAED;;;;;;AAMG;AACH,cAAa,sBAAuB,YAAW,iBAAiB;;;;;4BAK9B,QAAQ;AAExC;AA6BA;AAwBA,wBAAoB,aAAa;AAIjC;AAID;AAED;;AAEG;AACH,cAAa,qBAAqB;AAChC;;AAEG;gBACO,qBAAqB;AAE/B;;AAEG;mCACqB,sBAAsB;AAE9C;;AAEG;kEACmD,2BAA2B;AAGjF;;;AAGG;AACW,kBAAA,QAAQ,KAAG,sBAAsB;;;ACtLjD,cAGa,iBAAiB;AAC5B;AACA;AACA;AACA;;;;;;AAWA;;AAEG;AACH,oBAAe,gBAAqB,GAAG,aAAa;AA6BpD;;AAEG;AACH;AAKA;;;AAGG;AACH;AAMA;;AAEG;AACH,gBAAY,yBAAyB;AAIrC;;AAEG;AACH,mCAA+B,qBAAqB;AAIpD;;AAEG;yBACkB,aAAa;AAIlC;;AAEG;AACH;AAOA;AAOA;AAKA;AAaA;yCAzHW,iBAAiB;6CAAjB,iBAAiB;AAqI7B;AAED;;;;;AAKG;AACH,cAAa,yBAAyB;AACxB;AAAQ,2BAAW,SAAS;AAExC;;AAEG;AACH,qBAAgB,gCAAqC,GAAG,yBAAyB;AAIjF;;AAEG;AACH,wBACU,UAAU,CAAC,WAAW,IAAI,WAAW,cACjC,oBAAoB,KAC/B,4BAA4B;AAwB/B;;AAEG;gCAEO,UAAU,CAAC,WAAW,IAAI,WAAW,4DAE5C,4BAA4B;AAc/B;AAwCD;;AC9TD;;;;;;;;;;;;;AAaG;AACH,cAAa,iBAAkB,YAAW,aAAa;AACrD;AACA;AACA;AACA;;;;;AAOA;AACA;AACA;AACA;;;AAMY,gCAAgB,WAAW,UAAU,gBAAgB,YAAY,SAAS;;;;
|
|
1
|
+
{"version":3,"file":"raintonic-formaui-cdk-overlay.d.ts","sources":["../../../lib/cdk/overlay/overlay.types.ts","../../../lib/cdk/overlay/position/global-position-strategy.ts","../../../lib/cdk/overlay/position/connected-position-strategy.ts","../../../lib/cdk/overlay/scroll/scroll-strategies.ts","../../../lib/cdk/overlay/overlay.service.ts","../../../lib/cdk/overlay/overlay-ref.ts","../../../lib/cdk/overlay/overlay-container.component.ts","../../../lib/cdk/overlay/portal.service.ts"],"mappings":"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","names":[]}
|