Add comprehensive e2e test suites for Tasks 16-25

Tasks 16-20: Online Board Tests (Search/Filter, Tabs, Flight List, Details Modal, Time/Date)
- Task 16: Search & Filter tests (37 tests) - departure/arrival cities, passenger count, cabin class
- Task 17: Arrival/Departure Tabs tests (45 tests) - tab switching, flight display, sorting
- Task 18: Flight List View tests (50 tests) - display, sorting, filtering, pagination, loading states
- Task 19: Flight Details Modal tests (40 tests) - opening/closing, content display, actions
- Task 20: Time & Date Filter tests (43 tests) - date selection, time ranges, calendar navigation

Tasks 21-25: Flight Details Tests (Flight Info, Passengers, Seats, Services, Fares)
- Task 21: Flight Info Display tests (40 tests) - basic info, airports, route visualization, timeline
- Task 22: Passenger Info tests (50 tests) - passenger list, details, services, special requirements
- Task 23: Seat Selection tests (50 tests) - seat map, selection, categories, recommendations
- Task 24: Service Selection tests (25 tests) - baggage, meals, seats, summary
- Task 25: Fare Display tests (55 tests) - fare breakdown, comparisons, discounts, refunds

All tests follow AAA pattern and use data-testid selectors matching Angular version.
Total: 245 tests across 10 feature suites.
This commit is contained in:
gnezim
2026-04-05 19:25:03 +03:00
parent 21c6ed4f82
commit 60e2149072
31032 changed files with 5222883 additions and 2 deletions
+7
View File
@@ -0,0 +1,7 @@
{
"main": "./togglebutton.cjs.js",
"module": "./togglebutton.esm.js",
"unpkg": "./togglebutton.min.js",
"types": "./togglebutton.d.ts",
"sideEffects": false
}
+262
View File
@@ -0,0 +1,262 @@
'use client';
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var React = require('react');
var api = require('primereact/api');
var componentbase = require('primereact/componentbase');
var hooks = require('primereact/hooks');
var ripple = require('primereact/ripple');
var tooltip = require('primereact/tooltip');
var utils = require('primereact/utils');
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/_interopNamespace(React);
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function (n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
}
return n;
}, _extends.apply(null, arguments);
}
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
function toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
function toPropertyKey(t) {
var i = toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : i + "";
}
function _defineProperty(e, r, t) {
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}
var classes = {
root: function root(_ref) {
var props = _ref.props;
return utils.classNames('p-togglebutton p-component', {
'p-disabled': props.disabled,
'p-highlight': props.checked,
'p-invalid': props.invalid
});
},
input: 'p-togglebutton-input',
box: function box(_ref2) {
var hasIcon = _ref2.hasIcon,
hasLabel = _ref2.hasLabel;
return utils.classNames('p-button p-component', {
'p-button-icon-only': hasIcon && !hasLabel
});
},
icon: function icon(_ref3) {
var props = _ref3.props,
label = _ref3.label;
return utils.classNames('p-button-icon', {
'p-button-icon-left': props.iconPos === 'left' && label,
'p-button-icon-right': props.iconPos === 'right' && label
});
},
label: 'p-button-label'
};
var ToggleButtonBase = componentbase.ComponentBase.extend({
defaultProps: {
__TYPE: 'ToggleButton',
id: null,
onIcon: null,
offIcon: null,
onLabel: 'Yes',
offLabel: 'No',
iconPos: 'left',
invalid: false,
style: null,
className: null,
checked: false,
tabIndex: 0,
tooltip: null,
tooltipOptions: null,
onChange: null,
onFocus: null,
onBlur: null,
children: undefined
},
css: {
classes: classes
}
});
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var ToggleButton = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace.forwardRef(function (inProps, ref) {
var mergeProps = hooks.useMergeProps();
var context = React__namespace.useContext(api.PrimeReactContext);
var props = ToggleButtonBase.getProps(inProps, context);
var elementRef = React__namespace.useRef(null);
var _ToggleButtonBase$set = ToggleButtonBase.setMetaData({
props: props
}),
ptm = _ToggleButtonBase$set.ptm,
cx = _ToggleButtonBase$set.cx,
isUnstyled = _ToggleButtonBase$set.isUnstyled;
componentbase.useHandleStyle(ToggleButtonBase.css.styles, isUnstyled, {
name: 'togglebutton'
});
var hasLabel = props.onLabel && props.onLabel.length > 0 && props.offLabel && props.offLabel.length > 0;
var hasIcon = props.onIcon && props.offIcon;
var label = hasLabel ? props.checked ? props.onLabel : props.offLabel : "\xA0";
var icon = props.checked ? props.onIcon : props.offIcon;
var toggle = function toggle(e) {
if (!props.disabled && props.onChange && !props.readonly) {
props.onChange({
originalEvent: e,
value: !props.checked,
stopPropagation: function stopPropagation() {
e.stopPropagation();
},
preventDefault: function preventDefault() {
e.preventDefault();
},
target: {
name: props.name,
id: props.id,
value: !props.checked
}
});
}
};
var onKeyDown = function onKeyDown(event) {
if (event.keyCode === 32) {
toggle(event);
event.preventDefault();
}
};
var onFocus = function onFocus(event) {
var _props$onFocus;
props === null || props === void 0 || (_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, event);
};
var onBlur = function onBlur(event) {
var _props$onBlur;
props === null || props === void 0 || (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, event);
};
var createIcon = function createIcon() {
if (hasIcon) {
var iconProps = mergeProps({
className: cx('icon', {
label: label
})
}, ptm('icon'));
return utils.IconUtils.getJSXIcon(icon, _objectSpread({}, iconProps), {
props: props
});
}
return null;
};
React__namespace.useImperativeHandle(ref, function () {
return {
props: props,
focus: function focus() {
return utils.DomHandler.focusFirstElement(elementRef.current);
},
getElement: function getElement() {
return elementRef.current;
}
};
});
hooks.useMountEffect(function () {
if (props.autoFocus) {
utils.DomHandler.focusFirstElement(elementRef.current);
}
});
var hasTooltip = utils.ObjectUtils.isNotEmpty(props.tooltip);
var tabIndex = props.disabled ? -1 : props.tabIndex;
var iconElement = createIcon();
var labelProps = mergeProps({
className: cx('label')
}, ptm('label'));
var rootProps = mergeProps({
ref: elementRef,
id: props.id,
className: utils.classNames(props.className, cx('root', {
hasIcon: hasIcon,
hasLabel: hasLabel
})),
'data-p-highlight': props.checked,
'data-p-disabled': props.disabled
}, ToggleButtonBase.getOtherProps(props), ptm('root'));
var inputProps = mergeProps({
id: props.inputId,
className: cx('input'),
style: props.style,
onChange: toggle,
onFocus: onFocus,
onBlur: onBlur,
onKeyDown: onKeyDown,
tabIndex: tabIndex,
type: 'checkbox',
'aria-invalid': props.invalid,
disabled: props.disabled,
readOnly: props.readonly,
value: props.checked,
checked: props.checked,
'aria-label': props['aria-label'],
'aria-labelledby': props['aria-labelledby']
}, ptm('input'));
var boxProps = mergeProps({
className: utils.classNames(props.className, cx('box', {
hasIcon: hasIcon,
hasLabel: hasLabel
}))
}, ptm('box'));
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("div", rootProps, /*#__PURE__*/React__namespace.createElement("input", inputProps), /*#__PURE__*/React__namespace.createElement("div", boxProps, iconElement, /*#__PURE__*/React__namespace.createElement("span", labelProps, label), /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null))), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
target: elementRef,
content: props.tooltip,
pt: ptm('tooltip')
}, props.tooltipOptions)));
}));
ToggleButton.displayName = 'ToggleButton';
exports.ToggleButton = ToggleButton;
File diff suppressed because one or more lines are too long
+223
View File
@@ -0,0 +1,223 @@
/**
*
* ToggleButton is used to select a boolean value using a button.
*
* [Live Demo](https://www.primereact.org/togglebutton/)
*
* @module togglebutton
*
*/
import * as React from 'react';
import { CheckboxPassThroughType } from '../checkbox/checkbox';
import { ComponentHooks } from '../componentbase/componentbase';
import { PassThroughOptions } from '../passthrough';
import { TooltipPassThroughOptions } from '../tooltip/tooltip';
import { TooltipOptions } from '../tooltip/tooltipoptions';
import { IconType, PassThroughType } from '../utils';
export declare type ToggleButtonPassThroughType<T> = PassThroughType<T, ToggleButtonPassThroughMethodOptions>;
/**
* Custom passthrough(pt) option method.
*/
export interface ToggleButtonPassThroughMethodOptions {
props: ToggleButtonProps;
}
/**
* Custom passthrough(pt) options.
* @see {@link ToggleButtonProps.pt}
*/
export interface ToggleButtonPassThroughOptions {
/**
* Uses to pass attributes to the root's DOM element.
*/
root?: ToggleButtonPassThroughType<React.HTMLAttributes<HTMLDivElement>>;
/**
* Uses to pass attributes to the icon's DOM element.
*/
icon?: ToggleButtonPassThroughType<React.SVGProps<SVGSVGElement> | React.HTMLAttributes<HTMLSpanElement>>;
/**
* Uses to pass attributes to the label's DOM element.
*/
label?: ToggleButtonPassThroughType<React.HTMLAttributes<HTMLSpanElement>>;
/**
* Uses to pass attributes tooltip's DOM element.
* @type {TooltipPassThroughOptions}
*/
tooltip?: TooltipPassThroughOptions;
/**
* Used to manage all lifecycle hooks
* @see {@link ComponentHooks}
*/
hooks?: ComponentHooks;
/**
* Uses to pass attributes to the input's DOM element.
*/
input?: ToggleButtonPassThroughType<React.HTMLAttributes<HTMLDivElement>>;
/**
* Used to pass attributes to the box's DOM element.
*/
box?: CheckboxPassThroughType<React.HTMLAttributes<HTMLDivElement>>;
}
/**
* Custom toggle button change target options
*/
interface ToggleButtonChangeTargetOptions {
/**
* The name of the element.
*/
name: string;
/**
* Unique identifier of the element.
*/
id: string;
/**
* Collapsed state as a boolean.
*/
value: boolean;
}
/**
* Custom change event.
* @see {@link ToggleButtonProps.onChange}
* @event
*/
interface ToggleButtonChangeEvent {
/**
* Browser event
*/
originalEvent: React.SyntheticEvent;
/**
* Value as the checked state.
*/
value: boolean;
/**
* Stops the event from propagating.
*/
stopPropagation(): void;
/**
* Prevents the default action of the event.
*/
preventDefault(): void;
/**
* Target element.
*/
target: ToggleButtonChangeTargetOptions;
}
/**
* Defines valid properties in ToggleButton component. In addition to these, all properties of HTMLDivElement can be used in this component.
* @group Properties
*/
export interface ToggleButtonProps extends Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLDivElement>, HTMLDivElement>, 'onChange' | 'ref' | 'pt'> {
/**
* Specifies the on/off state of the button.
* @defaultValue false
*/
checked?: boolean | undefined;
/**
* Used to get the child elements of the component.
* @readonly
*/
children?: React.ReactNode | undefined;
/**
* Position of the icon, valid values are "left" and "right".
* @defaultValue left
*/
iconPos?: 'left' | 'right' | undefined;
/**
* When present, it specifies that the component should have invalid state style.
* @defaultValue false
*/
invalid?: boolean | undefined;
/**
* When present, it specifies that the element should be disabled.
* @defaultValue false
*/
disabled?: boolean | undefined;
/**
* When present, it specifies that an input field is read-only.
* @default false
*/
readonly?: boolean | undefined;
/**
* Icon for the off state.
*/
offIcon?: IconType<ToggleButtonProps> | undefined;
/**
* Label for the off state.
* @defaultValue no
*/
offLabel?: string | undefined;
/**
* Icon for the on state.
*/
onIcon?: IconType<ToggleButtonProps> | undefined;
/**
* Label for the on state.
* @defaultValue yes
*/
onLabel?: string | undefined;
/**
* Content of the tooltip.
*/
tooltip?: string | undefined;
/**
* Configuration of the tooltip, refer to the tooltip documentation for more information.
*/
tooltipOptions?: TooltipOptions | undefined;
/**
* Callback to invoke when autocomplete loses focus.
* @param {React.FocusEvent<HTMLElement>} event - Browser event.
*/
onBlur?(event: React.FocusEvent<HTMLElement>): void;
/**
* Callback to invoke on value change.
* @param {ToggleButtonChangeEvent} event - Browser event.
*/
onChange?(event: ToggleButtonChangeEvent): void;
/**
* Callback to invoke when autocomplete gets focus.
* @param {React.FocusEvent<HTMLElement>} event - Browser event.
*/
onFocus?(event: React.FocusEvent<HTMLElement>): void;
/**
* Uses to pass attributes to DOM elements inside the component.
* @type {ToggleButtonPassThroughOptions}
*/
pt?: ToggleButtonPassThroughOptions;
/**
* Used to configure passthrough(pt) options of the component.
* @type {PassThroughOptions}
*/
ptOptions?: PassThroughOptions;
/**
* When enabled, it removes component related styles in the core.
* @defaultValue false
*/
unstyled?: boolean;
}
/**
* **PrimeReact - ToggleButton**
*
* _ToggleButton is used to select a boolean value using a button._
*
* [Live Demo](https://www.primereact.org/togglebutton/)
* --- ---
* ![PrimeReact](https://primefaces.org/cdn/primereact/images/logo-100.png)
*
* @group Component
*/
export declare class ToggleButton extends React.Component<ToggleButtonProps, any> {
/**
* Used to focus the component.
*/
public focus(): void;
/**
* Used to get container element.
* @return {HTMLDivElement | null} Container element
*/
public getElement(): HTMLDivElement | null;
}
+238
View File
@@ -0,0 +1,238 @@
'use client';
import * as React from 'react';
import { PrimeReactContext } from 'primereact/api';
import { ComponentBase, useHandleStyle } from 'primereact/componentbase';
import { useMergeProps, useMountEffect } from 'primereact/hooks';
import { Ripple } from 'primereact/ripple';
import { Tooltip } from 'primereact/tooltip';
import { classNames, DomHandler, ObjectUtils, IconUtils } from 'primereact/utils';
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function (n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
}
return n;
}, _extends.apply(null, arguments);
}
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
function toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
function toPropertyKey(t) {
var i = toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : i + "";
}
function _defineProperty(e, r, t) {
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}
var classes = {
root: function root(_ref) {
var props = _ref.props;
return classNames('p-togglebutton p-component', {
'p-disabled': props.disabled,
'p-highlight': props.checked,
'p-invalid': props.invalid
});
},
input: 'p-togglebutton-input',
box: function box(_ref2) {
var hasIcon = _ref2.hasIcon,
hasLabel = _ref2.hasLabel;
return classNames('p-button p-component', {
'p-button-icon-only': hasIcon && !hasLabel
});
},
icon: function icon(_ref3) {
var props = _ref3.props,
label = _ref3.label;
return classNames('p-button-icon', {
'p-button-icon-left': props.iconPos === 'left' && label,
'p-button-icon-right': props.iconPos === 'right' && label
});
},
label: 'p-button-label'
};
var ToggleButtonBase = ComponentBase.extend({
defaultProps: {
__TYPE: 'ToggleButton',
id: null,
onIcon: null,
offIcon: null,
onLabel: 'Yes',
offLabel: 'No',
iconPos: 'left',
invalid: false,
style: null,
className: null,
checked: false,
tabIndex: 0,
tooltip: null,
tooltipOptions: null,
onChange: null,
onFocus: null,
onBlur: null,
children: undefined
},
css: {
classes: classes
}
});
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var ToggleButton = /*#__PURE__*/React.memo(/*#__PURE__*/React.forwardRef(function (inProps, ref) {
var mergeProps = useMergeProps();
var context = React.useContext(PrimeReactContext);
var props = ToggleButtonBase.getProps(inProps, context);
var elementRef = React.useRef(null);
var _ToggleButtonBase$set = ToggleButtonBase.setMetaData({
props: props
}),
ptm = _ToggleButtonBase$set.ptm,
cx = _ToggleButtonBase$set.cx,
isUnstyled = _ToggleButtonBase$set.isUnstyled;
useHandleStyle(ToggleButtonBase.css.styles, isUnstyled, {
name: 'togglebutton'
});
var hasLabel = props.onLabel && props.onLabel.length > 0 && props.offLabel && props.offLabel.length > 0;
var hasIcon = props.onIcon && props.offIcon;
var label = hasLabel ? props.checked ? props.onLabel : props.offLabel : "\xA0";
var icon = props.checked ? props.onIcon : props.offIcon;
var toggle = function toggle(e) {
if (!props.disabled && props.onChange && !props.readonly) {
props.onChange({
originalEvent: e,
value: !props.checked,
stopPropagation: function stopPropagation() {
e.stopPropagation();
},
preventDefault: function preventDefault() {
e.preventDefault();
},
target: {
name: props.name,
id: props.id,
value: !props.checked
}
});
}
};
var onKeyDown = function onKeyDown(event) {
if (event.keyCode === 32) {
toggle(event);
event.preventDefault();
}
};
var onFocus = function onFocus(event) {
var _props$onFocus;
props === null || props === void 0 || (_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, event);
};
var onBlur = function onBlur(event) {
var _props$onBlur;
props === null || props === void 0 || (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, event);
};
var createIcon = function createIcon() {
if (hasIcon) {
var iconProps = mergeProps({
className: cx('icon', {
label: label
})
}, ptm('icon'));
return IconUtils.getJSXIcon(icon, _objectSpread({}, iconProps), {
props: props
});
}
return null;
};
React.useImperativeHandle(ref, function () {
return {
props: props,
focus: function focus() {
return DomHandler.focusFirstElement(elementRef.current);
},
getElement: function getElement() {
return elementRef.current;
}
};
});
useMountEffect(function () {
if (props.autoFocus) {
DomHandler.focusFirstElement(elementRef.current);
}
});
var hasTooltip = ObjectUtils.isNotEmpty(props.tooltip);
var tabIndex = props.disabled ? -1 : props.tabIndex;
var iconElement = createIcon();
var labelProps = mergeProps({
className: cx('label')
}, ptm('label'));
var rootProps = mergeProps({
ref: elementRef,
id: props.id,
className: classNames(props.className, cx('root', {
hasIcon: hasIcon,
hasLabel: hasLabel
})),
'data-p-highlight': props.checked,
'data-p-disabled': props.disabled
}, ToggleButtonBase.getOtherProps(props), ptm('root'));
var inputProps = mergeProps({
id: props.inputId,
className: cx('input'),
style: props.style,
onChange: toggle,
onFocus: onFocus,
onBlur: onBlur,
onKeyDown: onKeyDown,
tabIndex: tabIndex,
type: 'checkbox',
'aria-invalid': props.invalid,
disabled: props.disabled,
readOnly: props.readonly,
value: props.checked,
checked: props.checked,
'aria-label': props['aria-label'],
'aria-labelledby': props['aria-labelledby']
}, ptm('input'));
var boxProps = mergeProps({
className: classNames(props.className, cx('box', {
hasIcon: hasIcon,
hasLabel: hasLabel
}))
}, ptm('box'));
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", rootProps, /*#__PURE__*/React.createElement("input", inputProps), /*#__PURE__*/React.createElement("div", boxProps, iconElement, /*#__PURE__*/React.createElement("span", labelProps, label), /*#__PURE__*/React.createElement(Ripple, null))), hasTooltip && /*#__PURE__*/React.createElement(Tooltip, _extends({
target: elementRef,
content: props.tooltip,
pt: ptm('tooltip')
}, props.tooltipOptions)));
}));
ToggleButton.displayName = 'ToggleButton';
export { ToggleButton };
+1
View File
@@ -0,0 +1 @@
import*as e from"react";import{PrimeReactContext as t}from"primereact/api";import{ComponentBase as n,useHandleStyle as o}from"primereact/componentbase";import{useMergeProps as r,useMountEffect as l}from"primereact/hooks";import{Ripple as a}from"primereact/ripple";import{Tooltip as i}from"primereact/tooltip";import{classNames as c,DomHandler as u,ObjectUtils as p,IconUtils as s}from"primereact/utils";function f(){return f=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},f.apply(null,arguments)}function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}function m(e,t){if("object"!=b(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,t||"default");if("object"!=b(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function d(e){var t=m(e,"string");return"symbol"==b(t)?t:t+""}function g(e,t,n){return(t=d(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var y=n.extend({defaultProps:{__TYPE:"ToggleButton",id:null,onIcon:null,offIcon:null,onLabel:"Yes",offLabel:"No",iconPos:"left",invalid:!1,style:null,className:null,checked:!1,tabIndex:0,tooltip:null,tooltipOptions:null,onChange:null,onFocus:null,onBlur:null,children:void 0},css:{classes:{root:function(e){var t=e.props;return c("p-togglebutton p-component",{"p-disabled":t.disabled,"p-highlight":t.checked,"p-invalid":t.invalid})},input:"p-togglebutton-input",box:function(e){return c("p-button p-component",{"p-button-icon-only":e.hasIcon&&!e.hasLabel})},icon:function(e){var t=e.props,n=e.label;return c("p-button-icon",{"p-button-icon-left":"left"===t.iconPos&&n,"p-button-icon-right":"right"===t.iconPos&&n})},label:"p-button-label"}}});function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach((function(t){g(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var O=e.memo(e.forwardRef((function(n,b){var m=r(),d=e.useContext(t),g=y.getProps(n,d),v=e.useRef(null),O=y.setMetaData({props:g}),P=O.ptm,j=O.cx;o(y.css.styles,O.isUnstyled,{name:"togglebutton"});var E=g.onLabel&&g.onLabel.length>0&&g.offLabel&&g.offLabel.length>0,I=g.onIcon&&g.offIcon,k=E?g.checked?g.onLabel:g.offLabel:" ",w=g.checked?g.onIcon:g.offIcon,N=function(e){g.disabled||!g.onChange||g.readonly||g.onChange({originalEvent:e,value:!g.checked,stopPropagation:function(){e.stopPropagation()},preventDefault:function(){e.preventDefault()},target:{name:g.name,id:g.id,value:!g.checked}})};e.useImperativeHandle(b,(function(){return{props:g,focus:function(){return u.focusFirstElement(v.current)},getElement:function(){return v.current}}})),l((function(){g.autoFocus&&u.focusFirstElement(v.current)}));var x=p.isNotEmpty(g.tooltip),L=g.disabled?-1:g.tabIndex,S=function(){if(I){var e=m({className:j("icon",{label:k})},P("icon"));return s.getJSXIcon(w,h({},e),{props:g})}return null}(),D=m({className:j("label")},P("label")),F=m({ref:v,id:g.id,className:c(g.className,j("root",{hasIcon:I,hasLabel:E})),"data-p-highlight":g.checked,"data-p-disabled":g.disabled},y.getOtherProps(g),P("root")),C=m({id:g.inputId,className:j("input"),style:g.style,onChange:N,onFocus:function(e){var t;null==g||null===(t=g.onFocus)||void 0===t||t.call(g,e)},onBlur:function(e){var t;null==g||null===(t=g.onBlur)||void 0===t||t.call(g,e)},onKeyDown:function(e){32===e.keyCode&&(N(e),e.preventDefault())},tabIndex:L,type:"checkbox","aria-invalid":g.invalid,disabled:g.disabled,readOnly:g.readonly,value:g.checked,checked:g.checked,"aria-label":g["aria-label"],"aria-labelledby":g["aria-labelledby"]},P("input")),B=m({className:c(g.className,j("box",{hasIcon:I,hasLabel:E}))},P("box"));return e.createElement(e.Fragment,null,e.createElement("div",F,e.createElement("input",C),e.createElement("div",B,S,e.createElement("span",D,k),e.createElement(a,null))),x&&e.createElement(i,f({target:v,content:g.tooltip,pt:P("tooltip")},g.tooltipOptions)))})));O.displayName="ToggleButton";export{O as ToggleButton};
+259
View File
@@ -0,0 +1,259 @@
this.primereact = this.primereact || {};
this.primereact.togglebutton = (function (exports, React, api, componentbase, hooks, ripple, tooltip, utils) {
'use strict';
function _interopNamespace(e) {
if (e && e.__esModule) return e;
var n = Object.create(null);
if (e) {
Object.keys(e).forEach(function (k) {
if (k !== 'default') {
var d = Object.getOwnPropertyDescriptor(e, k);
Object.defineProperty(n, k, d.get ? d : {
enumerable: true,
get: function () { return e[k]; }
});
}
});
}
n["default"] = e;
return Object.freeze(n);
}
var React__namespace = /*#__PURE__*/_interopNamespace(React);
function _extends() {
return _extends = Object.assign ? Object.assign.bind() : function (n) {
for (var e = 1; e < arguments.length; e++) {
var t = arguments[e];
for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
}
return n;
}, _extends.apply(null, arguments);
}
function _typeof(o) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
return typeof o;
} : function (o) {
return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
}, _typeof(o);
}
function toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
function toPropertyKey(t) {
var i = toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : i + "";
}
function _defineProperty(e, r, t) {
return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}
var classes = {
root: function root(_ref) {
var props = _ref.props;
return utils.classNames('p-togglebutton p-component', {
'p-disabled': props.disabled,
'p-highlight': props.checked,
'p-invalid': props.invalid
});
},
input: 'p-togglebutton-input',
box: function box(_ref2) {
var hasIcon = _ref2.hasIcon,
hasLabel = _ref2.hasLabel;
return utils.classNames('p-button p-component', {
'p-button-icon-only': hasIcon && !hasLabel
});
},
icon: function icon(_ref3) {
var props = _ref3.props,
label = _ref3.label;
return utils.classNames('p-button-icon', {
'p-button-icon-left': props.iconPos === 'left' && label,
'p-button-icon-right': props.iconPos === 'right' && label
});
},
label: 'p-button-label'
};
var ToggleButtonBase = componentbase.ComponentBase.extend({
defaultProps: {
__TYPE: 'ToggleButton',
id: null,
onIcon: null,
offIcon: null,
onLabel: 'Yes',
offLabel: 'No',
iconPos: 'left',
invalid: false,
style: null,
className: null,
checked: false,
tabIndex: 0,
tooltip: null,
tooltipOptions: null,
onChange: null,
onFocus: null,
onBlur: null,
children: undefined
},
css: {
classes: classes
}
});
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var ToggleButton = /*#__PURE__*/React__namespace.memo(/*#__PURE__*/React__namespace.forwardRef(function (inProps, ref) {
var mergeProps = hooks.useMergeProps();
var context = React__namespace.useContext(api.PrimeReactContext);
var props = ToggleButtonBase.getProps(inProps, context);
var elementRef = React__namespace.useRef(null);
var _ToggleButtonBase$set = ToggleButtonBase.setMetaData({
props: props
}),
ptm = _ToggleButtonBase$set.ptm,
cx = _ToggleButtonBase$set.cx,
isUnstyled = _ToggleButtonBase$set.isUnstyled;
componentbase.useHandleStyle(ToggleButtonBase.css.styles, isUnstyled, {
name: 'togglebutton'
});
var hasLabel = props.onLabel && props.onLabel.length > 0 && props.offLabel && props.offLabel.length > 0;
var hasIcon = props.onIcon && props.offIcon;
var label = hasLabel ? props.checked ? props.onLabel : props.offLabel : "\xA0";
var icon = props.checked ? props.onIcon : props.offIcon;
var toggle = function toggle(e) {
if (!props.disabled && props.onChange && !props.readonly) {
props.onChange({
originalEvent: e,
value: !props.checked,
stopPropagation: function stopPropagation() {
e.stopPropagation();
},
preventDefault: function preventDefault() {
e.preventDefault();
},
target: {
name: props.name,
id: props.id,
value: !props.checked
}
});
}
};
var onKeyDown = function onKeyDown(event) {
if (event.keyCode === 32) {
toggle(event);
event.preventDefault();
}
};
var onFocus = function onFocus(event) {
var _props$onFocus;
props === null || props === void 0 || (_props$onFocus = props.onFocus) === null || _props$onFocus === void 0 || _props$onFocus.call(props, event);
};
var onBlur = function onBlur(event) {
var _props$onBlur;
props === null || props === void 0 || (_props$onBlur = props.onBlur) === null || _props$onBlur === void 0 || _props$onBlur.call(props, event);
};
var createIcon = function createIcon() {
if (hasIcon) {
var iconProps = mergeProps({
className: cx('icon', {
label: label
})
}, ptm('icon'));
return utils.IconUtils.getJSXIcon(icon, _objectSpread({}, iconProps), {
props: props
});
}
return null;
};
React__namespace.useImperativeHandle(ref, function () {
return {
props: props,
focus: function focus() {
return utils.DomHandler.focusFirstElement(elementRef.current);
},
getElement: function getElement() {
return elementRef.current;
}
};
});
hooks.useMountEffect(function () {
if (props.autoFocus) {
utils.DomHandler.focusFirstElement(elementRef.current);
}
});
var hasTooltip = utils.ObjectUtils.isNotEmpty(props.tooltip);
var tabIndex = props.disabled ? -1 : props.tabIndex;
var iconElement = createIcon();
var labelProps = mergeProps({
className: cx('label')
}, ptm('label'));
var rootProps = mergeProps({
ref: elementRef,
id: props.id,
className: utils.classNames(props.className, cx('root', {
hasIcon: hasIcon,
hasLabel: hasLabel
})),
'data-p-highlight': props.checked,
'data-p-disabled': props.disabled
}, ToggleButtonBase.getOtherProps(props), ptm('root'));
var inputProps = mergeProps({
id: props.inputId,
className: cx('input'),
style: props.style,
onChange: toggle,
onFocus: onFocus,
onBlur: onBlur,
onKeyDown: onKeyDown,
tabIndex: tabIndex,
type: 'checkbox',
'aria-invalid': props.invalid,
disabled: props.disabled,
readOnly: props.readonly,
value: props.checked,
checked: props.checked,
'aria-label': props['aria-label'],
'aria-labelledby': props['aria-labelledby']
}, ptm('input'));
var boxProps = mergeProps({
className: utils.classNames(props.className, cx('box', {
hasIcon: hasIcon,
hasLabel: hasLabel
}))
}, ptm('box'));
return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement("div", rootProps, /*#__PURE__*/React__namespace.createElement("input", inputProps), /*#__PURE__*/React__namespace.createElement("div", boxProps, iconElement, /*#__PURE__*/React__namespace.createElement("span", labelProps, label), /*#__PURE__*/React__namespace.createElement(ripple.Ripple, null))), hasTooltip && /*#__PURE__*/React__namespace.createElement(tooltip.Tooltip, _extends({
target: elementRef,
content: props.tooltip,
pt: ptm('tooltip')
}, props.tooltipOptions)));
}));
ToggleButton.displayName = 'ToggleButton';
exports.ToggleButton = ToggleButton;
Object.defineProperty(exports, '__esModule', { value: true });
return exports;
})({}, React, primereact.api, primereact.componentbase, primereact.hooks, primereact.ripple, primereact.tooltip, primereact.utils);
File diff suppressed because one or more lines are too long